2018年中总结(二)工作中遇到的问题(上)

年初在一家使用golang的公司待了一段时间,当时抱着一颗学习的心态试图挑战一下自己,结果因为自己基础薄弱,能力不足,没能坚持下去,但是却学到了非常多的东西,是一段非常宝贵的工作经历,这里记录一下在工作中遇到的奇奇怪怪的问题,尽量将具体的工作内容剥离出去,记录问题及解决思路和方法等。

1.由于GFW的问题,在国内使用golang是相当困难的,常常需要自备梯子,或者使用公司的vpn,不过这个问题是glide的问题,报错如下:

The Remote does not match the VCS endpoint.

产生原因是glide的缓存没有清理,使用命令glide cc,之后再make即可,可见here

2.因为和GitLab做了关联,所以有时会出现大量多次询问ssh帐密授权的信息,解决方案是添加上私钥:

ssh-add -k ~/.ssh/id_rsa

可以看一下这个问题中的400+赞的高票答案(在下方)。

在使用上述命令报错

Could not open a connection to your authentication agent.

可以使用ssh-agent bash,然后再进行ssh-add

ssh -T git@xxx.com

使用ssh与git仓库进行连接。

3.vim编辑中文设置utf-8编码,参考文章

附:vim的常用命令
附:vim快捷键
最常用的自动补全:Ctrl + pCtrl + n
gg跳转到文件头,Shift + g跳到文件尾,跳转指定行行数+gg,如123gg

4.一个简单的git工作流:阮一峰的Git文章
首先fork别人的项目,关于fork
之后在本地操作:

git clone "fork后的在你的仓库的项目地址"
git remote add upstream "fork的别人仓库的项目地址"
git fetch upstream 远程获取最新版本
//不是必要的一步
git rebase upstream/branchname  将某分支的最新版rebase到本地

什么是rebase?

之后新建分支以做修改

git checkout -b fix_xxx
git add xxx yyy zzz
git commit
git push origin fix_xxx

然后去提pr(pull request),等待别人merge。

但是当我们提pr时发现自己的commit数量太多,想要合并的时候该怎么做呢?如here
其实就是用上面说的rebase;首先要知道,当我们查看git的log时,commit的记录不只是你一个人的,也有可能有其他人的commit参杂其中,所以在使用rebase的时候需要注意的就是,保证自己的commit记录是连续的,这样才能够比较方便的进行合并commit的操作。
使用git rebase -i HEAD~num , 注意符号~还有那个num,就是你之前的commit的记录条数,或使用git rebase -i commit的hash值(推荐),然后会进入到一个操作界面,里面主要就是修改pick为squash,但是要保留一个pick,保留的pick就是主commit信息,其他的都会合并到这条信息上。

如果我们想要回滚git代码,则可以使用

git reset --hard hash

5.golang使用中遇到的一些问题:
go中的main函数和init函数
go语言的结构体
defer(), panic(), recover()用法
go的context机制
vim-go:注意里面的笑脸是那部分是vim中的命令:PluginInstall

6.grpc介绍:grpc是什么?
grpc官方文档中文版
RPC,知乎答案
RPC原理详解

7.编写Makefile,使用make命令编译,生成可执行文件。
这里推荐大牛陈皓的跟我一起写Makefile系列,共计14篇。

8.在linux下全局搜索文件,使用grep命令

 grep "target" *    搜索当前目录下所有文件中是否含有target字段
 grep "target" */* 搜索当前目录的下级所有目录中的文件是否含有target字段

以此类推


解压命令 unzip

 sudo unzip  xxx.zip  -d  filepath    将文件解压到某路径下



关于命令 sudo apt-get updateWhat does “sudo apt-get update” do?


linux的文件权限
衍生问题: cd进入目录所需权限。


curl命令,其实这个并不是Linux的内置命令。 curl是利用url语法在命令行方式下工作的开源文件传输工具。全称是:CommandLine Uniform Resource Locator

9.mock测试, 指在测试中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。 mock本身有虚假意。
关键步骤是: 使用一个接口来描述对象,mock对象就是真实对象在调试期间的代替品。

10.Prometheus科普
OpenTracing文档

11.最后用一个冷知识收尾:\r、\n、\r\n之间的区别

其他的笔记中的内容大概扫了一下,很多都是和具体的业务场景有关,再或者就是和golang的使用有关,有很多内容都是比较基础,但是当时没掌握的那种,等等。所以大概就提炼出这点东西,希望以后回顾,或者对有缘人能有些许帮助。

猜你喜欢

转载自blog.csdn.net/ybt_c_index/article/details/80881969
今日推荐