
课堂笔记
phyhac
这个作者很懒,什么都没留下…
展开
-
软件构造课堂笔记(3)Java finally语句解析
文章目录问题引出问题结论执行流程存在return时有异常抛出的情况既有return又有异常结论问题引出课上讲到异常处理的finally语句时,讲到这么一个例子(我又简化了一点):public static void foo() { try { System.out.println("1"); // 申请一些资源 // 可能抛出异常 System.out.println("2");原创 2020-05-12 22:22:40 · 356 阅读 · 0 评论 -
软件构造课外笔记:有意义的命名
为了提高代码的可读性和可维护性,对变量、类、包、文件等命名必须做到精确、易于理解、易于(利用现代IDE)维护。几条简单规则:名副其实一旦发现更好的名称,就可以替换掉原有的名称。变量、函数、类的名称本身应该能够回答大多数的问题,如为什么存在、做什么事、怎么用。注释说明的是细节问题,绝大多数时候我们并不看注释。如果名称需要注释补充说明,就还不算名副其实。重构时可以尝试将注释要点(重要属性、计量单位等)放入名称当中。体现本意的名称更易于理解。书中重构代码的一个例子:public List<in原创 2020-05-08 17:58:21 · 246 阅读 · 0 评论 -
软件构造课堂笔记(2)初识设计模式
文章目录引入结构型模式Adapter 适配器模式Decorator 装饰器模式Facade 外观模式行为型模式Strategy 策略模式Templete 模板模式Iterator 迭代器模式引入设计模式是程序设计人员在以往编程经历的基础上,总结出的一套具有广泛适用性和实用性的设计策略。遵循设计模式的原则,有利于开发出一套易于理解、易于复用,同时结构也足够精巧的程序。接下来我将简要说明课上介绍...原创 2020-04-21 22:49:54 · 264 阅读 · 0 评论 -
算法设计与分析课堂笔记(3)搜索优化策略
文章目录引出爬山法基本思想解法分析Best-First法基本思想解法分析分支界限法基本思想解法分析A*法基本思想解法分析总结引出我们最常见的BFS和DFS是搜索算法的基础,BFS是以广度方向不断延伸边界进行扩展,而DFS则是沿深度方向直指最终结果。二者分别有着特定的生长规律,使得遍历能够有序的进行,但是在延伸时还是缺少一些启发式的选择。二者因此也可以被认作是一种暴力穷举,还有很大的优化空间。...原创 2020-04-21 00:04:42 · 631 阅读 · 0 评论 -
算法设计与分析课堂笔记(2)摊还分析
文章目录引出聚合分析基本思想解法分析核分析基本思想解法分析势能分析基本思想解法分析总结引出当我们在设计一个数据结构时,评估一个数据结构操作的复杂度可能会成为一个问题;考虑这样一种情况:数据结构中特定操作的复杂性很高,但是实际用到的机会不多,所以和其他操作的复杂性“平摊”一下,从整体上讲该数据结构使用起来复杂性就降低了。因为数据结构上的操作相互之间可能是有关联的。不考虑操作之间的关联,只盯着...原创 2020-04-17 12:01:33 · 397 阅读 · 0 评论 -
软件构造课堂笔记(1)重新理解软件结构
随着课程进度推进,我们需要处理的软件结构也变得更加复杂。课上在演示结构关系时,习惯将委托、继承、实现等这些对象关系画在一个类图里,可能理解起来还会比较让人困惑。这里我想转换一下看待软件结构的视角,将这种错综复杂的关系图分解为2棵不太严格的树,重新理解软件的结构。这两个模型只是我个人理解所使用的,并不是书面上标准的概念。接下来,我们主要将视角集中在类、对象的层面,着重于委托和继承关系,构建这个...原创 2020-04-15 19:05:31 · 387 阅读 · 0 评论 -
算法设计与分析课堂笔记(1)现代优化算法
产生原因工程领域内存在大量的优化问题,这些优化问题难以求解的原因:搜索空间的可能解数目太多以至于无法采用穷举搜索法寻找最优解;简化模型得到的结果往往是没有实际意义的;(脱离众多现实因素)阶被严格限制,以至于找到一个可行解都很难,遑论最优解;很多时候采用自然界最朴素的策略来应对这些问题,反而能够得到不错的结果。主要分类优化算法主要分为启发式算法和智能随机算法。启发式算法依赖对问...原创 2020-04-14 15:20:25 · 2709 阅读 · 0 评论