Java 开发

线上定时任务全部罢工

Java 开发

gradle 项目解决 jar 包冲突

Java 开发

压测工具 JMeter 实操

中间件

ZooKeeper 简单概括

Java 开发

junit5 下 wiremock 正确使用方式

Java 开发

分布式主键调研

Java 开发

SpringBoot 中 @Scheduled 的执行原理

12月10日 · 2019年

MySQL 常用锁和 MVCC 总结

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

基于 Redis 实现分布式锁

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

压测工具 JMeter 实操

58 0
Apache JMeter是一个Apache项目,可以用作负载测试工具,用于分析和衡量各种服务的性能,重点是Web应用程序。 JMeter可用作JDBC数据库连接,FTP,LDAP,Web服务,JMS,HTTP,通用TCP连接和OS本机进程的单元测试工具。...
12月5日 · 2019年

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

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

数据迁移后的一致性校验

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

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

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

本站事故复盘

68 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年

ZooKeeper 简单概括

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

gradle 项目解决 jar 包冲突

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

压测工具 JMeter 实操

58 0
Apache JMeter是一个Apache项目,可以用作负载测试工具,用于分析和衡量各种服务的性能,重点是Web应用程序。 JMeter可用作JDBC数据库连接,FTP,LDAP,Web服务,JMS,HTTP,通用TCP连接和OS本机进程的单元测试工具。...
12月3日 · 2019年

SpringBoot 中 @Scheduled 的执行原理

90 0
前面有篇文章是“线上定时任务全部罢工”,本文主要从代码的角度分析下原因。注解 @Scheduled 的执行原理 1、加载所有使用 @Scheduled 注解的类及方法。Spring 首先会通过类 ScheduledAnnotationBeanPostProcessor 的 postProcessAfterInitialization 方法去初始化 bean,待初始化完 bean 后,就会拦截所有用到“@Scheduled”注解的方法,进行调度处理,具体细节请看下面代码:.....
11月30日 · 2019年

Spring 本地事务

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

junit5 下 wiremock 正确使用方式

64 0
场景描述 通过 wiremock 方式模拟远程接口调用时,发现注解 @Rule 失效,即下图代码无效:@Rulepublic WireMockRule wireMockRule = new WireMockRule(8080);...
11月30日 · 2019年

分布式主键调研

65 0
近期要对一个亿级别的表分库分表,一个很重要的环节就是要选定一个分布式主键的生成方式,本文主要总结下对分布式主键调研的结果。分布式主键生成方式主要分为两大类:中心化、去中心化。...
数据库More
11月29日 · 2019年

数据迁移后的一致性校验

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

MySQL 常用锁和 MVCC 总结

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

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

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

基于 Redis 实现分布式锁

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

ZooKeeper 简单概括

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

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

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

RabbitMQ 发消息报错 Listener not registered

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

代码实现特色圆形 logo

40 0
代码实现特色圆形 logo...
12月1日 · 2019年

更新宝塔导致无法访问

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

鼠标点击显示圆圈动画

54 0
今天,给大家介绍一款 wordpress 鼠标点击特效,当鼠标单击网页...
11月29日 · 2019年

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

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

wordpress 后台登录添加验证码

92 0
wordpress后台登录添加验证码...
11月26日 · 2019年

代码实现网站音乐播放器

54 0
代码实现网站音乐播放器...