- 博客(19)
- 资源 (12)
- 收藏
- 关注
原创 设计模式系列 - 结构型模式
结构设计模式向您展示了如何以灵活和可扩展的方式将系统的不同部分粘合在一起。它们可以帮助您保证当其中一个部分发生更改时,整个结构不需要更改。这些模式关注的是类之间如何相互继承,以及它们是如何由其他类组成的。结构模式使用继承来组合接口或实现。适配器模式适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能...
2020-03-31 17:11:00 644
原创 设计模式系列 - 行为型模式(下)
行为设计模式是识别对象之间的通信模式,行为模式涉及对象之间的责任分配,或者,将行为封装在对象中并将请求委托给它,也就是对象之间的关系。涉及:* 状态模式中介模式* 观察者模式备忘录模式迭代器模式命令模式* 策略模式* 模板模式* 访客模式示例责任链模式观察者模式根据GoF定义,observer模式定义了对象之间的一对多依赖关系,当一个对象改变状态时,它的所有依赖关系都会被自动通知和...
2020-03-27 20:57:00 168
原创 设计模式系列 - 行为型模式(上)
行为设计模式是识别对象之间的通信模式,行为模式涉及对象之间的责任分配,或者,将行为封装在对象中并将请求委托给它,也就是对象之间的关系。涉及:状态模式* 中介模式观察者模式* 备忘录模式* 迭代器模式* 命令模式策略模式模板模式访客模式示例* 责任链模式责任链模式责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者...
2020-03-27 10:36:00 204
原创 设计模式系列 - 创建型模式
单例模式懒汉式,线程不安全。除非是单线程程序,否则不推荐使用。public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (insta...
2020-03-26 10:27:00 135
原创 重构-改善既有代码的设计完整笔记系列之10、11 - 简化函数、处理概括关系
10.1 Rename Method(函数改名) 10.2 Add Parameter(添加参数)10.3 Remove Parameter(移除参数)10.4 Separate Query from Modifier(将查询函数和修改函数分离)10.5 Parameterize Method(令函数携带参数)10.6 Replace Parameter with Expli...
2020-03-23 09:45:00 218
原创 重构-改善既有代码的设计完整笔记系列之8 - 简化条件表达式
9.1 Decompose Conditional(分解条件表达式)9.2 Consolidate Conditional Expression(合并条件表达式) 9.3 Consolidate Duplicate Conditional Fragments(合并重复的条件片段) 9.4 Remove Control Flag(移除控制标记) 9.5 Replace Nes...
2020-03-19 22:18:00 138
原创 重构-改善既有代码的设计完整笔记系列之9 - 简化条件表达式
9.1 Decompose Conditional(分解条件表达式)9.2 Consolidate Conditional Expression(合并条件表达式) 9.3 Consolidate Duplicate Conditional Fragments(合并重复的条件片段) 9.4 Remove Control Flag(移除控制标记) 9.5 Replace Neste...
2020-03-19 22:18:00 102
原创 重构-改善既有代码的设计完整笔记系列之8 - 重组数据
重构-改善既有代码的设计完整笔记系列之8 - 重组数据8.1 Self Encapsulate Field(自封装字段)8.2 Replace Data Value with Object(以对象取代数据值)8.3 Change Value to Reference(将值对象改为引用对象)8.4 Change Reference to Value(将引用对象改为值对象)8.5...
2020-03-19 21:49:00 238
原创 重构-改善既有代码的设计完整笔记系列之6、7 - 重新组织函数、对象间搬迁特性...
目录6.1 Extract Method(提炼函数)6.2 Inline Method(内联函数)6.3 Inline Temp(内联临时变量)6.4 Replace Temp with Query(以查询取代临时变量)6.5 Introduce Explaining Variable(引入解释性变量)6.6 Split Temporary Variable(分解临时变量)...
2020-03-19 20:17:00 206
原创 Java多线程开发系列-线程管理
主题:线程的未捕获异常线程工厂线程暂停线程池线程的未捕获异常在线程异常的时候,多线程运行不能按照顺序执行过程中捕获异常的方式来处理异常,异常会被直接抛出到控制台(由于线程的本质,使得你不能捕获从线程中逃逸的异常。一旦异常逃逸出任务的run方法,它就会向外传播到控制台,除非你采用特殊的形式捕获这种异常。)如下例:import java.util.concurrent....
2020-03-18 15:28:00 279
原创 Java多线程开发系列-线程活性故障
由资源稀缺性或者程序自身的问题和缺陷导致线程一直处于非Runnable状态,或者线程虽然处于Runnable状态但是其要执行的任务却一直无法进展的故障现象。有4种情况死锁锁死饥饿活锁死锁如果线程A持有锁L并且想获得锁M,线程B持有锁M并且想获得锁L,那么这两个线程将永远等待下去,这种情况就是最简单的死锁形式。在数据库系统的设计中考虑了监测死锁以及从死锁中恢复,数据库如果...
2020-03-18 09:22:00 493
原创 Java多线程开发系列-线程安全设计
本章探讨线程安全的java平台本身的机制,免于基于同步(内部锁)或显式锁的实现,可以简化开发,避免锁造成的各种问题和开销。无状态对象不可变对象ThreadLoacl线程特有对象线程安全并发集合无状态对象无状态对象,就是没有实例变量的对象.不能保存数据,是线程安全的。 比如以下方法中的变量都是方法内部的变量public class AdderImpl implement...
2020-03-13 21:20:00 163
原创 Java多线程开发系列-线程间协作
wait(),notify()和notifyAll()他们都是java.lang.Object的方法:wait(): Causes the current thread to wait until another thread invokes the notify() method or the notifyAll() method for this object.notify(...
2020-03-12 15:04:00 141
原创 Java多线程开发系列-基础
多线程的一个接口和一个类//Runnable接口:@FunctionalInterfacepublic interface Runnable { public abstract void run();}//Thread类,它其实也是实现了Runnable接口public class Thread implements Runnable { /* Make...
2020-03-11 15:54:00 153
原创 了不起的Java-CompletableFuture组合异步编程
在多任务程序中,我们比较熟悉的是分支-合并框架的并行计算,他的目的是将一个操作(比如巨大的List计算)切分为多个子操作,充分利用CPU的多核,甚至多个机器集群,并行执行这些子操作。而CompletableFuture的目标是并发(执行多个操作),而非并行,是利用CPU的核,使其持续忙碌,达成最大吞吐,在并发进行中避免等待远程服务的返回值,或者数据库的长时查询结果等耗时较长的操作,如果...
2020-03-06 16:37:00 372 1
原创 了不起的Java-Optional替代null处理
Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException)。是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。在这段代码就可能产生空异常;String isocode = user.getAddress().getCountry().getIsocode().toUpperCase();//需要检查:if...
2020-03-04 17:42:00 379
原创 了不起的Java-Lambda替代设计模式
得益于函数接口,我们可以改造设计模式(不限于此):策略模式模板模式观察者模式责任链模式工厂模式策略模式优点:1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。缺点:1、策略类会增多。 2、所有策略类都需要对外暴露。使用场景:1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种...
2020-03-04 11:31:00 462
原创 了不起的Java-Stream流规约、分组、分区
问题引入如果你在做一些汇总操作,比如1、对一个交易列表按货币分组,获取每种货币的和(Map<Cruuency,Integer>)2、将交易分成贵的、不贵的(Map<Boolean,List<Transaction>>)3、多级分组,按城市分组,再按贵和不贵分组如果是传统的写法,使用外部迭代即可,会有很多for+if组合,类似: ...
2020-03-03 11:23:00 74
原创 了不起的Java-Stream流处理
问题引入假如你是一个厨师,你有一份菜单列表(DishMenu),你需要一份低卡路里(Caloric低于400),并且按卡路里数值排序的top3(最低的前3个)的仅包含菜名的菜单列表,你会怎么做?这个问题也贯穿了开发中大量需要处理list、set、map之类的集合操作,是非常非常基础的问题。而Stream就是处理集合的。相关数据类:import java.util.*;publ...
2020-03-01 18:14:00 239
Liferay7门户集成Activiti BPM用户组同步
2016-12-19
Liferay7门户集成Activiti BPM展示流程列表功能
2016-12-15
Liferay开发持久化层和服务层演示Demo代码
2016-02-03
Java Web Project开发WebSocket服务端/客户端
2016-01-15
C#使用七牛云存储上传下载文件
2016-01-14
ASP.NET MVC 在线录音录像(音视频录制并上传)
2016-01-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人