分类:Java基础知识

对协程的一些理解

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

阅读全文 »

Java调用Lua

前言 最近一款游戏开发中,客户端基于lua语言开发,为了方便客户端调用原型数据,所有的原型数据都以lua表格的形式存放;对于服务器端的java语言就需要解析出lua中的数据, 转换为java对象。 桥接的选择 网上大致搜索了一下,用的比较广泛的是下面这两款: 1.luajava 官网:http://luaforge.net/projects/luajava/ 2.luaj 官网:http://www.luaj.org/luaj/3.0/README.html 看luajava的官网上支持的lua写的是lua5,lua现在的最新版本已经到5.3了,应该是好久没有更新了,同时也可以看github上…

阅读全文 »

Protostuff序列化分析

前言 最近项目中需要将业务对象直接序列化,然后存数据库;考虑到序列化、反序列化的时间以及生产文件的大小觉得Protobuf是一个很好的选择,但是Protobuf有的问题就是需要有一个.proto的描述文件,而且由Protobuf生成的对象用来作为业务对象并不是特别友好,往往业务对象和Protobuf对象存在一个互相转换的过程;考虑到我们仅仅是将业务对象直接序列化到数据库,发现Protobuf在这种情况下并不是特别的好; 这时候发现了Protostuff,protostuff不需要依赖.proto文件,可以直接对普通的javabean进行序列化、反序列化的操作,而效率上甚至比protobuf还快…

阅读全文 »

Disruptor和LinkedBlockingQueue性能对比以及分析

Disruptor和LinkedBlockingQueue简介 Disruptor是Java实现的用于线程间通信的消息组件,其核心是一个Lock-free(无锁)的Ringbuffer;LinkedBlockingQueue是java.util.concurrent包中提供的一个阻塞队列;因为二者之间有很多相同的地方,所以在此进行一次性能的对比。 压力测试 1.针对LinkedBlockingQueue的压测类 LinkedBlockingQueueTest 实现了一个简单的生产者-消费者模式,一条线程负责插入,另外一条线程负责读取。 LogEvent实体类,Disruptor的压测类中也同样…

阅读全文 »

Netty通过MBean监控流量

Netty流量统计 netty专门提供了一个traffic包用于流量的统计,如下图所示: 分别提供了全局的GlobalTrafficShapingHandler和针对channel的ChannelTrafficShapingHandler,同时提供了TrafficCounter用来记录实时的流量统计。 简单的使用: GlobalTrafficShapingHandler提供的方法trafficCounter()可以用来获取TrafficCounter对象, TrafficCounter提供了常用的一些方法: JMX的MBean JMX即Java Management Extensions(Ja…

阅读全文 »

log4j1,logback以及log4j2性能测试对比

环境 jdk:1.7.0_79 cpu:i5-4570@3.20GHz 4核 eclipse:3.7 操作系统:win7 准备 1.log4j:1.7.21 log4j.xml 2.logback:1.1.7 logback.xml 3.log4j2:2.6.2 log4j2.xml 测试 准备50条线程同时记录1000000条数据,然后统计时间 log4j1和logback的同步和异步分别修改为对应的appender就行了 log4j2的异步方式提供了2中模式: 1.全局开启 设置Log4jContextSelector系统属性为 org.apache.logging.log4j.core….

阅读全文 »

Nginx+Tomcat负载均衡

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好。 准备 nginx:nginx/Windows-1.10.1 http://nginx.org/en/download.html tomcat:apache-tomcat-6.0.45 准备2个tomcat服务器分别命名为: 同时修改server.xml文件中的端口号,有三个端口号需要修改,防止端口冲突: 修改tomcat默认首页:webapps/ROOT/inde…

阅读全文 »

正向代理和反向代理

经常看到代理和反向代理,但是一直没弄明白2者具体有什么区别,看下面2张图来区别一下: 正向代理(或者叫代理):一般指客户这一端,替客户收发请求,使真实客户端对服务器不可见。 反向代理:在服务器机房这一端,替服务器收发请求,也就是说请求和响应都先经过反向代理,使真实服务器对客户端不可见。具有缓存、安全、负载均衡等作用。

阅读全文 »