- 博客(137)
- 收藏
- 关注

原创 linux常用命令以及常用知识库
查看服务端口的进程lsof -n -i :9092 | grep LISTEN# java 94330 root 99u IPv6 844902 0t0 TCP *:XmlIpcRegSvc (LISTEN)# 其实之前jps也发现 94330 运行着 kafka# 之后可以选择kill -9 94330...
2020-02-01 11:25:23
198

原创 我的vim使用技巧
ZZ保存退出,比按wq更快更舒服作为一个 vimer,Caps Lock 键根本就是多余的,而且在键盘中的位置根本不合理,一不小心就按到了 Caps Lock,然后就出错了。Esc 又是 vim 下使用最为频繁的按键,将Caps Lock替换成Esc真是再好不过了...
2020-02-01 11:20:59
175
原创 RocksDB中sst_dump的编译使用
cmake编译会在 tool 目录下生成,直接 make 则是生成在 rocksdb 根目录。有可能要先编译rocksdb。./sst_dump --file=/tmp/rocksdb_tmp --command=raw
2023-05-27 16:39:17
3
原创 vscode-cpp IntelliSense解析开发包到系统路径而非指定的项目路径原因探索以及解决方案
因为确实**会进行递归操作,于是猜测是level的包递归路径太深时,可能会导致 IntelliSense 的性能下降或者缓存不足,于是导致其无法正确地解析代码,导致对于 includePath 支持的内容有些折中,所以最终导致出现较深的本地目录只有在精确命名时才能找到,否则认为本地没有,于是去找系统目录,发现系统目录有,于是显示系统目录的leveldb
2023-03-19 18:35:35
297
2
原创 不用共享内存来通信,而用通信来共享内存的思考探索
go之所以不用共享内存来通信,而用通信来共享内存,是因为其协程之间都在一个进程里面,那么管道的读取性能就很好。而如果是进程间的通信,很有可能会出现高性能进程间管道性能还是远不如共享内存的情况出现。因此和分布式存储中常用的用共享内存来代替rpc调用优化通信效率刚好是相反的。
2023-02-26 15:09:48
56
原创 helm安装etcd-ha的失败的原因是bitnami不支持ARM架构-过程分享
helm安装etcd-haexec /opt/bitnami/scripts/etcd/entrypoint.sh: exec format error原来bitnami不支持ARM架构的服务器.......我吐血了
2023-01-08 20:32:35
510
原创 kubeadm安装k8s的一些避坑建议
k8s官网的安装文章中讲解一些版本依赖关系因此安装指定版本的k8s,就需要安装适应版本kubeadm!!!拿1.22版本举例子curl -s https://packages.cloud.google.com/apt/dists/kubernetes-xenial/main/binary-amd64/Packages | grep Version | awk '{print $2}'`kubeadm init`第一次之后,后续需要`kubeadm reset`,`rm /var/lib/etcd`进
2023-01-01 15:02:34
199
原创 配置全局gitignore的原因与实操
有时候我们有些gitignore文件在每个工程中都是重复的,而且这些文件和工程本身没有关系,而是和操作系统相关的(比如macOS的`.DS_Store`)或者是和开发工具相关的一些东西(比如IDEA的`.idea`)所以就需要做全局的gitignore来处理这些,以保持每个工程的gitignore的整洁性vim ~/.gitconfig# 添加如下内容cat ~/.gitconfig | head -n 2[core] excludesfile = ~/.gitignore
2022-12-27 10:22:14
165
原创 sync.Map中amended和Delete删除中nil和expunged的理解
amended: 意思是被修改过的,为true就是表明dirty和readOnly中的map的数据不相同了readOnly中的map数据为nil: 就是正常的Delete()操作会让readOnly中的map数据值为nil,key还在readOnly中的map数据被标记为expunged(擦去;删掉): 就是只有在readOnly生成dirty数据时,如果遇到readOnly中标记为nil的值,则标记为expunged,并且不放在dirty中,没有对应key和值
2022-12-19 16:21:34
514
原创 小心weak_ptr的lock()生成的临时shared_ptr导致reset释放不掉内存
因为 weak_ptr 不会增加共享指针的引用计数,所以当共享指针释放内存时,weak_ptr 也会失效,无法通过 weak_ptr 访问内存。weak_ptr 是一种智能指针类型,它指向一个 shared_ptr 指向的内存,但不会增加共享指针的引用计数。访问 weak_ptr 指向的内存:std::shared_ptr sptr = wptr.lock();具体原因是: shared_ptr sptr = wptr.lock();会新建一个新的对应内存的引用,所以导致内存块不释放
2022-12-09 18:27:52
354
原创 raft加速日志回退算法以及理解的基础_一些举例
一个折衷的解决方案是只使用conflictIndex(并忽略 conflictTerm),这简化了实现,但领导者有时最终会向跟随者发送比更新它们所必需的更多的日志条目。先发7过去,然后经过上面过程,发67过去,发现4,5还是不匹配,再发567过去,然后发现3匹配了,然后就可以直接覆盖了,因为之前3在同样的位置,先跳转到3的位置,把555发过去,然后发现冲突任期是3,S2就把4555发过去。所以确实返回5的下标,然后去覆盖。
2022-11-24 20:20:28
382
原创 ../labgob: “../labgob“ is relative, but relative import paths are not supported in module modo
go module模式下不能使用相对路径来导入包。因此把../labgob改成mit/src/labgob即可
2022-11-07 14:42:44
1492
原创 代码提交没有记录到github activity和contribute
最近发现自己一段时间提交的代码,都没有归类到github activity上,也没有在contribute图上显示,所以想搞清楚。自己是以前用的qq号的邮箱,后面用的qq邮箱的全英文的邮箱,所以把github主邮箱改了一下。
2022-10-01 13:21:20
371
原创 新版本的protoc使用grpc容易遇到的两个坑,gen gRPC,mustEmbedUnimplementedHelloServer
新版本的protoc使用grpc容易遇到的两个坑,gen gRPC,mustEmbedUnimplementedHelloServer--go_out: protoc-gen-go: plugins are not supported; use 'protoc --go-grpc_out=...' to generate gRPCcannot use HelloService (variable of type helloService) as type hello.HelloServer in arg
2022-09-18 17:34:24
573
原创 golangci-lint在vscode的使用,以及配置的一些探索
Go 语言自带套件为我们提供了静态代码分析工具 vet,它能用于检查 go 项目中可以通过编译但仍可能存在错误的代码。在维基百科是如下定义 lint 的:但是如果想要更多,就可以用golangci-lint。golangci-lint 是一个 linter 的集成框架。它集成了非常多的 linter,包括了上文提到的vet,合理使用它可以帮助我们更全面地分析与检查 Go 代码VScode配置golangci-lint VScode使用golangci-lint golangci-lint检测nil...
2022-06-15 20:00:15
2122
原创 golang类型断言理解[go语言圣经]
Go 语言中的类型断言是什么?理解关键点是:首先,x.(T), x必然是一个接口,接口有3个属性具体类型的属性1. 接口动态类型2. 接口的动态值3. 接口的方法集合T取值:x取值:如果为nil,会panic,类型断言是一个使用在接口值上的操作。语法上它看起来像x.(T)被称为断言类型,这里x表示一个接口的类型和T表示一个类型。一个类型断言检查它操作对象的动态类...
2022-06-10 10:35:51
241
转载 【Golang】怎样优雅的清空切片
这是个有意思的问题,在此之前,博主从来没有考虑过这个问题,直到最近,终究还是与 清空切片 相遇了。场景是这样的:需要批量从influxdb中查询数据,这个批量查询的查询条件是通过遍历一个结构体切片的字段,不断append,为了避免一次查询量过大,影响查询效率。代码上做了如下处理:var queryIDs []int64for _,v:= range vList{ queryIDs=append(queryIDs,v.ID) if len(queryIDs)>50{
2022-05-18 19:52:39
2667
原创 VScode ssh免密登录设置
在本地机器生成密钥对(公钥+私钥)ssh-keygen -t rsa -b 2048 -C "email@example.com"将公钥内容复制到服务器的authorized_keys中# 本地机器cat ~/.ssh/id_rsa.pub# 连接到服务器# ssh xxx@xx.xx.xx.xx# 服务器vim ~/.ssh/authorized_keys# 将上面cat出来的内容,添加到authorized_keys中的新的一行编辑VScode remote-ssh的本地配置H
2022-05-16 19:40:21
479
原创 创建目录软链接却无法cd进入
ln -s go_learn ~/code/go_learnll ~/code/total 0lrwxrwxrwx 1 root root 9 May 7 18:51 go_learn -> go_learn/可以观察发现,这个软链接是链接到一个目录,但是自己却是一个文件,无法cd进去然后观察发现是go_learn/不是确定的路径所以就是ln的target需要使用绝对路径ln -s /mnt/c/Users/shanl/Documents/Code/go_learn ~/cod
2022-05-07 19:00:48
733
原创 The commit failed because it seems to introduce trailing whitespace
速览解决方案yum install dos2unixdos2unix filegit cm "[ADD] ..."原因分析以及解决使用samba共享代码,或者是windows创建的文件,上传到linux服务器上,然后进行代码提交这时候报错lib/pthreadpool/xxx.h:236: trailing whitespace.+lib/pthreadpool/xxx.h:237: trailing whitespace.+#endif //lib/pthreadpool/xxx.
2022-04-14 16:44:03
1446
原创 windows10安装双系统后,删除linux,开机进入grub怎么办
输入 “exit” 这四个英文字母,然后回车,就可以进入windows10win + q然后输入 cmd, 然后以管理员身份进入命令行输入 bootsect /nt60 C: /mbr ,把C盘作为第一引导,不用grub引导上面不行用下面这个操作:https://blog.csdn.net/qq_41609385/article/details/121611081...
2022-01-28 20:17:15
1819
原创 vscode的remote-ssh无法连接,服务端日志[ExtensionHostConnection] The client has reconnected
关闭服务端⚡ 01/24|19:34:39 20220119T105255 ps aux | grep vscoderoot 16092 0.0 0.0 9564 1324 ? S 1月19 0:00 sh /root/.vscode-server/bin/0ba0ca52957102ca3527cf479571617f0de6ed50/server.sh --host=127.0.0.1 --enable-remote-auto-shutdown --p
2022-01-24 19:39:50
720
原创 docker容器改静态ip
自己网上找了,没有明确的步骤只知道可以改配置,操作一把,成功systemctl stop dockerdocker info | grep "Docker Root Dir"vim ${docker_root}/containers/1b1xxxxx/config.v2.json (修改ip)systemctl start docker
2022-01-23 15:29:15
2217
原创 git pull无反应
现象git pull 半天没有反应检测$ git remote -vorigin git@xxx.org:YYY/samba.git (fetch)origin git@xxx.org:YYY/samba.git (push)$ ssh -T git@xxx.orgPermission denied (publickey).处理$ vim ~/.ssh/config$ cat ~/.ssh/configHost cs.devops.sangfor.orgUser gitHos
2022-01-11 11:53:29
3527
原创 日志输出流较佳实践[较佳实践]
总体实践#!/bin/python3# coding: utf-8import sysimport loggingfile_handler = logging.FileHandler(filename="./xxx.log")stdout_handler = logging.StreamHandler(sys.stdout)handlers = [file_handler, stdout_handler]logging.basicConfig( level=logging.I
2021-12-18 14:55:35
212
原创 python抛出异常的实践[较佳实践]
抛出异常的最佳实践以前我都是用方法一进行抛出异常,但是方法一看不到详细的堆栈,很不爽,所以还是用方法二比较爽# 方法一LOG.error("cwd '{}' error, ex: {}".format(dir_name, ex))# 方法二LOG.error("stor '{}' error.".format(file_to_upload), exc_info=1)方法一2021-12-07 16:47:47,648.648 17898:140560392476480 ERROR __ma
2021-12-12 14:54:44
352
原创 ftp支持ipv6
给linux客户端创建ipv6运行vi /etc/modprobe.d/disable_ipv6.conf(没有这个文件可以pass),将options ipv6 disable=1修改为options ipv6 disable=0 后保存退出。运行vi /etc/sysconfig/network,将NETWORKING_IPV6=no修改为NETWORKING_IPV6=yes后保存退出。运行vi /etc/sysctl.conf做如下修改:#net.ipv6.conf.all.disable
2021-12-12 14:49:51
2054
原创 查配置文件中配置项,不存在则添加
查配置文件中配置项,不存在则添加function update_rgw_supervisor_stopwaitsec() { # 更新rgw的supervisor配置文件中的stopwaitsec logmsg "update rgw supervisor stopwaitsec config" rgw_supervisor_conf="/root/ceph-rootfs/etc/supervisor/conf.d/radosgw_client.rgw.eds.conf"
2021-11-30 11:48:06
577
原创 iov数组中间加值
iovec的结构首先观察iovec的存储结构,就知道iovec数组一旦填充了值之后,就无法在iovec的base的尾部添加字符了因为这样会破坏后面的len,所以想要加值,就要重新生成一个iovec数组然后复制,或者是在尾部添加尾部添加演示#include <fcntl.h>#include <stdio.h>#include <string.h>#include <sys/stat.h>#include <sys/types.h>
2021-10-31 14:50:26
103
原创 找到文本中某个字符串的上下几行中的含有的其他指定字符串的方法
eg:找result文件中,compound的上面十行里有create的文本块,并且向下显示10行(-B向上,-A向下)grep compound_end result -B 10 | grep create -A 10
2021-10-31 14:49:03
78
原创 samba共享linux目录出来写代码【共享目录有严格格式限制才能成功】
samba共享linux目录出来写代码背景因为有时候不好用remote-ssh,用samba共享出来可能会方便一点操作下午搞了整整2个小时,网上的链接都不给力,按照那个配置来配置都失败了我的错误配置如下[lm-dev] comment = test path = /root/lm/code_share # ...搞了很久还是一直报错无法访问资源自己也根据windows报错在cmd执行了很多如下命令C:\>net use * /del /y #
2021-10-17 14:04:24
53
原创 s3cmd常用命令和使用技巧
常用命令配置s3cmd: s3cmd --configure创建bucket:s3cmd mb s3://bucket01查看bucket:s3cmd ls查看bucket存量信息:s3cmd du s3://bucket01查看bucket基本信息:s3cmd info s3://bucket01删除bucket:s3cmd rb s3://bucket01上传对象:s3cmd put 对象名 s3://bucket01获取bucket对象列表:s3cmd ls s3://bucket0
2021-10-10 13:49:50
3749
原创 删除小于指定大小的文件
# 这么默认单位好像不是 Bytes, 而是Block块 == 512Bytes,导致我误删了许多,心痛# https://blog.csdn.net/qingfengxd1/article/details/102861396find ./ -size -621 -name "*smb*" -exec rm {} \;-size N[ bcwkMG] 查找指定文件大小的文件,1字节c,2字节w,块(512字节)b千字节k,兆字节M,吉字节Gfind --help查看用法man find可以查到
2021-10-10 13:46:57
175
原创 自己提交代码的几点教训
在工作中,如果要和别人协作提交代码,而且不方便改.gitignore的情况下,提交代码的时候要十分小心下面是自己的两次惨痛教训大工程不要直接git add -A有时候有许多的修改内容的时候,可能一个个提交比较麻烦,所以git add -A很方便但是这个操作容易在忘记git status检查的时候,把大量的编译文件,或者无关的文件提交到代码仓库这样会对别人造成很大的不方便,严重的时候会导致一段时间内整个分支无法继续使用编译出错的修复记得也要提交有时候工作很多打断的时候,比如老是有人找你的时候,你
2021-09-25 21:56:41
37
原创 脚本生成多个指定大小的随机文件
批量生成指定大小的文件#!/bin/bash## 设置批量文件名格式fmt=output.%05d## 把文件生成到指定的目录cd lmfor i in $(seq 1 3)do## 通过head指定多少 K,多少M,多少G 的指定的大小的文件 head -c 512K /dev/urandom > `printf $fmt $i`done提示: windows端可以通过git shell来执行这个脚本...
2021-09-19 14:56:45
308
原创 yum报错网络不可达,但是配置的网络能够ping通
报错Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container error was14: curl#7 - "Failed to connect to 2a05:d012:8b5:6503:9efb:5cad:348f:e826: Network is unreachable"Could not retrieve mirro
2021-09-04 09:25:31
3121
原创 安装git 2.x遇到undefined reference to `libiconv‘
安装git 2.x遇到undefined reference to `libiconv’可能遇到报错:utf8.c:463: undefined reference to `libiconv’ LINK git-credential-storelibgit.a(utf8.o): In function `reencode_string_iconv':/usr/src/git-2.8.3/utf8.c:463: undefined reference to `libiconv'libgit.a(ut
2021-08-22 13:22:40
388
原创 snprintf返回值判断-返回值深入实践分析
snprintf返回值判断-返回值深入实践分析#include <stdio.h> int main(){ char dest[50]; char* args = "wolfdan.cn"; int size = 15; int ret; // len(args) < size 情况 printf("写入args的长度为: %d, size 为 %d (args.len < size)\n", strlen(args), s
2021-08-10 17:17:55
1008
原创 字符拼接数字[最佳实践]
字符拼接数字在多进程环境中,防止多线程读写同一个文件,所以往往会加pid来分别写不同文件,防止错乱然后sprintf一般在项目中会宏定义成不要使用#define sprintf __ERROR__XX__NEVER_USE_SPRINTF__;所以最佳方法就是用snprintfchar *tmp_file_path = "some path";int INT_MAX_LEN = 10;int SPLIT_CHAR_LEN = 1;int pid = getpid();int file_p
2021-08-10 17:17:00
109
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人