ITEEDU

计算机技术体系介绍

2018年,收获良多,当然不只是计算机领域。2019年准备再梳理一下技术体系,无体系不成方圆。干开发已经5年有余,心中留下诸多遗憾,现在水平高级是有的,也算个水货架构师。大话空话不要放,多闻阙疑,多见阙殆,好好学习,天天向上。

软件开发常用工具介绍

工欲善其事,必先利其器。这里介绍的工具是我认为比较好的,经常会用到的。

主要介绍集成开发环境(IDE)、代码编辑器、版本控制、FTP工具、数据库管理工具、提高开发效率的工具,还有其它专项开发时用的工具。

现在开始学习开发工具

计算机科学技术基础知识

计算机科学发展日新月异,新知识层出不穷,有些要温故而知新,反复回味,有了只要了解就可以,用的时候现学现用。

计算机的基础知识就是那种值得反复回味的,从小白走到专家,每个阶段回看都有不同的发现。

基础1:计算机体系结构

CPU、内存、硬盘、输入输出、程序,能说出计算机怎么启动,一个程序比如1+1是怎么存储、怎么执行、怎么显示可以算是及格吧。

基础2:汇编语言

其实汇编一般人用的不多,不同平台指令不同,其汇编语言差异也比较大,但编程的思想是一样的。

理解汇编对学好C是至关重要的,而C/C++是较高层次技术人员必备技能之一。

这里推荐一个实践方案,自己写一个小操作系统,推荐两本书,按着上面的来基本没问题:

《30天自制操作系统》:一个日本人写的,但写的真的很好。

《自己动手写操作系统》:这个是中国人写的。

我在看完《30天自制操作系统》这本书,并实践了一下后,对计算机结构、汇编、C都有了更深入的认识。

由于是工作后发现的,没有用多时间更深入透彻的实践,达到了如指掌一直是心中的遗憾,如有时间一定补上。

基础3:C语言

想学好C语言还是要真正做些实践,《30天自制操作系统》是对操作系统的实践,《python 源码剖析》是对面向对象语言的实践。

有了这两种实践之后,对C语言的使用将达到很高的境界。对于C语言没有更深入的实践一直是心中的遗憾,如有时间一定补上。

基础4:数据结构&算法

线性结构、树、图的各种相关知识,比如结构、相关算法、存储方式等,算法中排序、查找等。

学完大学的数据结构课本可以看《算法导论》这本书,更有深度。

字符集 | 排序算法 | 常用树结构和其算法

现在开始学习基础知识

编程语言

基本学差不多就要学主流语言,话说现在各种语言也是非常多,但为了工作至少要精通一门。

现在主流的JAVA、C++、Python根工作需要精通一门,做WEB开发除了JAVA外还要学javascript。

在学习语言的同时,要学习一下设计模式,了解所学语言如何实现各种设计模式。

函数工编程现在越来越流行,可以学一学scala,这是spark大数据平台标配开发语言。

另外,了解LISP系列语言将对编程语言有新的认识,这里推荐两篇文章:

Lisp 的本质-深度好文

Lisp之根源

操作系统

根工作需要,了解或深入LINUX操作系统是必要的。

学习基本的命令和shell编程也是必备的。

想深入挖掘linux系统,推荐读一下《linux from scratch》手册,LFS是一种从网上直接下载源码,从头编译LINUX的安装方式,一个定制linux的教程。

关系型数据库

关系型数据库是非学不可的,在学了大学的数据库原理之后,要会做数据库设计。

sql调优是必须会的,在理解关系型数据库原理之后才能做出好的设计,才能对SQL调优提高性能。

如有必要,深入学习一种数据库是非常有必要的,推荐学mysql。

并发编程与网络编程

并发与网络是必备的开发技能,其中并发一般是多线程编程,现在主流语言一般都支持多线程编程了。

网络编程不只是web开发什么的,那是只http协议下的编程,只是一个用的比较多的领域,TCP/UDP协议的编程也是非常有必要掌握的

网络在大学有专门的课程,还是比较好学的。并发编程是比较难学的,比较依赖于基础知识和丰富的设计经验。

方向选择

IT行业方向还是比较多的,不同的方向选用的技术偏重点不同。

嵌入式方向:偏重硬件、汇编、操作系统,重点语言是C。

WEB开发:偏重网络、并发、架构,重点语言是JAVA。

游戏开发:偏重图形、图像、动画、3D相关技术,综合性比较强。

大数据:大数据运维偏重系统与网络,大数据开发偏重于平台使用,数据分析师偏重于模型与算法,重点语言是JAVA与python。

人工智能:偏重于模型与算法,重点语言是JAVA与python。

区块链:2018是区块链寒冬,但区块链技术对社会关系的改造必不可挡,我依然看好这个方向。

应用软件:这个比较杂,系统、中间件、数据库、桌面软件,不好说偏重什么。

这只是根据自己感觉分了下类,游戏和WEB开发比较广泛但前景一般,大数据还没大众化前景还不错,人工智能在高速发展期前景非常好。

另外,从行业划分电商、政务、金融等,不同行业前景也不一样,金融当然是比较有前景的。

架构技能

架构要掌握常见的中间件,如消息队列、缓存、负载等。

主流的如Nginx、Redis,JAVA消息队列ActiveMQ、kafka等。

这里保留以前整理的内容,另外推荐一本书,《大型网站技术架构_核心原理与案例分析》-李智慧,这是对WEB架构写的比较好的一本书。

软件架构师的职责:理解系统的业务需求,制定系统的整体框架(包括:技术框架和业务框架);对系统框架相关技术和业务进行培训。解决系统开发、运行中出现的各种问题。

  • 掌握基本的架构设计理论:了解“4+1视图”模型
  • 掌握架构的分层观点(三层设计)。
  • 了解常见架构视图类型(要能按照“消费者、视角、元素、关系”四要素对具体架构视图进行说明)。
  • 了解业界通用的架构设计的方法并能够清楚描述架构设计成果。
  • 安全设计、性能设计、算法设计。

4+1视图 | 负载均衡学习笔记

现在开始学习软件架构师技术

专题技术

很多小众领域也是非常有价值的,在能力经验丰富之后这将是一个学习的重点,如密码术。

开始学习专题技术