自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (2)
  • 收藏
  • 关注

原创 当return遇到finally

        猜猜下面java程序分别会有什么样的输出?程序:public class Test { public static void main(String[] args) { System.out.println("=============test1=================="); Sy...

2016-11-25 22:22:17 70

Postman网页调试发送HTTP请求

        Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。        用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网页基本信息,它还可以发送几乎所有类型的...

2016-11-25 18:54:47 498

原创 Netty线程模型详解

一.背景1.Java线程模型的演进a.单线程        时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。        在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能。b.多线程        随着硬件性能的提升,CPU的核数越来...

2016-11-25 01:19:57 143

原创 实例:如何使用Netty下载文件

        使用场景:客户端向Netty请求一个文件,Netty服务端下载指定位置文件到客户端。        本实例使用的是Http协议,当然,可以通过简单的修改即可换成TCP协议。        需要注意本实例的关键点是,为了更高效的传输大数据,实例中用到了ChunkedWriteHandler编码器,它提供了以zero-memory-copy方式写文件。第一步:先写一个H...

2016-11-25 01:05:47 490

原创 实例:Netty 处理TCP协议数据分包问题

一.Netty解决TCP协议数据分包问题思路        我们知道通过TCP协议发送接收数据时,如果数据过大,接收到的数据会是分包的,比如:                            +-----+-----+-----+         发送数据是: | ABC | DEF | GHI |                            +-----+---...

2016-11-24 23:10:38 455

原创 Netty4详解三:Netty架构设计

        通过这一篇文章,我们基本上可以了解到Netty所有重要的组件,对Netty有一个全面的认识,这对下一步深入学习Netty是十分重要的,而学完这一章,我们其实已经可以用Netty解决一些常规的问题了。一.先纵览一下Netty,看看Netty都有哪些组件        为了更好的理解和进一步深入Netty,我们先总体认识一下Netty用到的组件及它们在整个Netty架构中是怎...

2016-11-24 23:05:00 369

原创 Netty4详解二:开发第一个Netty应用程序

        既然是入门,那我们就在这里写一个简单的Demo,客户端发送一个字符串到服务器端,服务器端接收字符串后再发送回客户端。一.配置开发环境1.安装JDK2.去官网下载jar包(或者通过pom构建) 二.认识下Netty的Client和Server        一个Netty应用模型,如下图所示,但需要明白一点的是,我们写的Server会自动处理多客户端请...

2016-11-24 22:50:16 140

原创 Netty4详解一:理解Netty的设计理念NIO

一.初步了解Netty        Netty是一个NIO的编程框架,Netty是非常容易和快速开发出网络应用程序的,它提供了一种全新的形式来方便你编写网络应用:它提供了对一些对复杂问题的抽象,提供了一套非常容易使用的api来把我们的业务逻辑和纯粹处理网络的代码分离开来。因为Betty是基于NIO,因此它的整个API都是异步的。        Netty简化了基于TCP和UDP的编程,...

2016-11-24 22:39:42 287

原创 Netty4.0学习笔记系列之六:多种通讯协议支持

        上文介绍了如何应用Netty开发自定义通讯协议,本文在此基础上进一步深化,研究如何同时支持不同的通讯协议。        此处所谓的通讯协议,指的是把Netty通讯管道中的二进制流转换为对象、把对象转换成二进制流的过程。转换过程追根究底还是ChannelInboundHandler、ChannelOutboundHandler的实现类在进行处理。ChannelInbound...

2016-11-24 00:00:12 116

原创 Netty4.0学习笔记系列之五:自定义通讯协议

        Netty中,通讯的双方建立连接后,会把数据按照ByteBuf的方式进行传输,例如http协议中,就是通过HttpRequestDecoder对ByteBuf数据流进行处理,转换成http的对象。基于这个思路,我自定义一种通讯协议:Server和客户端直接传输Java对象。        实现的原理是通过Encoder把java对象转换成ByteBuf流进行传输,通过Deco...

2016-11-23 23:31:02 185

原创 Netty4.0学习笔记系列之四:混合使用coder和handler

        Handler如何使用在前面的例子中已经有了示范,那么同样是扩展自ChannelHandler的Encoder和Decoder,与Handler混合后又是如何使用的?本文将通过一个实际的小例子来展示它们的用法。        该例子模拟一个Server和Client,两者之间通过http协议进行通讯,在Server内部通过一个自定义的StringDecoder把httpreq...

2016-11-23 23:22:45 108

原创 Netty4.0学习笔记系列之三:构建简单的http服务

        本文主要介绍如何通过Netty构建一个简单的http服务。        想要实现的目的是:        1.Client向Server发送http请求。        2.Server端对http请求进行解析。        3.Server端向client发送http响应。        4.Client对http响应进行解析。        在该实...

2016-11-23 23:13:23 124

原创 Netty4.0学习笔记系列之二:Handler的执行顺序

        Handler在netty中,无疑占据着非常重要的地位。Handler与Servlet中的filter很像,通过Handler可以完成通讯报文的解码编码、拦截指定的报文、统一对日志错误进行处理、统一对请求进行计数、控制Handler执行与否。一句话,没有它做不到的只有你想不到的。        Netty中的所有handler都实现自ChannelHandler接口。按照输...

2016-11-23 23:05:06 170

原创 Netty4.0学习笔记系列之一:Server与Client的通讯

        本文是学习Netty的第一篇文章,主要对Netty的Server和Client间的通讯机制进行验证。        Server与Client建立连接后,会执行以下的步骤:        1.Client向Server发送消息:Are you ok?        2.Server接收客户端发送的消息,并打印出来。        3.Server端向客户端发送消...

2016-11-23 22:53:36 202

mysql隐式转换导致查询语句不能走索引分析

        如下两条SQL语句,一个不走索引,一个走索引。        在这里,为什么第一条语句未加单引号就不走索引,而第二条加单引号的就走索引呢?原因是第一条语句由于类型不匹配,MySQL会做隐式的类型转换,都将其转换为浮点数在比较;而第二条语句因为类型一致,不会转浮点数,就是字符串之间的比较,所以就能正常走索引。一.进一步了解隐式转换对于第一种情况:       ...

2016-11-22 22:24:18 522

原创 在Linux下如何使用openssl生成RSA公钥和私钥对

        在前面,我们用了《JAVA RSA密钥对的生成与验证 》和《Java&keytool生成RSA密钥》方法生成密钥对,其实在Linux操作系统中,用openssl也是很容易生成密钥对的。        在ubuntu上要使用openssl的话需要先进行安装,命令如下:sudo apt-get install openssl        安装完成就可以使用op...

2016-11-22 21:52:40 1396

JAVA RSA密钥对的生成与验证

        在上一篇《Java&keytool生成RSA密钥》中,我们用keytool先生成密钥库和公钥证书,然后通过代码方式获得文件和BASE64串形式的公私密钥对,而其实根本无这么复杂,可直接通过JAVA代码获得公私密钥对。代码如下:package com.bijian.test;import java.io.FileOutputStream;import ja...

2016-11-22 21:21:05 297

Java&keytool生成RSA密钥

        工作中需要使用非对称加密RSA来进行消息摘要生产和验证,但无法通过keytool工具来提取私钥。        那怎么获得私钥、公钥?        以Java为例:通过KeyStore类getEntry() 或者getKey()来提取私钥;通过Certificate类getPublicKey()获取公钥。一.Keytool生成KeyStore文件 -- 生成...

2016-11-22 20:50:12 604

mybatis中操作日期实例分析

        myBatis的sqlmap操作mysql数据库表,不管是查询还是更新,可以和表的字段类型无关,可以是VARCHAR或者TIMESTAMP,而sqlmap中的resultMap对应的jdbcType也可以是TIMESTAMP或者VARCHAR,甚至DTO的属性类型可以是Date类型,也可以是String类型,都不影响实际的操作逻辑。        验证代码如下:Sche...

2016-11-08 22:30:14 537

性能及SQL分析

        测试发现我们的一个接口存在性能问题,经分析是一个SQLMAP中一个SQL有两个层面的业务逻辑,用OR连接,如下所示。select * from table_name where a='111' and b='222' and c='333' or d = '444';        此表中约有近100W的数据量,查看建表语句发现a、b、c是主键,而d字段未建索引。于是我...

2016-11-08 21:47:45 108

原创 JavaScript arguments对象

一.在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。arguments非常类似Array,但实际上又不是一个Array实例。可以通过如下代码得以证实(当然,实际上,在函数funcArg中,调用arguments是不必要写成funcArg.arguments,直接写arguments即可)。Array.prototype.testArg =...

2016-11-06 19:33:20 87

原创 Java泛型

一. 泛型概念的提出(为什么需要泛型)        首先,我们看下下面这段简短的代码:public class GenericTest { public static void main(String[] args) { List list = new ArrayList(); list.add("qqyumidi"); ...

2016-11-06 17:39:12 75

java UUID

        UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。UUID 的目的,是让分布式系统中的所有元素,都能有唯...

2016-11-06 15:15:51 70

随机生成指定长度的字符串

        在工作中,需要随机产生数据库中的字符,以免主键冲突或者违反唯一性约束,特简单写了一个并在此记录一下,在这里产生的方式主要有两种,一种方法是通过随机产生一个个字符,另一种方法是通过UUID方式生成。        代码如下所示:package com.bijian.test;import java.util.Random;import java.util.UU...

2016-11-06 14:44:05 1323

Java字符串分隔方法split实践

        在工作中,有字符串分隔很自然也一直用String的split方法,但直到今天,我竟然踩到了一个坑。一.正常的分隔,分隔符是“:”package com.bijian.test;import java.util.List;import com.google.common.base.Splitter;public class SplitTest {...

2016-11-02 20:15:17 299

Git在Eclipse中的邮箱配置不对导致无法提交

        自从公司将Git LIB做了迁移后,在Eclipse中提交的代码无法正常提交的公司的Git LIB,提示是邮箱地址不对,仔细一看,地址确实不对。        经分析和验证是如下邮箱地址不对导致的,修改正确就可以正常提交。        但,我总不对每次提交前都做修改吧?在Preferences>Team>Git>Configuration下,Add E...

2016-11-02 19:37:53 502

互联网短信网关接口协议

中国移动互联网短信网关接口协议China Mobile Point to Point cmpp3.0

2010-03-22

空空如也

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

TA关注的人

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