- 博客(22)
- 问答 (17)
- 收藏
- 关注
原创 ReentrantReadWriteLock获取写锁和锁降级
由于在AbstractQueuedSynchronizer中用 int state 表示锁状态,ReentrantReadWriteLock要在一个变量上维护读和写2个锁状态,ReentrantReadWriteLock把state 切分为2个部分,高16位表示读,低16位表示写,即 0000000000000000 0000000000000000高...
2016-04-06 15:41:23 328
原创 AbstractQueuedSynchronizer 独占获取锁流程
AbstractQueuedSynchronizer 是一个同步器,不同并发工具类,通过内部类继承AbstractQueuedSynchronizer 方式,维护状态。同步器通过模板模式,子类重写相应方法完成状态的维护。 同步器依赖内部的同步队列(FIFO双向队列)来完成同步状态的管理,当前线程获取同步状态失败时,同步器会将当前线程以及登台状态等信息构造成为一个节点(Node)并将其...
2016-04-05 16:50:48 604
原创 ThreadPoolExecutor流程
ThreadPoolExecutorpublic ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit...
2016-04-01 11:31:00 158
原创 TCP状态转移图
服务端: 通过listen系统调用,进入LISTEN状态,被动等待客户端连接,因此执行的是所谓的被动打开,服务器一旦监听到某个连接请求(收到同步报文段),就会将该连接放入内核等待队列中,冰箱客户端发送带SYN标志的的确认报文段。此时该连接处于SYN_RCVD状态。如果服务器成功的收到客户端发送回的确认报文段,则该连接转移到ESTABLISHED状态。ESTABLISHED状态时连...
2016-03-30 23:10:47 127
原创 tcp连接建立和关闭过程
机器A(192.168.1.107) telnet 机器B(192.168.1.108)sudo tcpdump -i enp0s3 -nt '(src 192.168.1.107 and dst 192.168.1.108) or (src 192.168.1.108 and dst 192.168.1.107)' 抓包 IP 192.168.1.107.43286 > ...
2016-03-30 00:02:56 274
原创 IP分片
当Ip数据报的长度超过贞的MTU时,将被分片传输。IP头部中的三个字段给IP的分片和重组提供了足够的信息:数据报标识,标志和片偏移。一个IP数据报的每个分片都具有自己的IP头部,它们具有相同的标识值,但具有不同的片偏移,并且除了最后的一个分片外,其他分片都将设置MF标志,此外,每个分片的IP头部的总长度字段将被设置为该片的长度。 以太网帧的MTU是1500字节,因此...
2016-03-29 00:02:38 288
原创 java阻塞队列介绍(jdk 1.8)
BlockQueue提供的相关操作和特点:方法/处理方式抛出异常返回特殊值一直阻塞超时退出插入add(e)offer(e)put(e)offer(e,time,unit)删除remove()poll()take()poll(t...
2016-03-15 20:18:26 750
原创 LinkedList源码(1.8)
1 LinkedList() 没有任何操作,空链表实际节点:private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node&l...
2016-03-14 23:45:49 88
原创 java 线程中断
import java.util.concurrent.TimeUnit;public class TestInterrupted { public static void main(String[] args) throws Exception { Thread t1 = new Thread(new TestRunner()); Thread t2 = new Th...
2016-03-14 23:13:44 82
原创 ArrayList 源码(1.8)
1 new ArrayList() 时,将内部DEFAULTCAPACITY_EMPTY_ELEMENTDATA赋值给 elmentData数组。 2 add(E e)时,调用ensureCapacityInternal(size +1),此时size 为0,minCapacity为10,(DEFAULT_CAPACITY为10,取DEFAULT_CAPACITY和minCapacity之间...
2016-03-13 23:16:44 85
原创 java实现base64编码
[code="java"]import java.util.ArrayList;import java.util.List;import org.apache.commons.codec.binary.Base64;public class MyBase64 { public static void main(String[] args) { // TODO ...
2016-03-02 20:22:22 138
递归和非递归实现斐波那契序列
[code="java"]package com.edgar;public class TestFibonacci { public static void main(String[] args) { // TODO Auto-generated method stub long start1 = System.currentTimeMillis(); Sys...
2016-01-28 14:44:37 124
原创 tomcat 参数
-Djava.util.logging.config.file=/home/admin/secdemon/.default/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dcatalina.vendor=alibaba -Djava.security.eg...
2016-01-19 15:02:28 145
原创 linux 环境调优
网上看到的,保存一份。。另一份Java应用调优指南之-前菜January 1, 2016 | Filed under 工作 技术每一次成功的调优,都会诞生又一份的调优指南。一些必须写在前面的军规,虽然与Java应用的调优没直接关联,但是测试同学经常不留神的地方,导致应用的优化变成一场测试环境调优的闹剧。 1 独占你的测试机器包括跑JMeter的那些机器。...
2016-01-11 17:57:45 134
原创 javascript变量作用域
<html><head><script> function f(){ a = 1; //全局变量a赋值为1 var b = 2; 局部变量b赋值为2 } try{ alert(a); } catch(e){ alert(e.message); //变量a未定义 } f(); //调用...
2012-11-25 14:44:49 108
原创 SWT源码分析 (七)
通过前面这些文章,对SWT程序执行的流程作了一些解释。分析SWT的源码,实际上并不困难,只要了解了windows 程序执行的基本步骤。前面对程序的分析,可以分为2部分,一是寻找RegisterClass,CreateWindowEx这些windows api,寻找窗口创建的一系列流程,分析的是如何实现。二是分析SWT对消息处理的封装,因为我们是在写Java程序,Java是OO的,我们不会再...
2011-02-25 00:14:45 491
原创 SWT源码分析 (六)
第一篇文章中,有一个问题我没有解释,在Display中的runDeferedEvents方法中: boolean runDeferredEvents () { boolean run = false; /* * Run deferred events. This code is always * called in the Display's thread so it m...
2011-02-24 22:33:28 290
原创 SWT源码分析(五)
先看程序: package com.edgar;import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;class TestMultBut...
2011-02-24 17:08:15 325
原创 SWT源码分析(四)
接上文。 同理,shell.setSize(200, 100);方法最后调用的是OS.SetWindowPos函数设置窗口的位置: 窗口现在创建完了,还要显示和更新,现在进入shell.open()方法: public void open () { checkWidget (); STARTUPINFO lpStartUpInfo = Display.lpSta...
2011-02-22 23:38:47 210
原创 SWT源码分析(三)
一个基本的Windows C程序: #include <windows.h>#include <stdio.h>LRESULT CALLBACK WinSunProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wPa...
2011-02-22 22:58:53 277
原创 SWT源码分析(二)
继续上次的。 上次程序中的部分代码: Text hello = new Text(shell, SWT.MULTI); hello.addMouseListener(new MouseListener() { @Override public void mouseUp(MouseEvent e) { // TODO Auto-generat...
2011-02-21 14:45:05 159
SWT源码分析 (一)
阅读本文需要知道搭建swt的开发环境,对SWT有基本的了解,最好对Windows api也有所了解,还要稍微了解一下JNI。 HelloSWT是一个基本的SWT程序,当点击输入框的时候,会弹出一个MessageBox。 import org.eclipse.swt.SWT;import org.eclipse.swt.events.MouseEvent;impo...
2011-02-21 14:44:08 457
空空如也
2个系统之间的数据交互,servlet和web service 哪个好?
2012-12-26
这个sql怎么写?
2012-11-13
TCP怎么传文件比较好?
2012-09-16
项目应该怎么划分子项目?
2012-08-23
一个礼拜弄不好Eclipse maven插件。
2012-08-08
项目怎么实现“模块化”部署?
2012-06-27
flex开发的疑惑,flex只是用来做界面的?
2012-05-18
没有美工,2,3个人的项目,怎么能快速的开发页面?
2012-03-19
昨天弄到半夜,Spring2.5 Ibatis2.3 注解注入,配置事务管理不成功
2012-03-14
什么是单元测试
2012-03-06
什么场景需要做数据库(mysql)集群?
2012-03-05
关于负载均衡
2012-01-30
日志流水表应该怎么建索引?
2012-01-09
这种情况应该怎么设计表结构? 有个“抽象类”。
2011-11-16
实际工作中,什么场景会用到多线程开发?
2011-05-10
什么情况下会用EJB?
2011-03-11
写了一个无刷新聊天室,遇到一些问题!!
2009-08-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人