Fork me on GitHub

Java并发编程之NIO简明教程

问题来源

在传统的架构中,对于客户端的每一次请求,服务器都会创建一个新的线程或者利用线程池复用去处理用户的一个请求,然后返回给用户结果,这样做在高并发的情况下会存在非常严重的性能问题:对于用户的每一次请求都创建一个新的线程是需要一定内存的,同时线程之间频繁的上下文切换也是一个很大的开销。

在Chrome中使用Vim(Surfingkeys)

引言

Surfingkeys是Chrome下的一个仿Vim式快捷键的插件,之前在Chrome下一直使用的是Vimium,最近使用国人开发的Surfingkeys后发现功能和用户体验上都要比Vimium强大很多倍,下面我就分享一下自己使用的心得,即使是之前没有接触过Vim的朋友也可以考虑上手一下这款插件,用熟练之后几乎可以完全放弃鼠标和触摸板了。

实例分析MySQL下的四种事务隔离级别

引言

数据库事务有四种隔离级别:

  • 未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据。
  • 提交读(Read Committed):只能读取到已经提交的数据,Oracle等多数数据库默认都是该级别。
  • 可重复读(Repeated Read):可重复读。在同一个事务内的查询都是事务开始时刻一致的,InnoDB默认级别。在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻读。
  • 串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞。

上面这样的教科书式定义第一次接触事务隔离概念的朋友看了可能会一脸懵逼,下面我们就通过具体的实例来解释四个隔离级别。

图解TCP三次握手与四次分手

引言

TCP三次握手和四次挥手不管是在开发还是面试中都是一个非常重要的知识点,它是我们优化web程序性能的基础。但是大部分教材都对这部分解释的比较抽象,本文我们就利用wireshark来抓包以真正体会整个流程的细节。