程序员的内功修炼指南

IT信息技术的发展速度可以用“爆炸”两个字来形容,尤其是近几年代码开源后,新的技术,框架,工具层出不穷,在这样一种情况下,对IT行业的程序员来说,有好处,也有坏处。好处是,新技术往往能更好地去解决业务问题,性能问题,规模问题,突破限制,坏处是很多人都在感慨追不上技术的步伐,一不小心可能就掉了队。
我这些年也学习了不少技术,从编程语言来看有:C、C++、JAVA、Python,各种流行的开发框架如早期MFC、Structs、SpringMVC、SpringBoot、JPA、Dubbo 等等非常多,多年后回过头来看,这些东西都是程序员的外在功夫,就好比武功里面的招式,很容易得其行,但是要领悟其意,却不是每个人都能做得到,需要有很强得内功修养,那程序员得内功是什么? 怎么修炼内功,我总结可能以下几个方面需要去关注:

一、计算机基础

这部分包含些什么东西呢?

  • 计算机的历史
    作为程序员,计算机是我们工作的工具,非常有必要了解计算机的整个历史发展过程,从历史的过程可以理解计算机的本质是什么?我们为什么需要计算机?计算机的根在哪里?哪些公司一直推动着计算机的发展?
    计算机历史1
    计算机历史2
    从上面的图可以看出,计算机发展到今天大概经历了4代大的变革,体积越来越小,功能越来越强,从科研机构、公司、到个人计算机,它本质的用途是用来做数学运算的,到如今已经完全超越了数学计算。

  • 计算机组成原理
    计算机组成原理可以说是我们认识计算机,解开的它的神秘面纱的必修课,计算机的功能这么强大,它的工作原理是什么?它由哪些部分组成,它是如何设计的?这里面的知识非常多,我用一张图帮助大家回忆一下:
    计算机组成
    这张图相信大家都不陌生,它是现代计算机结构的抽象模型,再复杂的计算机,其本质就是这么几个东西,所以我们在学习新的知识的时候重要的是去思考信息背后的思想,任何复杂的东西在经过抽象之后都可以变的简单和易于理解。程序员要善于用抽象思维去解决问题,建议大家把《计算机组成原理》这本书再好好重温几遍,一定会有不少新的收获。

二、网络基础

现在的信息世界已经离不开网络,人们的生活也离不开网络,这一点也不夸张,是网络了实现了信息互联,打破了时间和空间的限制,在整个因特网上连接着数以万计的计算机,那么对于程序员来说网络基础知识的修炼必不可少。

  • 网络的物理基础
    要构成一个网络,我们需要什么,是怎么做的,有哪些设备支持,交换机,路由器,网线,局域网、广域网、IP地址、DNS服务器等等,这些虽然跟具体工作可能关系不大,但是了解它们有助于你理解网络的工作方式,理解信息是如何互联的。

  • 网络协议
    这部分内容对于程序员来说就非常重要了,因为我们编写的程序要实现网络通信,都是要按照通信协议来,深入了解协议,能够帮助你快速优化程序和判断问题,以下几个协议是必须要吃透的:

  1. TCP/IP 协议
  2. UDP协议
  3. HTTP 协议
  4. FTP协议
    另外对于OSI 7层网络模型也要熟悉。这些东西可以说是整个网络通信的基石,万变不离其中,也是很多大厂在面试的时候的必考知识。

三、操作系统基础

现代计算机的操作系统大家熟知的是windows和linux,操作系统本质上为用户提供了一个与计算机更容易去交互的人机接口,在很大程度上屏蔽了计算机底层的复杂性,使得普通人都可以顺利的用计算机来执行任务,并且提供了一系列的编程接口方面人们对计算机的应用功能进行扩展,可以说非常的了不起。
作为一个优秀的程序员,对于操作系统的原理应该做到非常熟悉,比如操作系统的启动过程,应用程序的加载过程,用户模式、内核模式、进程和线程等等,
windows的话,推荐大家看《windows核心编程》
linux推荐看《Linux内核设计与实现》、《深入理解Linux内核》
这些书都适合反复阅读,第一遍没有看懂没关系,要结合工作内容,工作经验再去反复理解,终将有所收获。

四、数据结构和算法

程序 = 数据结构+算法,可想这两个东西在编程领域的重要性质,也是每个优秀的程序员必须要掌握的东西。
现在确实有很多封装好的算法库和数据结构,所以很多人停在了会用的阶段,对于背后的原理并不清楚,我们不重复造轮子但是必须要有造轮子的能力,因为你很可能遇到没有适合你的轮子,这也是为什么很多大厂面试都要考算法和数据结构的原因,它能看出一个人解决问题的思维模式,而不是应用工具的能力。
常用的数据结构:
数组、链表、栈和队列、树、图、哈希表
这些结构就是各种高级数据结构的实现基础,也是算法的实现基础,务必要熟悉和掌握
常用的算法:
排序算法:
1.冒泡排序
2.选择排序
3.插入排序
4.快速排序
查找算法:
1.折半查找
2.倒排索引
3.二叉树查找
4.散列表查找

以上就是我认为一个优秀的程序员应该努力和花时间去修炼的内功心法,这些内功和心法才是你真正的核心竞争力所在,有了这些内功,那么你练起外功来也会感觉相当的容易,最重要的是你能解决别人解决不了的问题。
当然书上说来终觉浅,欲知此事要躬行,积累的过程就两个字:坚持

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读