- 博客(38)
- 资源 (1)
- 收藏
- 关注
原创 synchronized与 Java内置锁(未写完)
如果不存在线程竞争的一个线程获得了锁,那么锁就进入偏向状态,此时Mark Word的结构变为偏向锁结构,锁对象的锁标志位(lock)被改为01,偏向标志位(biased_lock)被改为1,然后线程的ID记录在锁对象的Mark Word中(使用CAS操作完成)。自旋原理非常简单,如果持有锁的线程能在很短时间内释放锁资源,那么那些等待竞争锁的线程就不需要做内核态和用户态之间的切换进入阻塞挂起状态,它们只需要不断地检查某个条件是否满足,等持有锁的线程释放锁后即可立即获取锁,这样就避免用户线程和内核切换的消耗。
2025-03-15 22:06:23
651
原创 SpringBoot 实现 redis 事务
在这个例子中,redisTemplate.setEnableTransactionSupport(true)用于启用事务支持,redisTemplate.multi()用于开启事务,redisTemplate.exec()用于提交事务,如果中间出现异常,则调用redisTemplate.discard()取消事务。选择哪种方式取决于具体的业务需求和使用场景。通常,使用Spring Data Redis的SessionCallback是较为直接和简便的方法,但对于更复杂的需求,可以考虑使用Lua脚本。
2025-01-07 20:07:23
322
原创 MySQL中数据库、表的操作
关于属性1.创建数据库时指明字符集2.创建表的时候,指明表的字符集id int3.创建表,指明表中的字段时,可以指定字段的字符集id int,数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。实体完整性(Entity Integrity)
2024-04-03 17:35:19
1460
原创 Java使用MinIO进行文件的上传、下载和删除
MinIO Java Client SDK提供简单的API来访问任何与Amazon S3兼容的对象存储服务。官方文档:https://min.io/docs/minio/linux/developers/java/API.html。
2024-02-27 22:06:17
753
原创 数据脱敏方案
先来看看什么是数据脱敏?数据脱敏也叫数据的去隐私化,在我们给定脱敏规则和策略的情况下,对敏感数据比如 手机号、银行卡号 等信息,进行转换或者修改的一种技术手段,防止敏感数据直接在不可靠的环境下使用。像政府、医疗行业、金融机构、移动运营商是比较早开始应用数据脱敏的,因为他们所掌握的都是用户最核心的私密数据,如果泄露后果是不可估量的。数据脱敏的应用在生活中是比较常见的,比如我们在淘宝买东西订单详情中,商家账户信息会被用 * 遮挡,保障了商户隐私不泄露,这就是一种数据脱敏方式。
2024-02-17 22:43:06
1216
原创 使用git遇到的问题
DS_Store是Mac OS保存文件夹的自定义属性的隐藏文件,如文件的图标位置或背景色,相当于Windows的desktop.ini。当git仓库中进行了多项文件修改时,传统的方法为了剔除大量的.DS_Store文件只能手动一项一项添加待加入的文件,很麻烦。即可让git在执行add操作时屏蔽所有符合条件的文件,使其不出现在未追踪文件列表中。打开 “终端” ,复制黏贴下面的命令,回车执行,重启Mac即可生效。在根目录下创建文件.gitignore,写入内容。
2024-02-06 22:01:32
635
原创 Git详细讲解
是 Git 中一个非常实用的命令,它允许你在不提交代码的情况下临时存储当前工作目录和暂存区(Index)中的所有更改。是 Git 中一个非常有用的命令,它用于将一个分支的提交移动到另一个分支的基础上重新应用。请注意,在修改分支名后,如果其他开发人员已经在远程仓库中拉取旧分支名的分支,他们需要更新本地仓库的分支名称。远程仓库中没有与本地仓库新建的分支同名的分支,那么git会新建一个同名的远程分支。命令用于从远程仓库拉取最新的提交和分支信息,并将远程分支的更新合并到当前所在的本地分支。
2024-02-06 20:21:47
2452
原创 Mac (M1)系统下载、安装MySQL
①在Windows下的Mysql中,安装目录修改my.ini文件就会对默认字符集进行配置。上述命令用于重新加载当前用户的 Zsh shell 配置文件。执行这个命令后,新的配置将立即生效,而无需重新启动终端。②而在Mac下,默认没有配置文件,需要自己手动创建。当安装MySQL后没有在控制面板指定配置文件,使用。系统提示输入电脑密码,之后进入输入模式,按。和Bash shell 配置文件。到此MySQL安装完成。
2024-01-23 13:28:27
3413
1
原创 MyBatis核心组件以及其作用域、生命周期
这里 SQL 返回的列名 id 和 note 是可以和之前定义的 POJO 的属性对应起来的,而表里的列 role_name 通过 SQL 别名的改写,使其成为 roleName,也是和 POJO 对应起来的,所以此时 MyBatis 就可以把 SQL 查询的结果通过自动映射的功能映射成为一个 POJO。映射器是一些绑定映射语句的接口。映射器接口的实例是从 SqlSession 中获得的,将 SQL 查询到的结果映射为一个 POJO,或者将 POJO 的数据插入到数据库中,并定义一些关于缓存等的重要内容。
2024-01-14 19:12:05
1074
原创 MySQL教程
数据表列属性有:关于属性1.创建数据库时指明字符集2.创建表的时候,指明表的字符集3.创建表,指明表中的字段时,可以指定字段的字符集。
2023-07-13 10:07:53
377
原创 Mac 安装NVM
配置环境变量:分别在 ~/.bash_profile 、~/.zshrc 、~/.profile中添加如下内容。分别在 ~/.bash_profile 、~/.zshrc 、~/.profile中添加如下内容。然后按 esc 键,退出插入模型,然后输入 :wq!按下回车 (即可完成文件的编辑和保存退出)查看版本号以检查是否安装成功并能够使用nvm相关命令。step 5: 输入下面代码,验证nvm是否可用。查询到 nvm的版本号,说明解决。在文件末尾添加如下内容。
2023-07-06 01:11:21
233
原创 LomBok使用讲解
当我调试程序项目代码到调用Mybatis的插入SQL对应的方法的时候时,我看到NMetaVerify对象的nMetaType属性还是有数据的,但是执行插入之后,数据库的nMetaType就是一直是null,原先我以为是我的枚举类型写法不正确,看了下别的同样具有枚举类型的细分,也是正常能插入到数据库当中的,这更让我感觉到疑惑了。可以以链的形式调用;顶级类Object⾥⾯的⽅法,所有类都是继承Object的,返回值int类型根据⼀定的hash规则(存储地址,字段,或者⻓度等),映射成⼀个数值,即散列值。
2023-06-13 12:03:31
4235
原创 SpringBoot单元测试报错解决思路汇总
单元测试类上添加@SpringBootTest(classes = 启动类.class)使用时,单元测试类要和启动类在同一个包下面使用@SpringBootTest(classes = 启动类.class)就不需要考虑是不是在同一个包下面当测试类和启动类不再同一个包下面时,依赖注入可以可能会报错,只需要或者再添加注解@Lazy@Test导入出现问题:当SpringBoot版本在2.2.x之前,导入;当SpringBoot版本在2.2.x之后,导入;
2023-05-31 10:16:43
2245
原创 EasyCode自动生成Mybatis-plus代码,出现报错
com.baomidou.mybatisplus.extension.api包在3.5之后被弃用,导致导入失败。相较于原来的模版,只是将将控制器方法的返回值变为。中的模版用下面的模版进行替换。
2023-05-21 17:15:15
928
2
原创 Lombok使用教程
注意常⻅的细节点:⽐如只使⽤了@Data,⽽不使⽤@EqualsAndHashCode(callSuper=true)的话,会默认是@EqualsAndHashCode(callSuper=false),这时候⽣成的equals()⽅法只会⽐较⼦类的属性,不会考虑从⽗类继承的属性,⽆论⽗类属性访问权限是否开放,只要知道是否需要使⽤⽗类的属性即可,也提供定制化配置,所以不⽤过多担⼼。然⽽哈希值相等,并不⼀定能得出键值对相等,就出现所谓的哈希冲突场景,还需判断equals⽅法判断对象是否相等。
2023-05-18 14:41:38
567
原创 SpringBoot API接口文档Swagger
步骤1:引入依赖-- 引入 Swagger 依赖 --> < dependency > < groupId > io.springfox < artifactId > springfox-swagger2 < version > 2.9.2
2023-04-26 10:25:39
974
原创 SpringCloud Netflix负载均衡 Ribbon讲解
Ribbon 是一个进程间通信的客户端库,并且已经在云环境下经过大量的生产测试。负载均衡容错机制支持 HTTP、TCP、UDP 等多种协议,并支持异步和响应式的调用方式缓存与批处理例如说,不再使用默认的负载均衡规则 ZoneAvoidanceRule,而是使用随机负载均衡规则 RandomRule。在自定义 Ribbon 配置的时候,会有全局和客户端两种级别。相比来说,客户端级别是更细粒度的配置。
2023-04-22 13:40:41
453
原创 SpringCloud 声明式调用Feign
Feign是由 Netflix 开源的声明式的 HTTP 客户端,目前已经捐献给OpenFeign社区。通过使用定义简单的接口,并声明 Feign 提供的注解,来实现 HTTP 的调用组件,将 Feign 集成到 Spring Cloud 体系中,实现服务的声明式 HTTP 调用。相比使用 RestTemplate 实现服务的调用,Feign 简化了代码的编写,提高了代码的可读性,大大提升了开发的效率。
2023-04-22 13:17:44
192
原创 Spring Bean配置文件格式讲解
context:property-placeholder/>标签会优先加载系统的环境变量,然后再加载properties配置文件中的键值对;当配置文件中的某键值对的键和系统的环境变量重名时,会将系统中的环境变量传给XML配置文件;Properties 配置文件主要以 key=value 键值对的形式存在,只能赋值,不能进行其他操作,适用于简单的属性配置。由 Spring IoC 容器管理的对象称为 Bean,Bean 根据 Spring 配置文件中的信息创建。加载properties配置文件。
2023-04-18 09:23:41
685
原创 Spring IoC容器
由于对象的基本信息、对象之间的依赖关系都是在配置文件中定义的,并没有在代码中紧密耦合,因此即使对象发生改变,我们也只需要在配置文件中进行修改即可,而无须对 Java 代码进行修改,这就是 Spring IoC 实现解耦的原理。当我们想要使用某个 Bean 时,可以直接从 IoC 容器中获取(例如通过 ApplicationContext 的 getBean() 方法),而不需要手动通过代码(例如 new Obejct() 的方式)创建。这些被 IoC 容器创建并管理的对象被称为 Spring Bean。
2023-04-18 08:54:17
113
原创 Java 注解 讲解
注解可以被标注在任意地方,包括方法上、类名上、参数上、成员属性上、注解定义上等,就像注释一样,它相当于我们对某样东西的一个标记。而与注释不同的是,注解可以通过反射在运行时获取,注解也可以选择是否保留到运行时。
2023-04-14 17:53:57
93
原创 POI库中cell.setcelltype过时的解决方案
项目中使用POI 5.0以后的依赖在函数中使用Cell.setCellType()时,会显示此函数过时,
2023-04-14 12:21:53
3360
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人