自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 500

原创 SVNKit使用

有时候我们需要读取svn或者git上面最新的代码生产某些文件,这种情况下,如果我们需要使用java操作,可以使用quartz配合svnkit或者jgit取svn上的最新内容,帮我们生成对应的文件。Svnkit中的SVNClientManager几乎包含了所有需要的功能①SVNLogClient主要用来获取版本的历史修改记录、注释和树的数目②SVNUpdateClient主要用来更新、检出(chec...

2018-05-15 10:24:09 8154

原创 使用CAS代替synchronized

在开发当中需要经常用到synchronized保证代码线程安全,在竞争条件下会阻塞等待资源,如果允许竞争不到资源返回失败,就可以使用cas减少阻塞时间。先来看一个cas的单例模式。public class NonBlock { private static volatile NonBlock nonBlock; private static AtomicBoolean atomicBo

2018-05-02 17:20:46 2197

原创 Java动态代理的实现

    代理模式可以控制外界对对象的访问,在对象类型一样的情况下添加部分的中间操作,springaop是使用动态代理的一个应用实例。动态代理的实现方式有好几种,这里暂且只是贴出jdk自带的InvocationHandler、cglib,Javassist功能很强大,这里暂且没有例子。jdk的动态代理是依靠接口实现,如果类没有实现接口,则应当使用cglib实现,使用javassist直接创建一个类实...

2018-03-31 17:03:22 243

原创 数组和ArrayList

 先看一下相关的结果或函数。①ArrayList.subList是ArrayList的一个内部类,不可以强转成成ArrayList,否则会抛出ClassCastException异常,即 java.util.RandomAccessSubList cannot be cast to java.util.ArrayList,是ArrayList 的一个视图,对于 SubList 子列表的所有操作最终...

2018-03-13 23:21:08 269

转载 volatile关键字

文章来自:https://juejin.im/post/5a2b53b7f265da432a7b821c被volatile修饰的共享变量,具有以下两点特性:1.保证了不同线程对该变量操作的内存可见性;2.禁止指令重排序。Java虚拟机规范试图定义一种Java内存模型(JMM),来屏蔽掉各种硬件和操作系统的内存访问差异,让Java程序在各种平台上都能达到一致的内存访问效果。简单来说,由于

2018-01-09 21:59:39 245

原创 Instant、LocalDateTime与DateTimeFormatter

最近两天在统计数据的时候发现数据出现丢失的情况,查看的原因是数据存库时,日期出现了异常情况,是SimpleDateFormat把String转Date的时候出现的线程安全问题。一直都知道SimpleDateFormat是线程不安全的,现在还是出现了问题。阿里Java规范中(六.5)有这么一条强制        下面是按照说明使用JDK8代替以前的Date、Calendar、Simple

2018-01-01 16:18:54 2511

原创 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 1107

转载 Skip List(跳跃表)与ConcurrentSkipListMap

学习来源:skip list【算法导论33】跳跃表(Skip list)原理与java实现Skip List(跳跃表)原理详解与实现Skip List是一种随机化的数据结构,基于并联的链表,有多级的索引可以跳过大段的区间,其效率可比拟于二叉查找树(log n)。基本上,跳跃列表是对有序的链表增加上附加的前进链接,增加是以随机化的方式进行的,所以在列表中的查找可以快速的跳

2017-12-11 12:46:11 342

转载 红黑树

红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。除了具备该特性之外,红黑树还包括许多额外的信息。红黑树的每个节点上都有存储位表示节点的颜色,颜色是红(Red)或黑(Black)。红黑树的特性:(1) 每个节点或者

2017-12-11 10:54:16 222

原创 Java的Annotation

注解是Java1.5引入的,我们在Java本身及其他框架,如Spring、Hibernate等已经见过很多了。注解的作用这个我的理解还不够深入,大概就是作为数据标记修饰程序,通过Java的反射机制识别注解来做大量重复的工作。下面是一个注解的示例:@Documented@Target(ElementType.METHOD)@Inherited@Retention(RetentionPo

2017-11-30 15:18:42 300

原创 线程池学习

线程池、数据库连接池这些名词我们听过很多了。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。线程池能减少系统创建、销毁线程的开销,对线程进行有效的管理和复用。有关线程池ThreadPoolExecutor

2017-11-20 18:01:44 242

原创 阿里巴巴Java开发手册学习-01

最近看了几遍的阿里巴巴Java开发手册,发现自己代码中确实有很多不合规范的地方。规范只是一个约定,遵守的目的是方便自己和他人阅读代码,减少一些无意识的错漏,并不是说阿里的什么东西都是好的,只是这个规范自己看了觉得非常好。这是阿里代码规范--命名风格中的第八条,boolean类型的基本数据类型deleted不能命名成isDeleted,Boolean封装类型是没有这个要求的,截图中虽然是

2017-11-13 09:49:04 446

转载 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 815

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除