Java性能优化-1

响应时间的分类

Java性能优化-1_第1张图片

 

性能调优策略

Java性能优化-1_第2张图片

 

 

正则表达式的组成

Java性能优化-1_第3张图片

目前正则表达式引擎有两种

  1. DFA自动机 Deterministic Final Automata 确定有限状态自动机
  2. NFA自动机 Non deterministic Finite Automaton 非确定有限状态自动机

构造DFA代价大于NFA,但DFA执行效率高于NFA
正则表达式库都是基于NFA的,优势是支持更多功能
NFA自动机的回溯,如 "ab{1,3}c"
1.贪婪模式Greedy,尽可能匹配更多内容
2.懒惰模式Reluctant, ab{1,3}?c,会首先选择最小的匹配范围,即匹配1个b字符
3.独占模式Possessive,ab{1,3}+bc,会最大限度匹配更多内容,但匹配失败就会结束匹配,不会回溯
避免低效的回溯方法是,使用懒惰模式,独占模式
 

Stream 操作的分类

Java性能优化-1_第4张图片

它的并行操作是用Fork-Join框架实现的

JDK8的 HashMap数据结构图

Java性能优化-1_第5张图片

Java序列化的缺点
1.无法跨语言
2.太灵活容易被攻击
3.序列化后的流太大
4.序列化性能太差
替代方案
FastJson,Kryo,Protobuf,Hessian,Thrift
单列的对象如果序列化了,也会破坏单列的规则

Java性能优化-1_第6张图片

微服务的核心是 远程通信 和 服务治理(服务的后勤保障)
MVC,RPC,SOA,微服务架构的演变
Java性能优化-1_第7张图片

默认的RMI框架执行图

Java性能优化-1_第8张图片


RMI的缺点
1.Java默认序列化性能不佳
2.TCP短连接
3.阻塞式网络I/O

高并发场景下的RPC框架设计思路
1.选择合适的通讯协议 TCP/UDP
2.单一长连接
3.优化Socket通讯,非阻塞I/O,Reactor线程模型,零拷贝,pipeline模式
4.自定义报文格式

Java性能优化-1_第9张图片
5.编码解码,选择一个序列化框架
6.调整系统参数

Java性能优化-1_第10张图片

 

你可能感兴趣的:(系统)