分类:编程语言

HttpClient执行Https请求与分析

Https介绍 HTTPS:为了保证隐私数据能加密传输,采用SSL/TLS协议用于对HTTP协议传输的数据进行加密,也就是HTTPS。 SSL:SSL(Secure Sockets Layer)协议是由网景公司设计,后被IETF定义在RFC 6101中,目前的版本是3.0。 TLS:TLS可以说是SSL的改进版。是由IETF对SSL3.0进行了升级而出现的,定义在RFC 2246,实际上我们现在的HTTPS都是用的TLS协议。 HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息;TLS/SSL中使用了非对称加密,对称加密以…

阅读全文 »

Ivy入门:Eclipse整合Ivy

前言 最近因为来的一家新公司,项目中大量使用了ivy来进行依赖管理,并没有用现在相对主流的Maven;两者可以进行简单的比较,Ivy仅提供依赖管理功能,但是Maven是一个软件项目管理综合工具,能够管理构建、报告、文档,以及根据中心化的信息来管理依赖,Ivy更多的是和Ant一起使用。 Eclipse整合Ivy 1.ivy插件安装 Help->Eclipse Marketplace…输入ivy,如下图所示: 点击安装即可,安装完在Window->Preferences下出现了ivy目录,如下图所示: 2.简单实例 ivy官网地址:http://ant.apache.org/ivy/ …

阅读全文 »

Hessian入门体验与分析

简介 Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能;相比WebService,Hessian更简单、快捷。 官网地址:http://hessian.caucho.com/index.xtp 下面主要针对Hessian入门级使用,以及进行部门源码分析。 简单使用 提供三个模拟块,分别模拟client,server以及被依赖的jar;对应的模块名称分别是:hessianClient,hessianServer以及hessianJar 代码结构如下图所示: 1.hessianJar介绍 hessianJar主要提供被hessianClient和he…

阅读全文 »

Dubbo的一次体验与分析

Dubbo是什么 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案; 其核心部分包含: 远程通讯:提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 集群容错:提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 自动发现:基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 架构图如下:来自官网 Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的…

阅读全文 »

Java Random分析

前言 最近测试经常反应游戏中出现随机的地方,比如:开宝箱,装备的掉落以及属性的随机等,表现的不尽如意;所以开始怀疑我们的随机算法,而我们使用的就是JDK自带的Random类,跟他们解释他们也不太明白,没办法只能以一种更加直观的方式展示给他们看更具有说服力,刚好也可以更加深入的了解一下Random类。 简介 打开Random类的源代码,在类注释中可以看到如下说明: 此类的实例用于生成伪随机数流。此类使用48位的种子,使用线性同余公式 (linear congruential form) 对其进行了修改(请参阅 Donald Knuth 的The Art of Computer Programmi…

阅读全文 »

异步编程RxJava-介绍

前言 前段时间写了一篇对协程的一些理解,里面提到了不管是协程还是callback,本质上其实提供的是一种异步无阻塞的编程模式;并且介绍了java中对异步无阻赛这种编程模式的支持,主要提到了Future和CompletableFuture;之后有同学在下面留言提到了RxJava,刚好最近在看微服务设计这本书,里面提到了响应式扩展(Reactive extensions,Rx),而RxJava是Rx在JVM上的实现,所有打算对RxJava进一步了解。 RxJava简介 RxJava的官网地址:https://github.com/ReactiveX/RxJava, 其中对RxJava进行了一句话描…

阅读全文 »

Java压缩算法性能比较

前言 游戏开发中,经常在玩家进入游戏的时候进行必要的信息初始化,往往这个初始化信息数据包是相对来说还是比较大的,一般在30-40kb左右,还是有必要进行压缩一下再发送消息,刚好前段时间看过,里面列举了一些常用的压缩算法,如下图所示: 是否可切分表示是否可以搜索数据流的任意位置并进一步往下读取数据,这项功能在Hadoop的MapReduce中尤其适合。 下面对这几种压缩格式进行简单的介绍,并进行压力测试,进行性能比较 DEFLATE DEFLATE是同时使用了LZ77算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法,DEFLATE压缩与解压的源代码可以在自由、通用的压缩库z…

阅读全文 »

对协程的一些理解

协程 协程(coroutine)最早由Melvin Conway在1963年提出并实现,一句话定义:协程是用户态的轻量级的线程 线程和协程 线程和协程经常被放在一起比较;线程一旦被创建出来,编写者是无法决定什么时候获得或者放出时间片的,是由操作系统进行统一调度的;而协程对编写者来说是可以控制切换的时机,并且切换代价比线程小,因为不需要进行内核态的切换。 协程避免了无意义的调度,由此可以提高性能,但也因此,程序员必须自己承担调度的责任,同时,协程也失去了标准线程使用多CPU的能力, 但是可用通过多个(进程+多协程)模式来充分利用多CPU。 协程另外一个重要的特点就是:协程是作用在用户态,操作系统…

阅读全文 »