跳至主要內容
Clickhouse添加bitmap分页函数

起因

在做标签引擎的时候,我们在采用了bitmap存储对象id,基础的结构如下

标签类型 标签值 对象id bitmap
性别 [1,2,3]
性别 [8,9,10]

表如下:

create table if not exists label_string_local on cluster clickhouse_cluster
(
    label_type  String comment '标签id',
    label_value String comment '标签值',
    object_bitmap AggregateFunction(groupBitmap, UInt32) comment '标签值'
)
    engine = AggregatingMergeTree PARTITION BY label_type
        ORDER BY (label_type, label_value)
        SETTINGS index_granularity = 8192;

DHB大约 2 分钟Clickhouse源码Clickhouse
解决redis编译找不到siginfo_t

编译redis出现

server.h:2757:30: error: unknown type name ‘siginfo_t’
 2757 | void sigsegvHandler(int sig, siginfo_t *info, void *secret);

打开Makefile找到FINAL_CFLAGS在后面追加-D_POSIX_C_SOURCE=199309L


DHB小于 1 分钟Redis源码Redis
arthas特殊用法

官方issue中提供的特殊用法:https://github.com/alibaba/arthas/issues/71

idea插件:arthas idea

mvc项目获取spring配置

watch org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandlerMethod '{target.getApplicationContext().getEnvironment().getProperty("spring.datasource.url")}'  -n 5  -x 3

DHB小于 1 分钟JavaArthas
Spring Gateway堆外内存溢出问题定位

公司使用Spring Gateway作为业务网关,一直存在一个堆外内存泄露的疑难杂症。从同事手上接手过来后最终解决了这个问题。


DHB大约 3 分钟JavaSpringSpring Gateway
解决redis集群内部ip问题

背景

服务上云,内网的redis集群,通过ip映射的方式把redis的端口映射到公网(白名单),公网的机器通过lettuce等客户端连接的时候,lettuce客户端的集群模式是先通过cluster nodes 获取节点拓扑 ,在操作key的时候先通过算法定位到key在哪个节点,获取key如果重定向到其它节点的话,就会从对应的节点获取。这就会导致获取到的ip是内网的ip,公网连接不上的问题,以下是通过iptables的方式解决。


DHB大约 3 分钟RedisRedisIptables
Mysql生产死锁问题定位

生产上一个消费mq消息的服务出现了死锁问题,通过命令获取到的mysql日志如下:


DHB大约 2 分钟MysqlMysqldeadlock
apisix基于docker开发java插件

环境准备

apisix不支持windows,加上apisix的runner插件使用的协议不支持windows,所以需要在Linux环境下开发,有两个选择

  1. 使用Linux服务器部署apisix,通过ssh远程开发
  2. 使用windows + wsl2,本地开发【推荐】

两种方案IDEA都支持

使用docker快速搭建开发环境

git clone https://github.com/apache/apisix-docker.git

DHB大约 7 分钟JavaApisixJava
数据库误操作数据恢复

前提

mysql必须有以下配置

binlog_format = row
binlog_row_image = full # 默认是full

实战

假设有一张用户表,结构如下

create table tb_user
(
    id       bigint primary key not null auto_increment,
    username varchar(100)       not null,
    pwd      varchar(100)       not null,
    sex      varchar(10)        not null
);

DHB大约 2 分钟MysqlMysqlFlashback
Jedis cluster模式连接出现No more cluster attempts left

同事在测试环境jedis cluster模式出现redis.clients.jedis.exceptions.JedisClusterMaxAttemptsException: No more cluster attempts left.报错,找到我帮忙定位下问题

通过堆栈信息找到对应的源码位置redis.clients.jedis.JedisClusterCommand#runWithRetries


DHB小于 1 分钟JavaJavaJedisRedis