- 博客(39)
- 收藏
- 关注
转载 Java并发编程基础--马士兵2
ReentrantLock可以用于替代synchronized本例中由于m1锁定this,只有m1执行完毕的时候,m2才能执行.这里复习synchronized最原始的定义public class ReentrantLock1 { synchronized void m1() { for (int i = 0; i < 10; i++) { ...
2019-07-24 23:26:05
155
转载 设计模式总结。 Intepreter解释器---动态脚本解析--用的很少,写起来麻烦
创建型模式:对象怎么创建出来结构型模式: 观察类和类之间的结构行为型模式:类的动作主要记住这些模式的典型用法和类图。Abstract FactoryFactory MethodSingleton面向对象六大原则比如Person这个类就是“人”的属性。 而“人”的管理不要放到Person类里,新建一个类PersonManager.扩展的时候,添加新的子类扩展所有使用父类...
2019-07-24 15:25:59
193
转载 State状态模式--根据状态决定行为
如果一个类很多动作都是要根据state不同的状态去是实现的话,把State抽象出来,在具体的State里面实现这个方法。State模式的方法应该是固定的,根据不同的状态去写这些固定的方法实现。 如果方法是扩展的,State模式是不合适的。当然如果状态时固定的。直接写Switch...
2019-07-24 13:25:05
228
转载 Springboot--基础1
SpringBoot是什么?我们发现工程中并没有配置web.xml文件。 因为在SpringBoot项目中默认采用的Sevlet的版本是3.0版本,可以使用纯注解,不需要web.xml。...
2019-07-24 13:06:56
95
转载 Java并发编程基础--马士兵1
synchronized 关键字 对某个对象加锁public class T { private int count = 0; private final Object lock = new Object(); public void m() { synchronized (lock) { // 任何线程要执行下面的代码,都必须先拿到lock锁,...
2019-07-23 00:12:00
142
转载 TemplateMethod模板方法--换一个名词,钩子函数,回调函数
钩子函数就是模板方法这种模式。凡是我们重写一个方法系统自动帮我们调用的都可以称之为: TemplateMethod模板方法public class Main { public static void main(String[] args) { F f = new C1(); f.m(); }}abstract class F{ v...
2019-07-22 18:38:38
150
转载 Prototype--原型模式
Java 内部自带原型模式, 因为Java的Object类支持一个方法 Object.clone() . 原型模式也叫克隆模式。新生成的一个对象和原来的对象属性差不多一样,没必要new一个,再赋值属性值。 直接clone一个就叫原型模式。Cloneable 这个接口叫标记性接口,因为这个接口没有要求必须要实现的方法注意。克隆的是属性值,如果属性是个类对象,则新克隆的对象和原对象指向的是...
2019-07-22 17:08:10
131
转载 Java高并发---并发容器
例子:卖火车票/** * 有N张火车票,每张火车票都有一个编号 * 同时有10个窗口对外售票 * 模拟程序 * * 第一个程序会重复销售, 超量销售 * 第二个程序使用Vector 是个同步容器, 所有方法都是加锁的, 还是有问题, 判断size()和同步remove(0方法是分离的,中间还是有问题。 */public class TicketSeller2 { //V...
2019-07-21 21:45:11
134
转载 Command--封装命令模式
Command–命令模式,使用的挺多的。可能没感觉到。结构Chain Of Resposibility 实现undo功能(撤销功能Ctrl+Z)。Command–命令模式 别名: Action/Transacion , 就是用来封装各种各样的命令。...
2019-07-17 20:03:34
203
转载 Java高并发--线程池
public interface Executor { //用来执行某一个任务/*** Executes the given command at some time in the future. The command* may execute in a new thread, in a pooled thread, or in the calling* thread, at the...
2019-07-16 00:00:48
194
转载 Bridge模式双维度扩展
Bridge模式实际当中用的挺少。把抽象部分的继承树的发展,与具体实现部分的继承树的发展分离,但是在抽象部分聚合一个具体实现(每一个Gift都有个GiftImpl),两个维度让他们可以独自发展。Gift -> WarmGift ColdGift WildGiftGiftImpl -> Flower Ring Car礼物分温柔的礼物和狂野的礼物或者从WarmGift继承,...
2019-07-15 16:13:59
155
转载 Adapter(Wrapper 包装器,转换器)接口转换器--以及常见的误区
这里的jdbc-odbc bridge不是桥接模式,而是适配器模式。Adapter适配器模式容易产生的误区这里的WindowAdapter不是适配器模式,而是一种编程方法。 只是为了方便编程而已。public abstract class WindowAdapter implements WindowListener, WindowStateListener, WindowFocusL...
2019-07-15 15:19:18
223
转载 builder---构建复杂对象
这个模板方法非常像,这里强调的是构建对象。模板方法强调的是方法执行。public interface TerrainBuilder { //地形构建器 TerrainBuilder buildWall(); //墙 TerrainBuilder buildFort(); //碉堡 TerrainBuilder buildMine(); /...
2019-07-15 14:14:15
263
转载 jdk的动态代理;cglib
jdk的动态代理:import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.util.Random;/** * 使用代理模式,使用各种代理的组合 */public class Tank implement...
2019-07-15 11:50:32
82
转载 设计模式--访问者-Visitor
在结构不变的情况下动态改变对于内部元素的动作。 这个设计模式用的很少,且特殊。编译器的例子: 编译器的抽象语法树进行语法分析,在语法分析的时候会用到Visitor模式。内部结构固定的情况下使用visitor. 下面的Computer 类就是固定的(假设Computer只有三种组成)。visitor模式只适用于内部结构固定的。package com.qqlindy.visitor;p...
2019-07-11 17:38:17
175
转载 设计模式--代理--iterator迭代器
在物理层面上,做数据存储上只有两种形式, 一种就是连续存储,就叫数组。第二种跳着存储,就叫链表。所有其他所谓的容器,底层都是由这两种实现的。 各种HashSet, 各种List, 各种queue, Stack栈,本质都是由数组或者链表实现的。平常我们说的都是逻辑结构。 比如二叉树。 底层可以用数组或者链表实现。物理结构只有两种:数组和链表。 @Override publ...
2019-07-03 19:47:22
117
转载 设计模式--享元Flyweight--重复利用对象; Java里的String就是用的享元模式。Java里的String所有的字符串都放在一个常量池里
享元–共享元数据, 小对象直接放池子里。 用的时候直接拿,不用new.坦克子弹代码:new 出来的 子弹在List里, 当子弹跑出整个页面时,把它的living标志置为false. 当需要新生成子弹时,把这个子弹位置改下,标志置为true即可。import java.util.ArrayList;import java.util.List;import java.util.UUID;...
2019-07-01 14:57:23
361
转载 设计模式--组合Composite--树状结构专用模式
图解代码package com.qqlindy.composite;import java.util.ArrayList;import java.util.List;abstract class Node { abstract public void p();}class LeafNode extends Node{ String content; ...
2019-07-01 14:09:23
117
转载 并发编程--并发编程的原理
Lock的使用AQS原理分析Condition–jdk层面的wait和notifyCountDownLatch Semaphore线程池原理分析
2019-06-30 16:35:43
347
转载 spring boot----01.spring boot 介绍
import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.Sprin...
2019-06-27 19:01:35
79
转载 并发编程--并发编程的原理
synchronized原理分析解决原子性,可见性,有序性。synchronized是什么?synchronized后面锁的是一个具体要获得锁的对象。synchronized是如何实现锁的?每个对象都能实现一个对象监视器(独占锁),因为Java对象天生都带一个监视器。偏向锁–》轻量级锁–》重量级锁3.为什么任何一个对象都可以成为锁?4.锁存在哪个地方?对象头mark ...
2019-06-25 17:35:40
119
原创 并发编程--多线程的实现原理
JMM内存模型JMM:定义了共享内存系统中线程去访问内存的一种规范,去屏蔽硬件和操作系统内存访问的差异。它最终实现java程序在各个平台下都能达到一致内存访问的效果。JMM是一种规范,目的是解决多线程通过共享变量通信的时候去导致本地内存数据不一致的问题。JMM内存模型是基于物理模型的抽象。主内存定义的是jvm上的堆内存。 堆内存是从当前硬件物理内存分配给进程一块内存。JMM如何解决原子...
2019-06-23 23:55:59
320
转载 设计模式--Facade门面-Mediator调停者
Facade门面:例如去政府部门办一件事情: 要跑政府的很多部门。 下面是改进。 它不是中介。一站式代办。Mediator调停者: 消息中间件就是Mediator调停者模式。部门内部打交道。-Facade门面-Mediator调停者可以看作是同一种设计模式...
2019-06-20 16:15:14
360
1
转载 设计模式--工厂系列
定义:工厂方法在产品上扩展是很方便的, 而抽象工厂在具体的产品一族(食物, 武器, 交通工具)的扩展是方便的Spring 的bean工厂是更好的解决方案。简单工厂 随便一个方法,create一个新东西就是简单工厂。静态工厂 单例就是个静态工厂。 静态方法的产生。工厂方法: 在产品维度上扩展很方便。抽象工厂: 在具体产品一族上扩展很方便。Spring IOC...
2019-06-20 15:50:46
86
原创 设计模式--策略模式
Comparable接口Comparator 接口jdk1.8之后接口里是可以有方法实现的,因为要支持Lambda表达式。strategy_策略模式-1strategy_策略模式-2strategy_策略模式-3strategy_策略模式-4strategy_策略模式-5...
2019-06-19 16:25:16
218
原创 设计模式---单例模式Singleton
/** * 饿汉式 * 类加载到内容后,就实例化一个实例, * JVM保证线程安全: JVM保证每一个Class只会load到内存一次,static关键字是在Class load到内存之后马上就行初始化,也保证初始化一次。 * 简单实用,推荐使用 * 唯一缺点:不管用到与否,类装载时就完成实例化 * */public class Mgr01 { private ...
2019-06-19 00:05:44
108
原创 设计模式--简单工厂
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2019-06-18 22:45:52
100
转载 Mybatis---入门4--mybatis的缓存和注解开发--mybatis的加载时机(查询的时机)--mybatis的一级缓存和二级缓存--mybatis的注解开发(单表CRUD,多表查询)
Mybatis—入门4–mybatis的缓存和注解开发–mybatis的加载时机(查询的时机)–mybatis的一级缓存和二级缓存–mybatis的注解开发(单表CRUD,多表查询)
2019-06-13 15:58:46
127
转载 Mybatis---入门3--mybatis深入和多表--mybatis的连接池--mybatis的事务控制及涉及的方法--mybatis的多表查询(一对多,多对一,多对多)
Mybatis—入门3–mybatis深入和多表–mybatis的连接池–mybatis的事务控制及涉及的方法–mybatis的多表查询(一对多,多对一,多对多)
2019-06-13 15:56:25
148
转载 Mybatis---入门2--mybatis基本使用--mybatis单表的crud操作--mybatis的参数和返回值--mybatis的dao编写--mybatis配置文件
Mybatis—入门2–mybatis基本使用–mybatis单表的crud操作–mybatis的参数和返回值–mybatis的dao编写–mybatis配置文件
2019-06-13 15:54:15
182
转载 Mybatis---入门1--概述--环境搭建--入门案例--自定义mybatis框架(了解mybatis执行细节)
Mybatis—入门1–概述–环境搭建–入门案例–自定义mybatis框架(了解mybatis执行细节)
2019-06-13 15:52:57
119
转载 Spring--注解--杂记--待更新
@Configuration有什么用?@Configuration和XML有什么区别?哪种好?Spring是如何基于来获取Bean的定义的?@Autowired 、 @Inject、@Resource 之间有什么区别?@Value、@PropertySource 和 @Configuration?Spring如何处理带@Configuration @Import的类?@Profile...
2019-06-13 15:19:15
135
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人