开源技术周报三期

本文分为三个部分 基础知识,行业知识,产品服务

一. 基础知识:从青铜到白银经历问题

gdb入门教程

:::success gdb 调试死锁打印所以线程堆栈 输出的文件 https://www.cnblogs.com/goose/articles/12617549.html :::

文件存储

软件RAID与硬件RAID的区别?

  • 硬件十万个为什么
  • RAID 的执行可以使用特殊控制器(硬件 RAID)或操作系统驱动程序(软件 RAID)来完成
alt

2.SAS

git入门门教程

https://www.yiibai.com/git/ https://www.wenjiangs.com/docs/git-tutorial https://www.yiibai.com/git/

alt

:::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
  1. 将换行符设置成UNIX的模式
使用 vim 打开,并执行 :set ff=unix 命令 
  1. 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_guardstd::mutexl(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个类读取变量是一致的?

maimai回答

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://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/
T「iKV 源码阅读三部曲」社区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,网络文件系统)是当前主流异构平台共享文件系统之

机制

方案:

  1. 本地缓存与分布式缓存的优缺点、适用场景与实现分析
  • [ ] 分布式缓存的典型实现包括 MemCached 和 Redis。
  1. Isilon的分布式缓存是动了真格的!

:::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/

  1. 组件:元数据引擎性能测试
4. MPI——进程之间的全局通信
image.png
image.png

实践

  1. JuiceFS 在携程海量冷数据场景下的实践

基本知识

  1. VMware 虚拟机中添加新硬盘的方法
  2. Linux使用createrepo制作本地yum源

提问:自己制作的rpm包,不能被别人直接使用,需要创建索引 回答:

  1. 例如 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」

「如果由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 多平台发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值