随笔分类 - Java
Spring Boot 启动后 Swagger 文档页面 404
摘要:问题现象 用 EasyCode 生成完代码后,Swagger 文档页面可以访问,添加了一些依赖及代码后 Swagger 文档页面 404。 问题分析 跟既存项目对比了一下,pom.xml 没什么区别,Application 类上的注解也是对的。 // 注意扫描的包名 @SpringBootAppli
java.lang.NoClassDefFoundError: org/apache/logging/log4j/spi/LoggerContextShutdownAware
摘要:问题现象 为了修复 Apache Log4j2 远程代码执行漏洞,将 log4j-core 从 2.12.0 升级到 2.17.0,启动应用后报错: "D:\Program Files\jdk-8\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Ds
Maven Dependencies 中有 jar 包,IDEA 的 External Libraries 中却没有 jar 包
摘要:问题现象 无论是使用「Spring Initializr」创建项目,还是使用「Maven」创建项目,在 pom.xml 里添加依赖之后,依赖可以正常下载,也没有报错: 但是使用 Spring Boot 注解时,注解一直报错,按照提示添加 Maven 依赖依然无效,查看「External Librar
ObjectNode 的科学计数法问题
摘要:背景 项目中需要手动生成 JSON 并返回,查阅资料发现,可以直接使用 Spring Boot 绑定的 Jackson 中的 ObjectNode 实现。 代码 类似的 Controller 代码如下: @RestController @Slf4j public class JacksonContr
K8s 部署 Kafka + Java Web 应用
摘要:部署 Kafka 参考在 K8s 下部署 Kafka 集群 如果机器内存不大,可适当将 Zookeeper 内存调小。 部署 Java Web 应用 该应用实现的功能,访问 http://localhost:30080/send/{要发送的消息} ,会向 K8s 里的 Kafka 发送一条消息,然后
Docker 下搭建 Nginx + Nacos + MySQL
摘要:Nginx 反向代理 Nacos(官方文档说至少配置 3 个节点才能组成集群),Nacos 的数据持久化到 MySQL 中(默认存储在内嵌的 Apache Derby 数据库中)。 MySQL Docker 安装 MySQL docker pull mysql 创建映射文件夹 将容器内的文件夹映射到
Zipkin Server 启动失败
摘要:Zipkin Zipkin 官网已经不提供下载了,需要去 GitHub 下载。 有两种方式: curl 下载 jar 包,并使用 java -jar 命令运行 jar 包。 Docker 安装 Zipkin 镜像,并使用 dokcer run 命令运行。 启动失败 2021-09-28 21:38:
反射
摘要:反射就是在运行时才知道要操作的类是什么,并且可以在运行时获取类的完整构造,并调用对应的方法。 一直说反射反射,但是为什么要反射却不甚理解。“明明直接 new 一个对象就可以,为什么还需要使用反射呢?” 反射库 反射就是围绕着 Class 对象和 java.lang.reflect 类库的,就是各种的
O3W 框架介绍
摘要:1、简介 ObjectWorks(内部称为 O3W,即 Object 3Tier Infoworks)提供由执行和开发平台组成的中间件组件,以满足这些需求,并提供支持这些部署的专业服务。 开发平台 采用并行分离开发、促进部件重用的体系结构、基于定义的开发等。 通过最小化编码和提高可维护性,实现高开发
Linux 系统安装 JDK
摘要:一、通过 tar.gz 安装(Linux 软件通用安装方法) 下载 tar.gz 的压缩包,这里使用官网下载(推荐长期支持的 JDK 8 和 JDK 11)。 1、选择相应的JDK版本,点击 JDK Download 2、下载对应位数的 tar.gz 包 3、下载完成后解压到指定文件下 ①先创建 j
数组拷贝的几种方法及效率比较
摘要:一、for 循环 int[] array = {1, 2, 3, 4, 5, 6}; int[] array2 = new int[array.length]; for (int i = 0; i < array.length; i++) { array2[i] = array[i]; } 二、静态
JVM 字节码指令大全
摘要:下文中的栈指操作数栈。 对于非静态方法,局部变量表的 0 号槽为 this 变量。 局部变量表中的变量槽可以复用。 Constants 常量相关 十进制 操作码 助记符 含义 备注 0 0x00 nop 什么都不做 1 0x01 aconst_null 把 null 压入栈顶 a 代表引用 2 0x
Bytecode Viewer 字节码查看器
摘要:简介 Bytecode Viewer 是一款基于图形界面的 Java 反编译器,Java 字节码编辑器,APK 编辑器,APK 反编译器,Dex 编辑器,DEX 反编译器,其集成了 6 个 Java 反编译库(包含 Procyon、CFR 和 Fernflower),Andorid 反编译类库和字节
线程死锁
摘要:以下可能造成死锁的代码是? A. public class LeftRightLock { private final Object left = new Object(); private final Object right = new Object(); public void functio
字节码层面分析 try-catch-finally 中的 return 问题
摘要:结论 finally 中的代码总会被执行(Java语言规范规定的)。 如果 try、catch 中有 return,那么: finally 中无 return,当返回值的类型是引用类型(可变类)时,返回值会受到 finally 中代码的影响。 finally 中有 return,会直接在 final
LinkedHashMap 在指定元素/索引后面插入元素
摘要:思路是将指定元素/索引后面的元素先用 List 保存,然后将待插入的元素插入到 LinkedHashMap 中,然后先删除指定元素/索引,再进行添加。 指定元素后面插入元素 /** * 在 LinkedHashMap 目标元素后面添加元素 * * @param map LinkedHashMap 对
查看 OpenJDK 源码
摘要:打开OpenJDK官网,左侧Source code就是源代码,可以选择Mercurial或者GitHub(FQ后访问较快),我们这里点击Mercurial 选择对应的JDK版本,如果没有需要的版本,点击jdk,然后再选择: 继续点击jdk: 点击左侧的browse浏览仓库: 点击source查看源代
控制台中文乱码
摘要:1、虚拟机配置修改 分别修改 32 位和 64 位虚拟机的文件编码为 UTF-8: -Dfile.encoding=UTF-8 2、IDEA 配置修改 Ctrl+Alt+S 打开配置,将如下三个选项全部改为UTF-8: 3、设置运行时的虚拟机参数 打开运行配置 在 VM Options 中填入: -
程序包 org.slf4j 不存在
摘要:IDEA 运行 Java 报错:程序包 org.slf4j 不存在 只需进行以下两步操作: 将 IDE 构建/运行项目操作委托给 Maven : 如果项目是多模块的,还需要勾选创建模块组:
创建 Java 文件报错
摘要:New 一个 File 类型的 Java 文件 ClassUtil.java,如下图所示,可以看出图标是文本类型: 然后将这个文件删除,New 一个 Java Class 文件: 输入文件名 ClassUtil: 报错如下: Unable to parse template "Class" Erro