- 博客(16)
- 资源 (5)
- 收藏
- 关注
原创 《Netty学习》(七)EventLoop学习
EventLoop运行任务来处理在连接的生命周期内发生的事件是任何网络框架的基本功能,称为事件循环 - netty中使用EventLoop实现。用于处理Channel的事件,已经池化。一个EventLoop将由一个永远不会改变的Thread驱动,同时任务(runnable或callable)可以直接交给EventLoop按照FIFO的顺序执行实现。产生的所有事件都由EventLoop本生绑定的线
2017-09-10 18:15:57
340
原创 《Netty学习》(六)ChannelHandlerContext学习
ChannelHandlerContext 通道处理器上下文。当ChannelHandler添加到ChannelPipeline时,每一个处理器都会分配一个上下文与之绑定,生死不离。上下文可以自身处理器与其他的处理器进行交互,因为上下文并不会改变处理器本身,所以上下文是安全的。
2017-09-10 17:30:31
700
原创 《Netty学习》(五)ChannelPipeline学习
ChannelPipeline通道管道:一个Channel创建时都会分配一个ChannelPipeline,生死不离。它是一个拥有着ChannelHandler处理器链的容器。在springmvc中的处理器也是链式处理,有兴趣的可以了解责任链模式。
2017-09-10 17:01:27
329
原创 《Netty学习》(四)ChannelHandler学习
r我们知道 Netty使用了异步的事件驱动模型,来触发网络I/O的各种操作。所以对于channel通道的事件处理必须有一定的了解。从字面上看,channelHandler:通道处理器,拥有着对channel不同状态的事件处理。
2017-09-10 16:32:50
346
原创 《Netty学习》(三)Channel学习
什么是channel 它是数据在网络传输过程中的载体,拥有着不同的传输类型,包含我们熟悉的阻塞传输(oio)和异步传输(nio),拥有操作底层网络api的能力。个人理解:如果网络传输像两个岛屿之间的货物传输,那么channel就像那只船。不同的传输类型对应着不同的航行方式。在netty中Channel生命周期 channelUnregistered channel已经被创建,还没...
2017-09-10 15:44:27
626
原创 理解实现zookeeper分布式锁
zookeeper为什么能实现分布式锁 a. zookeeper的数据一致性(paxos) b. zookeeper的临时顺序节点 c. zookeeper的监听watch机制 zookeeper实现原理 1. 所有尝试获取分布式锁的线程,会去zookeeper下一个持久化锁节点下面去创建临时的顺序节点。 2. 线程得到持久化节点的子节点(所有创...
2017-08-23 20:39:17
344
原创 SPI机制的一次具体使用
对spi机制的使用在一次对schemacrawler(一个数据库元数据爬虫框架)的使用中提升了很多。 基础了解:http://blog.youkuaiyun.com/qq_33793432/article/details/73112302具体的使用: 我使用spi机制来调用不同数据库实现的分页方法。通过一个数据库类型来查找对应的实现类。对外的接口或抽象类A 你可以在A中定义实现
2017-08-10 12:59:38
950
原创 《Netty学习》(一)了解netty
1. IO模型 在学习netty前,首先你得了解jdk中的IO模型: IO , NIO , AIOIO 阻塞io ,也就是我们常见的Java.io 包下的各种流等,这里我们不多介绍NIO 非阻塞io , 属于Java.nio包下。它的特点是所有数据都可以用缓冲区(ByteBuffer)处理使用channel通道进行数据的读写使用Selectors选择器可以管理多个通道非阻塞:不会
2017-07-19 17:28:34
288
原创 HashMap源码解析
1.类结构 继承了AbstractMap抽象类。2.数据结构 常用的数据结构:-数组:占用连续的内存空间,通过索引来查询数组数据,故时间复杂度为O(1),但是在非头尾元素的新增、删除操作都会在内存中进行元素的移位(复制,清除),效率低。 -链表:占用非连续内存空间,由一系列节点组成。节点中分为两部分:数据域,下一个节点的地址Next指针。时间复杂度为O(N),需要
2017-06-13 16:01:00
277
原创 SPI 服务提供接口机制
什么是J2EE? 它仅仅是一个标准,只是一个架构,它定义着大量的接口规范。 它又是 一个平台,拥有着不同开发商提供的真实实现。 怎么实现J2EE spi/Service Provider Interface 服务提供接口机制 : 当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接口全命名
2017-06-12 15:32:47
1125
原创 堆内存的GC机制
堆内存的模型:新生代的GC新生代:新生代分为Eden区和Survivor区,分配比例为8:2;而Survivor区又1:1分为from区和to区。这样分配的理由是,新生代中的对象存活率低,大概只有10%。 这种情况下新生区采用的GC算法是:复制算法,我们知道复制算法最大的弊端就是内存的浪费,但是在低存活率的新生区。只需要空余10%的内存进行效率高的复制算法也是划算的。在第一次GC之前,对象的创建
2017-06-07 17:06:12
489
原创 GC垃圾回收机制
为什么要有GC: 对象的创建是在堆内存中分配的,内存的大小是一定的,不可能无限的消耗内存资源,所以对象必须有它的生命周期,生-死。 Java不同于c,在c中对象的创建有构造函数,对象的消亡有析构函数。而java采用的虚拟机自主回收,不再需要开发人员手动释放对象而产生的内存泄漏问题。如何判定一个对象需要被回收 1.引用计数器:在jdk1.2之前,虚拟机采用在对象创建时,附加携带一个引用计数器。
2017-06-07 16:45:04
379
原创 JVM运行内存模型
JVM运行内存模型图:注意下图中的线程共享问题。 JVM运行内存分为5个部分:1.虚拟机栈(VM Stack):是类加载器加载的类文件(字节码)的方法执行的内存模型: 当一个方法执行时虚拟机栈会产生一个“栈帧”,在栈帧中保存方法信息。方法的执行-结束过程就是“栈帧”在虚拟机栈中的一个入-出栈过程。本地方法栈:基本类似于虚拟机栈,但是针对的对象是虚拟机本地的方法。堆:保存对象实例,几乎所
2017-06-07 15:55:51
404
原创 Plugin execution not covered by lifecycle configuration
在pom.xml中配置时有时会产生问题。 解决方法: 在标签下使用标签包含
2017-06-01 08:48:20
248
原创 could not calculate build plan:插件版本问题
解决方法: 1. C:\User(用户\用户名)\.m2\repository\org\apache\maven\plugins\ 找到报错的插件目录 2.删除该目录下面的版本插件 3.点击项目》Maven》update project》
2017-06-01 08:43:58
1082
oscache-2.4.1-full.zip压缩包
2016-08-19
oscache页面缓存
2016-08-19
Oscache-2.4.1-full.zip
2016-08-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人