[置顶] java垃圾回收那些事

摘要: 垃圾收集的作用很明显你会回答通过清除不用的对象来释放内存,但是别忘了垃圾收集的另外一个重要作用就是消除堆内存空间的碎片。垃圾收集策略引用计数这是早期策略。非常简单,对象A被引用,则它的计数Acount就加1,当对A的引用失效了,Acount就减1,当Acount=0时,就可以对A进行垃圾回收。对A进行垃圾回收时,A中引用的其他对象的计数都减1,因此A的回收可能会导致连锁反应。优点:简单,快缺点:无法检测循环引用,比如A的子类a引用了A,A又引用了a,因此A和a永远不会被回收。这个缺点是致命的,因此现在这种策略已经不用。跟踪收集器又称为“标记并清除”策略。基本思想是从根对象开始遍历整个对象图,仍 阅读全文
posted @ 2011-11-18 00:10 wenfeng762 阅读(1582) 评论(1) 推荐(1) 编辑

zookeeper

摘要: ZooKeeper是什么?高可用的高性能的分布式系统协调服务。局部不可用是分布式系统的固有特征,ZooKeeper可以很好的地处理这种情况。下面从三个方面来理解ZooKeeper服务:数据模型、操作、实现数据模型可以把zookper看成一个文件系统,文件系统中的所有文件形成一个数状结构,zookeeper维护着这样的树形层次结构,树中的节点称为znode。每个znode有一个与之相关联的ACL(Access Control List)。这种数据模型示意图如下:znode通过路径被引用,而且要采用绝对路径,即必须以/开头。znode存储的数据要<1m。znode类型 短暂znode:回话结 阅读全文
posted @ 2011-11-13 22:25 wenfeng762 阅读(9872) 评论(0) 推荐(2) 编辑

高性能MySql学习笔记——存储引擎

摘要: 最关心的是MyIsam和InnoDB两种。MyIsam:存储文件:数据文件:.MYD索引文件:.MYI特点:表锁,不支持事务,支持全文索引,支持对TEXT和BLOB类型建立索引数据恢复貌似很慢,因为没有logInnoDB:特点:行锁,支持事务,数据恢复块,因为有binlog曾经有人问:数据量很大,不需要事务支持,使用哪种存储引擎好?dba给出的建议是InnoDB。理由没说,我猜数据恢复的难易应该是决定选择的主要原因吧,一旦出事儿,MyIsam要恢复很long的时间,那是不可接受的。使用InnoDB,但开启事务,就不会有事务管理的开销了。最后,如何查看表的存储引擎:mysql> SHOW 阅读全文
posted @ 2011-11-06 15:10 wenfeng762 阅读(590) 评论(0) 推荐(1) 编辑

高性能MySql学习笔记——多版本并发控制算法

摘要: AUTOCOMMITMysql默认自动提交,可以通过如下命令查看和修改:mysql> SHOW VARIABLES LIKE 'AUTOCOMMIT';+---------------+-------+| Variable_name | Value |+---------------+-------+| autocommit | ON |+---------------+-------+1 row in set (0.00 sec)mysql> SET AUTOCOMMIT = 1;隐式锁显式锁InnoDB在开启事务时,获取隐式锁,在事务提交或者回滚时释放锁,Inn 阅读全文
posted @ 2011-11-06 14:56 wenfeng762 阅读(4591) 评论(0) 推荐(0) 编辑

高性能MySql学习笔记——锁、事务、隔离级别

摘要: 为什么需要锁?因为数据库要解决并发控制问题。在同一时刻,可能会有多个客户端对Table1.rown进行操作,比如有的在读取该行数据,其他的尝试去删除它。为了保证数据的一致性,数据库就要对这种并发操作进行控制,因此就有了锁的概念。锁的分类从对数据操作的类型(读\写)分读锁(共享锁):针对同一块数据,多个读操作可以同时进行而不会互相影响。写锁(排他锁):当当前写操作没有完成前,它会阻断其他写锁和读锁。从锁定的数据范围分表锁行锁为了尽可能提高数据库的并发度,每次锁定的数据范围越小越好,理论上每次只锁定当前操作的数据的方案会得到最大的并发度,但是管理锁是很耗资源的事情(涉及获取,检查,释放锁等动作), 阅读全文
posted @ 2011-11-06 12:46 wenfeng762 阅读(9018) 评论(0) 推荐(3) 编辑

CountDownLatch

摘要: 关于java的CountDownLatch。Latch:门闩之意。CountDownLatch经常用来在多线程环境下,主线程协调多个子线程的步调。生活中最相似的场景就是运动员比赛,裁判员(主线程)控制比赛的开始和结束,运动员(子线程)完成自己的比赛,当且仅当所有运动员都完成比赛时,裁判员就可以下令整场比赛结束。下面转载网友针对上述场景的模拟代码,以便更好地理解CountDownLatch的使用。import java.util.concurrent.CountDownLatch; 2 import java.util.concurrent.Executor; 3 import java.uti 阅读全文
posted @ 2011-11-03 20:16 wenfeng762 阅读(367) 评论(0) 推荐(0) 编辑

索引结构

摘要: 索引的数据结构 阅读全文
posted @ 2011-10-30 22:52 wenfeng762 阅读(1417) 评论(0) 推荐(0) 编辑

包复用原则&实践

摘要: 通过实际工作中的例子说明遵守包复用原则的重要性。 阅读全文
posted @ 2011-08-17 17:43 wenfeng762 阅读(657) 评论(0) 推荐(0) 编辑

PMD参数总结

摘要: 经过挑选pmd的规则总结,可以直接作为java项目的开发规范 阅读全文
posted @ 2011-08-14 12:43 wenfeng762 阅读(1537) 评论(0) 推荐(0) 编辑

jvm连接模型

摘要: jvm连接模型:装载,连接,初始化 阅读全文
posted @ 2011-08-14 12:31 wenfeng762 阅读(574) 评论(0) 推荐(0) 编辑