摘要:
一、安装 上官网下载tar包 http://activemq.apache.org/ tar -zxvf 后进入bin/linux-86-64 ./activimq start 启动 二、使用 pom文件引入依赖 application.properties的配置文件 生产者代码: 消费者代码: 调 阅读全文
摘要:
一、JMM 有序性,可见性,原子性 synchorize :3个性都有; volatile:保证可见性+禁止指令重排; 二、线程的五种状态 面向过程与面向对象的差别 面向过程:站在计算机的角度分析和解决问题,把问题分解成数据+程序两个独立的单元; 面向对象:站在现实的角度分析和解决问题,把数据+程序 阅读全文
摘要:
一、线程栈模型 二、如果确定重载方法 编辑器并不知道实际类型,只知道静态类型,所以会根据静态类型来调用重载方法; 阅读全文
摘要:
类加载机制 一、类的生命周期 二、5种情况必须对类进行“初始化” 1、new 对象 2、反射的时候 3、父类没有初始化的时候,需要先初始化父类 4、Main入口,需要初始化这个类 5、代理invoke时 三、类加载全过程(加载-验证-准备-解析-初始化) 加载: 1、获取class文件的二进制流; 阅读全文
摘要:
Class文件的格式 1、magic(魔数) 身份标识,用来标记这是不是一个CLASS文件 CLASS的魔数比较有浪漫气息,是0xCAFEBABE(咖啡宝贝),也标识着将来JAVA咖啡商标; 2、之后4为是version版本号00 00 00 32是十进制50,代表是jdk1.6以上的版本号 3、常 阅读全文
摘要:
一、不断增加对象触发GC的代码 VM 参数:-Xms100m -Xmx100m -XX:+UseSerialGC 效果图: 二、线程检测 代码: jconsole的图: 三、死锁代码 二、VisualVM VisualVM安装插件报错 https://blog.csdn.net/xionglangs 阅读全文
摘要:
一、JPS(虚拟机进程监控工具) 二、jstat:虚拟机统计信息监视工具 例子:jstat -gcutil 16478 s0:区域占比2.33%; s1占比0.00%; E:伊甸园区 ; O:老年区; M+CSS不懂; YGC=young gc = mino gc; YGCT = YGC的总耗时; 阅读全文
摘要:
4种引用 1、强引用在一般的Java 程序中,见到最多的就是强引用(strong reference)。如Date date = newDate(),date 就是一个对象的强引用。 2、软引用(内存不足的时候才会回收)软引用(soft reference)在强度上弱于强引用,通过类SoftRefe 阅读全文
摘要:
1。加载2。链接(检验/准备/解析) 1/检验过程:检验class的数据格式。2/准备过程:创建静态域,并将这些域设为默认值。3/解析过程:在一个Java类中会包含对其它。类或接口的形式引用,包括它的父类、所实现的接口、方法的形式参数和返回值的Java类等。解析的过程就是确保这些被引用的类能被正确的 阅读全文
摘要:
1、解决哪些内存需要回收;2、什么时候回收;3、如何回收;如果一个对象是gc.root不可达,先判断他的finalize方法有没有被重写,没有重写直接回收,如果重写,则放在一个叫F-QUEUE的队列用,由一个线程去执行对象的finalize方法,执行完finalize方法后,回收的时候会再次判断是否 阅读全文
摘要:
JMM(内存模型) 1、’主内存+每个线程有自己的内存 JVM运行时数据区 包含:1、程序计算器(每个线程自带);2、JAVA-STACK(每个线程自带);3、本地方法stack;4、堆;5、方法区; 1、程序计算器(每个线程自带) 2、JAVA-STACK(每个线程自带)1:局部变量表2:操作数栈 阅读全文
摘要:
Document biggg --> 阅读全文
摘要:
1、这是生成代码的关键 引入maven依赖 2、编写JAVA类 执行结果 阅读全文
摘要:
详细参考这篇文章(windows) https://blog.csdn.net/qiuyufeng/article/details/70474001 一、使用JAVA代码操作redis集群 二、使用JAVA代码操作lua脚本 1、编写lua脚本 2、java代码 需要注意的时,redis集群执行lu 阅读全文
摘要:
适用场景 需要记录的源类 备忘录(又叫便利贴纸) CareTask存放备忘录的地方 客户端client 其实备忘录模式某种意义上就是把对象clone一次,放在linkedList中,每次操作都Push进去,回滚就把状态对象pop出来 阅读全文
摘要:
适用场景如下: springmvc中的拦截器就用了责任链模式 UML图如下: 其中最为关键位handle类 代码如下: AHandle类 Client类调用 结果效果如下: 阅读全文
摘要:
适用场景,不断组合一些功能组件的时间用 JDK中,输入流输出流就用了这个模式 ()各种inputStrem传入返回inputStream) UML图如下 Icar类 public interface ICar { void run(); } car类 public class Car impleme 阅读全文
摘要:
总体思路,要确认一个定时任务需要一个cron表达式+jobDetail; 现在要让实现定时任务的协调,则就让zookeeper,简单说就是需要3要素,zk对象+cron+jobDetail; 总的项目结构 1、maven引入依赖 application.properties如下: 其中 创建一个任务 阅读全文
摘要:
组合模式(一般用于树状结构,其实有点想发布订阅模式) 以文件夹系统为列子,假如我们要查杀D盘下的文件 文件夹对象和文件对象都有查杀方法,而文件夹对象还有增、删、查的功能 增加图片文件、视频文件、和文件夹calss 主函数,构件一个文件夹,然后查杀 阅读全文
摘要:
适配器模式(适用场景,旧系统的改造,而且有部分代码不能修改,要做兼容处理) 原有的usb接口 原有的调用方法 现在希望调用的方法 中间创建的过渡类 JAVA中的输入流输出流包装就是用了适配器模式 阅读全文
摘要:
1.饿汉式 优点:线程安全 缺点:立即加载 2.懒汉式 优点:懒加载 缺点:线程不安全(可以用双重锁机制来保证线程安全,但是调用效率低) 3.内部类型单例模式,前两种基本不用,因为这种包含前两种的优点 优点:1、线程安全,2、懒加载 代码如下: 4、枚举类 优点:前三种都没法避免使用反射/序列化(即 阅读全文
摘要:
一、静态工厂(简单,但是增加多一个对象时要修改代码) 工厂代码 客户端代码 二、普通工厂(增加对象时不用修改代码,但是要增加很多class文件) 只贴一个工厂的例子 客户端使用 三、抽象工厂,基本上是普通工厂的升级,只是多几个create方法 先写一个工厂接口 再写一个工厂实例 客户端调用代码 阅读全文