自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (3)
  • 收藏
  • 关注

原创 Java 设计模式系列(4) —— 工厂模式

工厂方法模式工厂模式用于实现逻辑的封装,并通过公共的忌口提供对象的实例化服务,在添加新类时只需要做少量的修改。1. 静态工厂模式(简单工厂模式)静态工厂属于创建者模式,静态工厂模式的实现需要三个角色简单工厂:负责创建具体产品产品,工厂类的方法可以被外界直接调用抽象产品:在 Java 中,抽象产品是由抽象类或者接口担任的,用以让具体产品继承或实现具体产品:在 Java 中,具体产品是工厂类创建的主要对象。静态工厂的通用写法工厂角色public class CandyFactory

2020-12-31 22:56:33 147

原创 JAVA 设计模式系列(2) —— 设计原则

Java 设计模式的相关原则一、单一职责原则单一职责原则: 应该有且仅有一个原则引起类的变更单一职责可以简答的理解为,一个类或者对象,承担的只能应该尽可能单一。单一职责的优点:降低类的复杂性提高代码的可读性可维护性提高变更引起的风险降低如何理解单一职责原则:例如有一个类里面包含了属性以及属性的 get 与 set 方法和一些操作这个类的诸多属性而完成的相关业务逻辑。此时我们可以将这个类分为两个对象,一个用于管理对象的属性,另一个用于管理对象的业务逻辑。单一职责用“职责”和“变化原因

2020-12-28 23:35:04 73

原创 JVM 系列(5) —— 垃圾收集器

经典垃圾收集器目前衡量垃圾收集器的三个最重要指标分别为:内存占用 (Footprint)吞吐量 (Throughtput)延迟 (Latency)这三个指标也被称为不可能的三角,即无法做到三者间的,随着硬件性能的提升,人们反而可以容忍内存占用的扩大,对延迟的容忍度反而降低。该图展示了七种用于不同分代的分代收集器Serial/Serial Old 收集器Serial 收集器是一个新生代收集器,采用复制算法。Serial Old 收集器是 Serial 收集器的老年代版本,采用标记整理算法

2020-12-27 23:23:39 133

原创 JVM 系列(4) —— HotPots 的内部细节

根节点枚举在枚举根节点时,所有的用户线程都会被被暂停,因为在根节点枚举过程中,为了保证分析结果的准确性,需要保证根节点的引用关系不会发生变化。即根节点的枚举必须在一个能保障内存一致性的快照中。为了避免在查找引用链的过程中从上到下一个不漏的检查所有执行完的上下文和全局引用的位置这一耗时耗力的情况出现,在类加载完成后, HotSpot 会把对象内什么偏移量上是什么数据类型全部计算出来,并将引用在栈里和寄存器里的位置记录在 OopMap 中。安全点OopMap 虽然会帮助 HotSpot 迅速完成根节点枚

2020-12-19 15:24:44 277 3

原创 JVM 系列(3) —— 垃圾回收算法

垃圾回收如何判断对象已死在 Java 对对象进行回收之前,需要判断哪些对象已死,哪些对象存活,常用的判断方法有两种: 引用计数法和可达性分析法引用计数法引用计数法就是在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一,当引用失效时就减一。当计数器为 0 时,对象便不再被引用。引用计数法虽然消耗了一些空间,但是原理简单,判定高效,在绝大多数情况下是一个不错的算法。但是引用计数法需要考虑到很多例外的情况,必须要配合大量的额外工作才能正确的工作,比如单纯引用计数法就很难解决对象之间相互循

2020-12-19 15:03:26 96 1

原创 JVM 系列(2) —— Java 的对象

对象创建Java 通过 new 创建对象的过程当 Java 虚拟机遇到一条字节码指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号的引用,并检查这个符号引用代表的类是否被加载解析和初始化过。如果没有则先执行相应的类加载过程。在类加载检查通过后,虚拟机便会为新生的对象分配内存。在 Java 堆中,如果内存是规整的,即所有使用过的内存放在一边,未被使用的内存放在另一边,使用指针作为这两个区域的分界点,这时分配内存只需要将指针移动所分配内存大小的距离即可,这种内存分配方式称为“指针碰撞(B

2020-12-15 22:36:00 132

原创 JVM 系列(1) —— 运行时数据区域

Java 运行时数据区Java 虚拟机会在 Java 运行程序的过程中把它所管理的内存分为若干个不同的数据区域程序计数器程序计数器,可以看做是当前线程所执行字节码的行号指示器。其中,每个线程都有一个独立的程序计数器,这样线程切换后都能恢复到正确的执行位置。如果一个线程正在执行是一个 Java 方法,这个计数器是记录的是正在执行的是虚拟机字节码指令地址,如果执行的是本地方法,这个计数器值则应为空。Java 虚拟机栈Java 虚拟机栈是线程私有的,他的生命周期与线程相同。虚拟机栈描述的是 Java

2020-12-14 22:29:04 93

原创 Docker 系列(2) —— CentOS 7下 安装 Docker

CentOS7 下安装 Docker# 卸载旧版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ doc

2020-12-13 20:14:03 300

原创 替代 XShell 的两款优秀工具

替代 Xshell 的两款免费优秀的工具1. MobaXterm(强力推荐)官方网址 https://mobaxterm.mobatek.net/有家庭版和专业版两个版本,免费版本就可以完成日常的登录和文件上传功能。但是只支持 windows 系统你可以通过他便可以完成所有基础的上传和命令行操作功能你可以通过创建新的会话来建立新的 SSH 连接同时你也可以检测当前服务器的状态2. finalShellfianlShell 的官网 http://www.hostbuf.com/特点

2020-12-12 18:39:55 25385

原创 RabbitMQ 系列(3) —— 快速启用 RabbitMQ 的 Web 管理端

启用 RabbitMQ 的 Web 管理端RabbitMQ 中有一个 Erlang 编写的 RabbitMQ management 插件。该插件与 RabbitMQ 运行在同一个 Erlang 虚拟机中RabbitMQ managent 插件可以提供 Web 管理界面来管理虚拟主机与用户,也可以用来管理队列,交换器绑定关系,策略参数等,还可以用来监控 RabbitMQ 的服务状态以及一些统计数据的信息,可谓是功能强大。Step1: 查看 RabbitMQ 插件# 列出 RabbitMQ 插件,检

2020-12-12 13:46:17 231

原创 RabbitMQ 系列(2) —— 用 java 连接 RabbitMQ

RabbitMQ 的相关概念RabbitMQ 作为一个消息中间件,整体上采用了生产者与消费者模型,主要负责接收,存储和转发消息。生产者和消费者RabbitMQ 从宏观上可以视为其中:Producer: 生产者,负责创建消息,并将消息发布到 RabbitMQ 中Broker: 消息中间件服务节点Consumer: 消费者负责订阅队列 并从队列上接收消息。其详细的工作流程可视为:RabbitMQ 的架构模型RabbitMQ 的整体架构可以入下图所示队列队列是 Rabbit MQ

2020-12-12 10:55:03 441

原创 Java 设计模式系列(1) —— 单例模式

单例设计模式单例模式的特点某个类只能有一个实例它必须自行创建这个类它不许向整个系统提供这个类的实例饿汉模式/立即加载饿汉式的特点: 在使用类时就已经将对象加载完毕饿汉式的缺点:由于在使用前就加载完毕,会造成内存资源的浪费在获取实例时,若没有同步方法,容易产生非线程安全问题。饿汉式的创建方式:静态常量饿汉式静态代码块饿汉式枚举类静态常量饿汉式// 静态常量的饿汉式public class Singleton1 { private static Singleton1

2020-12-08 21:45:29 101

原创 Java 多线程系列(5) —— 线程本地变量

线程本地变量在集成 Thread 类或实现 Runnable 接口时,不同线程中的数据共享是必要的。【示例】创建一个线程并实现 Runnable 接口。并设置一个 Date 对象 并在开始和结束时打印线程开始执行的时间public class UnsafeTask implements Runnable{ private Date startDate; @Override public void run() { startDate = new Date(); System.out

2020-12-07 22:16:28 344

原创 Java 多线程系列(4) —— 线程组

线程组线程组多用于对相同功能的线程进行管理,线程组既可以包含子线程,也可以包含子线程组。线程组的最高一级是 system 线程组,即系统线程组,也是根线程组。 一般线程组呈树状结构。因此线程组可以视为创建线程时的默认线程组一般创建咸成师并没有被设置线程组入参,那么创建线程时线程会被分配到那个线程组中去呢线程创建源码由源码可知,线程创建时首先判断系统是否有 securitymanager,如果有则新创建的线程会被放到和 SecurityManager 相同的线程组下,否则会和父线程在同一

2020-12-07 22:12:19 124

GraphDB Linux 安装包

GraphDB Linux 安装包

2022-03-03

kubernetes-server-linux-amd64.tar

kubernete Linux 二进制包,适和 k8s 学习者

2021-03-18

ElasticSearch 安装资源

ElasticSearch7.10 系列 windows 压缩包,Linux 压缩包,rpm 包,方便网速慢的同学可以很方便的下载这些安装包

2020-12-09

空空如也

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

TA关注的人

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