Java
文章平均质量分 56
记录和分享Java JDK相关知识。
Alex·Guangzhou
……
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
代理模式之Cglib动态代理
Cglib动态代理原创 2022-09-25 17:28:00 · 305 阅读 · 0 评论 -
代理模式之JDK动态代理
JDK动态代理原创 2022-09-25 15:58:20 · 332 阅读 · 0 评论 -
代理模式之静态代理
静态代理原创 2022-09-25 15:24:07 · 145 阅读 · 0 评论 -
Linux系统jar包启动和停止脚本
文章目录1、startup.sh2、shutdown.sh3、自启动设置1、startup.sh2、shutdown.sh3、自启动设置原创 2021-10-12 14:59:09 · 1201 阅读 · 0 评论 -
悲观锁与乐观锁浅谈
悲观锁、乐观锁是实现并发控制的两种思想,而不是指具体的某一种锁。1、悲观锁①悲观锁总是认为数据会被其他线程修改,所以在修改前强制加锁,使其他线程阻塞等待,具有强烈的独占和排他特性。②传统的关系型数据库的行锁,表锁,读锁,写锁等,以及Java中synchronized关键字都是悲观锁的实现。③悲观锁比较适用于写多读少的情况(多写场景)。2、乐观锁①乐观锁认为在一般情况下数据不会被其他线程修改,所以在修改前不会加锁,而是在数据提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则返回给原创 2021-04-24 14:03:57 · 171 阅读 · 0 评论 -
Java8 函数式编程、并发测试工具类
1、函数式编程函数式编程是Java8的新特性,其实就是Lambda表达式的应用,详细介绍见:Java 函数式接口 https://blog.youkuaiyun.com/qq_44537267/article/details/1088126082、并发测试工具类应用CountDownLatch类的一个简单测试工具类,关于CountDownLatch的用法介绍详见:CountDownLatch用法简介 https://blog.youkuaiyun.com/weixin_44360895/article/detail原创 2021-04-20 10:05:27 · 250 阅读 · 2 评论 -
CountDownLatch用法简介
CountDownLatch是Java并发编程的常用类,是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,在闭锁上等待的线程就会被唤醒。1、原理介绍① 构造器中传入的count值是计数器的初始值,是闭锁需要等待的线程数量,这个值只能被设置一次,而且不能重新设置。② await()方法会是调用此方法的线程阻塞,直到计数器的值减到0才被唤醒。③ countDown()方法会使计数器值 -1,可在子线程执行完任务调用此方法,并且要尽量放在f原创 2021-04-19 11:48:03 · 490 阅读 · 0 评论 -
为何session中存入对象后,修改对象的属性值后并没有再次存入session,session中存放的对象也发生改变?
遇到这样的一个业务场景:前端请求检查会员信息接口,后端用session保存会员信息以便后续业务使用。但输出的信息需要脱敏,在把会员信息对象存入session后,修改对象的属性值为脱敏值输出,但是在后续业务需要用到会员信息时再从session中获取,发现session中的对象的属性也被修改成了脱敏值,这是为什么呢?大体代码如下:@Datapublic class User { private Integer id; private String name;}/** * 得到req原创 2021-03-31 13:43:25 · 1391 阅读 · 0 评论 -
Java8 base64编码/解码工具类
package com.bzyd.common.utils;import java.io.UnsupportedEncodingException;import java.util.Base64;/** * base64工具类 */public class Base64Util { /** * base64编码 * @param str * @return */ public static String base64Encode(S原创 2021-03-26 16:25:54 · 245 阅读 · 0 评论 -
Java开发《飞机大战》
《飞机大战》是一款由腾讯开发的经典射击类游戏。下面介绍用Java开发《飞机大战》的步骤。GitHub地址:https://github.com/xydang2019/ShootGame.git创建一个普通的Java项目,编写好类以及导入相关贴图:主要代码如下:1、奖励类package com.bzyd.shoot;/**表示奖励,提供奖励类型属性及获取奖励类型的方法,蜜蜂实现此方法*/public interface Award { int DOUBLE_FIRE = 0;//0表示双倍原创 2021-02-14 18:21:36 · 350 阅读 · 2 评论 -
Java开发《俄罗斯方块》
《俄罗斯方块》是一款由俄罗斯人阿列克谢·帕基特诺夫于1984年6月发明的经典休闲游戏,其基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。下面介绍用Java开发《俄罗斯方块》。GitHub地址:https://github.com/xydang2019/TetrisGame.git创建一个普通Java项目,按如下结构创建类以及导入图片资源:主要代码如下:/** * 格子 */public class Cell { /** * 行 */ p原创 2021-02-14 13:17:53 · 365 阅读 · 0 评论 -
ThreadLocal原理解析及常用场景
ThreadLocal是并发编程的常用类,它提供一种线程绑定机制,可以基于此对象将某个对象绑定当前线程中,也可以从当前线程获取某个对象,利用它可以实现在同一个线程内数据共享,从而有效解决线程安全问题。常用方法:initialValue() 创建要绑定的对象(其实就是set过程的封装)set() 绑定对象到当前线程get() 从当前线程获取对象remove() 从当前线程移出对象(可有效防止内存泄漏)1、ThreadLocal原理每个线程都有一个ThreadLocalMap对象:2)一原创 2021-02-12 18:04:36 · 488 阅读 · 1 评论 -
JVM内存模型解析
JVM 启动运行Class文件时,会对JVM内存进行切分,我们可以将其分为线程共享区和线程独享区。如下图所示:其运行时内存详细架构如下:在JDK8中持久代(Permanent Generation)部分数据移到了元数据区(Metaspace),在JDK8中已经没有持久代。元空间的本质和持久代类似,都是对JVM规范中方法区的实现,不过元空间与持久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制。1、堆内存heap虚拟机启动时创建,被所原创 2021-02-09 23:54:14 · 288 阅读 · 0 评论 -
Integer类型能否直接用“==”判断相等?
Integer类型是基本类型int的包装类,能否直接用“==”判断相等呢?废话不多说,上代码……@Testpublic void test11()throws Exception{ Integer a = 100; Integer b = 100; Integer c = Integer.valueOf(100); System.out.println(a == b);//print: true System.out.println(b == c);//prin原创 2021-01-18 22:11:43 · 2071 阅读 · 0 评论 -
Date、LocalDateTime及LocalDate的常见用法
1、Datejava.util.Date类是Java JDK 1.8版本以前的日期时间类,使用时要注意存在线程不安全的问题。1.1、创建Date date = new Date();1.2、与String相互转换Java的API中为提供了日期与字符串相互转运的抽象类DateForamt,常使用其子类SimpleDateFormat进行Date与String的相互转换。1.2.1、Date转String@Testpublic void test35(){ Date date = ne原创 2021-01-10 15:04:51 · 1774 阅读 · 1 评论 -
BigDecimal类的基本用法
1、为何要用BigDecimal类float和double在进行数学运算时偶尔会出现不精确的现象,如在使用微信支付时,要把金额单位从元转成分再传给微信,69.99元这个值会得到不精确的结果:@Testpublic void test27() throws Exception{ //元转分 Double amount = Double.parseDouble("69.99") * 100; System.out.println(amount);//print:6998.99999原创 2021-01-03 00:24:34 · 372 阅读 · 0 评论
分享