• 研发技能列表


    一 代码风格

    代码风格要求使用的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
  • 相关阅读:
    Python——学习笔记
    Ubuntu开发相关环境搭建
    解决联想R720双系统Ubuntu16.04的无线网卡开启问题及信号不稳定
    Win10环境下多JDK切换以及could not find java.dll异常解决
    Java——this关键字总结
    Java——多线程编程学习/01
    Python日常Bug集
    《集体智慧编程学习笔记》——Chapter2:提供推荐
    解决Pycharm无法显示matplotlib绘图问题
    Kettle启动时报错Cannot create java virtual machine & A java exception has occurred
  • 原文地址:https://www.cnblogs.com/brainstorm/p/7975857.html
Copyright © 2020-2023  润新知