自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

流的博客

spring全家桶/分布式/hadoop生态

  • 博客(42)
  • 收藏
  • 关注

原创 设计模式(二十三):中介模式

1. 定义例如聊天室,如果没有聊天室这个中介,所有消息的传输都是一对一,有了聊天室才可以实现广播。2. 聊天室用户,可以在聊天室发消息消息类聊天室测试:...

2019-10-31 22:08:18 104

原创 设计模式(二十二):命令模式

1. 定义将其请求的调用者和请求的执行者解耦。2. 命令和执行者解耦先构建一个课程视频:打开和关闭视频命令类命令的管理类测试

2019-10-31 20:15:42 94

原创 设计模式(二十一):备忘录模式

1. 定义例如:游戏的存档

2019-10-31 19:56:58 128

原创 设计模式(二十):观察者模式

1. 定义例如:你关注了某个商品,商品降价就会自动提醒你。2. 被观察者变化通知观察者一个课程类作为被观察者,继承了jdk的ObservableObservable提供了一系列对观察者的操作。编写一个question:一旦有人提问,老师就会收到通知老师作为观察者实现了Observer,并可以在被观察者发生变化的时候做出update测试...

2019-10-31 13:30:44 121

原创 设计模式(十九):解释器模式

1. 定义例如:正则表达式就是定义了一种规则去解释字符串的含义。解释器在实际生产过程中使用的很少2. 运算符解释器的实现定义一个解释器接口数字解释器加法解释器乘法解释器语法解释器public class ExpressionParser { private static Stack<Interpret> stack = new Stack<&...

2019-10-30 20:36:13 120

原创 设计模式(十八):策略模式

1.定义日常使用的if…else… 就是场景的不同策略。

2019-10-30 19:48:12 119

原创 设计模式(十七):迭代器模式

1. 定义比如集合:迭代器将存储数据和遍历数据隔离开来,但是每新增加一个集合就需要新增一个迭代器类型。日常使用时很少会自定义给一个迭代器,都是复用jdk的迭代器。2. 管理课程课程public class Course { private String name; public Course(String name) { this.name = nam...

2019-10-29 20:50:37 103

原创 设计模式(十六):模板模式

1. 定义优点缺点模板模式和策略模式的区别:模板方法模式的主要思想:定义一个算法流程,将一些特定步骤的具体实现、延迟到子类。使得可以在不改变算法流程的情况下,通过不同的子类、来实现“定制”流程中的特定的步骤。(代码复用)策略模式的主要思想:使不同的算法可以被相互替换,而不影响客户端的使用。(if else这种不同情况下的不同策略)2....

2019-10-29 20:25:05 117

原创 由浅clone遇到的问题,剖析理解clone的原理

昨天偶然遇到有人问到关系深克隆和浅克隆的问题,于是我仿写了一个例子,但是我发现打印出来的效果不尽人意:自定义的teacher,重写了clone方法public class Teacher implements Cloneable { private String name; private String course; public Teacher(String na...

2019-10-28 10:36:01 270

原创 springboot源码: springboot初始化过程

1. new SpringApplication()在springboot种执行这一行操作的时候,SpringApplication.run(DemoApplication.class, args);运行如下代码,初始化SpringApplication对象。public SpringApplication(ResourceLoader resourceLoader, Class<?&g...

2019-10-24 20:10:34 796

原创 关于@Value修饰静态数据的使用失效

1. 起因@Value("${sqlserverDB.a}")private static String a;@Value("${sqlserverDB.b}")private static String b;@Value("${sqlserverDB.c}")private static String c;但是出现了一个问题:打断点发现,静态初属性注入数据时为null解决办...

2019-10-24 14:29:14 748

原创 设计模式(十五):代理模式

1.定义优点缺点

2019-10-23 22:26:31 128

原创 初次体验协程,对比线程有哪些优势(利用阿里库快速引入Quasar)

1. 什么是协程简单可以理解为理解为用户态线程,在学过操作系统的时候我们知道,线程可以在用户态和内核态之间切换,目前java中所实现的线程都会有自己的上下文,上下文在线程的运行过程中会不断的切换,线程就会不断地从用户态和内核态之间切换。由此带来巨大开销。协程:我们可以简单的理解为用户态线程,避免了内核态和用户态之间的切换来减少线程上下文切换的开销。但是JVM原生是不支持这样的操作的。因此如果...

2019-10-23 11:04:16 907

原创 设计模式(十四):桥接模式

1. 定义优点缺点适配器模式和桥接模式的区别适配器模式:通过改变接口,目的是让他们相容。桥接模式:目的是将抽象和实现分离开来。两者使用的接口可以不同,目的是分离。2. 抽象部门和实现部分分离2.1 实现部分Account开户,是实现部分具体实现–活期账号具体实现–分期账号2.2 抽象部分银行开什么银行的账户是抽象部分ABC银行ICBC银行2.3 测试...

2019-10-22 21:25:57 105

原创 设计模式(十三):组合模式

1. 定义优点缺点2. 对象具有层次结构,客户端看不见层次关系一个目录抽象类目录:此时产生了子目录items,存在递归关系。/** * 课程目录 */public class CourseCatalog extends CatalogComponent { private List<CatalogComponent> items = new Array...

2019-10-22 20:36:05 85

原创 散列算法: MD5,SHA-2,彩虹表

1.散列算法哈希算法主要有MD4、MD5、SHA。MD4 1990年 输出128位 (已经不安全)MD5 1991年 输出128位 (已经不安全)SHA-0 1993年 输出160位 (发布之后很快就被NSA撤回,是SHA-1的前身)SHA-1 1995年 输出160位 (已经不安全)SHA-2包括SHA-224、SHA-256、SHA-384,和 SHA-512,分别输出224、25...

2019-10-22 16:20:30 2569

原创 设计模式(十二):享元模式

1. 定义优点:缺点:外部对象:随着变化而变化的对象(stringbuilder)内部对象:不随着变化而变化(string)

2019-10-22 13:34:27 134

原创 设计模式(十一):适配器模式

1. 定义优点缺点

2019-10-21 22:29:20 81

原创 设计模式(十):装饰模式

1. 定义优点:对象的扩展和对象本身区别开来,更加灵活缺点2. 继承实现对类的增强假设有一个煎饼,8块钱加个鸡蛋,加一块加根肠,2块此时有一个问题:如果加1到100根肠的可能性都有,难道继承100次?3. 装饰模式实现对方法的增强一个抽象的煎饼一个具体的煎饼抽象的装饰者的构造方法要求传入一个煎饼一个加鸡蛋的装饰者一个加火腿的装饰者测试类图...

2019-10-21 20:23:28 183

原创 springboot(十一):springboot整合mybatis-plus(纯注解开发)

1. mybatis-plus新增了许多功能:1.代码生成器2.通用的CURD3.条件构造器4.自定义SQL语句5.分页插件、性能分析插件2. 使用2. 配置2.2 实体类2.3 分页插件2.4 自定义sql2.5 service2.6 controller2.7 测试basemapper中的方法:分页查询:自定义sql:3. 具体使用my...

2019-10-21 17:55:38 2110

原创 设计模式(九):外观模式

1. 定义优点:缺点:2 .实现购买积分礼物积分礼物类校验是否可以支付礼物支付礼物物流生成订单模块将上面的三个模块隐藏起来,对外开放礼物兑换的接口(外观模式的核心)测试使用3 查看类图关系...

2019-10-21 13:12:07 117

原创 设计模式(八):原型模式

1. 定义使用场景当直接创建对象的代价比较大时,则采用这种模式 。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。优点缺点2. 克隆一个类实现一个mail类,重写clone方法写一个mailutil工具类主函数:克隆10次mail类结果3. 深克隆和浅克隆3.1...

2019-10-20 20:45:46 140

原创 设计模式(七): 单例模式(懒汉、饿汉、静态内部类、双重检验锁、枚举、序列化反序列化、反射攻击、容器单例)

1. 定义优点缺点特性:(1)私有构造函数(2)线程安全(3)延迟加载(4)序列化和反序列化(5)反射攻击2. 懒汉模式多线程创建:主函数直接调用开启线程调试:类型设置为Thread开始调试:thread0thread1直接往下走,生成两个对象。3. 双重检验锁...

2019-10-17 20:34:52 378

转载 java类初始化时机

1. 类的加载顺序类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Useing)、卸载(Unloading)7个阶段。其中验证、准备和解析3个部分统称为连接(Linking),这7个阶段的发生顺序如图所示。...

2019-10-13 22:31:11 159

原创 设计模式(六): 建造者模式

1. 定义

2019-10-12 13:29:55 115

原创 设计模式(五): 抽象工厂

1. 定义使用场景优点缺点产品族:比如美的产品等级结构:比如空调通过唯一的产品族和产品等级结构就可以确定唯一的产品。

2019-10-11 13:45:07 109

原创 设计模式(四): 工厂方法

1. 定义工厂方法的缺点2. 更多的factory实现类相比简单工厂模式,抽象工厂模式需要一个工厂接口和很多的实现类去实现不同的类型的工厂一个抽象的video和两个实现类JavaVideo和PythonVideo一个抽象的VedioFactory和两个VedioFactory实现类主函数3. 类图项目代码:https://github.com/LUK-qianl...

2019-10-10 20:27:43 136

原创 设计模式(三): 简单工厂

1. 定义

2019-10-10 19:59:11 120

原创 @Transactional使得自定义注解失效

自定注解的实现类上需要使用事务。(同时操作多个数据库),发现无法生效,自定注解的方法无法被获取到。下面是调试:不加@Transactional的情况下调试:加@Transactional的情况下调试:发现AOP将@Transactional将代理的类给重写了,所以拿到的实际方法是被修改过后的(以此来保证事务)。所以将需要事务的代码块单独拿出来做成一个方法。...

2019-10-09 18:00:31 1066 4

原创 关于spring中使用反射的后反射类中无法使用spring中的bean

为了降低代码的耦合度,对于用户的操作做出了分类,遵循依赖倒置原则采用Command接口编程。以后想获取不同Command可以通过反射去获取即可。然后执行commad.run()方法。于是问题出现了在command的一个实现类中出现了一个问,无法使用userDao,后来通过不断的调试发现UCommand的依赖关系没有注入到spring中。加上我是在想使用的时候再会反射去调用,这时候spring依...

2019-10-09 16:56:34 1369

原创 关于String的连续追问

1.String s= "123"和String str = new String(“123”)的区别可能你会疑惑为什么是上面的答案?那么,这等价于问你一个问题,String s = new String(“123”);分配了几次内存?答案是两次。第一次在栈中分配内存存放了一个"123",这是一个共享的数据,所有的String s = “123”;都会指向这个"123";第二次是在堆中分配...

2019-10-08 21:30:03 384

原创 设计模式(二): 七大设计原则

1. 开闭原则

2019-10-07 15:26:27 178

原创 设计模式(一): UML类图和时序图

1.类图(1)类图的继承(extends)和实现(implements)大雁实现了飞翔的接口,大雁“虚线”转向了飞翔,空心三角号。唐老鸭继承了鸭这个类,实线+空心三角号。(2)关联关系:通常是一个类用另一个类当作属性企鹅与气候是关联关系:用实线加箭头表示企鹅关联气候(企鹅把气候作为属性)(3)依赖关系:通常是一个类把其他类作为参数或者返回值动物依赖水和氧气,用虚线+箭头表示。(动...

2019-10-06 21:00:57 585

原创 mysql(九): innoDB各种锁机制(解释普通索引和唯一索引锁算法的区别)

1.各种锁机制2 加锁机制乐观锁:假定大概率不会发生并发更新冲突,访问、处理数据过程中不加锁,只在更新数据时再根据版本号或时间戳判断是否有冲突,有则处理,无则提交事务;悲观锁:假定大概率会发生并发更新冲突,访问、处理数据前就加排他锁,在整个数据处理过程中锁定数据,事务提交或回滚后才释放锁;3 锁粒度关于全局锁、行锁、表锁和死锁: https://blog.csdn.net/qq_356...

2019-10-06 17:12:42 4105 3

原创 mysql(八): 全局锁、行锁、表锁和死锁

1.全局锁全局锁就是对整个数据库实例加锁,MySQL 提供了 flush tables with read lock (FTWRL) 的方式去加全局锁。当你需要让整个库处于只读状态的时候,就可以使用这个命令了,之后所有线程的更改操作都会被阻塞。该锁的主要是用在MyISAM这一类引擎对mysql数据备份上的使用。逻辑备份工具是 mysqldump。当 mysqldump 使用参数–single-...

2019-10-05 16:42:02 758

原创 mysql(七): 事务---事务隔离和MVCC

1. 概述一般来说,事务是必须满足4个条件(ACID):原子性(Atomicity):构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行。稳定性(一致性 Consistency):数据库在事务执行前后状态都必须是稳定的。隔离性(Isolation):事务之间不会相互影响。可靠性(持久性 Durability):事务执行成功后必须全部写入磁盘。...

2019-10-05 15:31:53 170

原创 mysql(六): MySQL日志的补充 --- redo log和binlog

1. redo logMySQL里经常说到的WAL技术,WAL的全称是Write-Ahead Logging,它的关键点就是先写日志,再写磁盘,也就是先写到内存中(少量数据),等不忙的时候再写磁盘上(所有数据汇总)。当有一条记录需要更新的时候,InnoDB引擎就会先把记录写到redo log(粉板)里面,并更新内存,这个时候更新就算完成了。同时,InnoDB引擎会在适当的时候,将这个操作记录更...

2019-10-05 15:07:52 432

原创 mysql(五): MySQL性能分析语句show profile

1. 介绍Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方。通常我们是使用的explain,以及slow query log都无法做到精确分析,但是Query Profiler却可以定位出一条SQL语句执行的各种资源消耗情况,比如CPU,IO等,以及该SQL执行所耗费的时间等。不过该工具只有在MYSQL 5.0.37...

2019-10-03 16:17:29 478

原创 mysql(四): 慢查询监控

1. 慢查询数据库查询快慢是影响项目性能的一大因素,对于数据库,我们除了要优化 SQL,更重要的是得先找到需要优化的 SQL。MySQL 数据库有一个“慢查询日志”功能,用来记录查询时间超过某个设定值的SQL,这将极大程度帮助我们快速定位到症结所在,以便对症下药。2.查看是否开启慢查询功能参数说明:slow_query_log :是否开启慢查询日志,ON 为开启,OFF 为...

2019-10-03 14:41:18 1360

原创 mysql(三): explain,索引优化

1.MySQL性能优化之查看执行计划explain1.1 介绍explainMySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化.使用explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。...

2019-10-03 14:24:49 170

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除