随笔 - 607,  文章 - 169,  评论 - 2,  阅读 - 21万
08 2019 档案
设计模式课程 设计模式精讲 8-8 单例设计模式-Enum枚举单例、原理源码解析以及反编译实战
摘要:1 课堂解析 2 代码演练 2.1 枚举类单例解决序列化破坏demo 2.2 枚举类单例解决序列化破坏原理 2.3 枚举类单例解决反射攻击demo 2.4 枚举类单例解决反射攻击原理 3 jad的使用 3.1 网址: 枚举类: 测试类: 打印日志: ObjectInputStream 枚举类:(同2 阅读全文
posted @ 2019-08-22 07:06 菜鸟乙 阅读(227) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 8-7 单例设计模式-反射攻击解决方案及原理分析
摘要:1 课程总结 1.1 课程总结 1.2 注意事项 2 代码演练 2.1 反射攻击(通过反射拿到单例的对象) 2.2 (应用)饿汉式防御 2.3 (应用)静态类防御 2.4 懒汉式防御1 2.5 针对懒汉式防御1反射攻击1 2.6 懒汉式防御2 2.7 针对懒汉式防御2反射攻击2 反射攻击对单例模式威 阅读全文
posted @ 2019-08-21 06:53 菜鸟乙 阅读(300) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 8-6 单例设计模式-序列化破坏单例模式原理解析及解决方案
摘要:课程地址: 1 原理解析 1.1 通过反射创建对象,序列化和反序列化把单例模式破坏了 1.2 什么是序列化和反序列化 2 代码演练 2.1 序列化后的文件和源文件不是同一个对象(代码演练) 2.2 序列化后的文件和源文件不是同一个对象解决方案(代码演练) 2.3 序列化后的文件和源文件不是同一个对象 阅读全文
posted @ 2019-08-18 23:15 菜鸟乙 阅读(218) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 8-5 单例设计模式-饿汉式
摘要:1 代码讲解 1.1 饿汉式不会出现多线程问题 1.2 优点和缺点 2 代码演练 2.1 代码演练1(饿汉式) 2.2 代码演练2(静态块方式实现) 刚开始加载的时候就完成了初始化,避免了线程同步问题, 优点:刚开始加载的时候就完成了初始化,避免了线程同步问题。 缺点:如果该类不经常使用,比较消耗资 阅读全文
posted @ 2019-08-17 16:13 菜鸟乙 阅读(174) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 8-4 单例设计模式-静态内部类-基于类初始化的延迟加载解决方案及原理解析
摘要:1 原理解析 1.0 课程地址 1.1 如何实现让后边线程看不到前边线程是否有序列化呢(综合上节看) 1.2 原理 1.3 5种初始化方法 1.4 单例类必须要有私有构造方法 2 代码演练 2.1 代码演练1 1 原理解析 1.1 如何实现让后边线程看不到前边线程是否有重排序呢(综合上节看) 参考2 阅读全文
posted @ 2019-08-17 15:18 菜鸟乙 阅读(370) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 8-3 单例设计模式-DoubleCheck双重检查实战及原理解析
摘要:1 课程讲解 1.1 为何要使用双重检查 1.2 双重检查的缺点 1.3 指令重排序讲解 1.4 指令重排序比喻(自己理解) 1.5 如何解决指令重排序问题 2 代码演练 2.1 代码演练1(双重检查 解决对象锁和类锁的问题) 2.2 代码演练2(volatile 应用:解决重排序问题) 在上节课的 阅读全文
posted @ 2019-08-17 12:13 菜鸟乙 阅读(510) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 8-2 单例设计模式-懒汉式及多线程Debug实战
摘要:1 主要内容 1.1 多线程debug a 主要是在idea中,右键选择断点,选中thread,done即可。 b 使用的时候,frames选择下拉框,选择要执行的线程即可。 c 如下图所示 1.2 synchronized同步锁的调用 如2.3所示 如果锁放在静态方法上,锁的是整个class文件, 阅读全文
posted @ 2019-08-16 19:23 菜鸟乙 阅读(283) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 8-1 单例模式讲解
摘要:1 课堂概述 1.1 定义 1.2 适用场景 1.3 优点 1.4 缺点 1.5 重点 1.6 实用技能 1.7 单例-相关设计模式 定义:保证一个类仅有一个实例,并提供一个全局访问点 类型:创建型 a ◆想确保任何情况下都绝对只有一个实例 b 当一个对象需要频繁的被创建销毁的时候,并且创建或者销毁 阅读全文
posted @ 2019-08-14 21:27 菜鸟乙 阅读(168) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 7-3 建造者模式源码解析(jdk+guava+spring+mybaties)
摘要:1 源码解析 1.1 jdk解析 1.2 guava解析 1.3 spring解析 1.4 mybaties解析 String StringBuilder copyOf方法 Of方法 add方法(注意静态内部类) BeanDefinitionBuilder类 SqlSessionFactoryBui 阅读全文
posted @ 2019-08-13 19:06 菜鸟乙 阅读(262) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 7-2 建造者模式Coding
摘要:1 代码演练 1.1 建造者模式演练 1.2 静态内部类演练建造者模式(链式调用) 需求: 根据讲师提供的课程名称,课程ppt,课程视频,课程手记,课程问答 制作教学课程。 重点: 教练类coach.java标红部分,builder设值,然后赋值(看test.java)。 uml类图: 测试类: 实 阅读全文
posted @ 2019-08-12 20:24 菜鸟乙 阅读(242) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 7-1 建造者模式讲解
摘要:1 课堂讲解 1.1 定义 1.2 适用场景 1.3 优点 1.4 缺点 1.5 建造者模式和工厂模式的区别 ◆定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示◆用户只需指定需要建造的类型就可以得到它们,建造过程及细节不需要知道◆类型:创建型 ◆如果一个对象有非常复杂的 阅读全文
posted @ 2019-08-05 20:26 菜鸟乙 阅读(205) 评论(0) 推荐(0) 编辑
慕课网 设计模式课程资源
摘要:4.0.0 com.geely design_pattern war 1.0-SNAPSHOT design_pattern Maven Webapp http://maven.apache.org UTF-8 UTF-8 UTF-8 4.0.3.RELEASE... 阅读全文
posted @ 2019-08-03 16:22 菜鸟乙 阅读(508) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 6-3 抽象工厂源码解析
摘要:1 源码解析 1.1 连接源码解析 1.2 mybaties 的sqlsession源码解析 Connection.java(两个方法属于同一个产品族,这是连接的父类) mysql获取的是同一产品族下的statement和同一产品族下的preparestatement oracle也是 Statem 阅读全文
posted @ 2019-08-03 16:05 菜鸟乙 阅读(217) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 6-2 抽象工厂coding
摘要:1 代码讲解 1.1 抽象工厂优点 1.2 抽象工厂缺点 1.3 为何有产品族的业务场景宜用抽象工厂设计模式?而不是工厂设计模式? 2 代码演练 2.1 抽象工厂代码演练 a 应用层代码不和具体的产品发生依赖,只和具体的产品族工厂发生依赖关系,低耦合,高内聚。 b 从具体的产品工厂取出来的肯定是同一 阅读全文
posted @ 2019-08-03 15:10 菜鸟乙 阅读(167) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 6-1 抽象工厂讲解
摘要:1 课程讲解 1.1 定义 1.2 适用场景 1.3 优点 1.4 缺点 1.5 产品等级和产品簇 定义: ◆抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口◆无须指定它们具体的类◆类型:创建型 客户端需要创建抽象工厂的具体实现,使用抽象工厂作为接口来创建这一主题的具体对象。 自己理解:解决产 阅读全文
posted @ 2019-08-02 19:16 菜鸟乙 阅读(170) 评论(0) 推荐(0) 编辑
设计模式课程 设计模式精讲 5-3 工厂方法源码解析
摘要:1 源码解析 1.1 collection的iterator解析 1.2 http协议类解析 Collection:(collection相当于抽象工厂(这里的抽象工厂指代工厂的父类),iterator相当于抽象类,abstractList相当于工厂,Itr相当于实现类) AbstractList 阅读全文
posted @ 2019-08-01 20:13 菜鸟乙 阅读(163) 评论(0) 推荐(0) 编辑

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示