本文分为三个部分 基础知识,行业知识,产品服务
一. 基础知识:从青铜到白银经历问题
gdb入门教程
:::success
gdb 调试死锁打印所以线程堆栈
输出的文件
https://www.cnblogs.com/goose/articles/12617549.html
:::
文件存储
软件RAID与硬件RAID的区别?
- 硬件十万个为什么
- RAID 的执行可以使用特殊控制器(硬件 RAID)或操作系统驱动程序(软件 RAID)来完成
2.SAS
git入门门教程
https://www.yiibai.com/git/
https://www.wenjiangs.com/docs/git-tutorial
https://www.yiibai.com/git/
:::success
问题2:
git出现 You are in the middle of a merge -- cannot amend问题解决方法
checrry-picking is not possible because you have unmerged files
:::
linux和windows混合开发,很容易会遇到行尾换行符的问题,windows下默认是\r\n,linux下是\n
how:
借助于dos2unix插件转化功
dos2unix *
sudo find /home/test -name "*.py" | xargs dos2unix
- 将换行符设置成UNIX的模式
使用 vim 打开,并执行 :set ff=unix 命令
- Git 优雅处理行结束符
如果你用Windows就设置全局变量
git config --global core.autocrlf true
如果是mac/linux则设置
git config --global core.autocrlf input
默认是 nolist 。 如果使用 set list 显示隐藏字符,类似 cat -A 文件名 。 : set list :显示隐藏字符。 : set nolist :不显示隐藏字符
c++
共识:
C++最重要就是三座大山:面向对象技术,内存管理,模板(泛型编程)。
误区
大部人都觉得基础知识 和工作不相关 这个又是一个误区
如果工作比较忙,先完成工作,再找时间补齐,结果一直忙
T& & 、T& && T&& &都被折叠成T&
typename remove_reference<T>::type&& move (T&& arg) noexcept
{
return static_cast<typename remove_reference<T>::type&&>(t);
}
int rr1=2;
int && rr2 = std::move(rr1)
将一个左值绑定到右值引用上,rr1将不再被使用。
std::forward;保持类型的细节
https://zhuanlan.zhihu.com/p/364005478
https://www.zhihu.com/question/43513150
C++标准规定,delete (void*)0;是安全的。
二现在的编译器通常都会有一个#define NULL 0的宏
所以,delete NULL也是安全的,是一个空操作;
:::success
提问9:c++ 类中的类成员变量怎么调用带参数的构造函数来初始化?
Person me("lucas", 35);
当做一个类成员变量。
:::
:::warning
提问8 :模板类继承模板类是如何使用的?
:::
提问7 :
认真理一理C++的构造函数
const或者引用的成员变量,必须在构造函数中给它初始化,注意是初始化,而不是赋值。
问题6: (移动)拷贝构造函数调用场景?
https://en.cppreference.com/w/cpp/thread/unique_lock/unique_lock
unique_lock( unique_lock&& other ) noexcept;
- echo | g++ -v -x c++ -E -
- /usr/include/c++/
- find ./ -name memory
今天看C++并发编程实战,看到一个lock_guard<std::mutex>l(mutex,std::adopt_lock);我就一直在想这个是什么东西,从字面意思理解,就是收养个锁,去msdn搜了搜,msdn是这样解释的,我也没看懂,后来看了几篇博客,大概理解了
adopt_lock 和 defer_lock 的区别
https://en.cppreference.com/w/cpp/thread/lock_tag_t
:::warning
C++11 std::unique_lock与std::lock_guard区别?
:::
C++11:为什么 std::condition_variable 使用 std::unique_lock?
:::danger
std::condition_variable_any
:::
在一个类里,创建2个线程,这2个线程分别读取,类中成员变量数值,读取是一样的吗?
这2个类读取变量是一致的?
SRE运维
$( )与``(反引号):返回括号中命令的结果
echo today is $(date "+%Y-%m-%d")
echo today is `date "+%Y-%m-%d"`
today is 2023-03-21
sed 批量替换多个文件
sed -i "s/bb/aa/g" *.txt
-i 表示inplace edit,就地修改文件
s/regexp/replacement/
** DOT语言**是一种文本图形描述语言。它提供了一种简单的描述图形的方法,并且可以为人类和计算机程序所理解。DOT语言文件通常是具有.gv或是.dot的文件扩展名。
https://products.groupdocs.app/zh/viewer/dot
性能优化
:::success
概述
Windows 10 彻底关闭 Antimalware Service Executable 降低内存占用
最近给内网的一台电脑安装 Windows 10 专业版系统,由于此电脑不会涉及到不安全因素,所以杀毒软件非必须。
以最大限度节省系统资源考虑,默认安装的 Micoroft Defender 占用了大量内存,而且还有不断增长的趋势。
:::
二. 行业 从石器时代到黄金时代
一、公开课[资料]
-
数据库/存储学习路径推荐
https://mp.weixin.qq.com/s/fl-R_ZMQwy0aNQbsXZeQ3Q
必读!!!数据库开发学习资料.pdf MIT 6.84: Distributed Systems
官方地址:https://pdos.csail.mit.edu/6.824/
阅读书籍:leveldb 精通
https://github.com/watchpoints/leveldb
https://leveldb-handbook.readthedocs.io/zh/latest/basic.html
二. TIdb
资料 | 作者 | 地址 |
---|---|---|
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. |
三 ob社区
分类 | 问题 | 回复 |
---|---|---|
配置 | ob一个表的分区上限是多少 | 社区版3.x的版本是8192个,4.x版本已经基本没有限制了 |
juicefs 1.0.3 集成 oceanbase 4.0 测试 | https://www.cnblogs.com/rongfengliang/p/17128080.html | |
memstore中同时会存在多个冻结的memtable吗? | https://ask.oceanbase.com/t/topic/35602848 |
四 TDengine
序号 | 模块 | 提问 | 回答 |
---|---|---|---|
1 | 技能 | 通过招聘看要求 | 必须掌握英语。 |
2 | |||
:::success
Hi 大神们 遇到个问题 taos 用了32g的 内存 被系统杀掉了 我要怎么限制taos的内存使用
如何限制taos 最大内存 配置taos的内存回收策略
:::
Q2: yum config-manager --set-enabled powertools 执行失败
https://github.com/taosdata/TDengine/issues/15593
A2:
dnf install epel-release
dnf install 'dnf-command(config-manager)'
dnf config-manager --set-enabled PowerTools
五 文件存储
基本概念
- samba服务程序已经成为在Linux系统和Windows系统之间共享文件的最佳选择
- 【分享】CIFS和NFS的区别
- NFS:sun公司1984年推出,基于RPC构建,依靠Unix OS
- NFS(Network File System,网络文件系统)是当前主流异构平台共享文件系统之
机制
- inotify文件系统监控机制。
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Sync可以远程同步 - https://www.cnblogs.com/f-ck-need-u/p/7220193.html
方案:
- 本地缓存与分布式缓存的优缺点、适用场景与实现分析
- 分布式缓存的典型实现包括 MemCached 和 Redis。
:::success
Isilon的OneFS采用了与CPU类似的缓存一致性协议,开发这套协议需要相当的技术水平。Isilon采用Infiniband互联,采用Sockets Direct Protocol (SDP) over InfiniBand (IB)来实现节点间同步。
Isilon采用MESI协议实现缓存一致性。MESI表示每个缓存行的4种状态:
M – Modified: The data exists only in local cache, and has been changed from the value in shared cache. Modified data is typically referred to as dirty.
E – Exclusive: The data exists only in local cache, but matches what is in shared cache. This data is often referred to as clean.
S – Shared: The data in local cache may also be in other local caches in the cluster.
I – Invalid: A lock (exclusive or shared) has been lost on the data
每个节点均记录本地缓存行的状态,就可以决定是否要发出广播。
:::
JuiceFS 客户端的缓存默认是单机独享的,但当大量客户端需要反复访问同一个数据集时,可以开启「分布式缓存」功能,让大量客户端共享同一批缓存数据,有效提升性能。
分布式缓存非常适合使用 GPU 集群进行深度学习模型训练的场景,通过把训练数据集缓存到集群所有节点的内存或 SSD 中,提供高性能的数据访问能力,让 GPU 不会因为数据读取太慢而闲置在分布式缓存方案中,每个 JuiceFS 客户端均参与缓存组的建立。如果遇到 JuiceFS 客户端不是常驻的情况,比如 Kubernetes 集群,客户端不断被销毁、重建,可能导致缓存利用率很低。对于此类动态创建伸缩的计算集群
JuiceFS 是一个分布式文件系统,而 JuiceFS 云服务是由官方提供的 SaaS(Software-as-a-Service)服务
https://juicefs.com/docs/zh/cloud/
- 组件:元数据引擎性能测试
- 元数据服务是一个基于 Raft 协议的高可用集群,所有元数据操作均以 Raft 日志形式进行追加,这也让类似「实时数据保护」这样的高级数据安全功能成为可能。
- https://juicefs.com/docs/zh/community/databases_for_metadata/#tikv
- https://www.cnblogs.com/JuiceData/p/16249850.html
4. MPI——进程之间的全局通信
实践
基本知识
- VMware 虚拟机中添加新硬盘的方法
- Linux使用createrepo制作本地yum源
提问:自己制作的rpm包,不能被别人直接使用,需要创建索引
回答:
- 例如 rpm放到 /var/www/html/Rocky8.4/AppStream
cd /var/www/html/Rocky8.4/AppStream
yum install -y createrepo
createrepo ./
/2. etc/yum.repos.d
[appstream]
name=Rocky Linux $releasever - Media - AppStream
baseurl=file:///var/www/html/Rocky8.4/AppStream
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
3. 磁盘故障检查
非分布式锁管理器DLM 和cup缓存一致性
磁盘识别状态(lsblk)
lsblk lists information about all available or the specified block devices
sdb 8:16 0 447.1G 0 disk
nvme4n1 259:0 0 931.5G 0 disk
nvme5n1 259:1 0 931.5G 0 disk先使用dmesg命令查看有没有硬件I/O故障的日志
grep"error"/va/log/messages*;smartctl --smart=on --offlineauto=on --saveauto=on /dev/nvme0n1
smartctl -H /dev/nvme0n1
命令释义: PASSED:这表示硬盘健康状态良好; FAILED:硬盘不健康,建议更换硬盘
smartctl -a=== START OF INFORMATION SECTION ===
Model Number: INTEL SSDPE2KX010T8
Serial Number: PHLJ140102GQ1P0UGN
Firmware Version: VDV10173硬盘序列号,英文名为Hard Disk Serial Number
FirmWare, 应该是固件版本。
固件(firmware)是指设备内部保存的设备自身的“驱动程序”dd if=/dev/zero of=/dev/nvme0n1 bs=1M count=1024 oflag=direct
2、 软 RAID 和硬 RAID 各有什么优劣?
https://www.zhihu.com/question/19613331
如果由CPU执行硬盘控制器的驱动程序代码完成,就是软RAID;
如果由RAID卡上的主控芯片完成,就是硬RA
3. 如何访问共享文件?
- 键盘输入“win + R”,再输入“\IP”
三 、站在巨人肩膀上
- 句子
"It's hard to grow beyond something if you won't let go of it."
“如果你不放手,就很难超越它。”
参考
【1】 https://blog.csdn.net/weixin_37766087/article/details/99974385
本文由mdnice多平台发布