自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库知识点Mysql5.6和8.0异同

除非其他事务进行了提交后,当前事务采用当前读(也就是加for update)的方式进行查询才能查到。,因为临键锁属于读写锁一起上的缘故,select for update语句会一直堵塞直到超时。在RR中,快照会在事务中第一次查询语句执行时生成,只有在。中进行数据更改才会更新快照,也就是说,进行数据更改是不会更新快照的。但这种情况下,在其他事务。

2025-01-15 12:33:04 272

原创 责任链模式与JVM优化场景

Seata AT模式是一个两阶段提交的事务处理过程, 在AT模式下, 如果一阶段提交成功, 这时候就表明了所有节点本地事务提交都完成了.但AT模式的二阶段回滚指的是通过undo log在本地又执行了一遍事务操作, 将数据还原, 这里的回滚并不是借助数据库实现, 而是借助Seata实现的.这也是AT和XA的区别所在, 一方面是通过数据库实现的事务回滚, 一方面是通过Seata执行undo log还原数据实现的回滚效果。责任链的代码实现非常简单, 原理也很好理解, 但想用好它需要有高度抽象业务的能力.

2025-01-14 09:42:10 156

原创 JMM中的八大happens-before原则

Class常量池是Java类文件的一部分, 它由编译器在编译Java源文件时生成, 存储在.class文件中.它包含了类或接口的字面量(如字符串, 整数常量等)以及符号引用(如类和接口的名字, 字段和方法的名字及描述符).运行时常量池是Class常量池在类加载到JVM后的一种表现形式. 它是类加载过程的一部分, 在类或接口被载入JVM时, Class常量池的信息被载入到运行时常量池.它在类加载时被创建, 是方法区的一部分(在Java8后部分为元空间的一部分).它是动态的.

2025-01-13 10:16:16 303

原创 如何保证分布式环境下的接口幂等性?

2.加唯一索引是个非常简单且非常有效的办法, 如果重复插入数据的话, 就会抛出异常, 为了保证幂等性, 一般需要捕获这个异常, 如果是Java程序员需要捕获, DuplicateKeyException异常, 如果使用了Spring框架还需要捕获MySQLIntegrityConstraintViolationException异常.6.状态机使用于有些业务是有状态的场景, 比如订单表中有: 1-下单, 2-已支付, 3-完成, 4-撤销等状态, 可以通过限制状态的流动来完成幂等.怎么保证接口幂等性?

2025-01-12 21:48:45 292

原创 解数独全排列与旋转图像扰乱字符串相乘排列序列有效数字最大矩形组合总和

这题的核心思路就是回溯, 但仍然没能独立写出来, 原因是在这道题的场景中, return是远远不如设置一个全局的valid布尔值来得强大的, return只能终止一个循环, 只有valid才能够终止所有81个方法中的81个for循环, 否则但凡还有一个for循环活着还在继续回溯, 结果都会不对。// A = C, C = D, D = B, B = A, 显然, 发现只需要保存A为tmp, 并且只需要遍历四分之一的图像范围即可。这题的原地旋转算法, 关键在于理解四数之间的旋转也只需要一个tmp.

2025-01-12 08:00:55 164

原创 Vue3Router+Pinia前后端实现随机验证码方案

resultType 只能作为 <select> 标签的属性使用,用于指定查询结果映射到的 Java 类型或基本类型。它不能作为一个独立的标签来定义。如果你需要更灵活地处理验证码(例如动态更新),可以使用 Axios 请求获取验证码图片,并将其设置为 <img> 标签的 src 属性。可以在 <select>、<insert>、<update> 和 <delete> 标签中作为属性使用,指定自定义的结果映射。在 Vue 组件中使用 <img> 标签来显示验证码图片,并添加点击事件以刷新验证码。

2025-01-07 09:45:53 131

原创 MySQL的行锁, 间隙锁,临键锁

间隙锁不锁定当前记录本身, 而临键锁在锁定当前区间的情况下, 还会锁定当前记录, 而在InnoDB存储引擎中, RR隔离级别情况下, 默认就会采用临键锁去加进行加行锁. 但是针对不同的情况, 它可能会调整为记录锁, 表锁, 以及间隙锁.它会锁定索引记录的间隙, 它是不包含该索引记录本身的. 它是为了那些不存在的记录加锁. 间隙锁利用这样的方式解决了RR隔离级别下部分幻读的问题.行锁不是加在当前行的数据上的, 实际上是加在当前行的索引上的. 因此, 当执行加锁的语句的条件列没有索引的时候,

2025-01-05 18:06:05 169

原创 前端知识ElementPlus

2.设置了错误的事务传播行为, 例如设置成了REQUIRES_NEW或者NOT_SUPPORTED, 失效非常明显,@Transactional(propagation=Propagation.REQUIRES_NEW)1.Transactional注解的默认rollbackFor属性是RuntimeException.class, 它无法识别抛出的其它种类的异常, 需要手动设置Class<?Elementplus中, 如何解决el-form inline标签中的若干组件宽度为零的疑似bug?

2025-01-04 22:26:55 390

原创 双拼练习文章

零声母应该特别注意,都是以o开头,常用的有额(oe),啊(oa),案(oj),而(or)嗯(of),偶尔(obor),噢(oo)韵母记住就很容易打出任何中文字符,但是很考验前后鼻音的功底,理论上限应该更高才对,求求了。一对一:两张表都包含对方的主键,且都被设置为unique唯一的。--true:消息发送成功,修改消息发送状态为:已发送。1.把消息数据写入数据库,用状态码来控制消息发送状态。1.接收到消息后,直接存入数据库(消息幂等的处理)。2.开启定时任务,间隔3秒,查询未发送的消息。

2025-01-03 20:46:01 134

原创 git结合idea相关实践

每个线程内都有一个ThreadLocalMap类型的成员变量,用来存储资源对象,其key为弱引用,但是值为强引用,因此可能造成内存泄露问题,解决方法是及时remove掉所有线程关联的资源值。通过先pull Origin/master,合并到本地仓库后,再push到远程分支,再在远程提交pull request,最终合并到远程master,是最常规稳妥的解法。3.异步线程,使用@Async注解,避免下一级方法影响到上一级方法,可以使用异步线程调用下一级方法。顺便谈谈多线程在项目实际开发中的应用。

2025-01-02 08:25:03 161

原创 奇偶跳问题

因为之前动态规划加记忆化搜索的题写多了,这道题最初的代码思路就是用的回溯加备忘录实现,但总是有一个测试用例超时,看了答案后才发现这道题涉及了我一个知识盲区,想减少耗时必须得用到单调栈,用单调栈还必须合理的排序索引。奇数跳的下一跳索引要求必须是大于当前索引,且在数组中索引对应的值必须大于等于索引对应的值,还必须满足这个条件中最小的那一个,同时如果有多个值相等,还必须得选出其中最小的索引。感觉按元素大小来排序索引,再结合单调栈会是一套很通用的业务场景,这种高效的做法很值得学习,故记录下来。

2025-01-01 20:42:40 269

原创 SQL语句相关

只有最里层非Null的学生能被查询出来,最里层的嵌套查询需要满足外层查询的所有条件,也就是范围<='01'学生的才能为非null,非null通过NOT Exists后变为了NUll,NULL再通过一个Not Exist后又变成了非Null。只有非Null的学生能被查询出来,最里层的嵌套查询需要满足外层查询的所有条件,也就是范围>='01'学生的才能为非null,非null通过NOT Exists后变为了NUll,NULL再通过一个Not Exist后又变成了非Null。

2024-12-30 17:57:13 162

原创 SpringBoot底层原理

在SpringApplication构造方法内部执行时,它首先会确认web应用的类型,默认是servlet类型的,这种类型的后面会自动开启一个tomcat。最后,执行refresh方法,创建所有非懒加载的单例bean实例,最终返回一个ConfigurableSpringApplication。SpringBoot,启动!然后就是执行run方法了,这一步会真正的实例化IOC容器以及创建容器所需要的非懒加载的单例bean。然后,就会实例化IOC容器,会先创建一个ApplicationContext对象。

2024-12-28 23:23:21 102

原创 类的半初始化状态,数据库的事务隔离级别等

将数据事务隔离级别设置为read uncommited,就代表数据库在高并发下什么也不做. 设置为read commited,就代表在事务内将数据行设置为写锁,可以解决脏读的问题.设置为read repeatable,意味着会在事务内将数据行设置为读写锁.设置为串行化,就可以解决幻读的问题,但也需要上整个表锁。首先定位到具体的语句,可以通过mysql自带的慢日志,也可以通过使用skywalking等全链路跟踪监控工具,定位到具体需要优化的语句。请求头和请求体之间必须有一个空行出来。

2024-12-27 14:23:13 276

原创 环境变量配置优先级问题

线程工作内存模型类似CPU工作内存模型,Voltile通过这个实现了线程之间的变量可见性。JavaWeb规范中定义的三大组件分别是Servlet、Filter、Listener。Filter先于Interceptor执行,拦截器属于SpringMVC框架。上移与下移,删除都可能可以解决JDK或Maven配置环境变量的冲突问题。双爆红问题,通过全局修改maven设置文件目录和本地仓库目录解决。编辑距离字符串,采用动态规划解决。

2024-12-26 23:49:58 129

原创 Vue3+elementPlus工程化案例

server: {proxy: {'/api': {target: 'http://localhost:8080', // 后端服务器地址changeOrigin: true, // 是否改变请求域名rewrite: (path) => path.replace(/^\/api/, '')//将原有请求路径中的api替换为''路由,从起点到终点时,决定从起点到终点的路径的进程,在前端工程中,路由指的是根据不同的访问路径,展示不同组件的内容。

2024-12-25 22:00:57 345

原创 Mybatis分页查询最简实现

如果设置categoryId字符串为null,且mysql对应字段的属性类型为int(10) unsigned,这个空字符串奇葩地可以匹配任意mysql整数。1.先导坐标,注意artifacted为 pagehelper-spring-boot-starter。System.out.println("这里搜索出的文章列表数量为" + as.size());// 1. 创建PageBean对象。-- 结果集映射 -->4.最后动态拼接Sql即可。// 2. 开启分页查询。

2024-12-24 22:39:05 342

原创 注解与代理模式

增强的话经常会涉及到代理模式,代理模式有静态代理和动态代理两种,静态代理就是对于一个统一的接口,我们定义它的实现类,针对每一个实现方法都可以进行一个增强,想增强就需要我们手动通过多态的方式创建一个实现同一个接口的代理对象,然后把需要增强的类注入进去,就可以在接口中对应定义的方法处做一个没有任何代码侵入的增强了,当然这也意味着真正使用的时候,等号右边真正创建的也必须是代理对象。注解就是Java当中的一类特殊标记,它是以@接一个注解名,括号里面接属性键值对的形式表现给我们程序员的。

2024-12-23 13:58:12 253

原创 注解、反射与jdk动态代理

即使 ChildClass 没有显式声明 @Book 注解,getAnnotation 方法也会返回从父类继承的注解(前提是注解使用了 @Inherited 元注解)。继承性:会考虑继承关系。如果当前类没有指定类型的注解,但它的一个父类或接口有此类型的注解,并且该注解使用了 @Inherited 元注解,则会返回父类或接口上的注解。:会考虑继承关系,可以获取父类或接口上的注解(如果注解使用了 @Inherited 元注解)。作用:返回指定类型的注解,如果该元素上不存在此类型的注解,则返回 null。

2024-12-22 14:27:05 299

原创 load balance负载均衡及底层原理

当我们使用负载均衡的随机轮询算法的时候,我们就可以说自己手写了一个LoadBalancer。

2024-12-21 18:02:54 149

空空如也

空空如也

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

TA关注的人

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