本文分为三个部分 产品应用,行业应用 和基础知识

从完成到完美,别想太多,只管去做。

这一期没有什么内容,我依然发出来了,只为重启,上一阶段解释。 马上开启下一阶段。

开始时间:2023-07-01 结束时间: 一. 行业 从石器时代到黄金时代 一. 基础知识:从青铜到白银经历问题

一 、站在巨人肩膀上

二. 从石器时代到黄金时代

一、公开课[资料]

- 阅读书籍:leveldb 精通

https://github.com/watchpoints/leveldb https://leveldb-handbook.readthedocs.io/zh/latest/basic.html 进展:1

  • Go 开放课程:MIT 经典课程 《分布式系统》

https://learnku.com/go/wikis/41239

  • MIT 6.84: Distributed Systems

官方地址:https://pdos.csail.mit.edu/6.824/ 进展:0

二. TIdb

:::warning 为什么要看tidb,自己一个担心,前面无数人在 做,自己先做晚来了? 然后等待3年 5年什么都不事情?然后看看手机电影, 为纠这个态度,从消息态度变成积极态度, 一个社区无数文档,无数参与 着说明有价值的。 你认为正确行业,你认为正确社区,你认为正确的, 为什么行动呢?着就是最大问题? 有正确,有价值的不去做,反而去做没有用 事情。破冰 :::

如何成为 TiFlash Contributor?

https://asktug.com/t/topic/693824

资料 作者 地址
High Performance TiDB 课程学习计划 官方 https://docs.qq.com/sheet/DY3RueHVEd1JQV1Vi?tab=BB08J2
TiFlash 往期源码解读 官方 https://asktug.com/t/topic/903372
Talent Plan 2021 KV 社区 https://learn.pingcap.com/learner/course/510001
https://github.com/tikv/tikv
### TiDB 社区技术月刊
七大模板 https://tidb.net/book/tidb-monthly/
TiKV 源码阅读三部曲 社区 https://mp.weixin.qq.com/s/HgflwnZZMHXaIsFV3PdGAg
### issue
https://github.com/pingcap/tidb/issues/7623
https://github.com/tikv/tikv/issues/8650
【源码类学习资源大放送】TiDB、TiKV、TiFlash、Chaos Mesh 等源码解读补给站

| | https://asktug.com/t/topic/693645/1 | | 最近学习数据库源码 遇到的疑惑,希望过来人帮忙解答 | | https://asktug.com/t/topic/1000469?_gl=1fkkx3_gaMjI2MTMzMTkyLjE2NzM5MjYyNDI._ga_5FQSB5GH7F*MTY3NzE1NzkzOS4yMi4wLjE2NzcxNTc5MzkuMC4wLjA. |

挑战:TiKV raft engine日志丢失Tikv恢复失败

https://asktug.com/t/topic/1006099

第一步: 盯着问题根本无法解决,凭空想想不出来的问题变为tikv如何加载recover日志的。

挑战2:

Incorrect data conversion · Issue #44219 · pingcap/tidb

1
2
3
CREATE TABLE t1 (c1 INT UNSIGNED NOT NULL);
INSERT INTO t1 VALUES (0);
SELECT c1 > - '7' FROM t1;

开发进展:

提问3: tidb 如何禁止开启启动 分类:运维部署 回答:

提问4:我的SQL走tiflash TIFLASH sql优化问题

分类:架构设计 回答:

三 ob社区

提问1: 函数ST_ExteriorRing已经新增了,ST_ExteriorRing函数都是boost geometry 不需要自己实现把? https://dev.mysql.com/doc/refman/5.7/en/gis-polygon-property-functions.html#function_st-exteriorring 分类:sql引引擎 答: 所有的函数的都是调用boost库的,我看MySQL也是这么做的,当时MySQL还写了一个文章为什么要用

提问2: _ 关于__all_virtual_server_stat表的各字段的含义描述,是从什么渠道了解到的呢,找了官方文档没找到在哪

分类:多租户 回答:无

提问3: 我这边三台服务器,有一台数据被清除了,集群起不来,这种有办法处理吗,每台服务器上只有一个节点

分类:高可用 !!!! 回答:

gdb 设置断点很容易造成选举失败,推荐单元测试

可以用debug sync

四 TDengine

序号 模块 提问 回答
1 技能 通过招聘看要求 必须掌握英语。
2 理念


五 。操作系统

三. 开发者手册:从青铜到白银经

跑吧 Linux内核(入门篇)

要点1:Linux系统调用:truncate

函数:

int truncate(const char *path,off_t length);

https://man7.org/linux/man-pages/man2/truncate.2.html

1
2
3
 If the file previously was larger than this size, the extra data
       is lost.  If the file previously was shorter, it is extended, and
       the extended part reads as null bytes ('\0')

要点2:cat

-A, –show-all equivalent to -vET

第一步:使用下述命令看看该文件的格式,dos格式的文件行尾为^M$,unix格式的文件行尾为$

第二步:使用下述命令直接替换结尾符为unix格式

命令行:sed -i “s/\r//” [xxx.sh]

bash: /home/xxx.sh: /bin/bash^M: bad interpreter: No such file or directory

3.1 C++最重要就是三座大山:面向对象技术,内存管理,模板(泛型编程)

  1. std::unique_ptr 默认不允许拷贝构造,拷贝赋值,为什么函数可以返回unique_ptr ?而不是&unique_ptr
1
2
3
4
5
6
7
8
9
 https://en.cppreference.com/w/cpp/memory/unique_ptr/make_unique 

template<class T, class... Args>
std::enable_if_t<!std::is_array<T>::value, std::unique_ptr<T>>
make_unique(Args&&... args)
{
    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}

2 template<typename… _Args> std::move 使用场景是什么? std:forwrd区别?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
template <typename ...Args>
  static old_inode_map_ptr allocate_old_inode_map(Args && ...args) {
    static mempool::mds_co::pool_allocator<mempool_old_inode_map> allocator;
    return std::allocate_shared<mempool_old_inode_map>(allocator, std::forward<Args>(args)...);
  }

void InodeStoreBase::decode_old_inodes(bufferlist::const_iterator &p) {
  using ceph::decode;
  mempool_old_inode_map tmp;
  decode(tmp, p);
  if (tmp.empty()) {
    reset_old_inodes(old_inode_map_ptr());
  } else {
    reset_old_inodes(allocate_old_inode_map(std::move(tmp)));
  }
    

3.2 猴子都能懂的GIT入门〜掌握版本管理〜

合并代码用cherry-pick

image.png :::success 使用BeyondCompare合并代码, 结果发现提交上去代码 根本编译不通过,耗时 2天。都是语法错误 这是处理方式不对。合并代码,

这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用合并(git merge)。另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 Cherry pick

如果操作过程中发生代码冲突,Cherry pick 会停下来,让用户决定如何继续操作。 git cherry-pick –continue ::: image.png

git rebase –continue

  • cherry-pick :合并一次提交。

解决冲突CONFLICT 在rebase的过程中,也许会出现冲突(conflict)。在这种情况,Git会停止rebase并会让你去解决冲突;在解决完冲突后,用git add命令去更新这些内容的索引(index),然后,你无需执行 git commit,只要执行:

1
2
3
bash
git rebase --continue
https://juejin.cn/post/6844903600976576519

作者:麦田里的糖醋鱼 链接:https://juejin.cn/post/6969101234338791432 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

然后修改文件格式 #sh>vi filename

利用如下命令查看文件格式 :set ff 或 :set fileformat

可以看到如下信息 fileformat=dos 或 fileformat=unix

利用如下命令修改文件格式 :set ff=unix 或 :set fileformat=unix

:wq (存盘退出)

最后再执行文件