随笔

发布时间 2024-01-01 09:55:54作者: 蜜桃janna

Git项目版本管理
克隆远程仓库:git clone [ gitee仓库路径 ]
添加修改记录:git add --all ./
提交本地仓库:git commit -m "备注信息"
同步远程仓库:git push origin master

内容:
创建(文件、目录)、打开(读打开、写打开)、写入、读取(顺序读、随机读)、边写边读、关闭、删除、
从NAS加载(文件、目录)、从磁盘卸载加载的、
dfx:服务断了(各种期间workermaster、gcs),一次或多次写入数据量过大(并发)、心跳断了RPC异常、网络断了、丢包chaosblade

用例:
有set,get,delete方法,worker1 执行 set key,ttl(自动删除时间)=60;
worker1和master1 故障,超过ttl的时间重启恢复;
预期worker1自行删除成功,此时调用get获取失败,worker2delete失败
实际 worker2delete成功
原因:恢复重启之后,过期的数据要在对账之后才能自动删除成功,此时的delete状态错误。

问题1:
堆栈溢出coredump:使用大的局部变量(因为局部变量都分配在栈上),这样容易造成堆栈溢出,破坏系统的栈和堆结构,导致出现莫名其妙的错误。解决办法:使用动态内存分配机制,new/delete。要注意释放已分配内存,避免出现内存泄露。
其他coredump:内存访问越界,多线程程序使用了线程不安全的函数,多线程读写的数据未加锁保护,空指针。

问题2:
1. 版本问题:多种语言使用的情况下,java,c++,python,会导致某些情况下测试结果与预期不同,比如value值输入失败,先考虑 测试版本比如Java、python的版本是否和开发一致。
2. 一致性问题:对象缓存中:多台机器的情况下,比如写数据:具有同步、异步两种,同步的时候,W1创建,W2,W3也同时创建,异步则不会同时创建。
3. 权限问题:chmod 777 / chown -R chuting:chuting /home/ct拥有者
4. 测试全面性:首先不能忘了语义测试:比如这个接口只可以调用一次,测试1次,2次,多台并发调用。
5. 网络故障:ChaosBlade
{"code":200,"success":true,"result":"c29053229c16c839"}

c++并发写法

#include<iostream>
#include<thread>
using namespace std;
void proc(int a)
{  
  cout<<"子线程"<<endl; 创建线程。
}
int main()
{
  cout<<"主线程"<<endl;
  int a=9;
  thread th( proc , a ); 实例化,传入函数名,和函数所需要的参数。
  th.join();
  return 0;
}

Python基础语法

数值,int,float,bool,complex
字符串,string
列表,list [ ],有序,二次赋值,
元组,tuple ( )不能二次赋值
字典,dictionary{ }无序,不能存列表,cmp
集合,set
print('------斐波那契数列-------')
a = 0
b = 1
num = 10
i = 2
if num <= 0:
    print('print num need >= 0')
elif num == 1:
    print(a)
else:
    print(a,b,end=' ')
    while i< num:
        sum = a + b
        print(sum,end=' ')
        a = b
        b = sum
        i += 1

python并发

class mythread(threading.Thread):
    def __init__(self, name):
        threading.Thread.__init__(self)
        self.name = name
    def run(self):
        print("name is :" + self.name)

thread1 = mythread("hello")
thread2 = mythread("world")
thread1.start()
thread2.start()

shell基础语法
if

If condition
Then
Elif condition
Then
Else
Then 
Fi

for

For loop in 123
Do
Echo “loop is : $loop ”
Done

函数

demotest()
{
Echo “test”
}
demotest

重定向

使用 >> 追加到文件末尾
shell文件中执行文件../file1.sh文件

#!/bin/bash
. ./test1.sh
或者
Source ./test1.sh
接下来,我们为 test2.sh 添加可执行权限并执行:
chmod +x test2.sh
./test2.sh

 

Linux命令
touch文件,mkdir目录,cp复制,cd打开,ll, ls,cat,find,Mv改名或移动,rm,
chmod,chown,
挂载mount,unmount
查找grep -n test file.txt

du展示占用磁盘空间
查找指定进程格式:
ps -ef | grep test
Ps -aux 显示所有使用者的进程
scp Linux 之间复制文件和目录。
Sed编辑文件

场景: 系统报警显示了时间,但是日志文件太大无法直接 cat 查看。(查询含有特定文本的文件,并拿到这些文本所在的行)
grep -n “时间” test.log
场景:从根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 "ERROR" 的行
find / -type f(文本文件) -name (扩展名)“*.log” |xargs grep “error”

Redis数据库