【理解Spring】BeanDefinition
A BeanDefinition describes a bean instance, which has property values, constructor argument values, and further information supplied by concrete implementations.
BeanDefinition,表示 Bean 定义。
BeanDefinition 用于保存 Bean 的相关信息,包括
Class,表示 Bean 类型
Scope,表示 Bean 作用域,单例(Singleton)或原型(Prototype)等
LazyInit:表示 Bean 是否是懒加载
InitMethodName:表示 Bean 初始...
理解 InnoDB MVCC 机制
MVCC,全称 Multi-Version Concurrency Control,即多版本并发控制。
多版本并发控制(Multi-version Concurrency Control): 指的是一种提高并发的技术。最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞。引入多版本之后,只有写写之间相互阻塞,其他三种操作都可以并行,这样大幅度提高了InnoDB的并发度。
MVCC在 Read Committed 和 Repeatable Read两个隔离级别下工作。
要理解数据库的 MVCC 需要先了解数据库的事务隔离级别。
其中 Read Uncommitted 几乎没有隔离性,所以无需做任何处理;
Serializable 要保证每个事务强隔离,所以对每个事务强行串...
理解事务隔离级别
事务的隔离性实际上比想象的要复杂,在 SQL 标准中定义了四种隔离级别
Read Uncommitted/未提交读
在此级别中,即使事务中的修改未提交,也会被其他事务“看见”,这被称为“脏读”,这会导致很多问题。
Read Commited/读已提交
在此级别中,解决了脏读的问题,满足了隔离性的简单定义:事务内的修改只有在提交才能被其他事务后“看见”,换句话说,一个事务从开始到提交,其中所作的所有修改对其他事务都是不可见的。
但是这个隔离级别也有缺陷:事务A读取一条数据,事务B修改了这条数据并提交,当事务A再次读取该数据,得到的结果和上一次不同,所以这个隔离级别也叫:不可重复读(nonrepeatable read)
Repeatable Read/可重复读
在此...
CapsLockPlus | 魔改 CapsLock 键
CapsLock,也就是键盘最左边一列中间那个大写锁定键,跟 shift 功能重复,需要输入大写字母的时候,一般都直接通过 Shift 输入了。
在换了 Anne-pro2 键盘之后, 发现 CapsLock 键和其他按键组合使用十分方便, 然而这是键盘的驱动软件的效果, 于是希望找到一个通用的解决方案。
试用过 CapsLock+ , 但是终究不如自定义来的顺心
于是参考 这篇文章 ,编写 AutoHotKey 脚本, 魔改了 CapsLock, 自定义了 CapsLock 组合其他键的功能
AutoHotKey 脚本可以编译成.exe的可执行文件, 不需要安装, 双击即可运行, 删除就是卸载
.exe文件大小一共也就 1M 左右, 在github、网盘或邮箱备份一份, 在其他...
fastjson 序列化对象临时忽略指定字段
如果希望 Java 对象中某字段不被 JSON
序列化,可以在字段上添加@JsonIgnore注解,在添加注解之后,每次序列化和反序列化都会忽略这个字段。
但在开发时,可能需要序列化单次临时忽略某字段,可以使用fastjson
的SimplePropertyPreFilter。
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
@lombok.Data
@lombok.AllArgsConstructor
public class Test {
private String id;
private ...
Git避免重复输入用户名密码
ssh协议
如果使用 SSH 方式连接远端(当执行类似git clone git clone [email protected]:xxx/xxx.git 后,在此仓库中的上传下载均采用 ssh 协议),并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据。
https协议
从2021.08.13开始, GitHub不再支持账号和密码的方式来 pull 和 push 代码了,取而代之的是官方推出的 Token。
Token的官方使用教程
与密码不同的是,Token一旦生成,需要立即记住,当关闭页面就无法再查看。
所以更需要让 Git 帮忙缓存(本地保存) Token。
Git 缓存 Token 和缓存密码的原理相同。
当执行类似命令git clone ...
Git放弃(清除)本地所有修改,回到上次 commit 的初始状态
若想要放弃(清除)本地所有修改,回到上次 commit 的初始状态,可以执行
git reset --hard
git clean -xdf
git checkout .
此命令用来放弃所有还没有加入到缓存区(就是git add命令)的修改:内容修改与整个文件删除。
但是此命令不会删除掉刚新建的文件。
因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的,可以执行git clean命令删除。
git clean -xdf
删除新增但没有被git add的文件
git reset –hard
官网解释:Resets the index and working tree. Any changes to tracked files in the working...
Spring MVC-GET请求参数下划线转驼峰映射实体类
环境: Spring MVC/Spring-Boot
项目开发统一规定, 前后端交互所有参数名的单词间需要使用下划线连接, 例如: user_id
在 POST 请求交互时, 可以在实体类的字段上添加 JSON 注解, 使请求体中的 JSON 字符串直接映射为实体类, 转换步骤自动完成
如: @JsonProperty("user_id") private String userId;
但是在 GET 请求时, 对于下划线连接的参数无法直接映射封装为实体类(java 编程规范参数使用驼峰命名法), 需要编码接收参数并转换封装为实体对象, 过于繁琐, 如:
@Controller
@RequestMapping("/user")
public class UserControll...
共计 50 篇文章,7 页。