工程细节-上手一门语言-并制作一个服务-需要考虑哪些方面?

开源越来越流行,所接触的语言也越来越多,如何快速上手一门语言与能够工程化的解决问题是很有必要的。

1 基本语法

项目

函数

循环

IF/ELSE

基本运算

变量

2 常用特性

以资源视角看待这个问题:

CPU:并发与锁(同步协议)

内存:容器

磁盘:IO文件系统 / DB

网络:网络IO(同步与异步等)

集群:分布式系统问题 : HA-共识协议 / Partition - MapReduce

3 开发相关

注释与说明文档:

调试/Bug Fix:日志库,IDE debug方法

测试:单元测试库

依赖管理与打包编译:

API多语言接口:

Profiling/调优:

版本管理:Git

资源隔离:Docker

CI/CD: Jeckins/ travis

软件市场:如果为平台软件

社区管理与交流

4 具体问题的经典算法与数据结构

CPU: 并发问题模型

内存: 多级存储Caching,其他memory 容器与数据结构(queue, skiplist, tree, array等)

磁盘: 多种索引等

网络IO: 同步异步IO等

分布式: 事务协议:Paxos/ Raft等,同步模式: BSP / ASP等,Partition Desgin: MR, Graph, Matrix等

5 代码性质进化

程序/算法: 一次性,正确执行

作业: 批处理(可能开始要考虑容错性/ 资源消耗) / Streaming (附加latency等)

服务: 可用性/容错/鲁棒/HA,Resource占用,系统性能(Latency, 吞吐), Operation/ monitor(Dri), 用户接口(SLA等), 开发者CI/CD

友情推荐:ABC技术研习社

为技术人打造的专属A(AI),B(Big Data),C(Cloud)技术公众号和技术交流社群。

猜你喜欢

转载自blog.csdn.net/gao8658/article/details/81135301
今日推荐