EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

摘要

本文整理了 2025Spring 李言辉老师的《高级算法》课程复习题。

部分内容来自《算法导论》,推荐作为复习参考。

算法复杂度

  • 最坏复杂度:算法在任何输入实例上运行时间的最坏情况,记为 $T_{\text{worst}}(n)$。
  • 举例:快速排序最坏情况 $O(n^2)$(当数组已有序且主元选择不当)。
  • 平均复杂度:算法在所有可能输入实例上运行时间的期望,记为 $T_{\text{avg}}(n)$。
  • 举例:快速排序平均情况 $O(n \log n)$。
  • 最优复杂度:算法在“最优”输入实例上的最低运行时间(较少使用)。
  • 举例:冒泡排序在已有序数组上为 $O(n)$。
阅读全文 »

摘要

领域驱动设计基础

领域驱动设计的立意是建立以领域为驱动力的过程体系,在这一核心驱动力的设计思想指导下,并没有死板僵化的构建过程来约束你。

领域驱动设计的价值

  1. 运用分而治之思想,通过子领域与限界上下文对领域的划分降低业务复杂度
  2. 通过领域建模与统一语言,为核电行业提炼由领域模型构成的企业资产,通过复用降低技术复杂度
  3. 遵循领域驱动设计统一过程,打造标准而固化的软件构建过程,降低工程复杂度
阅读全文 »

本文主要内容来自 SpriCoder 的博客,修改了一些翻译错误和笔误,修改了一些表格的样式,添加了 2022 年考题、2025Spring《软件体系结构》考题和解答。

软件架构简答题

软件架构介绍

【2025】【2015B】【2016A】【2019】Architecture,structure 和 Design 的区别?What is difference between architecture and design? What is difference between architecture and structure?

所有架构都是软件设计,但并非所有设计都是软件架构;架构是设计过程的一部分。架构提供了设计的抽象视图。架构是高层设计和一组设计决策;程序或计算系统的软件架构是系统的一个或多个结构,它包括软件元素、这些元素的外部可见属性以及它们之间的关系。架构是高层结构。架构定义结构。结构的属性是由体系结构的设计引起的。

  1. Design 包含 Architecture,Architecture 包含 Structure;
  2. 体系结构是关于软件设计的,所有体系结构都是设计,但是不是所有的设计都是体系结构,体系结构是软件设计的一个部分;
  3. 结构是静态的、逻辑的,是关于系统如何构成的;
  4. 架构除包含结构,还会包含组件之间的相关的关系结构,并定义一些动态的行为。
阅读全文 »

写在前面

我大抵是困在这课程的围城里了。案头翻出泛黄的本科笔记,那些工整字迹竟像被水渍晕染的碑文,横竖都透着混沌;油印的讲义在台灯下泛着冷光,铅字排成的方阵倒显出些魑魅魍魉的形状。这软件体系结构的学问,原是极玄妙的,横竖都逃不过“晦涩”二字——譬如赤脚人走长街,偏要学那穿绣鞋的太太们量布裁衣。

诸君且看我这窘态:既无那经手项目的阅历,亦缺那敲烂键盘的功夫,倒要对着满纸架构图学《体系结构》。这等滑稽光景,恰似荒村野店的厨子,捧着西餐刀叉要解五香卤煮的筋络。那些个分层架构、设计模式,原是先生们用粉笔描摹的渡河石,如今浸了冷汗,竟在石板上洇出团团墨迹,教人辨不清是路标还是符咒。

夜半风起时,忽觉这课程倒似铁屋子里的煤油灯——灯芯燃得焦苦,光晕却照不破四壁的暗。诸君且备好火把罢,学问的深潭里原没有桥,横竖都得摸黑泅渡。只得用 AI 写些个注解,聊作考试大纲之补阙。

诸君自求多福哉。

Final Exam

  1. 总评成绩 = 平时作业 40% + 期末考试 60%
  2. 简答题、论述/问答题、设计分析题
  3. 英文题目、中文或英文答题
  4. 个别题目可能需画图
  5. 卷面分数 = 前六讲基础内容 60% + 后三讲高阶内容 40%

【往年考试题汇总和 2025Spring 押题】软件系统设计-复习 | EagleBear2002 的博客

阅读全文 »

摘要

本文是基于温竣岩视频 【瞭望】医疗改革问路(上)——市场主导还是政府主导?中国医改艰难寻路 的总结。

锁链

2024 年 4 月,全国卫生工作会议召开。卫生部常务副部长高强表示,将鼓励社会资金投入医疗业。这场会之后不就就是谷雨,春天最后一个节气。

医改内战

阅读全文 »

数据库管理系统添加价值的方式包括交易抽象,应用程序编码器可以将多个数据访问组合在一起,这些数据访问共同执行一个有意义的现实世界活动。该平台将提供“ACID”特性(原子,一致,孤立和耐用),因此整个交易像单个事件一样发生。允许此外观的机制包括崩溃恢复和回滚(通常基于日志条目)和并发控制(通常涉及锁)。

为了捕获并发控制的基本目标,我们考虑系统的执行是否为“可序列化”,这意味着另一种执行根本没有相互交流,并且对于最终数据的最终状态和每个交易中观察到的值都具有相同的结果。在可序列化的执行中,即使平台没有明确执行任何完整性属性,只要每个程序单独运行的每个程序都可以保留该完整性,即使它没有明确执行。理想是,平台的每个执行都将是可序列化的。

并发控制的早期机制是 2 相锁定,基于现场数据的更新方法,并采用独家锁(用于数据修改)或可共享锁(用于读取)并将其保留到交易结束。相反,许多最近的平台都使用多个访问在较旧版本的数据项的多元化机制,而不是最新版本。这可以允许更好的性能,因为甚至在并发作者完成之前就可以进行阅读。

从数据库技术的早期开始,在 API 中提供了平台,该命令可以调用该应用程序以将交易隔离级别设置为可序列化,可重复的读取或读取的命令。Gray 等人[1]引入了读取的隔离,作为锁定的变化,仅在读取访问期间保存可共享的锁,而不是像传统的可序列化的 2 相锁定一样,而不是直到交易结束。这样做可能会提高性能,但是数据完整性可能会面临风险。多转化并发控制也存在变化,而隔离性比序列方差少,尽管在给定级别允许的系统行为与基于传统的基于锁定的方式的情况并不完全相同。

阅读全文 »

摘要

名称 描述 含义
三阳开泰 连续三根中阳线或大阳线 强烈的看多信号
三个白武士 三个短小的、连续上升的阳线 见底回升的初期
三只乌鸦 连续出现三根中阴线或大阴线 强烈的看空信号,容易出现在市场头部或高位,尤其是从牛转熊的过程
出水芙蓉 1. 股价经过一段时间的横盘整理
2. 均线系统最后也粘合在一起
3. 一根大阳线放量突破所有的均线系统
出现在大行情的开始
断头铡刀 与出水芙蓉相反,高位放量阴线跌破均线系统 强烈的看空信号
旭日东升 中阴线或大阴线+包含阴线的阳线 明确看涨信号
孕育线 光头阳线或光头阴线+十字星 上涨或者下跌力量已经衰竭,股价即将要转势
乌云盖顶 处在上涨行情中,出现一根中阳线或者大阳线,第二天收出一根中阴线或大阴线,形成阴盖阳走势。 经典的看空 K 线组合,预示空头的猛烈反击
多方炮 两阳线夹阴线 是较强的看涨信号
空方炮 两阴线夹阳线 后市不看好
早晨之星 - 第一天:一根大阴线
- 第二天:跳空下行的小阴线或小阳线
- 第三天:一根大阳线,股价收复第一天的大部分失地
见底回升
黄昏之星 与早晨之星相反 看空组合

三阳开泰

连续三根中阳线或大阳线,呈现加速上涨态势,是强烈的看多信号。

阅读全文 »