vue3语法
vue3教程
//ps 这里是基本写法 一般项目不需要ref 因为需要一直return
这里是根据在不使用ts后缀 来在.vue里面写setup
如下图所示:
setup
setup是启动页面会自动执行的一个函数
项目里定义的所有变量,都要在setup当中
在setup定义的变量和方法,都需要return出去,否则不能在视图当中使用
!<template><div><div>{{ res}}</div><div @click="btn">点击</div></div>
</template><script>
export default {
setup(){const res='123'/* 点击 */ // function btn(){//第一种用法// console.log('点击显示');//}const btn=()=>{//第二种用法(推荐)console.log('点击显示');}console.log(res);return{res,btn}
}
}
</script><style></style>
页面显示123
打印出来是 '点击显示' 123
ref
- 组合式api 推荐:
ref用来操作基本数据类型 数字 字符串
当ref值发生变化,视图值会自动更新
ref可操作基本数据类型,也可操作复杂数据 (对象 数组)
推荐:
ref用来操作基本数据类型 数字 字符串
为什么使用ref呢?
使用ref包裹数据,在数据修改会成为响应式状态。
ref发生变化时,视图会自动更新
!<template><div><div>{{ res}}</div><div>{{obj.name}}</div><div v-for="(item,index) in arr" :key="index">{{item.name}}</div><div @click="btn">点击</div></div>
</template>
<script>
import {ref} from 'vue'//组合式api
export default {
setup(){
const res=ref(123)
const obj=ref({name:'12121',age:'18'})
const arr=ref([{name:'yang'}])
const btn=()=>{res.value=343434;obj.value.name='000000';arr.value[0].name='999999';
}
return{res,btn,obj,arr}
}
}
</script><style></style>
点击前页面显示
123
12121
yang点击后页面显示
343434
000000
999999PS推荐:
ref用来操作基本数据类型 数字 字符串
reactive
- 定义普通数据类型不能用reactive 用ref
- reactive定义复杂的数据类型 比如数组 对象
reactive同样为我们的值创建了一个响应式应用> 定义普通数据类型不能用reactive 用ref> reactive定义复杂的数据类型 比如数组 对象> reactive 可响应深层次的数据 比如多维数组> 返回应该响应式prory对象
>
> 使用需要引入
!<template><div><div>{{ obj.name}}</div><div>{{ obj.age}}</div><div>{{obj.arr[0].name}}</div><div></div><div @click="btn">点击</div></div>
</template>
<script>
import {reactive} from 'vue'//组合式api
// reactive用来处理数组 对象 复杂数据类型
// 不能直接处理基本的数据 num stringexport default {
setup(){
const name='张三'
const obj=reactive({name,age:18,sex:'男',arr:[{name:'王五'}]
})
const btn=()=>{// reactive改变值不需要加valueobj.name='李四'obj.name=16obj.arr[0].name='杨'
}
return{btn,obj}
}
}
</script><style></style>
点击前页面显示
张三
18
王五点击后页面显示
16
18
杨PS > 定义普通数据类型不能用reactive 用ref> reactive定义复杂的数据类型 比如数组 对象
toRef
使用toRef是让js进行变化 页面视图不发生变化时进行使用
toRef也可以创建一个响应式数据ref本质是拷贝粘贴一份数据 脱离了原数据的交互ref函数将对象中的属性变成响应式数据 修改了响应式数据
但不会影响原数据 但是会更新视图层toRef函数本质是引用 修改了响应式数据
会影响原数据 但是不会更新视图层需要时引入
* 使用toRef是让js进行变化 页面视图不发生变化时进行使用
!<template><div><div>{{res}}</div><div>{{obj.name}}</div><div></div><div @click="btn">点击</div></div>
</template>
<script>
import {ref,toRef} from 'vue'
export default {
setup(){
const name='张三'
const res=ref(name)//num string 是ref包裹的const obj={name:'马云',age:'50'}
const res1=toRef(obj,name)//这样是操作name值(toRef)
const btn=()=>{console.log(res);res.value='李四'//使用ref改变值要加valueres1.value='张三1111'console.log(res1);
}
return{btn,obj,res,res1}
}
}
</script><style></style>
使用ref包裹的基本数据(num string)值修改视图变化了
但是js打印还是原数据使用toRef包裹的数据值修改时在js里面打印的发生了变化
但是视图没有变化综上所述:
ref函数将对象中的属性变成响应式数据 修改了响应式数据
但不会影响原数据 但是会更新视图层toRef函数本质是引用 修改了响应式数据
会影响原数据 但是不会更新视图层
toRefs
toRefs可以与其他响应式交互 更方便处理视图数据
主要作用是如下所示:
用于批量设置多个数据为响应式数据
toRefs可以与其他响应式交互 更方便处理视图数据
需要时引入
!<template><div><div><ul><li>{{name }}</li><li>{{age }}</li><li>{{ a }}</li></ul></div><div @click="btn">点击</div></div>
</template>
<script>
import { reactive,toRefs} from 'vue'
export default {
setup(){
const news=reactive({name:'张三',age:50,a:1})
const btn=()=>{
}
return{btn,...toRefs(news)}
}
}
</script><style></style>
主要作用是这个🤔
如上所示:
一般我们定义需要写{{news.name}} {{news.age}}才会在视图显示
但是:
使用toRefs后我们...toRefs(XXX)
直接写{{name}} {{age}}即可
computed
计算属性
与2一样 均用来监听数据的变化
使用时需引入:
监听数据变化如下所示:
累加效果
!<template><div><div>a1<input type="number" v-model="a1"/>b1<input type="number" v-model="b1"/>总和<input type="number" v-model="sum" /></div><div @click="btn">点击</div></div>
</template>
<script>
import { reactive, computed, toRefs } from "vue";
export default {setup() {const a1 = ''const b1 = ''const news = reactive({ a1, b1 })// 计算属性使用(数字)const sum=computed(()=>{return news.a1 + news.b1})// const btn = () => {};return { btn, ...toRefs(news),sum };},
};
</script><style>
</style>
watch
与2一样 用来侦听数据变化
使用时引入
单个数据监听变化
//监听单个数据变化
!<template><div><div>{{num}}</div><div @click="num++">点击</div></div>
</template>
<script>
import {ref, reactive, watch, toRefs } from "vue";
export default {setup() {const num = ref(0)// 监听(watch)变化// 监听点击数据发生变化watch(num,(newVa,oldVa)=>{console.log(newVa,oldVa);})return { num};},
};
</script><style>
</style>
PS 重点:watch('',(newVa,oldVa)=>{console.log(newVa,oldVa);},{immediate:true})},
{immediate:true}进入页面立即开启监听 默认为false
多个数据监听变化
!<template><div><div>{{num}}----{{num1 }}</div><div @click="num++">点击</div></div>
</template>
<script>
import {ref, reactive, watch, toRefs } from "vue";
export default {setup() {const num = ref(0)const num1=ref(1)// 监听(watch)变化// 监听多个直接放在数组里面来监听watch([num,num1],(newVa,oldVa)=>{console.log(newVa,oldVa);})return {num,num1};},
};
</script><style>
</style>
PS 重点:watch('',(newVa,oldVa)=>{console.log(newVa,oldVa);},{immediate:true})},
{immediate:true}进入页面立即开启监听 默认为false
监听整个reactive响应式数据变化
- reactive(数组,对象,多维数组)定义
上一个数据是监听不到的 只能得到最新数据
!<template><div><div>{{num}}----{{num1.age.num}}</div><div @click="num++">点击</div><div @click="num1.age.num++">点击1</div></div>
</template>
<script>
import {ref, reactive, watch, toRefs } from "vue";
export default {setup() {const num = ref(0)const num1=reactive({name:'张三',age:{num:1}})// 监听整个reactive(数组,对象,多维数组)的数据变化// 只能监听最新结果 上一个数据是监听不到的watch(num1,(newVa,oldVa)=>{console.log(newVa,oldVa);//newVa变化 oldVa不变化})return {num,num1};},
};
</script><style>
</style>
PS 重点:watch('',(newVa,oldVa)=>{console.log(newVa,oldVa);},{immediate:true})},
{immediate:true}进入页面立即开启监听 默认为false
监听某一个reactive的数据变化
- reactive(数组,对象,多维数组)定义
- 监听某一个要用方法来写 如下所示:
上一次与下一次结果都可以得到
!<template><div><div>{{num}}----{{num1.age.num}}</div><div @click="num++">点击</div><div @click="num1.age.num++">点击1</div></div>
</template>
<script>
import {ref, reactive, watch, toRefs } from "vue";
export default {setup() {const num = ref(0)const num1=reactive({name:'张三',age:{num:1}})// 监听某一个reactive(数组,对象,多维数组)的数据变化// 监听某一个要用方法这种来写watch(()=>num1.age.num,(newVa,oldVa)=>{console.log(newVa,oldVa);},{immediate:true})//进入页面立即开启监听 默认为falsereturn {num,num1};},
};
</script><style>
</style>
PS 重点:watch('',(newVa,oldVa)=>{console.log(newVa,oldVa);},{immediate:true})},
{immediate:true}进入页面立即开启监听 默认为false
watchEffect
watchEffect 侦听器
- 初始化就执行(相当于生命周期created)
watchEffect如果存在的话 在组件初始化当中就会执行一次并收集依赖watch可以获取到新值与旧值 而watchEffect是拿不到的watchEffect不需要指定监听的属性 会自动收集 只要我们在回调中引入了响应式属性
当这些属性变更时 这个回调都会执行 而watch只能监听指定属性而做出变更使用时引入:
!<template><div><div>{{num}}----{{num1.age.num}}</div><div @click="num++">点击</div><div @click="num1.age.num++">点击1</div></div>
</template>
<script>
import {ref, reactive, watchEffect, toRefs } from "vue";
export default {setup() {const num = ref(0)const num1=reactive({name:'张三',age:{num:1}})const res=watchEffect(()=>{console.log(111,'初始化执行');const a=num.valueconst b=num1.age.numconsole.log(a,'33333');console.log(b,'bbbbbbbb');})res()//停止监听(输入这个就点击停止监听)return {num,num1,res};},
};
</script><style>
</style>
页面在初始化开始执行以下操作
控制台输出:111 '初始化执行'
login.vue?4e59:15 0 '33333'
login.vue?4e59:16 1 'bbbbbbbb'
shallowReative/shallowRef
遇到处理只有点击才会是处理
看点击的变化
了解即可
shallowRef 只处理基本类型数据
shallowReative只处理第一层数据
使用时引入:
shallowReative
点击自增name会变化
num不会变化
因为name是第一层数据( shallowReative只处理第一层数据)
!<template><div><div>{{name}}</div><div>{{age.num}}</div><div @click="age.num++">点击</div></div>
</template>
<script>
import {shallowReactive,shallowRef, toRefs } from "vue";
export default {setup() {const num=shallowReactive({name:'张三',age:{num:1}})return {...toRefs(num)};},
};
</script><style>
</style>
这里点击自增不会变化
shallowRef
!<template><div><div>{{num}}</div><div @click="num++">点击</div></div>
</template>
<script>
import {shallowReactive,shallowRef, toRefs } from "vue";
export default {setup() {// shallowRef处理基本数据(num string)const num=shallowRef(1)return {num};},
};
</script><style>
</style>
只处理基本数据(num string)
除了这二种数据类型其
他不能处理
这个仅仅只能处理shallowRef与ref区别是:shallowRef仅仅只能处理基本数据(num string)ref建议处理基本数据(num string )
组件传值(通信)
组件通信
vuex()
packpage.json里面看是否安装
如下所示:
存储(传值)
ts有Pinia js有vuex
第一步安装> cnpm i vuex@next --save需要时需引入> import {useStore} from "vuex";
在这里插入代码片
在这里插入代码片
在这里插入代码片
生命周期
Vue3的setup语法糖直接代替beforeCreate,Created;
Destroy更名为Unmount;其他就是直接加onbeforeCreate -> 使用 setup() created -> 使用 setup()beforeMount -> onBeforeMount dom元素在内存中,还未渲染到页面(不可操作dom)mounted -> onMounted dom已经渲染到页面,能操作dom了beforeUpdate -> onBeforeUpdate 数据更改后,页面还未渲染updated -> onUpdated 数据更改后,页面渲染完成beforeDestroy -> onBeforeUnmount 组件销毁之前destroyed -> onUnmounted 组件销毁之后errorCaptured -> onErrorCaptured (当事件处理程序或生命周期钩子抛出错误时调用)
import {ref,onBeforeMount,onMounted,onBeforeUpdate,onUpdated,onBeforeUnmount,onUnmounted,onErrorCaptured,onRenderTracked,onRenderTriggered} from "vue"
onBeforeMount(()=>{console.log('内存中有dom,还未渲染,还不能操作dom')
})
onMounted(()=>{console.log('dom结构已渲染到页面,可以操作dom啦')
})
onBeforeUpdate(()=>{console.log('数据变化后,页面还未渲染')
})
onUpdated(()=>{console.log('数据变化后,页面已经渲染')
})
onBeforeUnmount(()=>{ //组件的v-if可控制组件卸载console.log('组件卸载前')
})
onUnmounted(()=>{console.log('组件卸载后')
})
新增的钩子函数:
onRenderTracked onRenderTriggered
onRenderTracked直译过来就是状态跟踪,它会跟踪页面上所有响应式变量和方法的状态,也就是我们用return返回去的值,它都会跟踪。只要页面有update的情况,它就会跟踪,然后生成一个event对象,我们通过event对象来查找程序的问题所在。
onRenderTriggered直译过来是状态触发,它不会跟踪每一个值,而是给你变化值的信息
onRenderTracked((e)=>{console.log('跟踪',e)
})
//调试钩子函数:onRenderTracked,onRenderTriggered
onRenderTriggered((e)=>{console.log('定位变化的',e)//参数能取到变化的属性信息
})
抽离封装
简称封装罢了。。。。
a页面与b页面的内容包含同样的数据
我们需要把这个相同数据单独放在一个文件里面后缀.js文件然后分别把这个文件在a页面 b页面进行引入使用即可
3中任何一个组合式api都可以尝试抽离出去在另一个文件
最后只需要回归到setup中即可
抽离前
a页面与b页面的内容是一致的。
a页面
!<template><div class="main"><div>{{ name}}</div><div>{{ age}}</div><div>{{arr[0].name}}</div><div></div><div @click="btn">点击</div></div></template><script>import {reactive,toRefs} from 'vue'export default {setup(){const name='张三'const obj=reactive({name,age:18,sex:'男',arr:[{name:'王五'}]})const btn=()=>{}return{btn,...toRefs(obj)}}}</script><style scoped>.main{background: rosybrown;}</style>
b页面
!<template><div class="main"><div>{{ name}}</div><div>{{ age}}</div><div>{{arr[0].name}}</div><div></div><div @click="btn">点击</div></div></template><script>import {reactive,toRefs} from 'vue'export default {setup(){const name='张三'const obj=reactive({name,age:18,sex:'男',arr:[{name:'王五'}]})const btn=()=>{}return{btn,...toRefs(obj)}}}</script><style scoped>.main{background: rosybrown;}</style>
抽离后
a页面与b页面的内容是一致的把一致的内容单独放在public.js文件当中然后再把这个文件分别引入到a页面与b页面
公共文件 public.js
import {reactive,toRefs} from 'vue'
const pblic=()=>{const name='张三'const obj=reactive({name,age:18,sex:'男',arr:[{name:'王五'}]})return obj //返回值
}
export default pblic
a页面
!<template><div class="main"><div>{{ name}}</div><div>{{ age}}</div><div>{{arr[0].name}}</div><div></div><div @click="btn">点击</div></div></template><script>import {reactive,toRefs} from 'vue'
import pblic from '../config/public'export default {setup(){const obj=pblic()const btn=()=>{obj.name='2323232'}return{btn,...toRefs(obj)}}}</script><style scoped>.main{background: rosybrown;}</style>
b页面
!<template><div class="main"><div>{{ name}}</div><div>{{ age}}</div><div>{{arr[0].name}}</div><div></div><div @click="btn">点击</div></div></template><script>import {reactive,toRefs} from 'vue'
import pblic from '../config/public'export default {setup(){const obj=pblic()const btn=()=>{obj.name='2323232'}return{btn,...toRefs(obj)}}}</script><style scoped>.main{background: rosybrown;}</style>
相关文章:
vue3语法
vue3教程 //ps 这里是基本写法 一般项目不需要ref 因为需要一直return 这里是根据在不使用ts后缀 来在.vue里面写setup 如下图所示:setup setup是启动页面会自动执行的一个函数 项目里定义的所有变量,都要在setup当中 在setup定义的变量和方法,都需要r…...
对象之间的关系
目录1. 依赖2. 关联3. 聚合4. 组合Java的对象/类之间有四种关系:依赖、关联、组合、聚合。 1. 依赖 依赖(Dependency): 一个对象的功能依赖于另一个对象。 类比:人类生存依赖食物和空气 体现:被依赖者体…...
云原生时代顶流消息中间件Apache Pulsar部署实操-上
文章目录安装运行时Java版本推荐Locally Standalone集群启动验证部署分布式集群部署说明初始化集群元数据部署BookKeeper部署BrokerAdmin客户端和验证Tiered Storage(层级存储)概述支持分级存储何时使用工作原理安装 运行时Java版本推荐 Locally Standalone集群 启动 # 下载…...
Python实现基于openCV+百度智能云平台实现《1:N人脸考勤机》文章最后附带源码!
目录 一、 项目介绍 1.1 项目名称 1.2 项目简介 1.3 项目物料 1.4 技术栈 二、 项目架构 三、项目细节 3.1 环境搭建 3.2 利用opencv实现摄像头调取及相关图像的采集 3.3 利用aips上传图像和结果返回 3.4 结果优化和处理 3.5 可扩展性 3.6 遗留问题和…...
因为锁的问题,我们被扣了1万
前言 春节放假期间,一个项目上的积分接口被刷,而且不止一个人在刷,并且东西也被兑走,放假晚上被人叫起来排查问题,通过这个人的积分明细观察,基本一秒就能获取一次,远远超过了积分规则限定的次…...
【STM32笔记】低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER)
【STM32笔记】低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER) 前文: blog.csdn.net/weixin_53403301/article/details/128216064 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录…...
浏览器渲染中的相关概念
渲染 渲染流水线 构建 DOM 树 输入:HTML 文档;处理:HTML 解析器解析;输出:DOM 数据解构。 样式计算 输入:CSS 文本;处理:属性值标准化,每个节点具体样式(…...
【MySQL】数据类型
1、数据类型描述 类型类型举例整数类型TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT浮点类型FLOAT、DOUBLE定点数类型DECIMAL位类型BIT日期时间类型YEAR、TIME、DATE、DATETIME、TIMESTAMP文本字符串类型CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT枚举类…...
L2-037 包装机
一种自动包装机的结构如图 1 所示。首先机器中有 N 条轨道,放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品推落筐中。当 0 号按钮被按下时,机械手将抓取筐顶部的一件物品&#x…...
MySQL -查询日志、二进制日志、错误日志、慢查询日志
文章目录1.错误日志2.二进制日志3.查询日志4.慢查询日志1.错误日志 错误日志是 MySOL中最重要的日志之一,它记录了当 mvsald 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息当数据库出现任何故障导致无法正常使用时,建议…...
TCP实现可靠传输的实现
TCP实现可靠传输的实现 目录TCP实现可靠传输的实现ARQ协议停止等待协议(古老)连续ARQ协议累计重传(回退N帧的ARQ协议)缓存确认(选择重传ARQ协议)超时重传的时间选择TCP的流量控制零窗口探测报文段Nagle算法…...
2/14考试总结
时间安排 7:30–7:50 看题,T1可能是个数据结构之类的东西,T2是 dp ,T3 构造。 7:50–8:20 T3,仿照样例的构造,可以通过一部分测试点。 8:20–9:20 T1,发现题目实际上要求子树内各儿子的深度信息,可以 dsu ,对于不能暴…...
程序环境和预处理详解
文章目录一、程序环境1.1 - 翻译环境1.1.1 - 编译1.1.1.1 - 预编译(预处理)1.1.1.2 - 编译1.1.1.3 - 汇编1.1.2 - 链接1.2 - 执行环境二、预处理详解2.1 - 预定义符号2.2 - #define2.2.1 - #define 定义标识符2.2.1.1 - 语法2.2.1.2 - 建议2.2.2 - #defi…...
The Social-Engineer Toolkit(社会工程学工具包)互联网第一篇全模块讲解
一、工具介绍 Social-Engineer Toolkit 是一个专为社会工程设计的开源渗透测试框架,可以帮助或辅助你完成二维码攻击、可插拔介质攻击、鱼叉攻击和水坑攻击等。SET 本身提供了大量攻击选项,可让您快速进行信任型攻击,也是一款高度自定义工具…...
Windows11去掉不满足系统要求的提示水印
我的电脑是LEGION的拯救者R70002021,预装的是Windows 11 家庭中文版,没有折腾重装过系统,今天突然注意到右下角出现了这个提示:“不满足系统要求。转到’设置"了解详细信息”。 在进入设置 - 系统 面板中也提示不满足系统要…...
JavaScript 计时事件
JavaScript 计时事件 通过使用 JavaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件。 在 JavaScript 中使用计时事件是很容易的,两个关键方法是: setInterval() - 间隔指定的…...
七大排序算法的多语言代码实现
文章目录 前言 一、排序算法 1.原理简述 2.分类与复杂度 二、实例代码 1.冒泡排序 C Python Java Golang Rust Dephi 2.选择排序 C Python Java Golang Rust Dephi 3.插入排序 C Python Java Golang Rust Dephi 4.希尔排序 编辑 C Python Java Gola…...
【基础算法】表达式计算
中缀表达式:我们平常见到的正常数学式子 后缀表达式:12-3* 后缀表达式对于计算机很容易计算,只需要从头部扫描字符串。然后遇到数字就入栈,遇到运算符就取出栈顶的两个数进行运算。最后把运算结果入栈,最后栈中就会剩一个数为答…...
动态规划问题
目录 一、动态规划简介 二、利用动态规划解决问题 1、斐波拉契序列 2、拆分词句 3、三角形最小路径和 4、不同的路径数目(一) 5、带权值的最小路径和 6、求路径ii 7、01背包 8、不同子序列 9、编辑距离 10、分割回文串 一、动态规划…...
【MySQL进阶】 存储引擎 索引
😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享Java相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页…...
5 款最好的免费 SSD 数据恢复软件
SSD(固态硬盘)提供比传统硬盘更快的读/写速度,使启动、软件加载和游戏启动更快。因此,在我们选择存储设备时,它是一个极好的选择。但是,它仍然存在数据丢失的风险。假设您是受害者之一,正在寻找…...
MyBatis案例 | 使用映射配置文件实现CRUD操作——删除数据
本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥JavaWeb Java入门篇: 🔥Java基础学习篇 Java进阶学习篇&…...
CSDN 编程竞赛二十八期题解
竞赛总览 CSDN 编程竞赛二十八期:比赛详情 (csdn.net) 本期竞赛的题目都很简单,但是非常考验读题和编码速度。这一次没有遇到bug,竞赛体验较好。 竞赛题解 题目1、小Q的鲜榨柠檬汁 团建活动是大家所想要的。小Q给大家准备了鲜橙汁。现在…...
DML数据操纵语言
DML数据操纵语言 目录概述一、插入语句(一)方式一(二)方式二:(三)两种方式的比较二、修改语句三、删除语句概述方式一:delete方式二:truncate语句 【清空语句】delete VS truncate 【面试题!!!】概述 数据…...
【Hello Linux】Linux工具介绍 (gcc/g++ gdb)
作者:小萌新 专栏:Linux 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:介绍Linux的常用工具gcc/g 以及gbd Linux工具介绍gcc / ggcc / g的作用为什么语言要经过这四步才能变为可执行指令gcc / g语法预处理编…...
TeamFiltration:一款针对O365 AAD账号安全的测试框架
关于TeamFiltration TeamFiltration是一款针对O365 AAD账号安全的跨平台安全测试框架,在该工具的帮助下,广大研究人员可以轻松对O365 AAD账号进行枚举、喷射、过滤和后门植入等操作。TeamFiltering与CrackMapExec非常相似,它可以创建并维护一…...
你是真的“C”——Visual Studio 2022(VS2022)编译器 -—实用调试技巧
你是真的“C”——Visual Studio 2022(VS2022)编译器 -—实用调试技巧😎前言🙌1. 什么是bug?🙌2. 调试是什么?有多重要?🙌2.1 调试是什么?2.2 调试的基本步骤…...
数据结构与算法:7种必须会的排序以及3种非基于比较排序
1.什么是排序 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序…...
数据库用户数
Oracle的用户数 oracle软件内部并没对用户数做限制,买5个用户数,指你买了5个user licences,从法律上只能连5个session,超过5个的连接都是非法的。oracle不给你技术上的限制,可是给你法律上的限制。 一般来讲…...
nginx如何用html显示多个图片并加入播放链接
需求背景通过nginx来做个点播服务,ffmpeg截取视频中的某一帧作为视频的封面,前端页面展示这个封面,,并链接到对应的视频播放链接,加载播放器进行播放简单介绍一下ffmpeg截取视频中的某一帧的方式截取视频的第一帧&…...
沈阳男科三级甲医院排名/网站seo方案撰写
网络发展历史和分层 最早的"阿帕网" 采用的是网络控制协议, 这个协议跟现在的互联网是有相同的地址, 比如说它能够互联, 不同种类的计算机, 和不同的操作系统, .我们的互联网也是同样道理的.,但是没有纠错功能., TCP发送的时候不会出错 TCP可靠传输 IP不可靠传输(…...
wordpress分享收藏点赞/网站优化北京seo
前言 看标题就知道,这个又是个在面试中被问到的问题。这个问题其实是在我上次换工作的时候面试被问到过几次,之前也没在意过,觉得这个东西可能比较深奥,我直接说不理解吧。但是随着Java开发这个行业越来越卷,这次换工作…...
宁夏网站开发公司/seo关键词优化策略
解析oracle的rownum 对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。举例说…...
建材网站建设方案/360手机优化大师安卓版
2019独角兽企业重金招聘Python工程师标准>>> 数字转成字符串 i 322 str %d % i 常用的格式化字符串 %d 整数 %f, %F 浮点数 %e, %E 科学计数 %% 输出% 格式化操作符辅助指令 符号作用 *定义宽度或者小数点精度 -用做左对齐…...
微信小程序登录页面/泰州seo外包公司
/*收获:1. map是从键到值的映射例子:map<string, int> month_name;month_name["July"] 7;map除了支持set支持的insert、find、count、remove外,还支持 [] 运算符,故map可弹鼓奏数组使用,map也称为“关…...
微信上可以做网站吗/seo属于技术还是营销
FAIL_ON_SYMBOL_HASH_OVERFLOW 这个类型不存在。 问题的原因是jar包版本冲突。这个是在jackson的 since 2.4版本的包里面才有。2.3之前的版本是没有得。 这个存在2.4及以上才出现的,所以,实际运行的项目中jackson的jar冲突了。 我这儿的问题是flume的l…...