- 博客(21)
- 资源 (2)
- 收藏
- 关注
原创 如何为JVM添加关闭钩子与简要分析
最近在看当当开源的数据库分库分表框架Sharding-jdbc的源码,在看ExecutorEngine类时,遇到了很多没用过的JDK api,Sharding-jdbc内部大量的使用了google的工具包Guava。在ExecutorEngine类处理多线程问题部分也同样用到的Guava下面的util.concurrent包的类进处理。而我在看google的Guava的MoreExecutors时便遇到了Runtime.getRuntime().addShutdownHook(hook)。
2016-09-30 18:12:48 4302
转载 Java 8系列之重新认识HashMap
摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。简介Java为数据结构中的映射定义了一个接口j
2016-09-30 14:27:52 325
原创 google Guava包的ListenableFuture解析
并发编程是一个难题,但是一个强大而简单的抽象可以显著的简化并发的编写。出于这样的考虑,Guava 定义了 ListenableFuture接口并继承了JDK concurrent包下的Future 接口。我们强烈地建议你在代码中多使用ListenableFuture来代替JDK的 Future, 因为:大多数Futures 方法中需要它。转到ListenableFuture
2016-09-30 13:44:09 7118
转载 深入 Java 内存模型(2)
深入 Java 内存模型(2)主内存与工作内存Java 内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量主要是指共享变量,存在竞争问题的变量。Java 内存模型规定所有的变量都存储在主内存中,而每条线程还有自己的工作内存,线程的工作内存中保存了该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋
2016-09-30 12:03:58 296
转载 并发新特性—信号量 Semaphore
并发新特性—信号量 Semaphore在操作系统中,信号量是个很重要的概念,它在控制进程间的协作方面有着非常重要的作用,通过对信号量的不同操作,可以分别实现进程间的互斥与同步。当然它也可以用于多线程的控制,我们完全可以通过使用信号量来自定义实现类似 Java 中的 synchronized、wait、notify 机制。Java 并发包中的信号量 Semaphore 实际上是一个功
2016-09-30 10:53:42 372
转载 并发新特性—障碍器 CyclicBarrier
并发新特性—障碍器 CyclicBarrierCyclicBarrier(又叫障碍器)同样是 Java 5 中加入的新特性,使用时需要导入java.util.concurrent.CylicBarrier。它适用于这样一种情况:你希望创建一组任务,它们并发地执行工作,另外的一个任务在这一组任务并发执行结束前一直阻塞等待,直到该组任务全部执行结束,这个任务才得以执行。这非常像 CountDo
2016-09-30 10:48:27 284
转载 并发新特性—阻塞队列与阻塞栈
并发新特性—阻塞队列与阻塞栈阻塞队列阻塞队列是 Java 5 并发新特性中的内容,阻塞队列的接口是 java.util.concurrent.BlockingQueue,它有多个实现类:ArrayBlockingQueue、DelayQueue、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue 等,用法大同小异,具
2016-09-30 09:53:07 357
转载 并发新特性—Lock 锁与条件变量
并发新特性—Lock 锁与条件变量简单使用 Lock 锁Java 5 中引入了新的锁机制——java.util.concurrent.locks 中的显式的互斥锁:Lock 接口,它提供了比synchronized 更加广泛的锁定操作。Lock 接口有 3 个实现它的类:ReentrantLock、ReetrantReadWriteLock.ReadLock 和 ReetrantR
2016-09-30 09:19:38 825
原创 并发新特性—Executor 框架与线程池
Executor 框架简介在 Java 5 之后,并发编程引入了一堆新的启动、调度和管理线程的API。Executor 框架便是 Java 5 中引入的,其内部使用了线程池机制,它在 java.util.cocurrent 包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作。因此,在 Java 5之后,通过 Executor 来启动线程比使用 Thread 的 start
2016-09-29 17:44:24 313
转载 ExecutorService的十个使用技巧
1. 线程命名这点得反复强调。对正在运行的JVM进行线程转储(thread dump)或者调试时,线程池默认的命名机制是pool-N-thread-M,这里N是线程池的序号(每新创建一个线程池,这个N都会加一),而M是池 里线程的序号。比方说,pool-2-thread-3指的是JVM生命周期中第二个线程池里的第三个线程。这样的名字表述性不佳。由于JDK将命名机制都隐藏在 Thread
2016-09-29 17:30:07 2098
转载 Guava学习笔记:EventBus
EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构。 Observer模式是比较常用的设计模式之一,虽然有时候在具体代码里,它不一定叫这个名字,比如改头换面叫个Listener,但模式就是这个模式。手工实现一个Observer也
2016-09-29 13:53:57 334
转载 spring框架的XML扩展特性:让spring加载和解析你自定义的XML文件
Spring框架从2.0版本开始,提供了基于Schema风格的XML扩展机制,允许开发者扩展最基本的spring配置文件(一般是classpath下的spring.xml)。试想一下,如果我们直接在spring.xml中加入一个自定义标签,会发生什么呢?spring框架启动的时候会报错,因为spring根本不认识我们自定义的,这样对spring.xml的校验就会失败,最终结果就是框架不能启动。有什
2016-09-27 14:02:30 3121
转载 spring自定义标签之规范定义XSD
引言: spring的配置文件中,一切的标签都是spring定义好的。等等,有了定义的规范,才能让用户填写的正常可用。想写自定义标签,但首先需要了解XML Schema Definition(XSD) 的。 标签定义: 对于该类标签的定义,spring中有着相应的XSD定义文档 http://www.springframe
2016-09-27 12:58:59 5474
转载 JavaScript中的立即执行函数表达式
前言在使用JavaScript的时候经常会看见类似如下的函数调用方式:(function(){ console.log("test");})();或者(function(){ console.log("test");}());一些流行的库也是这样,比如jQuery(function( window, undefined ) {
2016-09-21 09:30:04 2074 1
转载 解决git提交敏感信息(回退git版本库到某一个commit)
git是一个很好的版本库, 现在很多人用它, 并在github上创建项目, 相信大家都有过将敏感信息提交版本的经历, 如何删除? 好像只有删除版本库来解决, 其实我们可以通过回退版本库删除相应的commit来将提交的敏感信息去掉.备份本地代码首先我们将本地代码的更改备份一下, 以防丢失更改回退本地代码的commit备份完数据, 我们就可以先回退本地的版本库g
2016-09-14 15:48:54 4684 1
转载 mysql explain用法
mysql explain用法explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了,如:explain select * from statuses_status where id=11;explain列的解释table:显示这一行的数据
2016-09-14 10:30:00 226
转载 分组加密的四种模式
加密一般分为对称加密(Symmetric Key Encryption)和非对称加密(Asymmetric Key Encryption)。对称加密又分为分组加密和序列密码。分组密码,也叫块加密(block cyphers),一次加密明文中的一个块。是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运算),还原成明文组。序列密码,也叫流加密(s
2016-09-13 09:24:32 2649
转载 Base64编码详解
开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了。实际 上Base64已经简单到不能再简单了,如果对它的理解还是模棱两可实在不应该。大概介绍一下Base64的相关内容,花几分钟时间就可以彻底理解它。文 章下边贴了一个Base64的编解码器,方便阅读文章的同时来实验。 一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的
2016-09-12 16:15:59 364
转载 Spring中PropertyPlaceholderConfigurer
参考:http://seraph115.iteye.com/blog/435165Spring中PropertyPlaceholderConfigurer这个类,它是用来解析Java Properties属性文件值,并提供在spring配置期间替换使用属性值。接下来让我们逐渐的深入其配置。 基本的使用方法是:[html] view plain copy
2016-09-09 13:47:03 923
转载 Spring中@Autowired注解,@Resource注解和xml default-autowire区别
String resourceName = resource.name();this.isDefaultName = !StringUtils.hasLength(resourceName);if (this.isDefaultName) { resourceName = this.member.getName(); if (this.member instanceof Met
2016-09-09 11:31:36 3459
转载 spring学习笔记(16)趣谈spring 事件机制[2]:多监听器流水线式顺序处理
上一篇我们使用到的ApplicationListener是无序的,结合异步调度它能满足了我们的大部分应用场景,但现在我们来个另类的需求,我们来模拟一条作业调度流水线,它不能异步,必须按照先后次序执行不同的任务才能得到我们的最终结果。 需求示例:现在假如华中科技大学的小白想要为它的智能机器人作品申报国家创新奖,需要经过学校、省级创新科研机构、国家创新科研机构逐层审核。我们尝试通过事件来实现,核心
2016-09-01 09:55:40 880
教室管理信息系统说明书 数据库大作业
2013-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人