`
文章列表
1, 保证线程安全的三种方法 :a, 不要跨线程访问共享变量b, 使共享变量是 final类型的c, 将共享变量的操作加上同步 2, 一开始就将类设计成线程安全的 , 比在后期重新修复它 ,更容易 . 3, 编写多线程程序 , 首先保证它是正确的 , 其次再考虑性能 . 4, 无状态或只读对象永远是线程安全的 . 5, 不要将一个共享变量裸露在多线程环境下 (无同步或不可变性保护 ) 6, 多线程环境下的延迟加载需要同步的保护 , 因为延迟加载会造成对象重复实例化 7, 对于 volatile 声明的数值类型变量进行运算 , 往往是不安全的 (volatile 只能保证可见性 , ...
原文链接     作者:Jakob Jenkov     译者:airu     校对:丁一 Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。 下面是NIO Buffer相关的话题列表: Buffer的基本用法 Buffer的capacity,position和limit Buffer的类型
在工作中遇到了问题,有一些文件跟现有工程的文件编码方式不同,于是就想到编写代码批量进行转换,刚好,最近再学习python语言,我觉得学好一门语言最好的方式就是实践,所以,决定使用python批量转换文件的编码。   思路就是从一种编码格式转换成另外一种编码。但实际中还是有一种情况,就是在目录中,有些文件是不需要转换的,如果这种时候也统一转换的话,同样会出现乱码,所以这个地方要处理。   #codeing=utf-8 import chardet import sys,os def convertEncoding(to_encode,old_filepath): pr ...
之前有使用过Nginx进行tcp负载均衡,但后来发现nginx总是会跟服务端进行断开连接、断开连接的操作,所以选择一下别的代理进行处理。   写这个的时候,我也只是把haproxy运行成功,而且简单测试了一下,具体适不适合自己的系统还有待测试。   1.下载haproxy: http://haproxy.1wt.eu/ 从主页下载,我使用的是最新版本,haproxy-1.4.24.tar.gz   2.安装haproxy: tar zxvf haproxy-1.4.24.tar.gz cd haproxy-1.4.24 make TARGET=linux26 PREFR ...
闲来无事,就把公司的项目拿来进行集群的学习,虽然都是网上找的方法,但是仍然浪费我不少精力,不过当最后看到结果出来的时候,还是有一些欣喜。   所使用软件包括: Apache-http-2.2.5 mod_jk.so tomcat 7   1.首先对tomcat进行配置 配置内容主要是对tomcat下面conf/server.xml进行修改。 如果是在同一个机器进行部署,需要将tomcat监听的端口进行修改,以便tomcat能够成功启动。 更改为 <Connector connectionTimeout="20000" port="808 ...
对比不同方式生成对象的效率 三种方式生成对象: 1.通过反射 2.通过Cglib里的FastClass 3.直接new 在每个循环100000000生成对象后,得到的 1结果: 15784 ms 2结果: 1574 ms 3结果: 717ms 多次测试之后,结果没有很大差别,由此可见 new的速度是FastClass的两倍,FastClass是反射速度的十倍。     在相同循环100000000次,不生成对象,只获得class,得到结果 通过Class.forName(): 111546 ms 通过FastClass.create(): 90288 ms   ...
 下面简单说下观察者模式是个什么。所谓“观察者”,就是观众,围观群众。但只有围观群众还构不成观察者模式,还需要有“被观察者”。观察者模式由“被观察者”和“观察者”共同构成。一个“被观察者”可能会有0到n ...
socket阻塞与非阻塞,同步与异步 作者:huangguisu   1. 概念理解        在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:
本文更新一个命令。 第一节中提示创建一个项目用archetype:create  create是个被废弃或不被推荐使用的插件,在以后创建项目中请尽量使用archetype:generate 创建一个项目,如下: mvn archetype:generate -DgroupId=com.chongshi.test -DartifactId=hello  -DpackageName=com.chongshi.test -Dversion=1.0 第一节抛出了三个问题,本文将解决前两个 1. 如何创建一个web项目 2. 如何使用jettey容器运行
最近,开发中要用到maven,所以对maven进行了简单的学习。因为有个maven高手在身边,所以,很快就上手了,我这里算是自我总结吧。关于maven是什么东东,请参考其它文章。 ----------------准备工作------------- Jdk  1.5以上java开发环境。 Eclipse IDE 一个。 Maven 3.0.3下载地址: http://maven.apache.org/docs/3.0.3/release-notes.html ----//快速搭建步骤  
上个星期使用java swing做一个客户端界面。   对于我来说,做swing界面最难的就是布局了,很多时候不知道使用哪种布局方式。本来想要使用NetBeans的图形化进行布局,但还是觉得不是特别靠谱。在网上搜索了之后,发现有一个开源的布局方式miglayout,在学习了几天之后,觉得感觉很好。下面我把我做的界面和源码贴给大家。共同学习,共同进步。       
一句话就搞定。(垂直滑动条) ta_frameArea.setCaretPosition(ta_frameArea.getText().length());  
1. MigLayout 初始化的两种方法: MigLayout l = new MigLayout(); MigLayout l = new MigLayout("","","");  主要使用的是以上两种构造函数,第一种无参的就不用介绍了,主要是第二种。  第一个参数可以使用以下语句: wrap + 数字:指定默认在第几个组件后进行换行,如: wrap 2 表示在第二个组件后进行分行。         insets + 数字:指定默认与边界的距离,有两种方式:insets 10 表示四边均为10,insets 1 2 ...

VIM学习笔记

前面一段时间,用了几天的时间,又深入使用了VIM(不仅仅停留在h,j,k,l),下面是一些常用的操作。   2013年8月21日 ------------------------------------------------------------ <Ctrl-v> <Ctrl-d> 在可视化模式下选择到尾部; <Ctrl-a> 将光标放在一个数字上面,该数字会自动加一; <Ctrl-n> <Ctrl-p> 在I-Mode下,自动补全内容; 分屏相关: <Ctrl-w> c 关闭当前窗口; <C ...
这两天比较无聊,随便找点东西进行学习。目标就瞄准了javassist。关于javassist的介绍google一下,这里也不介绍了。   对于某一个类,直接在编译好的.class文件插入一些内容。   比如: package test.param; public class Screen { public void draw(int i , int j){ System.out.println("move to i,j"); } }  对于这个对象,我现在想在输出之前,把i,和j的值输出出来。如何使用javass ...
Global site tag (gtag.js) - Google Analytics