`
文章列表
 PriorityQueue是基于优先级堆的极大优先级队列 此队列按照构造时所指定的顺序对元素排序,即可以根据元素自然顺序来排序(Comparable)也可以指定Comparator。该类还具有以下特点: 1.用数组实现,但是数组大小可以动态增加且无上限 2.改实现不是线程安全的,多线程时可以用PriorityBlockingQueue 3.不允许使用null元素 4.此实现为插入方法提供O(log(n))时间(log2) 位remove和contains提供线性时间 原因看排序原理 5.这里的iterator()方法提供的迭代器不保证以有序方式遍历 如果需要按顺序遍历,请考 ...
线程优先级 java中线程优先级的范围是1~10,默认为5,优先级高的线程会优于低的线程,另外还有以下特点 1.优先级有继承性,如A线程启动B线程,在没有主动声明的情况下B线程继承A线程的优先级 2.CPU尽量将执行资源让给优先级高的线程,即线程优先级高的总是会大部分先执行,但不是绝对的   java中有两种线程:用户线程和守护线程 1.线程类型也具有继承性 2.当只有守护线程在运行时,JVM自动退出
public class MyComparator implements Comparator<Integer>{ public MyComparator(){ } //若返回正数,则代表o1应该排在o2的后面;返回负数,则o1排在o2的前面;返回0,代表两个元素相等 //所以如果从小往大排则return o1-o2 从大往小排 return o2 - o1 @Override public int compare(Integer ...

enum枚举

 
简单枚举定义 public enum EnumTest{ MON,TUE,WED,THU,FRI,SAT,SUN }  创建枚举类型要用enum关键字,尽管语法结构与class的不一样,但是经过编译器编译之后产生的也是一个class文件,该class文件反编译可以看到实际上生成一个类,该类继承java.lang.Enum<E>。枚举值(MON。。)就是在EnumTest内部生成类型为EnumTest的常量对象。所以实际上enum就是一个构造函数为private的class。 public class com.hmw.test.EnumTest extends java ...
线程池类java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit, BlockingQueue workQueue,RejectedExecutionHandler hander) corePoolSize:线程池维护线程的最少数量 maximumPoolSize:线程池维护的最大数量 keepAliveTime:线程池维护线程所允许的空闲时间 unit:线程池维护线 ...
AtomicInteger,一个提供原子操作的Integer类,在java中,++i和i++都不是线程安全的。AtomicInteger提供一种线程安全的加减操作   //获取当前值  get() //取当前值并设置新的值 getAndSet(int newValue) //获取当前值并自增 getAndIncrement() //获得当前值并自减 getAndDecrement() //获得当前值,并加上固定值 getAndAdd(int delta)
Iterator和ListIterator主要区别有: 一、ListIterator有add()方法,可以向List中添加对象,而Iterator不能 二、两者都有hasNext()和next()方法,可以实现顺序向后遍历。ListIterator有hasPrevious和previous()方法,可以实现逆向(向前)遍历Iterator不行 三、ListIterator可以定位当前索引位置,nextIndex()和previousIndex()可以实现,iterator没有此功能 四、都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现   功 ...
哈希(Hash)算法就是单向散列算法,它把某个较大的集合P映射到另一个较小的集合Q中,加入这个算法叫H,就有Q=H(P)。对于P中任何一个值p都有唯一确定的q与之对应,但是一个q可以对应多个p。作为一个有用的Hash算法,H还应该 ...

mybatis插入空值

MyBatis 插入空值时,需要指定JdbcType mybatis insert空值报空值异常,主要原因是当你传入null对象时mybatis无法获取对应的jdbcType,无法进行转换
BeanUtils提供对反射和自省API的包装 这里只介绍他的copyProperties()方法 public static void copyProperties(java.lang.Object dest,java.lang.Object orig) throws java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException  它的作用是将dest和orig具有相同名称的字段的值从orig复制到dest中   ...
方法一 在for-each循环中使用entry来遍历 Map map = new HashMap(); for(Map.Entry entry : map.entrySet()){ entry.getKey(); entry.getValue(); }  for-each是java 5引入。如果遍历的是一个空的map对象for-each会抛出NullPointerException,因此遍历前总是应该检查是否为空     方法二 在for-each循环中遍历keys或values Map map = new HashMap(); for(Obj ...
在java多线程应用中,队列的使用率很高,java提供的线程安全的queue分为阻塞队列和非阻塞队列,其中阻塞队列例子如linkedBlockingQueue(看名字就知道了),非阻塞的比如ConcurrentLinkedQueue   什么叫线程安全?线程安全的类指的是 类内部共享的全局变量的访问必须保证是不受多线程形式影响的。如果由于多线程的访问,造成有些变量结构被破坏或针对这些变量操作的原子性被破坏,则这个类就不是线程安全的   queue接口与list、set接口一样继承collection接口 队列是一种数据结构,它有两个基本操作:在队尾加入一个元素,从队头移除一个元素。也 ...

sleep wait区别

每个对象都有一个机锁来控制同步访问,synchronized关键字可以和对象机锁交互,来实现线程的同步   sleep是Thread类的方法,调用时线程休眠。 如果在同步方法中调用sleep,线程休眠,锁还在。   wait是object类的方法,必须在同步方法或同步代码块中使用,当一个对象使用wait方法即obj.wait()时,会释放obj对象锁。   如果当前线程不是对象锁的持有者,该方法抛出一个java.lang.IllegalMonitorStateException异常。
window-->preferences-->java-->codestyle 其下有两个选项formatter和clean up formatter主要是设置换行、缩进、空格等格式 clean up 自动化格式代码 昨天代码审查说是不太规范,import项目中相关的cleanup、formatter文件 apply就行     ctrl+shift+f 规范代码 ctrl+shift+o 添加缺少的import删除多余的import cleanup source shift+alt+s里都有       方法注释输入/**再按enter就行   ...

maven 聚合和继承

聚合 为了能够使用一条命令就能构建多个模块,需要额外创建一个模块,然后通过该模块构建整个项目所有模块,该模块暂且称之为聚合模块。聚合模块本身作为一个maven项目,必须要有自己的pom,不过作为一个聚合项目,其p ...
Global site tag (gtag.js) - Google Analytics