- 博客(29)
- 资源 (1)
- 问答 (16)
- 收藏
- 关注
原创 既有项目修改shardingshpere分库分表踩坑记(三)
基于既有项目修改shardingshpere分库分表踩坑记(二),在测试过程中又发现一种情况。在同一个事务中,对config表(非分库分表可以编辑,分库分表可以编辑,业务关联查询)进行保存和查询,会大概率出现报错。查找报错原因是查不到记录。正常情况下,同一事务中,保存之后是可以查到记录的。但这里有点特殊,踩坑记(二)中,将config表配置成只更新主库。而保存之后查询走的是单播路由,查的不一定是主库,也可能查其他库,这时由于事务还没提交。所以其他库是查不到这条记录的。所以这里只能特殊处理下。
2023-11-15 11:43:12 103
原创 既有项目修改shardingshpere分库分表踩坑记(二)
背景基于既有项目修改shardingshpere分库分表踩坑记(一)。在测试过程中,发现部份表(下面以config表为例)与user表类似。在其他非分表分库系统配置,但是也有部分入口是在分表分库中的。所以在系统中修改的话,会报错。因为视图不能修改。但是配置成广播表也不行。在非分库分表系统修改的话,数据会不一致。解决方案最终还是配置成视图,然后系统修改的话只修改第一个库的数据。查了下,并不兼容这种操作,只能修改源码了。解决步骤配置文件增加单表配置和广播表配置。spring.shardingsp
2023-11-15 11:08:26 138
原创 既有项目修改shardingshpere分库分表踩坑记(一)
在既有项目使用shardingshpere分库分表改造后。发现有些sql(例如:select * from order join user )还需要关联单表(举例user表),user表没有做任何配置,故是单表,其他库查sql的话是找不到user表的,所以会报错。由于用户角色模块是单独的自研的工程配置的。工程还没有分表分库配置。对方也没打算改。所以只能自己想办法。
2023-11-15 10:15:53 164
原创 既有项目使用shardingshpere分库分表改造
项目数据量比较大,导致查询很慢。sql优化之后,还得不到预期效果。由于业务关联多,多个业务表数据量都很大。故采用分库分表方案。一开始,同事用shardingshpere 分片键进行分库分表。这样的话由于关联的表比较多,所以有些表要加上分片键,且所有的sql都要加上分片键条件才行。其中一个模块分给我这边改。处于改动很大与觉得这样不太科学。去了解了一下shardingshpere。发现可以强制路由,即不带分片键,在代码层面先指定库表。故进行了改造。
2023-11-09 17:08:18 56
原创 git项目过大,删除历史提交大文件
1、先clone 代码到本地2、下载完成之后进入代码目录3、将代码推送至新的库(在此之前要将所有分支checkout 到本地一下,否则推送上去没有分支。若忘记了。可以再checkout 后再推送一下。
2023-08-03 11:51:11 116
原创 好用idea插件
5、RestfulToolkit-fix(url直接跳转;Ctrl + \ or Ctrl + Alt + N)3、Mybatis Log Free(打印mybatis 的sql语句拼接参数)4、MybatisX (Mapper.xml 和 Mapper.java 互跳)6、Maven Helper(maven 依赖查看,排除多版本依赖)7、Sequence Diagram(代码时序图)8、camelCase(驼峰、下划线等格式互转)2、SonarLint(代码质量)9、JRebel (热部署项目)
2023-05-08 11:55:45 49
原创 springboot 实现nginx代理功能,兼容https跳转
1、引入maven依赖 <dependency> <groupId>org.mitre.dsmiley.httpproxy</groupId> <artifactId>smiley-http-proxy-servlet</artifactId> <version>1.12.1</version> </dependen
2022-04-28 15:02:19 2974
原创 Kafka监控工具Kafka Eagle
由于与官网的安装文档差异较大。故写下此文章1、官网自行下载:https://www.kafka-eagle.org/,以下以2.0.9为例子2、解压安装包。解压完成之后,文件夹又有个压缩包,再解压,这个才是真正的程序。改名为efak-web。3、解压完成之后,需要配置一下环境变量:增加变量:KE_HOME。值为:D:\tool\efak-web4、修改conf/system-config.properties,主要关注几个内容:#kafka对应别名,以及对应的zookeeper地址,集群用,隔
2021-12-29 13:53:35 3034 3
原创 Linux定时检测并重启Kafka
1、编辑定时脚本vi kafkaRestart.sh#!/bin/shsource /etc/profileproc_dir="/usr/local/kafka_2.13-2.8.0"proc_name="kafka.Kafka"file_name="cron.log"pid=0#获取kafka线程数量proc_num(){ num=`ps -ef | grep $proc_name | grep -v grep | wc -l` return $num
2021-12-28 15:33:11 615
原创 Linux开机自动启动kafka
一、首先尝试过zookeeper.service、kafka.service。方式,不过一些环境变量问题,导致无法启动。二、采用/etc/init.d/ 方式1、编辑/etc/init.d/zookeeper,注意以下几点:(1)要设置java环境变量(2)#chkconfig:2345(level) 20(启动顺序:越小越快) 80(停止顺序)(3)start、stop、status、restart。都要有对应的命令#!/bin/bashexport JAVA_HOME=/usr/loca
2021-12-28 14:15:02 1046
原创 Gradle 动态参数打包
1、在build.gradle加入代码(声明接收变量与业务处理)def type = System.getProperty("type") ?:"default"if(type == 'typeA'){ //typeA逻辑}else if(type == 'typeB'){ //typeB逻辑}else{ //其他逻辑}2、打包的时候带上参数-Dtype=typeA...
2021-08-13 15:43:25 272
原创 自用线程池工具类
BatchOperationThreadTaskUtil 主要工具类@Componentpublic class BatchOperationThreadTaskUtil { private static final Logger log = LoggerFactory.getLogger(BatchOperationThreadTaskUtil.class); /** * 同业务最大线程上限,防止超过连接数 */ private static final
2021-01-27 17:51:22 157
原创 mysql一次死锁分析
1、通过show engine innodb status;获取死锁日志。------------------------LATEST DETECTED DEADLOCK------------------------2021-01-25 09:44:09 0x2a0c*** (1) TRANSACTION:TRANSACTION 2782972, ACTIVE 103 sec insertingmysql tables in use 1, locked 1LOCK WAIT 7 lock
2021-01-25 10:20:16 84
原创 activiti 修改历史流程图修改节点
背景:在走流程过程中选择处理人提交之后。后台报错。意思类似找不到el表达式为${singleAssignee}。由于是历史流程图。故无法校验是否节点配置错误。故查到历史流程图的xml内容。1、已知instanceId。查表act_ru_task,得PROC_DEF_ID:reportChangeDetail:13:87725902、已知PROC_DEF_ID,查表act_re_procdef,得DEPLOYMENT_ID:87725013、已知DEPLOYMENT_ID与PROC_DEF_ID
2021-01-15 15:56:09 1454
原创 redis事务中setIfAbsent无法及时返回true或false,返回null
代码如下,现需要批量处理业务,为了防止一条数据被多次处理,故缓存到redis中。又因可以同时操作多条数据,故考虑用redis事务,当其中一个已被其他人处理中时,之前设置的也全部回滚。但实际过程中 redisOperations.opsForValue().setIfAbsent();并非返回true或false。需要等到exec时才能获取返回值。故一下做法就无效了,需要换一种实现方式。 RedisTemplate redisTemplate = RedisUtils.getRedisTemplate()
2021-01-05 14:04:30 6948
原创 Memory Analyzer分析尝试
1、使用jdk自带jvisualvm,dump一下快照。2、下载Memory Analyzer。3、打开快照。
2020-12-21 14:00:28 41
原创 spring aop 注解打印日志
spring aop 注解打印日志@Component@Aspectpublic class ControllerLogAspect { private static Logger logger = LoggerFactory.getLogger(ControllerLogAspect.class); @Pointcut("execution(* com.hhh.framework..*.controller..*.*(..))") public void pointCu
2020-12-11 15:43:30 55
原创 Bean和Map互转
import org.apache.commons.collections.MapUtils;import org.apache.commons.lang3.math.NumberUtils;import org.apache.poi.ss.formula.functions.T;import javax.persistence.Column;import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.
2020-12-11 15:42:11 518
原创 记一次并发锁超时排查
背景:用户需求需要批量走流程,但单线程走流程速度比较慢,10条的话需要花费10倍的时间,故改成多线程模式;改成多线程模式之后遇到多种bug;1、处理完成之后,刷新页面,流程数据还没保存完成导致刷新页面错误解决方法:主线程延迟500ms 返回。2、jpa方式下,并且主线程等待子线程完成之后返回。会导致子线程里面修改的值被主线程覆盖掉。伪代码例子:public class A{ @Autowired private B b; public test(id){ b.test(id); ne
2020-12-11 15:36:48 1406
原创 线程池批量处理业务,一条报错全部回滚
1、主要代码@Componentpublic class BatchOperationThreadTaskUtil { //工具类静态执行 private static PlatformTransactionManager transactionManager; //此属性只是为了动态赋值给上面的属性 @Autowired private PlatformTransactionManager remoteTransactionManager; private st
2020-12-11 15:35:07 790
原创 mysql 数据库锁表排查
SHOW OPEN TABLES WHERE In_use > 0;SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;SELECT * from performance_schema.events_statements_current;SELECT * from
2020-12-03 10:06:28 260
原创 mysql查询like in
背景:数据库字段存放的值采用逗号拼接。例如:“a,b,c,d”有一个需求,需要查询部门数据,即该字段包含部门下任意一个人员就要查出来。所以逻辑类似like in 操作。通过百度,找到一个函数FIND_IN_SET();例子:FIND_IN_SET(“a”,“a,b,c,d”);即在第二个参数中匹配到第一个参数,则查出来。SELECT * from business_table t,person p WHERE p.dept_id = ‘D1’ AND FIND_IN_SET(p.id,t.pers
2020-12-02 15:45:29 1026
原创 前端a标签按钮重复触发问题
$("body").on('click','a',function(obj){ var a = $(this) $(a).css("pointer-events","none") setTimeout(function(){ $(a).css("pointer-events","auto") },1000) });
2020-08-24 14:30:45 386
原创 前端table表格箭头上下移动
因业务需求,需要按上下移动箭头来使得光标上下移动。且表格是不规则的,存在单元格合并(横向,纵向都有)且并非所有的单元格都是input框。故使得功能开发出来比较麻烦。/** * 获取单元格在表格中的绝对位置 * @param td * @returns {number} */ function getTdOfTableLocation(td) { let colCount=0; td.prevAll("td").each(fun
2020-08-24 14:29:09 1027
原创 上下移动问题
上下移实现方式1:默认赋予sort,上下移动交换两个数据的sort。点击触发接口生效。2:在前端上下移动之后点击保存,再实际生成排序sort。点击保存才触发接口。目前采用方式1实现上下移动上移功能:大致想法是全部按照排序查出,循环查询到选择的那一条。缓存上一条的数据。然后互换排序号。 List<JCItemBean> categoryList = jCItemService.findJCItemByCategoryIdOrderBySortAsc(categoryId);
2020-08-24 14:21:11 164
原创 activiti流程跳转方法
activiti流程跳转方法public class JumpTestCmd implements Command<Void> { private String taskId; //当前任务ID private String targetNodeName; //跳转的目标节点ID private String operationId; //指定处理人 public JumpTestCmd(String taskId, String targ
2020-08-24 14:20:37 579
原创 业务实现的优化想法
问题介绍:由于业务比较复杂,根据不同的项目,有不同的表。项目很多。而项目表中,又有很多的字段,每个项目属性都不一样。导致的问题:1、加一个项目就需要加一个表。2、项目表字段过多,容易溢出,需要垂直分表。3、根据选择不同的参数,对应不同的属性,导致项目表中有部分是无用的字段。想法:弄成通用的。项目共用表+key value 形式的细表。多少个属性多少条细表记录。这样的话可以解决上面的问题。1:加一个项目,不需要加表;2:表的字段不会太多导致要垂直分表;3:存在的属性才会加到细表中。由上面的问题由延
2020-07-31 14:30:55 55
kingbase 启动报错 内存不足
2023-08-08
java html 播放视频后台报错问题
2023-07-06
arcgis Server SOE 连接数据库报错
2022-11-22
win10 Intel GPU 监控与采集工具
2022-09-27
zookeeper 设置 Acl 后 kafka 启动失败
2022-09-26
kafka增加安全配置报错问题
2022-09-26
arcgis soe 怎样才能正确的引入第三方jar包呢
2022-09-02
Java 操作 arcgis Server 10.5 初始化的时候闪退
2022-08-29
arcgis server 注册数据库卡住
2022-07-15
定时器执行一段时间之后就卡住了
2022-06-18
生产环境下访问速度慢,cpu、内存、磁盘利用率都不高问题
2022-03-07
生产环境很神奇的现象,一行代码用了3-4s
2022-03-04
各位一下,这个可以表示网络不好么
2022-02-18
访问网站速度时快时慢。cpu和内存指标都正常
2022-02-18
spark+hbase范围查询比传统数据库慢么?
2021-12-09
activiti 可以动态拓展会签人么
2021-11-16
为什么arcgis拓扑检测速度那么快呢?
2021-11-08
spark中的rdd还能查数据么
2021-08-20
生产环境下究竟是如何连接远程spark的呢?
2021-08-20
spark都是打成jar包执行么
2021-08-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人