网站设计简单网页/网站发布与推广方式
1.介绍vue
Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。
Vue 应用程序的基本结构通常围绕组件(Components)来组织。组件是 Vue 应用的构建块,它们可以包含 HTML、JavaScript 和 CSS,并且可以独立于其他组件工作。
2.框架结构
1. 根实例和根组件
- 每个 Vue 应用都是从一个根实例开始的。
- 根实例通常与一个根组件(
App.vue
)相关联,这个组件作为应用的入口点和顶层容器。
2. 组件结构
- 单文件组件:在 Vue 项目中,每个组件通常是一个
.vue
文件,它包含三个部分:<template>
、<script>
和<style>
。 - 组件嵌套:组件可以包含其他子组件,形成嵌套结构。这允许开发者构建复杂的用户界面。
3. 组件通信
- 父子通信:父组件可以通过 props 向子组件传递数据,子组件可以通过事件向父组件发送消息。
- 子父通信:子组件可以使用
this.$emit
触发事件,父组件监听这些事件并作出响应。 - 事件总线:对于更复杂的应用,可以使用事件总线(Event Bus)或 Vuex 进行跨组件通信。
4. 路由(Vue Router)
- 视图管理:Vue Router 允许你构建单页面应用程序,通过不同的路径来切换不同的视图(组件)。
- 路由配置:在
router/index.js
中配置路由,定义路径与组件之间的映射关系。
5. 状态管理(Vuex)
- 集中式存储:Vuex 提供了一个集中式存储管理应用的所有组件的状态。
- 状态修改:通过提交 mutation 来修改状态,通过 action 处理异步操作。
6. 资源和插件
- 插件:Vue 插件可以提供额外的功能,如
vue-router
和vuex
。 - 资源:静态资源(如图片、样式表)通常放在
public
目录中。
7. 构建和开发工具
- Vue CLI:Vue CLI 提供了项目脚手架、构建和开发服务器。
- 构建配置:通过
vue.config.js
文件自定义构建配置。
8. 项目目录结构
一个典型的 Vue 项目目录结构可能如下所示:
my-project/
│
├── public/ # 静态资源文件
│
├── src/ # 源代码
│ ├── assets/ # 静态资源,如图片、样式
│ ├── components/ # 应用组件
│ ├── views/ # 视图组件
│ ├── router/ # 路由配置
│ ├── store/ # Vuex 状态管理
│ ├── App.vue # 根组件
│ └── main.js # 入口文件
│
├── tests/ # 测试文件
│
├── .gitignore # Git 忽略文件配置
├── package.json # 项目依赖和脚本
├── README.md # 项目说明文件
└── vue.config.js # Vue CLI 构建配置
理解这些基本结构和组件组织方式有助于开发者更好地组织和管理 Vue 应用程序的代码,使其更加模块化、可维护和可扩展。
3.vue模板语法
【电脑关机重启后,vue项目需要再次使用运行命令,使之运行。】
组件化开发:
组件:由三种语法组成,html,css ,js
语法模板就是{{ }} 双层大括号。
{{变量名,简单计算,简单的判断(只能是一行内完成) }}
4.生命周期钩子
在 Vue.js 中,生命周期钩子(Lifecycle Hooks)是特殊的函数,可以在 Vue 实例或组件的不同阶段被调用。这些钩子允许开发者在实例或组件的生命周期中的特定时刻执行代码。
1.beforeCreate(创建前):
在实例初始化之后,数据观测和事件/侦听器配置之前被调用。
2.created(创建后):
在实例创建完成后被调用,此时数据观测和事件/侦听器已经设置好,但组件尚未挂载到 DOM 上。
3.beforeMount(组件特有-渲染前):
在首次渲染之前调用,此时虚拟 DOM 已经创建,但尚未挂载到真实 DOM 上。
4.mounted(渲染后):
在实例或组件挂载到 DOM 上后调用,此时可以访问到 DOM 元素。
5.beforeUpdate(更新前):
在数据变化导致虚拟 DOM 重新渲染之前调用。
6.updated(更新后):
在虚拟 DOM 重新渲染并打补丁完成后调用,此时组件已经更新。
7.beforeDestroy(销毁前):
在实例或组件销毁之前调用,此时实例或组件仍然完全可用。
8.destroyed(销毁后):
在实例或组件销毁后调用,此时实例或组件已经不可用。
9.activated(组件特有,用于 keep-alive 缓存的组件):
被 keep-alive 缓存的组件被激活时调用。
10.deactivated(组件特有,用于 keep-alive 缓存的组件):
被 keep-alive 缓存的组件被停用时调用。
11.errorCaptured(Vue 2.5.0+):
捕获组件内的错误时调用。
12.钩子使用
使用生命周期钩子,开发者可以在 Vue 实例或组件的不同阶段执行初始化、数据获取、清理工作等操作。这些钩子是 Vue 应用开发中不可或缺的一部分,它们提供了对组件生命周期的细粒度控制。
new Vue({data: {message: 'Hello World!'},beforeCreate: function() {console.log('beforeCreate - 实例创建,数据观测和事件/侦听器尚未设置。');},created: function() {console.log('created - 实例已创建,数据观测和事件/侦听器已设置。');},beforeMount: function() {console.log('beforeMount - 首次渲染之前。');},mounted: function() {console.log('mounted - 实例已挂载到 DOM 上。');},beforeUpdate: function() {console.log('beforeUpdate - 数据变化,虚拟 DOM 重新渲染之前。');},updated: function() {console.log('updated - 虚拟 DOM 重新渲染并打补丁完成。');},beforeDestroy: function() {console.log('beforeDestroy - 实例销毁之前。');},destroyed: function() {console.log('destroyed - 实例销毁后。');}
});
5.工具和库
Vue Router、Vuex 和 Vue CLI 是 Vue 生态系统中的三个重要组成部分,它们共同支持构建现代的单页面应用程序(SPA)。
Vue Router、Vuex 和 Vue CLI 一起构成了 Vue.js 的官方“三个火枪手”,它们为构建大型、复杂的单页面应用程序提供了必要的工具和模式。通过这些工具,开发者可以更高效地构建和管理现代的前端应用。
1.Vue Router
Vue Router 是 Vue.js 的官方路由管理器。它允许你构建多视图的单页面应用程序,通过不同的路径来切换组件,而不需要重新加载页面。Vue Router 与 Vue.js 核心深度集成,使得在 Vue 应用中使用路由变得简单而直观。
主要特点:
- 嵌套路由:支持嵌套的路由和视图。
- 路由参数:可以捕获 URL 中的参数并作为组件的 props 传递。
- 路由守卫:提供了不同的守卫钩子,如全局守卫、路由独享的守卫和组件内的守卫。
- 懒加载:支持路由级别的代码分割,可以提高应用的加载速度。
2.Vuex
Vuex 是 Vue.js 的官方状态管理模式。它用于在应用程序中集中管理状态(也称为状态管理模式),适用于复杂应用。Vuex 通过集中存储管理所有组件的状态,并通过相应的规则保证状态以一种可预测的方式发生变化。
主要特点:
- 单一状态树:整个应用的状态被集中管理在一个对象中。
- 状态管理:提供了响应式的状态管理。
- 变更跟踪:可以跟踪状态的变化,方便调试和时间旅行。
- 热重载:支持热重载和开发工具集成。
3.Vue CLI
Vue CLI 是 Vue.js 的官方命令行工具,用于快速搭建 Vue 项目。它提供了一个易于使用且可扩展的界面,允许开发者快速开始开发 Vue 应用,并包含现代前端开发所需的所有工具。
主要特点:
- 项目脚手架:快速创建新项目的模板。
- 插件系统:支持扩展和自定义项目配置。
- 构建和服务:提供了构建和本地服务的功能。
- 现代工具链:集成了 Babel、Webpack、PostCSS 等现代前端工具。
使用 Vue CLI 创建项目通常涉及以下步骤:
bash
# 全局安装 Vue CLI
npm install -g @vue/cli# 创建一个新的 Vue 项目
vue create my-project# 进入项目目录
cd my-project# 启动开发服务器
npm run serve
6.响应式数据绑定
Vue.js 实现响应式数据绑定和双向数据流主要依赖于以下几个核心技术:
通过这种方式,Vue.js 使得数据和视图之间的同步变得简单和高效,同时保持了代码的简洁性。开发者不需要手动操作 DOM 或监听事件来更新视图,Vue 的响应式系统会自动处理这些任务。
-
响应式系统:
Vue 使用响应式系统来跟踪数据的变化。在 Vue 中,数据通常是通过data
函数返回的对象来定义的。 -
依赖收集:
当组件的模板被渲染时,Vue 会触发数据的 getter,从而将依赖(通常是模板中的变量)收集起来。 -
观察者模式:
Vue 的响应式系统基于观察者模式,当数据变化时,依赖于这些数据的观察者(如组件的渲染函数)会被通知并更新。 -
虚拟 DOM:
Vue 通过维护一个虚拟 DOM 树来表示真实 DOM 的状态。当数据变化时,Vue 会计算出最小的 DOM 更新。 -
双向数据绑定:
Vue 提供了v-model
指令来实现双向数据绑定。v-model
通常用于表单输入元素,如<input>
、<textarea>
和<select>
。
1.响应式数据绑定:
1.初始化:
当创建 Vue 实例时,Vue 会遍历 data
对象中的属性,并使用 Object.defineProperty
将它们转换为 getter/setter。
2.依赖收集:
当组件的模板被渲染时,Vue 会访问这些属性(getter),并记录下哪些组件依赖于这些属性。
3.数据变化:
当数据发生变化时,触发 setter,Vue 会通知所有依赖于这些数据的组件。
4.异步更新队列:
Vue 将所有数据变化放入一个异步队列,然后批量处理这些变化。
5.视图更新:
在下一个事件循环中,Vue 清空异步队列,并更新所有依赖的组件的视图。
2.双向数据绑定:
1.v-model
指令:
在模板中使用 v-model
指令可以将表单输入元素与数据属性绑定。
2.输入事件监听:
Vue 在输入元素上监听 input
事件(对于 <textarea>
可能是 change
事件),并在事件处理函数中更新数据。
3.数据同步:
当用户输入时,Vue 通过事件处理函数同步更新数据,从而实现双向绑定。
4.视图响应:
由于数据是响应式的,数据的变化会自动触发视图的更新,使得输入元素的值与数据保持一致。
7.组件系统
Vue 的组件系统是构建大型应用程序的关键。通过组件化开发,可以将界面分解为独立的、可复用的组件,每个组件负责应用程序的一部分功能。
通过这些概念和工具,Vue 的组件系统提供了强大的能力来构建和管理复杂的用户界面。开发者可以创建可复用的组件,构建模块化的代码,从而提高开发效率和应用程序的可维护性。
1.组件创建
- 单文件组件:在 Vue 中,通常使用
.vue
单文件组件,它将模板、脚本和样式整合在一个文件中。 - 组件结构:一个基本的 Vue 组件至少包含一个
<template>
、一个<script>
部分,可选的<style>
部分。
2.组件注册
- 局部注册:在 Vue 组件的
<script>
部分使用components
属性定义并注册组件。 - 全局注册:使用 Vue 的
Vue.component
方法在全局范围内注册组件。
3.Props
- 传递数据:Props 是父组件传递给子组件的数据。子组件通过声明
props
属性来接收从父组件传递的数据。 - 单向数据流:Props 形成了父子组件之间的单向数据流,即数据只能从父组件流向子组件。
4.事件传递
- 自定义事件:子组件可以通过
this.$emit
方法触发事件,并将数据传递给父组件。 - 监听事件:父组件使用
v-on
或@
语法监听子组件触发的事件,并定义相应的处理函数。
5.组件通信
- 父子通信:通过 props 和事件,实现父子组件之间的数据和事件传递。
- 兄弟通信:通常通过共同的父组件来协调兄弟组件之间的通信。
- 跨级通信:可以使用事件总线、Vuex 或提供/注入模式来实现。
6.插槽(Slots)
- 内容分发:插槽允许子组件将内容传递回父组件的模板中,实现更灵活的内容插入。
- 具名插槽:可以定义具名插槽来插入特定的内容。
7.动态组件
<component>
标签:使用is
属性动态切换不同的组件。
8.混入(Mixins)
- 代码复用:混入允许你定义可复用的组件逻辑,然后在多个组件中使用这些逻辑。
9.组件库
- 第三方组件库:如 Vuetify、Element UI 等,提供了一套预制的组件,可以加速开发过程。
8.计算属性与侦听器
在 Vue.js 中,计算属性(Computed Properties)和侦听器(Watchers)是处理复杂数据逻辑的两个重要工具。它们都基于 Vue 的响应式系统,但用途和工作方式有所不同。
计算属性:适用于需要根据现有数据计算新值的场景,且计算结果会被缓存。
侦听器:适用于需要对数据变化做出响应并执行复杂逻辑的场景。
合理使用计算属性和侦听器可以帮助你构建更高效、更易于维护的 Vue 应用程序。
1.计算属性(Computed Properties)
计算属性是基于它们的响应式依赖进行缓存的。只有当计算属性依赖的数据发生变化时,计算属性才会重新计算。它们通常用于以下情况:
- 派生状态:当数据需要根据现有数据进行转换或计算时。
- 性能优化:避免在模板中进行复杂的逻辑处理,从而提高渲染效率。
new Vue({el: '#app',data: {firstName: 'Jane',lastName: 'Doe'},computed: {// 计算属性 fullName 依赖于 firstName 和 lastNamefullName: function () {return this.firstName + ' ' + this.lastName;}}
});
在上面的例子中,fullName
是一个计算属性,它依赖于 firstName
和 lastName
。当 firstName
或 lastName
发生变化时,fullName
会自动更新。
2.侦听器(Watchers)
侦听器用于在数据变化时执行异步或开销较大的操作。它们可以用来监听数据的变化,并在变化发生时执行任何响应。
new Vue({el: '#app',data: {question: '',answer: 'I cannot answer until you ask a question!'},watch: {// 侦听器监听 question 的变化question: function (newQuestion, oldQuestion) {this.answer = 'Waiting for you to stop typing...';this.debouncedGetAnswer();}},methods: {debouncedGetAnswer: function () {setTimeout(() => {this.answer = 'Thinking...';setTimeout(() => {this.answer = 'The answer is: 42';}, 1000);}, 500);}}
});
在这个例子中,question
是一个被侦听的数据属性。当用户输入问题时,侦听器会触发,执行 debouncedGetAnswer
方法,该方法使用 setTimeout
来模拟异步操作。
相关文章:

VUE.js笔记
1.介绍vue Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。 Vue 应用程序的基本…...

SpringBoot--yml配置文件的时间/大小的单位转换
原文网址:SpringBoot--yml配置文件的时间/大小的单位转换_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍SpringBoot的yml(properties)配置文件的时间/大小的单位转换。 概述 SpringBoot可以将yml中的配置绑定到一个Java类的字段&#x…...

【算法业务】互联网风控业务中的拒绝推断场景算法应用分享(涉及半监督算法、异常检测、变分自编码、样本权重自适应调整、迁移学习等)
1. 业务目标和任务描述 该项目是很早期的一个工作,属于互联网信贷风控场景,研究并应用信贷中的拒绝推断任务,处理方式也许对于目前的一些业务还有参考意义,因此这里做下分享。拒绝推断是指在信贷业务中,利用已知的接受…...

Windows PowerShell相关笔记
之前我写的一篇,把我的PS(power shell)该了配置文件 pyqt5vscode 配置坑笔记_vscode使用pyqt command failed-CSDN博客 文件里写的自动加载conda #region conda initialize # !! Contents within this block are managed by conda init !!…...

力扣9.24
2207. 字符串中最多数目的子序列 给你一个下标从 0 开始的字符串 text 和另一个下标从 0 开始且长度为 2 的字符串 pattern ,两者都只包含小写英文字母。 你可以在 text 中任意位置插入 一个 字符,这个插入的字符必须是 pattern[0] 或者 pattern[1] 。…...

NRF21540—低功耗蓝牙,蓝牙mesh、Thread和Zigbee和2.4 GHz私有协议范围扩展射频前端模块
nRF21540是一款射频前端模块(FEM),可用于改善短距离无线产品的传输范围和连接鲁棒性。作为一款辅助性设备,nRF21540是一种“即插即用型”的无线传输范围扩展器,可与nRF52和nRF53系列的高级多协议无线SoC搭配使用,所需的外部器件数…...

2024最新Linux Socket编程
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket&am…...

Linux下的驱动开发二
一、IO模型 I/O 模型在操作系统中用于处理应用程序与设备驱动之间的数据传输。I/O 通信模型的核心是解决程序与设备之间如何高效、合理地进行数据通信。不同的模型通过阻塞、非阻塞、同步、异步的方式来控制数据流和处理 I/O 请求。 注:在驱动开发中可以定义一个全…...

【JAVA报错已解决】 Java.lang.ArrayIndexOutOfBoundsException
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...

2024 CSP 游记
J 组 初赛 早上也是五点钟就起来 打游戏 了。 考点在八达小学,除了感觉小、破、旧就没有其他感觉( 我妈也是成功的给我提前一小时到达考场。 拿到试卷后,瞄一眼,咋这么简单,和一本通的模拟卷难度一样?…...

双十一有什么推荐好物?,这些你不能错过的宝藏好物推荐
随着双十一的临近,这场盛大的购物狂欢蓄势待发!为了让大家不在琳琅满目的商品中徘徊,琪琪用心归纳了一份购物清单,分享那些我亲自使用过,觉得必须拥有的商品。 这些商品不仅价格公道,而且质量上乘…...

NSSCTF [HUBUCTF 2022 新生赛]simple_RE(变种base64编码)
文件无壳 拖入IDA中 shiftF12查看可疑字符串 发现两串字符串 一看这两个等于号就猜测是base64编码 进入主函数看看 这段代码是一个简单的 C 语言程序,主要功能是接受用户输入的字符串作为“flag”,然后通过对输入的字符串进行一些处理和比较来验证是否输…...

clickhouse使用extract提取分号之前,之后,中间的内容
Area:‘安徽;宣城;宣州’,要提取分号之前,两个分号之前,最后一个分号之后的内容作为省市区 这是最后得到的正确的结果,感谢chatgpt 刚开始本来想使用splitByString -- 宣城 select splitByString(;,安徽;宣城;宣州)[2…...

Unity3D Compute Shader同步详解
前言 在Unity3D中,Compute Shader是一种强大的工具,它利用GPU的并行处理能力来执行复杂的计算任务,从而减轻CPU的负担,提高游戏的性能和效率。然而,由于GPU的工作方式,对共享资源的访问需要特别注意同步问…...

3D模型在UI设计中应用越来越多,给UI带来了什么?
当前3D模型在UI设计中应用很多,极大地拓展了UI设计的发挥空间,也拓宽了UI的应用领域,本文分享下UI中引入3D模型到底能带来什么价值. 3D模型在UI设计中的应用可以给用户界面带来以下几个方面的好处: 更真实的视觉体验:…...

前端框架的选择与考量:一场技术的盛宴
在当今快速迭代的Web开发领域,前端框架的选择成为了项目启动初期不可忽视的重要环节。随着React、Vue、Angular等主流框架的崛起,以及Svelte、Quasar等新兴力量的加入,开发者们面临着前所未有的选择难题。本文旨在探讨前端框架的选择依据、主…...

第五部分:7---信号的捕捉
目录 信号递达期间,该信号会被屏蔽直到递达完成。 sigaction实现信号的捕捉: 案例:在处理2号信号时屏蔽3号信号。 子进程退出向父进程发送SIGCHLD信号: 信号递达期间,该信号会被屏蔽直到递达完成。 当某个信号的处…...

HarmonyOS鸿蒙开发实战( Beta5.0)页面加载效果实现详解实践案例
鸿蒙HarmonyOS开发实战往期必看文章:(持续更新......) HarmonyOS NEXT应用开发性能实践总结(持续更新......) HarmonyOS NEXT应用开发案例实践总结合集(持续更新......) 一分钟了解”纯血版&…...

计算机网络中的VLAN详解
文章目录 计算机网络中的VLAN详解一、引言二、VLAN的作用与原理1、VLAN的作用2、VLAN的工作原理2.1、VLAN标签(Tag) 三、VLAN的配置与接口类型1、VLAN的配置2、接口类型 四、VLAN的应用场景1、企业网络2、数据中心3、教育网络 五、VLAN间的通信六、总结 …...

Nacos学习
系列文章目录 JavaSE基础知识、数据类型学习万年历项目代码逻辑训练习题代码逻辑训练习题方法、数组学习图书管理系统项目面向对象编程:封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习集合学习IO流、多线程学习仓库管理系统JavaSE项目员工…...

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0926)
十四、文章分类添加编辑 [element-plus 弹层] Git仓库:https://gitee.com/msyycn/vue3-hei-ma.git 点击显示弹层 准备弹层 const dialogVisible ref(false)<el-dialog v-model"dialogVisible" title"添加弹层" width"30%">…...

验收测试:从需求到交付的全程把控!
在软件开发过程中,验收测试是一个至关重要的环节。它不仅是对软件质量的把关,也是对整个项目周期的全程把控。从需求分析到最终的软件交付,验收测试都需要严格进行,以确保软件能够符合预期的质量和性能要求。 一、需求分析阶段 在…...

第十七节 鼠标的操作与相应
知识点 -event代表鼠标事件类型 -EVENT_LBUTTONDOWN鼠标左键按下 -EVENT_LBUTTONUP鼠标左键抬起 -EVENT_LBUTTONMOVE鼠标及移动 Point sp(-1, -1); Point ep(-1, -1); Mat temp; static void on_draw(int event, int x, int y, int flags, void* userdata) { Mat imag…...

深圳·2025胶粘剂展会 BOND第六届胶展
BOND第六届胶展、2025大湾区国际胶粘剂及密封剂展览会 时间:2025年6月25-27日 地址:深圳国际会展中心(新馆) UV胶、快干胶、结构粘结胶、导热胶、低温黑胶、硅胶、SMT贴片红胶、底部填充胶、低温热固胶、COB黑胶、围堰填充胶、U…...

什么是网络安全自动化以及优势与挑战
目录 网络安全自动化的工作原理 网络安全自动化的好处 增强的安全功能 改善表现和姿势 降低安全成本 简化的安全合规性和审计 更好的端点管理 网络安全自动化的挑战 耗时且容易出错的安全流程 可见性降低,风险和成本增加 合规管理 有用的网络安全自动化…...

java中的ArrayList和LinkedList的底层剖析
引入: 数据结构的分类,数据结构可以分成:线性表,树形结构,图形结构。 线性结构(线性表)包括:数组、链表、栈队列 树形结构:二叉树、AVL树、红黑树、B树、堆、Trie、哈夫曼树、并查集 图形结构:邻接矩阵、邻接表 线性表是具有存…...

占领矩阵-第15届蓝桥省赛Scratch中级组真题第5题
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第190讲。 如果想持续关注Scratch蓝桥真题解读,可以点击《Scratch蓝桥杯历年真题》并订阅合集,…...

[论文笔记] Chain-of-Thought Reasoning without Prompting
分析: 在CoT解码路径中,我们可以看到模型在第三个位置(𝑖? = 3)开始展示推理过程,并且给出了正确的答案“8”。模型首先识别出说话者有3个苹果,然后识别出爸爸比说话者多2个,即5个苹果,最后将这两个数量相加得到总数8个苹果。 这个例子表明,通过探索替代的解码路径…...

C++八股进阶
之前那个只是总结了一下常考点,这个是纯手打记笔记加深理解 这里写目录标题 C的四种智能指针为什么要使用智能指针?四种智能指针: C中的内存分配情况C中的指针参数传递和引用参数传递C 中 const 和 static 关键字(定义࿰…...

渗透测试--文件上传常用绕过方式
文件上传常用绕过方式 1.前端代码,限制只允许上传图片。修改png为php即可绕过前端校验。 2.后端校验Content-Type 校验文件格式 前端修改,抓取上传数据包,并且修改 Content-Type 3.服务端检测(目录路径检测) 对目…...