- 博客(32)
- 问答 (6)
- 收藏
- 关注
原创 BeanPostProcessor解析
Spring为了保证高可扩展性,引入了BeanFactory的后处理机制,主要包括BeanFactoryPostProcessor和BeanPostProcessor。两者的区别是BeanPostProcessor用于改变实际的bean实例,而BeanFactoryPostProcessor则用户实例化bean之前读取配置元数据,并修改它。本文主要通过对ClassPathXmlApplicati...
2019-11-30 19:00:29
551
原创 2. 命名空间及自定义标签的解析
从上一篇文章中可以知道《Spring事务示例与概览》中可以知道<tx:annotation-driven>为整个事务实现的入口。通过对该标签的解析来实现事务的管理。那么,本文就以<tx:annotation-driven>为入口,分析自定义标签的解析流程。1. 自定义标签解析以XmlBeanFactory为例,在初始化BeanFactory对象的时候会解析配置文件中的各...
2019-11-29 17:10:39
297
原创 AbstractQueuedSynchronizer 功能介绍
AbstractQueuedSynchronizer 功能介绍简介队列同步器可重写的方法模板方法队列同步器的实现同步队列独占式同步状态获取与释放共享式同步状态获取与释放简介&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;a
2019-02-14 15:36:19
340
1
原创 ReentrantLock 源码分析
ReentrantLock 源码分析简介Lock接口提供的功能公平锁和非公平锁公平锁非公平锁公平锁和非公平锁性能对比简介ReentrantLock是Java SE 5新增的jdk层面实现可重入锁的功能, 提供了与synchronized类似的同步功能,只是在使用时需要显示的获取和释放锁。虽然缺少了隐私获取和释放锁的便捷性,但是缺拥有了锁获取和释放的可操作性、可中断的获取锁以及超时获取锁等多种s...
2019-02-14 11:34:07
477
原创 ThreadPoolExecutor源码分析
ThreadPoolExecutor源码分析简介四种拒绝策略线程池的状态提交任务终止线程池(shutdown)立即终止线程池(shutdownNow)简介ExecutorService主要使用线程池中的可用线程执行提交的任务,主要用于解决两个不同的问题:执行大量异步任务时改善性能和管理资源。四种拒绝策略ThreadPoolExecutor.AbortPolicy: 丢弃任务,并抛出Rej...
2019-02-12 19:05:03
205
原创 Semaphore 源码浅析
Semaphore源码分析Semaphore 介绍主要方法介绍关键方法实现代码分析1. acquire()源码分析2. release()源码分析Semaphore 介绍Semaphore是一个计数信号量,Semaphore中保留多个令牌,每一个acquire都会阻塞直到获取一个可用的令牌。每一个release都会归还一个持有的令牌,这也意味着,其他的acquire可以获得该令牌继续执行。但...
2019-01-31 16:42:44
208
原创 CountDownLatch 源码浅析
这里写自定义目录标题简介关键方法方法实现1. CountDownLatch(int count)构造器实现2. await()方法实现3. await(long timeout, TimeUnit unit)方法实现实现逻辑:4. countDown()方法实现简介CountDownLatch提供的是一个计数器倒数的功能。所有调用了await(long timeout, TimeUnit un...
2019-01-31 11:12:12
203
原创 2. mybatis为什么直接调用接口方法就可以实现语句的查询
上一篇文章我们了解了什么是mybatis,并通过一个用例实现了一个简单的mybatis查询数据库的数据,在文章的最后针对mybatis如何实现这些功能提出了几个问题。接下来的文章中会对这些问题做一一解答。本篇文章中解决第一个问题,mybatis为什么调用接口方法就可以实现语句的查询?实现该功能主要分成两块进行:注册Mapper通过new SqlSessionFactoryBuilde...
2018-12-26 23:11:54
2647
原创 1. mybatis是什么,提供哪些功能
1. 什么是mybatis官网中给到的定义是这样的:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据...
2018-12-26 21:14:14
2969
原创 启动报错:One or more listeners failed to start. Full details will be found in the appropriate container
启动报错:One or more listeners failed to start. Full details will be found in the appropriate container log file启动时在日志中只看到以上(One or more listeners failed to start. Full details will be found in the appro...
2018-12-06 13:33:01
4485
原创 JVM习题--二进制运算
有关补码,简要阐述补码的好处。并计算给出 -99, -105, 205 整数的补码补码有以下两个特点: 因为使用补码可以将符号位和其他位统一处理,同时,减法也可以按加法来处理,即如果是补码表示的数,不管是加减法都直接用加法运算即可实现。两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。补码运算的好处: 使符号位能与有效值部分一起参加运算,从而简化运算规则。从而可以简化运算器
2017-09-18 23:15:55
881
原创 垃圾收集器
垃圾收集器概述: 垃圾收集器是垃圾收集算法的具体实现,垃圾收集算法主要有:标记-清理、复制算法、标记-整理种算法其中,标记清理算法是最基础的算法,其他两种算法都在它的基础上优化得到的。 HotSpot虚拟机的垃圾收集器主要有以下几种(JDK1.7 Update 14之后):连线之间的收集器表示他们可以配合使用。1. Serial收集器(复制算法): seria
2017-09-14 23:39:41
202
原创 垃圾收集算法对比
垃圾收集算法1. 标记-清理算法 标记清理算法是垃圾收集算法中最基础的算法,其他算法都是在他的基础上优化得到的,垃圾收集算法主要分为标记和清除两个阶段,标记即标记中需要回收的对象,标记完成之后对标记的对象做清理操作。该算法有两个不足点:1. 效率不高,标记和清理两个过程的效率都不高; 2. 空间问题,标记清理之后会产生大量的空间碎片,如果需要分配一个连续空间存储大对象,则会提前触发垃圾的回
2017-09-13 23:21:08
553
原创 java对象的回收机制
内容概述:我们知道创建对象是通过new关键字创建的,创建完成后的对象存储在堆内存中,java虚拟机能够完成内存的自动回收,那么JVM是在什么情况下回收对象,如何回收对象?方法区为什么需要回收,它的回收和堆内存的回收又有什么不同?1. java虚拟机在什么情况下回收对象:JVM是通过可达性分析算法判断对象是否存活的,这个算法的基本思想是:通过一系列被称为”GC Roots”的对象作为起点,向下
2017-09-12 15:55:57
2655
原创 java内存区域-运行时数据区
概述 java虚拟机在执行java程序的时候会把它所管理的内存分为若干个不同的区域,每个区域有不同的功能、以及创建和销毁时间,有些区域随着虚拟机的启动而存在,有些区域随用户线程的启动和结束创建和销毁。 1. 程序计数器: 程序计数器占用的内存比较小,它是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异
2017-09-05 23:40:12
472
原创 Java虚拟机类加载的过程
1. 类加载的时机:类从被加载到虚拟机内存开始到卸载出内存,整个生命周期包括以下七个阶段,其中加载,验证,准备,初始化,卸载这5个阶段的顺序是确定的。 类在什么情况下进行加载: 虚拟机对类的加载时机并没有明确的规定,是由具体的虚拟机实现的,当时明确规定了,在以下5种情况下(有且只有),类必须进行初始化(加载、验证、准备必须在初始化之前)。这5种方式也被称为主动引用,除此之外的其他引用都不会触发初
2017-09-02 18:03:31
4200
3
原创 泛型及其擦除
1. 什么是泛型,泛型具有什么优点定义:程序编码中包含类型参数的类型,泛型适用于类,接口,方法,主要目的之一是容器持有什么类型的对象,并且有编译器来保证类型的正确性。优点:1. 可重用性,相同功能的但是处理不同类型的数据,可用一份泛型代码完成。换句话说即编写的代码可以被很多不同类型的对象所重用。2. 类型安全:在编译期确保泛型类所接收的实际类型参数是正确的,不不会导致运行期的ClassC
2017-06-06 21:27:38
340
原创 java volatile可见性解析
很长一段时间中对于volatile关键字都是一知半解的,由于工作中用的比较少,也没有对其深入了解,直到看了《深入理解java虚拟机》之后,才有进一步的了解。 volatile是java虚拟机提供的最轻量级的同步机制,只能作用于变来那个,具备两种特性:保证此变量对所有线程的可见性:可见性是指一旦一个线程修改了此变量的值,其他线程能立即得知。禁止指令的重排序(本文暂不涉及)由于vol
2017-05-30 23:47:29
783
转载 mysql 5.7 安装
mysql 5.7 安装教程:http://jingyan.baidu.com/article/8cdccae946133f315513cd6a.html解压缩 将下载到的文件解压缩到自己喜欢的位置,例如我自己的位置是D:\Program Files\mysql-5.7.10-winx64添加环境变量 右键计算
2016-08-11 22:56:24
423
原创 eclipse中引入tomcat源码
对于学习tomcat来说,在IDE中引入tomcat并运行是第一步:首先下载tomcat源码:我是在eclipse中直接通过svn插件下载的:下载地址:http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk下载成功之后在tomcat中引入以下5个jar包。引入成功之后在Bootstrap.java中启动tomcat即可!
2016-08-08 20:07:41
261
原创 eclipse代码格式化模板
在eclipse中对代码的格式进行配置,好的格式化模板可提高编写的效率,并提高代码的可读性.在Window->Preferences->Java->Code Style中有两个选项:code formatter和formatter其中code formatter是对应代码注释的,例如一下代码:code formatter对应的是/** XXXXXXXXX */这个部分的格式模板设置。
2016-07-08 17:22:48
10225
原创 ORA-00942 表或视图不存在解决办法
本人在开发过程中遇到以下问题:解决办法:OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAME DB_LINKSNSMANAGER US_USERINFORMATION SNSMANGER US_USERINFORMATION EBOOK.TESTDBASNSMANAGER MCP_A
2016-07-02 18:23:52
4000
原创 replication factor: 1 larger than available brokers: 0 问题解决方案
用kfafka命令:./kafka-server-start.sh ../config/server.properties &启动时报以下错误:[2016-04-27 21:54:44,745] ERROR [KafkaApi-100] error when handling request Name: TopicMetadataRequest; Version: 0; Correlation
2016-04-27 23:02:37
31945
6
原创 在web工程中使用spring(web.xml)
在web工程中发送kafka消息的时候,采用容器管理kafka的producer对象。1.在web.xml中配置: org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:for
2016-04-27 21:38:10
569
原创 session知识点概括
1.session介绍:session主要用来存储用户的会话所需的信息(用户行为信息),当用户在同一个服务器上实现不同的操作时,session信息会以变量的形式存储在服务器的内存中,保存用户的状态信息,用户第一次访问服务时,服务器上不存在该用户session的信息,会为其创建一个session,并返回给客户端一个sessionid(具有唯一性和随机性),该sessionid一般情况下保存在客户端的
2016-03-16 10:34:51
705
原创 kafka的优点和新特性
kafka的优点:1.主要是用来解决百万级别的数据中生产者和消费者之间数据传输的问题2.可以将一条数据提供给多个接收这做不同的处理3.当两个系统是隔绝的,无法通信的时候,如果想要他们通信就需要重新构建其中的一个工程,而kafka实现了生产者和消费者之间的无缝对接。4.大数据时代,最重要的是数据的收集和分析,这些数据包括:1).用户的行为数据2).应用工程的性能数据3).
2016-01-23 22:25:00
14425
转载 JAVA线程池的使用
Java并发编程:线程池的使用Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个
2015-12-10 18:24:08
484
原创 log4j配置说明
1.格式说明layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):%c 输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName)%d 输出日志时间其格式为 %d{yyyy-MM-dd HH:
2015-12-06 10:29:13
345
原创 hbase shell常用命令
//删除表disable 'BOOKFANSSCOREDETAIL'drop 'BOOKFANSSCOREDETAIL'disable 'BOOKFANSSCORETOTAL'drop 'BOOKFANSSCORETOTAL'disable 'BOOKVICEADMIN'drop 'BOOKVICEADMIN'disable 'USERFANSSCOREDETAI
2015-10-18 21:44:56
357
原创 hadoop介绍
hadoop: 开源分布式计算平台 包括HDFS和Map/Reduce两个核心模块 HDFS具有高容错性和高伸缩性 MapReduce可以使用户在不了解分布式底层框架的前提下开发并行应用程序hadoop可以高效的存储管理和分析大数据,采用分布式存储方式来提高读写速度和扩大存储容量,采用MapReduce整合分布式文件系统上的数据,保证高速分析处理数据,采用冗余存储来保证数据的安全性
2015-10-18 21:41:23
463
原创 hadoop、zookeeper、hbase在Linux中的安装
1.准备Linux环境1.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:192.168.8.0 子网掩码:255.255.255.0 -> apply -> ok回到windows --> 打开网络和共享中心 -> 更改适配器设置 -> 右键VMnet1 -> 属性 ->
2015-10-18 21:21:26
807
空空如也
mongodb为集合增加字段
2016-09-14
EL表达式解析错误,页面无法展示
2015-12-30
oracle表中记录大于100条时删除插入时间最早的记录
2015-12-12
正则表达式保留两位小数点
2015-10-27
java String编译后变为Object是为什么
2015-09-14
java封装的优点是什么?
2015-09-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人