java
文章平均质量分 58
tamink2013
这个作者很懒,什么都没留下…
展开
-
JAVA DATE类型
参考这个:http://fengshujuan.iteye.com/blog/465444 yyyy-MM-dd hh:mm:ss ---12小时制yyyy-MM-dd HH:mm:ss---24小时制 以前还真没注意 这些大小写得注意:(大写范围广,小写范围窄,比如 H代表一天的时间,h代表上午或下午的时间)字母 日期或时间元素 表示 示例G Er...原创 2015-06-30 18:20:04 · 66 阅读 · 0 评论 -
integer是有缓存的
public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (...原创 2017-01-09 11:15:03 · 123 阅读 · 0 评论 -
(转) Java Collections.EMPTY_LIST 和 Collections.emptyList()的区别
Collections.EMPTY_LIST返回的是一个空的List。为什么需要空的List呢?有时候我们在函数中需要返回一个List,但是这个List是空的,如果我们直接返回null的话,调用者还需要进行null的判断,所以一般建议返回一个空的List。(编者注:比如,用到list.size(),这个时候会忘记也很麻烦,再判断是否为空。不像循环,肯定会判断是否为空 。所以不要return n...原创 2017-01-20 10:56:02 · 165 阅读 · 0 评论 -
(转)Java for-each循环
从Java5起,在Java中有了for-each循环,可以用来循环遍历collection和array。For each循环允许你在无需保持传统for循环中的索引,或在使用iterator /ListIterator时无需调用while循环中的hasNext()方法就能遍历collection。Java中,for-each循环简化了任何Collection或array的遍历过程,但并不是每个Ja...原创 2017-02-08 10:59:05 · 90 阅读 · 0 评论 -
泛型!
指定了参数类型编译器在编译期间就会帮助你检查存入容器的对象是不是参数类型!不是就会报错!保证了类型安全!性能上没什么影响,因为泛型在运行期间会擦除!就是说用不用类型参数在运行期间编译后的运行代码是一样的!Map map = new HashMap();Map<String,String> map1 =new HashMap<String,String>();System....原创 2017-02-15 14:37:19 · 61 阅读 · 0 评论 -
“类锁”和对象锁
假设我有一个类ClassA,其中有一个方法synchronized methodA(),那么当这个方法被调用的时候你获得就是对象锁,但是要注意,如果这个类有两个实例,比如:ClassA a = new ClassA();ClassA b = new ClassA();那么如果你在a这对象上调用了methodA,不会影响b这个对象,也就是说对于b这个对象,他也可以调用methodA,因为这是两对象...原创 2017-02-15 21:50:34 · 57 阅读 · 0 评论 -
正确使用 volatile 的模式
很多并发性专家事实上往往引导用户远离 volatile 变量,因为使用它们要比使用锁更加容易出错。然而,如果谨慎地遵循一些良好定义的模式,就能够在很多场合内安全地使用 volatile 变量。要始终牢记使用 volatile 的限制 —— 只有在状态真正独立于程序内其他内容时才能使用 volatile —— 这条规则能够避免将这些模式扩展到不安全的用例。 模式 #1:状态标志也许实现 vola...原创 2017-02-16 08:45:46 · 114 阅读 · 0 评论 -
(转)Java中synchronized关键字锁定的内容
synchronized关键字能锁定什么?通常我们锁定的是一个对象或者是一个代码块。其实synchronized还能锁定一些其他内容。 同步分为 同步方法 和 同步块 两种方式。 变量分为 实例变量(不带static的变量) 和 类变量(带static的变量)。 同步锁锁定的内容是什么? 无论你将Synchronized加在方法【...原创 2017-02-16 08:45:55 · 78 阅读 · 0 评论 -
(转)java之用volatile和不用volatile的区别
在当前的Java内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。 要解决这个问题,只需要像在本程序中的这样,把该变量声明为volatile(不稳定的)即可,这就指示JVM,这个变量是不稳定的,每次使用它都到主存中进行读取。一般说来,...原创 2017-02-24 10:38:38 · 88 阅读 · 0 评论 -
(转)为什么volatile不能保证原子性而Atomic可以?
在上篇《非阻塞同步算法与CAS(Compare and Swap)无锁算法》中讲到在Java中long赋值不是原子操作,因为先写32位,再写后32位,分两步操作,而AtomicLong赋值是原子操作,为什么?为什么volatile能替代简单的锁,却不能保证原子性?这里面涉及volatile,是java中的一个我觉得这个词在Java规范中从未被解释清楚的神奇关键词,在Sun的JDK官方文档是这样形...原创 2017-02-24 17:25:51 · 102 阅读 · 0 评论 -
(转)ConcurrentHashMap分段与锁的学习总结
现阶段的学习策略是理解和实践这些知识点,并没有深入分析其原理,但确实精读了许多关于这个主题基础性的资料让我很受益(见参考资料)。哈希表基础1.哈希表是基于数组的数据结构2.通过对关键字的哈希运算实现元素的快速定位3.哈希表的重点是哈希化,哈希化负责把一个大范围的数字转化成一个小范围的数字4.哈希化过程中会产生值冲突,这种情况有多种办法可以解决(开放地址法、链地址法)4...原创 2017-02-25 15:07:42 · 190 阅读 · 0 评论 -
(转)synchronized锁住的是代码还是对象
在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。synchronized既可以加在一段代码上,也可以加在方法上。关键是,不要认为给方法或者代码段加上synchronized就万事大吉,看下面一段代码: public synchronized void test() { ...原创 2017-01-09 11:10:49 · 66 阅读 · 0 评论 -
(转)Java中Synchronized的用法
synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象; 3. 修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象...原创 2017-01-09 11:08:42 · 68 阅读 · 0 评论 -
像指针一样 直接修改值(交换)
由于java设计的原因,在语法层面不能实现,但是能通过AtomicReference类实现。示例代码:import java.util.concurrent.atomic.*;public class HelloWorld{ public static void f1(AtomicReference<Integer> a, AtomicRef...原创 2016-06-02 16:13:23 · 115 阅读 · 0 评论 -
怪事,跟线程有关?
X1,Y1..明明有值,却在方法里为0.0,为何?2016-08-05 16:09:17 · 59 阅读 · 0 评论 -
java的缺点,深有体会 现在
别误解,其实在我的职业生涯中,我已经编写了无数的Java代码;而且,我仍然认为Java一门伟大的(程序)语言。相对于C++和Smalltack,Java已经有了很大的改进;但现在,即使是Java,也已经开始感觉到了其15年的积重。 事实上,在我的经历中,我总是不得不面对Java的设计和规范上的一些错误、缺陷和不足,这些东西,让我的Java程序员生活少有乐趣可言。现在全世界的Java程序...原创 2016-08-05 17:51:01 · 270 阅读 · 0 评论 -
java float vs double
* java当中默认声明的小数是double类型的; * double d=4.0 * 如果声明: * float x = 4.0则会报错,需要如下写法: * float x = 4.0f或者float x = (float)4.0 * 其中4.0f后面的f只是为了区别double,并不代表任何数字上的意义 * * float 内存分配4个字节,占32位,有效小数...原创 2016-09-29 21:06:24 · 75 阅读 · 0 评论 -
JAVA递归 ,得到部门树
public DepartmentUserTreeNode getTree(String location,String name) { List<DepartmentUserTreeNode> depts = deparDao.qryDepts(); DepartmentUserTreeNode rootDept = deparDao.qryRootDept();...2015-11-11 14:16:37 · 511 阅读 · 0 评论 -
(转)Java中的queue和deque
队列(queue)是一种常用的数据结构,可以将队列看做是一种特殊的线性表,该结构遵循的先进先出原则。Java中,LinkedList实现了Queue接口,因为LinkedList进行插入、删除操作效率较高 相关常用方法: boolean offer(E e):将元素追加到队列末尾,若添加成功则返回true。 E poll():从队首删除并返回该元素。 E peek():返回队首元素,但...原创 2016-12-13 14:35:32 · 471 阅读 · 0 评论 -
BigDecimal 转String
BigDecimal 用 String.valueOf() 不能转,会报 java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String 要用toString() 这也太不科学了。BigDecimal 这货很特殊吗?!!...2016-12-30 17:40:51 · 88 阅读 · 0 评论 -
java中的传值与传引用
java函数中的传值和传引用问题一直是个比较“邪门”的问题,其实java函数中的参数都是传递值的,所不同的是对于基本数据类型传递的是参数的一份拷贝,对于类类型传递的是该类参数的引用的拷贝,当在函数体中修改参数值时,无论是基本类型的参数还是引用类型的参数,修改的只是该参数的拷贝,不影响函数实参的值,如果修改的是引用类型的成员值,则该实参引用的成员值是可以改变的,例子如下。 首先是定义改变...原创 2016-12-30 20:37:45 · 90 阅读 · 0 评论 -
工厂、单例、模板 一次结合使用
工厂:/** * 创建各个 单例csvReader的工厂 * @author wj * @date 2017-1-7 * */public class CsvReaderAndPersistFactory { // 定义一个Map用于保存第一次创建对象时的实例 private static final Map<String, Object&...2017-01-07 15:56:27 · 114 阅读 · 0 评论 -
(转)深入理解java中的synchronized关键字
synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行它包括两种用法:synchronized 方法和 synchronized 块。1. synchronized 方法:通过在方法声明中加入 s...原创 2017-01-09 11:04:49 · 69 阅读 · 0 评论 -
(转)java集合--Queue用法
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。在java5中新...原创 2017-02-25 17:56:52 · 71 阅读 · 0 评论