核心内容摘要
深夜的绝对领域:探寻感官极致与高清无广告的数字伊甸园
目录
软件工程导论宏观篇
软件危机为什么程序员总在加班
软件生命周期软件的一生
数据结构——线性表微观篇
顺序表 (Sequential List)
链表 (Linked List)知识卡片一表对比心得
软件工程导论宏观篇
软件危机为什么程序员总在加班软件危机是指在计算机软件开发和维护过程中所遇到的一系列严重问题。
核心痛点必考估不准成本和进度经常超出预期。
不满意用户拿到的产品和想的不一样。
质量差Bug 满天飞可靠性低。
难维护前人写的代码像“屎山”后人不敢动。
没文档开发过程缺乏记录全靠开发者大脑记忆。
注释深度理解软件危机的产生不是因为程序员变笨了而是软件的规模和复杂度增长速度远远超过了人类手工管理的能力。
就像盖一间草房不需要蓝图但盖一座摩天大楼如果没有工程学必倒无疑。
软件生命周期软件的一生软件不仅仅是“写代码”。
它从出生到消亡经历三个阶段定义期可行性研究、需求分析搞清楚做什么。
开发期概要设计、详细设计、编码、测试搞清楚怎么做并付诸实践。
维护期改正性维护、完善性维护等确保一直好用。
数据结构——线性表微观篇
顺序表 (Sequential List)就像火车站排队每个人必须挨着坐逻辑上相邻物理上也必须相邻。
特点随机存取。
通过瞬间定位。
代价插入平均移动个元素。
删除平均移动个元素。
时间复杂度查找增删。
链表 (Linked List)就像玩“寻宝游戏”你手里只有下一个人的线索指针。
逻辑相邻物理上可以各在天涯。
核心操作考研/面试常客在节点后插入节点s-next p-next; //
先接后路 p-next s; //
再断前路注释避坑指南顺序千万不能反如果先写p-next s那么原本指向后面那个节点的指针就丢失了整条链表就像断了线的风筝找不回来了。
知识卡片一表对比特性顺序表 (Array)链表 (Linked List)存储空间预先分配可能浪费动态分配利用率高存取速度随机访问顺序访问增删效率需大面积搬家仅需改动指针适用场景存储规模固定频繁查询存储规模未知频繁增删心得第一天的学习让我们明白软件工程是教你如何“避坑”数据结构是教你如何“加速”。
对于软件危机记住它不仅仅是技术问题更多是管理和沟通的问题。
对于线性表一定要在纸上画出指针指向的过程脑子里有了图代码自然就顺了。
课后练习建议尝试在不看书的情况下手写一遍单链表的逆置算法。
这是检验你是否真正掌握指针逻辑的“金标准”。