- 浏览: 18490 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
johnnyking:
zhaoxjmail 写道楼主,有些看不明白,boolean[ ...
java 之多线程 LOCK实现(一) -
zhaoxjmail:
楼主,有些看不明白,boolean[threadId ] = ...
java 之多线程 LOCK实现(一) -
lxr215:
重庆的软件公司没有成都的多....
准备回重庆了,4年工作经验,不知道在重庆7.5K 是个什么水平 -
webook_java:
对于你们有工作经验高的人还好了
我靠 对工作经验不很丰富的那是 ...
准备回重庆了,4年工作经验,不知道在重庆7.5K 是个什么水平 -
sebatinsky:
dempire 写道说不到3年拿5.5K的哥们去的公司不是有外 ...
准备回重庆了,4年工作经验,不知道在重庆7.5K 是个什么水平
文章列表
java 之多线程 LOCK实现(四)
- 博客分类:
- JAVA 综合
接lock实现(三),由于peterson lock实现只能解决双线程同步互斥,那么N线程互斥 如何做呢?看下文。。。
设计一个Level(N)的N个过滤空间,每个线程到达临界区需要走过所有的Level空间。所有的level 都必须满足以下两个条件:
...
接上节,为了解决一、二两节出现的缺陷,Peterson锁实现出现了,这是一个经典的双线程锁实现,请看代码:
public class PertersonLockImpl implements Lock {
private volatile boolean[] b = new boolean[2];
private volatile int flag = 0;
public void init() {
b[0] = false;
b[1] = false;
}
public void lock( ...
接上一节,回顾一下,锁的实现有一个缺陷:两个线程交替执行会死锁。现在我们来做另外一个双线程锁实现来解决这个缺陷:
public class ThreadLockImpl2 {
private volatile int flag = 0;
public void lock() {
int threadId = ThreadUtil.getCurrentId();
flag = threadId;
/**
* 如果没有另外一个线程重置flag,则等待。
**/
...
最后发现原因是SQL语句长度大于1M,而我机器上的mysql是默认设置,也就是说mysql通讯的数据包大小设置是1M,这就造成sql语句执行失败。于是把mysql的配置文件(my.ini)中的max_allowed_packet = 6M变大,问题就解决了。
一,前言
众所周知,一个可靠的多线程程序必须要能够坐到无死锁,无饥饿。
什么叫做无饥饿:如果一个线程需要获得一个Lock,那么这个操作在一个有限时间内最终会获得成功(不论时间长短)。
那么我们现在就来实现只有两个线程的Lock。
二,Lock接口
public interface Lock{
public void lock();
public void unlock();
}
三,只有两个线程的Lock实现
public class TwoThreadLockImpl implements Lock {
pr ...
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8765 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
当后台命令使用管道符,并采用nohup命令时,必须对管道符后的每个命令分别使用nohup命令,如
nohup ls -R|nohup grep dt>/tmp/lsdt.out&
如果没有这样正确使用nohup命令时,当用户推出系统时,没有带hohup命令的进程将会被迫结束,管道符也不起作用。
pctfree:在块上保留多少空间用以以后数据的更新。如果自由空间的百分比高于pctfree的设置,那么这个块就是“自由块”。默认值为10%。
pctused:如果在块上插入数据,然后又经过删除数据,这个时候如果块数据占有块空间的百分比低于pctused,那么这个块就是“自由块”。
这两个参数的使用 如果创建表的时候指定pctfree=20%,oracle会在这个表的
IP协议号大全(网络协议号) PROTOCOL NUMBERS(last updated 08 September 2005)In the Internet Protocol version 4 (IPv4) [RFC791] there is a field,called "Protocol", to identify the next level protocol. This is an 8bit field. In Internet Protocol version 6 (IPv6) [RFC1883] this fieldis called the ...
pctfree:在块上保留多少空间用以以后数据的更新。如果自由空间的百分比高于pctfree的设置,那么这个块就是“自由块”。默认值为10%。
pctused:如果在块上插入数据,然后又经过删除数据,这个时候如果块数据占有块空间的百分比低于pctused,那么这个块就是“自由块”。
这两个参数的使用 如果创建表的时候指定pctfree=20%,oracle会在这个表的
freelists:存放着可以使用的块。在插入数据的时候,oracle首先去freelists中查看是否有可以使用的块,如果没有,那么提高 高水位线HWM(不得已而为之)。如果有多个session同时对一张表进行插入,每个连接都会查看freelists,所以freelists为1的时候有多个用户需要进行插入或者删除,这个时候就会遇到性能瓶颈,用statspack进行查看的时候就会出现buffer busy waits比较大的问题,解决办法是把freelist调大,以解决等待空闲块问题。
alter table t storage(freelists 10)
另外一个办法:自动管理表 ...
如果国家字符集为单字节字符,那么varchar2(20)默认表示能存储20个字节的字符(即默认为varchar2(20 byte)),
varchar2(20 char)表示能存储20个字符。
如果国家字符集为UTF-8类似的多字节字符,那么varchar2(20)存储不了20个字符,只有varchar2(20 char)才能存储20个字符。
。还可以使用会话参数或系统参数NLS_LENGTH_SEMANTICS 来修改默认行为,即把默认设置BYTE 改为
CHAR。
存储在数据库中时,varchar2类型最大只能存储4000个字节,但是在pl/sql变量中,varchar2能临时存放32KB ...
准备回重庆了,4年工作经验,不知道在重庆7.5K 是个什么水平,在重庆的童鞋出来吼吼。
对象值域 equals 比较 写法
- 博客分类:
- JAVA 综合
field == null ? o.field == null : field.equals(o.field);
如果field与o.field通常是相同的对象引用,那么更高的效率写法:
field == o.field || (field != null && field.equals(o.field))
1.短路提高效率。
2.直接判断对象引用 == 提高效率
最先比较的域应该是最有可能不一致的域。