- 博客(17)
- 收藏
- 关注
原创 Linux 网络通信
客户端TCP状态迁移:CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED服务器TCP状态迁移:CLOSED->LISTEN->SYN_RECV ->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED各个状态的意义如下:LISTEN - 侦听来自远方...
2014-08-28 09:12:53
144
原创 java NIO 中 flip rewind clear的区别
对缓冲区的读写操作首先要知道缓冲区的下限、上限和当前位置。下面这些变量的值对Buffer类中的某些操作有着至关重要的作用:limit:所有对Buffer读写操作都会以limit变量的值作为上限。position:代表对缓冲区进行读写时,当前游标的位置。capacity:代表缓冲区的最大容量(一般新建一个缓冲区的时候,limit的值和capacity的值默认是相等的)。flip、re...
2014-08-16 17:48:01
173
原创 kestrel 源码分析之四 Journal消息持久化类
上文我们看到PersistentQueue类的实现,它就代表每个消息队列在服务其中的实现,另外我们会看到每个PersistentQueue类包含一个Journal对象,该对象主要是负责队列的持久化操作。对于文件的读写我们用Java NIO来实现。下面我们来看一看主要的几个方法[code="java"]def fillReadBehind(gotItem: QItem => Unit)(go...
2014-07-06 00:19:39
278
原创 kestrel 源码分析之三 PersistentQueue对应一个内存中的队列
PersistentQueue类主要用于在内存中维护一个队列,该类是Kestrel的核心类,是真正对于一个队列的维护。我们看到上文中QueueCollection中主要是调用下面的setup方法,下面我们看看setup方法到底做了什么[code="java"]def setup() { synchronized { queueSize = 0 repl...
2014-07-05 23:14:07
235
原创 kestrel 源码分析之二 QueueCollection消息队列管理
前一篇已经对Kestrel的启动类进行了说明,我们看到在启动类中定义了一个QueueCollection,这个类主要用在内存中维护用户定义的队列。[code="java"]def loadQueues() { Journal.getQueueNamesFromFolder(path) map { queue(_) } }def queue(name: String)...
2014-07-05 23:12:27
182
原创 kestrel 源码分析之一 综述
Kestrel 是Twitter内部使用的,用scala语言实现的一个消息队列中间件。而且核心代码只用了两千多行,能够支持事务,并且支持消息的持久化,Kestrel底层的通信是通过netty实现的,支持memcached协议。下面我们来分析一下kestrel的几个核心实现类,并讨论一下它是如何支持事务和消息的持久化。而Kestrel的消息的持久化是通过Java NIO实现。下面是Kestr...
2014-07-05 17:22:06
447
原创 maven pom之增与减的平衡
重构是广大开发者再熟悉不过的技术,在Martin Fowler的《重构——改善既有代码的设计》一书中,其定义为“重构(名词):对软件内部结构的一种调整,目的是在不改变软件之可察行为前提下,提高其可理解性,降低其修改成本.”以及“重构(动词):使用一系列重构准则(手法),在不改变软件之可察行为前提下,调整其结构.”。重构能够改善软件设计,使代码更易读,更容易找出bug,并帮助你更快速地编码。较之于一...
2013-07-16 11:59:40
121
原创 maven生成可执行jar包
1.修改pom.xml增加如下内容 org.apache.maven.plugins maven-jar-plugin 2.4 true lib/ com.syswar...
2013-07-15 22:57:33
410
原创 Maven构建时出现miss Tools.jar的解决方法
Java代码Missing: ---------- 1) com.sun:tools:jar:1.5.0 Try downloading the file manually from the project website. Missing:----------1) com.sun:tools:jar:1.5.0 Try downloading the...
2013-06-03 10:24:16
339
原创 java 中map 与线程安全问题
java5的java.util包提供了大量集合类。其中最常用的集合类有List、Set、Map等。这篇文章主要介绍其中的Map。首先,来看下java.util包中Map相关的集合类的类图(见附件中图1)。接口Map是整个类图的跟,Map往下又提供了两个接口:ConcurrentMap和SortedMap。ConcurrentMap是java5中新增的线程安全的Map接口;而SortedMap则...
2013-05-22 17:33:05
395
ibatis中selectKey的用法与源码
最近用到插入oracle数据库时,主键id是sequnce自动生成,具体写法如下对于oracle: select SEQ_USER_ID.nextval as id from dual insert into user (id,name,passw...
2012-12-04 21:17:54
464
maven多项目pom文件
在一个企业级多项目的maven项目中,顶层的pom中会同时含有dependencyManagement和dependencies项,它们之间的区别是什么??顶层 pom 中的 dependencies 与 dependencyManagement 中的 dependencies 元素有一个重要的区别: dependencyManagement 中的 dependencies 元素只...
2012-05-29 22:17:53
719
原创 如何查看线上日志
一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地; 与ssh有关的两个命令可以提供很方便的操作: sz:将选定的文件发送(send)到本地机器 rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器(receive)...
2012-05-24 11:01:37
245
原创 基于maven插件的配置管理
[size=medium][/size]对于java程序员来说各种各样的配置文件是司空见惯的,比如spring的bean配置,struts的action配置等等。有些配置会随着运行环境的变化而各不相同,最典型的就是jdbc驱动的配置,在开发环境可能链接到开发本地的数据库,测试环境则有一套测试专用的数据库环境,线上的生产环境也会有一套数据库,如果一个应用要部署到多个idc中,那这些配置又有可能各不相...
2012-05-23 22:33:43
239
原创 maven仓库配置
[size=medium]什么是Maven仓库在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文件,如log4j.jar,junit.jar等等。每建立一个项目,你都需要建立这样的一个/lib目录,然后复制一对jar文件,这是很明显的重复。重复永远是噩梦的起点,多个项目不共用相同的jar文件,不仅会造成磁盘...
2012-05-23 22:30:03
102
原创 关于truncate和delete的区别
truncate 是DDL,用于清空表中的数据,因为是DDL语言所以不能够回滚,并且不触发trigger。具体使用方式:TRUNCATE TABLE emp;delete 是DML,用于where条件的清空数据,当没有where时清空所有数据。因为是DML语言所以可以回滚,并且在执行过程中触发trigger。具体使用方式为:DELETE FROM emp WHERE job = 'CL...
2012-05-23 14:35:11
140
原创 索引失败原因
where 条件的区分度太小导致索引失败 原因:基于cost成本分析(oracle因为走全表成本会更小):查询小表,或者返回值大概在10%以上失效原因: 索引失效 1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上没有使用引导列 3) 查询的数量是大表的大部分,应该是30%以上。 4) 索引本身失效 5) 查询条件使用函数在索引列上(见12...
2012-05-23 14:27:14
652
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人