目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

RocketMQ入门与部署

RocketMQ4.x 特性 支持 Broker(减少带宽的传输)和 Consumer 端消息过滤 支持发布订阅模型,和点对点, 支持拉 pull 和推 push 两种消息模式 单一队列百万消息、亿级消息堆积 支持单 master 节点,多 master 节点,多 master 多 slave 节点 任意一点都是高可用,水平拓展,Producer、Consumer、队列都可以分布式 消息失败重试机制、支持特定 level 的定时消息 新版本底层采用 Netty 4.3.x 支持分布式事务 适合金融类业务,高可用性跟踪和审计功能。 角色 Producer:消息生产者 Producer Group:消息生产者组,发送同类消息的一个消息生产组 Consumer:消费者 Consumer Group:消费同类消息的多个实例 Tag:标签,子主题(二级分类)对 topic 的进一步细化,用于区分同一个主题下的不同业务的消息 Topic:主题, 如订单类消息,queue 是消息的物理管理单位,而 topic 是逻辑管理单位。一个 topic 下可以有多个 queue。(默认自动创建是 4 个....

JMS与消息中间件核心概念

JMS 消息服务  Java 消息服务(Java Message Service),Java 平台中关于面向消息中间件的接口。JMS 是一种与厂商无关的 API,用来访问消息收发系统消息,它类似于 JDBC(Java Database Connectivity)。—— JDBC 是可以用来访问许多不同关系数据库的 API。而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商都支持 JMS。 消息中间件使用场景 解耦:订单系统-》物流系统(责任转移) 异步:用户注册-》发送邮件(串行变并行,加快响应速度) 削峰:秒杀、日志处理(缓冲队列) 消息中间件常见概念 JMS 提供者:连接面向消息中间件的,JMS 接口的一个实现,RocketMQ,ActiveMQ,Kafka 等等 JMS 生产者(Message Producer):生产消息的服务 JMS 消费者(Message Consumer):消费消息的服务 JMS 消息:数据对象(POJO) JMS 队列:存储待消费消息的区域 JMS 主题:一种支持发送消息给多个订阅者的机制 JMS 消息通常有两种类型:点对点(....

虚拟机图形化工具

Jconsole  JConsole (Java Monitoring and Management Console)是一种基于 JMX 的可视化监视、管理工具,它管理部分的功能是针对 JMXMBean 进行管理,由于 MBean 可以使用代码、中间件服务器的管理控制台或者所有符合 JMX 规范的软件进行访问。  jconsole集成了线程与内存的可视化展示。 Jconsole连接方式 本地连接:通过JDK/bin目录下的“jconsole.exe”启动JConsole 后,将自动搜索出本机运行的所有虚拟机进程,不需要用户自己再使用 jps 来查询了。 远程连接 # 生成项目jar mvn install # scp将jar包进行远程复制 sudo scp /Users/daniel/Desktop/jvm-demo-0.0.1-SNAPSHOT.jar root@172.16.244.151:/usr/local # 将jar包启动 #nohup代表以守护线程的方式启动 # -Dcom.sun.management.jmxremote.port 开启远程访问JXM端口 nohup....

Nginx

Nginx 主要应用场景 静态资源服务 反向代理(缓存、负载均衡) API 服务 Nginx 的大规模使用的原因 互联网的数据量快速增长 摩尔定律的失效。 操作系统、大量软件没有做好服务于多核 CPU 的准备。譬如:低效的 Apache 一个连接对应一个进程。 Nginx 优势 高并发,高性能 可扩展性好 高可靠性 热部署 BSD 许可证 Nginx 的组成 二进制可执行文件:由各模块源码编译出的一个文件。 配置文件:控制 Nginx 的行为。 访问日志:记录每一条 http 请求信息。 错误日志:定位问题。 编译 Nginx 下载 [root@localhost test]# wget http://nginx.org/download/nginx-1.14.2.tar.gz [root@localhost test]# tar -xzf nginx-1.14.2.tar.gz 各目录简介 [root@localhost test]# cd nginx-1.14.2/ [root@localhost nginx-1.14.2]# ls # Nginx配置文件vim....

虚拟机工具

虚拟机工具的作用  使用适当的虚拟机监控和分析的工具可以加快我们分析数据、定位解决问题的速度。  需要分析的数据包括:运行日志、异常堆栈、GC 日志、线程快照 ( threaddump/javacore文件)、堆转储快照( heapdump/hprof文件)等。 虚拟机工具JPS  jps (JVM Process Status Tool)是其中的典型jvm工具。除了名字像 UNIX 的 ps 命令之外,它的功能也和 ps 命令类似:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class, main()函数所在的类)名称以及这些进程的本地虚拟机唯- ID (Local Virtual Machine Identifier, LVMID),虽然功能比较单一,但它是使用频率最高的 JDK 命令行工具 -l #展示类全限定名,如果进程执行的是Jar包则输出Jar路径。 -v #输出虚拟机进程启动时JVM参数 C:\Users\soulboy>jps 10488 7944 DemoApplication 1740 Jps 2252 Launcher 4988 Remot....

内存分配

Java堆内存分配 对象分配遵循的规则 对象主要分配在新生代的 Eden 区上。 如果启动了本地线程分配缓冲,将按线程优先在 TLAB 上分配。 少数情况下也可能会直接分配在老年代中。(新生代放不下的情况下、对象比较大的情况下[几乎占据From or To 区的全部,不如直接复制到老年代]。) 查看对象分配在哪个区域 //-verbose:gc -XX:+PrintGCDetails -XX:+UseSerialGC public class TestJVMFirst { private static final int byteSize = 1024 * 1024; public static void main(String[] args) { byte[] bytes = new byte[40 * byteSize]; //40MB内存 } } 控制台输出 Heap PSYoungGen total 76288K, used 47514K [0x000000076b000000, 0x0000000770500000, 0x00000007c0000000) eden ....

JVM垃圾收集器

JVM垃圾收集器  垃圾收集算法是内存回收的方法论,垃圾收集器是内存回收的具体实现。 并发与并行(垃圾回收器) 并行(Parallel):指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。 并发(Concurrent):指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),用户程序在继续运行,而垃圾收集程序运行于另一个 CPU上。 垃圾回收器分类 串行回收,Serial回收器,单线程回收,全程“Stop The World”。 并行回收,名称以Parallel开头的回收器,多线程回收,全程“Stop The World”。 并发回收,cms与G1,多线程分阶段回收,只有某阶段会“Stop The World”。 Serial收集器  Serial是一个单线程的垃圾收集器。采用“复制”算法,适用于新生代特点如下: “Stop The World”,它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。在用户不可见的情况下把用户正常工作的线程全部停掉。 使用场景:多用于桌面应用,Client端的垃圾回收器。 桌面应用内存小,进行垃圾回收的时间....