java架构
夏沐_lk
这个作者很懒,什么都没留下…
展开
-
java架构师 JVM性能优化之JVM参数配置
JVM提供了诸多的参数进行JVM各个方面内存大小的设置,为Java应用进行优化提供了诸多的工具。1、常见参数配置-XX:+PrintGC 每次触发GC的时候打印相关日志-XX:+UseSerialGC 串行回收-XX:+PrintGCDetails 更详细的GC日志-Xms 堆初始值-Xmx ...原创 2020-01-10 20:21:17 · 319 阅读 · 0 评论 -
java架构师 JVM性能优化之垃圾回收机制
1、垃圾回收机制简介 不定时去堆内存中清理不可达对象(没有被引用的对象或没有存活的对象)。不可达的对象并不会马上就会直接回收,垃圾收集器在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System.gc 方法来"建议"执行垃圾收集器,但其是否可以执行...原创 2020-01-09 21:02:25 · 165 阅读 · 0 评论 -
java架构师 JVM性能优化之 java内存结构概述
1、java内存结构 java虚拟机在执行java程序的过程中,将它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。java虚拟机管理的内存分为如下图所示的运行时数据区。1.1 堆 java堆是java虚拟机所管理的内存中最大的一块,...原创 2020-01-09 17:26:28 · 276 阅读 · 0 评论 -
java架构师 设计模式之观察者模式
1、观察者模式(1)简介 观察者模式(Observer),是一种行为性模型,行为型模式关注的是系统中对象之间的相互交互,解决系统在运行时对象之间的相互通信和协作,进一步明确对象的职责。 创建型模式关注对象的创建过程。 结构型模式关注对象和类的组合关系。(2)职责 观察者模式主要用于1对N的通知。当一个对象的状态变化时,他...原创 2019-12-31 16:28:52 · 201 阅读 · 1 评论 -
java架构师 设计模式之策略模式
1、策略模式(1)简介 定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(2)应用场景 策略模式的用意是针对一组算法或逻辑,将每一个算法或逻辑封装到具有共同接口的独立的类中,从而使得它们之间可以相互替换。策略模式使得算法或逻辑可以在不影响到客户端的情况下发生变化。说到策略模式就不得不提及OC...原创 2019-12-31 16:19:09 · 125 阅读 · 0 评论 -
java架构师 设计模式之装饰者模式
1、装饰者模式 装饰者模式,也成为包装模式,顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能。其结构图如下:(1)Component为统一接口,也是装饰类和被装饰类的基本类型。(2)ConcreteComponent为具体实现类,也是被装饰类,他本身是个具有一些功能的完整的类。(3)Decorator是装饰类,实现了Component接口的同时还在内部...原创 2019-12-31 15:59:38 · 136 阅读 · 0 评论 -
java架构师 设计模式之原型模式
1、原型模式 原型模式是一个创建型的模式。原型二字表明了该模式有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。2、原型模式的应用场景(1)类初始化需要消化非常多的资源,...原创 2019-12-31 15:38:37 · 157 阅读 · 0 评论 -
java架构师 设计模式之外观模式
1、外观模式 外观模式(Facade Pattern)门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。2、案例 需要实现一个发送三种消息的功能,传统的发送需要依次调用短信接口发送短信、调用邮件接口发送邮件、调用微信推送接口推送微信,但是使用外观模式,...原创 2019-12-31 10:32:18 · 133 阅读 · 0 评论 -
java架构师 设计模式之适配器模式
1、适配器模式 在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。(1)适配器分类适配器分为:类适配器、对象适配、接口适配方式类适配器方式采用继承方式,对象适配方式使用构造函数...原创 2019-12-30 22:31:36 · 128 阅读 · 0 评论 -
java架构师 设计模式之模板方法模式
1、模板方法模式 定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的重复代码全部在父类里面,不同业务的,抽取给子类进行实现。 核心:处理某个流程的代码框架已经都具备,但是其中某个节点的代码暂时不能确定。因此,我们采用工厂方法模式,将这个节点的代码实现转移给子类完成。即:处理步骤在父类中定义好,具体的实现...原创 2019-12-30 20:40:31 · 189 阅读 · 0 评论 -
java架构师 设计模式之建造者模式
1、建造者模式简介 建造者模式:是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指不同的类具有不同的属性。2、建造者模式中的角色(1)Builder:给出一个抽象接口,以规范产品对象的各个组成成分的建造。这个...原创 2019-12-30 16:36:20 · 108 阅读 · 0 评论 -
java架构师 设计模式之代理模式
1、代理模式 通过代理控制对象的访问,可以详细访问某个对象的方法,同时可以在这个方法调用前,添加新的功能,或调用后,添加新的功能。例如:Spring框架中的AOP(面向切面编程)实现原理。 由上图可知:代理类和实现类均实现同一个(多个)接口,重写接口中的方法; 代理类的构造函数需要传入实现类,作为参数; 代理类调用实现类中的方法,同时可以在方法前或后...原创 2019-12-26 15:03:23 · 108 阅读 · 0 评论 -
java架构师 设计模式之3种工厂模式
1、工厂模式含义及分类:实现了创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂模式。优势:(1)工厂模式是一种较为常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。(2)利用工厂模式可以降低程序的耦合性,为后期的维护修改提供了很大的便利。(3)将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。2、简单工厂模式 简...原创 2019-12-26 11:13:06 · 155 阅读 · 0 评论 -
java架构师 设计模式之单例模式的5种创建方式
1、设计模式1.1 设计模式分类创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、 ...原创 2019-12-16 20:14:30 · 154 阅读 · 0 评论 -
java架构师 设计模式之反射机制中类的创建及案例
1、java反射 反射是指在运行状态中,对于任意的一个类,都可以获取这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取信息及动态调用对象的方法功能成为java语言的反射机制。(1)反射机制的作用反编译:.class-->.java通过反射机制访问java对象的属性,方法,构造方法等;(2)反射机制的应用场景Jdbc...原创 2019-12-06 16:22:14 · 185 阅读 · 0 评论 -
java架构师 并发编程之自旋锁与互斥锁的区别
自旋锁是一种互斥锁的实现方式而已,相比一般的互斥锁会在等待期间放弃cpu,自旋锁(spinlock)则是不断循环并测试锁的状态,这样就一直占着cpu。 互斥锁:用于保护临界区,确保同一时间只有一个线程访问数据。对共享资源的访问,先对互斥量进行加锁,如果互斥量已经上锁,调用线程会阻塞,直到互斥量被解锁。在完成了对共享资源的访问后,要对互斥量进行解锁。 ...转载 2019-12-05 17:32:24 · 293 阅读 · 0 评论 -
java架构师 并发编程之Disruptor并发框架
1、Disruptor框架简介(1)Disruptor它是一个开源的并发框架,能够在无锁的情况下实现网络的Queue并发操作。(2)Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。 在使用之前,首先说明disruptor主要功能加以说明,可以理解为他是一种高效的"生产者-...原创 2019-12-04 22:04:48 · 310 阅读 · 0 评论 -
java架构师 并发编程之锁的深度化
1、重入锁 锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) 。这些已经写好提供的锁为我们开发提供了便利。 重入锁,也叫做递归锁,指的是同一线程,外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。 在JAVA环境下 Reentr...原创 2019-11-21 22:07:05 · 107 阅读 · 0 评论 -
java架构师 并发编程之Callable与Future模式
1、Callable 在Java中,创建线程一般有两种方式,一种是继承Thread类,一种是实现Runnable接口。然而,这两种方式的缺点是在线程任务执行结束后,无法获取执行结果。我们一般只能采用共享变量或共享存储区以及线程通信的方式实现获得任务结果的目的。 不过,Java中,也提供了使用Callable和Future来实现获取任务结果的操作。Callable用来...原创 2019-11-20 20:02:21 · 155 阅读 · 0 评论 -
java架构师 并发编程之线程池原理分析
1、创建线程池的方式线程池创建有七种方式,最核心的是最后一种:(1)newSingleThreadExecutor(): 它的特点在于工作线程数目被限制为1,操作一个无界的工作队列,所以它保证了所有任务的都是被顺序执行,最多会有一个任务处于活动状态,并且不允许使用者改动线程池实例,因此可以避免其改变线程数目;(2)newCachedThreadPool(): 它是一种用来处理大量短时间...原创 2019-11-08 16:23:09 · 586 阅读 · 0 评论 -
java架构师 并发编程之多线程间的通信
1、多线程之间通信多线程间通信指的是多个线程操作同一个资源,但是操作的动作不同。案例:需求:第一个线程写入(input)用户,另一个线程取读取(out)用户.实现读一个,写一个操作。public class Res { public String userSex; public String userName; public static void main(St...原创 2019-10-30 20:42:37 · 155 阅读 · 0 评论 -
java架构师 并发编程之Java内存模型
1、线程安全(1)什么是线程安全问题? 当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。案例:需求现在有100张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果。public class ThreadTrain implements Runnable { priv...原创 2019-10-21 22:25:12 · 184 阅读 · 0 评论 -
java架构师 并发编程之多线程基础
1、线程与进程的区别 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。 使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,...原创 2019-10-18 20:05:04 · 214 阅读 · 0 评论