- 博客(38)
- 资源 (9)
- 收藏
- 关注
原创 volatile、synchronized、AtomicInteger多线程累加1000个计数的区别
volatile、synchronized、AtomicInteger多线程累加1000个计数的区别
2014-11-25 11:05:11
3001
转载 原子性与可见性
原子性与可见性一、定义1.可见性在多核处理器中,如果多个线程对一个变量(假设)进行操作,但是这多个线程有可能被分配到多个处理器中运行,那么编译器会对代码进行优化,当线程要处理该变量时,多个处理器会将变量从主存复制一份分别存储在自己的片上存储器中,等到进行完操作后,再赋值回主存。(这样做的好处是提高了运行的速度,因为在处理过程中多个处理器减少了同主存通信的次数);同样在单核处理器
2014-11-21 16:38:02
679
转载 string里面的intern()
转自:http://blog.sina.com.cn/s/blog_69dcd5ed0101171h.html
2014-09-02 09:19:15
685
原创 对象的声明周期
创建对象的方式有4种显示地创建对象的方式:1、new语句创建对象2、运用反射,调用java.lang.Class或者java.lang.reflect.Constructor的newInstance()方法3、调用对象的clone()方法4、运用反序列化手段,调用java.io.ObjectInputStream的readObject()方法java虚拟机创建一个对
2013-09-26 21:53:13
584
原创 java中hashcode()和equals()
这阵子工作有点小空,工作忙完了,顺便巩固下基础但很少有人去在意的只是。1、equals()和hashcode()方法都是从object类中继承过来,其中equals方法在object类中的定义如下:public boolean equals(Object obj) { return (this == obj); }大家知道,这个是对两个对象在内存中的地址的比较(两个引用
2013-09-24 17:48:37
631
原创 java里面的transient和volatile
transienttransient是类型修饰符,只能用来修饰字段。在对象序列化的过程中,标记为transient的变量不会被序列化。我们知道,把一个对象写入到文件里面,是要对对象进行序列化的,不然会报错,例如一下,对TestBean这个类进行了序列化,但是对其属性address加了一个transient修饰符,说明这个属性不需要序列化,所以address的值不会写入到文件里面去,
2013-09-18 15:51:37
952
原创 类的初始化时机
前面讲过,java虚拟机只有在程序首次主动使用一个类或接口的时候才会初始化它。只有6种活动被看作是程序对类和接口的主动使用:1、创建类的实例。例如new语句创建实例,或者通过反射、克隆及序列号手段来创建实例。2、调用类的静态方法。3、访问某个类或接口的静态变量或者对该静态变量赋值。4、调用java API中某些反射方法,比如调用Class.forName("Worker")方法,加
2013-09-12 21:48:42
1249
原创 scala里面的drop和dropWhile
drop & dropWhiledrop丢弃前i个元素。var numbers = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)numbers = numbers.drop(5)println(numbers) //返回List(6,7,8,9,10)dropWhile移除前几个匹
2013-09-12 17:17:09
6081
原创 scala里面的partition
partitionpartition根据断言函数的返回值对列表进行拆分。经过partition之后,会返回元组形式。怎么使用元组?点这里:http://blog.youkuaiyun.com/a_yyc1990/article/details/11607399
2013-09-12 17:09:45
1370
原创 scala里面的zip
zipzip把两个列表的元素合成一个由元素对组成的列表里。把多个list合并成包含元组的list里面。list(0)即为:(1,a)所以打印出:1a如果第一个list里面的元素多余第二个list里面的元素,则合成的元素只会是元素少的那一个元素的长度。打印出:List((1,a), (2,b))1a
2013-09-12 17:04:05
2703
原创 scala的option
OptionOption是一个包含或者不包含某些事物的容器。Option本身是泛型,有Some[T]和None两个子类。val v:Option[Any] = map.get(1)Map.get使用option来作为它的返回类型,option的作用是告诉你,我可能不会返回你请求的值。如果在java里面,map.get(3).toSting,如果map里面
2013-09-12 16:44:40
843
原创 scala中的元组(Tuple)
元组(Tuple)元组可以直接把一些具有简单逻辑关系的一组数据组合在一起,并且不需要额外的类。你可以把“ ("made in china",23) " 看作一个数组,nameAndAge._1是获取括号里面的第一个元素,同理,._2是获取第二个元素。别少了点-------------“.”打印结果:
2013-09-12 16:10:04
1235
原创 scala对filter的操作
有时候需要对一个集合进行判断,比如,从1到10里面去查找5这个元素:以上代码可以改成这样:是不是简单很多?以上的:实际上就是:只是代码方便了很多。
2013-09-12 15:26:54
3361
原创 scala里面的for...yield循环
scala里面的for...yield循环:下面那段话的意义就是,for 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。Scala 中 for 循环是有返回值的。如果被循环的是 Map,返回的就是 Map,被循环的是 List,返回的就是 List,以此类推。返回:Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
2013-09-12 15:20:11
1533
原创 scala的cons(::)和(:::)连接符和对List元素的操作
摘自我们公司内网的一位同事的分享:Scala List 独特的 连接运算“::”(cons)和“:::”Scala List 有一种独特的,不同于JAVA的运算符 “::” ,发音为 “cons” ,它的意义如下: x :: xs 表示 结果是 一个 List,它的第一个元素是 x, 它后面跟着一个List xs(跟着这个表xs的所有元素),用 Nil 表示空表。
2013-09-12 12:09:33
7823
转载 java多线程并发(三)(中断线程)
线程的状态在了解如何中断线程之前,先应该弄清楚线程的几种状态:新建状态(New):一个新的线程在被创建之后,在运行(或阻塞)之前的状态。就绪状态(Runnable):当一个线程只要拥有CPU时间片就能运行的时候,这个线程就处于就绪状态。阻塞状态(Blocked):线程还没有死亡,但是由于一些原因不能继续运行,但是还能回到就绪状态。死亡状态(Dead):当
2013-09-11 17:50:49
785
转载 java多线程并发(二)(线程基础)
再来考虑一下前几天发生的事情。因为日本地震海啸以及核爆炸的缘故,有人造谣说,咱国内已经受到了核污染,吃含碘的东西能够减轻核辐射带来的影响。于是就有投机的人在淘宝上开了一家网店,专卖碘片,一块钱一片。生意十分火爆。有很多个买家不断地在买碘片,一直到把钱给用光。买家买碘片的这些钱都打到了卖家的同一个银行账号里。所以,结果就是,买家所有的钱最后都到了卖家的银行账户里,卖家银行账号里的总额就是所有买家在买
2013-09-11 17:30:34
769
原创 java多线程并发(一)(线程基础)
以前一直搞不懂多线程、并发是什么,今天看到了一篇文章,然后百度、谷歌了好些资料,总算有点头绪了。最近开始觉得写技术博客是很好的一个习惯了,有些东西在网上看了之后,只看了一遍,过了阵子,基本上又忘了,这时如果整理下记下来,就算以后忘记了,还能在博客里面找到。好记性不如烂博客(在一篇技术博文上看到的)。以前对JVM内存结构分配不懂,一直以为多个客户端进行访问服务器就是多线程并发,原来我错了,熟
2013-09-11 17:17:13
981
原创 类的生命周期
引言:java虚拟机为java程序提供运行时环境,其中一项重要的任务就是管理类和对象的生命周期。类的生命周期从类被加载、连接和初始化开始,到类被卸载结束。当类出于生命周期中时,它的二进制数据位于方法区内,在堆区内还会有一个相应的描述这个类的Class对象。只有当类处于生命周期中时,java程序才能使用它,比如调用类的静态属性和方法,或者创建类的实例。java虚拟机及程序的生命周
2013-09-10 21:50:08
699
原创 JVM内存参数设置
永久存储区相关参数:-XX:PermSize 应用服务器启动时,永久存储区的初始化内存大小;默认64M。-XX:MaxPermSize 应用运行中,永久存储区域的最大值。为了不消耗扩大JVM永久存储区分配的开销,将此参数和-XX:PermSize这两个值设为相等。堆空间相关参数:-Xms 启动应用时,JVM堆空间的初始值大小;默认值为物理内存的1/64,但小于1G。
2013-09-10 15:43:54
1194
原创 JVM内存结构
JVM包含两个子系统和两个组件。子系统分别是ClassLoader和ExecutionEngine,两个组件是Runtime Data Area和Native Interface,其中,Runtime Data Area中就包含了我们常说的JVM内存。Runtime Data Area又将内存分为不同的区域,用户存储不同的数据:Method Area —— 方法区,被C
2013-09-09 15:39:48
830
原创 java中的builder模式
来自《effective+java中文版》:静态工厂和构造器有一个共同的局限性,都不能很好的扩展到大量的可选参数。如果我们有一个类,表示一个用户的个人信息,有些值是必须的,有些不是必须的。必须的参数:用户名、年龄、性别非必须的参数:身高、住址、体重public class User { private String username; private int ag
2013-09-02 18:05:47
842
原创 java中的静态变量和静态方法
1、java中变量分为静态变量和实例变量;带static关键字的为静态变量,不带static关键字的为实例变量2、java中方法分为静态方法和实例方法;带static关键字的为静态方法,不带static关键字的为实例方法静态变量和静态方法属于类,实例变量和实例方法属于对象。例如public class A { private int i = 0; public static
2013-09-02 16:23:40
1065
转载 ibatis 中 $与#的区别
在sql配置中比如in(#rewr#) 与in ($rewr$)在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如: select * from table where id = #id# ,其中如果字段id为字符型,那么#id#表示的就是'id'类型,如果id为整型,那么
2013-09-02 16:00:33
575
原创 为什么要面向接口编程?有什么好处?
在网上看了一些文章,然后自己做了下整理:1、接口是提高系统之间松耦合的重要手段,接口是用来规范类的,避免类在设计上的不一致2、比如spring的注入,只需要定义一个接口作为内置属性,至于要注入什么样的实现,可以自己来决定,依赖接口类,不依赖实现类 解释:接口A,有多个实现类:A1,A2,A3,用哪种实现我可以自己决定,我也可以用A1,也可以用A2,我想更改实现类,并不需要更改接
2013-09-02 15:40:31
1379
原创 java中的值传递和引用传递
值传递:方法调用时,实际参数把对应的值传递给对应的形式参数,方法执行中形式参数的值的改变不会影响到实际参数的值。比如一个方法:public static void print(int i){ System.out.println(i*2);}我调用print方法,传参数:5 : print(5);这样程序就不会改变这个值了。引用传递:
2013-09-02 15:16:36
655
原创 spring mvc page not found no mapping found for http request with uri
我这里的报错实际情况是:14:02:15,736 WARN [PageNotFound] No mapping found for HTTP request with URI [/spring3MVC/abc/index.do] in DispatcherServlet with name 'spring3MVC'其中,[spring3MVC/abc/index.do]是我请求的路径
2012-06-30 14:07:06
2857
JFreeChart画图 饼状图 单组柱状图 多组柱状图 堆积柱状图 折线图
2012-07-07
javascript组合键
2011-12-26
每天定时执行 指定时间执行程序
2011-08-11
EXCEL导入导出 也可以导入图片和导出图片
2011-08-11
struts2,spring,hibernate整合的所有jar包。
2011-08-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人