`
ykdsg
  • 浏览: 15979 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论
文章列表
修改 IntellJ/bin/idea.exe.vmoptions (记得备份哦亲)修改成 -Xms512m -Xmx512m -Xmn164m -XX:MaxPermSize=250m -XX:ReservedCodeCacheSize=64m -Xverify:none -Xnoclassgc -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=85 -ea -Dsun.awt.keepWorkingSetOnMinimize=true -D ...
JDK5之前多线程的锁都是使用synchronized ,JDK 5中的锁是接口java.util.concurrent.locks.Lock。另外java.util.concurrent.locks.ReadWriteLock提供了一对可供读写并发的锁。ReentrantLock是java.util.concurrent.locks中的一个可重入锁类。在高竞争条件下有更好的性能,且可以中断。深入剖析ReentrantLock的源码有助于我们了解线程调度,锁实现,中断,信号触发等底层机制,实现更好的并发程序。 先来看ReentrantLock最常用的代码lock public void ...
一,相关文件下载 1.java,eclipse 这些必备的就不说了。 2.从 http://tomcat.apache.org/download-60.cgi下载Source Code Distributions。因为是在windows环境,所以下的是zip包。 二,解压src包,可以看到已经存在eclipse.classpath,eclipse.project 这两个文件,经常用eclipse的人应该就知道这个目录已经是eclipse的工程目录了,只要使用eclipse 的import就可以导入工程,不过郁闷的是import时提示这不是eclipse的工程,对比机子上其他eclips ...
本文根据http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html来翻译,纯粹为了自己学习做记录,有生硬不通的地方还请海涵,也欢迎各位朋友指正。 在多线程环境下实现延迟加载时 Double-Checked Locking是通常使用的而且效率比较高的方法。不幸的是,如果没有其他同步机制的话,他也许不能在java平台可靠的运行。当使用其他语言实现时,比如c++,这取决于处理器的内存模型,编译器引起的reordering 和编译器与synchronization 库之间的相互作用。因为这些不是针对特定的语言,比如c ...
今天在看《分布式java应用》这本书的时候看到作者提到HashMap在多线程并发的环境下有可能出现死循环,导致cpu100%的现象,看了下源码结合网上的分析说明下这种可能性。可能出现问题的地方是在扩容的时候 void resize(int newCapacity) { Entry[] oldTable = table; int oldCapacity = oldTable.length; if (oldCapacity == MAXIMUM_CAPACITY) { threshold = Integer.MAX_VAL ...
本文参考:http://www.javaeye.com/topic/344876及后续评论。 接上文,CurrentHashMap的containsValue 方法在第一层for循环的时候读取了count,但是并没用到这个变量, int c = segments[i].count;这是因为segment[i].count是对volatile变量的访问,接下来segm ...
很早就想研究ConcurrentHashMap ,不过一直拖拉,我也是个很容易被新奇好玩的技术吸引的人,这个呢有好也有坏。废话不多说上干货。 ConcurrentHashMap 最重要的就是引入了Segment 的概念,他在自己内部定义了这个Class来管理数据, ...
逃逸分析英文作Escape Analysis。在计算机语言编译器优化原理中,逃逸分析是指分析指针动态范围的方法,它同编译器优化原理的指针分析和外形分析相关联。 当变量(或者对象)在方法中分配后,其指针有可能被返回或者 ...
memcache是一个分布式的缓存系统,但是本身没有提供集群功能,在大型应用的情况下容易成为瓶颈。但是客户端这个时候可以自由扩展,分两阶段实现。第一阶段:key要先根据一定的算法映射到一台memcache服务器。第二阶段从服务器中取出缓存的值。但是有一个问题,比如其中一台服务器挂了,或者需要增加一台服务的时候,这个时候第一阶段的算法就很重要了,怎样使得原来的数据尽可能的继续有效,减少扩展节点或缩减节点带来的冲击。下面列出想到一些解决方法: 一:hash一致性算法: 优点: 当一个节点失效的时候,其他节点的数据不会受到破坏,这个节点的数据会被分流到另外一个节点。当增加一个节点时,只会 ...
---使用oracle用户,进入sqlplus 删除用户再创建一个用户并赋权 --权限中要有synonym 否则imp dmp文件的时候,会出错 su - oracle sqlplus / as sysdba drop user base cascade;create user base identified by zdsoft default tablespace tbs_base;grant connect,resource,create table,create view,execute any procedure,create any synonym to base; -- ...
---使用oracle用户,进入sqlplus 删除用户再创建一个用户并赋权 --权限中要有synonym 否则imp dmp文件的时候,会出错 su - oracle sqlplus / as sysdba drop user base cascade;create user base identified by zdsoft default tablespace tbs_base;grant connect,resource,create table,create view,execute any procedure,create any synonym to base; -- ...
最近在研究异步的消息机制,使用的是rabbit mq这个消息框架,使用Erlang开发,提供了java的jar包。 AMQP 里主要要说两个组件:Exchange 和 Queue (在 AMQP 1.0 里还会有变动),这两者都在 Server 端,又称作 Broker ,这部分是 RabbitMQ 实 ...
最近在研究异步的消息机制,使用的是rabbit mq这个消息框架,使用Erlang开发,提供了java的jar包。 AMQP 里主要要说两个组件:Exchange 和 Queue (在 AMQP 1.0 里还会有变动),这两者都在 Server 端,又称作 Broker ,这部分是 RabbitMQ 实 ...
网上找了很多方法,发现很多方法都有问题,下面第一种配置也可以上网,但是主机ping不通虚拟机,虚拟机可以ping通主机,而且会占用192.168.0.1的ip,如果公司中刚好这个ip是邮件服务器或者其他服务器就有问题了。第二种方法较好,简单而且可以双向ping通 第一种方法: 1.首先看下VM的NAT有没开启,在“编辑”菜单中的“编辑虚拟网络”,选中NAT 选项页,设置主机网卡“VMnet8”然后启用。 2.设置VMware 网络连接方式为NAT 3.在网络连接中将VMnet8配置为:192.168.0.1。子网255.255.255.0 4.将本地连接设置为共享上网,这个时候会遇 ...
一直很鄙视叫嚣“软件蓝领”和“程序员吃的是青春饭”的一些人,这些人肯定没经历过维护糟糕代码的经历。很多人鼓吹重要的是设计啦,架构啦,于是乎出了好多的架构师,软件设计师,居然还有软件设计师认证考试。于是 ...
Global site tag (gtag.js) - Google Analytics