
Java基础
文章平均质量分 77
芥子纳须臾
这个作者很懒,什么都没留下…
展开
-
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 · 873 阅读 · 0 评论 -
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 · 562 阅读 · 0 评论 -
SVNKit使用
有时候我们需要读取svn或者git上面最新的代码生产某些文件,这种情况下,如果我们需要使用java操作,可以使用quartz配合svnkit或者jgit取svn上的最新内容,帮我们生成对应的文件。Svnkit中的SVNClientManager几乎包含了所有需要的功能①SVNLogClient主要用来获取版本的历史修改记录、注释和树的数目②SVNUpdateClient主要用来更新、检出(chec...原创 2018-05-15 10:24:09 · 8270 阅读 · 0 评论 -
使用CAS代替synchronized
在开发当中需要经常用到synchronized保证代码线程安全,在竞争条件下会阻塞等待资源,如果允许竞争不到资源返回失败,就可以使用cas减少阻塞时间。先来看一个cas的单例模式。public class NonBlock { private static volatile NonBlock nonBlock; private static AtomicBoolean atomicBo原创 2018-05-02 17:20:46 · 2280 阅读 · 0 评论 -
Java动态代理的实现
代理模式可以控制外界对对象的访问,在对象类型一样的情况下添加部分的中间操作,springaop是使用动态代理的一个应用实例。动态代理的实现方式有好几种,这里暂且只是贴出jdk自带的InvocationHandler、cglib,Javassist功能很强大,这里暂且没有例子。jdk的动态代理是依靠接口实现,如果类没有实现接口,则应当使用cglib实现,使用javassist直接创建一个类实...原创 2018-03-31 17:03:22 · 313 阅读 · 0 评论 -
数组和ArrayList
先看一下相关的结果或函数。①ArrayList.subList是ArrayList的一个内部类,不可以强转成成ArrayList,否则会抛出ClassCastException异常,即 java.util.RandomAccessSubList cannot be cast to java.util.ArrayList,是ArrayList 的一个视图,对于 SubList 子列表的所有操作最终...原创 2018-03-13 23:21:08 · 346 阅读 · 0 评论 -
Instant、LocalDateTime与DateTimeFormatter
最近两天在统计数据的时候发现数据出现丢失的情况,查看的原因是数据存库时,日期出现了异常情况,是SimpleDateFormat把String转Date的时候出现的线程安全问题。一直都知道SimpleDateFormat是线程不安全的,现在还是出现了问题。阿里Java规范中(六.5)有这么一条强制 下面是按照说明使用JDK8代替以前的Date、Calendar、Simple原创 2018-01-01 16:18:54 · 2583 阅读 · 0 评论 -
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 · 1208 阅读 · 0 评论 -
Java的Annotation
注解是Java1.5引入的,我们在Java本身及其他框架,如Spring、Hibernate等已经见过很多了。注解的作用这个我的理解还不够深入,大概就是作为数据标记修饰程序,通过Java的反射机制识别注解来做大量重复的工作。下面是一个注解的示例:@Documented@Target(ElementType.METHOD)@Inherited@Retention(RetentionPo原创 2017-11-30 15:18:42 · 333 阅读 · 0 评论 -
线程池学习
线程池、数据库连接池这些名词我们听过很多了。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。线程池能减少系统创建、销毁线程的开销,对线程进行有效的管理和复用。有关线程池ThreadPoolExecutor原创 2017-11-20 18:01:44 · 301 阅读 · 0 评论