Archive for the ‘ 本站原创 ’ Category

阿里感悟(十四)-如何带新员工

Teacher and Students. Dude X12 the students and Teacher in class作者:方腾飞  本文首发于并发网

引言

在阿里,每一位新员工进来之后都会有一位导师,导师一般都是团队中非常优秀的员工。有些部门可能不叫导师了,而是叫师兄,可能更亲切,但是我觉得导师更贴切。

导师指导新员工的过程,我觉得应该是一个PDCA的过程,即计划,执行,检查和总结。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 阿里感悟(十四)-如何带新员工

JSON数据乱码问题

背景
程序员一提到编码应该都不陌生,像gbk、utf-8、ascii等这些编码更是经常在用,但时不时也会出个乱码问题,解决这个问题的方法大部分都是先google和baidu一下,最后可能在某个犄角旮旯里找到一点信息,然后就机械的按部就班的模仿下来,结果问题可能真就迎刃而解了,然后就草草了事,下回遇到相似的问题,可能又是重复上面的过程。很少有人有耐心去花精力弄明白这写问题的根本原因,以及解决这些问题的原理是什么。这篇文章就是通过一个实际案例,试着去讲清楚什么是编码,乱码又是怎么产生的,以及如何解决。该案例是从lua_cjson.c这个库开始的,对这个库不熟悉也没关系,也不需要熟悉它,我们只是借用它来说明乱码问题,只需要跟着文章的思路走就可以。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: JSON数据乱码问题

容错技术介绍

常见的增强鲁棒性机制的介绍一起其他比较有效地系统检测缺陷方法。下载本文PDF文档
容错的目标是降低或者最小化故障对系统可用性、可靠性、安全性、持续性等得影响。在软件容错中,常常使用fault(缺陷),error(错误),failure(故障)来表示系统异常的由来。系统缺陷在某种特定环境下被激活,到至系统产生错误,系统错误运行是的是的系统发生某种故障Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 容错技术介绍

《Java并发编程从入门到精通》显示锁Lock和ReentrantLock

javaC作者:张振华    购买链接:天猫商城  JD商城  当当书店

 

显示锁Lock和ReentrantLock

Lock是一个接口提供了无条件的、可轮询的、定时的、可中断的锁获取操作,所有加锁和解锁的方法都是显式的。包路径是:java.util.concurrent.locks.Lock。核心方法是lock(),unlock(),tryLock(),实现类有ReentrantLock, ReentrantReadWriteLock.ReadLock, ReentrantReadWriteLock.WriteLock。

Read more

Java8中CAS的增强

几天前,我偶然地将之前写的用来测试AtomicInteger和synchronized的自增性能的代码跑了一下,意外地发现AtomicInteger的性能比synchronized更好了,经过一番原因查找,有了如下发现:

在jdk1.7中,AtomicInteger的getAndIncrement是这样的:

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java8中CAS的增强

并发网2014.11月阅读量Top10

ICON4又到了月末,并发网11月Top10的阅读量的文章送到,希望各位客官笑纳!有任何意见和建议,欢迎告诉我们,我们在努力!~

  • Top1 JAVA面试700问(一)

    Java环境中的字节码是什么?由Java 编译器生成的一种代码。由JVM生成的一种代码,Java源文件(Java Source File)的别名,一种写在类的实例方法中的代码,答案……(1502人阅读)

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 并发网2014.11月阅读量Top10

Java锁的种类以及辨析(三):阻塞锁

下载作者:山鸡

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java锁的种类以及辨析(三):阻塞锁

Java锁的种类以及辨析(二):自旋锁的其他种类

下载

作者:山鸡

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java锁的种类以及辨析(二):自旋锁的其他种类

Tomcat-connector的微调(3): processorCache与socket.processorCache

tomcat在处理每个连接时,Acceptor角色负责将socket上下文封装为一个任务SocketProcessor然后提交给线程池处理。在BIO和APR模式下,每次有新请求时,会创建一个新的SocketProcessor实例(在之前的tomcat对keep-alive的实现逻辑里也介绍过可以简单的通过SocketProcessorSocketWrapper实例数对比socket的复用情况);而在NIO里,为了追求性能,对SocketProcessor也做了cache,用完后将对象状态清空然后放入cache,下次有新的请求过来先从cache里获取对象,获取不到再创建一个新的。

这个cache是一个ConcurrentLinkedQueue,默认最多可缓存500个对象(见SocketProperties)。可以通过socket.processorCache来设置这个缓存的大小,注意这个参数是NIO特有的。

接下来在SocketProcessor执行过程中,真正的业务逻辑是通过一个org.apache.coyote.Processor的接口来封装的,默认这个Processor的实现是org.apache.coyote.http11.Http11Processor。我们看一下SocketProcessor.process(...)方法的大致逻辑:

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Tomcat-connector的微调(3): processorCache与socket.processorCache

Tomcat-connector的微调(2): maxConnections, maxThreads

1) 最大连接数

tomcat的最大连接数参数是maxConnections,这个值表示最多可以有多少个socket连接到tomcat上。BIO模式下默认最大连接数是它的最大线程数(缺省是200),NIO模式下默认是10000,APR模式则是8192(windows上则是低于或等于maxConnections的1024的倍数)。如果设置为-1则表示不限制。

在tomcat里通过一个计数器来控制最大连接,比如在Endpoint的Acceptor里大致逻辑如下:

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Tomcat-connector的微调(2): maxConnections, maxThreads

Tomcat-connector的微调(1): acceptCount参数

对于acceptCount这个参数,含义跟字面意思并不是特别一致(个人感觉),容易跟maxConnections,maxThreads等参数混淆;实际上这个参数在tomcat里会被映射成backlog:

static {
    replacements.put("acceptCount", "backlog");
    replacements.put("connectionLinger", "soLinger");
    replacements.put("connectionTimeout", "soTimeout");
    replacements.put("rootFile", "rootfile");
}

backlog表示积压待处理的事物,是socket的参数,在bind的时候传入的,比如在Endpoint里的bind方法里:

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Tomcat-connector的微调(1): acceptCount参数

云架构和openstack的思考

作者:罗立树

最近在负责公司内部私有云的建设,一直在思考怎么搞云计算,怎么才能够把云架构设计得好一些。

本文章主要内容:

1. 行业生态

2. 从需求角度看云

3. 云计算概述

4. 云建设的关键问题

5. 私有云架构规划
Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 云架构和openstack的思考

Tomcat对keep-alive的实现逻辑

Tomcat的connector实现逻辑蛮复杂的,有很多种状态总记不住,每次遇到网络相关的问题都要翻一遍代码,这次结合一个案例看看tomcat的三种connector的实现方式。

这个案例在毕玄的blog里也提到了,背景是某应用上游有个用c写的模块与server端tomcat进行http通讯,这个应用tomcat配置的connector是apr模式。之前一直运行的很稳定,但一次前端扩容后,导致后端的tomcat全部阻塞在下面的堆栈上:

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Tomcat对keep-alive的实现逻辑

华东地区scala爱好者聚会(2014上海)

感谢看处方汪院长烨明,为这次活动提供了场地和零食,去年在上海的scala聚会也是看处方的汪院长发起的。这次聚会人比上次略微多一些了,而且整体水平是不断提升的。

聚石分享了来往使用scala构建通讯的一些经验,来往的IM部分采用自己的协议(有些类似spdy,要简单很多),在协议网关的实现上主要使用scala、akka,他主要分享了这个过程中踩过的一些坑。

诺铁的分享是scala集合部分,这部分内容是小中见大的,有部分内容来自《scala in depth》(顺便提一下他翻译的这本书快要出版了)。整个ppt很清晰,把Vector的细节讲的比较透,另外还提到Set的一个细节是继承自(T)=>Boolean这个函数类型,也就是contains方法,比如Set(1,2,3)(1)将返回true,这种设计确实怪异,容易误解。 Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 华东地区scala爱好者聚会(2014上海)

面向GC的Java编程

感谢同事【沐剑】的投稿

Java程序员在编码过程中通常不需要考虑内存问题,JVM经过高度优化的GC机制大部分情况下都能够很好地处理堆(Heap)的清理问题。以至于许多Java程序员认为,我只需要关心何时创建对象,而回收对象,就交给GC来做吧!甚至有人说,如果在编程过程中频繁考虑内存问题,是一种退化,这些事情应该交给编译器,交给虚拟机来解决。

Read more

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 面向GC的Java编程

return top