- 博客(25)
- 资源 (3)
- 收藏
- 关注
原创 spring bean 标签的解析和注册
spring bean 标签的解析和注册:protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) { BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele); if (bdHo
2017-06-11 21:15:30
522
原创 spring第一篇----XmlBeanFactory 小结
跟着《spring源码深度解析》学习spring做过java开发,我们对以下的代码一定很熟悉,这是最基本的spring使用方式public static void main(String[] args) throws InterruptedException { BeanFactory bf = new XmlBeanFactory(new ClassPathResource("s
2017-06-04 17:02:04
454
转载 XML中DTD,XSD的区别与应用
XML我们并不陌生,在企业级应用中有很广的用途。具体就不再说,下面介绍一下DTD,XSD的区别并以XSD为例看spring中定义与使用。1.DTD(Documnet Type Definition)DTD即文档类型定义,是一种XML约束模式语言,是XML文件的验证机制,属于XML文件组成的一部分。DTD 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档
2017-05-21 17:15:21
590
转载 深入理解java异常处理机制
本文转自:http://blog.youkuaiyun.com/hguisu/article/details/6155636 1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什
2017-05-13 13:32:42
428
转载 Volatile 的正确使用
本文转自:https://www.ibm.com/developerworks/cn/java/j-jtp06197.htmlJava 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized
2017-05-06 10:13:43
340
转载 注解(Annotation)自定义注解入门
要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。元注解: 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解: 1.@Target,
2017-04-15 20:24:12
256
原创 LinkedBlockingQueue 浅析
首先我们来看一下它的代码结构public class LinkedBlockingQueue extends AbstractQueue implements BlockingQueue, java.io.Serializable { //... static class Node {//队列中存储元素的结构 E item; /**
2017-03-18 23:46:13
344
原创 ExecutorService.submit()浅析(基于jdk1.6)
ExecutorService.submit()方法可以有两种入参1、实现Callable接口的类2、实现Runnable接口的类两种 方式的源码其实很类似public Future submit(Runnable task) { if (task == null) throw new NullPointerException(); RunnableFuture fta
2017-03-10 20:47:41
878
原创 Runnable、Callable、Future接口区别
我们分别看一下这三个接口的方法:1、Runnable接口只有一个run()方法 ,并且该方法无返回值(我们相当熟悉)。public interface Runnable { public abstract void run();}2、Callable接口也只有一个call()方法,但是该方法有具体的返回值。public interface Callable {
2017-03-08 23:10:27
505
原创 ThreadLocal 小结
(关于 threadLocal 的网上应该有很多优秀的文章,本文用于个人整理,以及有需要的人拿来参考,有什么不正确的地方,欢迎指正,共同进步。)ThreadLocal 通常被称为本地线程变量,为什么呢?因为在多线程环境下,通过ThreadLocal,我们只要使用一个ThreadLocal对象,就可以为每个线程都可以维护一个该对象的副本,而且每个线程都可以单独修改自己的副本,并且不会影响到其
2017-03-06 22:47:11
288
原创 Executor 框架小结
在Java中,使用线程来异步执行任务,但是线程的创建和销毁都需要一定的开销,如果我们为每一个任务都新开一个线程来执行,必然对计算机造成巨大的压力。 从JDK 5开始,Java可以提供了将工作单元和执行机制分离开的工具,其中工作单元是实现了Runnable或者Callable接口类,而执行机制就是我们下面要讲到的Executor 框架。Executor 框架的结构一、任务:即工作
2017-03-05 22:03:00
312
原创 数据库隔离级别
数据库可能存在的问题:1、脏读:脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据;2、不可重复读:不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了,不可重 复读对应的是修改,即UPDATE操作; 3、幻读;幻读是事务非独立执行时发生的一种现象,幻读问题对应的是
2017-03-03 17:12:11
243
原创 java 线程池小结
在java中,使用线程来异步执行任务,java线程的创建和销毁都需要消耗一定的资源,因此从JDK5 开始,有了线程池这个好东西。线程池(ThreadPoolExecutor)主要有以下几个好处:(1)降低资源消耗:可以重复利用已创建的线程来降低线程创建和销毁造成的消耗;(2)提高响应速度:当任务到达时,不需要等待线程创建就可以执行任务(因为线程已经在线程池里准备好了!);(3)提高
2017-02-28 22:35:33
508
原创 设计模式之中介者模式(调停模式)
中介者模式(调停模式):用一个对象(中介对象)封装一系列对象的交互,中介对象使得各个对象之间不需要显式地相互调用,从而使其耦合松散,而且可以独立改变它们之间的交互关系(只需要改动中介者类),如果不使用中介者模式,改动将会很大。我们来看一下不使用中介者模式的进销存系统和使用中介者模式的进销存系统的区别:不使用中介者对象,我们可以看到采购管理、销售管理、存货管理类之间都相互依赖,如果改动一个类
2017-02-26 14:12:34
345
原创 设计模式之原型模式
原型模式的定义:用原型实例创建对象种类,并且通过拷贝这些原型创建新的对象。原型模式的使用方式:1、实现Cloneable接口;2、重写Object类中的clone方法。原型模式注意点:(1)对象进行拷贝时,构造函数不会被执行(直接在内存中进行拷贝);(2)深拷贝和浅拷贝(浅拷贝:只拷贝对象,对象内部的数组以及对象引用不会被拷贝,String类型对象除外);(3)要使用clo
2017-02-26 13:40:29
253
原创 设计模式---六大原则
1、单一职责原则:每个接口或者类只负责一个职责(这个原则其实很难鉴定);2、里氏替换原则:只要父类可以出现的地方,子类就可以出现,而且替换为子类也不会出现任何的错误或者异常,但是反过来就不可以;3、依赖倒置原则:模块之间的依赖关系通过抽象或者接口产生,实现类之间不应该产生之间的关系,其依赖关系通过抽象或者接口产生,抽象或者接口不应该依赖具体的实现类,实现类依赖抽象类或者接口;4、接口隔
2017-02-25 14:31:22
298
原创 java虚拟机--垃圾收集算法与垃圾收集器
1、 引用计数算法:对对象添加一个引用计数器,每当一个地方引用它,引用计数+1,引用失效时,引用计数-1;2、 可达性分析算法:通过一系列的称为“GCRoots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GCRoots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不
2017-01-15 17:03:31
333
原创 java notify()、 notifyAll()、 wait()、sleep()、yield()、join()方法学习
notify()、notifyAll()、wait()方法都是Object类中的方法,而且都被定义为native final的,因此不可以被重写,并且这三个方法都只能在同步代码块或者方法中使用1、wait():调用某个对象的wait方法可以使当前线程立即进入阻塞状态而不继续往下执行代码,前提是此线程必须拥有此对象的锁。2、notify():调用某个对象的的notify方法可以唤醒一
2017-01-04 20:14:40
285
原创 java 虚拟机
我们平时进行程序开发工作只是做到了第一步的java文件的编写,而后面的事情不是一般程序员所关心的事情。当我们在进行Ctrl + S操作时,我们的IDE工具(eclipse)会对我们编写的java文件进行编译工作,生成一个class文件,如果我们的程序写的没有问题,那么eclipse可以对我们的java文件进行正常的编译。比如我们在eclipse中写下以下的java文件:通过
2016-12-18 17:10:10
307
转载 ReentrantReadWriteLock读写锁的使用
ReentrantReadWriteLock读写锁的使用 ReentrantReadWriteLock里一共有两把锁,一把读锁,一把写锁;读写锁使用场景:适合读次数多写次数少的场景。1、线程进入读锁和写锁的前提条件:线程进入读锁的前提条件: 没有其他写锁;没有写的请求或者有写的请求,但是和持有锁得线程是同一个线程。线程进入写锁的前提条件:
2016-11-26 15:33:05
982
原创 java notify() notifyAll() wait()方法学习
notify()、notifyAll()、wait()方法都是Object类中的方法,而且都被定义为native final的,因此不可以被重写,并且这三个方法都只能在同步代码块或者方法中使用wait():调用某个对象的wait方法可以使当前线程进入阻塞状态,前提是当线程必须拥有此对象的锁。notify():调用某个对象的的notify方法可以唤醒一个正在等待此对象的锁的线程,如果
2016-10-12 20:12:23
241
原创 关于Myeclipse出现 java文件中文乱码问题的解决方案.
Myeclipse出现 java文件中文乱码问题 :一.:将整个project设置编码UTF-8(UTF-8可以最大的支持国际化) windows->Preferences->general->Workspace->Text file encoding->Other框中的Text file encoding改为UTF-8。 二:对java源文件编码设置为UTF-8. window
2016-01-18 11:18:14
572
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人