- 博客(383)
- 资源 (26)
- 问答 (4)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 常用个人博客地址
目录mybatis-generator 代码自动生成工具非原创MyBatis逆向工程代码的生成以及使用详解(持续更新) 通过导入工程 运行main方法解决plsql中文显示问号(???)问题JDBC连接ORACLE的三种URL格式javax.ws.rs 注解idea实用快捷键StopWatch 监控Java代码运行时间和分析性能mybatis插入时返回主...
2019-05-24 22:30:05
350
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 springboot自动配置
运作原理关于Spring Boot 的运作原理,我们还是回归到@SpringBootApplication 注解上来,这个注解是一个组合注解,它的核心功能是由@EnableAutoConfiguration 注解提供的。下面我们来看下@EnableAutoConfiguration 注解的源码:@Target({ElementType.TYPE})@Retention(RetentionPoli...
2018-03-21 10:03:25
467
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 Spring BeanFactory与FactoryBean的区别
BeanFactory,以Factory结尾,表示它是一个工厂类(接口),用于管理Bean的一个工厂。在Spring中,BeanFactory是IOC容器的核心接口,它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。 Spring为我们提供了许多易用的BeanFactory实现,XmlBeanFactory就是常用的一个,该实现将以XML方式描述组成应用的对象及对象间的依赖...
2018-02-24 12:32:34
264
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 设计模式--策略模式
策略模式的结构 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。下面就以一个示意性的实现讲解策略模式实例的结构。 这个模式涉及到三个角色: ● 环境(Context)角色:持有一个Strategy...
2018-02-23 15:55:08
213
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 Java的三种代理模式
1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人...
2018-02-22 16:23:46
312
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 多线程--ExecutorService
相比ExecutorService,CompletionService可以更精确和简便地完成异步任务的执行CompletionService的一个实现是ExecutorCompletionService,它是Executor和BlockingQueue功能的融合体,Executor完成计算任务,BlockingQueue负责保存异步任务的执行结果。ExecutorCompletionService...
2018-02-06 15:10:01
288
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 多线程编程中的等待/通知机制和等待超时模式
1. 等待/通知机制等待/通知机制,是指WaitThread首先获取了对象的锁,然后调用对象的wait()方法,从而放弃了锁进入了对象的等待队列中,进入等待状态。NotifyThread随后获取了对象的锁,并调用对象的notify()或notifyAll()方法,将Wai tThread从等待队列中移到同步队列中,此时等待线程的状态变为阻塞状态。 下面分别针对等待方(消费者)和通知
2018-01-25 09:45:42
775
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 kafka生产者消费者
kafka的安装与启动http://blog.csdn.net/u010081710/article/details/50835039下面java代码中生产者和消费者栗子,producer采用池管理,spring容器启动的时候初始化一定数量的生产者,由连接池管理,使用对象的时候borrowObject()
2017-08-30 16:05:01
563
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 dubbo配置及使用
一. Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了Dubbo就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务
2017-08-23 20:00:36
294
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 ZooKeeper分布式锁
maven配置 org.apache.curator curator-framework 2.8.0 org.apache.curator curator-recipes 2.8.0Curator框架是最好用,最流行的zookeeper的客户端。它有以下三个优点1.提供了一套非常友好的操作API;2. 提供一些高级特性(包括但不仅限于前篇文章中
2017-07-19 17:01:43
303
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 ZooKeeper:第三方客户端
Apache Curator入门实战Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发量。1.Zookeeper安装部署Zookeeper的部署很简单,如果已经有Java运行环境的话,下载tarball解压后即可运行。[root@vm Te
2017-07-19 16:17:52
550
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 MySQL执行计划解读
执行计划select_type 表示查询中每个select子句的类型(简单 OR复杂)a.SIMPLE:查询中不包含子查询或者UNIONb.查询中若包含任何复杂的子部分,最外层查询则被标记为:PRIMARYc.在SELECT或WHERE列表中包含了子查询,该子查询被标记为:SUBQUERYd.在FROM列表中包含的子查询被标记为:DERIVED(衍生)
2017-06-26 16:59:31
376
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 mysql索引类型和索引方法
mysql索引类型normal,unique,full text的区别是什么?normal:表示普通索引unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为uniqueFullText:表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。总结
2017-06-26 16:01:34
2675
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 MySQL索引类型总结和使用技巧以及注意事项
在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了10000条记录,其中有一条:5555, admin。在查找username="admin"的记录 SELECT * FRO
2017-06-23 10:58:14
324
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 ArrayBlockingQueue和LinkedBlockingQueue的区别
1. 队列中锁的实现不同 ArrayBlockingQueue实现的队列中的锁是没有分离的,即生产和消费用的是同一个锁; LinkedBlockingQueue实现的队列中的锁是分离的,即生产用的是putLock,消费是takeLock 2. 在生产或消费时操作不同 ArrayBlockingQueue实现的队列中在生产和消
2017-06-20 22:47:18
1179
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 设计模式--观察者模式
软件设计模式的分类创建型创建对象时,不再由我们直接实例化对象;而是根据特定场景,由程序来确定创建对象的方式,从而保证更大的性能、更好的架构优势。创建型模式主要有简单工厂模式(并不是23种设计模式之一)、工厂方法、抽象工厂模式、单例模式、生成器模式和原型模式。结构型用于帮助将多个对象组织成更大的结构。结构型模式主要有适配器模式adapter、桥接模式bridge、组合器模式component、装饰器...
2017-06-19 17:50:19
418
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 设计模式--门面模式
门面模式定义:提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。在这个对象图中,出现了两个角色:门面(Facade)角色:客户端可以调用这个角色的方法。此角色知晓相关的(一个或者多个)子系统的功能和责任。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。子系统(subsystem)角色:
2017-06-19 17:04:16
331
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 线程池ThreadPoolExecutor参数设置
JDK1.5中引入了强大的concurrent包,其中最常用的莫过了线程池的实现ThreadPoolExecutor,它给我们带来了极大的方便,但同时,对于该线程池不恰当的设置也可能使其效率并不能达到预期的效果,甚至仅相当于或低于单线程的效率。ThreadPoolExecutor类可设置的参数主要有:corePoolSize核心线程数,核心线程会一直存活,即使没有任务需要处理。当线程数小于核心线程...
2017-06-16 23:41:03
424
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 JAVA设计模式之抽象工厂模式
抽象工厂模式代码产品类://发动机以及型号 public interface Engine { } public class EngineA extends Engine{ public EngineA(){ System.out.println("制造-->EngineA"); } }
2017-06-15 22:41:12
247
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 工厂方法模式
一、简单工厂模式 简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。 先来看看它的组成: 1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,用来创建产品 2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。 3) 具体产品角...
2017-06-15 22:24:18
231
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 Java动态代理的两种实现方法
AOP的拦截功能是由java中的动态代理来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标类函数抛出异常时候执行。不同的切入时机对应不同的Interceptor的种类,如BeforeAdviseInterceptor,AfterAdviseInterceptor以及ThrowsAdviseIntercepto...
2017-06-12 15:12:37
3227
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 分布式事务介绍
2 分布式事务—两阶段提交协议两阶段提交协议(Two-phase Commit,2PC)经常被用来实现分布式事务。一般分为协调器C和若干事务执行者Si两种角色,这里的事务执行者就是具体的数据库,协调器可以和事务执行器在一台机器上.1) 我们的应用程序(client)发起一个开始请求到TC;2) TC先将消息写到本地日志,之后向所有的Si发起消息。以支付宝转账到余额宝为例,TC给
2017-06-07 12:00:22
286
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 Java泛型
泛型类型的提出public class GenericTest { public static void main(String[] args) { List list = new ArrayList(); list.add("qqyumidi"); list.add("corn"); list.add(100); ...
2017-06-04 22:13:33
377
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 关于线程同步(5种同步方式)
关于线程同步(5种同步方式)1.同步方法 即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。代码如: public synchronized void save(){} 注: synchron
2017-06-04 21:50:18
508
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 单例模式的7种写法
第一种(懒汉,线程不安全):public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Sin
2017-06-04 16:39:30
735
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Java类加载机制
类的初始化Java中类的加载顺序剖析Java虚拟机中可以安装多个类加载器,系统默认主要有三个类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader,AppClassLoader。当然也可以自定义类加载器,自定义的加载器必须继承ClassLoader。Java程序运行的场所是内存,当在命令行下执行:java HelloWorld命令的时候,
2017-06-04 11:37:28
327
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 Java中类的加载顺序剖析
Class Bpublic class B{//静态变量 static int i=1;//静态语句块static { System.out.println("Class B1:static blocks"+i);}//非静态变量int j=1;//静态语句块static{ i++; System.out.println("Class B2:stat
2017-06-04 10:46:08
287
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 Hibernate与 MyBatis的比较
Hibernate 是当前最流行的O/R mapping框架,它出身于sf.NET,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/R mapping框架。目前属于apache的一个子项目。MyBatis 参考资料官网:http://www.mybatis.org/core/zh/index.htmlHibernate参考资料: http://docs.jboss
2017-06-02 17:37:44
266
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 java 异常分类
java异常结构图鼠标移动到该类名处, 直接按快捷键ctrl + t。说明:此快捷键是查看到有这个同名方法的父类、子类、接口。java异常分为"检查"和"非检查"两类,"检查"二字的意思是,代码编译时,编译器会去Check一下有没有进行异常处理(捕获或向上抛),对于归类为需要检查的异常,若没处理,编译就过不去。初学的时候,常常想为啥异常要这样分类处理? 后来明白了些,异
2017-05-25 13:58:27
404
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 Spring事务管理
理解事务之前,先讲一个你日常生活中最常干的事:取钱。 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱;然后ATM出1000元钱。这两个步骤必须是要么都执行要么都不执行。如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元;如果银行卡扣钱失败但是ATM却出了1000块,那么银行将损失1000元。所以,如果一个步骤成功另一个步骤失败对双方
2017-03-28 18:05:50
383
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 @Transactional(readOnly = true)
概念:从这一点设置的时间点开始(时间点a)到这个事务结束的过程中,其他事务所提交的数据,该事务将看不见!(查询中不会出现别人在时间点a之后提交的数据) 应用场合:如果你一次执行单条查询语句,则没有必要启用事务支持,数据库默认支持SQL执行期间的读一致性; 如果你一次执行多条查询语句,例如统计查询,报表查询,在这种场景下,多条查询SQL必须保证整体的读一致性,否则,在前条SQL查询之
2017-03-28 17:21:37
4374
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 JVM内存模型
我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子
2017-03-27 18:34:53
408
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 JVM GC垃圾回收
对象的存活判断:可达性分析算法通过一系列的称为 GC Roots 的对象作为起点, 然后向下搜索; 搜索所走过的路径称为引用链/Reference Chain, 当一个对象到 GC Roots 没有任何引用链相连时, 即该对象不可达, 也就说明此对象是不可用的;在Java, 可作为GC Roots的对象包括:1.方法区: 类静态属性引用的对象;2.方法区: 常量引用的对象;3.虚拟机栈(本地变量表...
2017-03-27 17:47:43
442
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 数据库锁机制
一 、乐观锁和悲观锁【悲观锁】所谓悲观锁就是基于数据库机制实现的。比如在在使用select子句的时候加上for update,那么直到改子句的事务结束为止,任何应用都无法修改select出来的记录。【乐观锁】所谓乐观锁是基于应用的版本机制来实现的。数据库中帐户信息表中有一个 version字段,当前值为1;而当前帐户余额字段(balance)为$100。 1、操作员
2017-03-24 19:38:05
407
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 数据库的隔离级别
数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现脏读,不可重复读,幻读。下面通过事例一一阐述它们的概念与联系。Read uncommitted读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。事例:老板要
2017-03-24 15:45:09
506
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 java元注解和自定义注解
四个元注解分别是:@Target,@Retention,@Documented,@Inherited ,再次强调下元注解是java API提供,是专门用来定义注解的注解,其作用分别如下:@Target 表示该注解用于什么地方,可能的值在枚举类 ElemenetType 中,包括: ElemenetType.CONSTRUCTOR-----------构造器声明 ElemenetTy
2017-03-13 17:47:40
320
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 HashMap、ConcurrentHashMap
一、定义 HashMap实现了Map接口,继承AbstractMap。其中Map接口定义了键映射到值的规则,而AbstractMap类提供 Map 接口的骨干实现,以最大限度地减少实现此接口所需的工作,其实AbstractMap类已经实现了Map。[java] view plain copy print?public cl
2016-08-12 16:16:09
577
1
wordTemplate.rtp
2017-07-13
crypto-js-develop
2016-02-29
quartz1.8开发包
2015-11-19
spring + jtom 事务控制
2017-03-16
Linux下 rpm安装nginx
2016-08-31
x86_64-whatever-linux2
2016-08-31
kafka.common.KafkaException:
2016-03-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人