NIO框架之MINA源代码解析(一):背景 MINA的底层还是利用了jdk提供了nio功能,mina仅仅是对nio进行封装.包含MINA用的线程池都是jdk直接提供的. MINA的server端主要有accept.processor.session三部分组成的.当中accept主要负责在指定的port监听.若有新连接则建立一个新的session.processor则负责处理session相应的发送数据和接收数据并调用上层处理:session则缓存当前连接数据. MINA採用了线程懒启动的技术,即…
 "你们的agent占了好多系统的port.把我们的非常多业务系统都给整死了,给我们造成了非常大的损失.要求你们的相关领导下周过来道歉"   --   来自我们的一个客户.  怎么可能呢,我们都不相信,我们的agent仅仅占一个port啊! 事实胜过雄辩.经过查证.确实是因为我们的agent占了好多系统的port.我看了一下日志.基本把系统可用的port占完了! watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hhb2ZhbndlaQ=…
Apache Mina Server 是一个网络通信应用框架.也就是说,它主要是对基于TCP/IP.UDP/IP协议栈的通信框架(当然,也能够提供JAVA 对象的序列化服务.虚拟机管道通信服务等).Mina 能够帮助我们高速开发高性能.高扩展性的网络通信应用,Mina 提供了事件驱动.异步(Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持)操作的编程模型. Mina 同一时候提供了网络通信的Server 端.Client 端的封装.不管是哪端,Mina 在整个网通通信结构中都处于…
主要围绕RequestQueue进行解读,它的两个请求队列CacheQueue.NetworkQueue是如何调用的,第一条请求的执行过程及如何处理重复请求?对RequestQueue及相关的类进行详细解读. 1.RequestQueue: Volley 框架的核心类,将请求 Request 加入到一个运行的RequestQueue中,来完成请求操作. RequestQueue:表示请求队列,里面包含一个CacheDispatcher(用于处理走缓存请求的调度线程).NetworkDispatc…
申明:本文由作者基于日常实践整理,希望对初次接触MINA.Netty的人有所启发.如需与作者交流,见文签名,互相学习. 学习交流 更多学习资料:点此进入 推荐 移动端即时通讯交流: 215891622 推荐 前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty4(Netty5已经被取消开发了:详见此文). 本文将演示的是一个基于Netty4的UDP服…
Spring源代码解析(一):IOC容器:http://www.iteye.com/topic/86339 Spring源代码解析(二):IoC容器在Web容器中的启动:http://www.iteye.com/topic/86594 Spring源代码解析(三):Spring JDBC:http://www.iteye.com/topic/87034 Spring源代码解析(四):Spring MVC:http://www.iteye.com/topic/87692 Spring源代码解析(五…
Spring源代码解析(收藏)   Spring源代码解析(一):IOC容器:http://www.iteye.com/topic/86339 Spring源代码解析(二):IoC容器在Web容器中的启动:http://www.iteye.com/topic/86594 Spring源代码解析(三):Spring JDBC:http://www.iteye.com/topic/87034 Spring源代码解析(四):Spring MVC:http://www.iteye.com/topic/8…
1.NIO超级陷阱 之所以说NIO超级陷阱,就是因为我在本系列开头的那句话,因为使用缺陷导致客户业务系统瘫痪.当然,我对这个问题进行了很深的追踪,包括对MINA源码的深入了解,但其实之所以会出现这个问题,它的根不是MINA的原因,而是JDK底层的问题. JDK底层在实现nio时,为了能够唤醒等待在io上的线程,在windows平台使用了两个端口建立连接发消息实现.看如下代码: public class NIOTest { @Test public void test1(){ final int …
前言: 找了篇文章看了看,nio框架数Mina用的最多! 代码: 服务端: package com.mina; import java.net.InetSocketAddress; import java.nio.charset.Charset; import org.apache.mina.core.service.IoAcceptor; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.filter.…
前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty4(Netty5已经被取消开发了:详见此文). 本文将演示的是一个基于MINA2的UDP服务端和一个标准UDP客户端(Java实现)双向通信的完整例子. 实际上,MINA2的官方代码里有完整的UDP通信Demo代码,但Demo里客户端是需要依赖MINA2的客户端库的,而如果简单地去掉MINA2的li…
最近做项目需要解析二维码图片,找了一大圈,发现没有人去整理下开源的几个库案例,花了点时间 做了zxing,zbar和thoughtworkqrcode解析二维码案例,希望大家有帮助. zxing是谷歌开源的二维码库,zbar,thoughtworkQRcode也是开源的,三者之间比较各有优劣 下面通过一个案例demo源码,来认识学习下这三者的实际解码效果, 第一次上传demo源码,献丑了 zbar解析关键代码: Image primaryImage = Image.FromFile(fileNa…
上一篇:SDWebImage源代码解析(一) 2.缓存 为了降低网络流量的消耗.我们都希望下载下来的图片缓存到本地.下次再去获取同一张图片时.能够直接从本地获取,而不再从远程server获取.这样做的还有一个优点是提升了用户体验,用户第二次查看同一幅图片时,能高速从本地获取图片直接呈现给用户. SDWebImage提供了对图片缓存的支持,而该功能是由SDImageCache类来完毕的.该类负责处理内存缓存及一个可选的磁盘缓存.当中磁盘缓存的写操作是异步的,这样就不会对UI操作造成影响. 2.1…
形象化设计模式实战             HELLO!架构                     redis命令源代码解析 在redis之字符串命令源代码解析(一)中讲了get的简单实现,并没有对怎样取到数据做深入分析,这里将深入. 1.redisObject 数据结构.以及Redis 的数据类型 (一)中说set test "hello redis","hello redis"会终于保存在robj中,redisObject是Redis的核心,数据库的每一个键.…
概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty4(Netty5已经被取消开发了:详见此文). 本文中,服务端将分别用MINA2和Netty4进行实现,但在你实际的项目中服务端实现只需选其一就行了.本文中的Demo同时…
前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同时用MINA2和Netty4分别实现服务端的目的,是因为很多人都在纠结到底是用MINA还是Netty来实现高并发的Java网络通信服务端,在此干脆两个都实现了,就看你怎么选择了,够吊吧. NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,M…
问题:生活中工作中,会有人问我javaNIO框架里面 Netty Mina  xSocket Grizzly 等等哪个比较好? 在这里写一下自己的感受,也算是总结一下吧 在我的印象中.不管是什么NIO框架.本身其实都是对Java底层的一种在封装.封装一套更简便,更易于扩展的一套东西以方便开发者使用.所以性能上也许会有所差异,但是绝对没有java和C++之间这么多.(代码写的太烂的除外,不过想要使用java写出很烂的代码也比较困难.)这些框架在性能方面差别不会超过1%. Mina和Netty开始.…
原文地址:http://blog.csdn.net/opengl_es/article/details/40979371?utm_source=tuicool&utm_medium=referral [读后感] 不知道这是什么节奏,也许人家早就春意盎然了,只是我方才感觉到而已! 研究 Mina 的过程中,偶然发现了 Netty,有人说 Mina 好久不更新了,而 Netty 一直很活跃, 这只能说, Netty 在高速的完善当中, 至于 Mina,是没有后劲儿了呢,还是已经很完善了,不需要再继续…
闲着有点无聊想写点东西. 问题:生活中工作中,会有人问我javaNIO框架里面 Netty Mina  xSocket Grizzly 等等哪个比较好? 在这里写一下自己的感受,也算是总结一下吧 在我的印象中.不管是什么NIO框架.本身其实都是对Java底层的一种在封装.封装一套更简便,更易于扩展的一套东西以方便开发者使用.所以性能上也许会有所差异,但是绝对没有java和C++之间这么多.(代码写的太烂的除外,不过想要使用java写出很烂的代码也比较困难.)这些框架在性能方面差别不会超过1%.…
Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN2.0读写 Fixflow引擎解析(一)(介绍) - Fixflow开源流程引擎介绍 1.关于BPMN2.0 网上的资料比较多下面引用一段维基百科对BPMN的定义: 业务流程建模标记法(BPMN, Business Process Modeling Notation)是对象管理组织(OMG, Obj…
mina是对nio的具体实现.是目前比较高效和流行的nio框架了. 下面是对使用mina进行通讯的一个简单demo,后面再用mina写一个RPC的简单框架.   mina主要包括: (使用的mina版本为2.0.0.M4 core,具体可见官方网站 ) mina也分服务端和客户端(这是肯定的...)   其中服务端为:NioSocketAcceptor 客户端为:NioSocketConnector   类似于Socket的服务端跟客户端Socket.除了这些用来基本通讯的之外,还有一些可以用来…
http://cxytiandi.com/blog/detail/17345 Netty介绍 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 也就是说,Netty 是一个基于NIO的客户.服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用.Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的sock…
本文已授权微信公众号<非著名程序猿>原创首发,转载请务必注明出处. xUtils3源代码解析系列 一. Android xUtils3源代码解析之网络模块 二. Android xUtils3源代码解析之图片模块 三. Android xUtils3源代码解析之注解模块 四. Android xUtils3源代码解析之数据库模块 关于xUtils3 xUtils 包括了非常多实用的android工具. xUtils 支持超大文件(超过2G)上传.更全面的http请求协议支持(11种谓词).拥有…
转载请标明出处:一片枫叶的专栏 首先说点题外话,对于想学android framework源代码的同学,事实上能够在github中fork一份,详细地址:platform_frameworks_base 这里面基本都是android framework层的源代码了.并且近期发现了一个比較不错的github插件:OctoTree,它 是一个浏览器插件,它能够让你在Github 看代码时,左边栏会出现一个树状结构.就像我们在IDE 一样.当我们看一个项目的结构,或者想看详细的某个文件,这样就会非常方…
struts2 文件上传 和部分源代码解析,以及一般上传原理 (1) 单文件上传 一.简单介绍 Struts2并未提供自己的请求解析器,也就是就Struts2不会自己去处理multipart/form-data的请求,它须要调用其它请求解析器,将HTTP请求中的表单域解析出来. 但Struts2在原有的上传解析器基础 上做了进一步封装,更进一步简化了文件上传. Struts2默认使用的是Jakarta的Common-FileUpload框架来上传文件,因此,要在web应用中添加两个Jar文件:c…
Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁.Masonry简化了NSLayoutConstraint的使用方式,让我们可以以链式的方式为我们的控件指定约束.本篇博客的主题不是教你如何去使用Masonry框架的,而是对Masonry框架的源码进行解析,让你明白Masonry是如何对NSLayoutConstraint进行封装的,以及Masonry框架中的各个部分所扮演的角色是什么样的.在Masonry框架中,仔细…
类库文件我们在文件最后面下载 [ThoughtWorks.QRCode.dll 就是类库] 使用时需要增加: using ThoughtWorks.QRCode.Codec;using ThoughtWorks.QRCode.Codec.Data;using ThoughtWorks.QRCode.Codec.Util; 主要源代码: 1.生成二维码  代码如下 复制代码 QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();   String en…
前言 Getty是我为了学习 Java NIO 所写的一个 NIO 框架,实现过程中参考了 Netty 的设计,同时使用 Groovy 来实现.虽然只是玩具,但是麻雀虽小,五脏俱全,在实现过程中,不仅熟悉了 NIO 的使用,还借鉴了很多 Netty 的设计思想,提升了自己的编码和设计能力. 至于为什么用 Groovy 来写,因为我刚学了 Groovy,正好拿来练手,加上 Groovy 是兼容 Java 的,所以只是语法上的差别,底层实现还是基于 Java API的. Getty 的核心代码行数不…
Java Arrays.sort源代码解析 Java Arrays中提供了对所有类型的排序.其中主要分为Primitive(8种基本类型)和Object两大类. 基本类型:采用调优的快速排序: 对象类型:采用改进的归并排序. 一.对于基本类型源码分析如下(以int[]为例): Java对Primitive(int,float等原型数据)数组采用快速排序,对Object对象数组采用归并排序.对这一区别,sun在<<The Java Tutorial>>中做出的解释如下: The so…
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40920453,本文出自:[张鸿洋的博客] 上一篇带大家初步了解了EventBus的使用方式,详见:Android EventBus实战 没听过你就out了,本篇博客将解析EventBus的源代码,相信能够让大家深入理解该框架的实现.也能解决非常多在使用中的疑问:为什么能够这么做?为什么这么做不好呢? 1.概述 一般使用EventBus的组件类,相似以下这样的方式: public…
前端MVVM框架设计及实现(二) 在前端MVVM框架设计及实现(一)中有一个博友提出一个看法: “html中使用mvvm徒增开发成本” 我想这位朋友要表达的意思应该是HTML定义了大量的语法标记,HTML中放入了太多的逻辑,从而增加了复杂度 将逻辑放入HTML是一个不好的做法,也不建议这么做,即便从复用的角度来讲,因为HTML与代码紧密耦合,要想重新组成一个应用程序非常困难 当然,在构建一个应用程序时,你也可以不使用框架,但不可否认,使用框架将使得你的开发工作变得更容易 框架都不是万能的,但是在…