- 博客(19)
- 收藏
- 关注
原创 Java 线程池详解
基本概念Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来 3 个好处。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性...
2020-02-11 21:13:15 178
原创 Java NIO 实现 WebSocket 协议
文章参考:https://blog.csdn.net/Kurozaki_Kun/article/details/78843783WebSocket协议WebSocket是一种在单个TCP连接上进行全双工通信的协议。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可...
2020-02-10 15:27:53 2172 1
原创 JVM 运行时数据区域以及 GC
GC Java 与 C++ 直接的一个区别就是内存动态分配和垃圾收集(Garbage collection)机制。对于从事 C/C++ 程序开发的开发人员来说,他们既要管理数据再内存上的分配,也要管理这些数据的回收。但是对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个 new 操作去写配对的 delete/free 代码,不容易出现内存泄漏和内存溢出的问题。之所以...
2020-02-08 14:51:22 357
原创 数据结构 ——红黑树
红黑树介绍红黑树是一种自平衡的二叉查找树,是一种高效的查找树。它是由 Rudolf Bayer 于1972年发明,在当时被称为对称二叉 B 树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树。红黑树具有良好的效率,它可在 O(logN) 时间内完成查找、增加、删除等操作。因此,红黑...
2020-02-08 14:40:15 188
原创 TCP 粘包和拆包
TCP 粘包和拆包基本概念TCP 是一种面向连接的、可靠的、基于字节流的传输层通信协议,正因为它是基于字节流的传输协议,它的协议字段中是不带有长度的,数据接收方是不知道需要接收多少的数据才算接收完成。因此对于一端发送的消息,另一端读取的时候是不知道是否读到了完整的消息。在 TCP 协议中,进行数据包的发送时,会根据 TCP 缓冲区的实际情况对包进行划分,可能会将一个包拆分开来进行发送,也可能...
2020-02-08 14:32:37 283
原创 Java 设计模式 10 —— 迭代器模式
单例模式定义提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。对于迭代器(Iterator),Java 语言本身就提供了这样一个接口。public interface Iterator<E> { boolean hasNext(); E next(); default void remove() { thr...
2020-01-17 13:01:40 84
原创 Java 设计模式 9 —— 模板方法模式
模板方法模式定义在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。结构AbstractClass:包含了模板方法和两个模板方法所用到的抽象函数。templeteMethod():调用了两个抽象函数。void templeteMethod() { primitiveOperation1();...
2020-01-17 12:58:24 102
原创 Java 设计模式 8 —— 外观模式
外观模式定义提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口,让子系统更容易使用。结构SubSystem*:子系统,它们内部的接口可以按某种次序调用来访问数据资源。Facade:这个外观类为子系统提供一个共同的对外接口。Client:客户对象通过一个外观接口读写子系统中各接口的数据资源。应用A...
2020-01-17 12:55:25 145
原创 Java 设计模式 7 —— 适配器模式
适配器模式定义将一个类的接口,装换成客户期望的另一个接口。 让原本不兼容的类可以合作无间。保留现有的接口,通过使用适配器,向客户提供他所期望的接口,以满足客户。结构适配器模式的别名为包装器(Wrapper)模式,它分为对象适配器和类适配器。因为类适配器需要使用多继承,但Java不支持多继承,所以不再本文的讨论范围内。在适配器模式定义中所提及的接口是指广义的接口,它可以表示一个方法或...
2020-01-17 12:53:47 211
原创 Java 设计模式 6 —— 命令模式
命令模式定义将请求和请求的接收者封装在一个对象中,实现请求调用者和接收者之间的解耦。UML类图Command:定义命令的接口,声明执行的方法,用来封装请求和请求接收者。ConcreteCommand:命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作,具有执行和撤销两个动作。Receiver:接收者,真正执行命令的对象。任何类都可能成为一...
2020-01-17 12:52:15 100
原创 Java 设计模式 5 —— 单例模式
单例模式定义确保一个类只有一个实例,并提供一个全局访问点。通常要创建对象,基本上是离不开new的。在某些特定的场景下,整个应用的生命周期内只需要一个实例对象,那么new显然已经不适用了。在之前文章中介绍Hibernate时,就曾经使用过单例模式。在静态代码块中初始化了sessionFactory,显然全局的sessionFactory有且只有一个。public class Hiber...
2020-01-17 12:49:52 89
原创 Java 设计模式 4 —— 工厂模式
工厂模式定义将对象实例的创建过程整合到另一个工厂对象中,用工厂对象创建对象来代替new。工厂模式又可以分为:简单工厂、工厂方法模式、抽象工厂模式等。简单工厂简单工厂的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。严格意义上来说,简单工厂不在23种设计模式之中。抽象意义上的关系图:朱老板使用装饰者模式修改了自己的电脑店...
2020-01-17 12:48:37 275
原创 Java 设计模式 3 —— 装饰模式
装饰模式定义动态地将责任附加到对象上。若要扩展功能,装饰者模式提供了比继承更有弹性的替代方案。为了满足类设计的开闭原则,装饰模式应运而生。使用这个模式可以在扩展类功能和特性是最大限度的减少对类的修改。通过对类进行装饰来实现功能的扩展。UML类图 演示朱老板开了一家电脑配件店,专门给别人配电脑。他家的配件有电源,硬盘,CPU,显卡,风扇,内存条和主板。一开始朱老板简单的每个上门...
2020-01-17 12:44:41 78
原创 Java 设计模式 2 —— 观察者模式
观察者模式定义建立了对象之间一对多的依赖关系,这样一来,当一个对象的状态改变时,它的所有依赖者都会收到通知并自动更新。观察者模式中,被观察对象状态发生改变时,会通知所有的观察者。这里又有PUSH和PULL的两种模式。PUSH是被观察对象主动将内容更新到观察者之上,而PULL则是观察者主动向被观察对象获取更新内容。观察者模式经常出现在Java的GUI、Web和Spring等地方。UML...
2020-01-17 12:38:36 176
原创 Java 设计模式 1 —— 策略模式
策略模式定义策略者模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。这个模式将类中可变的部分抽象出来封装成一类算法。应用场景之间的切换无需修改代码,只要加载不同的算法就能实现不同场景下的不同功能。策略者模式的出现是为了弥补继承过程中代码复用性的不足。它完美的体现除了“多用组合,少用继承”的设计原则。UML类图我们以大学生为例...
2020-01-17 12:34:32 170
原创 Java 集合 3:HashMap 源码分析
HashMap 源码分析全篇以 Java8 为基础Java文档Hash table based implementation of the Map interface. This implementation provides all of the optional map operations, and permits null values and the null key. ...
2020-01-13 14:25:51 93
原创 Java 集合 2:LinkedList 源码分析
LinkedList 源码分析全篇以 Java8 为基础Java文档Doubly-linked list implementation of the List and Deque interfaces. Implements all optional list operations, and permits all elements (including null). All ...
2020-01-11 18:15:51 101
原创 Java 集合 1:ArrayList 源码分析
ArrayList 源码分析全篇以 Java8 为基础Java文档Resizable-array implementation of the List interface. Implements all optional list operations, and permits all elements, including null. In addition to implement...
2020-01-10 19:53:28 91
原创 Java 集合 0:概述
Java集合框架图Java集合类别Collection Collection 接口下的直接实现接口有 List 、Set 、Queue,分别表示列表、集合和队列的数据结构。List 接口的实现中常用的有 ArrayList 、 LinkedList 等。Set 接口的实现中常用的有 HashSet 、 TreeSet等。Queue 接口的实现中常用的有 PriorityQueue 、 ...
2020-01-10 15:04:19 127
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人