【CS-Notes】工欲善其事必先利其器(Code、Git、Docker、Linux)
文章目录
- Code工作台(工欲善其事必先利其器)
- 1、通用工具
- 1.1、编辑器
- 1.2、Git 基本版本控制
- 1.3、Docker容器
- 2、Linux工作台
- 2.1、Linux命令
- 2.2、开发工具
- 1、Terminator终端
- 2、Tmux(终端复用器)
- 3、Vim配置
- 4、ssh服务器配置以及图形界面
- 5、代码对比
- 3、编译与调试
- Bazel
- gdb调试
- valgrind 内存泄漏与越界检查
Code工作台(工欲善其事必先利其器)
原文链接:https://github.com/qipengh/CodeTools
1、通用工具
编辑器、Docker、Git
- 解压压缩:
Bandizip
- 护眼:
Redshift
- pdf阅读器:福昕阅读器
- 思维导图:XMind
1.1、编辑器
VS Code(code神器
)、Sourcetrail(免费开源)、Source Insight(收费)
- Visual Studio Code(免费、开源、神器)
1、配置:|VSCode-开发效率翻倍|–|VSCode C++ 开发利器|–|awesome-vscode|
2、使用:VS Code 的常用快捷键
Sourcetrail(开源、免费、源码可视化)
开源免费的源码阅读神器 SourcetrailSource Insight(收费)
1.2、Git 基本版本控制
参考:Git-版本控制
- git
# 获取文件更改的个数 增加行数 删除行数
git diff --stat
# 查看修改的代码行数,新增的文件以及删除的代码行数
git log --stat
# 查看暂存区的代码变化
git diff --cached '将指定文件回退到指定版本'
# 1. git log 查看 commit_id
git log /path/file
# 2. 通过commit_id 将指定文件还原到你想要还原的版本
$ git checkout ${commit_id} /path/file
git commit \ log
# 查找commit的comment内容
git log --grep=comment注释的关键词# 查找用户 commit
git log --author=用户名关键字
1.3、Docker容器
参考:Docker-容器
docker build -f xxx.dockerfile -t xxx.com/paddle/devel/x86_64/paddle:v0.8.0-mlu-x86_64-ubuntu18.04 .
2、Linux工作台
教程
- Linux工具快速教程Linux开发必看!!!
- Linux命令大全
- 写给工程师的 Ubuntu 20.04 最佳配置指南
- 文件传输:gFTP
- 三剑客vim+ctags+cscope、两板斧doxygen gdb:Linux 平台下阅读源码的工具
- ubuntu 设置字体,避免字体发虚
- ubuntu 安装微软雅黑和 Consolas 字体
- 安装gnome-tweak-tool in Ubuntu 20.10
2.1、Linux命令
- shell 与 bash
bash:如何遍历find返回的文件名
- C++文件解析
c++filt
:还原so中的函数名
nm
:显示指定File中符号信息
ldd
: 查看程序依赖库
strip
:
目标文件分析 说明
$readelf -all a.out 查看二进制文件信息
$nm myProgrammer 列出目标文件的符号清单
$size a.out 查看程序内存占用
- 文件解压缩
tar -zxvf xxx.tar.gz
解压
tar -zcvf xxx.tar.gz dirname
:将dirname和其下所有文件(夹)压缩
tar -tvf xxx.tar.gz
:查看压缩包的内容,而不解压-t
- 查看文件和文件夹大小
ls -l filename
:文件大小
du -sh
:文件夹大小(所有文件大小的总和)
du -h --max-depth=1 dir
du -h --max-depth=0 dir/*
df -h
:文件系统各分区大小
hdparm -Tt [/dev/sda]
:分区磁盘速度
man
:查询命令command的说明文档;例如:man ps
ps
:显示当前进程 (process) 的动态;例:ps -u -p xxx
- pip代理源 - 设置代理
# 国内的镜像加速
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host=pypi.tuna.tsinghua.edu.cn# 解决“not a trusted or secure host”
$ cat ~/.pip/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
- 文件内容三剑客(grep、sed、awk)
# awk 按字段分隔符 取 文件关键字所在列
$awk -F '}} = ' '{print $2}' log
$awk -F '}} = ' '{print $1}' log
$awk -F '}} = ' '{print $2}' log > log1
$awk -F '[' '{print $1}' log1
$man sort
$awk -F '[' '{print $1}' log1 | sort -u > log2
# 统计单词次数并按次数排序(uniq: -c 输出重复次数 sort:-n 按照数值比较排序;-r 逆序输出)
sort filename | uniq -c| sort -nr
# 按照第二列排序
sort -k 2 filename
- virtualenv安装并指定python版本
# 安装virtualenv
pip install virtualenv# 创建虚拟环境并指定PYTHON版本
virtualenv venv --python=python2.7
virtualenv venv --python=python3.7# 退出虚拟环境
deactivate# 删除虚拟环境
rm -r venv
2.2、开发工具
- Ubuntu 20.04通过docker安装微信和QQ
1、Terminator终端
- 配置
安装sudo apt-get install terminator
,配置文件~/.config/terminator/config
,具体配置参考terminator_config
bashrc配置参考bashrc
- 快捷键
- 终端:打开(
Ctrl+Shift+T
)、关闭当前(Ctrl+Shift+W
) - 当前窗口:切换显示(
Ctrl+Shift+X
)、退出(Ctrl+Shift+Q
) - 分割终端:水平(
Ctrl+Shift+O
)、垂直(Ctrl+Shift+E
) - 垂直分割的分割条:向左(
Ctrl+Shift+Left
)、向右(Ctrl+Shift+Right
) - 隐藏/显示滚动条(
Ctrl+Shift+S
)、clear屏幕(Ctrl+Shift+G
) - 搜索(
Ctrl+Shift+F
)、复制(Ctrl+Shift+C
)、粘贴(Ctrl+Shift+V
)
2、Tmux(终端复用器)
Tmux 使用教程
翻页翻屏
进入tmux翻屏模式(先按 ctrl +b,松开,然后再按 [ );上下翻页(PgUp、PgDn);退出(q)
始终将所有窗口的大小调整为最大可用大小(多显示器共用)
tmux set-window-option aggressive-resize on
, 再重连
3、Vim配置
简单配置参考:simple_vimrc
详细配置:解压
./configs/vim.tar.gz
-安装插件vim +PluginInstall +qall
参考
- vim插件管理器:Vundle
- Vundle:Vim Plugin
参考:Vim配置
4、ssh服务器配置以及图形界面
ssh -X yourname@ip
cat .ssh/configHost remote_nameHostName ipUser user_nameForwardX11 yesForwardX11Trusted yes
sshfs工具将nas挂载本机:
sudo apt install sshfs
sshfs -o Compression=no -o ServerAliveInterval=15 user@ip:path/user ~/mount/nas
5、代码对比
- Beyond Compare、Meld Diff Viewer
- Linux下9种优秀的代码比对工具推荐
- 代码对比工具,不止于beyond compare
Beyond Compare
- 官网安装包:bcompare-xxx-amd64.deb
- 安装:
sudo dpkg -i bcompare-xxx-amd64.deb
- 30天无限试用:
#!/bin/bash
config_of_bcompare=$(find ~ -iname bcompare -print -quit)
rm ${config_of_bcompare}/registry.dat
echo "Done!"
3、编译与调试
GCC、GDB、Valgrind
- GCC:GCC(警告.优化以及调试选项)
- 代码调试
命令 | 说明 |
---|---|
$gdb | 启动gdb |
gdb --args exec arg1 arg2 | 调试带有命令行参数的程序 |
> bt(breaktraces) | 显示所有的函数调用栈帧信息 |
>break main | 设置断点 |
>run | 运行调试程序 |
>continue | 继续执行到下一个断点处(或结束) |
>next | 单步调试 |
>print var1 | 打印某个变量值 |
>list | 显示当前调试处的源代码 |
>info b | 显示当前断点调试情况 |
Bazel
参考,其工作原理:加载与target有关的BUILD文件;分析inputs和dependencies,生成 action graph;执行graph,产出outputs。其中action graph: bazel依赖这个图来追踪文件变化,以及是否需要重新编译,并且还可以为用户提供代码之间的依赖关系图。
# bazel clean
bazel clean # 不会删除外部依赖
bazel clean --expunge # 会删除外部依赖# bazel build
bazel build :<exe name> # 在BUILD所在的package目录下执行,编译指定的target
bazel build :all # 编译该package下的所有target
bazel build ... # 编译该package下的所有target
bazel build <//path/to/package>:<exe name> # 在workspace下的任意目录执行,“//”表示workspace所在目录
bazel build :<exe name> --compilation_mode=dbg # debug mode
bazel build :<exe name> -c dbg # debug mode# bazel run
bazel run :<target name>
bazel run -- :<target name>
gdb调试
- 100个GDB技巧
- 掌握gdb调试从入门到进阶(一)
- 掌握gdb调试从入门到进阶(二)
- GDB调试教程:1小时玩转Linux gdb命令
- GDB 基础知识及断点
- gdb-python调试记录
- GDB调试之TUI界面
- GDB TUI - 原來 GDB 要這樣用
valgrind 内存泄漏与越界检查
- valgrind 检查 C++ 程序的内存泄漏
【CS-Notes】工欲善其事必先利其器(Code、Git、Docker、Linux)相关推荐
- 工作用到的 cmd git docker linux redis k8s 命令
工作用到的 cmd git docker linux redis k8s 命令 cmd git docker 常用命令 保存镜像 加载镜像 pom 文件配置打包到容器的内容 容器和服务器间拷贝文件 l ...
- 工欲善其事必先利其器 之 DockerDesktop(下)
工欲善其事必先利其器 之 DockerDesktop(下) 文章目录 工欲善其事必先利其器 之 DockerDesktop(下) 前言 一.DockerDesktop Settings 二.什么是 W ...
- Jenkins+git+docker构建持续化集成环境
CI/CD介绍 发布流程设计 Jenkins服务器 192.168.100.109 Git/Harbor 192.168.100.110 Docker 192.168.100.111 工具 版本 Ce ...
- 工欲善其事必先利其器 之 Minikube(上)
关键词:minikube.快速搭建kubernetes.快速搭建k8s.如何在桌面上运行一个k8s 工欲善其事必先利其器 之 Minikube (上) 文章目录 工欲善其事必先利其器 之 Miniku ...
- 工欲善其事必先利其器 之 DockerDesktop(上)
关键词:DockerDesktop.如何在桌面运行Docker.Docker容器 工欲善其事必先利其器 之 DockerDesktop(上) 文章目录 工欲善其事必先利其器 之 DockerDeskt ...
- 打造自己本地的渗透测试武器库-工欲善其事必先利其器
文章目录 打造自己本地的渗透测试武器库-工欲善其事必先利其器 一.安装操作系统 二.安装宝塔 三.安装Docker 四.安装Nessus 五.安装AWVS 六.安装MobSF 七.安装Xray 八.安 ...
- 工欲善其事必先利其器-C语言拓展–嵌入式C语言(一)
工欲善其事必先利其器-C语言拓展–嵌入式C语言(一) 我是golang出生,当时做项目的时候java.c++.js.python都折腾过,但是关于c语言的接触,基本上都停留在大一的那个暑假.后来因为要 ...
- # 工欲善其事必先利其器-C语言拓展--嵌入式C语言(八)
工欲善其事必先利其器-C语言拓展–嵌入式C语言(八) 继续来看看新的属性:weak 这个符号知道是弱,但是这个是干嘛的呢?我们先来学习一下强符号和弱符号 文章内容全部来自–><嵌入式C语言 ...
- JVM - 工欲善其事必先利其器之虚拟机工具(下)
文章目录 JVM - 工欲善其事必先利其器之虚拟机工具(下) 1.可视化虚拟机工具JConsole 1.1 JConsole是什么? 1.2 JConsole的使用 1.2.1 概览 1.2.2 内存 ...
最新文章
- GIT如何查看本地分支与远程分支的关联配置(git branch --set-upstream)
- CGLIB介绍与原理(通过继承的动态代理)
- caioj 1063 动态规划入门(一维一边推1:美元和马克)
- 记实现TDengine时序数据库支持 .Net Windows 32位系统踩坑
- 国家特级数学教授李毓佩:我们欠孩子真正的数学阅读 !
- Java进阶3. 内存回收机制
- Java之面试基础知识学习笔记
- VS2013配置PDFLib 9.1.2的环境
- PAL文件(Palette,调色板)及格式
- 购票系统c语言座位分配,铁路购票系统的简单座位分配算法
- iOS 日本日历、佛教日历取date的问题及公历转换,时间戳获取不准确
- 神之bug 嵌套RecyclerView谜之滚动
- 代码随想录第七天 LeetCode 454、383、15、18 (哈希表、双指针)
- 计算机用word做贺卡,新年马上就要到了用WORD2000做贺卡 -电脑资料
- docker系统中/var/lib/docker/overlay2
- Android Studio 3.5 怎样获取MD5签名
- 黑客是如何进行IP欺骗的
- 帕斯卡计算机结构,帕斯卡计算机: 第一台受专利保护的计算机
- 计算机培训机构靠谱吗?能不能相信?
- Ubantu14编译7.1.2Android系统
热门文章
- goproxy实现windows的mysql的内网穿透
- apche的设置和安装
- matlab亮度平衡_亮度对比度算法MATLAB实现
- Python使用pip安装Numpy模块
- 实验楼Java写计算器_Java版图形界面计算器
- 在widows下使用ioperm控制端口
- android tv播放ftp,乐视TV超级电视FTP功能的详细使用方法步骤
- 求推荐一个手机、电脑、网页端三平台通用的桌面便签工具
- 10 怎么写USB驱动,Cadence USB 2.0 Controller和PHY IP驱动移植
- 视频监控安防平台(企业级)-国标28181平台