摘要: 一 概述 CyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数。当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续。CyclicBarrier就象它名字的意思一样,可看成是个障碍, 所有的线程必须到齐后才能一起通过这个障碍 阅读全文
posted @ 2017-11-09 15:53 balfish 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 一 异步用new Thread? 大写的"low"!! new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 你还在像上面这么用吗,太low 阅读全文
posted @ 2017-11-09 12:09 balfish 阅读(2399) 评论(0) 推荐(0) 编辑
摘要: 一 概述 多线程的环境下对同一份数据进行读写,会涉及到线程安全的问题。比如一个线程读取数据的时候,另外一个线程在写数据,会导致前后数据的不一致。一个线程在写数据,另一个线程也在写,同样会导致线程前后看到的数据不一致。这时可以在读写方法加入互斥锁,任何时候只能允许一个线程的一个读或写操作,而不允许其他 阅读全文
posted @ 2017-11-08 17:55 balfish 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 一 简单的stream parallelStream慎用,除非你知道它内部干了什么 List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8); list.parallelStream().forEach(System.out::printl 阅读全文
posted @ 2017-11-06 12:05 balfish 阅读(1255) 评论(0) 推荐(0) 编辑
摘要: 一 概述 CountDownLatch能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。 CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就 阅读全文
posted @ 2017-07-27 14:44 balfish 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 一 coalesce 在mysql中,其实有不少方法和函数是很有用的,这次介绍一个叫coalesce的,拼写十分麻烦,但其实作用是将返回传入的参数中第一个非null的值,比如 SELECT COALESCE(NULL, NULL, 1); -- Return 1 SELECT COALESCE(NU 阅读全文
posted @ 2017-05-02 17:59 balfish 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 一 引言 在JDK5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题 (2)一个线程持有锁会导致其它所有需要此锁的线程挂起 (3)如果一个优先级高的线程等待一个优先级低 阅读全文
posted @ 2017-02-20 11:37 balfish 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 1 单例模式 1.1 饿汉法 public class Singleton { private Singleton() { } private static Singleton singleton = new Singleton(); public static Singleton getSingl 阅读全文
posted @ 2016-11-14 16:37 balfish 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 一 时间元素 一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。 按顺序依次为 1 秒 (0~59) 2 分钟(0~59) 3 小时(0~23) 4 天(月)(0~31,但是你需要考虑你月的天数) 5 月(0~11) 6 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WE 阅读全文
posted @ 2016-06-27 14:26 balfish 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 1 compile and pattern Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式 Pattern p=Pattern.compile( 阅读全文
posted @ 2015-11-18 11:55 balfish 阅读(843) 评论(0) 推荐(0) 编辑
摘要: 一 Zookeeper是什么 引用官方的说法:“Zookeeper是一个高性能的开源分布式应用协调服务。它提供了简单原始的功能, ZooKeeper 为我们提供了高可用、高性能、稳定的分布式数据一致性解决方案,通常被用于实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Mast 阅读全文
posted @ 2015-10-09 17:26 balfish 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 一 Java内存划分 在Java运行时的数据区里,由JVM管理的内存区域分为下图几个模块: 1) 程序计数器(Program Counter Register) 程序计数器是一个比较小的内存区域, 用于指示当前线程所执行的字节码执行到了第几行, 可以理解为是当前线程的行号指示器. 字节码解释器在工作 阅读全文
posted @ 2015-09-23 15:35 balfish 阅读(329) 评论(1) 推荐(0) 编辑
摘要: 一 神么是ThreadLocal ThreadLocal很多地方叫做线程本地变量, 也有线程本地存储的叫法, 它为变量在每个线程中创建一个副本, 每个线程可以访问自己内部的副本变量 ThreadLocal不是用于解决共享变量的问题的,不是为了协调线程同步而存在,而是为了方便每个线程处理自己的状态而引 阅读全文
posted @ 2015-08-31 17:25 balfish 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 1 grep 命令 -i :ignore-case忽略大小写 -c :打印匹配的行数 -v :查找不包含匹配项的行 -n :打印包含匹配项的行和行标 -w :搜索整个词,而不是词中的部分字串 -A :显示匹配行之后的N行 -B :显示匹配行之前的N行 -C :显示匹配行之前之后的N行 1. 搜索空行 阅读全文
posted @ 2015-08-31 11:07 balfish 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 一 url-pattern的问题 <!-- No mapping found for HTTP request with URI [/WEB-INF/jsp/homePage.jsp] in DispatcherServlet with name 'dispatcher' 其中/和/*的区别: <u 阅读全文
posted @ 2015-08-14 20:43 balfish 阅读(1211) 评论(0) 推荐(0) 编辑