跳至主要內容
DHB

DHB

分享技术丨记录生活

LINUX DO
LINUX DO
新的理想型社区
ra
数据库工具,mysql数据恢复,binlog转sql
redis 6.x源码阅读
阅读redis源码,在源码中中文注释以及一些例子代码
mapstruct-helper
简化mapstruct使用
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
一个开源的chatgpt镜像|ai-connect

新开发的一个小玩意,目前支持chatgpt镜像

计划

  • [ ] chatgpt

    • [x] 镜像基本功能
    • [ ] 会话隔离
    • [ ] 转发代理
  • [ ] 管理面板

    • [ ] 基础用户管理
    • [ ] chatgpt token管理
  • [ ] Claude

    • [ ] 镜像基本功能

DHB小于 1 分钟ProjectOpenaiChatgpt
解决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