- 博客(113)
- 资源 (7)
- 收藏
- 关注
转载 IO中同步、异步与阻塞、非阻塞的区别
一、同步与异步同步/异步, 它们是消息的通知机制1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息...
2016-09-12 10:44:41 2195
转载 轻量级分布式 RPC 框架(续)
1、背景最近在搜索Netty和Zookeeper方面的文章时,看到了这篇文章《轻量级分布式 RPC 框架》,作者用Zookeeper、Netty和Spring写了一个轻量级的分布式RPC框架。花了一些时间看了下他的代码,写的干净简单,写的RPC框架可以算是一个简易版的dubbo。这个RPC框架虽小,但是麻雀虽小,五脏俱全,有兴趣的可以学习一下。本人在这个简易版的RPC上添加了如下特
2016-09-29 11:11:45 1581
转载 轻量级分布式 RPC 框架
转自 http://git.oschina.net/huangyong/rpcRPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RP
2016-09-27 15:16:07 1308
转载 Maven运行JUnit测试之mvn test的默认行为
参照http://www.blogjava.net/sitinspring/archive/2007/06/20/125224.html,用Maven跑JUnit类。但是运行mvn test,却报找不到任何测试类,即:There are no tests to run. 郁闷之际查了一下maven参考资料,发现原来是surefire插件的默认行为所致。mave
2016-09-27 10:22:40 11434 3
转载 【Apache ZooKeeper】命令行zkCli.sh使用指南
ZooKeeper命令行 ZooKeeper的命令在/usr/lib/zookeeper/bin文件夹下 查看具体结点信息 bash zkServer.sh status root@ubuntu:/usr/lib/zookeeper/bin# bash zkServer.sh status JMX enabled by default Using config: /usr/
2016-09-26 21:02:25 1056
转载 zookeeper windows 入门安装和测试
一、序言 以下是我对zookeeper 的一些理解: zookeeper 作为一个服务注册信息存储的管理工具,好吧,这样说得很抽象,我们举个“栗子”。 栗子1号: 假设我是一家KTV的老板,我同时拥有5家KTV,我肯定得时刻监视我KTV 的情况吧,是不是有人打架,或者发生火灾什么的,这时候我会给设置一个视频监控,然后每一家都连接到
2016-09-26 20:59:59 909
转载 Protostuff详解
一、Protostuff介绍Protostuff是一个开源的、基于Java语言的序列化库,它内建支持向前向后兼容(模式演进)和验证功能。Protostuff支持的序列化格式包括:protobufprotostuffgraph 即序列化对象图,即带循环引用的protostuff。详见:http://www.protostuff.io/documentation/objec
2016-09-26 17:39:05 4911
转载 Protostuff序列化
前言: Java序列化是Java技术体系当中的一个重要议题,序列化的意义在于信息的交换和存储,通常会和io、持久化、rmi技术有关(eg:一些orm框架会要求持久化的对象类型实现Serializable接口)。 本文将提供Java自带序列化机制和ProtoStuff的序列化(仅仅当作一种数据格式)的比较,从序列化的内容和特点来对二者进行比较。
2016-09-26 17:36:40 2187
转载 Protostuff序列化工具类
源代码package org.wit.ff.util;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.List;import com.dyuproject.protostuff.LinkedB
2016-09-26 17:36:04 3831
转载 netty之http部分handler的使用与超时控制handler
这部分讲讲使用的最多的一种handler的使用情况,http部分的handler,另外再来讲讲超时控制handler的实现package fjs;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitialize
2016-09-26 16:49:02 7043 1
转载 Netty Server读超时(ReadTimeoutHandler),client自动INACTIVE
package netty.sample;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.ChannelOption;import io.ne
2016-09-26 16:43:36 10881
转载 浅析 Netty 实现心跳机制与断线重连
基础何为心跳顾名思义, 所谓 心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性.为什么需要心跳因为网络的不可靠性, 有可能在 TCP 保持长连接的过程中, 由于某些突发情况, 例如网线被拔出, 突然掉电等, 会造成服务器和客户端的连接中断. 在这些突发情况下, 如果恰好服务器和客户端
2016-09-26 16:41:43 15850 4
转载 基于Netty4的HttpServer和HttpClient的简单实现
Netty的主页:http://netty.io/index.html使用的Netty的版本:netty-4.0.23.Final.tar.bz2 ‐ 15-Aug-2014 (Stable, Recommended)Http 消息格式:Http request:Method path-to-resource HTTPVersion-numberHeader-
2016-09-26 16:38:40 4311
转载 Netty 之 netty的比较规范的C/S端的写法
看了RPC框架Jupiter的源码和RocketMQ的Netty部分的代码,最后还是总结一下,把与Netty相关的代码都截取出来,写出一个比较规范的DEMO这个DEMO还是比较简单的,但麻雀虽小五脏俱全啊,有心跳,有重连,有ack的,可以与大家分享一下~https://github.com/BazingaLyn/netty-study/tree/master
2016-09-26 11:01:46 2075
转载 Netty之 netty源码学习之netty server端源码初读(下)
上一篇简单的分析了一下NioEventLoop,ServerBootstrap等组件的创建过程做的一些操作现在我们一起看下当SingleThreadEventExecutor.java中的thread启动后,netty做的一些最最重要的一些操作我们接着昨天的代码看,昨天分析到register之后,调用这段代码:[java] view
2016-09-23 15:54:39 1089
转载 Netty 之 netty源码学习之netty server端源码初读(上)
server端是使用了Reactor模式对nio进行了一些封装,Reactor模式网上有很多资料,不赘述,了解了这个模式开始看源码netty的版本是4.0.21.Final[html] view plain copy dependency> groupId>io.nettygroupId> ar
2016-09-23 15:39:49 1081
转载 Netty 之 netty源码学习之大话java NIO
沉淀了一个月安安心心地学习了家纯大神的Jupiter(https://github.com/fengjiachun/Jupiter),感觉受益良多,感觉自己学习了这里面的精华的50%,不是谦虚,而是无知,因为我不知道着里面还有多少是我没有理解的,也许我看懂了他的代码,但我现在还不知道他那样做的好处吧废话不多说,听了大神的意见,开始慢慢看netty的源码,在学习netty源码之前
2016-09-23 15:30:06 1395
转载 Netty 之 ChannelOption的TCP_NODELAY属性设置
在有些网络通信的场景下,要求低延迟,这样就需要我们设置一些TCP的链接属性:在客户端我们需要这样设置:[java] view plain copy bootstap.option(ChannelOption.TCP_NODELAY, true); 在服务器端是在worker的Channel端设置属性,
2016-09-23 11:51:04 16275
转载 Netty 之 AttributeMap属性
本来没打算研究这个东西的,一开始觉得没啥用,甚至觉得这个东西有点鸡肋,不过慢慢接触之后,发现了这个AttributeMap的重要性初学这个东西,我们还是先理解AttributeMap的用法吧1)AttributeMap这是是绑定在Channel或者ChannelHandlerContext上的一个附件,相当于依附在这两个对象上的寄生虫一样,相当于附件一样,如图所示:
2016-09-23 11:44:07 6716
转载 Netty4学习笔记-- AttributeMap
IoSessionMINA的IoSession接口定义了一组方法,让我们可以利用IoSession来存储一些数据:[java] view plain copy public interface IoSession { getAttribute(Object key) getAttribute(Object
2016-09-22 18:02:32 2791
转载 Netty 之 Netty生产级的心跳和重连机制
sigh,写这篇博客的时候老脸还是红了一下,心里还是有些唏嘘的,应该算是剽窃吧,每个人的代码功力的确是有差距的,好在文章的标题是“一起学”,而不是开涛大神的“跟我学”系列的文章,我们还是多花点时间学习吧,感叹无用~最近工作比较忙,但闲暇之余还是看了阿里的冯家春(fengjiachun)的github上的开源代码Jupiter,写的RPC框架让我感叹人外有人,废话不多说,下面的代
2016-09-22 17:25:14 31219 8
转载 Netty 之 Netty简单的重连机制
其实重连机制并不是多么多高深的技术,其实就是一个在客户端做一个简单的判断,如果连接断了,那么就重新调用连接服务端的代码当然,我们重连的动作肯定是发生在断连之后发生的,我们可以在上篇的心跳机制的基础上,简单地修改一下客户端的启动代码就可以了:我们在连接断了之后,我们一般会在finally的方法中去释放资源,这边我们应该不去释放资源,我们在finally里面进行
2016-09-22 16:08:07 9110 4
转载 Netty 之 ChannelHandler,ChannelHandlerContext,ChannelPipeline
本小节一起学习一下ChannelHandler,ChannelHandlerContext,ChannelPipeline这三个Netty常用的组件,不探究它们的底层源码,我们就简单的分析一下用法首先先分析一下ChannelHandler,ChannelHandler是我们日常开发中使用最多的组件了,大概我们平时写的最多的组件就是Handler了,继承图如下
2016-09-22 15:45:32 1914 1
转载 Netty4学习笔记-- NioEventLoopGroup NioEventLoop
NioEventLoopGroup继承层次结构图Netty4的NioEventLoopGroup继承结构很复杂,为了理解它如何工作,我画了一张类似UML的图。但是这张图也很巨大,所以我做了以下处理:将位于不同包中的类或接口用不同的颜色加以区分接口名后面的括号里标注了大写字母I(Interface),抽象类名的后面标注了大写字母A(Abstract)
2016-09-22 15:42:13 5301
转载 Netty4学习笔记-- Bootstrap
Netty4的代码比我想象的要复杂的多,不过Netty4很好的将这种复杂性隐藏了起来,暴露出来的,是一个相对容易使用的接口。Bootstrap就是Netty试图隐藏这种复杂性的一个例子。bootstrap包bootstrap包是Netty4代码里最简单的一个包,总共只有4个类:Bootstrap继承结构AbstractBootstrap是
2016-09-22 15:33:30 2823 2
转载 Netty4学习笔记-- ChannelPipeline
Netty4Netty是一个和MINA类似的Java NIO框架,目前的最新版本是4.0.13,这两个框架的主要作者好像都是同一个韩国人。ChannelChannel是Netty最核心的接口,一个Channel就是一个联络Socket的通道,通过Channel,你可以对Socket进行各种操作。ChannelHandler用Netty编写网络
2016-09-22 15:30:32 2801
转载 Netty 之 Netty心跳之IdleStateHandler
Netty提供了对心跳机制的天然支持,心跳可以检测远程端是否存活,或者活跃今天我们就一起初识一下Netty4的心跳机制Netty4.0提供了一个类,名为IdleStateHandler,这个类可以对三种类型的心跳检测这个类的构造参数是这样的:前三个的参数解释如下:1)readerIdleTime:为读超时时间(
2016-09-22 11:50:43 19136 5
转载 protobuf在netty里面的应用举例
netty为protobuf提供了两个编码器(ProtobufEncoder,ProtobufVarint32LengthFieldPrepender),两个解码器(ProtobufVarint32FrameDecoder,ProtobufDecoder)[注]所谓的编码就是把应用程序使用的数据类型编码成在网络上传输的二进制字节流,反之同理。看一个netty官网上提供的一个使用protob
2016-09-22 11:44:48 1162
转载 Netty 之 Netty使用Google的ProtoBuf
protobuf是由Google开发的一套对数据结构进行序列化的方法,可用做通信协议,数据存储格式,等等。其特点是不限语言、不限平台、扩展性强Netty也提供了对Protobuf的天然支持,我们今天就写一个简单的示例,简单地了解一下Netty对Google的protoBuf的支持我们的示例场景很简单的:客户端发送一个信息,这个信息用Protobuf来做序列化
2016-09-22 11:43:58 1093
转载 httpclient +protobuf 实现数据传输
最近项目要接入某联盟广告,采用protobuf作为传输协议,以前没弄过,这次刚好使用到了,整理下一、环境准备:(mac下)1.1 下载protobuf2.5安装包[html] view plain copyhttp://pan.baidu.com/s/1o6v4Sae 1.2 解压安装包
2016-09-21 17:07:56 15200 1
转载 Protocol Buffer技术详解(数据编码)
之前已经发了三篇有关Protocol Buffer的技术博客,其中第一篇介绍了Protocol Buffer的语言规范,而后两篇则分别基于C++和Java给出了一些相对比较实用而又简单的示例。由于近期工作压力很大,因此对于是否继续写本篇博客也确实让我纠结了几天。但每每想到善终如始则无败事这句话时,最终的决定还是既然开始了,就要尽自己最大的努力去做,而不要留有丝毫的遗憾。 该篇Blog
2016-09-21 16:59:16 2190
转载 Protocol Buffer技术详解(Java实例)
该篇Blog和上一篇(C++实例)基本相同,只是面向于我们团队中的Java工程师,毕竟我们项目的前端部分是基于Android开发的,而且我们研发团队中目前主要使用的开发语言就是C++、Java和Python,其中Python主要用于编写各种工具程序。然而为了保证该篇Blog的完整性和独立性,我仍然会将上一篇Blog中已经出现的内容再一次赘述,同时对于Java中特有的部分也会着重介绍。
2016-09-21 16:48:52 1208
转载 Java protobuf框架使用向导
调研环境:windows1.http://code.google.com/p/protobuf/downloads/list ,https://github.com/google/protobuf/releases?after=v3.0.0-alpha-1 选择其中的win版本下载2.下载一个protobuf-java-2.4.1.jar文件(注意,要与你刚才下的pro
2016-09-21 16:16:11 1606
原创 如何在一台机器上配置多个git的rsa
如何在一台机器上配置多个git的rsa问题的提出很多时候,我们一台机器上要使用多个git库,比如 github, csdn 以及 自己公司的。那么 rsa就要有多份。那么该如何让这些共同存在呢?原理就是:建立多个不同的rsa 然后 在ssh config中分别不同的配置。具体步骤1 建立rsassh-keygen -t rsa -C "你的邮箱地址"执行完这条命令之...
2016-09-21 12:12:16 2723
转载 Thrift 接口描述语言说明
1. 本文档大部分内容翻译自文章:“Thrift:The missing Guide“。 Thrift 官方文档方面做得比较差. 我们将不定期更新此文档, 欢迎大家多提建议, 我们随时补充. 第一 部分主要翻译自 http://wiki.apache.org/thrift/ThriftFeatures1.1 主要特性:
2016-09-21 11:31:55 3882
转载 比较跨语言通讯框架:thrift和Protobuf
前两天想在微博上发表一个观点:在现在的技术体系中,能用于描述通讯协议的方式很多,xml,json,protobuf,thrift,如果在有如此众多选择的基础上,在设计系统时,还自造协议,自己设计协议类型和解析方式,那么我只能说,您真的落后了,不是技术上,而是思想上。对于xml,和json我们不做过多描述了,参考相关文档就可以了。特别是json,如今在 web系统,页游系统的前后台通讯中,应用非
2016-09-21 11:01:37 17545
转载 Protocol Buffer技术详解(语言规范)
该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo。这样做的目的主要在于不仅可以保持Google文档的良好风格和系统性,同时再结合一些比较实用和通用的用例,这样就更加便于公司内部的培训,以及和广大网友的技术交流。需要说明的是,Blog的内容并非line by line的翻译,其中包含一些经验性总结,与此同时,对于一
2016-09-21 10:48:41 1285
转载 Java数据通讯中使用Google Protobuf 序列化与反序列化
概念1.什么是protocol bufferProtocolBuffer是用于结构化数据串行化的灵活、高效、自动的方法,有如XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。l Google定义的一种序列化的协议格式;l Google内部几乎所有
2016-09-20 17:39:40 4584
转载 SpringMVC——redirect重定向跳转传值
spring MVC框架controller间跳转,需重定向。有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示。 首先先来介绍一下不带参数的重定向: 我在后台一个controller跳转到另一个controller,为什么有这种需求呢,是这样的。我有一个列表页面,然后我会进行新增操作,新增在后台完成之后我要跳转到列表页面,不需要传递参数
2016-09-20 16:04:36 44337
转载 SpringMVC 重定向参数 RedirectAttributes
SpringMVC 中常用到 redirect 来实现重定向。但使用场景各有需求,如果只是简单的页面跳转显然无法满足所有要求,比如重定向时需要在 url 中拼接参数,或者返回的页面需要传递 Model。SpringMVC 用 RedirectAttributes 解决了这两个需要。首先,在 Controller 中做 redirect 中可用如下方式实现:return new Mode
2016-09-20 16:03:57 8450
Zookeeper资源文件
2017-03-20
Zookeeper基础知识
2017-03-20
Zookeeper初识
2017-03-20
使用exe4j 制作java启动程序的 等候界面
2014-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人