复制菜单树形结构信息需求描述通过分组菜单对某一项进行复制操作,最后生成一个结构和序号完全一样的新树形分组。代码实体类Grouppublic class Group { private String id; private String name; private String parentId; private Integer order; priva...
Java反射技术简介一、前言1.1 Java程序运行流程相信大家在初学Java时都听过两个词:==编译时异常==和==运行时异常==。编译时异常:在Java通过编译器由.Java文件编译成.class的字节码文件时出现的语法上的异常。运行时异常:通过Java解释器加载进内存出现的如内存溢出、数组角标越界等异常。1.2 正射和反射正射:发生在Java代码编译时期,代码在编译时期就已经知道需要操...
【转载】Redis设置过期时间注意事项前言用过Redis的应该知道,Redis的每个key都可以设置一个过期时间,当达到过期时间的时候,这个key就会被自动删除。但是有时候我们发现设置过过期时间的key并没有我们设置的时间点失效。这里我们来详细聊一下有关过期时间的问题。一、设置过期时间需要注意的事项1、DEL/SET/GETSET等命令会清除过期时间在使用DEL、SET、GETSET等会覆盖...
Java集合相关知识总结1. List集合:有序,可以重复的集合List list1 = new ArrayList():底层数据结构是数组,查询快,增删慢;线程不安全,效率高List list2 = new LinkedList():底层数据结构是链表,查询慢,增删快;线程不安全,效率高List list3 = new Vector():底层数据结构是数组,查询快,增删慢;线程安全,效率低...
isEmpty和isBlank区别前言小编在刚接触Java时一般是用equals方法来进行判断是否为空,有点笨拙,效果还不是太好,现在在项目中大家一般都是用StringUtils类下的isEmpty和isBlank进行空值判断,那么它们又有什么区别呢?一、通过源码比较public static boolean isEmpty(String str) { return str == n...
HashMap、Hashtable、ConcurrentHashMap的原理与区别前言本篇简单讲述HashMap、Hashtable、ConcurrentHashMap的原理,并对它们之间的区别做一个简单对比,并不从源码层面上做讲解一、基础概念HahTable1.继承于Dictionary,现了Map、Cloneable、java.io.Serializable接口2.底层是数组+链表实现,...
集合类不安全之并发修改异常ArrayList并发修改异常代码import java.util.ArrayList; import java.util.List; import java.util.UUID; public class ContainerNotSafeDemo { public static void main(String[] args) { Li...
CAS的ABA问题及解决问题描述:当获得对象当前数据后,在准备修改为新值前,对象的值被其他线程连续修改了两次,而经过两次修改后,对象的值又恢复为旧值,这样当前线程无法确定判断这个对象是否修改过。解决方法:JDK1.5可以利用AtomicStampedReference类来解决这个问题,AtomicStampedReference内部不仅维护了对象值,还维护了一个时间戳。当AtomicStam...
CAS简介一、CAS概念CAS的全称为Compare And Swap即比较并交换,它是一条CPU并发原语。它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值。看起来这是两步操作,但是由于底层硬件的支持,使两步操作能一步完成,从而保证了原子性,避免了独占锁的资源浪费。CAS并发原语体现在Java语言中就是sun.misc.Unsafe类中的各个方法。调用UnSafe类中的CAS...