Hanerson 的学术车辙

观察 · 描述 · 记录

其一·铜鼎

井壁磴道如肋,苔从石罅渗出,碧色浸人,湿可鉴影。趾扣阶棱,觉石面经前趾磨啮,已成弧凹。下及井底,鼎高过丈,锈叠如鳞,底锈已玄。鼎中沙沸,不闻水响,惟沙砾相戞,作燥白声,若万蚁啮骨。热气袭面,初觉灼,旋即枯。

其二·桥钱

桥白玉,泥地雨渥,桥面滑腻若脂,无纤尘。翁立桥首,掷钱于空,钱坠泥中,半没。俯身欲拾,翁叱之,声沉若自膈出。敛手归舍,舍中已有携其钱者,锈色新伪,心知其异。欲掷窗外,启牖,桥首设丧,翁尸在焉,吏卒翻泥索钱,遍搜行客。急纳钱于袖,下楼。阶无尽,每层皆达一皓白广厅,厅心立短杆,悬黑旂一,升之极缓,若溺者浮水。四围忽集多人,寂然同趋,环杆而跑,禁步惟驰。

其三·赤轮

入店市物,人潮拥塞,踵接肩摩,几至足不履地。掌中攥铜钱数枚,及付,钱化为赤齿轮,雕镂精绝。贾人色变,叱曰:”伪币!”四顾人迹顿空,堂宇豁然。怖而反奔,长廊幽邃,渐窄渐软,终至匍匐乃进。尽处一室逼仄,中设桌案,案下有柜。启之,柜底列赤钱如阵,粘固不可取,若本就在彼。

数据挖掘概述 (DM & KDD)

什么是数据挖掘?

  • 别名:数据库中的知识发现 (KDD, Knowledge Discovery in Database)。
  • 核心定义:从大量、完整的数据库(或数据仓库)中,提取出隐含的、事先未知的、潜在有用的**模式(规则)**的过程。
  • 本质:与传统的查询(找已知)和统计不同,数据挖掘是通过归纳发现未知的规律。
阅读全文 »

核心概念与模型结构

基本组件

  • 事实表 (Fact Table)
    • 多维模型的核心,记录业务事件的度量值(可量化数据)。
    • 度量值:通常为数值型(可加、半加、不可加),是分析的对象。
    • 外关键字 (FK):连接维度表,组合构成事实表的主键。
    • 粒度 (Granularity):事实表中一行所代表的含义(如:每一笔POS交易中的单个商品条目)。
  • 维度表 (Dimension Table)
    • 入口:是用户查询、筛选和报表分组的“列”。
    • 属性:文本型或离散数据,提供描述性信息(如:日期、产品名、商店地址)。
    • 特点:列多行少(相对于事实表),属性高度反规范化。
  • 融合:通过外键将维度表和事实表连接起来(见下方的星型模型)。
阅读全文 »

设计背景与核心理念

设计方法的起源

  • 共同点:数据库设计的许多思想(如数据模型)可以应用于数据仓库。
  • 不同点
    • OLTP (事务型):需求明确,遵循传统的 SDLC (系统开发生命周期,需求驱动)。
    • DW (分析型):需求不明确,只能在装载部分数据后才能弄清,因此无法完全用需求驱动,而采用 CLDS (由数据驱动的生命周期)。

操作型数据库 vs. 数据仓库

维度 操作型数据库 (OLTP) 数据仓库 (DW)
处理类型 面向应用 (日常事务) 面向分析 (决策支持)
需求 确定、明确 不确定、不断变化
设计目标 事务处理性能 (高并发) 全局一致的数据环境 (历史、集成)
输入 事务相关数据 多种多样 (来自多个源系统)
设计方法 SDLC (系统生命周期) CLDS (需求在后期明确)
阅读全文 »

写在前面: 本文致力于对于2026年春季南京大学商务智能(Business Intelligence)做一个简要的重点复习,内容不能用于实际生产实践 (或者至少避免使用?)

使用AI对于一些较为抽象的概念进行了简短解释 (考试也只是要求能知道XXX是啥就可以)

BI构件

需要明确各个构件的含义/作用

Data WareHouse

什么是操作/分析型数据

  • 操作型数据
    • 事务处理所需要的细节性的数据,是面向企业员工的日常业务处理过程的,通常由数据库管理系统来负责其存储与管理
  • 分析型数据
    • 分析处理所需的综合性数据,是面向企业管理人员的决策需要的
阅读全文 »

本文是题目导向的,立足于期末考试可能会出现的题目,并且对于提到的相关概念做了一个简单整理

运行时存储结构 (Runtime Storage Organization)

程序的运行时内存通常划分为三个主要区域,分别存放不同生命周期的数据:

  • 代码区 (Code Segment):存放编译后的机器指令(如 mainsub 函数的代码)。由于大小在编译时已知,属于静态区域。
  • 静态数据区 (Static Data Segment):存放编译时大小已知的数据对象。
    • 包括:全局变量(如 $int$ $m=10$)、全局常量、编译器产生的辅助数据。
    • 生命周期:贯穿整个程序运行过程。
  • 动态数据区 (Dynamic Data Segment):存放运行时动态产生的数据,分为栈区堆区
    • 栈区 (Stack):存放活动记录 (Activation Record),即函数调用的栈帧。遵循后进先出(LIFO)原则。由 BP (栈底指针) 和 SP (栈顶指针) 管理。
    • 堆区 (Heap):存放生命周期不确定的数据(如 malloc/new 申请的对象),由程序员手动释放或由垃圾回收器管理。
阅读全文 »

基于数组模拟堆实现的堆排序

数组模拟堆的下标变换(1-based)

在使用数组模拟堆时,通常采用 1-based 索引(即数组下标从 1 开始),这样可以简化父子节点的下标计算:

操作 下标变换公式
父节点下标 parent = i / 2
左孩子下标 left = 2 * i
右孩子下标 right = 2 * i + 1

注意:Java 数组默认是 0-based,因此实际实现时,通常会在数组头部留一个空位(heap[0] 不使用),或者使用 heap.length - 1 作为有效堆大小,并在计算时进行偏移。

阅读全文 »

2026高级算法复习核心总结

1. 算法复杂度与最优性

概念 含义 举例
最坏复杂度 算法在所有可能输入中所需的最大时间/空间 快排最坏 $O(n^2)$(每次选到最差 pivot)
平均复杂度 算法在所有可能输入上的期望时间/空间 快排平均 $O(n\log n)$
最优性 某算法的复杂度达到该问题的下界,无法再改进 比较排序下界 $\Omega(n\log n)$,归并排序达到该下界 → 最优
阅读全文 »