自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (3)
  • 收藏
  • 关注

原创 pg逻辑复制和数据同步

本文主要讲如何通过pg的逻辑复制功能,利用kafka,同步数据到第三方数据库(比如elassticsearch)。pg逻辑复制关于pg逻辑复制需要先看以下文章:《PostgreSQL变更事件捕获 》《pg的时间线解析》逻辑复制几个比较重要的概念:复制标识逻辑复制设计之初,是为了将主库数据实时同步到从库的,主库是发布方,从库是订阅方,那么发布方发布一条更新消息,订阅方也就是从库需要知道更新的是哪一行记录,所以需要一个复制标识。复制标识总共有default(主键做默认标识)、index、fu

2021-10-30 16:16:56 1902

原创 实时业绩排行榜设计

业务场景抢报活动期间,实时统计省区、分站、学规业绩(业绩属于科次维度),并以业绩大屏排行榜形式展示(每个业绩大屏统计规则都会不一样)。学生活动期间下单买课后,会发生换课,退课,换课和退课的科次不参与业绩统计,也可能业绩归属发生变更(比如需要刷脚本改业绩归属),还可能业绩大屏统计规则变更,导致该业绩大屏业绩重新统计计算。这些因素都需要考虑进设计中。设计思路首先,先看下面这张图,将用这张图展开来说说设计的思路:1、采用消息队列通知业绩归属在大屏活动开始到结束期间,下单归属业绩,换课、退课

2021-10-30 16:07:43 393

原创 Postgresql的vacuum机制一些理解

我们知道,postgresql(以下简称pg)多版本控制mvcc和oracle有所不同,oracle通过回滚段实现,数据更新之前先将旧版本数据写入回滚段,然后再将待更新数据写入原data block,而pg mvcc则是当元组发生更改时,直接在原数据data page插入一条新的记录,同时将原元组逻辑上标识为删除,这些标识为删除的元组也叫死元组。这就导致当进行多次更新和删除操作,磁盘上会多出很多死元组,占用了很多磁盘空间并且导致系统性能下降。vacuum的作用则是回收这些这些无效的空间。vacuum命令

2020-12-27 14:25:25 1240

原创 JAVA多线程之FutureTask源码解读

使用过Java线程池的应该都知道,在java.util.concurrent有个ExecutorService的线程池接口,通过这个接口先线程池提交任务,获取任务结果,关闭线程池等等操作。而关于任务执行结果的获取,就不得不提FutureTask这个类。本文从源码的角度分析,线程池是如何通过FutureTask执行多线程任务,又是如何获取多线程执行结果的。使用多线程,我们多数是使用Executo...

2019-06-18 23:46:07 192

原创 JAVA线程本地存储ThreadLocal的源码分析

在jdk的api文档中,是这么描述ThreadLocal类的:This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has i...

2019-06-15 12:21:49 152

原创 使用merge into实现千万级别数据迁移

之前项目需求,需要将另一个系统的数据迁移到当前系统的数据库中。数据量大概4000w,项目所使用的数据库是DB2。当时我们采用sql脚本进行迁移,其中迁移的核心sql语句就是使用merge into语句。 merge into语法如下:MERGE INTO <target> USING <source> ON <match-conditio...

2019-06-14 21:00:56 3350

原创 git的常规使用和冲突解决

克隆仓库git clone -b 分支名 仓库地址若不使用-b参数,默认克隆master分支代码。git的使用1、提交代码前先将远程分支代码pull到本地git pull2、提交代码添加待提交代码git add /filepath/filename 查看提交的文件git status注释本次提交代码git commit -m "注释"push到远程...

2019-06-14 20:59:39 409

原创 redis主从复制和无限同步问题

一 主从复制 主从复制,又称主从同步,分为增量同步和全量同步。增量同步slave会从master的复制积压缓存去中读取偏移数据,而全量同步,master会生成一个rdb文件,并传输给slave,slave会清空数据库,并从这个rdb文件重新导入数据。二 全量同步的条件以下情况从节点会做全量同步:1. 备节点第一次连到主节点。2. 节点重启,主节点runid会变,备节点ru...

2019-05-03 21:26:02 1606

原创 mybatis学习笔记整理--mybatis的基本组成

mybatis的基本组成1、SqlSessionFactoryBuilderSqlSessionFactoryBuilder根据配置信息生成SqlSessionFactory。可以说它的作用就是一个构建器,一旦构建了SqlSessionFactory,它的作用就已经完结,失去了存在的意义。此时我们就应该废弃它,回收它,所以它的生命周期只存在于方法周期。2、SqlSessionFacto...

2019-03-08 23:30:59 130

原创 docker容器的导出和导入

本文讲述的是如何从服务器A将运行的容器迁移至另一台服务器B上。1  服务器A导出容器1)使用commit把运行的容器打包成镜像docker commit -a "作者" -m "注释" 容器id REPOSITORY:TAG2)用export或者save把镜像导出成tar包docker save -o xxx.tar REPOSITORY:TAG 注:REPOSIT...

2019-01-27 22:41:09 595

原创 redis哈希表的rehash和CPU占用高的问题

在某银行双十一前,生产上进行压测碰到了一个问题:在某一时刻,CPU使用率占用比非常高,达到了80%。而在这一时刻,redis响应时间非常慢,导致了这一时刻大笔交易发生了超时。经一系列分析,找出CPU使用率过高的原因:redis上存在一个以天为单位的set集合类型的大key,正是由于这个大key做rehash,导致CPU使用率占用过高。在讲rehash问题,先讲讲字典和集合类型。字典re...

2018-12-31 22:45:08 1258

原创 使用shell脚本优雅删除redis的大key

本文关于大键(key)的描述参考博客:https://blog.csdn.net/zxl2016/article/details/78876016理解大key理解redis中的大key,可从两方面的来理解:1、时间复杂度,2、空间复杂度。前者主要表示Redis键的占用内存大小;后者表示Redis集合数据类型(set/hash/list/sorted set)键,所含有的元素个数。内存空间复...

2018-07-18 21:36:13 3529 1

原创 linux使用shell脚本定期备份redis的rdb文件

一 redis相关命令1、bgsave命令redis bgsave 命令用于在后台异步保存当前数据库的数据到磁盘。bgsave命令执行之后立即返回 OK ,然后 redis fork 出一个新子进程,原来的 redis进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。即:bgsave命令执行后,会创建一个进程,该进程会根据配置文件redis.conf的dir创建一...

2018-07-17 20:45:52 2614

原创 Redis Scan命令

scan命令参数解释Scan cursor [match pattern] [count count]cursor:游标,每次scan都会返回一个游标,用以继续下次的扫描。游标从0开始遍历,到0结束遍历。match:匹配模式。count:返回数量,默认是10。但scan不一定返回指定的数量。示例:scan 0 match  A*  count 20。执行该命令,会扫描匹配A开头...

2018-07-08 22:38:23 1998

原创 Java线程池的使用

一、线程池的组成   一个线程池包括以下四个基本组成部分:1、线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务; 2、工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务; 3、任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执...

2018-07-08 21:53:33 145

原创 中缀表达式转为后缀表达式

中缀表达式即通用的算术或逻辑公式表示方法。如(1+2)*3-4。 后缀表达式即指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)。如中缀表达式(1+2)*3-4的后缀表达式为12+3*4-。在将中序表达式转换为后序表达式过程中,使用到栈,运算符优先级高的先输出。下面算法中,将用icp来表示当前扫描到的运算符的优先级,该运算符进

2017-09-24 22:39:53 1101

mysql jdbc.connect/j

将该文件解压,并把mysql-connector-java-[version]-bin.jar包放入jdk的jre/lib/ext文件夹中,就可以Java编程使用mysql数据库了。

2015-11-22

Samba rpm安装包

Linux Samba服务器,用于windows和Linux之间上传文件

2015-11-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除