随笔分类 - Java
摘要:[toc] 对象创建时内存分配 JMM描述我们了解到 从归属区分: 归属线程的:虚拟机栈、本地方法栈、pc计数器 归属jvm的:堆、方法区 从功能区分: 保存对象实例数据:堆 保存类的数据:方法区 保存方法变量:虚拟机栈 保存本地方法变量:本地方法栈 保存线程执行位置:pc计数器 ps:jdk8以前
阅读全文
摘要:1、读JDK源码之前先读数据结构与算法,读框架源码之前先读设计模式;在框架源码中,大量应用了设计模式,可以通过读框架源码,快速的学习和理解设计模式的用法;同样,理解的设计模式,会帮助自己更好的了解源码 2、在人力平衡时,要根据项目的实际情况进行分析,如果项目的完成时间,跟人力成反比,跟交流复杂度成正
阅读全文
摘要:[toc] 模式名和分类 Factory 意图 定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 备注1: 工厂方法是一个类的实例化延迟到其子类。 指的是工厂接口的实现类。 备注2:工厂方法模式只是工厂模式的一个优化,很多时候不会特意将简单工厂区与工厂方法区分
阅读全文
摘要:模式名和分类 Proxy 意图 为其他对象提供一种代理以控制对这个对象的访问 动机 1、在实际处理方不方便或者不适合直接出现时,使用代理来响应调用方。远程代理,虚拟代理, 2、主要目的是控制对象的访问,也可以做一定的增强或者和扩展。(spring的aop) 结构 参与者 公共接口或者父类 Subje
阅读全文
摘要:replace method 定义bean 定义xml 测试代码 测试结果 org.dhcao.relax.spring.replace.RunMan&&EnhancerBySpringCGLIB&&475def3a say i am replacer
阅读全文
摘要:lookup method lookup method为抽象方法指定返回类型,会为标记了lookup method的方法生产代理类来处理返回类, 所以就算是个抽象类,依然可以使用,毕竟真正调用的是代理类。 定义bean 配置xml 使用结果 七月 25, 2019 12:00:47 下午 i am
阅读全文
摘要:[toc] 模式名和分类 装饰者模式:xxxDecorator 意图 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰者模式比生成子类更加灵活。 别名 xxxWrapper 动机 在不增加子类的情况下为类增加功能。虽然根据 里氏置换原则 ,我们可以通过扩展子类来为一个类增加功能,但是如果新增
阅读全文
摘要:模式名和分类 策略模式:xxxStrategy 分类:行为模式 意图 解决处理算法多变而程序设计改动需要小的矛盾。就是算法的增加和修改,程序的影响更小。 别名 xxxPolicy 动机 解决多变的处理算法,而不愿意改动太多程序。 面对经常变化的算法需求,可能是电商系统中多变的优惠需求,支付系统中可能
阅读全文
摘要:这个模式比较简单,平常也基本不用,见得最多的也就是读spring框架源码时候。 写这个总是提不起精神,写得不好,去看这个吧: https://www.runoob.com/design-pattern/factory-pattern.html 模式名和分类 模式名:xxxFactory 分类:创建型
阅读全文
摘要:[toc] 前言 在互联网系统中,Java语言大行其道。越来越多的开源框架,商业框架应用在web项目中,越来越多的组件被创建,大大提高了网站开发效率,使得开发者越发的可以专注于业务逻辑而非系统辅助组件的实现。 但是,在有了框架的帮助之后,许多人容易产生误解,框架提供的功能强大,我们不需要写很多的辅助
阅读全文
摘要:[toc] 一、线程安全定义 定义: 多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。 该定义由Brian Goetz在《Java Conc
阅读全文
摘要:前言 在Java运行期,程序会使用到若干内存区,其中一些会随着虚拟机启动而创建,随着虚拟机销毁而销毁。还有些则是与线程一一对应,他们随着 线程的开始而创建,线程的结束而销毁。 Jvm运行时内存区根据生命周期分为2种:1、归属虚拟机的。2、归属线程的。 线程描述:开始和结束;内存描述:创建和销毁。
阅读全文
摘要:[TOC] 一、对Stream的一些了解 Java API中有大量的方法产生stream;对于stream流的理解,个人认为如果了解inputStream和outputStream的人会更轻松一点。它的本质就是创建一个视图,一个用于计算的视图。 Java中可以将集合看作是数组的视图,而strea
阅读全文
摘要:1、垃圾回收算法 1.1、标记-清除算法(Mark-Sweep): 过程分为“标记”和“清除”两个过程。先将所有需要回收的目标统一标记,然后再统一清除。 不足: 1.“标记”和“清除”两个过程的效率并不高。 2.无法保证得到的内存是否是连续的。当存在大量的零碎的内存空间,但任一内存块均无法满足某个较
阅读全文
摘要:1、判断对象已经死去/不再被引用。 1.1、引用计数算法:给对象添加引用计数器,有个地方引用就+1,引用失效就-1。任何时刻,引用为0,即判断对象死亡。 1.1.1、优点:实现简单,效率高。 1.1.2、缺点:在主流的Java虚拟机中不被使用,因为很难解决对象之间相互循环引用的问题。 1.2、可达性
阅读全文
摘要:1、Serial(串行)收集器(新生代都采用复制算法) 这是个单线程的收集器:即 当他工作的时候,会停掉虚拟机所有的线程!(Stop The World) 2、ParNew(并行)收集器(新生代都采用复制算法) 这是Serial的升级版,允许多条GC线程同时回收,但是,依然要停掉所有的用户线程(St
阅读全文
摘要:本文持续更新..... 1、GC的输出日志: a. -verbose:gc,辅助输出一些详细的gc信息 b. -XX:+PrintGCDetails,输出gc的详细信息 c. -XX:PrintGCApplicationStoppedTime,输出gc造成应用造成应用程序暂停的时间 d. -XX:P
阅读全文

浙公网安备 33010602011771号