研发技能列表
Posted 头脑风暴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了研发技能列表相关的知识,希望对你有一定的参考价值。
一 代码风格
代码风格要求使用的Google Style Guides, 无论是C++还是Pyhton。
二 工具语言
需要掌握以下基本语言的使用:
- Git:
- git doc 有中文版
- 常用的git命令,分支开发,回滚(三个存储区的不同回滚方式),暂存stash
- Shell:
- Advanced Bash-Scripting Guide
- awk
- sed
- C++:
- C++ 标准文案
- STL的线程安全保证,六大组件的基本使用
- C++11:我们现在使用的gcc版本是4.9.2,C++11的全部特性已经全部支持。我们现在的在线服务推荐使用c++11的新特性,请自己学习。
- Pyhton:
- python2.7 documentation
- python3 是未来5年内会在生产环境普及的,可以提前了解并应用了
- 如果只是把python当成shell的替代脚本来用,未免有点杀鸡用牛刀了,python是一个完整的语言,不只是一个工具粘合剂
- 闭包和装饰器
- 匿名函数
- 偏函数
- map/reduce
- 迭代器和生成器
- 判断python掌握的程度,可以看看pb的python实现,如果看不懂,那说明你还是把python当成脚本来使用
- Go:
- Go Doc
- 新一代并发编程的server型语言
- 新的包管理方式
- 代码风格一致性工具
- 协程的概念和Go并发的实现
- Go的并发和并行
- Vim:
- http://coolshell.cn/articles/5426.html 这个要练习三遍
- vimrc的配置,了解我们项目目前使用的快捷键和常用操作
- Log:
- 掌握syslog,包括本机日志配置和远程日志配置,系统日志的查看和分析。
- 掌握logrotate,通用的日志切割配置,使用系统默认工具。
- 项目构建系统Bazel:
三 开源中间件
项目中使用的开源中间件比较多,选型中主要以开源和集团内的中间件服务为主,在看源码前,优先过一遍文档。
- Redis:
- 掌握所有redis支持的数据类型和命令
- 了解redis服务的主从方式配置,持久化的两种方式
- redis proxy(twitter/twemproxy)的实现方式,和redis server的异同。
- Aerospike:
- 掌握支持的数据类型,我们项目用到的数据类型
- 数据一致性保证策略
- 线上集群使用的存储方式和原因
- GTest 和 GMock:
- gtest的基本使用,注入原理。
- gmock的使用方式,和gtest配合使用。
- Kafka:
- kafka 0.10 版本的文档要看一遍,设计和实现原理
- 我们服务的镜像消费和互斥消费模式是如何做到的
- kafka消息的结构体和各个参数的含义
- kafka partition的含义,如何指定,group内如何做的消费平衡
- HBase:
- python和c++访问hbase的方式
- hbase基本结构的含义,列和列族的使用,版本的概念
- gRPC:
- protocol-buffers官网
- grpc 官网
- protocol buffer的主要数据类型和API的使用
- grpc的原理,和pb的结合方式,C++和Python的rpc使用方式。
- Zookeeper:这个一定要掌握,开源中间件的中间件。
- 发布与订阅
- 分布式命名
- 分布式锁
- 分布式集群管理,选举和监控
四 好书推荐
- C++程序设计语言 4th
-
Effective Modern C++ && Effective C++
- Advanced Programming in the UNIX Environment, 3rd
-
Unix Network Programming, Volume 1 & 2
- 程序员的自我修养:链接、装载与库
- Code Complete 2nd
- Man Pages: 这个真的太重要了,对于一个系统程序原来说,系统手册是最精华。即使没有看过一遍,但是也至少知道如何查找和man命令如何使用。比如需要查signal对应所有类型,你知道如何使用man命令吗?
- Linux多线程开发:
- POSIX Threads Programming
- perfbook.2016.07.31a.pdf
- C++ Concurrency in Action
以上是关于研发技能列表的主要内容,如果未能解决你的问题,请参考以下文章