跟着尚硅谷学vue-day5
计算属性和watch监视
一.姓名案例
1.姓名案例-插值语法
<div id="root">姓:<input type="text" value="张" v-model="firstname"><br/><br/>名:<input type="text" value="三" v-model="lastname"><br/><br/>全名:<span>{{firstname.slice(0,3)}} - {{lastname}}</span>
</div>
因为插值语法有局限性,如果需要对一个变量进行比较复杂的操作,推荐的是按照方法。
2.姓名案例-方法属性
<div id="root">姓:<input type="text" value="张" v-model="firstname"><br/><br/>名:<input type="text" value="三" v-model="lastname"><br/><br/>全名:<span>{{fullName()}}</span>
</div>
<script type="text/javascript">Vue.config.productionTip = false;new Vue({el:'#root',data:{firstname:'李',lastname:'四'},methods:{fullName(){return this.firstname + '-' + this.lastname}}})
</script>
全名:<span>{{fullName()}}</span> 不加小括号,代表把函数写上去 ,加了小括号,会得到方法的返回值。如果是回调使用(比如绑定按钮的点击事件方法等等),小括号可加可不加。
在 Vue.js 中,当绑定的数据发生变化时,Vue 的响应式系统会自动检测到这些变化,并触发视图更新,而不需要手动操作 DOM。这是 Vue 的核心特性之一,称为响应式数据绑定。
3.姓名案例-计算属性
计算属性:
1.定义:要用的属性不存在,要通过已有属性算得来。
2.原理:底层借助了objcet.defineproperty方法提供的getter和setter
3.get所数什么时候执行?
(1).初次读取时会执行一次。
(2).当依赖的数据发生改变时会被再次调用。
4.优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便。缓存体现在初次刷新的时候,只调用计算属性一次get方法。
5.备注:
1.计算属性最终会出现在vm上,直接读取使用即可。
2.如果计算属性要被修改,那必须写set的数去响应修改,且set中要引起计算时依赖的数据发生
<div id="root">姓:<input type="text" value="张" v-model="firstname"><br/><br/>名:<input type="text" value="三" v-model="lastname"><br/><br/>全名:<span>{{fullName}}</span> <br/><br/>全名:<span>{{fullName}}</span> <br/><br/>全名:<span>{{fullName}}</span> <br/><br/>全名:<span>{{fullName}}</span> <br/><br/></div><script type="text/javascript">Vue.config.productionTip = false;const vm = new Vue({el:'#root',data:{firstname:'李',lastname:'四'},computed:{fullName:{get(){console.log('get被调用了')return this.firstname + '-' +this.lastname;},set(value){const arr = value.split('-');this.firstname = arr[0];this.lastname = arr[1];} }}})</script>
在 Vue.js 中,data
选项用于定义组件的响应式数据属性(属性名:属性值),而计算属性(computed properties)则是基于已有的响应式数据属性,通过逻辑运算或加工生成新的属性。
在computed属性中,必须要有get,且当有人读取fullName时get就会被调用,且返回值就作为fullName的值,所以vm._data.fullName = undefined ,因为计算好之后,就会立即渲染。
计算属性的结果会被缓存,只有当依赖的响应式属性发生变化时,才会重新计算。
getter
的调用时机?
初次读取 fullName
时:当你在模板中首次访问 {{ fullName }}
,或者在 JavaScript 代码中首次访问 vm.fullName
,getter
会被调用。
所依赖的数据发生变化时:如果 firstName
或 lastName
发生变化,fullName
的缓存会失效,下次访问 fullName
时,getter
会再次被调用。
在 getter
中,this
指向当前的 Vue 实例(vm
),因此你可以访问 this.firstName
和 this.lastName
。
定义 setter
默认情况下,计算属性是只读的。如果你尝试直接赋值给 fullName
(例如:vm.fullName = 'Jane Smith'
),Vue 会抛出一个警告:[Vue warn]: Computed property "fullName" was assigned to but it has no setter.
如果 需要fullName
是可写的,需要显式地定义一个 setter
。setter
会在尝试修改 fullName
时被调用。在 setter
中,建议解析新的值并更新依赖的数据属性(如 firstName
和 lastName
)。
示例解释
Getter:在初次读取或依赖数据变化时,getter
会被调用,返回计算后的值。
Setter:当你尝试修改 fullName
时,setter
会被调用,解析新的值并更新 firstName
和 lastName
。
当firstName
或 lastName
发生变化,计算属性get会重新调用。
定义了setter,在控制台修改计算属性,页面会进行刷新最新属性值。
4.计算属性简写和完整写法对比
computed:{//完整写法fullName:{get(){console.log('get被调用了')return this.firstname + '-' +this.lastname;},set(value){const arr = value.split('-');this.firstname = arr[0];this.lastname = arr[1];}}//简写 只考虑读取不考虑修改fullName(){return this.firstname + '-' +this.lastname;}
}
二.天气案例
1. 表达式的形式
<h2>今天天气很{{ishot ? '炎热' :'凉爽'}}</h2>
2. 计算属性
<h2>今天天气很{{info}}</h2>
<button>切换天气</button>
computed:{info(){return this.ishot ? '炎热' :'凉爽'}},methods:{changeweather(){this.ishot = !this.ishot}}
3.在button上面进行直接写
<button @click="ishot = !ishot">切换天气</button> 可以做一些简单的语句@click="ishot = !ishot;x++"
但如果是比较难的,alert
在 Vue.js 中,如果你在组件的方法或计算属性中直接调用 alert(1)
,JavaScript 的作用域链解析规则如下:
当前组件实例(
vm
):首先会在当前 Vue 组件实例(通常称为vm
,即 ViewModel)的作用域中查找alert
函数。原型链:如果组件实例中没有找到,会沿着 JavaScript 的原型链向上查找。
全局作用域(
window
):如果原型链中也没有找到,最后会在全局作用域(浏览器中是window
对象)中查找。
没找到就会报错,需要这样写window.alert(1), 然后再data当中进行写data{window}。所以还是要在回调函数当中写,方便点。
4.监视属性
监视属性watch:
1.当被监视的属性变化时,回调所数自动调用,进行相关操作
2.监视的属性必须存在,才能进行监视!!
3.监视的两种写法:
(1).new Vue时传入watch配置
(2).通过vm.$watch监视
new Vue时传入watch配置
监听 ishot
数据属性的变化
watch:{ishot:{immediate:true,handler(newValue,oldValue){console.log(newValue,oldValue)console.log('ishot被监视了,并且修改了')}}
}
immediate 选项:
当设置为 true
时,会在侦听器创建后立即调用一次 handler,即使 ishot
的初始值没有变化也会触发,默认是 false
(只有在值变化时才触发)
handler 函数:
当 ishot
的值发生变化时会被调用,接收两个参数:newValue
:变化后的新值 oldValue
:变化前的旧值
通过vm.$watch监视
vm.$watch('ishot', {immediate: true, // 初始化时立即调用 handlerhandler(newValue, oldValue) {console.log(newValue, oldValue);console.log('ishot被监视了,并且修改了');}
});
深度监视
(1).Vue中的watch默认不监测对象内部值的改变(一层)
(2).配置deep:true可以监测对象内部值改变(多层)。备注:
(1).Vue自身可以监测对象内部值的改变,但Vue提供的watch默认不可以!
(2).使用watch时根据数据的具体结构,决定是否采用深度监视。
这里有两个侦听器:一个专门监听 numbers.a
的变化,另一个监听整个 numbers
对象的变化
watch: {// 专门监听 numbers.a 的变化'numbers.a': {handler(newValue, oldValue) {console.log(newValue, oldValue);console.log('number.a累加');}},// 监听整个 numbers 对象的变化numbers: {deep: true, // 深度监听对象内部的变化handler(newValue, oldValue) {console.log(newValue, oldValue);console.log('监测a,b的变化。');}}
}
监听嵌套属性 ('numbers.a'
):
使用点号表示法可以监听嵌套对象的属性
只有当 numbers.a
的值发生变化时才会触发 handler
不需要 deep: true
,因为它只监听特定属性
监听整个对象 (numbers
):
当 numbers
对象本身被重新赋值时,或者对象内部的任何属性(包括嵌套属性)发生变化时都会触发
deep: true
是必需的,否则只会监听对象引用的变化,而不会监听对象内部属性的变化
deep
选项:
当设置为 true
时,Vue 会递归监听对象内部所有属性的变化
默认是 false
(浅层监听)
注意事项:
如果属性路径写错(如 'number.a'
而不是 'numbers.a'
),Vue 不会报错,但侦听器不会生效
深度监听 (deep: true
) 会带来性能开销,应谨慎使用
5.完整写法和简写
watch 完整写法和简写
watch:{完整写法'ishot':{immediate:true,//初始化时让handler调用一下,及时刚刷新好,那个会输出handler(newValue,oldValue){console.log(newValue,oldValue)console.log('ishot被监视了,并且修改了')}},简写ishot(newValue,oldValue){immediate:true,//失效console.log(newValue,oldValue)console.log('ishot被监视了,并且修改了')}
}
vm.$watch 完整写法和简写
vm.$watch('ishot',{immediate:true,//初始化时让handler调用一下,及时刚刷新好,那个会输出handler(newValue,oldValue){console.log(newValue,oldValue)console.log('ishot被监视了,并且修改了')}});//简写vm.$watch('ishot',function(newValue,oldValue){console.log(newValue,oldValue)console.log('ishot被监视了,并且修改了')});
简写形式可以将handler当中的代码写入简写方式方法。但是不能将配置比如:immediate:true写入简写的方法。
三.computed和watch之向的区别
computed和watch之向的区别
1.computed能完成的功能,watch都可以完威。
2.watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。
两个重要的小原则:
1.所被Vue管理的的数,最好写成普通函数,这样this的指向才是vm或组件实例对象。
2.所有不被Vue所管理的的数(定时器的回调的数、ajax的回调数等),最好写成箭头的数,这样this的指向才是vm或组件实例对象。
小贴士
1.一些特定的函数和写法会被 Vue 的响应式系统自动管理
1. 回调函数(Methods)
Vue 会自动管理在
methods
选项中定义的函数,使其内部的this
指向当前组件实例,并确保它们能访问响应式数据。2. 计算属性(Computed)的 Getter/Setter
在
computed
中定义的函数会被 Vue 自动转换为响应式的 getter/setter,依赖的响应式数据变化时会触发重新计算。3. 侦听器(Watch)的回调
在
watch
中定义的回调函数会被 Vue 管理,能访问组件实例,并在依赖变化时触发。4. 生命周期钩子
Vue 内置的生命周期钩子(如
created
、mounted
)会被自动调用,函数内的this
指向组件实例。5. 简写的箭头函数问题
⚠️ 注意:如果使用箭头函数(如
methods: { handleClick: () => {} }
),this
不会指向组件实例,因为箭头函数绑定父级上下文。Vue 无法正确管理此类函数。2.计算属性的核心特性?
立即返回值:计算属性必须是一个同步函数,直接返回一个值。
缓存机制:只有当依赖的响应式数据变化时,计算属性才会重新计算,否则直接返回缓存的结果。
纯函数:计算属性不应有副作用(如修改外部状态、发起异步请求等)。
3.为什么计算属性不能包含异步操作?
设计限制:计算属性的返回值必须是一个确定的值,而异步操作(如
setTimeout
或 API 请求)会导致返回值是undefined
或一个Promise
,这与计算属性的同步特性冲突。缓存失效:异步操作的非确定性(如网络延迟)会破坏计算属性的缓存机制,导致无法预测何时更新。
虽然
watch
的回调函数本身是由 Vue 管理的(例如,自动绑定this
上下文),但如果你在watch
的回调函数中使用定时器(如setTimeout
),这些定时器是由 JavaScript 引擎的事件循环机制管理的,而不是直接由 Vue 管理。
4.watch
回调由 Vue 管理Vue 会确保
watch
的回调函数中的this
指向当前组件实例。Vue 会自动追踪回调函数中使用的响应式依赖。
相关文章:
跟着尚硅谷学vue-day5
计算属性和watch监视 一.姓名案例 1.姓名案例-插值语法 <div id"root">姓:<input type"text" value"张" v-model"firstname"><br/><br/>名:<input type"text" value&q…...
猫咪如厕检测与分类识别系统系列【十三】猫咪进出事件逻辑及日志优化【下】
前情提要 家里养了三只猫咪,其中一只布偶猫经常出入厕所。但因为平时忙于学业,没法时刻关注牠的行为。我知道猫咪的如厕频率和时长与健康状况密切相关,频繁如厕可能是泌尿问题,停留过久也可能是便秘或不适。为了更科学地了解牠的如…...
【Java学习笔记】冒泡排序
冒泡排序 思想:经过一轮遍历比较,把最大的放在数组的末尾 int[] a {3, 2, 1}; for( int i 0; i < a.length-1; i){for( int j 0; j < a.length-1-i; j){if(a[j] > a[j1]){int temp a[j];a[j] a[j1];a[j1] temp;}} } for( int i 0; i &…...
【含文档+PPT+源码】基于微信小程序的校园快递平台
项目介绍 本课程演示的是一款基于微信小程序的校园快递平台,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项目附带…...
Vue3 自定义指令完全指南
Vue3 自定义指令完全指南 目录 基本概念指令注册方式常用应用场景注意事项 基本概念 在Vue3中,自定义指令是用于直接操作DOM的重要工具。相比Vue2,Vue3的指令系统进行了优化和简化。 生命周期钩子 钩子名称对应Vue2名称触发时机createdbind元素属性…...
神经辐射场(NeRF)技术解析:3D重建与虚拟世界的未来
神经辐射场(NeRF)技术解析:3D重建与虚拟世界的未来 ——从算法突破到元宇宙基础设施的演进之路 摘要 本文通过算法演进图谱、训练流程解析、PyTorch代码实战及产业应用洞察,构建从学术创新到工程落地的完整技术框架。实验数据显…...
050_基于springboot的音乐网站
一、系统架构 前端:vue | element-ui | html | jquery | css | ajax 后端:springboot | mybatis 环境:jdk1.8 | mysql | maven | nodejs | idea 二、代码及数据 三、功能介绍 01. web端-注册 02. web端-登录 03. web…...
Django之旅:第七节--模版继承
定义母版—new.html <!DOCTYPE html> <html lang"en"><head></head><body><div>{% block contents %}{% endblock %}</div></body> </html> 继承母模板 {% extends new.html %} {% block contents %}&…...
Windows 10 上运行 Ollama 时遇到 llama runner process has terminated: exit status 2
在 Windows 10 上运行 Ollama 时遇到 llama runner process has terminated: exit status 2 错误,可能是由多种原因引起的。以下是逐步解决方案: 1. 检查 Ollama 服务状态 按 Win R 输入 services.msc,找到 Ollama 服务,确保其状…...
基于 Python(selenium) 的百度新闻定向爬虫:根据输入的关键词在百度新闻上进行搜索,并爬取新闻详情页的内容
该项目能够根据输入的关键词在百度新闻上进行搜索,并爬取新闻详情页的内容。 一、项目准备 1. 开发环境配置 操作系统:支持 Windows、macOS、Linux 等主流操作系统,本文以 Windows 为例进行说明。Python 版本:建议使用 Python 3.8 及以上版本,以确保代码的兼容性和性能。…...
YOLOX-PAI手部检测模型
YOLOX-PAI手部检测模型 # numpy > 1.20 from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasksmodel_id iic/cv_yolox-pai_hand-detection hand_detection pipeline(Tasks.domain_specific_object_detection, modelmodel_id) output …...
速成GO访问sql,个人笔记
更多个人笔记:(仅供参考,非盈利) gitee: https://gitee.com/harryhack/it_note github: https://github.com/ZHLOVEYY/IT_note 本文是基于原生的库 database/sql进行初步学习 基于ORM等更多操作可以关注我…...
SkyWalking 安装与使用详细总结
SkyWalking 是一款开源的分布式应用性能监控(APM)系统,用于监控微服务、云原生应用、容器等。它支持服务跟踪、性能监控、日志分析和数据可视化。以下是 SkyWalking 的安装与使用详细步骤。 一、SkyWalking 安装 1. 下载 SkyWalking 访问 …...
产业观察:中国商飞2025.4.25
一.中国商飞简介 1.1 公司背景 中国商飞于 2008年5月11日 在上海成立,是实施国家大型飞机重大专项中大型客机项目的主体。公司由多家国有大型企业共同出资组建,包括国务院国资委、上海国盛集团、中航工业集团等。总部设在上海,拥有多个研发…...
【爬虫】DrissionPage-获取douyim用户下的视频
之前看过DrissionPage,觉得很厉害,比selenium简单,适合新手。因为盲目跟风逆向,今天看了一个DrissionPage案例直播,学习一下,真香哈。 DrissionPage官网:🛰️ 概述 | DrissionPage官…...
Kubernetes 节点 Not Ready 时 Pod 驱逐机制深度解析(下)
#作者:邓伟 文章目录 三、深度解析:源码逻辑与调优策略四、常见问题与排查五、最新动态与技术演进总结 三、深度解析:源码逻辑与调优策略 TaintManager 核心源码逻辑 (1)参数定义(kube-controller-manage…...
markdown自动标题序号,标题序号,目录处理
在vscode下有插件 markdown aheads markdown标题与目录处理插件。 使用方法:在vscode中 ctrlshiftp 输入 AHeads 选择功能。 包含以下功能: "AHeads:AddIndex": "添加标题序号" "AHeads:RemoveIndex": "移除标题…...
模式设计简介
设计模式简介 设计模式是软件开发中经过验证的最佳实践解决方案,它是针对特定问题的通用解决方案,能够帮助开发者提升代码的可维护性、可扩展性和复用性。设计模式并非具体的代码实现,而是一种解决问题的思路和方法论,它源于大量的实践经验总结,旨在解决软件开发过程中反…...
Linux字符设备驱动开发的详细步骤
1. 确定主设备号 手动指定:明确设备号时,使用register_chrdev_region()静态申请(需确保未被占用)。动态分配:通过alloc_chrdev_region()由内核自动分配主设备号(更灵活,推…...
融合注意力机制和BiGRU的电力领域发电量预测项目研究,并给出相关代码
大家好,我是微学AI,今天给大家介绍一下融合注意力机制和BiGRU的电力领域发电量预测项目研究,并给出相关代码。 文章目录 一、项目背景二、融合注意力机制和BiGRU的技术原理(一)双向门控循环单元(BiGRU&…...
基于 Netmiko 的网络设备自动化操作
学习目标 掌握 Netmiko 库的核心功能与使用场景。能够通过 Netmiko 连接多厂商设备并执行命令和配置。实现批量设备管理、配置备份与自动化巡检。掌握异常处理、日志记录与性能优化技巧。理解 Netmiko 在自动化运维体系中的角色。 1. Netmiko 简介 1.1 什么是 Netmiko Netmi…...
eclipse怎么导入junit4
JUnit 4 是 Java 编程语言里常用的单元测试框架,在 Eclipse 中导入 JUnit 4 可按以下步骤操作: 1. 新建或打开 Java 项目 如果你已经有一个 Java 项目,可直接打开它;若没有,就新建一个 Java 项目。操作步骤如下&…...
深入理解C语言函数之模拟实现strcpy()strcat()
文章目录 前言一、strcpy的模拟实现二、strcat的模拟实现总结 前言 前面我们用三种方法模拟实现了一下strlen,所以这篇文章模拟实现以下strcpy()strcat() 一、strcpy的模拟实现 首先我们去官网找到strcpy的用法和原…...
[mysql]窗口函数
目录 窗口函数: 为何要学习窗口函数,与mysql5.7实现语句对比 现在我们介绍一下窗口函数: 函数规则 1序号函数 2分布函数 3前后函数 5其他函数 总结 窗口函数: 首先数据库的迁移是非常慢的,大家学习新特性的时候要考虑自己公司的数据库版本是不是和自己学习的吻合 为何…...
IT人力外包定义-优势-服务流程介绍
IT人力外包:企业灵活用工的“技术人才蓄水池” 在数字化转型的浪潮中,企业对IT人才的需求日益增长,但招聘、培养和管理技术团队的成本和风险也随之攀升。此时,IT人力外包应运而生,成为企业高效获取技术资源的解决方案…...
Cancer Cell|scRNA-seq + scTCR + 空间多组学整合分析,揭示CD8⁺ T细胞在免疫治疗中的“双路径” | 临床问题的组学解答
Cancer Cell|scRNA-seq scTCR 空间多组学整合分析,揭示CD8⁺ T细胞在免疫治疗中的“双路径” 👋 欢迎关注我的生信学习专栏~ 如果觉得文章有帮助,别忘了点赞、关注、评论,一起学习 近日,《Cancer Cell》…...
数字人民币杠杆破局预付乱象 XBIT智能合约筑牢资金安全防线
在加密货币市场与实体经济加速融合的当下,数字人民币试点工作正以创新姿态突破传统金融边界。青岛、广州、厦门等地近期密集落地的数字人民币智能合约应用,为预付式消费领域资金监管难题提供了破局方案,而XBIT去中心化交易所平台凭借其技术优…...
React.memo 和 useMemo
现象 React 中,通常父组件的某个state发生改变,会引起父组件的重新渲染(和其他state的重新计算),从而会导致子组件的重新渲染(和其他非相关属性的重新计算) 问题一:如何避免因为某个…...
命令行指引的尝试
效果 步骤 首先初始化一个空的项目,然后安装一些依赖 npm init -y npm install inquirer execa chalk ora至于这些依赖是干嘛的,如下图所示: 然后再 package.json 中补充一个 bin 然后再根目录下新建一个 index.js , 其中的内容如下 #!/…...
《深入理解计算机系统》阅读笔记之第三章 程序的机器级表示
概述 历史观点 程序编码 数据格式 访问信息 操作数指示符 数据传送指令 压入和弹出栈数据 算术和逻辑操作 小结 本章没有细看,其中主要以C语言中的一些汇编等知识来做介绍。算是一种对C语言的相关底层知识的详细介绍吧。但是从原理上理解我觉得《编码》这本书更好理…...
解析excel中的图片
解析excel中的图片 前言一、pom依赖二、使用步骤1.示例数据2.代码如下(示例): 总结 前言 初始化数据是,需要将excel中的数据解析并插入数据库。 但是某几列存放的是图片,这时候怎么办呢。 主要解决的是:获…...
红队系列-网络安全知识锦囊-CTF(持续更新)
CTF CTF系列-AWD专题篇CTF-比赛培训基础1 CTF 介绍HTTP协议分析进阶001.CTF简介_宽字节注入高级 2018CTF——黑客大赛特训CTF-PWNPWNCTF竞赛中的主要题型之一了解CTF Capture The Flag 夺旗描述:# gets从标准输入设备读字符串函数#下面是对main函数中的汇编代码的解释:modifi…...
强化学习:基础理论与高级DQN算法及策略梯度基础
如果您想学习强化学习,我推荐David Sliver的讲座😊:RL Course by David Silver - Lecture 1: Introduction to Reinforcement Learning - YouTube 基础理论 马尔可夫决策过程(MDP) 1.MDP五元组定义 状态空间…...
如何修复宝可梦时时刻刻冒险无法正常工作
宝可梦的时时刻刻冒险模式是一项强大的功能,即使应用程序关闭,它也能追踪你的步行距离。它的工作原理是将你的步数与 iOS 上的 Apple Health 或 Android 上的 Google Fit 同步。它对于孵化宝可梦蛋和赚取好友糖果至关重要,但一旦它停止工作&a…...
RAG5个常见错误
向量数据库并非硬性规定 几乎互联网上所有关于RAG的教程都使用向量存储。如果你一直在搜索RAG相关内容,你就会明白我们在说什么。 基于向量的检索无疑是RAG成功的重要因素。向量嵌入非常适合映射文本的语义含义。它们也能很好地处理不同大小的文本。你的查询可能只…...
VuePress可以做什么?
VuePress 可以做什么 VuePress 是一个基于 Vue.js 的静态站点生成器,专注于文档和内容展示。它结合了 Markdown 的简洁性和 Vue 的灵活性,适合多种场景的开发需求。以下是 VuePress 的主要用途和功能: 1. 技术文档网站 VuePress 最初是为编写 Vue.js 官方文档而设计的,因…...
TDengine 数据缓存技术
简介 在现代物联网(IoT)和工业互联网(IIoT)应用中,数据的高效管理对系统性能和用户体验至关重要。为了应对高并发环境下的实时读写需求,TDengine 设计了一套完整的缓存机制,包括写缓存、读缓存…...
如何成功防护T级超大流量的DDoS攻击
防护T级超大流量的DDoS攻击需要综合技术、架构与运营策略的多层次防御体系。以下是基于最新技术实践和行业案例总结的关键防护策略: 一、流量清洗与分布式处理 部署流量清洗中心 T级攻击的核心防御依赖于专业的流量清洗技术。通过部署分布式流量清洗集群,…...
【Linux内核设计与实现】第三章——进程管理02
文章目录 7. 进程创建7.1. 进程之间的关系7.2. 进程创建的写时拷贝机制(copy-on-write)7.3. fork() 函数的入口7.4. 创建新进程的核心函数 kernel_clone()7.4.1. 检查参数并调用 copy_process 创建并复制进程7.4.2. 获取新进程 PID 作为返回值7.4.3. 唤醒…...
企业部署Power BI 报表服务器,在第三方系统嵌套该报表服务器,并实现单点登录
简介 Power BI Report Server 简称PBIRS,中文名"Power BI 报表服务器" 微软的文档:Power BI 报表服务器文档 - Power BI | Microsoft Learn 借用官网的介绍: Power BI 报表服务器类似于 SQL Server Reporting Services 和 Power BI…...
Leetcode 2845 题解
还是要把自己做题的思路写出来的,但是结果可能还是得去观摩一下题解,无论是大佬写的题解还是leetcode官方写的题解,看完题解后再去反思才能有收获,即使下次遇见一样的题不见得能写出来,但有思路比没思路更重要。 今天写…...
前端基础之《Vue(12)—插件封装》
一、插件封装 1、在Vue生态中,除了Vue本身,其它所有的与Vue相关的第三方包,都是插件 例子: import VueRouter form vue-router Vue.use(VueRouter) // 注册插件 2、如何封装Vue插件 (1)第一种写法 const…...
arcpy列表函数的应用(2)
arcpy.ListRasters() 该函数用于列出指定工作空间中的所有栅格数据集。 语法: python arcpy.ListRasters(wild_cardNone, raster_typeNone)• wild_card:用于筛选栅格数据集名称的通配符。 • raster_type:用于筛选栅格数据集的类型&…...
智能电网第7期 | 断网不断控:电力监控网络高可靠通信解决方案
随着智能电网建设加速推进,电力监控系统的可靠性已成为保障电网安全运行的核心要素。在变电站、配电房等关键场景中,网络中断可能导致监控失效、故障扩大等严重后果。当前电力通信网络面临的主要挑战包括: 网络脆弱性:单一链路故障…...
Nacos简介—2.Nacos的原理简介
大纲 1.Nacos集群模式的数据写入存储与读取问题 2.基于Distro协议在启动后的运行规则 3.基于Distro协议在处理服务实例注册时的写路由 4.由于写路由造成的数据分片以及随机读问题 5.写路由 数据分区 读路由的CP方案分析 6.基于Distro协议的定时同步机制 7.基于Distro协…...
offset voltage of Comparator
静态失调电压(static offset voltage) 主要影响因素:μCox(载流子传输速率和栅氧层电容的的乘积)、阈值电压。 静态失配方差与器件尺寸成反比,可以增大关键对mos管的尺寸 动态失调电压(dynamic offset voltage&…...
Spring-Ai-McpSever从外到内
MCP是什么 Model Context Protocol (MCP) 是一个开放协议,它使 LLM 应用与外部数据源和工具之间的无缝集成成为可能。无论你是构建 AI 驱动的 IDE、改善 chat 交互,还是构建自定义的 AI 工作流,MCP 提供了一种标准化的方式,将 LL…...
Vue多地址代理端口调用
第一种方法 config.ts文件 配置多条代理服务端口 如下所示:proxy: {/app: {// 其他的端口target: http://125.124.5.117:12877/,changeOrigin: true}/api: {//默认的端口// http://192.168.31.53:5173/target: http://192.168.31.199:18777/,changeOrigin: true,rewrite: pat…...
Android APP 热修复原理
版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ dexElements Android 的 ClassLoader(如 PathClassLoader、DexClassLoader)内部结构如下: BaseDexClassLoader└── pat…...
一些有关ffmpeg 使用(1)
1 解封装流程 1.1 什么解封装 封装的逆向操作:封装是把音频流、视频流、字幕流等不同成分按一定规则组合成视频文件(如 MP4、FLV ),复用器负责此过程。解封装则相反,是用解复用器(针对 MP4、FLV 等格式有…...