JVM性能调优实战之UseParallelGC

前言 在生产环境中,你是否遇到过这样的问题? 1)系统运行一段时间后old区空间正逐渐减少? 2)遇到秒杀促销活动等场景old区存储突然暴增,导致JVM Full GC。fgc time持续过长导致cpu 100%? 3)jvm eden区分配的内存实际并没有按照配置的指定?survivor区对象晋升到old区并没有达到默认的15次? 4)如何避免Full GC,JVM产生FGC后如何解决? ……

Java实现LFU算法

LFU(Least Frequently Used)算法,即最少访问算法,根据访问缓存的历史频率来淘汰数据,核心思想是“如果数据在过去一段时间被访问的次数很少,那么将来被访问的概率也会很低”。 手撕LFU算法 package com.github.xuchengen.cache; import java.util.HashMap; import java.util.Map; import java
Java实现LFU算法

Java实现LRU算法

LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。 该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当须淘汰一个页面时,选择现有页面中其t值最大的,即最近最少使用的页面予以淘汰。 基于LinkedHashMap实现LRU package com.github.xuchengen.cach
Java实现LRU算法

生产环境Java项目CPU飙升100%排查

Java线上项目CPU飙升100%排查步骤 # 使用TOP命令查看进程ID top # 使用top命令查看线程ID top -H -p {进程ID} # 转换线程ID为16进制便于后续搜索 printf '%x' {线程ID} # 使用jstack命令导出文件 jstack {进程ID} > {项目名称_进程ID}.txt # 最后使用16进制线程ID去txt文件搜索进行进一步分析排

解决Mac高版本系统不能安装JDK6的问题

公司部分业务系统依然使用的JDK6,然后便有了下文。 苹果官方JDK6下载地址:https://support.apple.com/kb/dl1572?locale=zh_CN 苹果高版本Mac系统已经不允许直接运行dmg包安装JDK6,以下脚本请用Apple script运行,然后双击桌面的pkg包安装。 set theDMG to choose file with prompt "Please

基于ShardingShphere-JDBC实现读写分离

基于ShardingShphere-JDBC读写分离的样版工程。通过该工程快速了解ShardingShphere-JDBC框架。 Github地址 项目框架 Spring Boot Mybatis tkMapper PageHelper HikariCP MySQL knife4j ShardingShphere-JDBC 基础设施搭建 MySQL数据库一个master节点一个slave节点均部署

使用Java实现负载均衡算法

说到负载均衡我们首先会想到Nginx负载均衡策略,在Nginx中支持5种负载均衡策略他们分别是:轮询、加权轮询、ip_hash、fair、url_hash。 概念 负载均衡是将客户端请求访问,通过提前约定好的规则转发给各个server。其中有好几个种经典的算法,下面我们用Java实现这几种算法。 轮询算法 轮询算法按顺序把每个新的连接请求分配给下一个服务器,最终把所有请求平分给所有的服务器。 优点

SpringBoot通用日志解决方案

金融项目中对于业务较为敏感我们通常需要将用户的操作形成一个结构化的数据并进行持久化。 结构化日志需要的字段: 操作员信息、客户端IP地址、请求地址、控制器名称、控制器方法名称、HTTP请求类型、HTTP请求参数。 问题描述: 在获取请求参数时必然会读取request.getInputStream。由于流只允许读一次,后续读取必然会导致异常。 解决方案: 在SpringBoot框架中给我们提供了一个

InvalidKeyException: Illegal key size异常解决方案

测试环境的出款定时任务大量抛出InvalidKeyException: Illegal key size异常,根据以往经验初步判断是加密出现问题需要安装JCE相关的包。 产生错误原因 为了数据代码在传输过程中的安全,很多时候我们都会将要传输的数据进行加密,然后等对方拿到后再解密使用。我们在使用AES加解密的时候,在遇到128位密钥加解密的时候,没有进行什么特殊处理;然而,在使用256位密钥加解密的

Java的JIT即时编译及其优化

Oracle的Hotspot JVM实现,是目前OpenJDK使用的主流JVM,它采用解释与编译混合执行的模式,其JIT技术采用分层编译,极大地提升了Java的执行速度。 Java程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块运行的特别频繁时,会把这些代码认定为“热点代码”(Hot Spot Code)。为了提高热点代码的执行效率,在运行时,虚拟机会把这些代码编译成本地平台相关的
Java的JIT即时编译及其优化