规范JAVA开发,Checkstyle使用

一. 统一编辑器格式化格式 下载code style 文件: code_style.xml IDEA 配置 在IntelliJ IDEA -> Preference -> Editor -> JAVA-> Code Style -> Java-> Scheme中,import code_style.xml 文件. 配置每次提交,进行自动format IntelliJ IDEA -> Preference -> Version Control -> Commit 中, 配置 Reformat Code 和 Optimize Imports 二. 使用Checkstyle工具 下载Checkstyle文件,放入项目checkstyle文件夹中: checkstyle.xml checkstyle-suppressionis.xml 在maven中,引入checkstyle插件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <plugin> <groupId>org....

November 15, 2022 · 1 min · BlackChen

规范JAVA开发,Checkstyle使用

一. 统一编辑器格式化格式 下载code style 文件: code_style.xml IDEA 配置 在IntelliJ IDEA -> Preference -> Editor -> JAVA-> Code Style -> Java-> Scheme中,import code_style.xml 文件. 配置每次提交,进行自动format IntelliJ IDEA -> Preference -> Version Control -> Commit 中, 配置 Reformat Code 和 Optimize Imports 二. 使用Checkstyle工具 下载Checkstyle文件,放入项目checkstyle文件夹中: checkstyle.xml checkstyle-suppressionis.xml 在maven中,引入checkstyle插件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <plugin> <groupId>org....

November 15, 2022 · 1 min · BlackChen

Out Of Memory

一. JVM Out Of Memory 相关参数 1 2 3 4 5 -XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpPath -XX:OnOutOfMemoryError -XX:+ExitOnOutOfMemoryError -XX:+CrashOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError 和-XX:+HeapDumpPath -XX:+HeapDumpOnOutOfMemoryError代表在发生内存溢出时,生成堆转储文件. 一般配合 -XX:+HeapDumpPath使用, 指定输出的目录或文件. 例如: 在发生内存溢出时,会生成如下文件: 同时, 会产生如下日志: 1 2 3 4 5 6 7 ava.lang.OutOfMemoryError: Java heap space Dumping heap to /Users/chen/dump-file/java_pid86050.hprof ... Heap dump file created [179875659 bytes in 0.587 secs] [2022-07-12 23:23:12.463] [http-nio-64222-exec-1] [TxId : , SpanId : ] [ERROR] c.r.common.config.webmvc.RestExceptionHandler - GlobalExceptionHandler handleException error org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java....

July 11, 2022 · 5 min · BlackChen

如何排查生产问题的

生产问题排查基本命令 当线上服务出现问题的时候, 可以通过固定的步骤, 获取线上环境的信息, 一步一步逐步定位问题所在. X00. 判断问题影响范围 当突然接到线上报警, 应立即判断问题影响范围,如果直接导致服务不可用,则需立即响应(包括重启服务,或进行服务迁移扩容,正常情况下靠谱的运维不会让这个情况发生). 如果是高可用部署, 则联系运维同事, 切换流量到另外几台正常的机器(修改NGINX配置等),保留作案现场,进行分析定位问题. X01. 查看cpu top 查看cpu详细信息: 按1 查看负载 按cpu使用率排序: 按P 查看COMMAND详细信息: 按c top -H -p pid 查看某进程下的线程信息 X02. 查看内存 top 按内存排序: 按M free -h X03. 查看磁盘 df -h X04. 定位进程号 方法1 通过ps命令 例如: 服务名称为fcrm-c-rest 命令: ps -ef | grep 'fcrm-c-rest' 则可以查询到名称为fcrm-c-rest的进程号 方法2 通过top命令 敲击top命令后, 输入M 或 P 分别根据内存使用量排序, 和CPU使用量排序来进行定位线程号 方法3 通过jps命令 通过jps 命令获取当前执行的java进程 jps - Lists the instrumented Java Virtual Machines (JVMs) on the target system....

May 28, 2021 · 2 min · BlackChen

JMH 测试框架

开始使用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <jmh.version>1.23</jmh.version> <dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-core</artifactId> <version>${jmh.version}</version> </dependency> <dependency> <groupId>org.openjdk.jmh</groupId> <artifactId>jmh-generator-annprocess</artifactId> <version>${jmh.version}</version> <scope>provided</scope> </dependency> 可以使用maven archtype进行自动生成 样例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 @BenchmarkMode(Mode.Throughput) // 吞吐量 @OutputTimeUnit(TimeUnit.MILLISECONDS) // 结果所使用的时间单位 @State(Scope.Thread) // 每个测试线程分配一个实例 @Fork(2) // Fork进行的数目 @Warmup(iterations = 2) // 先预热4轮 @Measurement(iterations = 5) // 进行10轮测试 public class MyBenchmark { static AtomicInteger integer = new AtomicInteger(); @Benchmark public void testMethod() { integer....

April 3, 2020 · 5 min · BlackChen