研发技能列表

一 代码风格

代码风格要求使用的Google Style Guides, 无论是C++还是Pyhton。

二 工具语言

需要掌握以下基本语言的使用:

  1. Git:
    1. git doc 有中文版
    2. 常用的git命令,分支开发,回滚(三个存储区的不同回滚方式),暂存stash

  2. Shell:
    1. Advanced Bash-Scripting Guide
    2. awk
    3. sed

  3. C++:
    1. C++ 标准文案
    2. STL的线程安全保证,六大组件的基本使用
    3. C++11:我们现在使用的gcc版本是4.9.2,C++11的全部特性已经全部支持。我们现在的在线服务推荐使用c++11的新特性,请自己学习。

  4. Pyhton:
    1. python2.7 documentation
    2. python3 是未来5年内会在生产环境普及的,可以提前了解并应用了
    3. 如果只是把python当成shell的替代脚本来用,未免有点杀鸡用牛刀了,python是一个完整的语言,不只是一个工具粘合剂
      1. 闭包和装饰器
      2. 匿名函数
      3. 偏函数
      4. map/reduce
      5. 迭代器和生成器
      6. 判断python掌握的程度,可以看看pb的python实现,如果看不懂,那说明你还是把python当成脚本来使用

  5. Go:
    1. Go Doc
    2. 新一代并发编程的server型语言
    3. 新的包管理方式
    4. 代码风格一致性工具
    5. 协程的概念和Go并发的实现
    6. Go的并发和并行

  6. Vim:
    1. http://coolshell.cn/articles/5426.html  这个要练习三遍
    2.  vimrc的配置,了解我们项目目前使用的快捷键和常用操作

  7. Log:
    1. 掌握syslog,包括本机日志配置和远程日志配置,系统日志的查看和分析。
    2. 掌握logrotate,通用的日志切割配置,使用系统默认工具。

  8. 项目构建系统Bazel:
    1. https://bazel.build/

三 开源中间件

项目中使用的开源中间件比较多,选型中主要以开源和集团内的中间件服务为主,在看源码前,优先过一遍文档。

  1. Redis: 
    1. 掌握所有redis支持的数据类型和命令
    2. 了解redis服务的主从方式配置,持久化的两种方式
    3. redis proxy(twitter/twemproxy)的实现方式,和redis server的异同。

  2. Aerospike:
    1. 掌握支持的数据类型,我们项目用到的数据类型
    2. 数据一致性保证策略
    3. 线上集群使用的存储方式和原因

  3. GTest 和 GMock:
    1. gtest的基本使用,注入原理。
    2. gmock的使用方式,和gtest配合使用。

  4. Kafka:
    1. kafka 0.10 版本的文档要看一遍,设计和实现原理
    2. 我们服务的镜像消费和互斥消费模式是如何做到的
    3. kafka消息的结构体和各个参数的含义
    4. kafka partition的含义,如何指定,group内如何做的消费平衡

  5. HBase:
    1. python和c++访问hbase的方式
    2. hbase基本结构的含义,列和列族的使用,版本的概念

  6. gRPC:
    1. protocol-buffers官网
    2. grpc 官网
    3. protocol buffer的主要数据类型和API的使用
    4. grpc的原理,和pb的结合方式,C++和Python的rpc使用方式。

  7. Zookeeper:这个一定要掌握,开源中间件的中间件。
    1. 发布与订阅
    2. 分布式命名
    3. 分布式锁
    4. 分布式集群管理,选举和监控

四 好书推荐

    1. C++程序设计语言 4th
    2. Effective Modern C++ && Effective C++

    3. Advanced Programming in the UNIX Environment, 3rd
    4. Unix Network Programming, Volume 1 & 2

    5. 程序员的自我修养:链接、装载与库
    6. Code Complete 2nd
    7. Man Pages: 这个真的太重要了,对于一个系统程序原来说,系统手册是最精华。即使没有看过一遍,但是也至少知道如何查找和man命令如何使用。比如需要查signal对应所有类型,你知道如何使用man命令吗?
    8. Linux多线程开发:
      1. POSIX Threads Programming
      2. perfbook.2016.07.31a.pdf
      3. C++ Concurrency in Action
posted @ 2017-12-04 10:25  悟法悟天  阅读(479)  评论(0编辑  收藏  举报