自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 问答 (17)
  • 收藏
  • 关注

原创 ReentrantReadWriteLock获取写锁和锁降级

      由于在AbstractQueuedSynchronizer中用 int state 表示锁状态,ReentrantReadWriteLock要在一个变量上维护读和写2个锁状态,ReentrantReadWriteLock把state 切分为2个部分,高16位表示读,低16位表示写,即 0000000000000000      0000000000000000高...

2016-04-06 15:41:23 298

原创 AbstractQueuedSynchronizer 独占获取锁流程

AbstractQueuedSynchronizer 是一个同步器,不同并发工具类,通过内部类继承AbstractQueuedSynchronizer 方式,维护状态。同步器通过模板模式,子类重写相应方法完成状态的维护。 同步器依赖内部的同步队列(FIFO双向队列)来完成同步状态的管理,当前线程获取同步状态失败时,同步器会将当前线程以及登台状态等信息构造成为一个节点(Node)并将其...

2016-04-05 16:50:48 580

原创 ThreadPoolExecutor流程

ThreadPoolExecutorpublic ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit...

2016-04-01 11:31:00 130

原创 TCP状态转移图

服务端:      通过listen系统调用,进入LISTEN状态,被动等待客户端连接,因此执行的是所谓的被动打开,服务器一旦监听到某个连接请求(收到同步报文段),就会将该连接放入内核等待队列中,冰箱客户端发送带SYN标志的的确认报文段。此时该连接处于SYN_RCVD状态。如果服务器成功的收到客户端发送回的确认报文段,则该连接转移到ESTABLISHED状态。ESTABLISHED状态时连...

2016-03-30 23:10:47 105

原创 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 248

原创 IP分片

       当Ip数据报的长度超过贞的MTU时,将被分片传输。IP头部中的三个字段给IP的分片和重组提供了足够的信息:数据报标识,标志和片偏移。一个IP数据报的每个分片都具有自己的IP头部,它们具有相同的标识值,但具有不同的片偏移,并且除了最后的一个分片外,其他分片都将设置MF标志,此外,每个分片的IP头部的总长度字段将被设置为该片的长度。      以太网帧的MTU是1500字节,因此...

2016-03-29 00:02:38 251

原创 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 724

原创 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 73

原创 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 67

原创 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 71

原创 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 113

递归和非递归实现斐波那契序列

[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 106

原创 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 124

原创 linux 环境调优

 网上看到的,保存一份。。另一份Java应用调优指南之-前菜January 1, 2016 | Filed under 工作 技术每一次成功的调优,都会诞生又一份的调优指南。一些必须写在前面的军规,虽然与Java应用的调优没直接关联,但是测试同学经常不留神的地方,导致应用的优化变成一场测试环境调优的闹剧。 1 独占你的测试机器包括跑JMeter的那些机器。...

2016-01-11 17:57:45 114

原创 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 81

原创 SWT源码分析 (七)

通过前面这些文章,对SWT程序执行的流程作了一些解释。分析SWT的源码,实际上并不困难,只要了解了windows 程序执行的基本步骤。前面对程序的分析,可以分为2部分,一是寻找RegisterClass,CreateWindowEx这些windows api,寻找窗口创建的一系列流程,分析的是如何实现。二是分析SWT对消息处理的封装,因为我们是在写Java程序,Java是OO的,我们不会再...

2011-02-25 00:14:45 440

原创 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 268

原创 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 288

原创 SWT源码分析(四)

接上文。 同理,shell.setSize(200, 100);方法最后调用的是OS.SetWindowPos函数设置窗口的位置: 窗口现在创建完了,还要显示和更新,现在进入shell.open()方法: public void open () { checkWidget (); STARTUPINFO lpStartUpInfo = Display.lpSta...

2011-02-22 23:38:47 188

原创 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 228

原创 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 143

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 410

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除