摘要: 一、面向对象设计六大基本原则 二、创建型模型(5种) 关注对象的创建过程。帮助我们创建对象。 1 单例模式 singleton 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。 2 工厂模式 factory (1)简单工厂模式 simple factory 用来生产同一等级结构中的任意产 阅读全文
posted @ 2017-11-17 18:34 C3Stones 阅读(573) 评论(0) 推荐(0) 编辑
摘要: 1 排序的基本概念 假定排序的数据是由一组元素组成的表,而元素由若干个数据项组成,其中有一项可用来标识该元素,称为关键字项,其值称为关键字。关键字可用作排序运算的依据。 1.1 什么是排序 所谓排序,就是整理表中的元素,使之按关键字递增或递减的顺序排列。 1.2 排序的稳定性 当待排序元素的关键字各 阅读全文
posted @ 2017-04-23 21:10 C3Stones 阅读(1678) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 日常开发中使用Map时经常会遇到很多复杂的处理场景,例如:多个键的Map、不仅可以根据键获取值也可以根据值获取键且不用遍历、重复键的Map、数字等范围内映射相同的值、内存中缓存对象等,Guava提供了以上场景的解决方案。 场景 解决方案 具体实现 多个键的Map Table HashBa 阅读全文
posted @ 2023-11-02 20:20 C3Stones 阅读(355) 评论(0) 推荐(0) 编辑
摘要: #### 1. 简介 在开发中,经常需要根据条件过滤大批量的JSON类型数据。如果仅需要过滤这一种类型,将JSON转为List后过滤即可;如果相同的条件既想过滤数据库表中的数据、也想过滤内存中JSON数据,甚至想过滤Elasticsearch中的数据,那可使用本博客中的方案,使用标准的SQL语法实现 阅读全文
posted @ 2023-06-01 19:45 C3Stones 阅读(638) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 在日常开发中,经常需要使用反射操作类中的属性或方法。ReflectASM是一个非常小的 Java 库,它提供高性能反射能力。 Github地址:https://github.com/EsotericSoftware/reflectasm 2. 官方性能报告 3. 用法 ==Reflect 阅读全文
posted @ 2023-04-07 22:03 C3Stones 阅读(430) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 Java7提供了可以将大任务拆分成小任务执行再合并结果的框架——Fork/Join。其中,将大任务拆分成足够执行的小任务并发执行的过程称为Fork,将这些小任务结果整合后形成最终的结果的过程称为Join。 Fork/Join框架的具体体现为ForkJoinTask抽象类,该类继承了Fut 阅读全文
posted @ 2023-04-07 22:01 C3Stones 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 相比Future(【并发编程】Java5 - Future,基本使用),Guava提供的ListenableFuture支持不阻塞主线程进行任务执行完成后的业务处理。 使用Future的实现类FutureTask想要实现一旦获取到结果立即执行后续的业务,就需要阻塞主线程等待结果或者使用其 阅读全文
posted @ 2023-03-28 16:56 C3Stones 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 CompletableFuture是Java8的新特性,在Future基础上,增加流式计算、函数式编程、完成通知、自定义异常、多个Future组合处理等能力,使得在多线程协同处理时更加顺利。 2. 相关博客 【并发编程】Java5 - Future,基本使用 【并发编程】Java5 - 阅读全文
posted @ 2023-03-28 16:56 C3Stones 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 相比Future(【并发编程】Java5 - Future,基本使用),CompletionService除了支持并行执行任务并获取结果外,还支持优先获取到最快执行的任务结果,但CompletionService要求并行执行的任务是无序的。 使用Future的实现类FutureTask获 阅读全文
posted @ 2023-03-28 16:55 C3Stones 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 在使用多线程开发中,不论是继承Thread类还是实现Runnable接口方式,都无法非常方便的获取异步任务执行的结果。在JDK1.5提供了和Runnable类似但多了返回值的Callable接口,通过Future接口实现类和Callable接口方式,可以非常灵活的进行多线程操作,例如:获 阅读全文
posted @ 2023-03-28 16:54 C3Stones 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 1. 继承Thread类 import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; /** * 继承Thread类创建多线程单元测试 * * @author CL */ @Slf4j public class Threa 阅读全文
posted @ 2023-03-28 16:53 C3Stones 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 1. 自定义线程池 1.1 示例代码 /** * 自定义线程池 * <p> * 优点:可以自定义参数 * </p> */ @Test public void testNewThreadPoolExecutor() { ThreadPoolExecutor executor = new ThreadP 阅读全文
posted @ 2023-03-20 22:38 C3Stones 阅读(2166) 评论(0) 推荐(0) 编辑