212
1 min
契机
最近在项目中修改了个 redis 的超时问题,发现对 redis 的 api 以及实现原理都一知半解。这确实说不过去啊。
所以准备把 redis 学一学。最好是能深入到源码级别。
学习方式依然是准备找到开源社区,参与进来。
查找容易参与的相关项目
现在找到了一个可行的方向,就是在 calcite 去贡献一些 redis 的连接器的实现。
这样有助于我了解 calcite 和 redis 的一些操作协议。 从 redis 的连接和命令来学习 redis 就跟学习 mysql 类似吧。
关于 redis 本身的实现,我觉得学习会比较困难,首先是用 c 语言写的,其次是 redis 的启动核心实现的逻辑等等,这些还需要进一步安排学习。
启动 redis + calcite
查找可以贡献的点。
4
1 min
前言
最近 deepseek 大火,所以我打算也追逐一下热点,学习下大模型的相关知识内容,拓宽一下自己的知识边界。
4221
20 mins
自从上次想支持 calcite benchmark 函数之后,通过 calcite 和 polardb-x 的一些调查,想直接支持是比较困难的,
所以现在我转入了 calcite,考虑看能否直接提交一些 pr 来慢慢熟悉calcite 这个项目。
查找可以提交的 jira
找了一段时间,也没找到啥方便支持的jira
ps: 发现了一个标签,可以找到新手方便参与的项目 jira
project = CALCITE AND resolution = Unresolved AND labels in (newbie,easy-fix) ORDER BY priority DESC, updated DESC
扫了一眼代码,发现 calcite 是可以支持 mongo 的,那么我探究看看,能够用 calcite 接入我本地的 mongo 项目,然后看看能否做一些提升。
102
1 min
今天想通过 arthas watch 一个方法,并过滤入参,死活写不出来。折腾了半天终于搞出来了
例如我想监控这个方法
1
2
3
|
public <T> List<T> find(Query query, Class<T> entityClass) {
return this.<T>find(query, entityClass, this.determineCollectionName(entityClass));
}
|
toString 输出的结构体如下
@Query[Query: { "code" : "A1b4a_6437_task_0006", "tenantId" : { "$in" : ["athenaPaaSDesigner", "SYSTEM"] }, "version" : "2.0" }, Fields: { }, Sort: { }]
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public Document getQueryObject() {
Document document = new Document();
for(CriteriaDefinition definition : this.criteria.values()) {
document.putAll(definition.getCriteriaObject());
}
if (!this.restrictedTypes.isEmpty()) {
document.put("_$RESTRICTED_TYPES", this.getRestrictedTypes());
}
return document;
}
|
最终的方式如下,getQueryObject() 返回的是一个 map,然后通过 get 方法过滤并判空