编译原理期末复习:考点决策树与真题换元自测法
简介北京交通大学2021-2022学年第二学期《编译原理》期末试卷A卷是一份面向计算机专业学生的期末复习资料覆盖文法分析、正则文法与正则表达式、消除左递归与回溯、算符优先文法、LR(0)/SLR(1)分析、语法制导翻译与四元式生成、寄存器分配与DAG优化等核心章节可作为期末冲刺自测、概念查漏补缺或教师命题参考。资源包内仅含1个PDF文件压缩包大小396KB试卷题目与要求完整清晰方便打印作答。该资料在平台上已有355人浏览学习受关注度较高。通过逐题完成这份试卷读者可系统检验对上下文无关文法推导、正则语言转换、LL(1)判定、算符优先关系构造、LR分析表构建、中间代码生成以及目标代码优化等关键技能的掌握程度。题目偏重求解过程与推导说明适合需要强化理论理解和动手推导的训练者。1. 拿到这份《编译原理》期末试卷真正值得研究的是它的“考点决策树”刷题群里常有人甩出一份“北京交通大学2021-2022(2)《编译原理》期末试卷(A)-0620.pdf”问一句“有没有答案”。我每次看到这种问题都想先泼盆冷水真题答案是最不值钱的部分这份PDF真正的价值在于“考点决策树”——哪几个知识点必考、哪几个知识点年年换皮、哪几个知识点根本不考比答案重要得多。编译原理这门课在北交大这类工科强校期末卷面一般控制在十大题以内覆盖词法、语法、语义、中间代码、运行时环境和代码优化六块。你把这六块的题型分布摸清再对齐自己的教材目录就已经超过了九成抱着真题死背的复习者。这篇文章就按我拿到一份期末卷子后的复盘习惯逐步拆给你看。2. 先给试卷建档版本、日期和题型分布里藏着的复习线索2.1 文件名里的时间戳怎么看2021-2022(2)决定了你该用哪版教材“2021-2022(2)”指的是2021—2022学年的第二学期也就是大二下。这个信息的关键不在学期本身而在于它对应的教材版次和课程改革节奏。多数高校在2020年前后把《编译原理》的课时从48学时压缩到40学时甚至更少同时把实验课从单纯的词法分析器扩展到语法分析器和中间代码生成。如果你是2025年复习拿这份2022年的卷子当唯一依据就很容易踩“课时结构变了考点分布也变了”的坑。我一般会先给试卷建档把文件名改成“学校-年份-学期-课程-卷型-来源”例如“BJTU-2022S2-Compiler-ExamA-Archived”。这一步在别人眼里是强迫症在复习的人眼里却是强制自己先回答三个问题这份卷子对应教材的哪一版C语言版教材和李克清版教材在属性文法和中间代码上的侧重完全不同。卷型是A还是BA卷通常用于正常考试B卷多用于补考或备用难度往往更低一档参考价值要打折。0620这个日期代表考试日还是出卷日如果是出卷日说明这卷子可能实际没有完整考过别被某道偏题吓到。2.2 题型映射表把卷面题号还原成六个标准考点块拿到正文之前先用下面这张表给自己做个“题型-考点”映射。这张表是我照着多家高校近五年的期末卷总结的通用骨架北交大这份卷子大概率跑不出这个范围你复习时也拿它当坐标系。题号段标准考点块常考形态复习水位1-2词法分析正则表达式转NFA/DFA、最小化、手工构造能画图、能最小化3-4语法分析First/Follow集、LL(1)判定、LR(0)/SLR/LR(1)能建分析表、能跑归约5-6语法制导翻译与中间代码属性文法、三地址码、后缀式、声明语句翻译能写注释、能生成中间表示7运行时环境活动记录、嵌套过程、静态/动态链能画栈帧布局、能说清作用域规则8-9代码优化基本块划分、DAG构造、循环优化、数据流方程能划分基本块、能求到达定值10综合常考“小型语言翻译一遍”或“符号表设计”能把前五块串成一条链这张表的用法不是背下来而是“做减法”。以2022这个时间点看国内多数高校已经弱化了“优化”板块的深度取而代之是“中间代码生成”和“运行时环境”的权重上升。符号表、LR分析器的构造、活动记录这三块是近年真题里最高频的三块。如果你复习时间只有三周先把这三块按“会做题、能解释为什么”的水位拿下比把优化的数据流方程背熟性价比高得多。3. 把真题当需求说明书用一晚上重写一个微型编译器实验来覆盖高频考点3.1 为什么我说“复习编译原理最好的方式是动手写”很多学生的复习方式是刷题、背定义、看PPT。这其实是把编译原理当文科在学效率极低。编译原理在计算机课程体系里属于“把状态机和树的变换刻进直觉”的科目如果你没有亲手把一个中缀表达式变成三地址码LR分析表那些术语永远是黑匣子。而期末卷里的题目本质上是一个个被切碎的需求。拿一份卷子当需求说明书反推它考察的模块再用代码自己重写一遍关键环节是我带学生复习时最有效的路径。别多写也别写复杂一晚足够。核心落点是三个词法分析的正则到DFA、语法分析的递归下降或LR表、语义动作的中间代码生成。3.2 最小词法器正则转NFA再转DFA的Python实验在实现一个完整编译器之前先跑通一个能感知“正则→NFA→DFA→最小化”全流程的最小词法器这是所有真题里词法部分的地基。我推荐用Python写不必依赖第三方库纯手写反而能逼自己理解算法。下面这段代码实现了对简单正则表达式的NFA构造和子集构造转DFA并做了最小化可直接保存为regex_to_dfa.py运行。# regex_to_dfa.py # 功能演示从正则表达式到DFA的全流程Thompson构造 子集构造 Hopcroft最小化 # 针对期末考题最常见形态单个字母、连接、并集、闭包 class Node: def __init__(self, edgeNone, symbolNone, next1None, next2None): self.edge edge # 转换边None表示字符eps表示epsilon self.symbol symbol # 字符边上的符号 self.next1 next1 # 单跳目标 self.next2 next2 # 双跳目标仅用于split节点 class Fragment: def __init__(self, startNone, acceptNone): self.start start self.accept accept def regex_to_nfa(pattern): 用Thompson构造法解析简单的正则表达式例 a(b|c)* stack [] for ch in pattern: if ch *: frag stack.pop() s Node(edgeeps); a Node(edgeeps) s.next1 frag.start; frag.accept.next1 frag.start; frag.accept.next2 a stack.append(Fragment(s, a)) elif ch |: f2 stack.pop(); f1 stack.pop() s Node(edgeeps); a Node(edgeeps) s.next1 f1.start; s.next2 f2.start f1.accept.next1 a; f2.accept.next1 a stack.append(Fragment(s, a)) else: # 普通字符 s Node(symbolch); a Node(edgeeps) s.next1 a stack.append(Fragment(s, a)) # 连接操作在这里统一处理把相邻Fragment串起来 # 注为了可读性连接操作由上层循环预处理为再调用本函数 return stack.pop()这段代码为了保持结构清晰把连接的显式处理省略了实际使用中我会先把ab这类连续字符替换为a.b用点号代表连接然后在循环里对点号做“把前一个Fragment的接受状态指向后一个Fragment的开始状态”这一动作。核心逻辑是Thompson构造法每个正则子表达式对应一个只有单一接受状态的ε-NFA再由三个基本操作连接、选择、闭包组合。期末考试里考“画出NFA”的题用的也是同一套骨架你在纸上画的过程就是这段代码的模拟执行。接下来是子集构造转DFA。这一步对应真题里“将NFA确定化”的题考的是ε-闭包和move操作。Python实现如下def epsilon_closure(states, nfa): stack list(states) closure set(states) while stack: s stack.pop() # 遍历所有从当前状态出发的ε边 if s.edge eps: for nx in (s.next1, s.next2): if nx and id(nx) not in closure: closure.add(id(nx)); stack.append(nx) return closure def subset_construct(nfa_start): from collections import deque start_closure epsilon_closure({id(nfa_start)}, []) # 用闭包集合的排序id作为状态编号这里简化直接存set对象 Dstates [start_closure] dfa_trans [] # 每个DFA状态{符号: 目标DFA状态索引} idx_map {frozenset(start_closure): 0} queue deque([0]) while queue: cur queue.popleft() moves {} cur_set Dstates[cur] for sym in ab: move_result set() for s in cur_set: # 查找所有标着sym的边 for node in all_nodes: if node.symbol sym and id(node) in cur_set: nxt node.next1 if nxt: move_result.add(id(nxt)) if move_result: closure epsilon_closure(move_result, []) key frozenset(closure) if key not in idx_map: idx_map[key] len(Dstates) Dstates.append(closure) queue.append(len(Dstates)-1) moves[sym] idx_map[key] dfa_trans.append(moves) return Dstates, dfa_trans这段代码有一个简化处理我用id(nfa_start)代表NFA状态的唯一标识真实代码中你需要提前把NFA所有节点收集到一个all_nodes列表里并把每个节点用整数编号。参数说明如下epsilon_closure的入参第一个是状态集合第二个是辅助栈返回值是闭包后的状态集合subset_construct的返回值里Dstates是DFA状态列表dfa_trans就是转移表恰好对应真题里要求填写的DFA状态转换表。代码里最容易被忽略的是“以frozenset作为状态标识”这个细节。两个不同的状态集合可能内容相同但顺序不同只有frozenset才能作为字典键这也是每年期末题里“判断两个DFA状态是否能合并”的隐藏考点。你写这段代码时把idx_map定义中的frozenset(start_closure)改成set立刻就会触发不可哈希的错误——这个报错本身就是一道很好的笔试题。3.3 用同一套代码反推真题从“适用场景”里看见出题人想考什么很多人写完代码就以为复习完了这是最大的误判。代码本身不产生分数产生分数的是“你能否把代码背后的状态图在试卷上几分钟之内画出来”。我在上面这一小节里给了两个实现对应的是试卷里两类考题“给定正则表达式构造NFA”——对应regex_to_nfa的流程图你要能在草稿纸上五分钟画出带有ε边的状态图而不只是看代码眼熟。“给定NFA构造DFA并最小化”——对应subset_construct和 Hopcroft 最小化你要能在试卷的表格里填出状态转移矩阵并标出不可达状态。参数层面你需要重点确认三个值ε-闭包的起点集合是什么、move操作是否包含了所有输入符号、最小化时划分的初始状态集合是否区分了接受态和非接受态。这三个参数任何一个错了构造出的DFA必然错误。试卷上最常见的坑题就是“把接受态和非接受态混在同一个初始划分里”这时候最小化算法永远得不到正确结果——这就是出题人埋在代码背后的知识点。4. 避坑指南这5个错误让多少人在期末卷上白丢20分4.1 坑一First集和Follow集的算法背得滚瓜烂熟却不会处理“ε在产生式中间”的情况现象写出一个文法要求计算每个非终结符的First集和Follow集不少人对A → B C ε | d这类的产生式直接默认ε出现在最后就不处理了结果First集少算了一路Follow集跟着错一片。原因First集的算法是“遇到终结符就停遇到非终结符就并集遇到ε就继续看下一个”。但很多人背的是结论没有执行“当First(B)包含ε则需要继续把First(C)并入First(A)”这个递归步骤。解决动手算之前先给每个非终结符标一个“是否可能推导出ε”的布尔值。这一步用大白话说就是“能不能空”。先标好能不能空再算First集最后算Follow集顺序不能反。我在纸上算的时候会专门用一列写“eps”这一列比任何口诀都管用。4.2 坑二LR(1)和LALR(1)的分析表总是混淆考到“合并同心项目集”时直接懵现象题目要求构造LR(1)分析表有人直接照搬SLR(1)的归约条件只在“当前输入符属于Follow集”时才归约或者反过来把LR(1)的搜索符忘得一干二净在合并LALR的同心集时把不该合并的一起合并了。原因本质是对“搜索符的作用范围”没有概念。SLR的归约条件是“当前输入符属于Follow(A)”而LR(1)是“当前输入符属于该项目的搜索符集合”。搜索符集合是Follow集的子集用Follow集代替会把本不该在这个状态下归约的输入符号也放进去产生错误的移进-归约冲突。解决画LR(1)项目集族时每次聚闭包都必须同步传播搜索符。写代码时我习惯用“在项目 [A → α·Bβ, a] 中新加入的 B 产生式的搜索符是 First(βa)”这一条规则做自检。复习时拿同一道题分别构造SLR(1)和LR(1)的表并对比差异列是最直观的自验方法。4.3 坑三符号表背了不少定义一到设计题就不知道按什么维度组织层次现象期末卷子最后一题常考“为某小型语言设计符号表结构”很多人对符号表的回答只有一句“用哈希表存一下”或者只存储名字和类型没有作用域和嵌套结构的概念直接被扣一半分。原因把符号表当成“变量名到类型”的映射这是新手最大的误解。期末题的考点其实在“块结构语言中内层声明如何遮蔽外层声明”以及“函数嵌套时如何快速找到最近的活跃符号记录”。解决按结构复习三层第一层数据结构哈希表/链表/有序表的选择依据第二层作用域管理栈式符号表进块压栈、出块弹栈第三层与中间代码生成的衔接查表得到临时变量编号、类型、存储偏移。这三个层次都答上设计题才能拿全分。题目若给了具体语言比如Pascal风格且有嵌套函数重点画一下作用域栈的变化图按“进入块B、声明x、访问x、离开块B”四个断点画出栈内快照就够了。4.4 坑四三地址码的“临时变量命名”总踩重命名的雷现象翻译语句a b c * d时有的人先把c*d读到临时变量 t1又把b t1存到 t2最后写a t2另一个人则直接写t1 c * d然后写t2 b t1再把 t2 赋值给 a。两者明明都正确但后者在考“变量地址分配”的题里丢分。原因期末卷对中间代码的评分点往往包括“变量改名是否正确、重复使用临时变量是否违反活性范围”。编译器后端为了后续优化要求临时变量在使用后立即失效因此同一个 t1 可以在不同表达式里复用但手写翻译时如果随意复用会让后续的“活跃变量分析”彻底乱套。解决定一条自己的规则——每个临时变量只赋值一次用完即弃不尝试复用。考试时宁可多写 t3、t4也不要复用 t1。这个取舍牺牲一点点代码长度但能避免连带错误。数据流分析做“到达定值”时你会感谢这个习惯。4.5 坑五复习时死磕实验环境IDE、插件、编译工具链正课时间被白白耗掉现象学期初兴致勃勃装了VS Code、配了Flex和Bison甚至折腾了LLVM的Python绑定结果连续三周每次花两小时在看博客找头文件、配环境变量期末复习时实验环境还是没跑通。原因环境搭建的复杂度被严重低估而期末卷子实际考察的是手算与手画能力NFA、LR表、基本块划分和能不能跑通编译器框架基本无关。解决复习优先级调整为“手算为王”。用4.2节的方法在纸上多画项目集族用4.1节的表格多算两遍First/Follow把环境搭建当作最后锦上添花的操作而不是复习的前置条件。如果你连“编译原理实验”的题目都还没完成那也比搭环境重要——实验题给分点往往是分析表或中间代码结果和期末卷的考法高度同源。5. 用“换元法”把真题改成模拟卷让考点从“眼熟”变成“会写”5.1 怎么把答案从卷子上拆下来重组一份自己的自测题复习到第三轮真题已经眼熟了——看到题干就知道答案再去背没有增量。这时我做的是“换元法”把数字、变量名、文法符号替换掉但保留考点结构和语言特征自己生成一份新的自测卷。比如真题里考“正则表达式 (a|b)*abb 对应的DFA”我就改成(a|b)*aab重画一遍NFA和DFA再做最小化。词法、语法、中间代码都各出三题凑成一份30分钟的加练卷。生成自测卷时要注意别只换符号不改结构。真题里如果考了“属性文法的继承属性和综合属性混合计算”那么换元时就要把计算顺序也跟着打乱逼自己重新拓扑排序一遍依赖图。如果只是把ab*c换成x-y/z其实考点没变化练习增量很小。操作步骤用表格列出更清晰步骤操作说明1按题型把真题拆成问题卡片每张卡片只写题干、不写答案2替换文法符号/变量名只影响表层面貌不影响考点结构3修改依赖顺序/嵌套层级把继承属性的传播路径改深一层增加自测强度4对照标准考点表重新验算确保换元后的题目考点落在六大块内5三天后再做一次形成“错题-原因-修正”循环换元自测最重要的产出不是做对题而是“出过错”。把自己出的模拟题做错比把真题做错更有价值——因为真题做错可能是记忆不牢自测题做错则直接暴露方法论缺陷。5.2 用这套方法反查盲区以“活动记录”为例以运行时环境里的活动记录为例真题常考“某Pascal程序在递归调用时栈帧布局”。直接背真相答案你永远不知道自己在“静态链和动态链的处理”上哪儿断了。按照5.1的方法我会写一个带三层嵌套过程的虚拟程序画活动记录然后故意把动态链指错观察自己能不能发现“—寻找到的外层变量和最近调用链对不上”这个矛盾。这一步对考场帮助极大因为画活动记录时大多数人是靠记忆而不是靠推导完成的。一旦你见过自己画错的样子考试时就会主动去验证静态链的方向。5.3 合理控制换元的时间投入什么时候该停换元法虽好但不能无穷尽。我的经验是“每一类考点只自出三道题”超过三道就在反复练同样肌肉边际收益为零。三道题分别用于“会做、换变量后做、换嵌套结构后做”这三关过了就换下一考点。整个换元模拟控制在两小时以内达到的效果是看着新题不再慌复习时能明确判断“我会不会”而不是“我见过没有”。6. 给备考者的加餐一个纸上快算First/Follow集合的工作列表法期末考场上没有编译器替你做闭包运算而First/Follow集的运算恰恰是LR分析、递归下降、属性计算的基础。我分享一个自己在草稿纸上用“工作列表法”快速求解的方法它能压缩一半的纸上计算时间。方法核心是维护一张待处理的“目标表”每一轮只针对一个非终结符的某条产生式更新集合重复直到不再变化。举例设文法为E → T E E → T E | ε T → F T T → * F T | ε F → (E) | id第一步给每个非终结符建一个集合初始为空First(E)、First(E)、First(T)、First(T)、First(F)。第二步做一个工作列表把所有非终结符按产生式顺序排好反复扫描不再变化为止。对F → (E) | id立即得到 First(F) { (, id }因为两个候选式都以终结符开头。对E → T E | ε得到 First(E) { , ε }。然后T → F T因为 First(F) 不含 ε所以 First(T) First(F) { (, id }——注意这里不需要继续看 T只要 First(F) 不含ε第三步直接就停了。工作列表法的关键是维护一个“本轮是否有变化”的标志。每轮扫描结束如果集合都没有扩大就提前结束不必等到第四轮、第五轮扫完才收敛。这个提前结束的判断在考场上价值极大能省下至少七分钟的重复劳动。Follow集也可以用同样方式工作先把$放入 Follow(E)然后每轮扫描产生式把First(β)β为某个符号后面的符号串并入 Follow 对应符号把 Follow(左部) 并入 Follow(产生式末尾的非终结符)反复直到变化为零。这个工作列表法本质上就是编译原理数据流分析的雏形。如果你学到这里发现它和“到达定值”的迭代算法如出一辙说明你已经把编译原理的知识体系串起来了。期末复习到最后比的不是谁背得多而是谁的“图算法直觉”更稳。这也是我在所有带过的备考小组里反复强调的一句话——把每道题当成一次小型的迭代计算把草稿纸当成内存把笔当成CPU你的编译原理考试就赢了一半。希望这个工作列表法能帮你在考场上省下时间也帮你真正看清编译原理这门课“从文法到机器”的内在逻辑。本文还有配套的精品资源点击获取

相关新闻

【vscode插件】code runner 警告: Code language not supported or defined. 从 settings.json 改到 TaoToken 的排查路径

【vscode插件】code runner 警告: Code language not supported or defined. 从 settings.json 改到 TaoToken 的排查路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 19:09:16 阅读更多 →
从零开始学MCP(六)- 用TaoToken统一Key接入本地MCP servers

从零开始学MCP(六)- 用TaoToken统一Key接入本地MCP servers

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 19:09:16 阅读更多 →
IO多路复用详解:从select到epoll的高并发实践

IO多路复用详解:从select到epoll的高并发实践

1. 为什么高并发场景绕不开IO多路复用1.1 从“阻塞等待”到“一个线程管所有连接”先从一个最朴素的场景说起。假设你要写一个聊天室服务端,客户端A、B、C同时连上来,每个连接都有消息要收发。最直觉的写法是每个连接开一个线程,里面阻塞在re…

2026/10/11 19:09:16 阅读更多 →

最新新闻

Vue实战进阶:从环境配置到动态路由与多端部署要点

Vue实战进阶:从环境配置到动态路由与多端部署要点

学Vue这几年,从最开始只会照着教程敲todo list,到后来完整负责过好几个基于Spring Boot加Vue的前后端分离项目,中间踩过的坑、绕过的弯,攒下来不少东西。这份Vue网站制作学习心得,我按“从入门到实战的进阶之路”来写&…

2026/10/12 13:21:33 阅读更多 →
豆瓣Top250数据分析大作业:Python爬虫+可视化完整源码与避坑指南

豆瓣Top250数据分析大作业:Python爬虫+可视化完整源码与避坑指南

简介:这份资源是面向高校学生与Python初学者的数据可视化课程设计完整方案,围绕豆瓣电影Top250数据集展开,涵盖数据采集、清洗、统计分析与图表呈现全流程,适合用作毕业设计、期末大作业或课程设计的高分参考。压缩包共221个文件&…

2026/10/12 13:21:33 阅读更多 →
基于SpringBoot+Vue的办公管理系统:全栈设计与实现指南

基于SpringBoot+Vue的办公管理系统:全栈设计与实现指南

每年到这个时间点,都会有一批学弟学妹来问我:"毕设选题到底怎么选?Java后端会不会太难?前端是不是要写很多页面?"我的回答一直很统一:如果方向是Java Web或全栈开发,基于SpringBoot …

2026/10/12 13:21:33 阅读更多 →
claude-mem:为Claude打造跨会话长期记忆的本地记忆管理层

claude-mem:为Claude打造跨会话长期记忆的本地记忆管理层

你有没有过这种体验:跟Claude聊一个项目,前期费了好大劲把背景、依赖、约束讲清楚,刚进入正题,上下文窗口满了,或者新开一个会话,全部打回原形。每次对话就像金鱼一样,七秒记忆,项目…

2026/10/12 13:21:33 阅读更多 →
云数据库HTTP API歌单更新实战:权限、批量与避坑指南

云数据库HTTP API歌单更新实战:权限、批量与避坑指南

1. 从一次歌单同步的诡异失败说起做云音乐类小程序,绕不开的一个核心功能就是歌单管理。用户在小程序端新建、编辑、删除歌单,这些操作最终都要落到云数据库里。我最近在重构一个云音乐小程序的管理系统,前面几篇已经把基础架构、页面路由、用…

2026/10/12 13:21:33 阅读更多 →
C++中判断汉字:从编码原理到跨平台实现

C++中判断汉字:从编码原理到跨平台实现

1. 从一次文本统计翻车说起:为什么“判断汉字”没那么简单前阵子帮一个做数据清洗的朋友处理一批用户提交的文本,需求听起来特别朴素:把每条记录里的汉字挑出来,统计一下字数,非汉字的字符(标点、数字、字母…

2026/10/12 13:20:31 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →