0%

这几年里,世界里发生了很多大事,俄乌冲突,巴以冲突、中国南海问题、台海局势等。战争在发生,也有一些火苗。我们普通老百姓总是对国家恨其不争,期盼着什么时候收复台湾。

了解战争的发生条件,增加对国防的认知,会更好的帮助我们认知这个世界。战争离我们很远,也可能很近。

阅读全文 »

程序规模对架构的影响

  • 随着项目规模的扩大,沟通交流也需要有保障。大多数方法论的要点在于减少沟通问题,而一个方法论的存亡也取决于它是否能够有效地促进沟通。
  • 其他所有条件都等同的情况下,大项目的生产率将低于小项目。
  • 其他所有条件都等同的情况下,大项目的每千行代码错误率高于小项目。
  • 在小项目中一些看起来理所当然的活动,在大型项目中则必须认真规划。随着项目规模的扩大,构建活动越来越不占主导。
  • 与缩减 “重量级” 方法论相比,对 “轻量级” 方法论进行扩充往往效果更佳。在所有方法论当中,最有效的当属 “适量级” 方法论。
阅读全文 »

软件质量概述

  • 高质量代码最终会让我们倍感轻松,无需付出更多,但是需要重新分配资源,以低廉的成本来防止缺陷出现,从而避免代价高昂的修正工作。
  • 并非所有质量保证目标都可以同时实现。明确哪些目标是你希望达到的,并就这些目标与团队中的其他人员进行沟通。
  • 没有任何一种缺陷检测技术能够解决全部问题,测试本身并不是排除错误的最有效方法。成功的质量保证计划使用多种不同的技术来检测不同类型的错误。
  • 可以在构建期间应用有效的质量保证技术,并且在构建前采用许多同样强大的技术。越早找到缺陷,它与代码的其余部分就会越少纠缠在一起,造成的损害就越小。
  • 软件领域的质量保证是面向过程的。软件开发与制造业不一样,在这里并不存在影响最终产品的重复阶段,因此最终产品的质量受控于开发软件时所采用的过程。
阅读全文 »

直线型代码的组织

  • 主要基于顺序依赖关系对直线型代码进行组织。
  • 可使用良好的子程序名称、参数列表、注释以及(如果代码至关重要的话)用内务处理变量使依赖关系变得明显。
  • 如果代码之间没有顺序依赖关系,就设法使相关语句尽可能放在一起。
阅读全文 »

变量使用中的常规问题

  • 数据的初始化很容易出错,所以请使用本章描述的初始化技术来避免由意外初始值引起的问题。
  • 最小化每个变量的作用域。把对同一变量的引用集中在一起。把它限定在子程序或类的范围内。避免使用全局数据。
  • 处理相同变量的语句,尽可能集中在一起。
  • 早期绑定往往会限制灵活性,但有助于降低复杂度。后期绑定往往会增加灵活性,但代价是增加了复杂度。
  • 每个变量只有一个用途。
阅读全文 »

软件构建的设计

  • 软件的首要技术使命是管理复杂性。以简单性作为目标的设计方案对此最有帮助。
  • 简单性可通过两种方式来实现:一是尽量减少任何人在大脑在任何时候必须处理的本质上复杂性的数量;二是防止偶然的复杂性无谓地扩散。
  • 设计是一种启发式过程。固守于某种单一的方法会抑制创新能力,进而损及程序。
  • 优秀的设计都是迭代而来的。尝试的设计可能性越多,最终的设计方案越好。
  • 信息隐藏是一个非常有价值的概念。通过询问 “我应该隐藏什么?” 来解决许多非常困难的设计问题。
阅读全文 »

软件构建

  • 软件构建是软件开发的核心活动;软件构建是每个项目唯一不可或缺的活动。
  • 软件构建主要包括详细设计、编码、调试、集成和开发者测试(单元测试和集成测试)活动。
  • 软件构建的其他常用术语是 “编码” “编程” 和 “程序设计”。
  • 软件构建活动的质量对软件质量有实质性的影响。
  • 个人对软件构建的理解程度,决定着一名程序员的优秀程度。
阅读全文 »

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。

个人笔记总结:

阅读全文 »