Vue23Web 基礎性拉滿的面試題(2025版)還沒更新完...
Vue2&3
- 基礎性
- 1. 關於Vue2和Vue3生命週期的差別
- 2. Vue2&3組件之間傳參不同點
- Vue2 傳遞與接收
- Vue3 傳遞與接收 (使用script setup語法糖)
- Vue3 傳遞與接收 (不使用script setup語法糖)
- 3. Vue2&3 keep-alive 組件
- Vue2 keep-alive
- Vue3 keep-alive
- 進階性
- 爲什麽POST請求有時會重複調用兩次
- 網路問題
- 跨域請求與預檢請求
- JS原型、原型鏈
- 原型
- 原型鏈
- 繼承 有哪些繼承 優點是什麼
- new 操作符具体干了什么
- js 有哪些方法改变 this 指向
- 对一个函数链式调用 bind,this 指向的是谁?为什么?

整個内容一般都是講Vue2&3的不同點 并無單個版本説明
博客為 >>星光菌子整理
基礎性
1. 關於Vue2和Vue3生命週期的差別
-
相似的生命周期阶段
Vue 2和Vue 3都包含以下几个核心的生命周期阶段,且对应的钩子函数功能类似 -
创建阶段:在实例初始化时触发,主要用于初始化数据和事件
Vue 2:beforeCreate 和 created
Vue 3:beforeCreate 和 created
不过在 Vue 3 的组合式 API 里,beforeCreate 和 created可以省略,因为 setup 函数在这个阶段之前执行,能完成相同的初始化工作 -
挂载阶段:在实例挂载到 DOM 之前和之后触发
Vue 2:beforeMount 和 mounted
Vue 3:beforeMount 和 mounted
功能与 Vue 2 一致 -
更新阶段:当响应式数据发生变化,DOM 重新渲染前后触发
Vue 2:beforeUpdate 和 updated
Vue 3:beforeUpdate 和 updated
功能与 Vue 2 一致 -
销毁阶段:在实例销毁前后触发,用于清理一些资源
Vue 2:beforeDestroy(Vue 2.2.0 起也叫 beforeUnmount) 和 destroyed(Vue 2.2.0 起也叫 unmounted)
Vue 3:beforeUnmount 和 unmounted
beforeUnmount 替代了 Vue 2 的 beforeDestroy,unmounted 替代了 destroyed
2. Vue2&3組件之間傳參不同點
在 Vue 2 和 Vue 3 中,组件之间传参主要有两个明显不同点
-
声明方式:
Vue 2在组件选项中使用props选项以对象或数组形式声明接收的属性;Vue 3在script setup中使用 defineProps 宏函数来声明,在普通script中使用和Vue 2类似的props选项
-
事件监听:
Vue 2使用$emit触发自定义事件,父组件使用v-on或@监听;Vue 3在script setup中使用defineEmits宏函数声明可触发的事件,触发方式和Vue 2类似,但语法更简洁
Vue2 傳遞與接收
# 父组件 Parent.vue<template><div><!-- 引入子组件并传递数据,同时监听子组件触发的事件 --><ChildComponent :message="parentMessage" @childEvent="handleChildEvent" /></div>
</template><script>
// 引入子组件
import ChildComponent from './Child.vue';export default {components: {ChildComponent},data() {return {// 父组件的数据,用于传递给子组件parentMessage: '来自 Vue 2 父组件的数据'};},methods: {// 处理子组件触发的事件的方法handleChildEvent(data) {console.log('在 Vue 2 中收到来自子组件的数据:', data);}}
};
</script>
# 子组件 Child.vue<template><div><!-- 显示从父组件接收到的数据 --><p>{{ message }}</p><!-- 点击按钮触发向父组件发送事件 --><button @click="sendEventToParent">向父组件发送事件</button></div>
</template><script>
export default {// 声明接收父组件传递的 propsprops: ['message'],methods: {// 触发向父组件发送事件的方法sendEventToParent() {// 触发自定义事件并传递数据给父组件this.$emit('childEvent', '来自 Vue 2 子组件的数据');}}
};
</script>
Vue3 傳遞與接收 (使用script setup語法糖)
# 父组件 Parent.vue<template><div><!-- 引入子组件并传递数据,同时监听子组件触发的事件 --><ChildComponent :message="parentMessage" @child-event="handleChildEvent" /></div>
</template><script setup>
import { ref } from 'vue';
// 引入子组件
import ChildComponent from './Child.vue';// 使用 ref 创建响应式数据,作为要传递给子组件的数据
const parentMessage = ref('来自 Vue 3 父组件的数据');// 处理子组件触发的事件的方法
const handleChildEvent = (data) => {console.log('在 Vue 3 中收到来自子组件的数据:', data);
};
</script>
# 子组件 Child.vue<template><div><!-- 显示从父组件接收到的数据 --><p>{{ message }}</p><!-- 点击按钮触发向父组件发送事件 --><button @click="sendEventToParent">向父组件发送事件</button></div>
</template><script setup>
import { defineProps, defineEmits } from 'vue';// 声明接收父组件传递的 props
const props = defineProps({message: String
});// 声明可触发的自定义事件
const emits = defineEmits(['child-event']);// 触发向父组件发送事件的方法
const sendEventToParent = () => {// 触发自定义事件并传递数据给父组件emits('child-event', '来自 Vue 3 子组件的数据');
};
</script>
Vue3 傳遞與接收 (不使用script setup語法糖)
# 父组件 Parent.vue<template><div><!-- 引入子组件,传递数据并监听子组件触发的事件 --><ChildComponent :message="parentMessage" @child-event="handleChildEvent" /></div>
</template><script>
import { ref } from 'vue';
// 引入子组件
import ChildComponent from './Child.vue';export default {components: {ChildComponent},setup() {// 使用 ref 创建响应式数据const parentMessage = ref('来自 Vue 3 父组件的数据');// 处理子组件触发的事件的方法const handleChildEvent = (data) => {console.log('在 Vue 3 中收到来自子组件的数据:', data);};// 返回需要在模板中使用的数据和方法return {parentMessage,handleChildEvent};}
};
</script>
# 子组件 Child.vue<template><div><!-- 显示从父组件接收到的数据 --><p>{{ message }}</p><!-- 点击按钮触发向父组件发送事件 --><button @click="sendEventToParent">向父组件发送事件</button></div>
</template><script>
import { defineComponent } from 'vue';export default defineComponent({// 声明接收父组件传递的 propsprops: {message: {type: String,required: true}},// 声明可触发的自定义事件emits: ['child-event'],setup(props, { emit }) {// 触发向父组件发送事件的方法const sendEventToParent = () => {// 触发自定义事件并传递数据给父组件emit('child-event', '来自 Vue 3 子组件的数据');};// 返回需要在模板中使用的方法return {sendEventToParent};}
});
</script>
3. Vue2&3 keep-alive 組件
keep-alive是 Vue 提供的一个内置组件,用于缓存动态组件或路由组件,避免组件在切换时重复创建和销毁,从而提高组件的性能和响应速度。下面分别介绍 Vue 2 和 Vue 3 中 keep-alive 的使用方法
activated和deactivated是比較特殊的兩個鉤子,需要keep-live配合使用
當引入keep-alive的時候,頁面第一次進入,鉤子的觸發順序created=>mounted=>activated,退出時觸發deactivated當再次進入(前進或後退)時,只觸發activated
核心功能相同:在
Vue 2和Vue 3中,keep-alive组件的核心功能都是缓存组件实例,避免重复创建和销毁
基本用法相同:都是通过将需要缓存的组件包裹在<keep-alive>标签内来实现缓存
Vue2 keep-alive
<template><!-- 使用 keep-alive 包裹需要缓存的组件 --><keep-alive><!-- 通过 is 指令动态切换组件 --><component :is="currentComponent"></component></keep-alive><!-- 切换组件的按钮 --><button @click="toggleComponent">Toggle Component</button>
</template>
<script>
// 引入组件
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';
export default {data() {return {// 当前显示的组件currentComponent: 'ComponentA'};},components: {ComponentA,ComponentB},methods: {toggleComponent() {// 切换组件this.currentComponent = this.currentComponent === 'ComponentA' ? 'ComponentB' : 'ComponentA';}}
};
</script>
// ComponentA.vue
<template><div><h1>Component A</h1></div>
</template>
<script>
export default {activated() {// 组件被激活时触发console.log('Component A activated');},deactivated() {// 组件被停用时触发console.log('Component A deactivated');}
};
</script>
Vue3 keep-alive
<template><!-- 使用 keep-alive 包裹需要缓存的组件 --><keep-alive><!-- 通过 is 指令动态切换组件 --><component :is="currentComponent"></component></keep-alive><!-- 切换组件的按钮 --><button @click="toggleComponent">Toggle Component</button>
</template><script setup>
import { ref } from 'vue';
// 引入组件
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';// 定义当前显示的组件
const currentComponent = ref(ComponentA);
const toggleComponent = () => {// 切换组件currentComponent.value = currentComponent.value === ComponentA ? ComponentB : ComponentA;
};
</script>
// ComponentA.vue
<template><div><h1>Component A</h1></div>
</template>
<script setup>
import { onActivated, onDeactivated } from 'vue';
// 组件被激活时触发
onActivated(() => {console.log('Component A activated');
});
// 组件被停用时触发
onDeactivated(() => {console.log('Component A deactivated');
});
</script>
進階性
爲什麽POST請求有時會重複調用兩次
網路問題
有時瀏覽器為了確保請求的可靠性,會在網路不穩定的情況下自動重試請求
如果第一次POST請求因網路問題而沒有成功,瀏覽器可能會自動再發一次請求
這種情況下,我們會看到兩次POST請求
跨域請求與預檢請求
當我們進行跨網域請求時,尤其是使用
CORS(跨網域資源共用)時,瀏覽器會在正式發送POST請求之前發送OPTIONS請求,這就是所謂的預檢請求
這是為了確定伺服器是否允許跨網域請求
fetch('https://api.example.com/data', {method: 'POST',headers: {'Content-Type': 'application/json','Authorization': 'Bearer token'},body: JSON.stringify({ key: 'value' })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));# 在開發者工具中,我們可以看到先發了一個OPTIONS請求,接著才是實際的POST請求
JS原型、原型鏈
原型
- ① 所有引用类型都有一个
__proto__ (隐式原型)属性,属性值是一个普通的对象 - ② 所有函数都有一个
prototype(原型)属性,属性值是一个普通的对象 - ③ 所有引用类型的
__proto__属性指向它构造函数的prototype
原型鏈
当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的 __proto__ 隐式原型上查找,即它的构造函数的 prototype,如果还没有找到就会再在构造函数的 prototype 的 __proto__ 中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链
原型鏈判斷
Object.prototype.__proto__; //null
Function.prototype.__proto__; //Object.prototype
Object.__proto__; //Function.prototype
Object instanceof Function; //true
Function instanceof Object; //true
Function.prototype === Function.__proto__; //true
繼承 有哪些繼承 優點是什麼
继承(inheritance)是面向对象软件技术当中的一个概念。如果一个类别 B“继承自”另一个类别 A,就把这个 B 称为“A 的子类”,而把 A 称为“B 的父类别”也可以称“A 是 B 的超类”.
组合继承: 原型链继承和借用构造函数方法组合就是组合继承。用原型链实现对原型属性和方法的继承,用借用构造函数技术来实现实例属性的继承.
寄生组合式继承: 结合借用构造函数传递参数和寄生模式实现继承。这是最成熟的方法,也是现在库实现的方法
優點:继承可以使得子类具有父类别的各种属性和方法,在子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能
new 操作符具体干了什么
- 新建一个空对象
obj - 把
obj的隐式原型和构造函数通过原型链连接起来 - 将构造函数的
this指向obj - 如果该函数没有返回对象,则返回
this
// 定义一个构造函数 Person,用于创建表示人的对象
// 构造函数通常首字母大写,这是一种约定俗成的写法,用于区分普通函数
// 参数 name 表示人的姓名,参数 age 表示人的年龄
function Person(name, age) {// 将传入的 name 参数赋值给新对象的 name 属性this.name = name;// 将传入的 age 参数赋值给新对象的 age 属性this.age = age;
}// 自定义的函数 myNew,用于模拟 new 操作符的功能
// 参数 constructor 是一个构造函数,也就是我们想要用来创建对象的函数
// 使用剩余参数语法 ...args 接收传递给构造函数的所有参数,这些参数会在构造函数执行时使用
function myNew(constructor, ...args) {// 步骤 1: 创建一个新对象// Object.create(constructor.prototype) 方法用于创建一个新对象,// 并将这个新对象的原型设置为构造函数的原型。// 这样新对象就可以继承构造函数原型上定义的所有属性和方法const newObj = Object.create(constructor.prototype);// 步骤 2: 将新对象的 this 指向构造函数,并执行构造函数// constructor.apply(newObj, args) 方法调用构造函数,// 并将构造函数内部的 this 指向新创建的对象 newObj,// 同时将之前收集的参数 args 传递给构造函数,让构造函数可以根据这些参数初始化新对象的属性const result = constructor.apply(newObj, args);// 步骤 3: 判断构造函数的返回值// 如果构造函数返回的是一个对象(通过 typeof result === 'object' 判断类型为对象,// 并且 result!== null 排除返回值为 null 的情况,因为 typeof null 也会返回 'object'),// 就返回构造函数的返回值;// 否则,返回我们在步骤 1 中创建的新对象 newObjreturn typeof result === 'object' && result!== null? result : newObj;
}// 使用自定义的 myNew 函数创建对象
// 这里将 Person 构造函数作为第一个参数传递给 myNew,
// 并将 'John' 和 30 作为后续参数传递,这些参数会在 Person 构造函数执行时使用
const person = myNew(Person, 'John', 30);// 打印创建的对象
// 此时打印出的对象应该包含 name 和 age 属性,值分别为 'John' 和 30
console.log(person);
- Object.create(constructor.prototype):这行代码创建了一个新对象
newObj,并将其原型指向构造函数的原型,这样,新对象就可以继承构造函数原型上的属性和方法 - constructor.apply(newObj, args):使用
apply方法将构造函数的this指向新对象newObj,并执行构造函数,将参数args传递给构造函数 - 返回值判断:如果构造函数返回一个对象,则返回该对象;否则,返回新创建的对象
newObj
js 有哪些方法改变 this 指向
call,apply,bind
三者的第一个参数都是 this 需要指向的对象,但在后续的参数上只有 apply 是接收一个数组,call 和 bind 用逗号分开;call 和 apply 直接调用,返回的是一个值,而 bind 不直接调用,返回的是一个函数形式,执行:foo.bind(obj)()
# call()
# call() 方法允许你调用一个函数,同时指定该函数内部 this 的值,并且可以依次传递参数给函数
// 定义一个对象,后续将作为 this 的指向
const person = {name: 'Alice'
};
// 定义一个函数,函数内部使用 this 来访问属性
function introduce(hobby) {// 打印出根据 this 指向的对象属性生成的介绍语句console.log(`大家好,我叫 ${this.name},我喜欢 ${hobby}。`);
}
// 使用 call 方法调用 introduce 函数,并将 person 对象作为 this 的指向
// 同时传递 '画画' 作为 introduce 函数的参数
introduce.call(person, '画画'); # -------------------------------分割線-------------------------------------# apply()
# apply() 方法和 call() 方法类似,同样用于调用函数并指定 this 的值,不同之处在于它接受一个数组作为函数的参数
// 定义一个对象,作为 this 的指向
const anotherPerson = {name: 'Bob'
};
// 定义一个函数,内部使用 this 访问属性
function introduceFood(food1, food2) {// 打印出根据 this 指向的对象属性生成的喜欢食物的语句console.log(`我叫 ${this.name},我喜欢吃 ${food1} 和 ${food2}。`);
}
// 使用 apply 方法调用 introduceFood 函数
// 将 anotherPerson 对象作为 this 的指向
// 并以数组形式传递 '披萨' 和 '汉堡' 作为函数参数
introduceFood.apply(anotherPerson, ['披萨', '汉堡']); # -------------------------------分割線-------------------------------------# bind()
# bind() 方法会创建一个新的函数,在调用时会将 this 的值设置为你提供的值,并且可以预先传入部分参数
// 定义一个对象,作为 this 的指向
const student = {name: 'Charlie'
};
// 定义一个函数,内部使用 this 访问属性
function study(subject) {// 打印出根据 this 指向的对象属性生成的学习语句console.log(`${this.name} 正在学习 ${subject}。`);
}
// 使用 bind 方法创建一个新的函数 newStudy
// 将 student 对象作为新函数内部 this 的指向
// 并预先传入 '数学' 作为参数
const newStudy = study.bind(student, '数学');
// 调用新函数
newStudy();
对一个函数链式调用 bind,this 指向的是谁?为什么?
在 JavaScript 中,对一个函数链式调用 bind 时,this 最终指向的是第一次调用 bind 时所指定的对象
- 原因
bind方法会创建一个新的函数,在调用时这个新函数的this值会被锁定为bind方法调用时第一个参数所指定的对象
当对一个函数多次链式调用bind时,后续的bind调用并不会改变第一次bind所确定的this指向,因为后续的bind是基于前一次bind所创建的新函数来操作的,而前一次bind已经固定了this的指向
// 定义一个简单的函数,函数内部打印 this 的值
function printThis() {console.log(this);
}
// 创建一个对象,后续会将其作为 this 指向
const obj1 = { name: 'obj1' };
const obj2 = { name: 'obj2' };
// 第一次调用 bind,将 this 指向 obj1
const bound1 = printThis.bind(obj1);
// 对 bound1 再次调用 bind,尝试将 this 指向 obj2
const bound2 = bound1.bind(obj2);
// 调用最终绑定后的函数
bound2();
相关文章:
Vue23Web 基礎性拉滿的面試題(2025版)還沒更新完...
Vue2&3 基礎性1. 關於Vue2和Vue3生命週期的差別2. Vue2&3組件之間傳參不同點Vue2 傳遞與接收Vue3 傳遞與接收 (使用script setup語法糖)Vue3 傳遞與接收 (不使用script setup語法糖) 3. Vue2&3 keep-alive 組件Vue2 keep-aliveVue3 keep-alive 進階性爲什麽POST請求…...
GitHub神秘组织3小时极速复刻Manus
一、背景 昨夜科技圈被两个关键词刷屏:Manus激活码炒至6万,GitHub神秘项目OpenManus突然开源。 Manus之所以如此火爆,是因为在演示视频中自主分析股票、筛选简历、规划旅行的能力。同时,想要体验Manus就需要内测邀请码&…...
文件上传漏洞(upload靶场)
目录 Pass-01:前端绕过 方法一:浏览器禁用js 方法二:直接修改或删除js脚本 方法三:修改后缀绕过 Pass-02:服务器检测 Pess-03:黑名单绕过 Pass-04:.htaccess文件 Pass-05:windows特性和user.ini 方法一:php.自动解析为ph…...
苦瓜书盘官网,免费pdf/mobi电子书下载网站
苦瓜书盘(kgbook)是一个专注于提供6英寸PDF和MOBI格式电子书的免费下载平台,专为电子阅读器用户设计。该平台为用户提供了丰富的电子书资源,涵盖文学、历史、科学、技术等多个领域,旨在打造一个全面的电子书资源库。用…...
Linux:理解进程,系统调用,进程,进程切换,调度,分时操作系统和实时操作系统,
操作系统要向上提供对应的服务 操作系统,不相信任何用户或者人;------------银行------窗口 因此提供了系统调用,(函数调用)-->用户和操作系统之间进行某种数据交互 一:系统调用 计算机的各种硬件资…...
深入理解Vue中的Component:构建灵活且可复用的前端模块
在前端开发的世界里,随着应用程序的规模和复杂度不断增加,如何有效地组织和管理代码成为了一个关键问题。Vue.js作为一款流行的前端框架,通过其强大的组件系统为开发者提供了一种优雅且高效的解决方案。本文将深入探讨Vue中的Component(组件),包括其基本概念、创建方式、…...
【javaEE】多线程(基础)
1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…...
vscode - 操作整理
文章目录 vscode - 操作整理概述笔记打开文件后,编码另存为配置指定后缀的文件的语言模式语言模式配置 - Batch 安装eol插件配置文件如果用vscode打开的文件没有显示回车,原因及处理vscode启用了信任模式,需要信任工作区才行。 将打开的文件中…...
linux 基本命令教程,巡查脚本,kali镜像
linux实操 shutdown练习 Shutdown -h 5 意思是五个小时之后进行重启 新用户密码设置, Useradd 用户名 新建用户 Passwd 进行设置密码 覆盖关机时间 Shutdown -c 取消重启设置 top练习 查看进程 僵尸进程 kill:查看jobs号直接杀死 kill %num 查看…...
R语言使用scitable包交互效应深度挖掘一个陌生数据库
很多新手刚才是总是觉得自己没什么可以写的,自己不知道选什么题材进行分析,使用scitable包后这个完全不用担心,选题多到你只会担心你写不完,写得不够快。 今天演示一下使用scitable包深度挖掘一个陌生数据库 先导入R包和数据 li…...
Kali WebDAV 客户端工具——Cadaver 与 Davtest
1. 工具简介 在 WebDAV 服务器管理和安全测试过程中,Cadaver 和 Davtest 是两款常用的命令行工具。 Cadaver 是一个 Unix/Linux 命令行 WebDAV 客户端,主要用于远程文件管理,支持文件上传、下载、移动、复制、删除等操作。Davtest 则是一款…...
QSplashScreen启动画面开发详解
QSplashScreen启动画面 1. 基本概念2. 使用场景3. 基本操作与代码示例3.1 创建简单的启动画面3.2 动态更新启动画面信息4. 自定义启动画面样式4.1 自定义文字和背景5. 高级应用:结合多线程加载6. 注意事项7. 总结其他QT文章推荐QSplashScreen 是 Qt 框架中用于在应用程序启动时…...
线性代数笔记28--奇异值分解(SVD)
1. 奇异值分解 假设矩阵 A A A有 m m m行 n n n列 奇异值分解就是在 A A A的行向量上选取若干对标准正交基,对它作 A A A矩阵变化并投射到了 A A A的列空间上的正交基的若干倍数。 A v → u → σ u → ∈ R m v → ∈ R n A\overrightarrow{v}\overrightarrow{u…...
【记录一下学习】Embedding 与向量数据库
一、向量数据库 向量数据库(Vector Database),也叫矢量数据库,主要用来存储和处理向量数据。 在数学中,向量是有大小和方向的量,可以使用带箭头的线段表示,箭头指向即为向量的方向,…...
面试准备——云相册项目(1)基础
项目概述 云相册项目旨在为用户提供便捷的照片存储、管理和访问服务。通过客户端与服务器的配合,实现照片的上传、下载以及一些基本的命令交互功能,方便用户在不同设备上随时查看和管理自己的相册。 技术要点 编程语言与环境:使用 C 语言开…...
Redis数据结构深度解析:从String到Stream的奇幻之旅(一)
Redis系列文章 《半小时掌握Redis核心操作:从零开始的实战指南》-CSDN博客 Redis数据结构深度解析:从String到Stream的奇幻之旅(一)-CSDN博客 Redis数据结构深度解析:从String到Stream的奇幻之旅(二&…...
Linux - 网络基础(应用层,传输层)
一、应用层 1)发送接收流程 1. 发送文件 write 函数发送数据到 TCP 套接字时,内容不一定会立即通过网络发送出去。这是因为网络通信涉及多个层次的缓冲和处理,TCP 是一个面向连接的协议,它需要进行一定的排队、确认和重传等处理…...
【Linux-网络】从逻辑寻址到物理传输:解构IP协议与ARP协议的跨层协作
🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚前言 📖 IP地址的组成 🔖IPv4 🔖IPv6 📚…...
解锁前端表单数据的秘密旅程:从后端到用户选择!✨
😄 解锁前端表单数据的秘密旅程:从后端到用户选择!✨ 嘿,技术爱好者们!👋 你有没有在开发中遇到过这样的困惑:表单里的数据(比如图片附件、识别点 ID)从哪儿来的&#x…...
Kotlin字符串操作在Android开发中的应用示例
Kotlin字符串操作在Android开发中的应用示例 引言 在Android开发中,Kotlin已经成为主流的编程语言,它提供了许多便捷的字符串操作功能。本文将结合一个具体的Kotlin示例程序,详细介绍Kotlin中字符串的创建、格式化和使用方法。 示例代码 以…...
【机械视觉】C#+visionPro联合编程———【一、C# + VisionPro 联合编程详解以及如何将visionPro工具加载到winform】
机械视觉与 C# VisionPro 联合编程详解 目录 机械视觉与 C# VisionPro 联合编程详解 概念 应用场景 1. 工业检测与质量控制缺陷检测 2. 定位与机器人引导 3. 识别与分类 4. 复杂流程控制 将visionPro工具加载到winform 环境准备 一、创建winform项目 二、打开窗体…...
迷你世界脚本自定义UI接口:Customui
自定义UI接口:Customui 彼得兔 更新时间: 2024-11-07 15:12:42 具体函数名及描述如下:(除前两个,其余的目前只能在UI编辑器内部的脚本使用) 序号 函数名 函数描述 1 openUIView(...) 打开一个UI界面(注意…...
江科大51单片机笔记【9】DS1302时钟可调时钟(下)
在写代码前,记得把上一节的跳线帽给插回去,不然LCD无法显示 一.DS1302时钟 1.编写DS1302.c文件 (1)重新对端口定义名字 sbit DS1302_SCLKP3^6; sbit DS1302_IOP3^4; sbit DS1302_CEP3^5;(2)初始化 因为…...
发行思考:全球热销榜的频繁变动
几点杂感: 1、单机游戏销量与在线人数的衰退是剧烈的,有明显的周期性,而在线游戏则稳定很多。 如去年的某明星游戏,最高200多万在线,如今在线人数是48名,3万多。 而近期热门的是MH,在线人数8…...
微信小程序接入deepseek
先上效果 话不多说,直接上代码(本人用的hbuilder Xuniapp) <template><view class"container"><!-- 聊天内容区域 --><scroll-view class"chat-list" scroll-y :scroll-top"scrollTop":…...
为解决局域网IP、DNS切换的Windows BAT脚本
一、背景 为解决公司普通人员需要切换IP、DNS的情况,于是搞了个windows下的bat脚本,可以对有线网络、无线网络进行切换设置。 脚本内容 echo off title 多网络接口IP切换工具:menu cls echo echo 请选择要配置的网络接口: echo echo 1. 有线网络&am…...
VUE3开发-9、axios前后端跨域问题解决方案
VUE前端解决跨域问题 前端页面需要改写 如果无效,记得重启服务器 后端c#解决跨域问题 前端js取值,后端c#跨域_c# js跨域-CSDN博客...
【计算机网络】计算机网络的性能指标——时延、时延带宽积、往返时延、信道利用率
计算机网络的性能指标 导读 大家好,很高兴又和大家见面啦!!! 在上一篇内容中我们介绍了计算机网络的三个性能指标——速率、带宽和吞吐量。用大白话来说就是:网速、最高网速和实时网速。 相信大家看到这三个词应该就…...
Kubermetes 部署mysql pod
步骤 1: 创建 PersistentVolume 和 PersistentVolumeClaim 首先为 MySQL 创建一个 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 来确保数据的持久性。 mysql-pv.yaml: apiVersion: v1 kind: PersistentVolume metadata:name: mysql-pv-volume spec:cap…...
Docker和DockerCompose基础教程及安装教程
Docker的应用场景 Web 应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。 CentOS Docker 安装 使用官方安装脚本自动安装 安装命令…...
