刺激战场
  • 1351阅读
  • 1回复

转载:计算机知识储备 [复制链接]

上一主题 下一主题
离线fengyelin49
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2016-10-11
浅谈计算机开发技术人员的基础知识储备# a0 u3 B$ E/ c' y. [9 P' s3 f5 [
2016-04-28 转载 黑客与编程
转载  L9 m/ A/ d' c1 ]. I# N! x
标签2 m+ o) {3 A% {
       计算机技术范围巨大,现代生活和生产的方方面面,已经离不开计算机技术了。而这几年计算机技术的极速发展,每天都有更新、更好、更有思想性的技术出现,这个领域完全是爆炸式的发展。一个有志于计算机开发技术的人员,刚开始总是会遇到摸不到头脑,不知如何开始学习。大学里的教育,偏重于计算机理论,对实际应用偏轻;理论知识学起来晦涩难懂,教学内容时常落后且脱离实际,很多人毕业后,对于市场需求的技术很多人还没听说过。而市场上的各类培训班,又及其功利,都是就某个市场需求热点做皮毛应用教学,相关的理论思想完全没有涉足,培养了一堆只懂皮毛、眼界狭小的初级码农,很难在能力上做突破。3 f+ d+ q6 p+ j0 V( P0 Y
0 s, ]! m+ w, K% i
        如今这个行业的技术已经越来越细分。但是就整个行业而言,各个细分领域是有着千丝万缕联系关系的,一个开发人员的技术广度,决定了他的技术眼界和能力拓展的范围。在企业的计算机人才需求中,经常会遇到这样的情况:+ z- S3 {6 i0 v3 P, P' d
/ b% H2 F* w7 }
        这个页面显示是前端人员的事,前端我不懂,问他们去。--这个数据的处理,是后端开发的,他们那套东西我不懂,别问我。--系统为啥运行的这么慢。。。这个我也不知道啊,我代码写的没问题,找运维吧!$ t2 v' G, o& }& M; p
& D- w) Z9 Z' P8 M
       且不说企业能不能承受这么多细分领域专门人才的储备,作为一个优秀的开发人员,一定要对大范围的技术广度有所了解,不能只知道自己领域而对整体完全不清楚。而作为项目经理,更需要有整体的技术概念,否则面对客户的需求、老板的压力、和开发的沟通,就不可能做专业化的沟通。较为完整技能的工程师---被称之为全栈工程师,市场上极少当需求极为抢手,也是因为他们有着全局技术的观念,自身具备独立完成整个项目建设的能力,更能带领有分工的团队进行技术的开发。         , D0 ~& c+ t* m* w% E# ]

        我个人认为,学习计算机技术,需要打破既有的思维,从大的方面先理清思路,首先要做的是拓宽眼界广度,尽可能多的了解整个领域的方方面面,然后再具体到某一特定领域,做深入的细致深度研究。最关键的是要与时俱进,随时了解最新的技术动态,将知识储备的范围尽量扩大。

       就具体而言,计算机技术开发人员的基础技术储备,我总结了以下需要了解并学习的六大框架,包括且不限于:; W4 p. o, M. Y& ?4 o/ p+ y
1 U  x  e' {& Q( v  v
运维技术(基本的设备硬件组成,系统环境,网络数据交互原理,维护及优化). a  e  s1 N+ K

     运维技术是开发的基础,贯穿于整个开发过程中。如果不了解网络原理,是无法了解代码开发中数据的交互方式的,不懂linux的操作,意味着大部分的服务器、大部分的移动设备操作系统内核、嵌入式设备的开发根本无从谈起;不懂得网络路由,也无法明白web应用的后台优化,大型服务的架构无法实现。2 ~, `0 s: f5 l. Q

     一、操作系统的使用,最基本的有两大操作系统WINDOWS的操作,linux的操作,虚拟机理论,沙箱、容器概念;. o* h% y/ A7 v3 ^! e% p; e0 @

     二、计算机网络原理,熟悉根本的OSI模型,TCI/IP模型及协议,数据传输的HTTP/HTTPS的协议;8 y% N2 H' T1 U$ n6 m. J6 i8 f
  {& e( u0 i! l1 N$ N! V) t" t
     三、运维服务,知道基本的网络设备运行原理,IP设置,DNS,局域网和互联网路由原理等;5 s8 X6 D/ p' r' _7 \

     四、设备硬件基础,知道电脑、移动设备零部件的基本组成和特点,简单的维护技能
5 j( C" L- H" R! s, ~2 J9 s
     五、大数据分布式架构,: P1 x. s* e& A4 K. n
' c  @' u$ E- o6 c6 O' {  y
前端开发(客户表现端)---页面设计,HTML/CSS/JS ,类库使用

     前端是直接展示在使用者面前的界面。狭义的就特指浏览器中的页面显示的部分。这部分包含前端的结构、布局、元素,元素的样式表现,以及元素的行为事件处理。
1 R0 p- f- L) [, b
      一、基础视觉UI理论,交互方法理论;安卓、苹果和WP系统的UI特点,交互规范及其原理;) U2 }) {! {9 u" F4 f
$ N- d3 p1 }$ `1 v$ N8 s* g
      二、HTML/HTML5 的设计

      三、CSS/CSS3 样式设计, @$ `* J$ T7 c0 l6 b
# h+ S% a# F4 U3 ?  p% g3 a
      四、前端Java Script语言设计4 X0 Q2 x6 F5 v0 @) R5 n3 O- s1 q
" r! V$ P; s' {* r4 q& L
      五、不同浏览器核心和版本,其核心(渲染引擎和JS引擎)对代码解析运行的兼容性分析( I7 i: m) o  N0 b7 g/ a; S5 u7 M
9 O+ M- Y- ]+ C2 H
      六、在这三大设计基础上实现功能加强和管理的各类类库(如jquery)、框架(extJS、angulaJS、等等)) T1 K4 [8 V! t8 S% g$ r
* q! p3 x5 B  j
      现在已经有了“富前端”设计的倾向。随着客户端设备的性能提升,原先需要由后端完成再传输到前端显示的业务功能正在往前端倾斜。而最新的HTM5/CSS3/JS ES6标准的日趋完善,浏览器的核心支持,使得向本地缓存、离线运行和本地简单数据库的开发更加富有能力,从而大大减轻服务器端运行压力和互联网数据传输压力。

后端开发(后台模型以及业务端)
& Z; C$ [% y0 R' E/ S4 u5 U
       这里的后端开发,包含了作为服务提供端的业务模型、控制代码开发,以及处于底层的驱动类硬件开发,还涵盖和运维相关的应用开发等。分为以下几类:
: V# W0 _$ L# P$ E9 w
       一、设备端的本地程序开发。和硬件配合多,经常使用的有汇编/C/C++等语言。
8 J* j* r4 R2 a: M# }
       二、作为服务端,和前端交互的网络应用开发,经常使用的有.NET/JAVA/PHP 三大体系;还有一些较新的如NODE.JS,PYTHEN,GO语言等。在这些体系上大多都有面向设计模式的应用框架,如java的SSH/MYBAITS、PHP的thinkPHP、YII等。也还有基于应用平台的服务开发。, G6 C" C( J7 e9 h6 u3 @$ v, v' \) G& P& V
, e4 ^1 Q. k& _. y4 V, m2 d, T
       三、数据库语言技术,分为关系型和非关系型两大类,典型的有mySQL、sqlSERVER、Oracle、mogonDB等数据库。还涉及到架构运维技术,后端服务器的负载均衡设计开发,redis等分布式数据库管理及维护等。2 o" E4 ]- g7 j! s6 D4 C; G
5 }# R- T" j" |6 A6 ~4 l% y# z, I
       五、移动开发。移动开发目前看有三类,一类是原生开发,即安卓/苹果/WP端的原生设计程序,用不同的语言做开发,每个不同的平台需要不同的开发环境;另一类是基于前端HTML5/CSS3和JS的web跨平台,然后通过中间件做app包装,实现跨平台的开发。web app是一种趋势,但其由于内核还是基于浏览器的,实际应用的用户体验和性能还不如原生程序,但不失是一种快速、低成本的方法。还有一类是基于某个大型应用平台的移动开发,如微信平台,此类开发按照平台标准的接口,实现在此平台上的应用。

       四、专业领域编程技术。如金融数据分析语言、数学计算语言等等,典型的如matLab" ]  C& t& b6 \" E1 Z% H

       五、大数据平台开发如hadoop,spark网络分布式计算开发7 h+ H0 h% U, F/ W; i. f

       六、嵌入式设备开发技术% b7 z  o+ a9 v8 @* ?
, }8 r9 H% t; h. a; R
程序开发理论(模型、需求、设计、模式、代码)---软件工程/软件开发理论  Q, \# ~0 c6 w  l, k% k& y$ R

       这里是理论范畴,但是和一个系统的开发息息相关。一个项目,从客户提出想法开始,最后到完成功能代码,上线交付整个过程中管理人员和开发人员所涉及到的相关理论。最简单的,一个脚本文件,代码实现单一功能。但随着需求的增多,代码的复杂程度立刻指数型上涨,如何管理?9 m" G+ I" l% O; y. X( Q3 i, j4 y

      一、客户的需求,可能是个模糊的概念,这时候首先需要建立模型,UML建模工具的使用

      二、建模后需求的具体呈现,包括美工UI设计、交互设计、原型设计等技术

      三、具体需求的实现,用什么语言开发,用哪些工具,用什么样的开发方法,如何保证客户需求变更所带来的影响,开发的周期和成本分析,版本控制;
* B0 z$ `, C# ]* l0 k# M6 V' O
      四、软件开发中面向结构、面向对象、基于对象的设计方法,计算机语言理论

      五、具体实现的代码过程,代码MVC/MVP/MVVP开发思路,开发模式理论,产品的移植和维护方法。  

算法理论 ----数学理论,数据结构,复杂度计算,各类算法0 i- g) v7 n% M* e

      在代码的开发过程中,实际业务的实现,经常会遇到算法理论。这些内容更偏向数学和逻辑分析,程序设计中一定回到。经常遇到的有:3 M2 T# i1 p7 b( `9 e; L, G
6 i! S& F! {& N8 m
      一、计算机原理,算法理论,复杂度计算,图灵机理论

      二、数据结构理论,各类数据结构的应用优缺点

      三、数据压缩、加密理论,计算机图形计算理论; [' u* V6 u! J9 V0 J: u

      四、人工智能算法,神经网络,遗传算法,图像识别,逻辑论,自然语言识别算法,虚拟设备理论,。。。
" ~' w. B  D* H  `: M
    
" I9 v$ Q! V) d, a5 K) C, O& p/ V8 }
开发实务(平台,工具,框架等)---成熟软件使用,开发工具、插件使用,开发框架的使用, R3 P+ S6 @. i1 D; p0 I  b, j9 U
; |) s9 m) k5 u5 s4 y9 y
      大量的成熟软件平台,给技术人员开发提供了很好的基础。作为一个开发人员,学会一些必备的软件系统和工具,能大大节省开发时间,减少重复劳动和机械操作。这些软件和工具涉及到上面说到的方方面面,熟练应他们,是基础技能之一。优秀的产品层出不穷,希望大家能多探索,找到最适合自己应用的工具。在以后的博客里,我会尽量列出相关清单,供大家参考。

       以上是本人计算机领域技术学习心得和分析总结,一定无法涵盖所有的内容,错误也难免,只是抛砖引玉,望更专业的人员补充、指正。就更广泛的层次而言,除了以上的知识储备,开发人员更需要的是永恒的好奇心,保持对所有新奇事物科学的认识态度,和积极地接触、学习的永恒动力。要知道这个世界的变化是无时无刻的在进行的。% H$ Z7 x' }+ a

      我本人当前的深入的领域是前端技术。web为王的时代,前端技术蓬勃发展,一入前端深似海!
离线asd123

只看该作者 沙发  发表于: 2017-10-26
时时彩 PK十赛车。
专业。一倍流水无线提款 ,日赚三百以上
有群,有实力大神带玩,各种玩法实力回血。
有需要的速度联系。
高胜率公式带单投注
不是软件判牌 不平注或倍投
免费教学跟单收米回血
每日轻松小赚 长期盈利
注册链接:http://t.cn/R0LF8nD
有兴趣联系我QQ 943638892<br/>牛仔企点辅助软件稳定群发十万好友
asd123
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个