自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 打卡功能的设计

打卡功能对于一个系统来说还算是挺重要的,我们可以通过用户打卡来给用户一些激励,也可以提高我们系统的用户活跃度。因此这篇文章就介绍一下我对打卡功能的一个设计流程。

2024-08-16 16:16:51 957

原创 Docker详解

各位肯定都用过Docker,平常用它来装一些中间件那不要太方便,这篇文章主要就是将Docker的知识做一个归纳总结。学习之前,默认各位已经安装了docker还有docker-compose了。

2024-08-02 13:40:01 1103 1

原创 Redis数据结构和数据类型

Redis能高效的处理,除了在内存中进行操作,还有一个原因就是它的数据结构和类型。

2024-07-23 22:59:59 640

原创 MySQL锁机制

MySQL的锁分为三类:全局锁、表锁、行锁。

2024-06-28 10:10:22 634

原创 MySQL事务

接着,事务 A 对 id = 5 这条记录进行了更新操作,在这个时刻,这条新记录的 trx_id 隐藏列的值就变成了事务 A 的事务 id,之后事务 A 再使用普通 select 语句去查询这条记录时就可以看到这条记录了,于是就发生了幻读。此时,事务 A 更新 id = 5 这条记录,对没错,事务 A 看不到 id = 5 这条记录,但是他去更新了这条记录,这场景确实很违和,然后再次查询 id = 5 的记录,事务 A 就能看到事务 B 插入的纪录了,幻读就是发生在这种违和的场景。

2024-06-27 14:16:38 728

原创 MVCC机制

在上一篇介绍了实现MVCC的两个主要的模块:undo log、ReadView,undo log在上一篇介绍过,这一篇会介绍ReadView。这种通过「版本链」来控制并发事务访问同一个记录时的行为就叫 MVCC(多版本并发控制)。这两个隐藏列对于undo log十分重要,回滚就靠这个。

2024-06-27 09:34:32 192

原创 MySQL日志

MySQL的日志主要有三种类型,undo log(回滚日志),redo log(重做日志),binlog(归档日志)。

2024-06-24 13:34:10 779

原创 一条SQL更新语句是如何执行的?

假设有这么一条sql: UPDATE t_user SET name = 'lw' WHERE id = 1;这里不介绍MySQL的日志,因为很重要,所以会单独开一篇。更新语句和查询语句的执行最大的区别就是多了一个。查询语句的流程建议看这篇文章。

2024-06-22 16:11:48 426

原创 一条SQL查询语句是如何执行的?

平常我们在使用数据库的时候,看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行 过程。这篇文章就是讲MySQL拆解一下,了解内部运行机制,加深对MySQL的理解。下面是MySQL的基本架构图:从图上可以看到,MySQL总体上分为两大部分:Server层、存储引擎层。,其架构是插件式的,MySQL支持 InnoDB、MyISAM、 Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开 始成为了默认存储引擎。

2024-06-22 14:32:34 750

原创 类加载机制

每一个程序模块(OSGi中称为 Bundle)都有一个自己的类加载器,当需要更换一个Bundle时,就把Bundle连同类加载器一起换掉以实 现代码的热替换。在OSGi环境下,类加载器不再双亲委派模型推荐的树状结构,而是进一步发展为更 加复杂的网状结构,当收到类加载请求时,OSGi将按照下面的顺序进行类搜索:1)将以java.*开头的类,委派给父类加载器加载。2)否则,将委派列表名单内的类,委派给父类加载器加载。

2024-05-18 16:56:48 724

原创 垃圾收集器与内存分配策略

上面介绍了对象的回收和分配,垃圾回收器的分类和功能。下面会继续介绍虚拟机的相关知识,比如class文件,虚拟机工具。

2024-05-14 12:48:29 594 1

原创 JVM内存区域

想要深入的了解JVM,我们肯定需要知道它的内存结构是什么样子,如果不了解它的结构,排查问题的时候就是只无头苍蝇。

2024-04-26 20:59:16 695 4

原创 java字节码文件

类通过编译器编译后变成字节码文件,字节码文件是一种jvm可以运行的文件。

2024-01-07 16:12:15 400 1

原创 java线程池

池化技术的思想主要是为了减少资源的消耗,提高资源的利用率。线程池一般用于执行多个不相关的耗时任务,不使用线程池时任务是顺序执行,使用线程池后可以通过处理多个任务。

2023-12-14 21:47:39 1025 1

原创 Java AOP

代理是目前最流行的实现方式,我们主要介绍代理的实现方式。

2023-11-07 23:27:53 81

原创 Sharding-JDBC(一)

Sharding-jdbc是ShardingSphere的其中一个模块,定位为==轻量级Java框架==,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。适用于任何基于Java的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。

2023-03-01 22:22:33 454

原创 使用@Builder遇到的坑

如果一个JavaBean只有AllArgsConstructor构造器,那么Mybatis在进行结果集映射时会使用另一种映射方式,Bean的属性类型,会根据映射顺序进行判断,而不是根据属性名进行判断,因此导致了映射异常。如上面这个异常一样,本来字段类型是匹配的,但因为会根据映射顺序进行判断,所以将BigDecimal类型的数据赋值给String类型了,将会抛出异常。如果JavaBean类使用@Builder注解,则默认只生成AllArgsConstructor构造器。不使用@Builder注解。

2023-02-27 11:56:12 295

原创 Spel表达式介绍

Spel表达式是什么?Spring表达式语言(简称SpEl,)是一个支持查询和操作运行时对象导航图功能的强大的表达式语言. 它的语法类似于传统EL,但提供额外的功能,最出色的就是函数调用和简单字符串的模板函数。简单来说就是可以帮助我们简化开发,减少一些逻辑、配置的编写。表达式语言给静态Java语言增加了动态功能。SpEL是单独模块,只依赖于core模块,不依赖于其他模块,可以单独使用。什么时候可以用到SpEL表达式?@Value注解可以通过的形式来获取application当中的配置,使用。

2023-02-26 12:38:50 471 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除