- 博客(82)
- 收藏
- 关注
原创 Oracl-oceanbase根据指定分隔符分割字符串
参数3:起始位置,默认从1开始。参数4:分割后要提取第几组。参数2:分隔规则,分隔符。参数1:要分割的字符串。
2024-11-01 16:46:38 61
原创 Oracle-Oceanbase查询某个字段包含数字的所有记录
select * from tab where regexp_like(d.name,’^[0-9]+$’
2024-11-01 16:33:44 65
原创 方法内调用异步方法@Async注意事项
1、方法内调用异步方法@Async时若涉及事务,异步方法最好每次都重新开启新事务Propagation.REQUIRES_NEW。2、异步方法最好在前一个方法事物范围之外调用,否则可能会出现之前的事务还未提交完成,异步方法已执行并且已用到之前的数据做校验等。既然是异步方法说明之前的业务事情已经做完。
2024-10-16 15:40:59 95
原创 Stream流使用Collectors.toMap()收集器注意事项
Collectors.toMap()收集器返回的类型是Map对象,当提取所有key或value并将起转换成列表时,列表集合顺序可能会错乱。
2024-09-20 16:16:46 133
原创 stream流根据对象属性值查找该对象在集合中的索引值
在这个示例中,我们使用了IntStream.range(0, people.size())来生成一个整数流,该流的元素范围是从0到集合people的大小(不包括)。在Java的Stream API中,并没有直接的方法来获取对象在集合中的索引值,因为Stream操作通常关注于数据的处理逻辑,而不是数据的位置。如果找到了匹配的索引,我们就使用OptionalInt.isPresent()和OptionalInt.getAsInt()来获取并打印该索引。如果没有找到匹配的对象,我们就打印一条消息说明没有找到。
2024-09-20 14:44:32 267
原创 Java stream流根据对象属性去重
以下是一个示例,展示了如何根据对象的某个属性去重,并保留具有该属性值的第一个或最后一个遇到的对象。.values().stream().collect(Collectors.toList()):从Map中提取值,并将其转换回列表。(existing, replacement) -> replacement:保留最后一个遇到的对象。(existing, replacement) -> existing:保留第一个遇到的对象。valueMapper:person -> person,保留原始对象作为值。
2024-09-20 14:33:32 253
原创 maven本地仓库存在jar导包时依然试图远程仓库下载问题解决
ideal >> build tools >> maven 勾选Work offline选项。2、setting配置文件中关闭远程仓库配置或者直接删除远程仓库配置。1、配置VM Options 参数优先使用本地仓库。3、配置maven使用离线模式。
2024-08-07 10:25:26 533
原创 mybatis-plus雪花算法
苞米豆mybatis-plus已实现雪花算法,若项目中使用雪花算法生成自增主键,可直接引用相关jar实现其工具类,若不想再单独引用jar也可将其Sequence类直接复制到自己项目中定义为工具类使用。
2024-08-03 17:04:26 369
原创 XPathParser类
XPathParser类是mybatis对 javax.xml.xpath.XPath的包装类。接下来我们来看下XPathParser类的结构。
2024-07-30 22:07:49 232
原创 Feign接口调用时报:500服务异常
2、接口调通了,可能是序列化的问题,此时调用方报500异常,被调用方报序列化失败警告日志。1、接口未调通,检查接口请求方式。
2024-07-25 16:42:53 625
原创 Vue根据A下拉框选择不同项控制B下拉框是否禁用选择或下拉项只显示某项
在这个例子中,当A下拉框选择了“选项1”时,B下拉框只会显示“唯一选项”,并且将其值设置为“onlyOption”。如果A下拉框选择了其他选项,则B下拉框的值会被清空。在这个例子中,第二个下拉框会根据第一个下拉框的选择来决定是否禁用,第三个下拉框则只会在第一个下拉框选择“选项1”时允许选择“唯一选项”。事件监听器来响应下拉框的选择变化,并根据选择的值更新其他下拉框的数据。指令将下拉框的值绑定到数据属性上,并使用。来控制下拉框是否禁用。等指令根据条件显示或隐藏某些下拉项。在Vue中,你可以使用。
2024-07-17 17:59:27 422
原创 调用第三方API超时如何区分是连接超时还是响应超时
不能简单的根据同一个线程调用API接口到抛出异常的时间差来进行判断,因为默认配置的响应超时时间是从连接成功开始计算的。异常,可以判断是连接超时还是响应超时。在Java中调用第三方接口时,遇到超时问题通常涉及两种类型的超时:连接超时(Connect Timeout)和响应超时(Read TimeOut)要查看是对方响应超时还是自己方连接超时,可以通过设置Java的HttpClient的超时时间和捕获异常来判断。在这个示例中,我们设置了连接超时时间为5秒,读取数据超时时间为10秒。
2024-07-16 15:01:52 472
原创 MyBatis二级缓存的命中条件
如上图两个会话在修改同一数据,当会话二修改后,假如它实时填充到二级缓存,而会话一查询时缓存中存在即返回数据,此时会话二回滚会话一读到的数据就是脏数据。所以为了保证数据一致性,二级缓存必须是会话提交之后才会真正填充,包括对缓存的清空,也必须是会话正常提交之后才生效。二级缓存的命中场景与一级缓存类似,不同在于二级缓存可以跨会话使用,既然是跨会话使用必然也会是事务级缓存。因此二级缓存的更新,必须是在会话提交之后。为什么要提交之后才能命中?
2024-07-16 14:35:56 233 1
原创 Executor执行器可以使用JDBC三个中任意一个的statement吗?
Executor可以使用JDBC三个中任意一个的statement;那Executor执行器是如何确定使用JDBC的哪个预处理器Statement呢?Executor执行器是通过MappedStatement类的statementType属性值判断使用JDBC的哪个预处理器Statement的。mybatis中具体设置statementType属性值的位置1)STATEMENT:直接操作sql,不进行预编译,获取数据:$—Statement(使用场景,动态传入表名,列名)2)PREPARED
2024-07-16 14:35:01 154 1
原创 group by 与 distinct去重性能
因为GROUP BY可以即时去重,而DISTINCT需要扫描整个数据集,这可能导致更高的内存和I/O开销,尤其是在处理TB级大表时。GROUP BY和DISTINCT在数据库查询中都可以用于去重,但它们的性能差异取决于多个因素,包括数据集的大小、数据库的结构和索引、以及查询的具体内容。GROUP BY:它可以在数据流中即时进行去重处理,通常与聚合函数(如COUNT, SUM等)一起使用,但也可以仅用于去重。DISTINCT:它会扫描整个数据集,然后删除重复的记录,只保留唯一的记录。
2024-07-16 14:33:28 381
原创 注解Async配合CountDownLatch使用
await(long timeout, TimeUnit unit)等待计数器变为0即等待所有异步线程执行完毕,超时自动唤醒。countDown()每调用一次计数器值-1,直到count被减为0,代表所有线程全部执行完毕;CountDownLatch线程计数器:用于线程执行任务,计数,等待线程结束。1、某个线程需要在其他n个线程执行完毕后再向下执行;@Async被标注的方法支持异步调用。2、多个吸纳从并行执行同一个任务,提高响应速度。
2024-07-10 15:53:29 135
原创 Oracle左连接过滤条件注意事项
3、对于辅表的过滤条件写在on后面是先对辅表过滤后再与主表关联,写在where后面是对主表与辅表关联后的结果集再进行过滤。4、对于主表的过滤条件写在on后面不生效,只能写在where后面。1、left join 结果集行数与主表查询结果集行数一致。2、主表与辅表多关联条件要括起来。
2024-07-10 15:45:07 417
原创 Oracle字符串类型常涉及的问题
to_number(decode(trim(字段),null,‘0’,‘’,‘0’,trim(字段))) 字符串转为数值(注意:字符串转为数值时左边0会自动被截取掉)to_char(字段,‘fm000000’) 输出5位字符串不足左补0,fm去除前面的空格。lpad(字段,位数,‘0’) 输出指定位数字符串不足左补0。rpad(字段,位数,‘0’) 输出指定位数字符串不足右补0。2、translate函数。
2024-07-10 15:21:50 226
原创 业务集合去重
场景:多个存储不同类型对象的集合分别遍历映射成同一个对象放入到一个公共集合中且若映射后的对象相同则保留后遍历产生的那一个,如何高效防止公共集合中最终存储的数据重复?
2024-07-10 14:32:42 124
原创 事务未释放问题排查
排查:查看所有锁表报错的日志是否都是同一个线程号上的,找到最开始的报错并进行分析。事务未释放问题现象:一般会导致大量锁表现象。
2024-07-10 14:02:21 156
原创 多数据源配置导致注解Transactional失效
多数据源配置时,向事务管理器中注入数据源时可以直接注入DynamicRoutingDataSource;若注入ItemDataSource类型需要对每一个数据源事务单独进行注入,否则可能会出现事务失效问题。
2024-07-10 10:24:17 275
原创 java下载文件到浏览器中文名报错 The Unicode character [模] at code point [27,169]
【java下载文件到浏览器中文名报错 The Unicode character [模] at code point [27,169] cannot be encoded as it is o - CSDN App】
2024-06-13 15:23:50 719
原创 BigDecimal创建应使用String参数构造方法或value of方法,否则会有精度丢失
这个方法是专门为浮点数设计的,它试图为给定的 double 值提供一个精确的 BigDecimal 表示。当你传递一个 double 值给 valueOf 方法时,它并不直接使用该 double 的二进制表示。相反,它首先检查这个 double 是否能精确地表示为长整数(即没有小数部分),如果是,则使用长整数来构建 BigDecimal。
2024-06-06 12:02:48 1303
原创 SQLRecoverableException异常
我遇到的是请求并发造成的,两个并发请求执行方法,方法未执行完成整体事务未提交导致事务占用,另一个请求执行更新操作时事务被占用超过10秒。
2024-05-08 10:21:00 1099
原创 git error index file corrupt
错误提示:场景复现:在使用git add .提交代码到缓冲区时电脑宕机,重启后再次提交代码会出现该提示原因分析:.git目录下的index文件损坏。
2024-05-07 10:16:58 401
原创 Java中String的length为什么与ORA-12899异常中实际值大小不一致
例如,在使用UTF-8编码时,一个英文字符通常占用1个字节,而一个汉字可能占用3个字节。例如,英文字符通常只占用1个字节,而汉字在GBK编码下占用2个字节,在UTF8编码下则占用3个字节。这是因为Oracle数据库判断字段插入是否超长是以字节来判断的,而String类length方法获取的是存储的字符数量,顺便提一下Oracle数据库length方法获取的也是存储的字符数量。,则表示可以存储最多100个字符,而不是字节,这时可以存储的汉字数量将取决于实际字符所占用的字节数。的最大长度是4000字节。
2024-04-11 17:56:51 275
原创 Async坑:Null return value from advice does not match primitive return type
http://t.csdnimg.cn/1Eoeg
2024-04-09 10:49:25 387
原创 注解Asynchrony 使用时注意在SpringBoot 同类中非异步方法里面调用异步方法不会生效
在Spring Boot中,如果你在一个类的非异步方法中调用同一个类中的异步方法,那么通常情况下,这个异步调用不会生效。原因在于,Spring的@Async注解的异步调用是基于代理实现的。当你在一个类的方法上使用@Async注解时,Spring会为这个类创建一个代理,并将@Async注解的方法调用代理化。这意味着,当你从类的外部(即通过代理对象)调用这个方法时,它会被异步执行。
2024-03-07 14:32:34 1169
原创 Oracle group by分组时写count和不写count性能有区別吗
总的来说,写COUNT会增加数据库的处理负担,因为它需要进行额外的计数操作。而不写COUNT可能会提高查询效率,因为它减少了数据处理的需求。然而,这种性能差异的实际影响取决于具体的数据集大小、数据库的配置以及系统的负载情况。在实际应用中,建议根据具体的查询需求和性能测试结果来决定是否使用COUNT函数。在Oracle中,使用GROUP BY分组时写COUNT与不写COUNT在性能上确实存在区别。
2024-02-21 14:30:00 567
原创 Mybatis的一些问答记录
不过遗憾的是,HashMap是无序的,也就是说,迭代HashMap所得到的元素顺序并不是它们最初放置到HashMap的顺序。因此,根据链表中元素的顺序可以将LinkedHashMap分为:保持插入顺序的LinkedHashMap 和保持访问顺序的LinkedHashMap,其中LinkedHashMap的默认实现是按插入顺序排序的。BaseExecutor基础抽象执行器是三个具体执行器共性功能(一级缓存维护、事务管理)的抽象集合(竖向扩展),主要是MyBatis关于一级缓存相关的逻辑。为什么要进行序列化?
2024-01-13 16:15:27 967
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人