写点什么

架构师训练营 week07 学习总结

用户头像
GunShotPanda
关注
发布于: 2020 年 07 月 23 日
架构师训练营week07 学习总结

性能测试指标:响应时间、并发数、吞吐量、性能技术器

性能测试方法:性能测试、负载测试、压力测试、稳定性测试



性能优化的一般方法:先根据性能测试获得性能指标,然后分析性能指标,发现性能与资源瓶颈点。再进行架构与代码分析,寻找性能与资源瓶颈点所在,进而进行架构与代码优化。最后再次进行性能测试,验证性能是否得到优化。



系统性能优化的分层思想:机房与骨干网络、服务器与硬件、操作系统、虚拟机、基础组件、软件架构、软件代码



软件架构优化:缓存、异步、集群

软件代码性能优化:

1、并发编程,多线程与锁

2、资源复用,线程池与对象池

3、异步编程,生产者与消费者

4、数据结构,数组、链表、hash 表、树



进程、线程,多个线程共享进程的内存地址空间

线程栈:线程永远都是执行位于栈顶的函数

线程函数栈:存储局部变量



Java web 应用多线程运行时视图:物理服务器->操作系统->JVM 进程->Tomcat 容器->应用程序,每个用户请求分配一个线程



线程安全:多个线程同时修改堆里的数据的时候,就会产生线程安全问题

临界区:多个线程访问共享资源的一段代码被称为临界区

锁会导致线程阻塞,阻塞导致线程既不能继续执行,也不能释放资源,高并发系统中可能导致资源耗尽,进而导致系统崩溃

避免阻塞引起崩溃的手段:限流、降级、异步 IO



锁原语 CAS(V,E,N),V 表示要更新的变量、E 表示预期值、N 表示新值

系统原语,如果 V 值等于 E 值,则将 V 的值设为 N;若 V 值和 E 值不同,什么都不做

Java 通过 CAS 原语在对象头中修改 Mark Word 实现加锁

偏向锁、轻量级锁、重量锁,竞争加强,性能降低



多 CPU 情况下的锁:每个 CPU 有自己的缓存,通过缓存读取主存中的数据;通过缓存一致性协议或者总线锁机制保证一致性

总线锁:使用处理器的 LOCK#信号,当一个处理器在内存总线上输出此信号的时候,其他处理器的请求将被阻塞,该处理器独占内存

缓存锁:通过锁定缓存行的方式,来保证一致性,性能较好



公平锁、非公平锁

可重入锁

独享锁、互斥锁、共享锁、读写锁

乐观锁、悲观锁

分段锁

自旋锁


发布于: 2020 年 07 月 23 日阅读数: 52
用户头像

GunShotPanda

关注

JAVA开发 2019.09.03 加入

This is a letter for myself, for my future, for the past, for the better man of (health) Just got to do you and nobody else

评论

发布
暂无评论
架构师训练营week07 学习总结