EagleBear2002 的博客

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

$$ \def\po{\mathsf{\textcolor{\red}{po}}} \def\so{\mathsf{\textcolor{\purple}{so}}} \def\wr{\mathsf{\textcolor{\teal}{wr}}} \def\co{\mathsf{\textcolor{\orange}{co}}} \def\Swap{\mathsf{Swap}} $$

摘要

现代应用程序,如社交网络系统和电子商务平台,以大规模数据库为核心,用于存储和检索数据。对数据库的访问通常封装在事务中,允许对共享数据进行的计算与其他并发计算隔离,并具有容错性。现代数据库以性能为代价来交换隔离程度。隔离级别越低,数据库允许表现出的行为就越多,而开发人员需要确保他们的应用程序能够容忍这些行为。

在这项工作中,我们提出了一种基于动态偏序约减的无状态模型检查算法,用于研究依赖于多种常见弱隔离级别的应用程序的正确性,包括读已提交、因果一致性、快照隔离和可串行化。我们展示了这些算法在所有情况下都是完备的、正确的和最优的,并且在所有情况下都具有多项式内存消耗。我们报告了这些算法在 Java Pathfinder 环境中的实现,应用于分布式系统和数据库文献中的一些具有挑战性的应用程序。

作者:

阅读全文 »

问题背景

今天早晨发现手机上的 Microsoft TODO 软件被退出登录,并且使用密码(passwd0001)登录总显示“密码错误”,目前没有找到原因。在尝试重置密码(如 passwd0002)后,希望将密码更改为原密码(passwd0001)。修改密码时遇到了如提示:“使用了旧密码。为了保护帐户,请选择一个新密码。”

解决方案

在上述问题中,微软最多记录当前账户最近的 5 个密码。依次将密码修改为 passwd0003passwd0004passwd0005passwd0006 后,即可再将密码修改为 passwd0001

阅读全文 »

3 月 14 日下午两点三刻,当代最伟大的思想家停止思想了。让他一个人留在房里还不到两分钟,当我们进去的时候,便发现他在安乐椅上安静地睡着了——但已经永远地睡着了。

这个人的逝世,对于欧美战斗的无产阶级,对于历史科学,都是不可估量的损失。这位巨人逝世以后所形成的空白,不久就会使人感觉到。

正像达尔文发现有机界的发展规律一样,马克思发现了人类历史的发展规律,即历来为繁芜丛杂的意识形态所掩盖着的一个简单事实:人们首先必须吃、喝、住、穿,然后才能从事政治、科学、艺术、宗教等等;所以,直接的物质的生活资料的生产,从而一个民族或一个时代的一定的经济发展阶段,便构成基础,人们的国家设施、法的观点、艺术以至宗教观念,就是从这个基础上发展起来的,因而,也必须由这个基础来解释,而不是像过去那样做得相反。

不仅如此。马克思还发现了现代资本主义生产方式和它所产生的资产阶级社会的特殊的运动规律。由于剩余价值的发现,这里就豁然开朗了,而先前无论资产阶级经济学家或者社会主义批评家所做的一切研究都只是在黑暗中摸索。

一生中能有这样两个发现,该是很够了。即使只能作出一个这样的发现,也已经是幸福的了。但是马克思在他所研究的每一个领域,甚至在数学领域,都有独到的发现,这样的领域是很多的,而且其中任何一个领域他都不是浅尝辄止。

阅读全文 »

历史唯物主义的研究范畴

萧前指出:运用唯物主义和辩证法,探讨社会历史的本质和一般规律的科学理论,就是历史唯物主义。[^xq]

考虑到本文的读者大多数了解中国历史和西方历史,特别是中国近现代史,本文不再着重列举批判已经从教材上消失的种种唯心主义历史观和别有用心的历史虚无主义,而将重点放在对经典理论的详细解读,以期引导读者重新思考在课堂和教材当中所学得的历史唯物主义原理,并避免因为对历史规律认识失真而在实践中出现“摸着石头过河”的窘境。

为了使读者直观理解历史唯物主义原理的研究范畴,下面列举了几个经典的历史唯物主义原理结论:

  1. 社会存在决定社会意识
  2. 劳动 shi
  3. 生产力决定生产关系
  4. 经济基础决定上层建筑
  5. 人民史观:人民群众是历史的创造者,“时势造英雄”
  6. 科技观:科学技术是“第一生产力”
阅读全文 »

本文主要内容来自 SpriCoder 的博客,更换了更清晰的图片并根据新的课程设计做了补充和修正。

课程动机

  1. 核心课程:唯一一门系统讲解软件开发管理的课程
  2. 梳理如下的概念
    1. 软件项目管理
    2. 软件生命过程
    3. 软件过程
    4. 软件过程管理
    5. 敏捷软件开发
    6. CMM/CMMI
    7. 瀑布模型
  3. 未来可能需要的部分
    1. DevOps
    2. SRE

软件工程究竟是什么?

阅读全文 »

高举中国特色社会主义伟大旗帜
为全面建设社会主义现代化国家而团结奋斗
——在中国共产党第二十次全国代表大会上的报告
(2022 年 10 月 16 日)
习近平

同志们:

现在,我代表第十九届中央委员会向大会作报告。

中国共产党第二十次全国代表大会,是在全党全国各族人民迈上全面建设社会主义现代化国家新征程、向第二个百年奋斗目标进军的关键时刻召开的一次十分重要的大会。

大会的主题是:高举中国特色社会主义伟大旗帜,全面贯彻新时代中国特色社会主义思想,弘扬伟大建党精神,自信自强、守正创新,踔厉奋发、勇毅前行,为全面建设社会主义现代化国家、全面推进中华民族伟大复兴而团结奋斗。

阅读全文 »

2023 年 8 月 11 日,苏州程开甲小学学生来我校参观,我代表开甲书院接待健雄书院施毅院长和程开甲小学师生一行,并撰写如下解说词,以供参考。

参观路线

南京大学北园内主要道路布局为“三横三纵”,三横指的是由南到北的三江路、两江路、南高路,三纵指的是由东到西的金大路、中大路和汇文路,这六条道路分别纪念了南京大学校史上的六个不同时期。

以上参观路线全长约 900m。

阅读全文 »

日程安排

时间 项目
7 月 17 日 9:30-11:30 报道
7 月 17 日 14:00-16:30(后延时至 18:00 结束) 机试
7 月 17 日 18:30-20:30(后因机试延时而推迟至 19:00 开始) 笔试
7 月 18 日、19 日 面试
8 月 1 日 优秀营员邮件通知

个人经历

  • rank:本院保研线以内
  • 竞赛:ACM-ICPC 金、CCPC 金等
  • 科研:大三独立进行一项教学创新;大二以来在本院参与过若干项目,无论文产出
  • 奖学金:本院两年高额奖学金,无国奖
  • 学工:助教、朋辈导师等

材料准备

阅读全文 »

TODO: 填坑

文档级 JavaScript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
var levelCount = [0, 0, 0, 0, 0, 0, 0]; // 用于记录各级标题的计数

function PrintBookmarks(bm, nLevel) {
if (nLevel != 0) { // don't print the root
bmReport.absIndent = bmTab * (nLevel - 1);
bm.execute();

// 添加层级序号,从二级标题开始编号
var title = getNumberedTitle(bm.name, nLevel);

var pageNum = (bm.doc.pageNum + 1).toString();

// 计算标题和页码的字符长度,包括中文字符
var titleLen = countCharacters(title);
var pageNumLen = countCharacters(pageNum);

// var rptnum = Math.floor((totalWidth - titleWidth - pageNumWidth) / measureTextWidth('.'));
var dots = '.'.repeat(50 - titleLen - pageNumLen); // 总宽度为50,减去标题长度和页码长度,计算出点号的个数
bmReport.writeText(title + dots + pageNum, { align: "right" });
// bmReport.vspace(12); // 增大行间距
}
if (bm.children != null)
for (var i = 0; i < bm.children.length; i++)
PrintBookmarks(bm.children[i], nLevel + 1);
}

// 获取层级序号,从二级标题开始编号
function getNumberedTitle(title, nLevel) {
if (nLevel === 1) {
return title;
}

levelCount[nLevel]++; // 当前层级计数增加

// 生成层级序号
var numberedTitle = "";
for (var i = 2; i <= nLevel; i++) {
numberedTitle += levelCount[i] + ".";
}

// 添加标题内容
numberedTitle += " " + title;
return numberedTitle;
}

// 计算字符长度,包括中文字符
function countCharacters(str) {
var count = 0;
for (var i = 0; i < str.length; i++) {
if (str.charCodeAt(i) > 127) {
count += 2; // 中文字符占两个字符长度
} else {
count += 1;
}
}
return count;
}

bmTab = 15; // 调整缩进的距离,使目录更美观
bmReport = new Report();
bmReport.size = 2;
bmReport.writeText(this.title);
bmReport.writeText(" ");
bmReport.size = 1.5;
bmReport.writeText("目录");
bmReport.writeText(" ");
bmReport.size = 1;
PrintBookmarks(this.bookmarkRoot, 0);
global.bmRep = bmReport; // make global

// 使用try-catch块确保目录页的生成不会出错
global.wrtDoc = app.setInterval(
'try {' +
' reportDoc = global.bmRep.open("Listing of Bookmarks");' +
' console.println("Executed Report.open");' +
' app.clearInterval(global.wrtDoc);' +
' delete global.wrtDoc;' +
' console.println("Executed App.clearInterval");' +
' reportDoc.info.title = "Bookmark Listings";' +
' reportDoc.info.Author = "List Bookmark Sequence";' +
'} catch (e) {console.println("Waiting...: " + e);}', 100);

问题背景

在使用 Typora 撰写 markdown 文档时,有时需要将其转换成 pdf 格式以便其他平台阅读或打印。

有些文档文本内容比较稀疏,有大量的图片作为辅助说明,这些文档如果作为单栏打印,页面显得稀疏松散且信息量小。

LaTex 对这一问题的解决方案是分栏,视情况分为 2~3 栏。我们希望仿照 LaTex 对 markdown 文本进行分栏,效果如下:

阅读全文 »