`
文章列表

同步的本质

    博客分类:
  • JAVA
同步的本质    首先我们得明白操作系统是如何执行程序的。对于进程和线程,操作系统设计者的目的是从概念上简化编程模型,使编程显得更自然,更符合思维习惯。    操作系统设计者为使用进程和线程来编程提供了一个假设条件,即进程和线程各自的执行流是连贯的,没有任何断续执行的现象。但是实际上(以单CPU系统为例),从系统实现的底层看起来,这些进程和线程的执行流是支离破碎的,并且这些破碎的执行流片断被CPU以某种方式(即操作系统的调度程序)组合成一个串行的、混合在一起的执行流,以此推动操作系统不断运行。     问题就在这里,同步问题的根源就在于看起来连贯的执行流实际上是破碎的。破碎的执行流会造成什 ...
var selectStr=""; var ext_Tree = function(){ var Tree = Ext.tree; var tree; var root; return{ init:function(){ tree = new Tree.TreePanel({ el:extTree.treeDiv, useArrows:true, autoScroll:true, ...
  最近在做一个应用时发现竟造成OutOfMemoryException,开始真以为是JAVA VM本来就占用内存过多的原因,但分析原因结果后发现根本不是如此。原因竟然是内存泄露,才意识到原来自己写的代码一直以来都是如此不堪。回想这几年写的多个应用,都是在如此使用这个数据库连接池,可直到现在才意识到问题,真是难以启齿。   也许人生是需要这样子的不断的推翻自己的吧,总之受益匪浅。然后深深觉得要写好应用,绝不能班门弄斧,也不能闭门造车,得虚心学习,天天向上。向各位伟大的精英程序员们致敬!
    最近在写一个多线程的任务队列应用,由于有大量的对数据库的访问和操作,使用了JDCconectionPool的 数据库连接池。发现当运行程序大概两个小时左右总会遇到java.lang.OutofMemory Exception 造成线程的强制终止。使用netbeans的应用分析功能发现,应用的堆使用情况有异常。 如图:   通过Netbeans的Profiler跟踪发现 发现问题是由于对数据库连接池Connection Statement ResultSet的访问未显示关闭。 由于JDCconectionPool 的关闭数据库connection.close()是将该连接放回 ...
下面,我们就可以描述什么是内存泄漏。在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对象。如果对象满足这两个条件,这些对象就可以判定为Java中的内存泄漏,这些对象不会被GC所回收,然而它却占用内存。 在C++中,内存泄漏的范围更大一些。有些对象被分配了内存空间,然后却不可达,由于C++中没有GC,这些内存将永远收不回来。在Java中,这些不可达的对象都由GC负责回收,因此程序员不需要考虑这部分的内存泄露。 通过分析,我们得知,对于C++,程序员需要自己管理边和顶点 ...
 向大家强烈推荐 NetBeans Profiler查找内存泄漏 详见地址 http://www.javapassion.com/handsonlabs/nbprofilermemory/
Java内存分配: 1. 寄存器:我们在程序中无法控制 2. 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 3. 堆:存放用new产生的数据 4. 静态域:存放在对象中用static定义的静态成员 5. 常量池:存 ...
Oracle 10g 完全卸载 软件环境: 1、Windows XP + Oracle 10g 2、Oracle安装路径为:d:\Oracle 实现方法: 1、开始->设置->控制面板->管理工具->服务停止所有Oracle服务; 2、开始->程序->Oracle – OraDb10g_home1>Oracle Installati ...
package com.yous365.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; ...
   我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题: 1、假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的时候 ...
http://hi.baidu.com/rtsbtx/blog/item/6552d0a1d92eef81471064f8.html 创建型模式   1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四 ...
单例模式单例模式是一种常见的设计模式, 单例模式分三种:懒汉式单例、饿汉式单例、内部类单例、登记式单例几种。 单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 懒汉模式不是线程安全的。 饿汉模式是线程安全的。 内部内模式利用Classloader的特 注册表模式是线程安全的同时又提供运行期指定单例。 饿汉式单例类 public class Singleton { private Singleton(){ } p ...
  在利用javascript进行企业的流程系统开发的时候,遇到showModalDialog无法关闭的问题。    Google一下,找开解决办法:    在</head>与<body>中间加入<base target="_self"> showModalDialog传参给弹出窗口,可以让弹出窗口控制父窗口节点。    成功解决!                 2008.8.4
MyJxta2.5研究心得 (2009-07-24) MyJXTA 的核心对象解析(数据结构)。 JxtaNode 为应用程序显示基本节点。GropuNode为封装了Group的JxtaNode子节点。Group封装了Jxta组PeerGroup。PeerNode为封装了Peer的JxtaNode子节点。Peer封装了Jxta对等点广告。 一 ...
安装SQLServer,打上SP3包,然后使用SQLJDBC1.1做JDBC驱动。    String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";   //加载JDBC驱动    String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=module";    //连接服务器和数据库test 为连接配置。 测试成功。 2009.8.4
Global site tag (gtag.js) - Google Analytics