自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

写博客只为学习

Just for study

  • 博客(45)
  • 资源 (4)
  • 收藏
  • 关注

原创 java AbstractQueuedSynchronizer介绍以及原理分析

[size=medium][color=red][b]简介[/b][/color][/size][b]提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架。[/b]该同步器(以下简称同步器)[color=blue][b]利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础。[/b][/color]使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理...

2016-11-18 14:27:41 123

原创 java AbstractQueuedSynchronizer介绍以及原理分析

2016-11-18 14:27:41 107

原创 java AtomicInteger基于CAS的乐观锁实现

[color=darkred][b]1. 悲观锁与乐观锁[/b][/color] 我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间片与时间片之间[color=red][b],需要进行cpu切换,也就是会发生进程的切换。[/b][/color]切换涉及到清空寄存器,缓存数据。然后重新加载新的thread所需数据。当一个线程被挂...

2016-11-16 11:13:52 177

原创 java AtomicInteger基于CAS的乐观锁实现

2016-11-16 11:13:52 89

原创 java Copy-On-Write容器学习

[color=red][b]Copy-On-Write简称COW[/b][/color],是一种用于程序设计中的优化策略。其基本思路是,[b]从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。[/b]从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是[color=r...

2016-11-16 09:00:58 117

原创 java Copy-On-Write容器学习

2016-11-16 09:00:58 79

原创 java 深入分析Volatile的实现原理

[color=red][b]引言[/b][/color]在多线程并发编程中synchronized和Volatile都扮演着重要的角色,[color=red][b]Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。[/b][/color]可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比syn...

2016-11-16 08:47:43 127

原创 java 深入分析Volatile的实现原理

2016-11-16 08:47:43 75

原创 java transient、static作用总结

2016-11-16 08:42:00 119

原创 java transient(不会序列化)、static关键字的作用

[size=medium][color=red][b]transient[/b][/color][/size][b]java 的transient关键字的作用是需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。[/b][color=red][b]transient使用小结[/b][/color...

2016-11-16 08:20:22 391

原创 java transient(不会序列化)、static关键字的作用

2016-11-16 08:20:22 117

原创 java Guava cache学习笔记

[color=red][b]缓存,在我们日常开发中是必不可少的一种解决性能问题的方法。[/b][/color]简单的说,cache 就是为了提升系统性能而开辟的一块内存空间。  [color=blue][b]缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。[/b][/color]在日常开发的很多场合,由于受限于硬盘IO的性能或者我们自身业务系统的数据处理和获取...

2016-11-15 18:26:44 136

原创 java Guava cache学习笔记

  [color=blue][b]缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。[/b][/color]在日常开发的很多场合,由于受限于硬盘IO的性能或者我们自身业务系统的数据处理和获取可能非常费时,当我们发现我们的系统这个数据请求量很大的时候,频繁的IO和频繁的逻辑处理会导致硬盘和CPU资源的瓶颈出现。 [b]缓存的作用就是将这些来自不易的数据保存在内存中,当有其他线程或者客户端需要查询相同的数据资源时,直接从缓存的内存块中返回数据[/b],这样不但可以提高系统的

2016-11-15 18:26:44 184

原创 java 通过使用wait和notify进行线程之间通信(代码)

[code="java"]public class Test { private final Operate operate = new Operate(); public static void main(String[] args) { new Thread(new Runnable() { @Overri...

2016-11-14 08:56:36 83

原创 java 通过使用wait和notify进行线程之间通信(代码)

de public void run() { for (int i = 1; i

2016-11-14 08:56:36 92

原创 java Netty远程编译代码(收藏学习)

[size=medium][color=red][b]客户端[/b][/color][/size][color=red][b]设置消息的长度:[/b][/color]buffer.writeInt(classByte.length);[color=blue][b]写入消息内容:[/b][/color]buffer.writeBytes(classByte);[color=orang...

2016-11-11 09:23:28 88

原创 java Netty远程编译代码(收藏学习)

writeBytes(classByte);[color=orange][b]传输内容:[/b][/color]channel.write(buffer);[code="java"]package hotswap.client;import hotswap.JavacTool;import hotswap.NamedThreadFactory;import java.net.InetSocketAddress;import java.nio.cha

2016-11-11 09:23:28 140

原创 公钥、私钥和SSL详细说明(生动例子)

[color=red][b]一,公钥私钥[/b][/color] [color=blue][b]1,公钥和私钥成对出现 [/b][/color]2,公开的密钥叫公钥,只有自己知道的叫私钥 [b]3,用公钥加密的数据只有对应的私钥可以解密 [/b][b][color=blue]4,用私钥加密的数据只有对应的公钥可以解密 [/color][/b]5,如果可以用公钥解密,则必然是对应...

2016-11-11 08:43:25 468

原创 公钥、私钥和SSL详细说明(生动例子)

据只有对应的私钥可以解密 [/b][b][color=blue]4,用私钥加密的数据只有对应的公钥可以解密 [/color][/b]5,如果可以用公钥解密,则必然是对应的私钥加的密 6,如果可以用私钥解密,则 必然是对应的公钥加的密 假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们,然 后我告诉大家,1是我的公钥。 我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以 他解不开,只有我可以用数字

2016-11-11 08:43:25 234

原创 Netty源码细节之IO线程(EventLoop)

[b]先从一个简单的代码示例开始 [/b]服务端启动代码示例 [code="java"] // Configure the server. EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup();...

2016-11-10 19:04:47 129

原创 Netty源码细节之IO线程(EventLoop)

roup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .option(ChannelOption.SO_BACKLOG, 100)

2016-11-10 19:04:47 90

原创 java Hashmap原理分析

[size=medium][color=red][b]1. HashMap的数据结构[/b][/color][/size]数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。[b]数组[/b]数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;[b]链表[/b]链表存储区...

2016-11-10 15:03:47 81

原创 java Hashmap原理分析

存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;[b]链表[/b]链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。[color=red][b]哈希表[/b][/color]那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表。[b]哈希表((Hash table)既满

2016-11-10 15:03:47 50

原创 Netty Server端代码简单分析(转)

[size=medium][color=red][b]Netty源码简单分析: [/b][/color][/size]Netty整体架构清晰的分为两部分: 1.[b]ChannelFactory[/b]:主要负责生产网络通信相关的Channel和ChannelSink实例,NIO Server端一般使用NioServerSocketChannelFactory,用户也可以定制自己的Chan...

2016-11-10 11:37:54 112

原创 Netty Server端代码简单分析(转)

nnelSink实例,NIO Server端一般使用NioServerSocketChannelFactory,用户也可以定制自己的ChannelFactory。 2.[b]ChannelPipelineFactory[/b]:[b][color=blue]主要用来对传输数据的处理[/color][/b],由于对数据的处理属于业务相关,用户应自己实现ChannelPipelineFactory,然后往ChannelPipelineFactory添加自定义的Handler Netty服务端启动步骤

2016-11-10 11:37:54 111

原创 spring ehcache配置以及使用(afterPropertiesSet)

spring 配置ehcache例子:[url]http://blog.csdn.net/linfanhehe/article/details/7693091[/url] [color=red][b]主要特性[/b][/color] 1. 快速. 2. 简单. [b]3. 多种缓存策略[/b] 4. 缓存数据有两级:内存和磁盘,因此无需担心...

2016-11-08 19:24:16 396

原创 spring ehcache配置以及使用(afterPropertiesSet)

2016-11-08 19:24:16 174

原创 java 各个连接池学习总结(DBCP C3P0 PROXOOL)

要了解Java连接池我们先要了解数据库连接池(connection pool)的原理,[color=red][b]Java连接池正是数据库连接池在Java上的应用。[/b][/color]——我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool)。[b][color=blue]该模式正是为了解决资源的频繁分配﹑释放所造成的问题。[/color][/b]为解决...

2016-11-08 19:00:55 150

原创 java 各个连接池学习总结(DBCP C3P0 PROXOOL)

对于共享资源,有一个很著名的设计模式:资源池(Resource Pool)。[b][color=blue]该模式正是为了解决资源的频繁分配﹑释放所造成的问题。[/color][/b]为解决上述问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。[b]预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需“缓冲池”中取出一个,使用完毕之后再放回去。[/b]我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视

2016-11-08 19:00:55 99

原创 java 过滤器、监听器和拦截器区别

[size=medium][color=red][b]过滤器[/b][/color][/size]Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,[size=medium][color=blue][b]主要的用途是过滤字符编码、做一些业务逻辑判断等。[/b][/color][/size]其工作原理是,只要你在web.xml文件配置好要...

2016-11-08 10:21:59 154

原创 java 过滤器、监听器和拦截器区别

2016-11-08 10:21:59 73

原创 web HTTP TCP UDP协议详情

[size=medium][color=red][b]TCP HTTP UDP[/b][/color][/size]HTTP/TCP/UDP 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。[size=medium][color=red][b]TCP/HTTP/UDP三者的关系[/b][/color][/size]  TCP/I...

2016-11-07 19:44:04 175

原创 web HTTP TCP UDP协议详情

2016-11-07 19:44:04 102

原创 java jvm常见配置汇总(Xmx Xms Xss Xmn)

[size=medium][color=red][b]堆设置[/b][/color][/size]-Xms:初始堆大小[color=blue]-Xmx[/color]:最大堆大小[color=red][b]-Xmn2g: 设置年轻代大小为2G。[/b][/color]整个堆大小=年轻代大小 + 年老代大小 +持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老...

2016-11-07 19:15:51 544

原创 java jvm常见配置汇总(Xmx Xms Xss Xmn)

小=年轻代大小 + 年老代大小 +持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大, Sun官方推荐配置为整个堆的3/8。[color=blue][b]-Xss128k: 设置每个线程的栈大小。[/b][/color] JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经

2016-11-07 19:15:51 333

原创 Javascript 总结汇总

[code="Javascript"]var timeoutid = window.setTimeout(function(){ alert(123);},1000);clearTimeout(timeoutid);window.setInterval(function,times);--JSON对象不可扩展但是可以删除Object.preventExtensi...

2016-11-04 15:06:29 79

原创 Javascript 总结汇总

2016-11-04 15:06:29 49

原创 Activiti 学习总结内容

[size=medium][color=red][b]Activiti总结内容[/b][/color][/size][color=red][b]常用方法汇总[/b][/color]sequenceFlow id='test' sourceRef='' targetRef=''serviceTask id='serviceTaskId' activiti:expression='#{...

2016-11-04 14:50:05 128

原创 Activiti 学习总结内容

iviti:expression='#{beanName.method}'自动调用beanName对应的bean的method方法这个bean还需要在ProcessEngineConfiguration中进行配置--部署一个流程图repositoryService.createDeploy().addClasspathResource(resourceName).deploy();--开启一个流程runtimeService.startProcessInstanceByKey(&

2016-11-04 14:50:05 141

原创 CSS 块对象(独占一行)和内联对象

[size=medium][color=red][b]块对象也称为块级元素,内联元素也称为行内元素[/b][/color][/size]① 块级元素(div,h1-h6,p,ul,dl,dd,form,table)② 行内元素[也叫内联元素](strong,em,span,b,i,a,img,input,iabel)[color=red][b]区别:[/b][/color]① ...

2016-11-03 10:13:52 181

google Guava集合工具类(超实用)

Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁,让你工作更加轻松愉悦。下面我们就开启优雅Java编程学习之旅!

2017-11-30

CyclicBarrier实现多个线程相互等待的案例(实现累加操作)

CyclicBarrier实现多个线程相互等待的案例(实现累加操作)

2017-11-30

Lightbox插件(图片大小调节)

Lightbox图片插件(图片大小调节)很实用,可以轻松实现图片显示功能包括上一张 下一张

2017-11-01

css中文手册

css 中文手册方法方法方法方法方法方法方法方法方法方法方法方法方法方法法反反复复

2011-09-15

空空如也

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

TA关注的人

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