自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

转载 Hashmap实现原理

0.参考文献:hash算法 (hashmap 实现原理)Java实现的散列表1.HashMap的数据结构  数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法——

2013-04-22 14:26:58 593

原创 http浏览器解析地址过程

1、浏览器从url中解析出服务器域名  2、将域名解析转换为ip地址 3、解析端口号 4、建立一条与web服务器的tcp连接 5、想服务器发送请求报文 6、服务器发送一条http响应报文 7、关闭连接、显示文档

2013-04-21 12:23:35 1040

原创 mysql执行查询的过程

1、客户端将查询发送给mysql服务器2、服务器检查查询缓存。如果找到了,就从缓存中饭后结果,否则进行下一步。3、服务器解析,预处理和优化查询,生成执行计划4、执行引擎调用存储引擎API执行查询5、服务器将结果返回客户端。

2013-04-21 11:43:58 576

原创 分解连接

1、分解连接   分解连接的好处,  1、可以提高缓存的效率。   2、对于MyIsam表来说,每个表的一个查询可以更有效利用表锁。因为查询会锁住单个表较短的时间。   3、在应用程序端进行连接,可以把不同的表放在不同的库中。   4 、可以减少多余行的访问。在应用程序进行连接意味着对每行数据只会访问一次,而连接从本质上说是非正则化的,它会反复地访问同一行数据。基于同样的原因,

2013-04-21 11:38:45 658

原创 mysql存储引擎

myisam存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件。分别是:存放表结构信息的.frm文件,表数据文件.MYD和索引数据.MYI.支持三种索引类型:1、B-Tree,所有的索引节点都按照balance tree的数据结构来存储,所有的索引数据节点都在叶节点。2、R-Tree, 主要设计用于存储空间和多维数据的字段做索引,所以目前的mysql版本来说,也仅支

2013-04-17 14:06:20 439

原创 join的实现原理与优化思路

join实现原理 mysql只有一种join算法,就是大名鼎鼎的Nested Loop JoinNested Loop Join实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件下一个表中查询数据,然后合并结果。如果还有第三个参与Join,则在通过之前连个表的join结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往复。

2013-04-16 16:02:39 856

原创 mysql数据类型

更小通常更好一般来说,要试着使用能正确地存储和表示数据的最小类型。更小的数据类型通常更快,占用磁盘空间、内存、CPU缓存,需要的CPU周期更少。     但是要确保不会低估需要保存的值,在架构中的多个地方增加数据类型的范围是一件极其费时费立的工作,如果不能去顶需要的类型,就选择你认为不会超出范围的最小类型。   (如果系统不是非常繁忙或不会保存太多的数据,在或者还处于设计的早期,就可以

2013-04-14 15:08:08 763

原创 AtomicInteger

AtomicI nteger是一个持原子操作的Integer类,在没有AtomicInteger前,要实现一个按顺序获取的Id,需要加锁。incrementAndGet()此方法为先获取当前的value属性值,然后将value加1,赋值个一个局部的next变量,很明显,这两步都是线程非安全的,关键的方法是如下这行代码:if(compareAndSet(current, next)){

2013-04-08 14:18:05 697

原创 寻找性能瓶颈

通常性能平均的表象是资源消耗过多,外部处理系统的性能不足,或者资源消耗不多,但程序的响应速度却仍达不到要求。    资源主要消耗在cpu,文件io,网络io以及内存方面,机器的资源是有限的,当某资源消耗过多时,通常会造成系统响应速度慢。外部处理的性能不够主要是所调用的其他系统提供的功能或数据库操作的响应速度不够,所调用的其他系统性能不足,多数情况下也是资源消耗过多,但程序的性能不足造成的;

2013-04-07 15:49:25 650

原创 序列化/反序列化

对于java的网络通信而言,将对象转化为流然后进行网络传输是基本也最常用的方法,而要把对象转化为流及将流还原为对象,最常用的方法就是JAVA自带的序列化。采用java序列化的情况下,类必须实现Serializable接口或Extrnalizable接口。可已通过是实现Externalizable接口、编写私有的writeObject或writeReplace方法。给属性增加transient或

2013-04-07 14:36:56 530

原创 concurrenthashmap

ConcurrentHashMap是线程安全的HashMap的实现和HashMap一样,同样有initialCapacity和loadFactor属性,多了一个concurrentyLevel属性,在调用构造器的情况下,这三个属性分别为16,0.75,16。设置了以上三个属性值后,基于以下方式计算size int sshhift = 0;int ssize = 1;while(

2013-04-06 11:44:06 979

原创 CopyOnWriteArraySet

CopyOnWriteArraySet基于CopyOnWriteArrayList实现,其唯一的不同是在add时调用的是CopyOnWriteArrayList的addIfAbsent方法.adIfAbsent方法同样采用锁保护,并创建一个新的大小+1的Object数组。遍历当前Object数组,如Object数组中已有了当前元素,则直接返回,如果没有则放入Object数组的尾部,并返回。从以

2013-04-05 19:09:34 5568

原创 CopyOnWriteArrayList

随着元素的数量和线程数量增加,CopyOnWriteArrayList在增加元素和删除元素时的性能下降明显,并且性能会比ArrayList低。但在查找元素这点上随着线程的增长,性能较ArrayList会好很多。例如在元素为100、线程数量为50时,CopyOnWriteArrayList查找元素的性能大概为ArrayList的15倍,当线程增长100时,更是达到了31倍之多。在读多写少的并发场

2013-04-05 18:51:44 595

原创 双重检查加锁 之单例模式并发

public Class Singleton{  private volatile static Singleton instance;    private Singleton(){};  public static Singleton getInstance(){   if(instance==null){          synchronized (Singleton.class){

2013-04-02 15:04:35 523

原创 maven项目不显示Maven Dependencies问题

1、选择项目-------maven--------Disable Dependency Management2、选择项目----------maven---------Enable Dependency Management项目就可以显示maven Dependencies了

2013-04-01 11:00:16 2866

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除