- 浏览: 60774 次
- 性别:
- 来自: 杭州
最新评论
-
dxqrr:
确实不是因为volatile 关键字的原因
AtomicInteger在实际项目中的应用 -
紫藤萝:
ydm305365 写道看这篇文章的同仁,请不要被本文的作者误 ...
AtomicInteger在实际项目中的应用 -
ydm305365:
AtomicInteger之所以能够实现原子递增,并不是因为使 ...
AtomicInteger在实际项目中的应用 -
ydm305365:
看这篇文章的同仁,请不要被本文的作者误导,使用volatile ...
AtomicInteger在实际项目中的应用 -
cha_bill:
你这个类不是线程安全的类,虽然你用了AtomicInteger ...
AtomicInteger在实际项目中的应用
文章列表
重构一之将属性转化为值对象
- 博客分类:
- java项目构建
记得当初在写项目,其实我已经这样做了,但不知道这就是重构,具一个简单的例子吧。
比如我们写一个order订单模型吧,这个模型里面有tel这个属性。
class Order {
private String orderId;
private String tel;
...
}
刚
开始写项目可能业务上没有需求,所以我们就把tel作为一个属性在order里面存在,但是后来,我们发现业务的复杂性不断提高,对于我们系统的处理提出
了要求,其实大多时候系统的复杂度和设计都是源于业务的,假如现在业务有这样的需求,需要知道这个tel的区号,它的类型,是移动,联通还是 ...
HTTP协议的一些小技巧
- 博客分类:
- TCP/IP
如何用Telnet模拟HTTP协议
打开运行,输入cmd,然后再输入telnet www.baidu.com 80 注意:80这个端口号不能省,因为telnet缺省的端口号是23。
cmd窗口会暂时的变成黑屏(黑屏的原因是,telnet默认是关闭命令行回显功能的,可以进入telnet命令行,执行set localecho打开回显功能就OK),然后按ctrl+],屏幕出现了telnet的命令行,再按回车,屏幕又出现黑屏,没事儿,不用担心
现在直接在键盘输入GET /test.html HTTP/1.1 就会模拟GET方式请求服务器,然后下面会显示相关的回复的报文
注意好多网站的超时 ...
maven管理项目真的很方便
- 博客分类:
- java项目构建
在大学的时候,记得那时候做项目,都是用eclipse新建一个工程,然后导入相应的Jar包到lib目录下,对外提供的服务,需要使用jar -cvfm ***来进行打包,自己建包写单元测试,整个项目引用开源的Jar包,外部的服务,都要手工去添加jar包,最后管理上很混乱,另外新建的工程只能按照eclipse给出的目录结构,不够灵活。
工作了,接触到maven,感觉很方便,需要外部的jar包,只需要在pom.xml里面加个<dependency>依赖就可以了,使用maven eclipse:eclipse就会自动去关联相应的jar包,按照它们的依赖关系,将整个工程转化为eclips ...
session和cookie到底是怎么回事
- 博客分类:
- TCP/IP
而对于web应用程序,是通过http协议来传输数据的,HTTP协议又是无状态的,所以当http请求交毕,客户端与服务端的连接就会断开,由于http协议是无状态的,所以又无法通过连接来追踪会话信息,所以就引入了cookie来弥补这一不足 ...
AtomicInteger在实际项目中的应用
- 博客分类:
- java
今天写代码,尝试使用了AtomicInteger这个类,感觉使用起来很爽,特别适用于高并发访问,下面贴一个简单的例子:
CashierContext类部分代码:
private Map<String, AtomicInteger> counter = new HashMap<String, AtomicInteger>();
private void initCounter() {
counter.put("cvm", new AtomicInteger(0));
}
//被调用一次自动+1
...
stone 的 log4j配置详解
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。
1. 配置文件
Log4J配置文件的基本格式如下:
[log4j配置详解 - stone - stonexmx 的博客] #配置根Logger
[log4j配置详解 - stone - stonexmx 的博客] log4j.rootLogger = [ level ] , appenderNam ...
java.lang.RuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: org.xml.sax.SAXParseException: The markup in the document preceding the root element must be well-formed.
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConf ...
java.lang.RuntimeException: Error occurred. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: org.xml.sax.SAXParseException: The processing instruction must begin with the name of the target.
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser ...