- 博客(202)
- 收藏
- 关注
原创 IDEA 搭建 Otter 源码 DEBUG 环境
在适配 ShardingSphere-JDBC 同步 Otter 时,本地搭建 Otter Debug 环境记录。
2024-03-28 20:14:25 415
原创 MySQL驱动Add Batch优化实现
MySQL 驱动会在 JDBC URL 添加 rewriteBatchedStatements 参数时,对 batch 操作进行优化。本文测试各种参数组合的行为,并结合驱动代码简单分析。
2024-03-26 22:06:10 1172
原创 ShardingSphere XA事务无法恢复问题定位
在测试 ShardingSphere-Proxy 使用达梦数据库开启 XA 事务进行压测期间,kill 掉达梦数据库,等一段时间再重启达梦数据库,最终未完成的 XA 事务无法恢复,数据产生不一致。查看达梦上的 xid 一直有残留,没有被处理。使用 ShardingSphere-Proxy 结合其他主流数据库进行测试时无该问题。通过日志可以看到在压测期间,挂掉达梦数据库之后,有大量连接报错。节选错误日志如下:持续观察日志,能够看到 xa recover 查询出来的 xid 在不断增多。
2024-03-07 08:28:38 1025
原创 ShardingSphere-SQL 解析 Issue 处理流程
这是之前给社区写的 SQL 解析 Issue 的处理流程,可以帮助社区用户快速参与到 ShardingSphere-SQL 解析任务当中。
2024-03-05 08:42:21 1065
原创 ShardingSphere Narayana XA 事务不回滚问题定位
这个报错的含义简单来说就是这个事务已经在其他地方被标记成只可回滚了,不能再进行后续其他的操作。
2024-02-29 20:32:43 316
原创 ShardingSphere inline表达式线程安全问题定位
春节期间发现 ShardingSphere 事务 E2E 偶发执行失败问题,并且每次执行失败需要执行很久,直到超时。最终定位发现 inline 表达式存在线程安全问题。本文记录定位并解决 inline 表达式线程安全问题的过程。
2024-02-29 20:27:15 836
原创 Ubuntu Desktop 22.04 禁用自动更新
禁用后查看结果如下,后续再查看 /var/log/apt/history.log 就不会有软件自动更新的日志了。如果只禁用上面的更新,unattended-upgrades 还是会在后台更新软件包,也需要禁止。
2023-12-14 23:34:52 971
原创 使用 github api 批量创建 issues
Github 支持通过 github api 操作创建 issues 等操作。有一个开源库 https://github-api.kohsuke.org/ 做了封装,可以通过 Java api 方式直接调用。
2023-07-13 22:01:53 1231
原创 Polardbx环境搭建
Polardbx源码环境搭建拉取docker镜像启动DN&GMS进入容器 ,查看生成的密码:CN节点git clone https://github.com/ApsaraDB/galaxysql修改配置文件 :连接CN,执行sql操作。
2022-12-06 22:11:50 947 1
原创 安装ubuntu desktop
安装ubuntu desktop0.ubuntu desktop镜像下载Ubuntu desktop下载链接1.使用Rufus制作u盘镜像;2.开机F12进入boot页面,选择u盘启动;3.按照步骤安装,过程大概半个小时以内配置mac连接ubuntu desktop远程桌面1.安装包sudo apt updatesudo apt install vinogsettings set org.gnome.Vino require-encryption false2.在设置中开启屏幕共享
2022-04-22 22:11:45 3219 1
原创 mysql闪回
mysql闪回使用环境上误删了表数据,通过binlog2sql快速恢复.0.下载代码git clone https://github.com/danfengcao/binlog2sql.git2.安装依赖pip3 install -r requirements.txt1.进入脚本目录cd binlog2sql3.查询binlog文件并选择3.执行脚本进行数据恢复# --flashback表示:闪回# 用户名,密码# -d: database# -t: tables# --sta
2022-03-26 13:11:51 1431 1
原创 ClassGraph使用
ClassGraphClassGraph 直接读取类文件字节码,因此它可以读取关于类的所有信息,而无需加载或初始化类.<dependency> <groupId>io.github.classgraph</groupId> <artifactId>classgraph</artifactId> <version>${classgraph.version}</version></depend
2022-02-28 22:43:54 999
原创 JDK动态代理实现
使用1.动态代理类实现InvocationHandler接口,重写invoke方法2.通过要被代理的对象,创建一个代理对象并返回Proxy.newProxyInstance( order.getClass().getClassLoader(), order.getClass().getInterfaces(), this)3.目标对象中所有方法的访问,都会通过代理对象,可以在invoke方法中做自定义处
2022-02-22 23:25:37 1211
原创 Spring环境变量读取不到值
trace一下,连得上和连不上的区别.看打印日志里有一行显示连的本地的.一个ok的连得远程的.怀疑env没取到.查看获取env的地方,从 Environment -> propertyResolver 里获取.然后取的env.一个确实有.另一个没有.仔细debug观察那个没有的…是因为里面有" Xxx" 空格…获取property入口String url = applicationContext.getEnvironment().getProperty(“xxx”);environme
2022-01-21 00:40:21 1911
原创 instanceof的一种替代方案
instanceof的一种替代方案在使用Javaparser api的过程中,会涉及很多使用instanceof判断类型,然后强转的操作.类似下面的代码,看起来很啰嗦.// 判断类型if (node instanceof TypeDeclaration) { // 类型声明 // do something with this type declaration} else if (node instanceof MethodDeclaration) { // 方法声明
2022-01-01 11:36:31 1054
原创 markdown解析
markdown解析demo1.解析markdown里的所有代码块.通过创建visitor,收集markdown里的代码片段并分类.public static void main(String[] args) throws IOException { Parser parser = Parser.builder().build(); try (InputStreamReader reader = new InputStreamReader(new FileInputStream(SR
2021-12-05 10:42:20 685
原创 JSqlParser使用
JSqlParser使用什么是JSqlParserJSqlParser 是一个 SQL 语句解析器。它将 SQLs 转换为可遍历的 Java 类层次结构。如何使用JSqlParser1.添加依赖<dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>4.2</version
2021-12-05 10:38:50 1417 2
原创 Javaparser使用
Javaparser使用什么是Javaparser分析,转换,生成Java代码.Javaparser库为你提供了一个 Java 代码的抽象语法树(Abstract Syntax Tree)。AST 结构允许您以一种简单的编程方式使用 Java 代码。为什么需要Javaparser相对于antlr4,Javaparser提供了更多的API,专门操作Java文件,使用起来更简单.使用1.解析多个Java文件/*** 解析工程下的所有Java文件** @param path 工程根目录*
2021-12-04 10:21:38 101649 1
原创 Dubbo网卡注册
Dubbo网卡注册服务发布时,需要将自身的IP地址上报到注册中心,供服务消费者去发现.获取ip地址逻辑获取网卡逻辑 ServiceConfig#findConfigedHosts()方法 获取DUBBO_IP_TO_BIND配置 getValueFromConfig()方法: 从env,property里获取配置 若有配置,则校验是否是非法本地地址,若是则抛异常 isInvalidLocalHost() 是loca
2021-11-21 13:33:26 1302
原创 Linux pidstat命令
什么是pidstat监控(统计)进程的cpu,内存,IO,线程情况.pidstat使用安装pidstatapt-get install sysstatpidstat参数-u: 默认参数, 进程的 cpu.包括用户空间,内核空间cpu占用百分比.-r: 进程的内存.-d: 进程的 IO-p: 指定进程号-w: 进程的上下文切换.包括主动上下文切换/被动上下文切换次数.-t: 线程...
2021-10-20 23:20:03 128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人