- 博客(178)
- 收藏
- 关注
原创 记录线上事务死锁案例
背景:线上经常报错插入一个标签时候发生死锁。原因是某几个视频入库时tag都是一样的导致两个事务互相竞争对方资源造成的死锁事务1:插入tag1、tag2事务2:插入tag2、tag1刚好事务1插入tag1、事务tag2,然后事务1插入tag2、事务2插入tag1 此时他们发现插入都在等对方释放资源此时会造成死锁,会有一个报错另一个成功。解决办法:插入tag时不让它们进入事务同时catch异常 假如同时5个线程插入只有一个成功那么catch住异常继续查询一遍就行 也满足了并发。接下来模拟一下这个场景。
2024-11-26 16:26:22 230
原创 RestTemplate HTTP请求报错:400 Bad Request解决方法
背景:我要监控某个topic的个数,进而往里发送消息。但是他的请求一开始给我的是。这个本身使用curl请求没问题但是用了 Restemplate就报错。使用Restemplate 请求 kafka监控的消费数。原因是 query参数是编码过的。
2024-10-22 23:18:31 262
原创 mysql 悲观锁使用
悲观锁是一种数据库锁定机制,它假设每次操作都会发生并发冲突,因此在执行任何需要读取或写入数据的操作之前,先获取锁,防止其他事务对该数据进行修改。悲观锁确保了操作的独占性,以防止数据被其他事务同时修改,从而保证数据的一致性。悲观锁分为两种:1、共享锁(S锁):允许多个事务同时读取数据,但不能修改数据。2、排他锁(X锁):禁止其他事务读取或修改数据,只有获取锁的事务可以操作数据。使用场景:适用于并发度较高的场景,尤其是在可能发生数据冲突的情况下。MySQL中,悲观锁通常是通过或来实现的。
2024-08-24 18:58:50 718
原创 使用RestTemplateBuilder构建连接读取超时参数失效!!!
注意看setConnectTimeout他有返回方法的所以每次都会返回一个RestTemplateBuilder方法。不看RestTemplateBuilder的源码看着还挺正常的,set方法设置超时。背景:我有一个RestTemplate需要发送http请求而且还要设置超时,但是发现一只失败。
2024-07-12 01:15:16 188
原创 使用excel合理整理数据
4、最后就是覆盖R列所有 刚才只是计算一个,如果excel数据很少直接右下角下拉快速复制,但是我的内容几万条这样效率太慢了。做的就是根据1、2 的aid 将 sheet2中的所有数据 追加到 shett1 里面。第三个参数就是sheet2中的A列关联起来对应的结果列 比如我们要B这一列。2、sheet2是视频的播放数据比如 aid vv uv等。1、sheet1是视频的数据比如 aid、作者、视频信息。第二个参数就是sheet2中的A列这个是要搜索的值。1、先对sheet2的数据进行排序。
2024-05-07 15:32:28 1239
原创 SpringBoot启动特别慢原因竟是Method breakpoints may dramatically slow down debugging !
背景:我有一天忽然调试一下项目,发现启动特别慢,慢到一点也不正常,查了半天原因是因为调试断点的问题!这个是因为你把断点打在了方法上,然后它严重的降低了启动速度。启动项目时idea发出提示(在左下角)翻译:方法断点可能会大大降低调试速度。
2024-03-07 16:25:31 236
原创 Elasticsearch学习之(一)线上迁移数据方案
注意点:1、因为月份最后几天不确定,所以从28-31 都计算一下2、创建索引的配置自己写个json文件然后放到容器中读取即可")//判断是否是最后一天if(!log.warn("索引初始化|判断不是本月最后一天|不进行处理");return;// 每月最后一天生成下个月的索引log.warn("索引初始化|索引已存在|index:{}",indexName);return;
2024-03-03 00:47:26 956
原创 IDEA异常退出重启后项目启动失败解决
背景:使用mac启动idea项目后异常退出,重新打开IDEA后,启动项目失败原因是 端口被占用。其实就是 com.item.test.server.Application这个 ,杀死进程即可。原因:其实就是IDEA异常退出,但是这个项目还在启动,进程没有退出造成的。使用jdk自带的工具 jps 找到现在java的进程然后杀死即可。
2024-01-10 18:05:54 1238 2
原创 vue封装组件(一)标签和下拉框组合实现添加数据
背景: 最近接入短剧内容,需要添加短剧合作方。在详情页需要支持添加组件 方案一:标签tag加上输入框实现添加数据。图片见下 这个是刚开始做的,后来产品觉得这样会造成随意修改数据,需要改成下拉框形式添加 方案二:标签tag加上下拉框以及添加按钮实现。这个就避免了乱添加数据,添加合作方名字需要在一个管理页面添加,然后下拉框请求自然就请求到数据了方案一效果图:第一行 流程:点击新增后,填入数据,后台会自动检查是否存在,存在返回数据,否则保存然后返回数据。
2024-01-05 17:55:22 1620
原创 vue简单实现滚动条
背景:产品提了一个需求在一个详情页,一个form表单元素太多了,需要滚动到最下面才能点击提交按钮,很不方便。他的方案是,加一个滚动条,这样可以直接拉到最下面。优化:1、支持滚动条,这样方便快速往下拉2、点击提交按钮可以悬浮起来,这样随时都能修改完提交,不用拉到最底下。接下来就简单案例实现一下。直接用vue中的组件来实现这个小需求。右侧有下拉框、右下角固定住提交按钮即可。最终实现的效果图如下。
2024-01-05 16:43:12 2739 2
原创 SpringMvc入坑系列(一)----maven插件启动tomcat
File- New-Project -----选择Maven 然后SDK选择1.8。
2023-12-06 23:21:06 2401
原创 mac安装解压缩rar后缀文件踩坑
解决办法:点击 偏好设置- 通用-可以看到下面显示 已阻止使用rar,因为来自身份不明的开发者,点击 仍然允许即可。下次如果弹窗选择打开即可。然后解压缩文件进入目录 rar中 将可执行文件 rar、unrar 移动到 /usr/local/bin目录下即可。mac默认能够解压缩zip后缀的文件,如果是rar后缀的自己需要下载相关的工具解压。然后终端执行 rar 或者 unrar 有显示相关信息即成功。mac我是因特尔芯片所以下载 x64。无法打开rar 因为无法验证开发者。
2023-12-03 12:04:32 932 1
原创 synchronized 到底锁的是谁?
synchronized 到底锁的是谁?修饰方法:1、静态方法2、非静态方法,锁住的是方法的调用者修饰代码块。
2023-11-05 20:53:52 355
原创 java中的Thread类解析
@Test 注解时,JUnit会自动创建一个测试线程来运行测试方法,并在测试方法执行完毕后立即终止该线程,而不管该线程是否已经执行完毕。因此,在使用@Test注解时,子线程可能无法执行完毕,因为测试线程已经被终止了。下面例子:自己开启一个守护线程,然后一直监听工作线程,等工作线程工作完成后,守护线程自己也就结束了。这个就是启动线程的方法,他和run方法的区别是,start是通过本地方法。一般是为了工作线程服务的,当所有用户线程结束时,守护线程自动结束。即工作线程,线程执行完即结束了。
2023-11-05 00:19:03 195
原创 nginx未配置proxy_set_header Host $host;引起的服务请求失败
前端vue和后端java放在一台机器上,nginx做请求转发。用户未登录状态下,会返回给前端信息。前端判断后发起登录校验请求。nginx需要配置 proxy_set_header Host $host;转发时会把请求头信息也带上。原因:nginx请求转发时,没有携带之前客户端的请求头信息,导致请求失败。然后nginx来做请求转发,发现此时一直请求失败。
2023-10-07 11:43:04 664
原创 docker安装elasticsearch、kibana
背景:使用docker安装 elasticsearch 、kibana。目的:主要是使用kibana 来简单写一些 es的命令环境:已经安装过docker了。
2023-09-02 15:31:08 787
原创 nginx学习
nginx plus商业版本(好像功能支持更多)openresty (免费,用的也是这个)Tengine最后学习openresty,并且公司用的也是这个openresty。
2023-08-30 00:54:00 872
原创 jenkins部署java服务发生(code=exited, status=203/EXEC)
这个日志中(code=exited, status=203/EXEC)这个是错误信息,我百度了一下,查了半天也没发现到底什么原因,因为平常直接复制jenkins已有的项目配置部署没问题,这个是自己新开发的项目不知道为什么,一直失败,jenkins一直在做健康检查。.它是一个软连接,到这其实要开始运行jar文件然后启动java服务,但是就是这的问题,导致服务没启动。:新开发一个java服务,写完部署用公司共用的jenkins服务部署发现报错,报错如下。系统日志,最终查到了相关信息是。查看系统日志找报错原因。
2023-08-30 00:02:03 961
原创 Too many keys are generated.There are only 1 target objects.You either specified a wrong ‘keyPropert
这个错误通常是由于使用了自动生成键的配置,但在插入操作中生成了多个键,导致与预期不符。就是一个实体插入完数据要写主键的时候发生了多个主键写到一个实体上。:即想把主键插入到实体中,又想遇到存在的记录不处理,还是老老实实多写几步,先判断唯一索引是否存在吧。因为 replace into 和。然后批量新增数据时,运营不小心在批量新增中产生了唯一索引冲突的数据,造成了这种错误。我用的是mybatis的xml sql 是。不能一起使用,只要唯一索引冲突 就会报错。
2023-08-05 18:24:00 2425
原创 springboot读取resource配置文件生成容器对象
背景:需要对地区和语言做映射,给一个映射表,通过映射来确定最后保留的是哪个值。可以写到数据库,但是数量比较小,直接放到配置文件读取即可。
2023-07-22 18:20:49 265
原创 net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found webp
net.coobird.thumbnailator.tasks.UnsupportedFormatException: No suitable ImageReader found webp
2023-06-30 16:45:05 1669 4
原创 使用了java自带的Pair类造成部署测试环境失败
Caused by: java.lang.IllegalStateException: Failed to introspect Class [com.ysdq.bms.framework.image.ImageNewUploadService] from ClassLoader [org.springframework.boot.loader.LaunchedURLClassLoader@31cefde0] at org.springframework.util.ReflectionUti
2023-06-19 16:13:53 508
原创 spring下包学习org.springframework.http
学习下spring的包org.springframework.http工作中常用的类。
2023-05-20 16:50:42 649
原创 require和import
vscode装一个Live Server 然后右键open with live server可以看到效果。导入模块时默认在package.json 中找main 实际导入的它后面的名字。1、导入js或json文件。执行 node.js。
2023-05-16 22:01:21 111
原创 vue安装初始化项目
1、nvm安装vue 当前nvm使用的node版本是v10.24.1显而易见,需要更新node版本,直接用nvm安装了新版本然后就可以使用了,发现nvm安装不同的node版本 vue还得重新装。安装后还显示了一个这个让更新npm的,暂时没这个需要,不更新2、创建一个vue项目选择Default ([Vue 2] babel, eslint)3、 启动项目。
2023-04-22 22:49:08 1578 2
原创 IDEA打开vue文件发现红色波浪线
左上角打开Intellij-IDEA选择Perference-Editor-Inspections。右侧的搜索框搜索Type mismatch 去掉对勾 即可。
2023-04-05 13:06:22 774
原创 log4jdbc解决sql参数的问题同时引发的The new driver class is `com.mysql.cj.jdbc.Driver‘
log4jdbc解决sql参数的问题同时引发的The new driver class is `com.mysql.cj.jdbc.Driver‘
2023-03-29 14:48:56 379 2
原创 docker安装datax
待解决,发现一致报错,连接不上数据库,查到原因是不支持mysql8版本但是把8jar包放到配置文件目录下还是不行,待解决~3、因为默认datax 运行实例环境没有 vim 工具所以需要自己安装。1、搜索datax,然后下载镜像。2、运行容器,打开终端执行命令。此时就可以使用vim工具了。
2023-03-29 14:44:27 925
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人