ps做网站连接,自己建网站需要怎么做,旅游app营销策略,最新版高性能网站建设指南之前接触过一些高并发场景下的性能优化#xff0c;最近过年时候又碰巧看了一些相关资料#xff0c;趁着还没忘干净#xff0c;手动整理一下#xff0c;有一些是在别处看到的#xff0c;有一些是自己的亲身经历#xff0c;因为偏向于自己整理笔记所以很多地方都只是列了一…之前接触过一些高并发场景下的性能优化最近过年时候又碰巧看了一些相关资料趁着还没忘干净手动整理一下有一些是在别处看到的有一些是自己的亲身经历因为偏向于自己整理笔记所以很多地方都只是列了一个大纲和解决办法并没有详细涉及原理感兴趣的朋友可以自行查阅相关文献
1.确认瓶颈 cpu内存磁盘网络异常数据库锁竞争 cpu代码递归导致的无限循环正则表达式引起的回溯JVM 频繁的 FULL GC以及多线程编程造成的大量上下文切换 内存内存溢出、内存泄露 异常如果在高并发的情况下引发异常持续地进行异常处理那么系统的性能就会明显地受到影响。 锁竞争Java 为了降低锁竞争带来的上下文切换对 JVM 内部锁已经做了多次优化例如新增了偏向锁、自旋锁、轻量级锁、锁粗化、锁消除等 2.优化代码 1我们经常使用的 LinkedList 集合如果使用 for 循环遍历该容器将大大降低读的效率但这种效率的降低很难导致系统性能参数异常。这时有经验的同学就会改用 Iterator 迭代器迭代循环该集合这是因为 LinkedList是链表实现的如果使用 for 循环获取元素在每次循环获取元素时都会去遍历一次List这样会降低读的效率。 2字符串优化String 对象的拼接涉及到线程安全你可以使用 StringBuffer。但是要注意由于 StringBuffer 是线程安全的涉及到锁竞争所以从性能上来说要比StringBuilder 差一些。 3在每次赋值的时候使用 String 的 intern 方法如果常量池中有相同值就会重复使用该对象返回对象引用这样一开始的对象就可以被回收掉。这种方式可以使重复性非常高的地址信息存储大小从 20G 降到几百兆。 4我们应该慎重使用 Split() 方法我们可以用 String.indexOf() 方法代替 Split() 方法完成字符串的分割。如果实在无法满足需求你就在使用 Split() 方法时对回溯问题加以重视就可以了。 5慎重使用正则表达式对于正则表达式的优化方式有1.少用贪婪模式多用独占模式 2. 减少分支选择 3. 减少捕获嵌套 6Stream提高遍历集合效率在循环迭代次数较少的情况下常规的迭代方式性能反 而更好在单核 CPU 服务器配置环境中也是常规迭代方式更有优势而在大数据循环迭 代中如果服务器是多核 CPU 的情况下Stream 的并行迭代优势明显。所以我们在平时 处理大数据的集合时应该尽量考虑将应用部署在多核 CPU 环境下并且使用 Stream 的 并行迭代方式进行处理。 7我们在编码中也可以优化 HashMap 的性能例如重新 key 值的 hashCode() 方法降 低哈希冲突从而减少链表的产生高效利用哈希表达到提高性能的效果。 8I/O瓶颈BIONIOAIO 9避免java序列化 10RPC 通信是重点优化的对象 11selectpollepoll
以上写的比较简单是一些常用的优化手段还有很多暂时没有补充完整留一个坑后续会慢慢补充