- 博客(20)
- 收藏
- 关注
原创 java 泛型
1. 认识泛型 泛型是在JDK1.5之后增加的新功能. 泛型可以解决数据的安全性问题, 主要的原理是在类声明的时候通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型. 格式: 访问权限 class 类名称<泛型, ...="">{ 属性 方法} 对象的创建: 类名称<具体类...
2018-12-29 16:25:51
135
转载 Java中final关键字
Java中final关键字许多编程语言都有某种方法,来向编译器告知一块数据是恒定不变的。有时候数据的恒定不变是很有用的,例如:一个编译时恒定不变的常量 一个在运行时初始化,而你不希望它被改变的变量对于编译期常量的这种情况,编译器可以将该常量值代入任何可能用到它的计算式中,也就是说,可以在编译期就执行计算式,这减轻了一些运行时的负担。在Java中,这类常量必须是基本类型的,并且以fina...
2018-12-27 13:53:58
230
转载 mysql 执行计划分析
MYSQL 执行计划(explain详解)使用explain后给出的相关索引信息下面是一个select语句的使用explain之后的例子:idselect查询的序列号select_typea.SIMPLE:查询中不包含子查询或者UNIONb.PRIMARY:查询中若包含任何复杂的子部分,最外层查询的标记c.SUBQUERY:在SELECT或WHERE列表中包含了...
2018-12-27 10:58:25
371
转载 order by 优化
前言:在使用order by时,经常出现Using filesort,因此对于此类sql语句需尽力优化,使其尽量使用Using index。0.准备#1.创建test表。drop table if exists test;create table test(id int primary key auto_increment,c1 varchar(10),c2 varchar(...
2018-12-25 21:38:32
243
原创 关于dubbo
1.什么是dubbo? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。(简单的说就是一个远程服务调用的分布式框架)2.dubbo能干什么? 1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 2.软负载均衡及容错机制,可在内网替代F5等硬件...
2018-12-21 16:57:23
131
1
转载 乐观锁和悲观锁
一、问题引出1. 假设当当网上用户下单买了本书,这时数据库中有条订单号为001的订单,其中有个status字段是’有效’,表示该订单是有效的;2. 后台管理人员查询到这条001的订单,并且看到状态是有效的;3. 用户发现下单的时候下错了,于是撤销订单,假设运行这样一条SQL: update order_table set status = ‘取消’ where order_id = ...
2018-11-09 17:16:03
96
转载 原子操作类AtomicInteger详解
为什么需要AtomicInteger原子操作类?对于全局变量的数值类型操作 num++,若没有加synchronized关键字则是线程不安全的,num++解析为num=num+1,明显,这个操作不具备原子性,多线程时必然会出现问题。测试下:public class AtomicIntegerTest1 { public static int count = 0; public...
2018-11-09 16:02:57
171
转载 volatile 关键字
一、基本概念先补充一下概念:Java 内存模型中的可见性、原子性和有序性。可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。 可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。也就是...
2018-11-09 14:53:50
100
原创 synchronized 关键字
线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。因此为了解决这个问题,我们可能需要这样一个方案,当存在多个线程操作共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再进行,这种方式有个高尚的名称叫互斥锁,即能达到互斥访问目的的锁,也就是...
2018-09-21 15:49:50
91
原创 单例模式
Java 单例模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。 单例模式主要有3个特点:1、单例类确保自己只有一个实例。2、单例类必须自己创建自己的实例。3、单例类必须为其他对象提供唯一的实例。单例模式的实现方式...
2018-09-18 16:41:44
100
原创 命令模式
命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。 命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式的结构 命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。 每一个命令都是一...
2018-09-18 11:27:33
107
原创 ArrayBlockingQueue 和 LinkedBlockingQueue
一. 什么是队列? 队列(queue)是一种线性表,一端插入,另一端取出。跟排队一样,刚来的人排在后面,先排队的人先走。二. BlockingQueue(阻塞队列) 在Concurrent包中,BlockingQueue很好的解决了多线程中,高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。阻塞队列与我们...
2018-09-18 10:45:22
295
转载 ThreadPoolExecutor 线程池
使用线程池主要为了解决一下几个问题:通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销。 对线程进行一些维护和管理,比如定时开始,周期执行,并发数控制等等。ExecutorExecutor是一个接口,跟线程池有关的基本都要跟他打交道。下面是常用的ThreadPoolExecutor的关系。Executor接口很简单,只有一个execute方法。ExecutorSer...
2018-09-18 10:42:31
128
原创 模板模式
模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。通俗的说的就是有很多相同的步骤的,在某一些地方可能有一些差别适合于这种模式,如大话设计模式中说到的考试场景中,每个人的试卷都是一样的,只有答案不一样。这种场景就适合于模板方法模式。我这次自己写的是一个汽车启动的过程,每一种汽车启动的过程都基本是一样的流...
2018-09-18 09:17:00
101
转载 深入理解Spring的两大特征(IOC和AOP)
众所周知,Spring的核心特性就是IOC和AOP,IOC(Inversion of Control),即“控制反转”;AOP(Aspect-OrientedProgramming),即“面向切面编程”。参考书《Spring In Action》,下面分享一下我对这两大特性的个人理解。IOC:IOC,另外一种说法叫DI(Dependency Injection),即依赖注入。它并不是一种技术实...
2018-09-17 16:54:43
285
原创 spring事物配置,声明式事务管理和基于@Transactional注解的使用
spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入...
2018-09-17 14:39:13
270
原创 Spring事务管理(一)什么是事务?
1. 事务的概念什么是事务?事务必须服从ACID原则。ACID指的是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。通俗理解,事务其实就是一系列指令的集合。 -------------------************-------------事务的4大特性原子性:事务更改要么全部成功,要么全部失...
2018-09-17 14:34:01
263
转载 RMI与RPC的区别
一:RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务。 一次RPC调用的过程大概有10步: 1.执行客户端调用语句,传送参数 2.调用本地系统发送网络消息 3.消息传送到远程主机 4.服务器得到消息并取得参数 5.根据调用请求以及参数执行远程过程(服务) ...
2018-09-14 17:37:29
132
原创 代理模式
代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。为什么要采用这种间接的形式来调用对象呢?一般是因为客户端不想直接访问实际的对象,或者访问实际的对象存在困难,因此通过一个代理对象来完成间接的访问。或者是在一个系统初始化过程中,有些耗时特别长的处理,如果在初始化的时候连那些暂时不会被使用的功能也初始化了,那么应用程序的启动...
2018-09-09 21:38:45
143
原创 策略模式
策略模式定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。类型:行为类模式类图: 策略模式是对算法的封装,把一系列的算法分别封装到对应的类中,并且这些类实现相同的接口,相互之间可以替换。在前面说过的行为类模式中,有一种模式也是关注对算法的封装——模版方法模式。 对照类图可以看到,策略模式与模版方法模式的区别仅仅是多了一个单独的封...
2018-09-07 14:45:51
125
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人