自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (23)
  • 收藏
  • 关注

原创 Netty4系列--实现简单的Http协议

利用netty4来实现http的服务器,代码如下:public class ApiServer { public static void main(String[] args) { int port = 8089; if (args != null && args.length > 0) { try {

2017-08-13 14:10:08 869

原创 Netty线程模型及EventLoop和EventLoopGroup源码解析

1、netty线程模型

2017-06-19 15:29:20 9291

原创 netty实现webSocket协议

1、http协议现状         一直以来http协议一直都是请求/响应的模式,如果服务器有新的数据变化要推送给客户单,此时需要客户端发送一个请求由服务器进行响应。要想实现服务端立即推送到客户端,可以使用轮训的机制或Comet,但这里有一个共同的问题是:由于http协议的开销,导致他们不适用于低延迟。         http协议弊端如下:         http为半双工模式,不

2017-06-13 16:38:40 804

原创 Netty使用google protobuf进行编解码

1、编解码技术   基于java提供的对象输入\输出流ObjectInputStream和ObjectOutputStream,可以直接把java对象作为存储的字节数组写入文件,也可以传输到网络上。基于Jdk的默认序列化机制可以避免操作底层数组,从而提升开发效率。    java序列化的目的主要有两个:    网络传输    对象持久化。  基于netty的nio网络开发,主要

2017-06-12 14:37:15 575

原创 netty分割符和定长解码器的应用

tcp以流的方式进行数据传输,上层的应用协议为了对消息进行区分,往往采用如下4种方式:     1、消息固定长度,累计读取到长度一定的报文段后,就读取下一个报文段。     2、将回车换行符做为消息结束符,例如ftp协议,这种方式在文本协议中应用比较广泛。     3、将特殊的分割符作为消息结束标志,回车换行就是一种特殊的结束分隔符;     4、通过在消息头中定义长度字段来标识消

2017-06-12 13:47:36 573

原创 netty中的粘包和拆包问题处理

1、tcp粘包和拆包问题说明2、tcp粘包和拆包发生的原因3、粘包问题的解决策略

2017-06-12 10:51:53 1122

原创 Netty入门应用一

在本例子中使用的是netty5,以及后面的例子中也是。先去官网进下载5.0.0.Alphal,解压后要引用的jar包就是netty-5.0.0.Alphal.jar包。对于用netty进行编写TimeServer的nio程序如下:package zou;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.Ch

2017-06-11 22:53:28 317

原创 nio编

NIO,有人称为New IO这是相对于之前传统io的叫法。但是与之前传统的相比,New IO类库的目标是让java支持非阻塞IO,因此是指非阻塞IO。     NIO类库的简介     1、缓冲区buffer     在nio库中,所有的数据都是用缓冲去咧,在读取数据的时候,它是直接读到缓冲区中的;在写入数据的时候,写入到缓冲区中。任何时候访问NIO中的数据,都是通过缓冲区进行操作的。

2017-06-09 15:43:34 267

原创 tcp超时重传

tcp提供了运输的可靠性,对数据的传输进行了确认机制,如果当发送的数据丢失,或是ack的发送丢失,或是网络延迟等,这是会触发tcp进行超时重传。超时原理:在发送了一个数据报文后,会启动一个超时定时器,如果在超时定时器内还没有收到这个数据包的ack,那么就会进行重传,知道发送成功为止。递推公式概说超时的估算:超时的时间如果定义为长久固定值,那么可能造成网络的利用率不高;但

2017-06-08 17:54:31 650

原创 tcp成块数据流交互

滑动窗口滑动窗口协议是允许发送方发送多个未被确认的数据分组,每个分组不必等待确认后进行发送下一个分组,且接受方通过窗口协议可以对多个分组进行确认,可以加快数据的传输。 在滑动窗口协议中,ack的确认是可以累积的,可以一次确认多个分组。当接收方确认数据后,这个滑动窗口不时地向右移动。窗口两个边沿的相对运动增加或减少了窗口的大小。我们使用3个术语来描述窗

2017-06-08 17:51:47 304

原创 tcp的关闭过程

tcp的关闭过程如下:会经历4次的握手:需要注意的是在一段发送了fin包后,收到了ack包,此时状态进入到TIME_WAIT状态,需要等2MSL才进入到closed状态,这为了防止ack包丢失进行超时重传。在一段进行了关闭后,只是在这一段不能发送收据,但它可以接受另外一端的发送数据的报文,这时就是半关闭了。其抓包信息如下:15:47:23.410025 IP

2017-06-08 17:47:32 1101

原创 tcp连接建立于终止

tcp的连接建立:在本机执行如下命令:sudo tcpdump -S port 8080 -vv -n -i lo0tcpdump: listening on lo0, link-type NULL (BSD loopback), capture size 262144 bytes00:35:50.265450 IP (tos 0x10, ttl 64, id 35702,

2017-06-08 17:42:23 356

原创 tcp传输控制协议

tcp服务:tcp是面向连接的,提供可靠的服务,对数据有校验机制。tcp的首部:其格式如下:如上tcp的报文是tcp的首部和tcp的数据。tcp的首部是有源端口和目的端口,这个值和ip首部的源ip和目的ip构成了tcp唯一确定的一个连接。序号是用来标示从tcp发端向tcp收端发送的数据字节。当建立一个新连接的时候,SYN标

2017-06-08 17:36:39 461

原创 linux io模型讲解

网络应用需要处理的无非两大类问题,网络io,数据计算。相对于后者,网络i/o的延迟,给应用带来的性能瓶颈大于后者。网络i/o模型大致有如下几种:同步模型 (synchronous i/o)阻塞i/o(blocking i/o)非阻塞io(non-blocking i/o)多路复用io (mulitplexing i/o)信号驱动方式i/o (signal-drivern

2017-06-08 16:42:58 299

原创 jstack日志深入理解

在分析线上问题时常使用到jstack 命令将当时Java应用程序的线程堆栈dump出来。面对jstack 日志,我们如何查看?首先要清楚线程的状态线程的状态有:new、runnable、running、waiting、timed_waiting、blocked、dead线程状态变迁图:各状态说明:New: 当线程对象创建时存在的状态,此时线程不可能执行;

2016-08-06 17:11:36 42819 1

原创 jvm基础学习

1、jvm虚拟机内存模型程序计数器:是线程的私有空间,每个线程都有一个独立的程序计数器,用于记录下一指令。java虚拟机栈:和线程创建的时候一起创建的,也是线程的私有空间,它保存了线程的局部变量、执行结果、调用和返回的情况。在虚拟机栈中会返回栈溢出的错误,如果一个线程的栈太深会返回此错误。如下一个例子:private int count = 0;pu

2016-08-06 17:09:52 496

原创 查看java堆栈信息

通过查看java堆栈的信息,我们可以kand

2014-06-17 19:47:39 19579

转载 java虚拟机加载机制

Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。在加载阶段,java虚拟机需要完成以下3件事:a.通过一个类的全限定名来获取定义此类的二进制字节流。b.将定义类的二进制字节流所代表的静态存储结构转换为方法区的运行时数据结构。c.在java堆中生成一个代表该

2014-06-05 14:47:57 675

原创 tcpdump命令

tcpdump抓包命令:

2014-05-21 11:11:02 626

转载 关于SimpleDateFormat安全的时间格式化线程安全问题

想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题。下面我们通过一

2014-02-18 16:19:40 75962 21

原创 利用token来进行防止重复提交

对于一些页面,为了防止进行刷新或重复提交,可以通过token令牌来解决,其思路如下:            在生成表单页面事,对应生成一个令牌,然后将令牌存放在表单的隐藏域,也可存放在请求头的cookie中(服务端可以存放在session中或是cookie中)。当提交时判断令牌是否相等,如果相等则进行流程处理,最后在服务端删除对应的令牌,下次提交则发现不相等,则是对应的重复提交进行其他流程的处

2014-01-11 15:59:33 2193

原创 nohup命令的应用

有时候我们希望程序以后台方式进行运行,比如我们写好了一个jar包,设置了每小时运行一次。此时要在linux上以后台程序运行,那么可以利用nohup命令:             nohup -java **.jar &,此时jar包的程序就会以后台进程方式进行运行,需要注意的是不能直接关闭当前窗口,需要执行exit命令,这样才能保证我们的后台jar程序会一直运行。

2013-11-27 19:44:26 499

原创 memcache的一致性hash算法

此文是在网上看到别人写memcache一致性hashi算法后进行编写的,感觉写的很好,所以就再录过来:       现在一般的算法就是一个hash值算法,对服务器个数进行取余来进行hash值的计算,假如你有n个cache,那么对于object的映射,你会通过hash(object)%n来进行映射对应的服务器上,但是当服务器当掉,那么你原来的存储数据会失效,且hash算法会进行修改,同理增加一台

2013-11-08 13:12:51 1321

原创 memcache内存使用原理及监控分析

memcache的内存分配默认是采用了Slab Allocator的机制分配、管理内存。在该机制出现以前,内存的分配是通过对所有记录简单地进行malloc和free来进行的。 但是,这种方式会导致内存碎片,加重操作系统内存管理器的负担,最坏的情况下, 会导致操作系统比memcached进程本身还慢。Slab Allocator就是为解决该问题而诞生的。      Slab Allo

2013-11-06 18:17:24 5902

转载 持续集成工具

持续集成的工具已经是铺天盖地,有商业化的软件,也有开源的软件。覆盖的CI功能也是多种多样。从功能角度分,就笔者的学习经验而言,最关键的是三类:版本控制工具、构建工具、CI(Continuous integration)服务器。而其中最核心的又是构建工具。其他开源的、与持续集成相关的工具也有很多,但大多数是辅助性的工具。笔者学习持续集成时所选择的工具为:SVN、Maven、Jenki

2013-09-26 19:32:34 1289

转载 持续集成概念入门

一)为什么需要持续集成“敏捷编程”(Agile Programming)的思想若干年前就已经提出,并在业界获得广泛支持。从团队日常开发的角度来看,Agile Programming就是:"Short Cycles that are test-driven and feedback-driven, yielding constant improvement."其中,l

2013-09-26 13:46:31 2349

转载 php +mysql +apache 整合过程

准备工作:文件版本及下载地址:apache_2.2.10-win32-x86-no_ssl.msi官网:http://httpd.apache.org/下载地址:http://apache.freelamp.com/httpd/binaries/win32/apache_2.2.10-win32-x86-no_ssl.msiphp-5.2.6-Win32.zip官网:http:

2013-09-22 14:05:01 628

原创 linux文件格式转换

在linux上执行一个python文件时,经常报文件找不到。这是是因为格式的问题,在windows上换行是\r\n,而在unix上是\n,因此需要将文件转换成unix格式,可以直接使用命令 dos2unix file

2013-09-13 16:57:43 892

转载 HTTP协议 (三) 压缩

HTTP内容编码和HTTP压缩的区别HTTP压缩,在HTTP协议中,其实是内容编码的一种。在http协议中,可以对内容(也就是body部分)进行编码, 可以采用gzip这样的编码。 从而达到压缩的目的。 也可以使用其他的编码把内容搅乱或加密,以此来防止未授权的第三方看到文档的内容。所以我们说HTTP压缩,其实就是HTTP内容编码的一种。 所以大家不要把HTTP压缩和HTTP

2013-08-23 16:42:56 510

转载 http协议详解

HTTP协议详解当今web程序的开发技术真是百家争鸣,ASP.NET, PHP, JSP,Perl, AJAX 等等。 无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看。也希望对大家的开发工作或者测试工作有所帮助。使用Fiddler工具非常方便地捕获H

2013-08-22 14:32:44 475

转载 http协议缓存

缓存的概念缓存这个东西真的是无处不在, 有浏览器端的缓存, 有服务器端的缓存,有代理服务器的缓存, 有ASP.NET页面缓存,对象缓存。 数据库也有缓存, 等等。http中具有缓存功能的是浏览器缓存,以及缓存代理服务器。 http缓存的是指:当Web请求抵达缓存时, 如果本地有“已缓存的”副本,就可以从本地存储设备而不是从原始服务器中提取这个文档。缓存的好处

2013-08-22 12:28:22 573

转载 java annotation

JAVA从J2SE5开始提供名为annotation(注释,标注)的功能。Java的annotation,可以附加在package, class, method, field等上面,相当于给它们添加了额外的辅助信息。附加在package, class, method, field等上的Annotation,如果没有外部解析工具等对其加以解析和处理的情况,本身不会对Java的源代码或class等产生

2013-08-12 18:22:05 642

转载 单点登录原理

单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞

2013-07-26 14:28:00 580

转载 linux的软连接

软链接(符号链接)软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。建立软链接,只要在ln后面加上选项 –s,下面举个例子[[email protected] test]# ls -il总计 01491138 -rw-r–r– 1 root root

2013-07-22 11:20:48 737

转载 理解threadLocal

ThreadLocal是什么早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它

2013-07-08 17:51:39 461

转载 memcach高并发数据失效的问题解决方案

memcached一般用于在访问一些性能相对低下的数据接口时(如数据库),为了保证这些数据接口的稳定性,加上memcached以减少访问次数,保证这些数据接口的健壮性。一般memcached的数据都是定时失效的,当数据失效时一般会再次去访问取数据接口,然后将其更新至memcached中。这时就会有一个问题,当某个数据失效时,恰好同时有大量的客户端访问该数据,这时这些客户端都会发现该数据失效,然后都

2013-07-05 10:06:53 1701

转载 mysql explain详解

Mysql Explain 详解一.语法explain 例如: explain select * from t3 where id=3952602;二.explain输出解释+----+-------------+-------+-------+-------------------+---------+---------+-------+------+

2013-06-13 19:28:45 453

转载 浅谈MySQL索引背后的数据结构及算法

摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为四个部分

2013-06-06 17:38:44 653

转载 HashMap和ConcurrentHashMap浅析

hashmap本质数据加链表。根据key取得hash值,然后计算出数组下标,如果多个key对应到同一个下标,就用链表串起来,新插入的在前面。看3段重要代码摘要:a:[java] view plaincopypublic HashMap(int initialCapacity, float loadFactor) {

2013-06-05 18:15:41 679

转载 eclipse对java项目进行打jar包

如果自己的java project中需要引用额外的jar包作为资源文件,那么需要自己自定义配置文件MANIFEST.MF ,内容示例如下:Manifest-Version: 1.0Class-Path: lib/crimson.jar lib/jbcl.jar lib/junit.jar lib/log4j-1.2.13.jar lib/mysql-connector-java-3.1

2013-05-31 14:26:47 1036

netty权威指南第二版源码

netty权威指南第二版源码

2017-06-09

大型网站核心原理与案例分析

大型网站核心原理与案例分析,李智慧编写,阿里资深开发工程师

2016-12-17

coreseek-3.2.14.tar.gz

coreseek源码安装包,进行解压编译安装即可。

2013-06-09

sphinx中文手册

sphinx中文手册,进行了相关api介绍。

2013-06-09

java多线程编程设计模式

学习java多线程的经典书籍,结合实例程序讲解多线程,并介绍相关的线程设计模式,值得大家学习。

2013-06-09

gason api及源码包

google gason的jar包及源码包,另有api文档,对于初用者很有帮助!

2013-04-08

font-chinese安装包

font-chinese安装包,包括了fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm;fonts-chinese-3.02-12.el5.noarch.rpm解决linux中的中文乱码问题

2013-04-08

mysql源码安装包

mysql源码安装包,mysql-5.1.68.tar.gz

2013-04-08

yum 包下载

yum安装包,yum源码rpm包,对于linux系统中如果没有安装yum包的话,执行安装此rpm即可。

2013-04-08

oracle高性能sql调优

此书的oracle高性能sql调整的文档,全是中文讲解很详细,对sql优化的同学会有很大的帮助!

2012-11-13

struts2标签帮助文档

struts2标签帮助文档,能帮助在开发过程中熟悉struts2 标签的用法!

2011-04-02

网页模板布局下载,有源代码

网页模板,里面有大量的素材以及网页的布局版式,实用!

2010-09-04

servlet api

servlet应用程序接口,适合初学者,对于学习servlet原理很重要

2010-06-13

oracle10g-sql帮助文档

oracle初学者的好帮手,里面有很详细的函数和说明,非常实用

2010-05-17

2010系统分析师论文应试技巧及范文

2010系统分析师论文应试技巧及范文,对大家的考试很有帮助!

2010-05-15

汇编实现四则混合运算

利用汇编来实现四则混合运算,有源码。希望对大家的学习有帮助!

2010-05-15

07-08系统分析师答案

07-08年系统分析师答案,对大家的复习备考有帮助

2010-05-15

07-09系统分析师试题及答案

包括了07-09年的系统分析师试题及答案,对系统分析考试很帮助!

2010-05-14

c++实现航空订票系统

c++实现航空订票系统实现了对航班的录入,修改,以及订票功能,利用链表,和文件来实现航空订票系统

2010-04-07

c语言实现可变分区的模拟(最佳适应算法)

利用c语言来实现可变分区的模拟,采用的是最佳适应算法。代码内有详细注释!

2010-04-07

JFreeChar API

JFreeChar的帮助文档,里面有各种类的使用说明,对初学者很有用!

2010-04-07

空空如也

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

TA关注的人

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