当前位置:首页 > 技术知识 > 正文内容

程序员修炼内功的方法_程序员 内功

maynowei9个月前 (09-04)技术知识90


给自己定个目标,每年要至少新增两本书。

1、编程基础

《C++ Primer》

《C++编程思想》

《代码大全》

《Clean Code》

《深入理解C++对象模型》

《大规模C++程序设计》

《Effective C++》

2、LINUX基础

《鸟哥的linux私房菜》

《UNIX环境高级编程》

《深入剖析Linux设备与驱动程序》

《Linux kernel development》

3、算法和数据结构

《算法导论》

leetcode刷题

4、计算机基础

《深入理解计算机系统》

《编译原理》

5、设计模式

《设计模式:可复用面向对象软件的基础》

《Head First设计模式》

6、Android开发

《老罗的android之旅》



此外还需掌握

一、网络基础

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

网络的物理基础

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

网络协议

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

TCP/IP 协议

UDP协议

HTTP 协议

FTP协议

另外对于OSI 7层网络模型也要熟悉。这些东西可以说是整个网络通信的基石,万变不离其中,也是很多大厂在面试的时候的必考知识。

二、操作系统基础

现代计算机的操作系统大家熟知的是windows和linux,操作系统本质上为用户提供了一个与计算机更容易去交互的人机接口,在很大程度上屏蔽了计算机底层的复杂性,使得普通人都可以顺利的用计算机来执行任务,并且提供了一系列的编程接口方面人们对计算机的应用功能进行扩展,可以说非常的了不起。

作为一个优秀的程序员,对于操作系统的原理应该做到非常熟悉,比如操作系统的启动过程,应用程序的加载过程,用户模式、内核模式、进程和线程等等,

windows的话,推荐大家看《windows核心编程》

linux推荐看《Linux内核设计与实现》、《深入理解Linux内核》

这些书都适合反复阅读,第一遍没有看懂没关系,要结合工作内容,工作经验再去反复理解,终将有所收获。

三、数据结构和算法

程序 = 数据结构+算法,可想这两个东西在编程领域的重要性质,也是每个优秀的程序员必须要掌握的东西。

现在确实有很多封装好的算法库和数据结构,所以很多人停在了会用的阶段,对于背后的原理并不清楚,我们不重复造轮子但是必须要有造轮子的能力,因为你很可能遇到没有适合你的轮子,这也是为什么很多大厂面试都要考算法和数据结构的原因,它能看出一个人解决问题的思维模式,而不是应用工具的能力。

常用的数据结构:

数组、链表、栈和队列、树、图、哈希表

这些结构就是各种高级数据结构的实现基础,也是算法的实现基础,务必要熟悉和掌握

常用的算法:

排序算法:

1.冒泡排序

2.选择排序

3.插入排序

4.快速排序

查找算法:

1.折半查找

2.倒排索引

3.二叉树查找

4.散列表查找

以上就是我认为一个优秀的程序员应该努力和花时间去修炼的内功心法,这些内功和心法才是你真正的核心竞争力所在,有了这些内功,那么你练起外功来也会感觉相当的容易,最重要的是你能解决别人解决不了的问题。

当然书上说来终觉浅,欲知此事要躬行,积累的过程就两个字:坚持!!!!!

相关文章

产品经理的术与器:从想法到产品原型

工欲善其事,必先利其器。从idea,到product,中间的可谓要经历几番曲折, 产品定位确定决定产品的生死,产品功能需求的确定决定着开发的周期和试错的成本,互联网拼的就是快,所以要做 MVP(最小化...

Shopee新手指南:Shopee卖家中心用户界面介绍

1.Shopee各站点前台网页链接:2.Shopee各站点后台网页链接3.Shopee APP下载:安卓版下载链接:https://pan.baidu.com/s/1eSp8M1k#list/path...

Linux C++实现多线程同步的四种方式(超级详细)

背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题?通过多线程模拟多窗口售票为例:#include <iostream>#include<pthread.h>#inc...

C语言编写多线程,什么时候要使用互斥锁?为什么要使用互斥锁?

在多线程编程中,当多个线程同时访问共享资源(如变量、文件等)时,会出现竞态条件(Race Condition)问题,导致程序的行为不可预测。为了避免这种问题,需要使用互斥锁来保护共享资源的访问。互斥锁...

Oracle又双叕开始严查JDK,连夜提桶跑路

哈佛商业报道了最近几起北美的JDK许可问题公司用了来源不明的JDK,怕蹲里面,连夜提桶跑路The company uses JDK from unknown sources, and is afrai...

Oracle高级数据库特性揭秘:存储过程、触发器与权限管理

当谈论Oracle高级数据库特性时,存储过程和函数、触发器、权限管理和安全性以及数据库连接和远程访问是关键概念。下面我将为每个主题提供详细的解释,并附上高质量示例。存储过程和函数: 存储过程和函数是预...