Java 开发 / 数据库

Error running jOOQ code generation tool: com.mysql.cj.jdbc.Driver..

算法

简单递归问题

Java 开发

异步并发利器:CompletableFuture、parallelStream

Java 开发

Spring 本地事务

中间件

ZooKeeper 简单概括

Java 开发

压测工具 JMeter 实操

算法

数据结构:跳表

1月27日 · 2020年

通过 Jdbc + Job 解决跨库大表数据迁移

128 0
将 scala 项目重构为 Java 微服务,在进行读迁移时,其中有一块业务数据量是亿级别的,需要进行跨库数据迁移(注意:表结构发生了很大变化),并且在迁移过程中尽量做到不停服迁移。针对亿级别的数据量级,肯定不能使用脚本迁移的方式迁移,更不可能使用 mysqldump 命令进行导入导出进行数据迁移。网上还有以导入导出文件的形式迁移百万级数据,但是这个操作需要修改 mysql 的配置,保险起见,直接 pass ...最终,选择通过 Jdbc 配合 Job 在双写阶段进行数据迁移,待数据迁移基本完毕,并且数据一致性校验没问题后,再进行读迁移的上线(此时,只需要业务方上线,将读切换到现在的微服务即可)。...
1月9日 · 2020年

@Transactional 事务提交之后执行 @Async 修饰的方法

178 0
一个 @Transactional 修饰的方法A 的内部要调用另一个用 @Async 修饰的方法B,并且方法B 要在方法A 的事务提交之后,异步执行,大概就是下面代码这样。方法A 和 方法B 假如在同一个类中,则方法B 的 @Async 注解会失效:首先解释下 @Transactional 注解失效的原因:Spring 在扫描 bean 的时候会扫描方法上是否包含 @Transactional 注解,如果包含.....
12月29日 · 2019年

数据结构:跳表

183 0
本文主要总结下自己学习跳表时的一些笔记,主要包含跳表的由来、时空复杂度、增删改查和具体应用四个方面。二分查找的数据结构是数组,利用数组随机访问查找的时间复杂度是 O(logn)。如果数据结构是链表,可以达到这样的速度吗?答案是可以的,只是需要对链表进行改造,改造之后的结构就是跳表(又名跳跃表),是一种动态数据结构,可以支持快速的插入、删除、查找、按范围查找,功能类似于红黑树,Redis 中的有序集合使用的就是跳表(后文会说)。...
11月29日 · 2019年

ZooKeeper 简单概括

187 0
Apache ZooKeeper是Apache软件基金会的一个软件项目,他为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。ZooKeeper曾经是Hadoop的一个子项目,但现在是一个独立的顶级项目。ZooKeeper的架构通过冗余服务实现高可用性。因此,如果第一次无应答,客户端就可以询问另一台ZooKeeper主机。ZooKeeper节点将它们的数据存储于一个分层的命名空间,非常类似于一个文件系统或一个前缀树结构。客户端可以在节点读写,从而以这种方式拥有一个共享的配置服务。更新是全序的。使用ZooKeeper的公司包括Rackspace、雅虎和eBay,以及类似于象Solr这样的开源企业级搜索系统。...
12月1日 · 2019年

本站事故复盘

305 2
2019年11月23日上午9点左右,在没有手动备份的前提下,升级了 MySql 数据库(从5.1到5.7)半小时后,升级结束,网站无法登陆,显示“error establishing a database connection”当时没多想,以为是升级后不兼容导致的,又切换到了5.1版本,网站还是报同样的错误当时由于有别的更重要的事,故先放弃了折腾下午14点左右,还未回家,尝试用手机登陆宝塔面板继续解决,搞了半天无果,故询问宝塔管理员,他让我在服务器上执行ps aux|grep mysql,可是手机端没有尝试过ssh登陆,故暂时放下了手机下午17点左右赶回家,开始查看原因,最后发现 MySql 压根没有安装成功,我又在原版本5.1和新版本5.7之间尝试切换了几次,都无法连接 phpmyadmin...晚上20点左右,打算重装宝塔,先备份数据库,瞬间备份完成,当时心惊了一下,赶紧查看备份好的文件,才几十B,完了,数据全没了..赶紧查看每周通过 shell 脚本备份的数据库压缩包,什么鬼,才几百B,解压,发现里面竟然只有一张用户表..2年的站就这样被自己搞没了......
11月29日 · 2019年

RabbitMQ 发消息报错 Listener not registered

4617 1
在完成 MQ 的发送方代码后,通过单元测试(mock 方式)发现发送方代码是没有问题的,但是通过 JOB 发送消息就一直提示“Listener not registered..”,又通过 http 直接调用接口来发送消息,也是提示“Listener not registered..”,然后各种检查配置、各种谷歌都无济于事,最后只能 debug 源码了。...
12月5日 · 2019年

MySQL 中 redo log、undo log、binlog 的总结

2659 1
本文主要总结下重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)的概念。redo log 是物理日志,undo log 和 binlog 是逻辑日志,物理日志的恢复速度远快于逻辑日志。innodb 事务日志包括 redo log 和 undo log,redo log 是重做日志,提供前滚操作,undo log 是回滚日志,提供回滚操作。...
11月29日 · 2019年

数据迁移后的一致性校验

396 0
目前正在对 scala 项目(某块业务)重构,重构成 Java 微服务,业务、表设计都有些许变化,其中涉及到数据迁移,简单来说就是从老表迁到新表(表结构发生了变化)。为了保证迁移前后数据的一致性,需要进行一些必要的验证。本文主要讨论下自己在进行数据一致性校验时用到的方法,仅仅作为一种数据验证的思路,分享给大家,内容可能有一些瑕疵,欢迎大家指正。...
Java 开发More
11月29日 · 2019年

Prometheus 监控的开关配置

395 0
核心服务需要集成 Prometheus 监控,为了防止 Prometheus 监控对接口性能的影响以及灵活的控制监控的接入与解除,故增加一个开关的配置来控制启用和禁用监控服务。本文主要介绍监控开关的配置步骤及中途遇到问题的解决过程。在进入正文前,可先去了解下 Prometheus 监控的介绍及接入步骤,这不是本文的讨论范畴。...
1月9日 · 2020年

@Transactional 事务提交之后执行 @Async 修饰的方法

178 0
一个 @Transactional 修饰的方法A 的内部要调用另一个用 @Async 修饰的方法B,并且方法B 要在方法A 的事务提交之后,异步执行,大概就是下面代码这样。方法A 和 方法B 假如在同一个类中,则方法B 的 @Async 注解会失效:首先解释下 @Transactional 注解失效的原因:Spring 在扫描 bean 的时候会扫描方法上是否包含 @Transactional 注解,如果包含.....
11月30日 · 2019年

Spring 本地事务

270 0
本文总结了 Spring 本地事务的使用方式和注意点,为后面总结“分布式事务“的文章做铺垫。本地事务传播行为.....
12月2日 · 2019年

gradle 项目解决 jar 包冲突

285 0
现象:当添加 jar 包 "org.apache.shardingsphere:sharding-jdbc-core:4.0.0-RC2"(仅用作举例) 后,idea给出下方的提示,并且很多类文件报错,去掉这个 jar 包后,又恢复正常。故猜测应该是 jar 包冲突导致的。...
12月15日 · 2019年

Error running jOOQ code generation tool: com.mysql.cj.jdbc.Driver..

231 0
今天在用 JOOQ 生成代码的时候,即运行 mvn clean install 命令时,出现以下错误,代码中指定的驱动明明是“com.mysql.jdbc.Driver”,但是报错信息中显示的确是驱动“com.mysql.cj.jdbc.Driver”。经搜索,com.mysql.jdbc.Driver 是 mysql-connector-java 5 中的com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6 及以上版本中的.....
12月1日 · 2019年

线上定时任务全部罢工

348 0
针对某块业务有两个 JOB,一个是全局处理的 JOB(每天0点执行),一个是部分处理的 JOB(每5分钟执行一次)。当晚上线时,由于已经过了0点,也就没有看这个定时任务是否正常执行(查看日志,其它定时任务都在正常执行)。隔天早上,看日志时,发现所有的定时任务全部罢工了,也没有任何报错信息。然后汇报组长问题,组长重启服务后又全部正常了(重启真是万能药呀)。后又看了看测试环境的定时任务是否正常,结果也全部罢工了,很奇怪,当时自测时,每个定时任务都是没问题的(后文揭晓)。但是具体什么原因导致的,当时真的不清楚。...
数据库More
12月10日 · 2019年

MySQL 常用锁和 MVCC 总结

289 0
前段时间,在 scala 项目的某块业务迁移到微服务上线前,测试环境意外地发生了两次死锁问题,触发死锁的原因不同,一次是因为数据迁移不到位,由更新操作导致,解决方式是重写 update 方法。另一个是因为前人写的代码太过于随意,一个事务中包含了多个模版方法,由不同的子类去实现方法,后人在实现时,有可能并不知道自己实现的方法是被嵌套在事务中的,从而扩展了很多操作,操作中不乏有耗时的远程调用,从而一个小事务被慢慢积累成一个大事务,最终导致了死锁,由于老业务(scala 项目)很复杂,当时解决的方式是将死锁的方法异步处理。从那之后,自己断断续续做了一些关于 MySQL 并发相关的笔记,本文先梳理下 MySQL 控制并发访问的两种手段(MVCC 和几种常用锁)。...
1月27日 · 2020年

通过 Jdbc + Job 解决跨库大表数据迁移

128 0
将 scala 项目重构为 Java 微服务,在进行读迁移时,其中有一块业务数据量是亿级别的,需要进行跨库数据迁移(注意:表结构发生了很大变化),并且在迁移过程中尽量做到不停服迁移。针对亿级别的数据量级,肯定不能使用脚本迁移的方式迁移,更不可能使用 mysqldump 命令进行导入导出进行数据迁移。网上还有以导入导出文件的形式迁移百万级数据,但是这个操作需要修改 mysql 的配置,保险起见,直接 pass ...最终,选择通过 Jdbc 配合 Job 在双写阶段进行数据迁移,待数据迁移基本完毕,并且数据一致性校验没问题后,再进行读迁移的上线(此时,只需要业务方上线,将读切换到现在的微服务即可)。...
11月29日 · 2019年

数据迁移后的一致性校验

396 0
目前正在对 scala 项目(某块业务)重构,重构成 Java 微服务,业务、表设计都有些许变化,其中涉及到数据迁移,简单来说就是从老表迁到新表(表结构发生了变化)。为了保证迁移前后数据的一致性,需要进行一些必要的验证。本文主要讨论下自己在进行数据一致性校验时用到的方法,仅仅作为一种数据验证的思路,分享给大家,内容可能有一些瑕疵,欢迎大家指正。...
12月15日 · 2019年

Error running jOOQ code generation tool: com.mysql.cj.jdbc.Driver..

231 0
今天在用 JOOQ 生成代码的时候,即运行 mvn clean install 命令时,出现以下错误,代码中指定的驱动明明是“com.mysql.jdbc.Driver”,但是报错信息中显示的确是驱动“com.mysql.cj.jdbc.Driver”。经搜索,com.mysql.jdbc.Driver 是 mysql-connector-java 5 中的com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6 及以上版本中的.....
12月5日 · 2019年

MySQL 中 redo log、undo log、binlog 的总结

2659 1
本文主要总结下重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)的概念。redo log 是物理日志,undo log 和 binlog 是逻辑日志,物理日志的恢复速度远快于逻辑日志。innodb 事务日志包括 redo log 和 undo log,redo log 是重做日志,提供前滚操作,undo log 是回滚日志,提供回滚操作。...
中间件More
11月29日 · 2019年

RabbitMQ 发消息报错 Listener not registered

4617 1
在完成 MQ 的发送方代码后,通过单元测试(mock 方式)发现发送方代码是没有问题的,但是通过 JOB 发送消息就一直提示“Listener not registered..”,又通过 http 直接调用接口来发送消息,也是提示“Listener not registered..”,然后各种检查配置、各种谷歌都无济于事,最后只能 debug 源码了。...
11月29日 · 2019年

ZooKeeper 简单概括

187 0
Apache ZooKeeper是Apache软件基金会的一个软件项目,他为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册。ZooKeeper曾经是Hadoop的一个子项目,但现在是一个独立的顶级项目。ZooKeeper的架构通过冗余服务实现高可用性。因此,如果第一次无应答,客户端就可以询问另一台ZooKeeper主机。ZooKeeper节点将它们的数据存储于一个分层的命名空间,非常类似于一个文件系统或一个前缀树结构。客户端可以在节点读写,从而以这种方式拥有一个共享的配置服务。更新是全序的。使用ZooKeeper的公司包括Rackspace、雅虎和eBay,以及类似于象Solr这样的开源企业级搜索系统。...
11月29日 · 2019年

RabbitMQ 发送端和消费端的总体设计

258 0
使用场景:系统解耦、异步、多服务订阅消息、消息可靠性、消息时序性 发送端:.....
12月7日 · 2019年

基于 Redis 实现分布式锁

280 0
分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现,如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往需要互斥来防止彼此干扰来保证一致性。由于线上出现了并发问题,导致出现了很多脏数据,分布式环境下,考虑到乐观锁无法解决,也只能请教于分布式锁了。实现分布式锁的方式有:数据库乐观锁、基于 Redis 的分布式锁.....
算法相关More
12月29日 · 2019年

数据结构:跳表

183 0
本文主要总结下自己学习跳表时的一些笔记,主要包含跳表的由来、时空复杂度、增删改查和具体应用四个方面。二分查找的数据结构是数组,利用数组随机访问查找的时间复杂度是 O(logn)。如果数据结构是链表,可以达到这样的速度吗?答案是可以的,只是需要对链表进行改造,改造之后的结构就是跳表(又名跳跃表),是一种动态数据结构,可以支持快速的插入、删除、查找、按范围查找,功能类似于红黑树,Redis 中的有序集合使用的就是跳表(后文会说)。...
12月13日 · 2019年

简单递归问题

219 0
需求 给定一个十进制数,每一位要么是 0,要么是 1,为 1 的那一位保持不变,为 0 的那一位可以为 0 也可以为 1,求所有的组合场景。示例:给定 int num = 1001,则 targets = {1001, 1101, 1011, 1111}......
网站建设More
11月26日 · 2019年

网站欢迎语弹框

218 0
网站欢迎语弹框...
11月29日 · 2019年

刷新主题页面更换背景图片

263 0
教程:将以下代码添加到 header.php 中的 </...
12月1日 · 2019年

更新宝塔导致无法访问

220 0
之前使用的是3.xx版本的宝塔,然后在宝塔面板上点击了更新的按钮,结果宝塔直接无法访问了,首先检查了服务器安全组配置是没问题的(8888 端口是放通的),然后通过如下图的命令查看,发现 8888 端口没有被监听到,确定应该是宝塔自身问题导致的,难道是我升级的姿势不对?...
11月26日 · 2019年

app 端底部菜单栏源码

258 0
app 端底部菜单栏源码...
11月26日 · 2019年

代码实现特色圆形 logo

221 0
代码实现特色圆形 logo...
11月26日 · 2019年

wordpress 后台登录添加验证码

292 0
wordpress后台登录添加验证码...