文章目录
0 写在前面
写本文的原因:由于转岗做一个了解甚少的行业(IC方面的EDA开发)。最近在思考未来怎么规划更好,需要学习哪些东西来弥补。是否应该先学习一些知识以备转岗,同时是否应该规划出未来的学习路线。和上司沟通了之后,他提出了一些较好的建议,我加上一些自己的想法,写出来也给一些转岗的人员一些思路(也是抛砖引玉,能够了解到更多大佬的见解):
- 不要试图学习一些东西来等待未来工作的需要,而是从需求中来进行学习
- 从提升个人的效率的方面进行学习(例如Linux技术等)
- 其次多了解行业的广度
- 由于2中个人效率的提高,可以更快的从项目中了解行业的深度
以下是本人在学习工作中遇到的困难,面向百度谷歌记录下来的一些提升效率的小技巧,遇到了就持续更新进来。
写文章的目的也是为了监督自己,做技术最害怕的就是停留在自己的小圈里,不提升学习一些新技术。
1 git使用
git在项目中使用非常多,掌握好git的技巧可以事半功倍的完成开发
1.1 git项目搭建方面
- 使用github gitee gitlab等托管代码
- 首先将ssh公钥加入到设置中
- 创建仓库,并且pull下代码
1.2 个人工作使用方面
提交代码
- 确定好本次分支的需求
# 先做pull确保使用的是最新分支
git pull origin/<远程主分支(最好为主分支)>
# 以当前分支为模板创建并且检出到该分支
git checkout -b <分支名>
- 修改完代码之后的事情
git add <code>
git commit -m "本次提交的信息"
git push origin <分支名>
# 若遇到冲突,在本次分支做merge,再做上面的事情
git merge master
- 到远程merge本次commit
查看相关修改
- 使用
git diff
查看相关代码的异同。在本分支commit了之后,常使用git diff origin/<分支名>
来比较本次修改的内容与远程的<分支名>
的异同 - 使用
git blame
查看相关代码是何时何人做的提交
查看信息与分支切换
- 使用git status 查看代码修改情况
- 使用git branch查看本地分支,加-a参数为本地远程所有分支
- 使用git checkout <分支名>切换到相应分支
- 查看谁提交的分支
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n | grep <名字>
版本信息
git log
来查看历史的提交版本git reset --hard <commit ID>
来回退版本
submodule问题
当项目中存在submodule时候,在做每次分支代码时,确保用到最新的submodule,使用以下代码
git submodule update
同时处理多个分支
在开发中,当前分支做了一些修改之后,突然接到任务要处理其他的情况。这时应该首先考虑两个事件的优先级。确定好之后,
- 使用
git stash
来保存住当前分支的快照 - 到优先级高的任务处理
git checkout <之前的分支>
, 使用git stash pop
拿出
删除分支
- 删除本地分支
git branch -D <分支名>
- 删除远程分支
git branch -r -d origin/<分支名>
,git push origin :feature/<分支名>
2 文件相关
2.1 查找
- 工作中遇到了需要通过名字定位到文件的需求,但是有时候文件名字也没有记清楚,通过以下命令来完成这个操作
# 使用通配符* ? 等实现模糊查找
find <directory> -name *aaa*
- 查找文件里面的内容
grep "search content" filename1
# 查找当前目录下所有的文件内容
grep "search content" *
# 递归查找
grep -nr "search content" *
2.2 编辑(vim)
有时候需要使用vim进行编辑,vim真的太强大了!!
W3Cschool
2.2.1 分屏操作
2.2.2 查找定位跳转
3 Shell脚本
https://www.runoob.com/linux/linux-shell.html
开头部分
#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序
#!/bin/bash
创建脚本的脚本(禁止套娃hh)
无聊自己写了一个创建一串脚本的脚本
#!/bin/bash
# 创建脚本,后面输入名字即可
echo "脚本名字:$*"
for i in "$@"; do
touch $i.sh
chmod +x $i.sh
echo "#!/bin/bash" >> $i.sh
echo "# "$i.sh >> $i.sh
done
3.1 变量部分
#!/bin/bash
echo "Hello World !"
###########定义变量############
# 1 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
# 2 中间不能有空格,可以使用下划线 _
# 3 不能使用标点符号
# 4 不能使用bash里的关键字(可用help命令查看保留关键字)
name="runoob.com"
echo $name
echo ${name}
for file in `ls`; do
a=$file
echo $a
done
# 只读变量
name_read_only="read_only"
readonly name_read_only
# name_read_only="try_to_change"
# 删除变量
# 不能删除只读变量
unset name
echo "after unset:"$name
###########################
###########字符串##########
# 单引号
# 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
# 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
str='this is a string'
# 双引号
# 双引号里可以有变量
# 双引号里可以出现转义字符
your_name="runoob"
str="Hello, I know you are \"$your_name\"! \n"
echo -e $str
# 拼接字符串
your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2 $greeting_3
# 获取字符串长度
string="abcd"
echo ${#string} #输出 4
# 提取子字符串
string="runoob is a great site"
echo ${string:1:4} # 输出 unoo
# 查找子字符串
# 输出的是位置,从1开始
string="runoob is a great site"
echo `expr index "$string" ion` # 输出 3,因为n先出现
echo `expr index "$string" io` # 输出 4,因为o先出现
###########################
###########数组##########
# bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
# 类似于 C 语言,数组元素的下标由 0 开始编号。
# 获取数组中的元素要利用下标,下标可以是整数或算术表达式,
# 其值应大于或等于 0。
array=(1 2 3 4 5)
# 读取数组
echo ${array[1]} # 输出: 2
# 使用 @ 符号可以获取数组中的所有元素
echo ${array[@]} # 输出:1 2 3 4 5
# 怎么遍历数组?
# 获取数组的长度
# 取得数组元素的个数
echo ${#array[@]} # 5
# 或者
echo ${#array[*]} # 5
# 取得数组单个元素的长度
echo ${#array[1]} # 1
###########################
3.2 传参
#!/bin/bash
echo "Shell 传递参数实例!";
echo "第一个参数为:$1";
echo "参数个数为:$#";
echo "传递的参数作为一个字符串显示:$*";
#$* 与 $@ 区别:
#相同点:都是引用所有参数。
#不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
echo "-- \$* 演示 ---"
for i in "$*"; do
echo $i
done
echo "-- \$@ 演示 ---"
for i in "$@"; do
echo $i
done
3.3 Shell 基本运算符
Shell 和其他编程语言一样,支持多种运算符,包括:
- 算数运算符
- 关系运算符
- 布尔运算符
- 字符串运算符
- 文件测试运算符
expr
是一款表达式计算工具,使用它能完成表达式的求值操作
剩余代码
放在github
https://github.com/sharpenHolic/Resource-Sharing/tree/gqxiong/shell
4 gdb
5 开发规范
6 docker
7 正则表达式
8 cmake
9 C/C++语言
9.1 string的处理
9.1.1 情景一
输入带空格的一串英文,将每个单词存入向量之中。即每个向量的元素是一个string
在询问东哥得到解决方法
void testVector3()
{
string s1;
vector<string> s2;
char ch = ' ';
while (ch != '\n') {
cin >> s1;
ch = getchar();
s2.push_back(s1);
}
}
总结收获
cin 用法介绍
getchar用法介绍
10 Python
11 学习网站
[菜鸟教程](