自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JAVA程序猿

此博客主要是自己的学习总结,如有问题,请谅解

  • 博客(10)
  • 收藏
  • 关注

原创 Synchronized和Lock的学习总结(一)

java锁的实现机制有两个Synchronized和Lock。 Synchronized是java的关键字,是java的内置特性,由JVM来实现。 Lock是java的类,是由纯java代码实现的,和JVM无关。 对二者比较可以从不同的角度: 底层实现:Synchronized和Lock都是基于Lock-free队列,JVM实现更加精细,用了两个队列(ContentionList和Entry

2016-10-30 22:47:18 564

原创 锁优化学习总结(一)

锁优化主要分为两个层面:代码层、JVM层。 代码层:减少锁持有时间(锁粗化)、减小锁粒度(ConcurrentHashMap)、锁分离(ReadWriteLock读写分离)。 JVM层:锁消除(Vector等安全容器,运行时不会出现资源竞争,将锁消除)、偏向锁、轻量级锁、自旋锁、重量级锁。 偏向锁、轻量级锁并不是取代重量级锁,而是使用CAS原语减少线程进入互斥的概率。 偏向锁:是为了避免某线

2016-10-23 14:27:43 1191

原创 拥塞控制机制

网络上通信的双方,当发送方发送的数据量过大,接收方无法及时全部的处理,造成网络拥塞。 拥塞控制的方法有,慢启动,拥塞避免,快重传,快恢复。 首先要明确两个概念,拥塞窗口,发送方发送数据的上限。慢启动阈值,慢启动阶段到拥塞避免阶段的标志量。 慢启动:tcp连接传送数据时,默认拥塞窗口一个最大报文分段大小mss,慢启动阈值为一个较大的值,可以为接收窗口的值 每次发送方收到接收方的一个ack之后,

2016-10-20 20:12:42 1430

原创 三次握手和四次挥手的流程

第一次握手:client设置syn=1,随机产生一个序列号seq=x,将数据包发送到server。client进入syn_send状态, 等待server确认。 第二次握手:server查看client发来的数据包syn=1,得知是client发来的连接请求。server设置syn=1 ACK=1 ack = x+1 seq = y,并将数据包发送到客户端。server进入syn_rcvd

2016-10-20 16:01:13 1120

原创 最小生成树算法:prim和kruskal

prim算法思想:原顶点集V,额外的顶点集合U默认空。最小生成树边集为空。 从V中选一个起始节点加入U中,然后找U中顶点到V-U顶点之间最小的边,如果加入这个边 不会在子图中产生回路。则将该边在V-U中的点加入到U中。并将该边从原来的无相连通图中 剔除,转而加入到最小生成树的边集。重复上述步骤。直到U等于原顶点集V。 kruskal算法思想:假设无向连通图的最小生成树的顶点集为V数量为n,边

2016-10-20 10:15:18 535

原创 Spring的加载过程

ClassPathXmlApplicationContext实现beanFactory接口,是一个具体的实例化工厂。服务器启动时,解析xml配置文件 将对应文件中每个bean的id作为key,属性封装到beandefinition作为value,封装到一个ConCurrentHashMap容器A中。 同时,还有一个ConCurrentHashMap容器B存储bean的实例化对象,默认是空。当有一

2016-10-10 14:54:16 6667

原创 关于foreach、Iterable、Iterator的一点理解

Iterator是一个迭代器接口,Iterable是一个与迭代器相关联的接口,接口里面定义了一个抽象方法iterator()。使用这个接口 的iterator方法可以返回一个迭代器实例。实现了Iterable的接口,可以使用foreach()进行遍历。在编译器会对foreach进行 优化,转换成迭代器的hasNext()和next()的调用。之所以,设计Iterable这个接口,而不是直接实

2016-10-09 10:08:13 1937

原创 插入、选择、冒泡排序算法学习总结(一)

插入排序:默认数组第一个元素为有序,依次将后面的元素与其进行比较,先移动腾位置,再插入进去for(int i=1;i<a.length;i++){ int temp = a[i]; int j; for(j=i-1;j>=0&&temp<a[j];j--){ a[j+1] = a[j]; } a[j+1] = temp; }选择排序:每次选择最

2016-10-05 19:59:12 337

原创 对ThreadLocal的一点理解

ThreadLocal是一个工具类,叫做线程本地变量。主要作用协助线程同步,并不能解决资源彻底共享问题,它需要一定应用场 景。 线程同步的解决方案包括:互斥同步,使用synchronized原语层面上对共享资源加锁,使用ReenTrantLock的java工具类加 锁。 非阻塞同步,非阻塞同步算法+操作系统原子操作,典型代表java.util.concurrent.atomi

2016-10-05 13:47:54 573

原创 ORM相关框架工作原理学习总结(一)

引子:面向对象的开发思想是操作对象,对于关系型数据库数据的操作,需要编写繁琐的sql语句。这时有人会想:是否可以像操 作对象一样操作数据库库数据呢???ORM框架就这样诞生了 ORM:对象关系映射,题主接触过的是Hibernate和Mybatis这两种。主要思想:将数据库表和对象进行映射,依靠框架的API 通过对象的增删改查,达到映射数据库中表数据的增删改查。方便开发。 工作过程:1、根据数

2016-10-03 14:09:03 4893

空空如也

空空如也

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

TA关注的人

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