JavaScript公开课笔记高效学习法:从执行上下文到异步实践
简介这是一份面向JavaScript初学者的公开课配套资料由邵山欢整理内容涵盖基础语法、DOM与BOM操作、事件处理、函数闭包、异步编程、ES6新特性以及Node.js和前端框架等核心知识模块适合零基础或刚入门的Web开发学习者系统参考。压缩包共16个文件以12个可直接运行的HTML示例页面为主辅以1份课堂笔记PDF和若干图片素材整体仅1.49MB体积轻量、便于下载后对照练习。已有529人学习使用。这些HTML文件覆盖点击交互、选项卡效果、菜单样式等典型场景配合PDF笔记能帮助理解每段代码的设计思路与知识点边看边改即可快速巩固。对于想建立JavaScript核心概念、提升网页交互开发能力的初学者这份资料是入门阶段性价比较高的实操素材。1. 一套JavaScript公开课笔记它到底值不值得逐页啃先放结论JavaScript这门语言看视频和啃笔记完全是两种体验而一套整理好的公开课笔记恰恰是绕过“看懂了但写不出”这个坑最省力的路径。某开发者整理的这套JavaScript公开课资料及笔记把变量提升、执行上下文、闭包、原型链、异步、DOM这些知识点按一条能反复回查的路线串在一起适合两类人——刚学完HTML/CSS想补JavaScript逻辑的新手以及写过一阵子页面但总觉得基础不牢、想回炉的从业者。笔记的价值不在视频讲了多少而在它把关键代码和结论留在了纸上跟着敲一遍比连着看两遍视频有用得多。2. 原型链、闭包与作用域先拆这三块再往下走2.1 别按视频顺序读先看执行上下文和作用域拿到一套公开课笔记最忌讳的就是从第一讲顺序往下刷。笔记是按视频内容整理的视频一节课几十分钟前后两讲之间可能隔了好几个概念。这套JavaScript资料的主体是标准的变量、函数、对象、原型、异步、DOM但真正容易把人卡住的是中间那几块——执行上下文、作用域链、闭包、this指向。我的习惯是先把笔记里“执行上下文”那一节找出来通读一遍。因为它解释了JavaScript在运行前到底干了什么创建阶段先扫描变量和函数声明把var提升到作用域顶部把函数声明整体挂上去然后再进入执行阶段逐行跑。笔记里如果有“变量提升”的示例基本都在这一节。理解了这个过程后面遇到的所有“为什么这个变量现在有值”“为什么这个函数可以先调用”就都有了答案。阶段做了什么常见误解创建阶段扫描var声明并初始化为undefined函数声明整体生效以为var提升之后就已有值执行阶段按顺序逐行执行赋值和逻辑以为let和var一样提升后即可安全使用作用域链当前作用域找不到就往外层找直到全局以为函数内能直接改外层变量是复制了一份读scope时我会把浏览器DevTools的Sources面板打开在代码里打断点看右侧Scope区域里闭包、脚本、全局三个层级的变量列表。这个操作笔记里不一定写了但非常有用能让你直观看到闭包是怎么保留外层变量的。学习顺序我一般建议“执行上下文 → 作用域 → 闭包 → this → 原型链 → 异步”把DOM和事件放在这条主线之后。DOM部分更多是浏览器API的记忆题而前四块是语言本身的机制不理解它们后面看框架源码照样懵。2.2 验证原型链结论用控制台拆开看别背图笔记里讲原型链通常会画一张“person → Object.prototype → null”的图图是静态的代码是动态的。建议把笔记里的结论拿到控制台里逐行验证比如这段// 验证原型链的向上查找过程 const person { name: reader, greet() { console.log(hi, ${this.name}) } } const student Object.create(person) // 显式把 student 的原型指向 person student.name practice student.greet() // hi, practice console.log(student.__proto__ person) // true console.log(person.isPrototypeOf(student)) // true console.log(Object.getPrototypeOf(student)) // 打印整个 person 对象这段代码的重点是Object.create(person)它直接创建了一个以person为原型的新对象比class写法更直白地展示了“对象的原型可以指向另一个对象”。运行student.greet()时student自身没有greet方法于是沿原型链找到person上的greet而name用的是student自己的practice所以输出hi, practice。isPrototypeOf返回true才是关键它证明student继承自person而不是复制了一份person。参数说明Object.create接收一个对象作为原型参数返回的新对象自身是空的所有属性都来自原型链Object.getPrototypeOf是读取原型对象的标准写法虽然__proto__在主流浏览器里也能访问但前者更规范。看完代码再回头看笔记里的原型链图你会发现图上的每一条线都能对应到这里的一次属性查找。这个习惯帮我省了不少死记硬背的功夫每次看到一张图就写一段能验证图中某条线的代码比抄十遍结论都有效。2.3 闭包不是背概念自己改造计数器例子公开课笔记讲闭包十个里有八个会写计数器。原因是它最小、最直观同时恰好能体现“函数夹带定义时作用域”这个本质。但很多新手抄完例子还是不理解为什么要返回一个函数这里我一般会建议把例子拆成三个版本来对比// 版本一用全局变量计数 let count 0 function addWithGlobal() { count 1 return count } // 版本二用闭包工厂函数 function createCounter(step 1) { let value 0 return function () { value step return value } } const counterA createCounter() const counterB createCounter(2) console.log(counterA()) // 1 console.log(counterA()) // 2 console.log(counterB()) // 2 console.log(counterB()) // 4最直观的差别在全局变量count和闭包里的value。前者放在全局作用域页面里任何一段代码都能改它后者只活在createCounter的调用环境里但从外层读取它的那个匿名函数并不会消失——这就是闭包的核心返回的函数保留了对定义时作用域的引用即使createCounter已经执行完毕value也不会被垃圾回收。参数说明createCounter接收一个step参数默认值是1调用createCounter(2)时步长变成2于是counterB每次加2。两个计数实例互不干扰这正好证明了闭包不是“复制了一份作用域”而是“每个实例都保留了自己那份”。笔记里如果只给了第一个全局变量的版本我建议你务必改成第二个版本再跑一次这个改造过程比读十遍概念都有用。3. 异步这条线从回调到Promise再到async/await3.1 事件循环是异步的地基笔记里的异步章节如果直接从回调讲起大概率会漏掉一个前提JavaScript运行环境是单线程的代码一次只能执行一件事。但像网络请求、定时器这些耗时操作不能干等着于是事件循环被设计出来把耗时任务交给环境提供的其他线程等任务完成后把回调塞进任务队列主线程空闲时再按规则取出来执行。笔记里对应讲到的通常是两个队列宏任务队列和微任务队列。setTimeout、setInterval的回调属于宏任务Promise的then属于微任务。事件循环每轮会先清空微任务队列再取一个宏任务执行然后重新检查微任务。很多“为什么这段代码先打印这个、后打印那个”的疑问最终都能归到这个规则上。懂了这个再看异步代码就从一个黑匣子变成了一条看得见顺序的流水线。3.2 用一段代码验证执行顺序笔记里如果给了一段类似下面的代码建议不要只看结论把它复制到浏览器控制台跑一遍亲眼见到输出顺序才记得住// 验证同步、微任务、宏任务的执行顺序 console.log(start) setTimeout(() { console.log(timeout) }, 0) Promise.resolve() .then(() { console.log(micro 1) }) .then(() { console.log(micro 2) }) console.log(end)执行结果是start → end → micro 1 → micro 2 → timeout。解释一下这个过程同步代码先执行所以start和end最先打印遇到setTimeout只是把回调放进宏任务队列不阻塞遇到Promise.resolve().then把回调放进微任务队列主线程同步代码跑完后先清空微任务队列于是micro 1和micro 2依次执行最后才从宏任务队列取setTimeout的回调打印timeout。参数说明setTimeout的第二个参数0表示延迟0毫秒但即使写0它仍然会在所有同步代码和微任务之后执行这正好说明延迟时间只是一个最小的等待值实际执行还取决于队列里的其他任务。如果这个输出和笔记里描述的不一致多半是then链里返回了新Promise引入了额外的微任务层级这种情况可以再看3.3节。3.3 回调地狱、Promise链和async/await的对照笔记里讲到异步改造一般会举一个“依次请求三个接口”的例子把三种写法并排列出来最好理解// 模拟三个依赖请求 function requestP(url) { return new Promise((resolve) { setTimeout(() resolve(data from ${url}), 100) }) } // 写法一回调地狱三层嵌套 requestP(/api/1, (data1) { requestP(/api/2, (data2) { requestP(/api/3, (data3) { console.log(data1, data2, data3) }) }) })这里写法一只是为了示意实际生产里嵌套三层以上基本就没人愿意维护了。重点看Promise链版本then回调里必须把需要传给下一步的值return出来否则下一步拿不到// 写法二Promise 链注意中间值的传递 Promise.resolve() .then(() requestP(/api/1)) .then((data1) { // data1 在这里拿到下一步要带着它走 return Promise.all([Promise.resolve(data1), requestP(/api/2)]) }) .then(([data1, data2]) { return requestP(/api/3).then((data3) ({ data1, data2, data3 })) }) .then(({ data1, data2, data3 }) { console.log(data1, data2, data3) })这个写法虽然能跑但为了传data1和data2用了Promise.all和一个纯手工的对象收集读起来相当绕。所以笔记里最后给出的基本都会落到async/await// 写法三async/await把异步写成同步顺序 async function main() { const data1 await requestP(/api/1) const data2 await requestP(/api/2) const data3 await requestP(/api/3) console.log(data1, data2, data3) } main()参数说明await会暂停当前async函数的执行但不会阻塞主线程其他任务照常被事件循环调度多次await之间天然按顺序执行不需要手动拼接数据。写法三的可读性远超前两种这也是为什么现在团队里新代码几乎不再手写长Promise链。笔记里如果只给了回调版本我建议你按写法二先补一遍再改到写法三这样遇到旧代码时才不会慌。4. DOM与工程化把笔记里的案例改成能跑的代码4.1 事件委托一行笔记能省几十个监听器公开课笔记的DOM部分通常先讲基础查询和属性修改再讲事件绑定。有一个知识点容易被一笔带过事件委托。笔记上可能只写了“利用事件冒泡可以把多个子元素的点击合并到父元素处理”一句但实际用它时收益非常明显。在某个模拟项目X里我需要给工具栏里几十个按钮绑定点击逻辑如果每个按钮单独addEventListener代码冗余不说动态新增的按钮还得重新绑定。改成事件委托之后是这样的// 事件委托用一个监听器处理整个工具栏的所有点击 document.querySelector(#toolbar).addEventListener(click, (e) { const btn e.target.closest(button) if (!btn) return console.log(动作, btn.dataset.action) })逻辑说明addEventListener挂在#toolbar父元素上子元素里任意一个按钮被点击事件都会冒泡到它这里e.target是最初被点到的元素closest(button)会从这个元素向上查找最近的button节点。这个细节很关键因为按钮里可能还有图标或文字span直接判断e.target.tagName会漏掉这些情况用closest就能保证无论点到按钮的哪个部分都算数。参数说明dataset.action读取的是按钮上data-action属性的值比如data-actionsave就会输出“动作save”。这套写法的好处是新增按钮不需要额外绑事件只要在按钮上写好data-action属性逻辑自动生效。笔记里那行关于冒泡的描述落到代码里就是这样一个监听器替换几十个监听器的效果。4.2 把大TXT笔记拆成Markdown一个预处理脚本如果你手里的公开课笔记是一个整段的TXT文件阅读和搜索效率都很低。我一般会先用脚本把它按“第N讲”拆分成多个Markdown文件方便之后按章节回查。这里用Node.js写一个最简单的拆分脚本// 按“第N讲”拆分原始笔记文本 const fs require(fs) const raw fs.readFileSync(./raw_notes.txt, utf-8) const titles raw.match(/第[一二三四五六七八九十百]\s*讲/g) || [] const sections raw.split(/第[一二三四五六七八九十百]\s*讲/) sections.shift() // 分割后第一个元素是开头引言去掉 sections.forEach((body, i) { const safeTitle titles[i] ? titles[i] : 未命名第${i 1}节 fs.writeFileSync( ./notes/${i 1}.${safeTitle}.md, # ${safeTitle}\n\n${body.trim()} ) })逻辑说明readFileSync读取整个TXT文件match把所有“第X讲”标题匹配出来split按标题把正文切开得到一个数组。数组的第一个元素通常是标题前的引言用shift()去掉。然后遍历每个正文片段用对应的标题和序号写成独立Markdown文件。参数说明正则里的[一二三四五六七八九十百]覆盖了常见的中文数字“讲”是标题分隔标志如果你的笔记用的是“Lesson 1”或“模块一”把正则里的中文数字和“讲”替换成对应写法就行writeFileSync的第二个参数写成模板字符串保证每个文件都有统一的标题格式。这样拆完之后每个章节都可以单独打开、单独搜索比在一个几万字的TXT里翻找舒服得多。4.3 script加载顺序与模块化被忽视的坑笔记里的DOM示例往往是一个大script标签放在HTML底部能跑通但一旦开始分文件管理就会遇到一个经典报错Uncaught TypeError: Cannot read properties of null。很多人第一反应是选择器写错了其实多半是加载顺序的问题!DOCTYPE html html head script srcapp.js/script /head body button idrunBtn运行/button /body /htmlapp.js里如果写的是document.getElementById(runBtn)这段代码在head里执行时浏览器还没解析到body根本找不到#runBtn元素于是拿到null。这是一个顺序问题不是语法问题。解决办法有三种把script标签挪到body末尾或者在script标签上加defer属性让脚本等DOM解析完再执行或者用DOMContentLoaded事件包裹初始化逻辑。三种方式里挪到body末尾最简单也是笔记里最常教的defer适合放在head里但不想阻塞解析的场景DOMContentLoaded适合脚本位置不固定、需要确保DOM可用的场景。笔记如果只教了第一种我建议你主动把script放回head里试一次亲眼看到那个null报错对加载顺序的记忆会深刻很多。模块化之后还会有类似的问题出现但本质都是“执行时机”和“依赖关系”没对齐。5. 避坑啃这套笔记最常见的五个翻车点5.1 按视频顺序读笔记读到异步直接断崖现象前面执行上下文、闭包都跟得不错一到异步章节发现Promise和async全是陌生面孔代码能复制但完全不会改。原因资料里的异步章节默认读者已经熟悉事件循环和回调如果这条线没铺好直接上Promise就是空中楼阁。视频可以靠画面和讲解弥补笔记没有声音这个小断层会被放大。解决跳过视频目录顺序按“事件循环 → 回调 → Promise → async/await”的顺序重排阅读每看完一节就在笔记空白处写一遍执行顺序写完再往下走。5.2 在浏览器环境里跑Node示例现象代码开头有require(fs)浏览器控制台直接报require is not defined。原因笔记里部分示例是Node环境专用的浏览器原生没有模块加载函数也没有fs文件模块。解决先看代码头部有没有require、process、fs这些Node全局对象有就保存成.js文件用node 文件名.js运行没有就放进HTML的script标签里跑。判断环境这件事只花十秒能省掉一堆莫名其妙的报错排查时间。5.3 var的变量提升把执行结果带偏现象抄笔记里var写的for循环setTimeout回调里打印i永远都是最大值。原因var没有块级作用域循环体里每次迭代共享同一个i变量回调执行时循环早已结束i停留在退出时的值。// var共享同一个 i输出都是 3 for (var i 0; i 3; i) { setTimeout(() console.log(i), 0) // 3 3 3 } // let每个迭代绑定一个 j输出 0 1 2 for (let j 0; j 3; j) { setTimeout(() console.log(j), 0) // 0 1 2 }解决如果笔记里的代码没有标注ES6版本建议把所有var主动换成let/const再跑一遍。这个坑在新版本笔记里出现频率低但老资料和面试题里几乎是必备。5.4 Promise链里第一个返回值莫名失踪现象then链写到最后一步想拿第一个接口返回的数据结果是undefined。原因then回调里如果没把前一步的值return出来下一步的参数就不是你想要的数据。很多人以为then回调的返回值会自动传递实际上只有return出来的值才会进入下一个then。解决需要跨步骤传值时在回调里把中间结果打包成对象返回到最后一个then再解构或者直接用async/await改写中间值变成普通变量不再有传递问题。5.5 只读笔记不敲代码DOM部分直接卡住现象读完函数、对象、原型链感觉自己全会了真正动手做笔记里的购物车Demo时选择器、事件绑定、属性修改这些API全忘了怎么用。原因语言机制类知识靠读能形成印象但DOM API是操作浏览器界面的属性名和参数必须手敲过才有肌肉记忆光看没有反馈。解决每个示例至少手动改一次参数比如把选择器从#runBtn改成.button-list或者把click事件换成mouseenter改完观察输出变化。一套笔记啃完如果手没在键盘上敲过五十次以上很难说真的掌握了。6. 进阶给笔记建一个按知识点检索的索引公开课笔记是按课时顺序整理的但回炉复习时是按问题来找的比如“闭包怎么用”“事件循环是什么”。当笔记文件多起来之后翻目录很不高效我一般采用一个小技巧用脚本扫一遍笔记目录把每个Markdown文件的一级标题抓出来生成一个带状态标记的索引页。// 扫描笔记目录按知识点生成索引表格 const fs require(fs) const path require(path) const notesDir ./notes const files fs.readdirSync(notesDir).filter((f) f.endsWith(.md)) const rows files .map((file) { const content fs.readFileSync(path.join(notesDir, file), utf-8) const firstLine content.split(\n).find((line) line.startsWith(# )) const title firstLine ? firstLine.replace(# , ) : file return trtda hrefnotes/${file}${title}/a/tdtd未复习/td/tr }) .join() fs.writeFileSync( index.html, !DOCTYPE htmlhtmlheadmeta charsetutf-8titleJS 笔记索引/title/head bodytable${rows}/table/body/html )逻辑说明readdirSync列出笔记目录里的所有Markdown文件读取每个文件的第一行一级标题作为知识点名称生成一个表格行链接指向原始笔记文件最后统一写进index.html。这样打开索引页就能看到全部知识点链接直接跳到对应笔记不用一个一个文件翻。状态列默认“未复习”复习完手动改成“已过一遍”这就是最简单的进度管理。参数说明filter回调里判断endsWith(.md)只保留Markdown文件避免混入其他文件split(\n)读取文件第一行find找以“# ”开头的行这是Markdown一级标题的标准写法writeFileSync的输出是完整HTMLmeta标签声明utf-8保证中文正常显示。从那以后我每次拿到一套公开课资料都会先花半小时做这一步索引再决定从哪一章开始啃。这么做的原因很实际按课时顺序读总会被旧知识点绊住而按知识点索引回查时每个文件都是独立的想复习哪块直接点进去省下大量翻找时间也不会因为中间断了一讲就接不上。希望这个习惯对你有用也帮你在啃这套JavaScript笔记时少走几步弯路。本文还有配套的精品资源点击获取

相关新闻

如何降低 Claude Code 的 Token 消耗:基于代码地图的精准上下文注入

如何降低 Claude Code 的 Token 消耗:基于代码地图的精准上下文注入

1. 为什么 Claude Code 会越用越贵:Token 全被“上下文”吃掉了1.1 一次让人肉疼的账单经历先说个真实案例。我之前接手一个老仓库,代码量不算夸张,大概六万多行,但文件散落在几十个目录里。我用 Claude Code 做一次跨模块的登录鉴…

2026/10/17 5:12:19 阅读更多 →
Kafka Stream流处理实战:核心机制、状态管理与生产环境避坑指南

Kafka Stream流处理实战:核心机制、状态管理与生产环境避坑指南

1. 为什么流处理场景下我最终选了 Kafka Stream1.1 从一次数据管道重构说起几年前我接手过一个数据管道项目,上游是十几个业务系统往 Kafka 里灌数据,下游需要做实时清洗、聚合、关联,最后写入另一个 Topic 供风控和报表消费。最初团队用的是…

2026/10/17 5:12:19 阅读更多 →
MaxCompute数据开发入门:分区、调度与费用控制实战

MaxCompute数据开发入门:分区、调度与费用控制实战

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

2026/10/17 5:12:19 阅读更多 →

最新新闻

从零搭建Python数据科学环境:Anaconda与虚拟环境配置详解

从零搭建Python数据科学环境:Anaconda与虚拟环境配置详解

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

2026/10/17 5:55:32 阅读更多 →
GLONASS信号处理全流程解析:从FDMA捕获到多星座融合定位

GLONASS信号处理全流程解析:从FDMA捕获到多星座融合定位

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

2026/10/17 5:55:32 阅读更多 →
双节锂电均衡的系统级设计:MP2642GR-Z与PIC18F87K22协同实践

双节锂电均衡的系统级设计:MP2642GR-Z与PIC18F87K22协同实践

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

2026/10/17 5:55:32 阅读更多 →
CNN基础全解析:从卷积原理到PyTorch图像分类实战

CNN基础全解析:从卷积原理到PyTorch图像分类实战

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

2026/10/17 5:55:32 阅读更多 →
NodeMCU中文下发乱码排查:网页到串口监视器全链路解析

NodeMCU中文下发乱码排查:网页到串口监视器全链路解析

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

2026/10/17 5:55:32 阅读更多 →
C语言高效解析CSV:状态机、内存映射与常见坑位排查

C语言高效解析CSV:状态机、内存映射与常见坑位排查

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

2026/10/17 5:54:31 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →