Java
文章平均质量分 61
Java基础知识以及高级进阶内容!
秦岭野生程序猿
这个作者很懒,什么都没留下…
展开
-
Java设计模式系列——组合模式
文章目录1、什么是组合模式(Composite Pattern)2、组合模式详解2.1、组合模式解决的问题2.2、组合模式设计类图2.3、组合模式角色构成3、组合模式实现步骤3.1、定义抽象组件接口3.2、实现叶子节点3.3、定义实现组件集合类4、组合模式解决的问题1、什么是组合模式(Composite Pattern)组合模式是一种对象结构型模式,将对象组合成树形结果以表示“部分-整体”的层次结构。Composite使得用户对单个和组合对象的使用具有一致性。 以上是《设计模式》中文译版的一书中的定义,原创 2021-03-23 14:29:55 · 553 阅读 · 0 评论 -
Java设计模式系列——适配器模式
文章目录1、适配器模式应用场景2、适配器模式详解2.1、适配器模式角色构成2.2、适配器模式分类3、适配器模式的实现步骤及案例3.1、确定适配目标接口3.2、确定被适配者3.3、创建适配器1、适配器模式应用场景适配器模式(Adapter Pattern)是指将一个类的接口转换成用户期望的另一个接口,使原本接口不兼容的类可以一起工作,属于结构型设计模式。适配器模式适用于以下集中业务场景:已经存在的类的方法和需求不匹配(方法结果相同或者相似)的情况。适配器模式不是软件设计初始阶段考虑的设计模式,是随着原创 2021-03-10 16:43:06 · 224 阅读 · 0 评论 -
Java设计模式系列——观察者模式
文章目录1、观察者模式应用场景2、观察者模式案例3、观察者模式的优缺点1、观察者模式应用场景观察者模式(Observer Pattern)定义了对象之间的一对多依赖,让多个观察者同时监听一个主体对象,当主体对象发生变化时,他的所有依赖者(观察者)都会收到通知并更新,属于行为型模式。观察者模式有时候也叫做发布订阅模式。观察者模式主要用于在关联行为之间建立一套触发机制的场景。2、观察者模式案例假设现在有如下场景,网课在线问答系统,当学生在这个系统上提交问题之后,所有注册到这个系统的老师都可以收到问题提交原创 2021-03-04 15:34:26 · 120 阅读 · 0 评论 -
Java设计模式系列——策略模式
1、什么是策略模式(Strategy Pattern)策略模式(Strategy Pattern)是指定义了算法家族并分别封装起来,让它们之间可以相互替换,此模式使得算法的变化不会 影响使用算法的用户。2、策略模式的应用场景策略模式的应用场景如下:系统中有很多类,而它们的区别仅仅在于其行为不同。一个系统需要动态的在几种算法之间选择一种。3、策略模式的成员结构策略模式有以下三种角色构成抽象策略类:定义所有支持的算法公共接口。具体策略实现类:实现抽象策略接口实现具体的算法策略。环境类(原创 2021-03-01 13:51:09 · 274 阅读 · 2 评论 -
Java设计模式系列——单例模式
1、单例模式的应用场景单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并且提供一个全局访问点。单例模式是创建型模式,在实际的开发过程中应用广泛,例如J2EE中的ServletContext、ServletContextConfig等,Spring框架中ApplicationContext、数据库连接池等都是单例形式。2、饿汉式单例模式饿汉式单例模式在类加载的时候就立即初始化,并且创建单例对象 。因此这种单例模式是天然的线程安全的,在线程还没有出现之前就已经实原创 2021-02-04 15:02:16 · 124 阅读 · 0 评论 -
一个关于AQS的博文
https://mp.weixin.qq.com/s/trsjgUFRrz40Simq2VKxTA转载 2021-01-11 15:18:02 · 50 阅读 · 0 评论 -
Java内存模型与线程
1、计算机硬件的缓存一致性由于计算机存储设备与处理器的运算速度有着几个数量级的差距,所以现代计算机不得不加入一层或者多层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为处理器与内存之间的缓冲:将运算需要的数据复制到缓存中,让运算能够快速进行,当运算结束后再从缓存中同步回内存中,这样处理器就无需等待缓慢的内存读写了。基于高速缓存的存储交互很好的解决了处理器与内存速度之间的矛盾,但它却引入了一个新的问题:缓存一致性(Cache Coherence)。在一个多路处理器系统中,每一个处理器都有自己原创 2020-07-22 16:12:02 · 93 阅读 · 0 评论 -
大厂面试必问——虚拟机类加载机制
1、概述***Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。***与那些在编译时需要进行连接的语言不同,在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略让Java语言进行提前的编译会面临额外的困难,也会让类加载时稍微增加一些性能开销,但是却为Java应用提供了极高的扩展性和灵活性,Java天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个原创 2020-07-13 16:09:49 · 226 阅读 · 0 评论 -
JVM垃圾收集器与内存分配策略(四)—— Garbage First
Garbage First 收集器Garbage First(简称G1)收集器时垃圾收集器技术发展史上的里程碑式的成果,它开创了收集器面向局部收集的设计思路和基于Region的内存布局形式。G1是一款主要面向服务端应用的垃圾收集器。HotSpot开发团队最初赋予它的期望是(在比较长期的)未来可以替换掉JDK5中发布的CMS收集器。作为CMS收集器的替代者和继承人,设计者们希望做出一款能够建立起“停顿时间模型”(Pause Prediction Model)的收集器,停顿时间模型的意思是能够支持指定在一原创 2020-07-01 17:02:33 · 193 阅读 · 0 评论 -
JVM垃圾收集器与内存分配策略(三)—— 垃圾收集器
1、Serial收集器Serial收集器时最基础、历史最悠久的收集器,JDK1.3.1之前是HotSpot虚拟机新生代收集器的唯一选择。这个收集器是一个单线程工作收集器,这里的“单线程”的意义并不仅仅是说明它只会使用一个处理器或者一条收集线程去完成垃圾收集工作,更重要的是强调在它进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束(Stop The World)。Serial/Serial Old收集器运行过程示意图:2、ParNew收集器ParNew收集器实质上时Serial收集器的多线程并原创 2020-06-30 16:37:28 · 138 阅读 · 0 评论 -
JVM垃圾收集器与内存分配策略(二)—— 垃圾收集算法
1、垃圾收集算法从如何判定对象消亡的角度出发,垃圾收集算法可划分为 “引用计数式垃圾收集”(Reference Counting GC)和 “追踪式垃圾收集”(Tracing GC)两大类,这两类也常被称作 “直接垃圾收集” 和 “间接垃圾收集”。1.1、分代收集理论当前商业虚拟机的垃圾收集器,大多数遵循了 “分代收集”(Generational Collection)的理论进行设计,它建立在两个粉黛假说之上:弱分代假说(Weak Generational Hypothesis):绝大数对象都是朝原创 2020-06-28 16:15:55 · 134 阅读 · 0 评论 -
JVM垃圾收集器与内存分配策略(一)
1、对象已死?在堆里存放着Java世界几乎所有的对象实例,垃圾收集器在堆进行回收前,第一件事情就是要确定这些对象之中哪些还 “存活” 着,哪些已经 “死去” (即不可能再被任何途径使用了)。1.1、引用计数法...原创 2020-06-24 16:19:45 · 98 阅读 · 0 评论 -
Java虚拟机内存模型
一、JVM内存区域1.运行时数据区域根据《Java虚拟机规范》的规定,Java虚拟机所管理的内存主要包括以下几个运行时数据区域:1.1 程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码指令的行号指示器。每条线程都有一个独立的程序计数器,各条线程之间计数互不影响,独立存储,这类内存区域为 ‘线程私有’ 的内存。如果线程执行的是一个Java方法,这个计数器记录的时正在执行的虚拟机字节码指令的地址;如果执行的是本地(Nati原创 2020-06-23 17:14:07 · 1034 阅读 · 0 评论 -
利用OpenOffice实现word文档在线预览
项目中遇到的word文档在线预览需求,查阅很多资料决定利用openoffice转换word文档为pdf/html进行预览实现。1.下载openoffice4安装 www.openoffice.org;2.导入相关jar包<dependency> <groupId>org.artofsolving.jodconverter</groupId> ...原创 2018-02-26 10:58:35 · 18011 阅读 · 7 评论