- 博客(12)
- 收藏
- 关注
原创 Netty 学习方法及记录
ChannelPipeline源码ChannelPipeline的开头描述部分对于netty 很有帮助,他解释了 channelHandler,addLast方法,事件传播,以及io线程和业务线程分离等等,推荐各位认真看看。 不管我们上传发送什么数据格式给底层(也就netty层)都要转化为ByteBuf进行传输,也就是最进行io的一定是二进制,其他String或者POJO都
2017-05-16 19:21:37 330
原创 Netty protobuf解析2-官方方法解析
关键代码如下 p.addLast(new ProtobufVarint32FrameDecoder());// 解码1. 根据byte 的头长度 来 分割 p.addLast(new ProtobufDecoder( Msg.Person.getDefaultInstance())); //解码2。 byte 转化为 实体类
2017-05-16 13:55:21 819
原创 Netty protobuf使用,自定义Encoder 和DeCoder
Server 监听客户发送的信息,并且打印Client 发送5s 发送信息。1.编辑google 的proto文件Msg.protosyntax = "proto3";message Person { // ID(必需) int32 id = 1; // 姓名(必需) string na
2017-05-15 20:58:51 3484
原创 Netty学习-handler 的基类选择!
netty 作为 rpc框架,其nio的特性很好,目前再看《Netty权威指南》书籍,下载了书中的例子照做,发现有些程序运行不了,通过解决分析,记录如下。是netty 的入门例子,我使用的版本是,dependency> groupId>io.nettygroupId> artifactId>netty-allartifactId> versi
2017-05-13 15:25:48 1567
转载 大卫谈学习4:为何你会一年经验用十年
转载自 http://davidzhang33.blog.51cto.com/3095817/1313940如何改变?见招拆招à单环学习à双环学习这个改动属于小改动,当时认为风险不高,而且确实时间太紧,所以遗漏了代码Review,所以以后我们要加强代码Review.该线上故障的主要原因是因为临近上线时的代码改动没有足够的质量保障措施,而对他人负责的系统代码不够熟悉,改
2017-05-10 15:16:31 273
转载 NIO
http://www.360doc.com/content/13/0502/23/7669533_282552666.shtmlJAVA类库中的NIO包相对于IO 包来说有一个新功能是内存映射文件,日常编程中并不是经常用到,但是在处理大文件时是比较理想的提高效率的手段。本文我主要想结合操作系统中(OS)相关方面的知识介绍一下原理。 在传统的文件IO操作中,我们都
2017-02-14 20:23:00 266
转载 NIO-直接内存
写NIO程序经常使用ByteBuffer来读取或者写入数据,那么使用ByteBuffer.allocate(capability)还是使用ByteBuffer.allocteDirect(capability)来分配缓存了?第一种方式是分配JVM堆内存,属于GC管辖范围,由于需要拷贝所以速度相对较慢;第二种方式是分配OS本地内存,不属于GC管辖范围,由于不需要内存拷贝所以速度相对较快。
2017-02-14 19:16:37 1944
转载 NIO
http://www.cnblogs.com/shijiaqi1066/p/3344148.html 0 概述0.1 Socket的问题传统socket由于需要等待资源,所以会出现阻塞现象。服务器端一般只能使用一个客户端socket对应一个处理线程。但是有以下局限:Java虚拟机会为每个线程分配独立的堆栈空间,工作线程数目越多,系
2017-02-14 18:58:04 358
转载 Mybatis-SQL执行流程分析
1. SqlSessionFactory 与 SqlSession. 通过前面的章节对于mybatis 的介绍及使用,大家都能体会到SqlSession的重要性了吧, 没错,从表面上来看,咱们都是通过SqlSession去执行sql语句(注意:是从表面看,实际的待会儿就会讲)。那么咱们就先看看是怎么获取SqlSession的吧:(1)首先,SqlSessionFactoryBuild
2017-02-12 19:54:13 252
转载 Mybatis缓存
1.一级缓存1>. 什么是一级缓存? 为什么使用一级缓存?每当我们使用MyBatis开启一次和数据库的会话,MyBatis会创建出一个SqlSession对象表示一次数据库会话。在对数据库的一次会话中,我们有可能会反复地执行完全相同的查询语句,如果不采取一些措施的话,每一次查询都会查询一次数据库,而我们在极短的时间内做了完全相同的查询,那么它们的结果极有可能完全相同,由于查
2017-02-12 09:14:21 223
转载 JDK动态代理实现原理
之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态是怎么用的。 Java代码 package dynamic.proxy; import java.la
2017-02-11 21:24:11 214
转载 Java 代理模式和装饰者模式的区别
装饰模式:以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案;代理模式:给一个对象提供一个代理对象,并有代理对象来控制对原有对象的引用;装饰模式应该为所装饰的对象增强功能;代理模式对代理的对象施加控制,并不提供对象本身的增强功能二者的实现机制确实是一样的,可以看到他们的实例代码重复是很多的。但就语义上说,这两者的功能是相反的,模式的一个重要作用是简化其他程序员对你
2017-02-11 20:54:48 225
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人