- 博客(14)
- 收藏
- 关注
原创 Integer.bitCount和hightestOneBit的分析
Integer类有两个很有趣的方法,highestOneBit(int)和bitCount(int),前者是我指定HashMap初始化大小时寻找大于某个数的最小2的指数幂时候发现的,后者是看到leetcode上面一道算法题的时候,自己在Integer类中找到的解。下面上代码。 public static int highestOneBit(int i) { // HD, Fi...
2018-06-01 19:06:34
517
原创 SVNKit使用
有时候我们需要读取svn或者git上面最新的代码生产某些文件,这种情况下,如果我们需要使用java操作,可以使用quartz配合svnkit或者jgit取svn上的最新内容,帮我们生成对应的文件。Svnkit中的SVNClientManager几乎包含了所有需要的功能①SVNLogClient主要用来获取版本的历史修改记录、注释和树的数目②SVNUpdateClient主要用来更新、检出(chec...
2018-05-15 10:24:09
8177
原创 使用CAS代替synchronized
在开发当中需要经常用到synchronized保证代码线程安全,在竞争条件下会阻塞等待资源,如果允许竞争不到资源返回失败,就可以使用cas减少阻塞时间。先来看一个cas的单例模式。public class NonBlock { private static volatile NonBlock nonBlock; private static AtomicBoolean atomicBo
2018-05-02 17:20:46
2212
原创 Java动态代理的实现
代理模式可以控制外界对对象的访问,在对象类型一样的情况下添加部分的中间操作,springaop是使用动态代理的一个应用实例。动态代理的实现方式有好几种,这里暂且只是贴出jdk自带的InvocationHandler、cglib,Javassist功能很强大,这里暂且没有例子。jdk的动态代理是依靠接口实现,如果类没有实现接口,则应当使用cglib实现,使用javassist直接创建一个类实...
2018-03-31 17:03:22
261
原创 数组和ArrayList
先看一下相关的结果或函数。①ArrayList.subList是ArrayList的一个内部类,不可以强转成成ArrayList,否则会抛出ClassCastException异常,即 java.util.RandomAccessSubList cannot be cast to java.util.ArrayList,是ArrayList 的一个视图,对于 SubList 子列表的所有操作最终...
2018-03-13 23:21:08
290
转载 volatile关键字
文章来自:https://juejin.im/post/5a2b53b7f265da432a7b821c被volatile修饰的共享变量,具有以下两点特性:1.保证了不同线程对该变量操作的内存可见性;2.禁止指令重排序。Java虚拟机规范试图定义一种Java内存模型(JMM),来屏蔽掉各种硬件和操作系统的内存访问差异,让Java程序在各种平台上都能达到一致的内存访问效果。简单来说,由于
2018-01-09 21:59:39
258
原创 Instant、LocalDateTime与DateTimeFormatter
最近两天在统计数据的时候发现数据出现丢失的情况,查看的原因是数据存库时,日期出现了异常情况,是SimpleDateFormat把String转Date的时候出现的线程安全问题。一直都知道SimpleDateFormat是线程不安全的,现在还是出现了问题。阿里Java规范中(六.5)有这么一条强制 下面是按照说明使用JDK8代替以前的Date、Calendar、Simple
2018-01-01 16:18:54
2525
原创 Java函数式编程实现策略模式
我们学习Java8的lambda的时候一开始都会接触这样子的代码,这样子可以使我们的代码更简洁。 public static void main(String[] args) { // old Calculator add = new Add(); add.calculate(1, 2); // lambda Calculator minus = (a, b) -> {
2017-12-25 08:18:55
1120
转载 Skip List(跳跃表)与ConcurrentSkipListMap
学习来源:skip list【算法导论33】跳跃表(Skip list)原理与java实现Skip List(跳跃表)原理详解与实现Skip List是一种随机化的数据结构,基于并联的链表,有多级的索引可以跳过大段的区间,其效率可比拟于二叉查找树(log n)。基本上,跳跃列表是对有序的链表增加上附加的前进链接,增加是以随机化的方式进行的,所以在列表中的查找可以快速的跳
2017-12-11 12:46:11
355
转载 红黑树
红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。除了具备该特性之外,红黑树还包括许多额外的信息。红黑树的每个节点上都有存储位表示节点的颜色,颜色是红(Red)或黑(Black)。红黑树的特性:(1) 每个节点或者
2017-12-11 10:54:16
235
原创 Java的Annotation
注解是Java1.5引入的,我们在Java本身及其他框架,如Spring、Hibernate等已经见过很多了。注解的作用这个我的理解还不够深入,大概就是作为数据标记修饰程序,通过Java的反射机制识别注解来做大量重复的工作。下面是一个注解的示例:@Documented@Target(ElementType.METHOD)@Inherited@Retention(RetentionPo
2017-11-30 15:18:42
301
原创 线程池学习
线程池、数据库连接池这些名词我们听过很多了。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。线程池能减少系统创建、销毁线程的开销,对线程进行有效的管理和复用。有关线程池ThreadPoolExecutor
2017-11-20 18:01:44
259
原创 阿里巴巴Java开发手册学习-01
最近看了几遍的阿里巴巴Java开发手册,发现自己代码中确实有很多不合规范的地方。规范只是一个约定,遵守的目的是方便自己和他人阅读代码,减少一些无意识的错漏,并不是说阿里的什么东西都是好的,只是这个规范自己看了觉得非常好。这是阿里代码规范--命名风格中的第八条,boolean类型的基本数据类型deleted不能命名成isDeleted,Boolean封装类型是没有这个要求的,截图中虽然是
2017-11-13 09:49:04
451
转载 Java中String.split的坑
在看阿里的Java规范的时候看到了这一个东西,于是乎找了一些这个相关的一些情况,因为以前没碰到过,看到了一篇不错的文章,所以转载过来了。文章地址:http://yinny.iteye.com/blog/1750210System.out.println(":ab:cd:ef::".split(":").length);//末尾分隔符全部忽略 System.out.pri
2017-11-08 19:20:43
821
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人