怎么才能高效规范的开发?可能需要掌握以下的技巧(持续更新)

0 写在前面

写本文的原因:由于转岗做一个了解甚少的行业(IC方面的EDA开发)。最近在思考未来怎么规划更好,需要学习哪些东西来弥补。是否应该先学习一些知识以备转岗,同时是否应该规划出未来的学习路线。和上司沟通了之后,他提出了一些较好的建议,我加上一些自己的想法,写出来也给一些转岗的人员一些思路(也是抛砖引玉,能够了解到更多大佬的见解):

  1. 不要试图学习一些东西来等待未来工作的需要,而是从需求中来进行学习
  2. 从提升个人的效率的方面进行学习(例如Linux技术等)
  3. 其次多了解行业的广度
  4. 由于2中个人效率的提高,可以更快的从项目中了解行业的深度

以下是本人在学习工作中遇到的困难,面向百度谷歌记录下来的一些提升效率的小技巧,遇到了就持续更新进来。
写文章的目的也是为了监督自己,做技术最害怕的就是停留在自己的小圈里,不提升学习一些新技术。

1 git使用

git在项目中使用非常多,掌握好git的技巧可以事半功倍的完成开发

1.1 git项目搭建方面

  1. 使用github gitee gitlab等托管代码
  2. 首先将ssh公钥加入到设置中
  3. 创建仓库,并且pull下代码

1.2 个人工作使用方面

提交代码

  1. 确定好本次分支的需求
# 先做pull确保使用的是最新分支
git pull origin/<远程主分支(最好为主分支)>
# 以当前分支为模板创建并且检出到该分支
git checkout -b <分支名>
  1. 修改完代码之后的事情
git add <code>
git commit -m "本次提交的信息"
git push origin <分支名>
# 若遇到冲突,在本次分支做merge,再做上面的事情
git merge master
  1. 到远程merge本次commit

查看相关修改

  1. 使用git diff查看相关代码的异同。在本分支commit了之后,常使用git diff origin/<分支名>来比较本次修改的内容与远程的<分支名>的异同
  2. 使用git blame 查看相关代码是何时何人做的提交

查看信息与分支切换

  1. 使用git status 查看代码修改情况
  2. 使用git branch查看本地分支,加-a参数为本地远程所有分支
  3. 使用git checkout <分支名>切换到相应分支
  4. 查看谁提交的分支
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n | grep <名字>

版本信息

  1. git log来查看历史的提交版本
  2. git reset --hard <commit ID> 来回退版本

submodule问题

当项目中存在submodule时候,在做每次分支代码时,确保用到最新的submodule,使用以下代码

git submodule update

同时处理多个分支

在开发中,当前分支做了一些修改之后,突然接到任务要处理其他的情况。这时应该首先考虑两个事件的优先级。确定好之后,

  1. 使用git stash来保存住当前分支的快照
  2. 到优先级高的任务处理
  3. git checkout <之前的分支>, 使用git stash pop拿出

删除分支

参考

  1. 删除本地分支 git branch -D <分支名>
  2. 删除远程分支git branch -r -d origin/<分支名>git push origin :feature/<分支名>

2 文件相关

2.1 查找

  1. 工作中遇到了需要通过名字定位到文件的需求,但是有时候文件名字也没有记清楚,通过以下命令来完成这个操作
# 使用通配符* ? 等实现模糊查找
find <directory> -name *aaa*
  1. 查找文件里面的内容
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 和其他编程语言一样,支持多种运算符,包括:

  1. 算数运算符
  2. 关系运算符
  3. 布尔运算符
  4. 字符串运算符
  5. 文件测试运算符

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 学习网站

[菜鸟教程](

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值