当前位置: 首页 > article >正文

JS---进阶

作用域作用域(scope)规定了变量能够被访问的“范围”离开了这个“范围”变量便不能被访问作用域分为局部作用域全局作用域局部作用域局部作用域分为函数作用域和块作用域。1.函数作用域在函数内部声明的变量只能在函数内部被访问外部无法直接访问。总结1.函数内部声明的变量在函数外部无法被访问2.函数的参数也是函数内部的局部变量3.不同函数内部声明的变量无法互相访问4.函数执行完毕后函数内部的变量实际被清空了2.块作用域在JavaScript中使用{}包裹的代码称为代码块代码块内部声明的变量外部将【有可能】无法被访问。1.let声明的变量会产生块作用域var不会产生块作用域2.const声明的常量也会产生块作用域3.不同代码块之间的变量无法互相访问4.推荐使用let或const全局作用域script标签和.jS文件的【最外层】就是所谓的全局作用域在此声明的变量在函数内部也可以被访问。全局作用域中声明的变量任何其它作用域都可以被访问注意1.为window对象动态添加的属性默认也是全局的不推荐2.函数中未使用任何关键字声明的变量为全局变量不推荐3.尽可能少的声明全局变量防止全局变量被污染作用域链作用域链本质上是底层的变量查找机制。在函数被执行时会优先查找当前函数作用域中查找变量如果当前作用域查找不到则会依次逐级查找父级作用域直到全局作用域总结1.嵌套关系的作用域串联起来形成了作用域链2.相同作用域链中按着从小到大的规则查找变量3.子作用域能够访问父作用域父级作用域无法访问子级作用域JS垃圾回收机制垃圾回收机制(Garbage Collection)简称GCJS中内存的分配和回收都是自动完成的内存在不使用的时候会被垃圾回收器自动回收内存的生命周期JS环境中分配的内存一般有如下生命周期1.内存分配当我们声明变量、函数、对象的时候系统会自动为他们分配内存2.内存使用即读写内存也就是使用变量、函数等3.内存回收使用完毕由垃圾回收器自动回收不再使用的内存说明全局变量一般不会回收关闭页面回收一般情况下局部变量的值不用了会被自动回收掉4.内存泄漏程序中分配的内存由于某种原因程序未释放或无法释放叫做内存泄漏拓展—JS垃圾回收机制—算法说明堆栈空间分配区别1.栈操作系统由操作系统自动分配释放函数的参数值、局部变量等基本数据类型放到栈里面。2.堆操作系统一般由程序员分配释放若程序员不释放由垃圾回收机制回收。复杂数据类型放到堆里面。下面介绍两种常见的浏览器垃圾回收算法引用计数法和标记清除法引用计数IE采用的引用计数算法定义“内存不再使用”就是看一个对象是否有指向它的引用没有引用了就回收对象算法1.跟踪记录被引用的次数2.如果被引用了一次那么就记录次数1多次引用会累加3.如果减少一个引用就减1-4.如果引用次数是0则释放内存但它却存在一个致命的问题嵌套引用循环引用)如果两个对象相互引用尽管他们已不再使用垃圾回收器不会进行回收导致内存泄露。因为他们的引用次数永远不会是0。这样的相互引用如果说很大量的存在就会导致大量的内存泄露标记清除法现代的浏览器已经不再使用引用计数算法了。现代浏览器通用的大多是基于标记清除算法的某些改进算法总体思想都是一致的。核心1.标记清除算法将“不再使用的对象”定义为“无法达到的对象”。2.就是从根部在JS中就是全局对象出发定时扫描内存中的对象。凡是能从根部到达的对象都是还需要使用的。3.那些无法由根部出发触及到的对象被标记为不再使用稍后进行回收。闭包概念一个函数对周围状态的引用捆绑在一起内层函数中访问到其外层函数的作用域简单理解闭包内层函数外层函数的变量先看个简单的代码闭包作用封闭数据提供操作外部也可以访问函数内部的变量闭包的基本格式闭包应用实现数据的私有比如我们要做个统计函数调用次数函数调用一次就变量提升变量提升是JavaScript中比较“奇怪”的现象它允许在变量声明之前即被访问仅存在于var声明变量注意1.变量在未声明即被访问时会报语法错误2.变量在var声明之前即被访问变量的值为undefined3.let/const声明的变量不存在变量提升4.变量提升出现在相同作用域当中5.实际开发中推荐先声明再访问变量函数进阶函数提升函数提升与变量提升比较类似是指函数在声明之前即可被调用。总结1.函数提升能够使函数的声明调用更灵活2.函数表达式不存在提升的现象3.函数提升出现在相同作用域当中函数参数1.动态参数arguments是函数内部内置的伪数组变量它包含了调用函数时传入的所有实参总结1.arguments是一个伪数组只存在于函数中2.arguments的作用是动态获取函数的实参3.可以通过f和循环依次得到传递过来的实参2.剩余参数目标能够使用剩余参数剩余参数允许我们将一个不定数量的参数表示为一个数组总结1.是语法符号置于最末函数形参之前用于获取多余的实参2.借助.…获取的剩余实参是个真数组开发中还是提倡多使用剩余参数。展开运算符展开运算符(…)将一个数组进行展开特点不会修改原数组箭头函数重要基本语法语法1基本写法语法2只有一个参数可以省略小括号语法3如果函数体只有一行代码可以写到一行上并且无需写return直接返回值语法4加括号的函数体返回对象字面量表达式箭头函数参数1.普通函数有arguments动态参数2.箭头函数没有arguments动态参数但是有剩余参数…args箭头函数this在箭头函数出现之前每一个新函数根据它是被如何调用的来定义这个函数的thS值非常令人讨厌箭头函数不会创建自己的this,它只会从自己的作用域链的上一层沿用this。箭头函数不会创建自己的this,它只会从自己的作用域链的上一层沿用this。解构赋值数组解构数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法。基本语法1.赋值运算符左侧的[]用于批量声明变量右侧数组的单元值将被赋值给左侧的变量2.变量的顺序对应数组单元值的位置依次进行赋值操作基本语法典型应用交互2个变量对象解构对象解构是将对象属性和方法快速批量赋值给一系列变量的简洁语法基本语法1.赋值运算符左侧的{}用于批量声明变量右侧对象的属性值将被赋值给左侧的变量2.对象属性的值将被赋值给与属性名相同的变量3.注意解构的变量名不要和外面的变量名冲突否则报错普通对象4.对象中找不到与变量名一致的属性时变量值为undefined给新的变量名赋值可以从一个对象中提取变量并同时修改新的变量名数组对象解构多级对象解构遍历数组forEach方法重点forEach()方法用于调用数组的每个元素并将元素传递给回调函数主要使用场景遍历数组的每个元素语法深入对象创建对象三种方式1.利用对象字面量创建对象2.利用new Object创建对象3.利用构造函数创建对象构造函数构造函数是一种特殊的函数主要用来初始化对象使用场景常规的{…}语法允许创建一个对象。比如我们创建了佩奇的对象继续创建乔治的对象还需要重新写一遍此时可以通过构造函数来快速创建多个类似的对象。构造函数语法大写字母开头的函数创建构造函数说明1.使用new关键字调用函数的行为被称为实例化2.实例化构造函数时没有参数时可以省略()3.构造函数内部无需写return,返回值即为新创建的对象4.构造函数内部的return返回的值无效所以不要写return5.new Object() new Date()也是实例化构造函数实例成员与静态成员实例成员通过构造函数创建的对象称为实例对象实例对象中的属性和方法称为实例成员实例属性和实例方法静态成员构造函数的属性和方法被称为静态成员静态属性和静态方法)说明1.静态成员只能构造函数来访问2.静态方法中的this指向构造函数比如Date.now() Math.PI Math.random()内置构造函数ObjectObject是内置的构造函数用于创建普通对象。推荐使用字面量方式声明对象而不是Object构造函数学习三个常用静态方法静态方法就是只有构造函数Objecti可以调用的作用Object.values静态方法获取对象中所有属性值语法注意返回的是一个数组作用Object.assign静态方法常用于对象拷贝语法使用经常使用的场景给对象添加属性ArrayArray是内置的构造函数用于创建数组创建数组建议使用字面量创建不用Array构造函数创建方法作用说明forEach遍历数组不返回数组经常用于查找遍历数组元素filter过滤数组返回新数组返回的是筛选满足条件的数组元素map迭代数组返回新数组返回的是处理之后的数组元素想要使用返回的新数组reduce累计器返回累计处理的结果经常用于求和等reduce基本语法reduce执行过程1.如果没有起始值则上一次值以数组的第一个数组元素的2.每一次循环把返回值给做为下一次循环的上一次值3.如果有起始值则起始值做为上一次值常见的方法的形象的解释补充Array.from()将伪数组转换为真数组String在JavaScript中的字符串、数值、布尔具有对象的使用特征如具有属性和方法之所以具有对象特征的原因是字符串、数值、布尔类型数据是JavaScript底层使用Object构造函数“包装”来的被称为包装类型。补充数字型转化为字符串String()直接转化为字符串num.toString()转化为字符串NumberNumber是内置的构造函数用于创建数值常用方法toFixed()设置保留小数位的长度()括号里面写要保留的位数面向对象编程思想面向过程介绍面向过程就是分析出解决问题所需要的步骤然后用函数把这些步骤一步一步实现使用的时候再一个一个的依次调用就可以了。面向过程就是按照我们分析好了的步骤按照步骤解决问题。面向对象介绍面向对象是把事务分解成为一个个对象然后由对象之间分工与合作。面向对象是以对象功能来划分问题而不是步骤。在面向对象程序开发思想中每一个对象都是功能中心具有明确分工。面向对象编程具有灵话、代码可复用、容易维护和开发的优点更适合多人合作的大型软件项目。面向对象的特性封装性继承性多态性构造函数封装是面向对象思想中比较重要的一部分S面向对象可以通过构造函数实现的封装。同样的将变量和函数组合到了一起并能通过thS实现数据的共享所不同的是借助构造函数创建出来的实例对象之间是彼此不影响的总结1.构造函数体现了面向对象的封装特性2.构造函数实例创建的对象彼此独立、互不影响面向对象编程的特性比如封装性、继承性等可以借助于构造函数来实现前面我们学过的构造函数方法很好用但是存在浪费内存的问题原型原型####原型的相关概念构造函数通过原型分配的函数是所有对象所共享的。JavaScript规定每一个构造函数都有一个prototype属性指向另一个对象所以我们也称为原型对象这个对象可以挂载函数对象实例化不会多次创建原型上函数节约内存我们可以把那些不变的方法直接定义在prototype对象上这样所有对象的实例就可以共享这些方法。构造函数和原型对象中的ths都指向实例化的对象####原型-this指向构造函数和原型对象中的ths都指向实例化的对象constructor属性在哪里每个原型对象里面都有个constructor属性constructor构造函数)作用该属性指向该原型对象的构造函数简单理解就是指向我的爸爸我是有爸爸的孩子对象原型对象都会有一个属性_proto_指向构造函数的prototype原型对象之所以我们对象可以使用构造函数proto原型对象的属性和方原型的存在。三者之间的关系原型对象原型继承继承是面向对象编程的另一个特征通过继承进一步提升代码封装的程度JavaScript中大多是借助原型对象实现继承的特性。原型链基于原型对象的继承使得不同构造函数的原型对象关联在一起并且这种关联的关系是一种链状的结构我们将原型对象的链状结构关系称为原型链原型链-查找规则①当访问一个对象的属性包括方法)时首先查找这个对象自身有没有该属性。②如果没有就查找它的原型也就是_proto指向的prototype原型对象③如果还没有就查找原型对象的原型Object的原型对象)④依此类推一直找到Object为止null)⑤proto_对象原型的意义就在于为对象成员查找机制提供一个方向或者说一条路线⑥可以使用instanceof运算符用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上深浅拷贝浅拷贝首先浅拷贝和深拷贝只针对引用类型浅拷贝拷贝的是地址常见方法1.拷贝对象Object.assgin/展开运算符{…obj}拷贝对象2.拷贝数组Array.prototype.concat(或者[..arr]直接赋值和浅拷贝有什么区别直接赋值的方法只要是对象都会相互影响因为是直接拷贝对象栈里面的地址浅拷贝如果是一层对象不相互影响如果出现多层对象拷贝还会相互影响深拷贝首先浅拷贝和深拷贝只针对引用类型深拷贝拷贝的是对象不是地址常见方法1.通过递归实现深拷贝2.lodash/cloneDeep3.通过JSON.stringify()实现函数递归如果一个函数在内部可以调用其本身那么这个函数就是递归函数简单理解函数内部自己调用自己这个函数就是递归函数递归函数的作用和循环效果类似由于递归很容易发生“栈溢出”错误stackoverflow所以必须要加退出条件return.lodash/_.cloneDeep通过JSON.stringify()实现异常处理异常处理是指预估代码执行过程中可能发生的错误然后最大程度的避免错误的发生导致整个程序无法继续运行throw抛异常1.throw抛出异常信息程序也会终止执行2.throw后面跟的是错误提示信息3.Error对象配合throw使用能够设置更详细的错误信息try/catch捕获异常我们可以通过try/catch捕获错误信息浏览器提供的错误信息try试试catch拦住finally最后1.try…catch用于捕获错误信息2.将预估可能发生错误的代码写在try代码段中3.如果try代码段中出现错误后会执行catch代码段并截获到错误信息4.finally不管是否有错误都会执行debugger帮助进行打断点处理thisthis指向普通函数普通函数的调用方式决定了this的值即【谁调用this的值指向谁】普通函数没有明确调用者时this值为window,严格模式下没有调用者时this的值为undefined箭头函数箭头函数中的this与普通函数完全不同也不受调用方式的影响事实上箭头函数中并不存在this!1.箭头函数会默认帮我们绑定外层this的值所以在箭头函数中this的值和外层的this是一样的2.箭头函数中的this引用的就是最近作用域中的this3.向外层作用域中一层一层查找this,直到有this的定义注意情况1在开发中【使用箭头函数前需要考虑函数中this的值】事件回调函数使用箭头函数时this为全局的window因此DOM事件回调函数如果里面需要DOM对象的this,则不推荐使用箭头函数注意情况2同样由于箭头函数this的原因基于原型的面向对象也不推荐采用箭头函数总结1.函数内不存在this,沿用上一级的2.不适用构造函数原型函数dom事件函数等等3.适用需要使用上层this的地方4.使用正确的话它会在很多地方带来方便后面我们会大量使用慢慢体会公改变thisJavaScript中还允许指定函数中this的指向有3个方法可以动态指定普通函数中this的指向call()apply()bind()call()-了解使用call方法调用函数同时指定被调用函数中this的值语法fun.call(thisArg,arg1,arg2,…)thisArg:在fun函数运行时指定的this值arg1,arg2:传递的其他参数返回值就是函数的返回值因为它就是调用函数apply()-理解使用apply方法调用函数同时指定被调用函数中this的值语法fun.apply(thisArg,[argsArray])thisArg:在fun函数运行时指定的this值argsArray:传递的值必须包含在数组里面返回值就是函数的返回值因为它就是调用函数因此apply主要跟数组有关系比如使用Math.ma()求数组的最大值求数组最大值bind()-重点bind()方法不会调用函数。但是能改变函数内部this指向语法fun.bind (thsArg,argl,arg2,…)thisArg:在fun函数运行时指定的this值arg1,arg2:传递的其他参数返回由指定的ths值和初始化参数改造的原函数拷贝(新函数)因此当我们只是想改变this指向并且不想调用这个函数的时候可以使用bid,比如改变定时器内部的this指向.call apply bind总结相同点都可以改变函数内部的this指向.区别点call和apply会调用函数并且改变函数内部this指向.call和apply传递的参数不一样call传递参数aru1,aru2形式apply必须数组形式[arg]bind不会调用函数可以改变函数内部this指向.主要应用场景call调用函数并且可以传递参数appy经常跟数组有关系.比如借助于数学对象实现数组最大值最小值bind不调用函数但是还想改变this指向.比如改变定时器内部的this指向.防抖(debounce防抖单位时间内频繁触发事件只执行最后一次使用场景搜索框搜索输入。只需用户最后一次输入完再发送请求手机号、邮箱验证输入检测防抖的实现方式1.lodash提供的防抖来处理2.手写一个防抖函数来处理节流-throttle节流单位时间内频繁触发事件只执行一次高频事件鼠标移动mousemove、页面尺寸缩放resize、滚动条滚动scroll等等实现方式1.lodash提供的节流函数来处理2.手写一个节流函数来处理核心思路节流的核心就是利用定时器(setTimeout)来实现①声明一个定时器变量②当鼠标每次滑动都先判断是否有定时器了如果有定时器则不开启新定时器③如果没有定时器则开启定时器记得存到变量里面定时器里面调用执行的函数定时器里面要把定时器清空防抖和节流的区别

相关文章:

JS---进阶

作用域 作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问, 作用域分为: 局部作用域 全局作用域 局部作用域 局部作用域分为函数作用域和块作用域。 1.函数作用域: 在函数内部声明的变量只能在函数…...

DAZ 人物变形 morph

有几个关键步骤:DAZ的单位是厘米max的单位统一为厘米daz输出的网格分辨率改为 base再输出 objmax的单位改为 厘米后,导入obj再导出obj的时候,记住,不要优化点到daz ,选变形器,导入obj文件,即可。…...

java+vue基于springboot框架的骑行俱乐部交流论坛活动组织系统的设计与开发

目录摘要开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 该系统基于SpringBoot后端框架与Vue.js前端框架,设计并实现了一个面向骑行爱好者的交流论坛与活动组织平台。系统整合了用户管理、活动发布、论坛讨论、…...

Operaton入门到精通22-Operaton 2.0 升级指南:Spring Boot 4 核心变更详解

摘要:Operaton 2.0升级摘要:基于SpringBoot4的重大更新,强制要求升级Spring依赖至SpringBoot4/SpringFramework71,兼容JakartaEE11。开发环境需Java17/JUnit6,改用GraalVM引擎。仅REST/DB集成用户无需操作。1.x版本维护至2026年&a…...

[GTCRN 48 kHz] Causal-Stream Model 的演进思路

GTCRN 演进路径 记录 v1 → v2 → v3 → v3.1/v3.2 → v4 → v4.1 的改动和原因。 版本概览版本改动点参数量质量指标内存实时v1 baseline基线139KDNSMOS 3.15—v2 transient换损失函数139KDNSMOS 3.15—v3 causal因果化改造145KDNSMOS 2.98—√v3.1 precisionKD QAT 压缩41.6…...

笔记之总结变量及简单数据类型 (书籍:学习python编程从入门到实践)

变量 变量的命名和使用 1.变量名只能包含字母、数字和下划线。 变量名开头:以字母或下划线开头,不能以数字开头。 比如:message_1(√) 1_message() 2.变量名不能包含空格,但是能使用下划线来分隔其中的单词 比如:greeting_message(√) greeting messag…...

KASLR 本质原理

KASLR(Kernel Address Space Layout Randomization,内核地址空间布局随机化)的本质是:在系统启动阶段,对内核镜像、关键内存区域的虚拟 / 物理基址施加随机偏移,让每次启动的内核地址布局都不同&#xff0c…...

【深度学习笔记】深度学习概述

机器学习:基于数学和统计学,具有可解释性knn最近邻居算法,一种监督学习算法深度学习是实践科学-目的是找一个函数输入:向量,矩阵,序列输出:回归任务(填空题),…...

Anaconda向另外一台电脑打包虚拟环境

将 Anaconda 虚拟环境打包并移植到另一台电脑,主要有两种常用方法。你可以根据实际情况(比如两台电脑是否能联网、操作系统是否一致)来选择。 为了方便对比,这里先给出两种方法的概览:特点方法一:导出 envi…...

XrPro版解码工具|厂内核驱动,纯C++无痕伪装

温馨提示:文末有联系方式快速|XrPro解码工具上线 XrPro解码工具由俄罗斯资深安全工程师团队自主研发,属内部流通版解码套件,非市面上流通的Xr-Spoofer公开版本。 采用全栈C编写内核,具备批量化开卡能力,驱动…...

计算机毕业设计源码:Python贝壳租房数据可视化分析平台 Django框架 Requests爬虫 可视化 房子 房源 大数据 大模型(建议收藏)✅

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...

Python 全国城市租房洞察系统 Django框架 Requests爬虫 可视化 房子 房源 大数据 大模型 计算机毕业设计源码(建议收藏)✅

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...

让FCT/ICT/ATE/BMS测试更简单高效

在锂电池板研发、生产检测环节,FCT(功能测试)、ICT(在线电路测试)、ATE(自动测试设备)、BMS(电池管理系统)测试是保障产品质量的核心环节,但传统测试方式往往…...

机试搜索----dfs

图的存储:链式前向星法:背下这个模板很重要; 重点:dfs模板add()函数加边的方法(无向图则要加两次) ///利用的链表法的思想 主要理解: 1.函数 add() 作用加边(链式前向星法&#x…...

如何在VirtualBox中安装银河麒麟桌面操作系统V10

版本列表 当前版本:0.1.0 作者:沈传越 技术验证:沈传越 版式设计:沈传越 所属机构:明德融创工作室(Minter Fusion Studio, MFS) 完成时间:2026-2-27 发布时间:202…...

【小程序模板】uniapp扫码点餐微信小程序模板、在线下单小程序模板

此项目为小程序点餐源码模板,用户可自定义商户信息发布到自己的小程序上,支持二次修改使用。 此套源码已接入微信支付,开启支付功能需要填写对应的商户信息,若无商户也可在后台关闭支付,正常下单。 后台演示地址&…...

深入剖析NE555的内部工作原理

本文会为大家详细讲解NE555芯片的内部电路结构、工作原理及其核心模块的功能。NE555是一款经典的8引脚时基集成电路,自1971年发布以来,因其结构简单、稳定可靠、价格低廉而广泛应用于定时、脉冲生成和振荡器等领域。一、NE555的内部核心结构NE555的内部电…...

接口类型管理实战:从 any 到规范 api.d.ts|Vue TS 落地篇

【TypeScript Axios】【前端接口开发】:从【any 兜底】到【规范的 api.d.ts 类型管理】,彻底搞懂前端接口类型定义的最佳写法,避开类型混乱/响应脱节/维护成本高高频坑! 📑 文章目录 一、开篇:为什么要关…...

Kafka 副本机制深度解析:从原理到实践,彻底搞懂数据可靠性保障

Kafka 副本机制深度解析:从原理到实践,彻底搞懂数据可靠性保障前言什么是副本机制?副本机制的核心价值副本的角色与架构Leader 和 Follower核心设计原则ISR:动态维护的同步副本集合什么是 ISR?ISR 的核心作用副本同步的…...

Kafka Consumer Group 详解:原理、机制与应用实践

Kafka Consumer Group 详解:原理、机制与应用实践前言什么是 Consumer Group?核心特征Consumer Group 的核心作用1. 实现发布-订阅模式2. 实现消息队列模式3. 消费能力的水平扩展4. 故障自动转移Consumer Group 的工作原理核心组件工作流程分区分配策略1…...

【C++编程】类和对象(一)---(类的初识引入以及定义 | 类的访问限定符及封装特性 | 类的作用域 | 类的实例化以及类对象模型 | this指针)

目录 前言 一、面向过程和面向对象初步认识 二、类的引入 三、类的定义 四、类的访问限定符及封装 4.1 访问限定符 4.2 封装 五、类的作用域 六、类的实例化 七、类对象模型 7.1 如何计算类对象的大小 7.2 类对象的存储方式 7.3 结构体内存对齐规则 八、this指针…...

EgoScale:利用多样化的自我为中心人类数据来扩展灵巧操作

26年2月来自NV、UC Berkeley和U Maryland的论文“EgoScale: Scaling Dexterous Manipulation with Diverse Egocentric Human Data”。 人类行为是学习物理智能最具可扩展性的数据来​​源之一,但如何有效地利用这些数据进行灵巧操作训练仍不明确。虽然以往的研究已…...

FreeRTOS的队列介绍以及怎么实现互斥访问,休眠唤醒以及保存数据(环形缓冲区)

前言前面介绍完了FreeRTOS的一些核心功能,如任务切换,创建任务等等,并将煮包从ARM内核以及内存的视角的相关思考进行了分享,从这里开始介绍FreeRTOS的另外一个板块,就是任务间通信机制,如队列、信号量、互斥…...

豆包 LintCode 2798 · Aop 简化日志

你想要解决的是 LintCode 2798 这个关于使用 AOP(面向切面编程)简化日志记录的问题,核心需求应该是通过 AOP 的方式,在不侵入业务代码的前提下,为方法添加统一的日志记录功能。 问题分析与实现思路 AOP 的核心思想是横切关注点,日志记录就是典型的横切关注点。我们可以…...

Arduino 第一部分

一.Arduino IDE界面和设置1.选择开发板型号和端口(1)首先将开发板通过USB线连接到电脑上。需要注意的是,USB线需要插牢,有时候USB线未插牢,开发板上的灯也会亮(2)选择开发板型号①可以通过上方的…...

一键脚本安装OpenClaw时遇到问题怎么办?

在使用一键脚本安装 OpenClaw 时遇到问题,核心解决思路是先定位报错类型,再按 “基础排查→针对性修复→替代方案” 的顺序解决,下面我会把新手最常遇到的问题、原因和具体解决方法都列出来,你可以对照排查。 一、先做 3 步基础排…...

OpenClaw + Google Chrome(deb)+ WSLg:可视化浏览器自动化与人工接管教程

目标:在 WSL2 Ubuntu WSLg 环境中,使用 OpenClaw 控制 Linux 浏览器 GUI(非无头),实现自动登录/浏览网页/操作网页,并在遇到验证码(扫码、滑块、人机验证)时支持人工直接接管浏览器…...

豆包 LeetCode 679.24点游戏 public boolean judgePoint24(int[] cards)

这题是经典回溯 四则运算枚举,直接给你能提交的 Java 代码。 思路 1. 把数组转成 double 列表,避免整数除法问题。 2. 每次任选两个数,做 - * / 六种运算: ab, a*b(交换律,只算一次)a-b, …...

python flask django网络在线选课成绩管理系统

目录系统架构设计数据库模型设计核心功能模块成绩管理模块系统安全措施部署方案测试计划开发路线图项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统架构设计 采用前后端分离架构,前端使…...

AAAI 2026 即插即用 | Transformer篇 | DHOGSA:新型自注意力!HOG先验引导特征精准聚焦边缘,PSNR猛涨!

VX: shixiaodayyds,备注【即插即用】,添加即插即用模块交流群。 文章目录 模块出处 模块介绍 模块提出的动机(Motivation) 适用范围与模块效果 模块代码及使用方式 模块出处 Paper:Gradient as Conditions: Rethinking HOG for All-in-one Image Restoration Code:https…...