Java
文章平均质量分 51
gossipchat
这个作者很懒,什么都没留下…
展开
-
【Java】finally用法
文章目录一.概述二. finally会执行的情况1.有catch(无异常)3.有catch(try异常)4.有catch(catch异常)5.有catch(try/catch都异常)(会抛出异常)6. 没有catch(无异常)7. 没有catch(try异常)(会抛出异常)8. 有返回值(try)(程序返回"try return")9. 有返回值(catch)(程序返回"catch return")三. finally不会执行的情况1. 调用 System.exit 函数2. 调用 halt 函数四. 常见原创 2021-11-05 12:07:52 · 1230 阅读 · 1 评论 -
【Java】命令
文章目录jar一. 参数类型说明1. 标准参数(-)2. 非标准参数(-X)3. 非Stable参数(-XX)4. 程序参数(--)5. 环境变量(-D)二. 使用示例1. 启动程序2. 设置启动端口jar一. 参数类型说明1. 标准参数(-)所有类型JVM都必须实现这些参数的功能2. 非标准参数(-X)默认jvm实现这些参数的功能,不保证所有类型JVM都实现-Xms512m -Xmx512m3. 非Stable参数(-XX)各个jvm实现会有所不同,将来可能会随时取消,需要慎原创 2021-10-11 19:46:51 · 86 阅读 · 0 评论 -
【Java】输出cglib以及jdk动态代理产生的class文件
该设置用于输出jdk动态代理产生的类System.getProperties().put(“sun.misc.ProxyGenerator.saveGeneratedFiles”, “true”);该设置用于输出cglib动态代理产生的类System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, “C:\class”);...原创 2020-07-30 19:24:20 · 345 阅读 · 0 评论 -
【Java】多次启动相同jar程序
背景现在很多软件都支持集群部署,但是测试环境通常资源有限,所以一般通过单台机器模拟集群部署(使用不同端口,运行相同jar包),本文的目的就是通过多种方式实现此需求。两个程序1、jar程序① springboot程序② 只包含一个main方法,用于启动程序,输出进程ID③ 路径:C:/demo.jar(windows) /demo.jar(Linux)2、启动程序① 包含main方法的程序多种方式1、通过URLClassLoader加载jar程序(windows平台)2、通过java -原创 2020-07-28 19:30:21 · 2270 阅读 · 0 评论 -
【Java】logback日志显示完整包名
一、背景 logback输出日志时,包名过长时会显示简称,比如o.a.d.config.bootstrap.DubboBootstrap完整包名是:org.apache.duboo.config.bootstrap.DubboBootstrap 本文说明其原因并给出解决方法二、原因 logback.xml配置文件引入了基础配置文件<include resource="org/springframework/boot/logging/logback/base...原创 2020-12-12 15:47:49 · 2611 阅读 · 0 评论 -
【Java】Synchronized锁范围
分类 被锁对象 代码 说明 方法 实例方法 public synchronized void method(){} 1. 锁住的是该类的实例对象 2. 相同实例对象在不同线程中调用方法 会同步 3. 不同实例对象在不同线程中调用 不会同步 方法 静态方法 public static synchronized void method(){} 1. 锁住的是该类的类对象 2. 相同/不同实例对象在不同线程中调用方法 都会同步 .原创 2021-01-20 16:00:05 · 251 阅读 · 0 评论 -
【Java】select for upate 引起的问题
一. 代码说明二. 问题三. 原因分析四. 解决方案一. 代码说明M2方法的预期作用是根据id值(主键)加行锁,整个方法放在事务中执行 M1方法调用M2方法public class C{ public void M1() { this.M2(); } @Transactional public void M2() { String sql="select * from t1 wh...原创 2021-05-26 12:08:26 · 395 阅读 · 1 评论 -
【Java】Java8日期时间
文章目录一、日期(LocalDate)二、时间(LocalTime)三、日期时间(LocalDateTime)一、日期(LocalDate)对应MySQL数据库的date字段类型对应Java的java.time.LocalDate比较:isBefore、isEqual、isAfter(内部使用toEpochDay比较)增减年月周天:plus*、minus*时间戳(天):toEpochDay二、时间(LocalTime)对应MySQL数据库的time字段类型对应Java的java.ti原创 2020-08-10 12:56:49 · 170 阅读 · 0 评论 -
【Java】解决double和float精度不准的问题
文章目录一、背景二、解决思路三、总结一、背景我们知道浮点数是无法在计算机中准确表示的,例如0.1在计算机中只是表示成了一个近似值,因此,浮点数的运算结果具有不可预知性。在进行数字运算时,如果有double或float类型的浮点数参与计算,偶尔会出现计算不准确的情况。如以下示例代码:package ex; public class BigDeciTest { public static void main(String[] args){ System.out.原创 2020-10-21 08:54:32 · 546 阅读 · 0 评论 -
【Java】Cron表达式
文章目录一. 域说明二. 特殊字符说明三. 常用例子四. 注意事项1. 有些表达式能包含范围或列表2. “/”字符用来指定数值的增量3. “?”字符仅被用于每月第几天和星期几两个表达式,表示不指定值4. “L” 字符仅被用于 每月第几天 和 星期几 两个表达式,它是单词“last”的缩写5. 报错:Cron expression must consist of 6 fields五. Java解析Cron表达式一. 域说明cron表达式由6或7个域组成顺序(从左到右)域允许值允许的特殊原创 2021-09-07 14:26:53 · 381 阅读 · 0 评论 -
【Java】调用代理对象的原始方法
文章目录一. 说明二. 原始类三. 系统启动时生成代理对象四. 代理工具类五. 测试一. 说明Java Spring中使用AOP可以很方便的生成代理对象,从而添加自定义逻辑。本文介绍如何调用代理对象的原始方法,而非代理后的方法二. 原始类@Componentpublic class AopTestClass { public void method1() { System.out.println("method1 execute"); }}三原创 2021-03-23 11:48:26 · 741 阅读 · 0 评论 -
【Java】CGLIB动态代理
文章目录一. CGLIB动态代理示例1. 被代理对象2. 代理工具类3. 使用代理类5. 执行结果二. CGLIB动态代理说明1. 获取代理对象:CGProxy.getProxyObject2. 调用代理方法:CGProxy.intercept3. 原理4. 参考资料一. CGLIB动态代理示例1. 被代理对象public class UserServiceImpl { public void addUser(String name) { System.out.println原创 2021-03-17 12:14:55 · 97 阅读 · 0 评论 -
【Java】JDK动态代理
文章目录一. JDK动态代理示例1. 接口2. 被代理对象3. 代理工具类4. 使用代理类5. 执行结果二. JDK动态代理说明1. 获取代理对象:ProxyUtil.getProxy2. 调用代理方法:ProxyUtil.invoke一. JDK动态代理示例1. 接口public interface UserService { void addUser(String name); String getUser(String name);}2. 被代理对象public cla原创 2021-03-16 19:54:29 · 86 阅读 · 0 评论 -
【Java】使用动态代理输出RedisTemplate命令执行日志
文章目录一. 说明二. 源码一. 说明功能:在 redisTemplate 命令执行前后 输出日志原理作用是输出 RedisTemplate 命令执行日志。包括:命令名称、参数、返回值等原理是使用动态代理拦截类 redisConnectionFactory 的 getConnection() 方法,监控Redis命令目前主要输出 get/set/pExpire/pSetEx 等命令日志,可根据需要扩展示例单元测试@Testpublic void RedisTe原创 2021-03-11 12:10:24 · 891 阅读 · 3 评论 -
【Java】Mybatis-Plus解决多数据源无法输出SQL语句的问题
文章目录一. Mybatis-Plus配置输出SQL语句1. 原理2. 步骤二. 多数据源无法输出SQL语句解决方法三. 输出SQL部分源码一. Mybatis-Plus配置输出SQL语句1. 原理使用PerformanceInterceptor拦截器的intercept()方法输出SQL语句2. 步骤2.1 配置文件新增mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl原创 2021-03-02 12:17:24 · 963 阅读 · 0 评论 -
【Java】日志输出自定义变量值
背景Java打印日志时,输出自定义变量值(以logback为例)步骤1. 删除引入的基础配置类(如无则忽略)<include resource="org/springframework/boot/logging/logback/base.xml"/>2. 添加配置信息traceId为自定义变量名,%X{traceId}必须都包含<appender name="Console" class="ch.qos.logback.core.ConsoleAppe.原创 2021-02-07 10:51:40 · 1115 阅读 · 1 评论