- 博客(50)
- 收藏
- 关注
原创 设计一个利用事务特性可以阻塞线程的排他锁,并且通过注解和 AOP 来实现
利用数据库表记录锁标识:通过唯一标识符(如方法名 + 参数),我们可以在数据库中插入一条记录,表示当前方法正在执行。AOP 和注解结合:使用 AOP 和注解对方法进行拦截,判断是否已经有其他线程在执行,若没有则获取锁,若有则阻塞或抛出异常。超时检测:如果在某个时间点锁没有被释放(例如,锁存在时间超过10分钟),则认为发生了死锁,自动清理相关记录。事务:利用事务的隔离性,保证在同一时刻,只有一个线程能够执行某个方法,其他线程需要等待。数据库表记录锁:通过表记录锁的状态,保证只有一个线程能获取到锁。
2025-01-09 20:44:03
438
原创 使用 Spring 的 事件发布和监听机制,结合异步执行 的功能达到方法异步执行
定义事件类:首先,我们需要定义一个事件类,该类将传递必要的参数(例如,null, “API”, Trade.getId())。事件发布:在调用 init.tradeComparison() 方法之前,发布一个事件,事件会被异步监听器接收并执行。异步事件监听器:使用 Spring 的 @Async 注解将监听器设置为异步运行,从而实现异步执行的需求。
2025-01-06 17:46:52
211
原创 ORACLE索引失效和sql优化
执行计划里最边有个*号 表示这个在下面的分析语句里出现了,执行计划对应的是 29 行 花费了1959个单位而且走了全表扫描。交易日期过滤数据时使用了to_date写法,导致日期字段查询未走索引。将控制台输出的sql 粘贴到plsql 按F5打开解释计划执行窗口。是对交易日期进行了to_char()的写法然后进行筛选查询。然后删除了sql中的to_char()函数 在查看执行计划。现在可以看到26行对应的执行计划只花费了3个单位。切换到HTML,该窗口能更清晰的看到执行计划。拉到最下面可以看到执行的语句。
2024-01-09 15:51:18
558
原创 oracle、误操作删除数据库 数据恢复。
查询 执行 delete 的语句 ,拿到删除的时间 FIRST_LOAD_TIME ,删除行数可参考 ROWS_PROCESSED。– 时间放在查询语句中。
2023-12-07 15:23:33
723
原创 生产问题分析:批量执行慢,根据日志进行分析。
耗费(COST)、CPU耗费:Oracle估计的该步骤的执行成本,用于说明SQL执行的代价,理论上越小越好(该值可能与实际有出入)。merge join cartesian (笛卡儿算法):是每个集合的任务一个成员都要与其他集合的每个成员进行匹配。3.从该批量的第一个代码看起,sql会打印在日志里,查找第一个sql,对照代码一个个看下去。基数(Rows):Oracle估计的当前操作的返回结果集行数。时间(Time):Oracle估计的当前操作所需的时间。字节(Bytes):执行该步骤后返回的字节数。
2023-11-07 14:15:52
226
原创 try catch无法获取空指针异常的长度的问题
项目代码里有对异常进行捕获,然后根据异常的长度决定是否截取异常内容保存数据库的操作,然后对于空指针的异常是无法获取异常的长度的。这个是获取空指针异常长度。然后现在不获取异常的长度。
2023-10-05 17:54:58
285
原创 org.apache.ibatis.builder.BuilderException: Error evaluating expression ‘‘. Return value
packageCode后面没有带$array 就证明不是数组了,是个字符串对象,但是无法循环。
2023-08-15 10:23:26
2346
原创 idea,选中同一个变量高亮显示
在设置里直接搜索按照步骤,勾选然后修改选中变量时的变量背景颜色和字体颜色。阅读复杂代码时,我们经常因为找不清变量位置,而浪费精力重新去看变量名。这里是设置选中变量时,其他变量的背景颜色和字体颜色。
2023-07-27 10:01:27
2725
原创 修改复核双录
被修改的记录生成一条状态为未生效的记录 原纪录不变 被复核后 删除原来的记录 同时被复核的记录修改为已启用,状态有未生效0,复核1,已启用2,停用3。:1.设置一个业务id,主键id为自增,填充业务id与id一致,在修改保存后生成一条状态为未生效的记录,并且把当前id插入新记录的业务id里。2.被复核后,删除之前的已生效记录,根据业务id一致的原理,删除状态为非未生效 而且业务id一致的记录。1.可能记录被修改多次 生成多条未生效的记录。3.根据id把刚刚未生效记录的状态改为已启用。
2023-07-11 13:31:43
105
原创 删除和导入导出oracle数据库表
删除:select 'DROP ' ||OBJECT_TYPE || ' ' || OWNER || '.' ||OBJECT_NAME || ';' from dba_objects where owner IN ('数据库名') AND OBJECT_TYPE IN ('TABLE', 'VIEW', 'SEQUENCE', 'SYNONYM', 'PACKAGE', 'PROCEDURE', 'TRIGGER', 'FUNCTION', 'PACKA
2023-06-26 15:02:57
853
转载 Oracle与MySQL添加字段、修改字段sql语句写法
语法:alter table 表名 modify (字段 字段类型 [default ‘输入默认值’ ] [null/not null] ,字段 字段类型 [default ‘输入默认值’ ] [null/not null] );多个字段修改用逗号隔开。ALTER TABLE table_name ADD COLUMN column_name VARCHAR(100) DEFAULT NULL COMMENT ‘新增字段’ AFTER old_column;
2023-03-17 16:47:17
2274
转载 Oracle与MySQL添加字段、修改字段sql语句写法
语法:alter table 表名 modify (字段 字段类型 [default ‘输入默认值’ ] [null/not null] ,字段 字段类型 [default ‘输入默认值’ ] [null/not null] );多个字段修改用逗号隔开。ALTER TABLE table_name ADD COLUMN column_name VARCHAR(100) DEFAULT NULL COMMENT ‘新增字段’ AFTER old_column;
2023-03-17 16:45:58
4605
原创 navicat连接oracle11g数据库无法识别链接描述符中的请求
navicat连接oracle11g数据库提示无法识别链接描述符中的请求。服务名处填入 SERVICE_NAME=查看地址 打开admin文件夹查看。原因:服务名错误 sid被修改过。tnsnames文件。
2023-02-14 14:47:22
314
原创 前端部署vue
npm install -g cnpm --registry=https://registry.npm.taobao.orgcnpm installcnpm install webpack@4.46.0 --save-devnpm run serve
2022-11-02 16:50:26
144
原创 Description: Parameter 0 of method ribbonServerList in com.alibaba.cloud.nacos.ribbon.NacosRibbonCl
在配置 nacos配合gateway使用时报的错 关闭idea重新启动就没事了。
2022-09-19 11:26:48
693
1
原创 双端队列Deque和stack栈和queue队列的异同
只要理解了上面的add()和push方法的话 理解下面的也会非常简单。push()在列表头部插入元素作用和addFirst()作用相同。其中1是队头 当你使用poll()或pop()时 1会先被踢出。其中3是队头 当你使用pop()或者poll()时 3会被踢出。add()在列表尾部添加元素作用和addLast()作用相同。pollFirst()在列表的头部获取元素并移除该元素。pollLast()在列表的尾部获取元素并移除该元素。peek()和peekFirst()的作用相同。当你add了一个元素。...
2022-08-10 11:42:12
321
原创 jpa虚拟表的关系映射和一些坑 特别是多对一 一对多等关系
name在一对多中name填的是多的那一张表的外键referencedColumnName那个外键对应一的表的主键。是表示我多对一一的映射的表对应的类不加上去会让系统不知道你这个result_points_id键对应的是谁。referencedColumnName填的是一的一方的主键当然你也可以不放主键。还有一种懒加载没有在查询的参数中携带的对象不会被查询出来节省性能。的坑,废话不多说,主要介绍一些表关系的定义.包括更新删除插入合并和分离的作用不明。...
2022-07-30 16:23:52
505
原创 不用锁 三个线程交替执行打印方法
使用一个变量控制哪个线程进入这个方法 如果不是不满足条件 就使用sleep()方法让出cpu资源 注意不要加锁 sleep(方法不会让出锁资源)
2022-07-11 14:25:48
443
原创 内存溢出问题该如何解决
内存溢出,简单地说内存溢出就是指程序运行过程中申请的内存大于系统能够提供的内存,导致无法申请到足够的内存,于是就发生了内存溢出。引起内存溢出的原因有很多种,常见的有以下几种:内存中加载的数据量过于庞大,如一次从数据库取出过多数据;集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;代码中存在死循环或循环产生过多重复的对象实体;使用的第三方软件中的BUG;启动参数内存值设定的过小。内存溢出的解决方案:· 第一步,修改JVM启动参数,直接增加内存。· 第二步,检查错误日志,查看“OutOfMemory
2022-07-09 23:18:34
7234
原创 Java中的IO流
流是Java对不同输入源输出源的抽象,代表了从起源到接收的有序数据,有了它程序就可以采用统一的方式来访问不同的输入源和输出源了。按照数据的流向,可以将流分为输入流和输出流。其中,输入流只能读取数据、不能写入数据,而输出流只能写入数据、不能读取数据。按照数据的类型,可以将流分为字节流和字符流。其中,字节流操作的数据单元是byte(8位的字节),而字符流操作的数据单元是char(16位的字符)。按照使用的场景,可以将流分为节点流和处理流。其中,节点流可以直接从/向一个特定的IO设备读/写数据,也称为低级流
2022-07-05 20:58:21
650
原创 synchronized是怎么实现的??
synchronized的底层是采用Java对象头来存储锁信息的,并且还支持锁升级。Java对象头包含三部分,分别是Mark Word、Class Metadata Address、Array length。其中,Mark Word用来存储对象的hashCode及锁信息,Class Metadata Address用来存储对象类型的指针,而Array length则用来存储数组对象的长度。如果对象不是数组类型,则没有Array length信息。synchronized的锁信息包括锁的标志和锁的状态,这些信
2022-07-03 20:56:54
714
原创 10分钟了解stream流的N种玩法
快来学习stream相关的骚操作啦 十分方便简单创建流的方式非常简单最常见的,你可以通过对集合和数组的转化,创建流。你还可以通过切割字符串(返回string数组)创建废话不多说马上就开始实战演练。这是等会会用到的类,set和get方法可以自己创建或者使用@data注解也行放在main方法中:filter和foreach方法。这里使用了lambda表达式,对人员对象的工资进行了过滤,然后foreach循环输出人员的name:在这...
2022-06-29 20:41:12
2365
原创 Error c nested exception is java.lang.IllegalStateException: Can‘t configure anyRequest after itself
Can’t configure anyRequest after itself:无法在自身之后配置 anyRequest主要问题是调用了两次这个方法把上面的移到最后面就可以了
2022-06-27 10:05:19
2760
原创 BCryptPasswordEncoder类 SpringSecurity中配置加密方式
配置SpringSecurity的加密方法 :第一个方法:加密方法;第二个方法:效验密码方法在数据库中用户密码是被加密过的 而且 防止数据库数据被窃取造成巨大损失 密码无法解密如果在开发环境中如果忘记密码可以用第一个方法加密后存入数据库...
2022-06-24 14:39:54
2712
原创 怎么判断各种值是不是为空
碰到一个很离谱的东西 前端传了一个空的数组 ,然后后端接收整个对象的时候是size=1的有一个空值;然后你需要这样写才能判断list.get(0).equals(“”);具体的是这样写:good.getGoodImgList()==null||good.getGoodImgList().isEmpty()||good.getGoodImgList().get(0).equals("")然后如果你需要判断int 或者double的话 可以这样判断判断值为0就行if(good.getCoun
2022-05-13 23:13:23
2207
1
原创 o.s.w.s.h.AbstractHandlerExceptionResolver.logException - Resolved [org.springframework.http.conver
o.s.w.s.h.AbstractHandlerExceptionResolver.logException - Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type java.lang.String from Object value (token JsonToken.START_OBJECT); ne
2022-04-29 19:48:56
1369
原创 插入mysql数据库让当前时间加十分钟
现在我要执行插入语句然后我有一个开始时间和一个结束时间我要结束时间比开始时间晚30分钟我可以这样写insert into `order`(u_id, state, actual_payment, create_time, bus_id, end_time)values (#{order.u_id}, 1, #{order.actual_payment}, NOW(), #{order.bus_id}, DATE_ADD(NOW(), INTERVAL 30 MINUTE))最重要的是
2022-04-09 23:49:55
2154
原创 将前端传过来的json对象转成Java类对象
引入Gson依赖的方法请看我上一篇文章如图前端传过来的json是这样的:然后 在控制层你可以这样写 Gson gson1 = new Gson(); String a=gson.toJson(map.get("returnGood")); ReturnGood returnGood1 = gson1.fromJson(a, ReturnGood.class);这里的http里方法使用的是 @RequestBody Map mapReturnGood 就是你需要转化的对象然后字段名必须一致
2022-04-09 21:32:52
907
原创 将前端传进来的json中的数组转成list的方法
如果你是maven项目 那么在你的pom.xml里引入依赖<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.0</version> </dependency>Gson这是谷歌的一个
2022-04-09 17:31:06
1114
原创 ERROR o.s.b.SpringApplication.reportFailure - Application run failedorg.springframework.beans.factor
ERROR o.s.b.SpringApplication.reportFailure - Application run failedorg.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘requestMappingHandlerMapping’ defined in class path resource [org/springframework/boot/autoconfigure
2022-04-08 22:04:47
7806
原创 Unknown column ‘张三‘ in ‘field list‘
Unknown column ‘张三’ in ‘field list’、执行sql语句时 出现 未知列的问题原因有几个1.字段名字错了2.字段的类型不匹配 比如String型 和int型 类型不一样就会报错3.插入时 字段的列数多了或者少了...
2022-04-08 17:16:58
2927
原创 使用jupyter和python的numpy库和mataplotlib库写国民生产总值图
第一次使用jupyter有几个要注意的地方:load读取文件可能会读取不到建议点进文件夹然后在创建项目第二点:如果是使用cmd命令行打开jupyter的,不能关闭命令行 不然会断开连接import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']='SimHei'plt.rcParams['axes.unicode_minus']=Falsedata=np.load('../newtest/国民
2022-04-04 18:36:31
904
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人