uniapp——第2篇:编写vue语法

前提,建议先学会前端几大基础:HTML、CSS、JS、Ajax,还有一定要会Vue!(Vue2\Vue3)都要会!!!不然不好懂

一、去哪写?

就在【pages】的你的人一个页面文件夹里的【.vue】文件里的【<script> </script>】开始写

注意:

如果你用的是基于vue3版本语法,那么就不用uniapp自带的模板,把export default { ... }删掉,在<script>加上setup,然后再写

如果你还是用vue2版本的语法,那么就按uniapp模板自带的,在有export default { ... }包起来的区域,在这里面写

二、利用插值表达式把vue的数据渲染到HTML部分

插值表达式就是双花括号:{{ }}

然后插值表达式可以是变量、可以是函数(别忘了小括号( ))、可以是三元运算表达式、可以是对象表达式

三、利用ref定义响应式数据变量

首先回顾一下,在vue2里出现过这个ref,是用来获取具体某个组件内的DOM元素的(也就是比document.querySelector( )更精确 )

用法就是在DOM元素里加上【ref=" xxx "】,然后在vue语法区域写【this.$refs.xxx】就可绑定成功(注意,vue里的$refs后面必须跟DOM里的ref名字一样)

那么现在回到vue3,这里的ref是作为响应式数据的一个对象

当他用来绑定获取DOM元素的时候,语法差不多,只不过:

1、ref需要用import引入

2、用一个变量=ref()就行,但是这变量要和DOM元素的ref名字一样

3、要在【生命周期的挂载时期里用】(后面讲)

当他用来渲染响应式数据时:

我们都知道如果你直接在HTML部分用{{  }}绑定了vue的一个变量,但是这个变量不是在data里写的话,它在vue里面变化的时候HTML部分并不会跟着变化

那么使用data挂在数据去返回的方法是vue2版本的语法

如果不用vue2的话,那么vue3语法里可以用ref,ref可以把vue里变量变化——HTML那里也跟着变化

第一步:引入ref对象

第二步:用变量等于ref,ref对象括号( )里传入值

注意:此时这个变量还不是值,只是一个包含该值的对象!!!

那么要用值,只需要写成【对象.value】就行了

但是这里注意区分一个误区

1、在HTML部分的{{ }}直接绑定变量名字就行!

比如:<view> {{ num }} </view>

2、但是在script区域vue代码里,“变量名”是一个对象,要用“变量名.value”才行!

比如:let num = ref(1)

           console.log( num.value )

普通变量也行、字符串也行、对象也行

至于底层原理先不讲,我们也用不不到

四、vue的v指令

其实学习uniapp之前就应该学完了或者多多少少学一半vue了,那么这一块也会尽量简单讲一下,不多说

1、v-bind指令改变标签的属性、类名、样式

写法:

【v-bind:属性 = "xxx"】这就是改变标签属性

比如:v-bind:title = "xxx"、v-bind:value = "xxx"......

还可以简写,去掉v-bind,直接写【:属性 = "xxx"】

比如::title = "xxx"、:value = "xxx"......

稍微提一下两个要注意的:

(1)利用v-bind搭配动态获取image的图片路径

前面说了要动态获取image的src图片路径的话,就需要用v-bind,注意!!!只能用v-bind!!!以前习惯vue语法的可能会习惯用插值表达式:<image scr="{{ item.src }}">,错!直接报错!!只能用v-bind来获取:<image :scr=" item.src ">

然后图片路径那边除了用require( )装起来,也可以用ref( ),根据自己喜好来,反正就是不能直接拿图片路径:

(2)要利用v-bind来修改标签的属性

v-bind可以修改属性,比如控制输入框至少输入1个字符的时候,按钮才可以点

那么要注意true和false这两个布尔值,不能直接当成“属性值”来写。比如我们前面学的像button的属性:loading、disabled,你只是写上去一个单词的形式,就默认是这样:loading = "true"、disabled = "true"

但其实我们要是真这样写是不对的,比如我们要是想改成false,系统会把false当成一个“字符串”而不是一个“布尔值”!!要用v-bind来把它变成布尔值

(3)利用v-bind添加类名样式

假设定义一个样式类名叫active

那么我们可以静态写死一个标签获取这个样式

也可以用v-bind获取

但是注意!!不能直接写v-bind:class="类名",会报错

要用''单引号把类名包起来,这样才是一个字符串形式

错!

对!

但是这还是写死的,要想动态判断获不获取这个类名,就要用【对象表达式】或【三元表达式】

对象表达式那意思就是:判断isActive变量是true还是false,true就获得active,false就不获得active类名

三元运算表达式就是:直接判断"?"前面是true还是false,true就获得active类名,false就获得“空字符串”也就是啥也没有

(4)v-bind修改样式

你想用v-bind修改style样式可不能直接:【v-bind:style = "width:100px"】

记住只要用了【v-bind】,“ ”双引号里的语法就应该写成js代码,那么我们修改样式就应该写成一个对象形式:【v-bind:style = "{ width: '100px' }",别忘了值要写成字符串!那么就要用' '单引号包起来!!

另外带“-”的样式属性需要想JS一样遵循“小驼峰”原则:

2、v-on指令(@时间指令)

我不多说了,v-on事件指令  =  @事件指令,怎么用我也不多说了

就简单讲一下跟vue不太一样的一些注意点

原先我们学习JS知道了一些事件的名称,但是学习微信小程序的时候发现不一样,比如:

【click点击事件】在微信小程序里是【tap事件】(而且要带上bind,完整写法bindtap)

【mouseenter鼠标移入事件】对应的是【touchstart触摸开始事件】(bindtouchstart)

【mouseleave鼠标移出事件】对应的是【touchmove移动触摸点】(bindtouchmove)

还有一些:触摸结束(bindtouchend)以及长按事件(bindlongtap)......

不过tap事件和click事件,在uniapp里已经都归为click事件,他会自己转化成tap,因此你用@tap、@click都是可以的

下面是一些uniapp移动端事件对应的名字:

// 事件映射表,左侧为 WEB 事件,右侧为 ``uni-app`` 对应事件{click: 'tap',//点击事件touchstart: 'touchstart',//手指移入touchmove: 'touchmove',//手指移出touchcancel: 'touchcancel',//停止跟踪触摸时触发,不常用可以不记touchend: 'touchend',//触摸结束tap: 'tap',//也是点击事件longtap: 'longtap', //手指长按事件  //推荐使用longpress代替input: 'input',//输入事件change: 'change',//输入内容、表单元素改变事件,不会连续触发,只有当全部修改完成时才会触发submit: 'submit',//发生在表单对象<form>上,提交表单所有数据时的事件blur: 'blur',//失焦事件focus: 'focus',//聚焦事件reset: 'reset',//发生在表单对象<form>上,当表单重置(所有表单成员变回默认值)时触发confirm: 'confirm',columnchange: 'columnchange',linechange: 'linechange',         //后面这些不常用,自己可以查查error: 'error',scrolltoupper: 'scrolltoupper',//屏幕向上滚动scrolltolower: 'scrolltolower',//屏幕向下滚动scroll: 'scroll'//屏幕滚动事件}

另外不同组件有对应着不同的事件,比如你<checkbox>复选框sumbit开关选择器(这些组件可以去官方文档自己看组件使用的入门教程 | uni-app官网)肯定对应的只有@change改变事件了,你总不能让他两触发@click或者@scroll事件吧?人家没有这种事件啊......

也还是一样,去官方文档组件使用的入门教程 | uni-app官网,看每一个组件的【属性】,最底下会有对应的,比如:

swipper组件

from组件

input组件

多的不说了,自己去查

另外注意,绑定空参函数的时候" "双引号直接写函数名,传参的时候" "双引号里写函数名+( )

然后跟JS一样,每触发一个事件就会返回一个event事件对象,那么就可以根据这个事件对象获取有用的值进行一些操作,比如:

<!-- 给swith开关绑定一个改变事件 -->
<switch @change="onChange"></switch><script setup>//当swith开关组件改变开或关的状态时,会执行这个函数function onChange(e){//会返回一个事件对象e,然后e.detail.value,就是代表swith的change事件的状态console.log(e.detail.value)}
</script>

那么甚至可以根据一个组件的事件去影响另一个组件

套路就是:

1、在触发第一个组件事件的函数里传入事件对象,用一个变量去获取事件对象里的信息(别忘了让这个变量成为响应式变量,要么用data挂载,要么用ref( ) )

2、然后再让第二个组件通过【v-bind指令】通过这个变量去改变自己的属性

3、v-if、v-show指令,判断条件渲染组件

语法不用多说,它两是一个东西,跟if-else语句一样,自己看看就行

有一点v-if和v-show不一样,就是隐藏组件元素的方式不一样:

可以发现前者是完全隐藏,而后者会把资源加载过来,通过dispaly:none来决定它出现还是消失,那么如果有图片的话,v-show会把图片资源加载过来,会耗用一点资源,但是更换频繁的时候用它速度更快;而v-if则适合使用频率少的

最后补充:要让一块消失、出现,除了用view容器包起来,还可以用<template>结构容器,<template>的好处就是他不会作为一个实体的父容器,他只是一个结构,在网页检查可以看到他根本不存在

template的好处还有,在ul里包裹li的如果是别的容器,就会破坏ul它的结构导致出错,而用template包裹就没事了,就可以控制每个li的出现、隐藏

4、v-for循环遍历数组

这个更简单我也不打算说了,反正用它你就不用写一堆同样的元素

比如:几千几万条评论,你不看可能真的写几千几万个“评论区的HTML盒子代码吧”

只需设置一个“HTML评论盒子代码”,然后直接根据vue的data返回的动态数据,有获得的数组里几个评论,就遍历显示几个“HTML评论盒子”就行了

然后记住要用到数组下标的话就要写成【v-for=" (item, index) in 数组 "】,item在前index在后,别搞混了;另外一定要带上【v:key="索引"】(如果返回的是对象数组,里面有id索引就用id索引,没有就用v-for自带的index,不然会报错,具体原因学习数据库就知道了)

数据的数组你用ref也行(下面只是两个不相关的ref和data的形式例子)

用data也行

那么这里讲一下一些网站的“删除盒子、元素”功能是怎么实现的,添加和删除DOM元素本质就是【对数组进行添加、删除】,那么利用【数组.push( )】或【数组.splice( )】就能实现了

记住了数组添加用push(),删除用solice(),用ref的变量记得带上【变量.value】形式再用这两个函数

当然前面我说了:key可以设置为index,但是这是针对不报错的做法,index毕竟是一个会变得变量;那么假设我的需求是当我进行增删操作的时候,始终是选中一个元素,比如下面这个例子:我想在选中一个元素之后,不管我删了哪几个元素,√都一直选中刚刚我选的那个元素

这样的话,假若我选了index为1的元素(也就是第2个),当我删了index为0的元素(第1个),那么刚刚index为1得元素就会到第一位,index变为0

但是因为刚刚我传的index是1,:key="index"认为被选中打√的元素是index为1的,所以此时“√”会跑到刚刚被打“√”的下一位,说得可能你们都懵逼了,看一下例子

只有这样绑定了自定义每个元素的id,这样才是对的

5、最后最简单的v指令:v-model数据双向流通

在【表单元素】加入之后,表单元素更改、输入这些操作,都能把表单元素的【值】给到vue,而同时vue里对数据的更改也能传给表单元素,实在没什么好细说的,不会的真要去学一下vue再来看uniapp

五、一些API函数、属性

1、computed计算属性

在Vue脚手架开发里应该学过computed计算属性,可以去我这篇文章看一下:Vue全家桶:vue2+vue3全部搞懂:第四篇,Vue的计算属性,高效执行运算-CSDN博客,不过这是针对vue2版本语法的解释

这里再讲一次,针对vue3版本,下面有几点要注意:

第一、computed计算属性是一个属性!所以要在HTML的{{ }}绑定的时候直接用computed计算属性的变量名,不用像函数那样带( )

第二、computed计算属性里是一个函数,这个函数就是return回一个计算结果,以作为这个计算属性的值。(用ref的变量计算的时候,别忘了写.value

第三、跟vue2不一样的是,vue3语法里必须要import { computed } from "vue"才能用

当然用函数方法也可以实现它的功能(函数别忘了带( ))

那么普通函数和computed计算属性有什么区别?

computed只会执行一次,他会把值加载好保留,下次用的时候直接给结果,而不是再次执行运算

普通方法函数则是你调用几次,他就执行几次函数运算

简单结合案例巩固一下理解

例子:几个商品复选框,选中谁就依次累加商品的价格

这里注意一个点:checkbox必须设置value值,不然的话获取不到对应的数据值

而且value必须是String字符串类型

修改后

然后接下来把@change事件绑定的函数里,把获取到checkbox的事件对象的value给到一个空数组里

然后通过计算属性获得数组长度,就完成了统计个数的这一步

(或者简单点直接在{{ 写selectGroup.length }}就行)

接下来给每个对象数据多添加一个属性,来标记这个checkbox复选框有没有被选中

然后这里的逻辑是在@change事件的函数里遍历整个原数组

然后判断在被选中的checkbox复选框中有没有当前这个成员(例子里的selectGroup.value就是指已经被选中的checkbox复选框的value组成的一个数组),通过includes( )函数判断有就true,没有就false;

然后就能让每一个成员的checked这个“标记属性”的值去等于判断的结果,也就是标记每个成员当前是被选中了还是没被选中

如果没懂给这些函数的可以去看我这一篇:JS的一些方便遍历数组的API函数-CSDN博客

最后根据被选中的来计算商品价格总数:

展开来是这样:

也就是通过filter( )函数过滤了原数组里没有被选中的checkbox的值,然后装到一个新数组,在对这个数组使用reduce( )函数统计总数,最后通过computed计算属性给到HTML

2、watch监听函数

这个我也在Vue脚手架项目开发里讲过:Vue全家桶:vue2+vue3全部搞懂:第五篇,Vue的watch监视器_vue2 监视器-CSDN博客,这是针对vue2版本的写法

可以去看看,这里借用一下我那篇文章的截图:

他就是监听一个元素的变化,有点像在表单元素的v-model,但是它是具体针对某一个变量、一个元素的变化的监听

现在讲一下针对vue3版本的用法:

watch( )对一个普通元素的监听:watch(参数1,参数2),参数1就是要监听的元素变量名,参数二是一个回调函数

这个参数2回调函数有两种形式:

1、回调函数(参数1,参数2)

这样的话会自动获取【这次改变的值】和【上一次的值】,参数1就是【这一次改变了的值】,参数2反之

2、回调函数(参数)

一个参数就是自动获取实时更新的值(上一个写法了解就行,没人用)

watch( )对对象的内部值变化的监听:

当我们对一个对象的内部值监听的时候,是不能直接把第一个参数写成【对象.属性】的

第一种方法:第一个参数写成回调函数,return【对象.value.属性】

第二种方法:开启深度监听!多加一个第三个参数,第三个参数是:{ deep:true }

这第三个对象参数就是一个用了加配置项的参数

那么watch不会立即自动监听,只有元素发生改变了才会监听;

如果想要一进页面就自动监听,在第三个参数里再加一个配置项:{ immediate: true }

当然还有一个了解一下,用的不多:watchEffect( )

它可以直接监听所有元素的变化

六、Vue3的生命周期和八大钩子函数

我之前的某篇文章里讲过vue2的生命周期和八大钩子函数,不了解的可以去看一下回顾:

Vue全家桶:vue2+vue3全部搞懂:第六篇,了解Vue生命周期,如何一进页面就马上发送请求、渲染页面-CSDN博客

这里简单带大伙过一遍生命周期

那么根据vue3的官方文档给出的生命周期以及各个时期的钩子函数,如下图所示:

可以注意到最开始的有一个setup函数,然后我们vue3的语法里也要在<script>里加上一个setup,这是vue3里比原来vue2里的beforeCreate更早的一个生命周期函数,当然vue3也删掉了【beforeCreate】和【created】,那么【setup】也就相当于代替了它两

然后vue官方文档:组合式 API:生命周期钩子 | Vue.js讲了vue3的具体几大生命周期函数

不过注意!!在uniapp种有一些是不支持的,所以不用全记,比如:在uniapp组件中,onBeforeUpdate、onUpdated、onActivated、onDeactivated,H5支持,小程序无法使用。

那么vue2和vue3有啥区别?盗用一下咸虾米博主的文章,看一下vue2和vue3生命周期钩子函数的区别:

那么看一下uniapp里一些常用的生命钩子的例子

用法统一:import { 生命周期钩子函数 } from "vue",然后再用

onMounted

DOM元素挂载阶段生命钩子函数,有他才可在vue里获取DOM元素

比如下面,没onMounted的时候,获取失效

有onMounted获取成功

onUnmounted

DOM元素被销毁阶段

比如下面例子,某个自定义组件里设置被销毁的时候提示“子组件被销毁了”,然后在父组件里设置一个定时器,多短时间销毁它

七、页面生命周期

前面讲的主要都是组件的生命周期,那么页面也有生命周期

uniapp页面生命周期函数与 Vue.js 的生命周期函数有所不同,因为 uni-app 是基于 Vue.js 的跨平台应用框架,因此它具有自己特定的生命周期函数。
可以在这些生命周期函数中编写相应的逻辑代码,以便在不同阶段对页面进行初始化、展示、隐藏和卸载时执行特定的操作。

那么页面有哪些生命周期钩子函数?

其他常用的生命周期,可以看官方发文档,页面生命周期函数

页面生命周期钩子函数的用法:

页面生命周期钩子函数是不能直接像vue2的选项式API一样,vue2可以直接使用onLoad、onShow等,而uniapp的vue3中需要先从“@dcloudio/uni-app”模块中导入才可以。

比如

那也不能像组件的钩子函数一样,直接一个import { } from "vur"就能用的

而是【import { 页面钩子函数 } from "@dcloudio/uni-app"】

onLoad

页面一进来就发生执行的钩子函数,其实它是属于setup阶段的

例子:

(这是首页面,点击navigator跳转到另一个页面,并给这个页面发送参数)

跳转到这个页面后,页面接收到参数,马上立即自动输出

onReady

当页面DOM元素加载完毕、资源请求加载准备完毕后就执行

跟组件生命周期的钩子函数onMounted差不多一个意思

onShow

跟onLoad差不多,它夹在onLoad和onReady之间

那么它跟onLoad最大的区别就在于

onLoad是页面加载时立刻执行,但是只要页面没被销毁,onLoad就永远只执行一次

(页面被销毁简单理解就是完全关掉,或者再次从别的页面跳转回来;如果你从这个页面跳转到另一个页面,然后点击返回又回去了,这个页面就没有被销毁)

而onShow是只要页面没销毁,一到页面就执行一次

onHide

页面一离开就触发执行

有啥用?比如视频播放的时候,有消息弹出,那你点击消息啥的离开了页面,视频就停止,等你一返回又继续自动播放......等等

补充一下:

App.vue还有全局的配置,这三个作用全局的生命钩子函数优先级更高

onUnLoad

页面完全卸载了,叉掉了,或者你那个navigator设置的open-type是relaunch(也就是跳转过后返回不了了),那么就会执行

onPageScroll页面滚动钩子函数

页面滚动就自动触发

案例:往下拉出现一个盒子,往上拉消失

或者

八、最后讲一下生命周期的钩子函数执行的顺序

不包含组件的页面

onLoad > onShow > onReady

包含组件的页面

onLoad > onShow > onBeforeMount > onReady > onMounted

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/749365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多站合一的音乐搜索下载助手PHP源码l亲测

源码获取方式 回复&#xff1a;031601 搭建教程&#xff1a; 将源码下载上传至宝塔面板&#xff0c;直接运行即可~ 说明&#xff1a; 该源码进行测试&#xff0c;测试成功源码无加密优化相关其他采集问题。

langchain+chatglm3+BGE+Faiss Linux环境安装依赖

前言 本篇默认读者已经看过之前windows版本&#xff0c;代码就不赘述&#xff0c;本次讲述是linux环境配置 超短代码实现&#xff01;&#xff01;基于langchainchatglm3BGEFaiss创建拥有自己知识库的大语言模型(准智能体)本人python版本3.11.0&#xff08;windows环境篇&…

Go微服务实战——服务的配置获取(nacos做配置中心)

nacos做配置中心 demo仓库 docker安装nacos docker pull nacos/nacos-server 使用docker每次需要sudo可以执行如下命令 sudo groupadd docker #添加用户组 sudo gpasswd -a username docker #将当前用户添加至用户组-d就是删除该组中的用户 newgrp docker…

L1-070 吃火锅分数 15

我们老师的话说就是&#xff0c;你学长睡了四年的床板子你不收拾收拾就往上躺着睡觉吗&#xff1f;&#xff1f;&#xff1f;一定要记得用到计数变量时首先要赋初值0或者其他&#xff0c;按题目要求来。 用 输入样例 1&#xff1a; Hello! are you there? wantta chi1 huo3…

排序链表的三种写法

题目链接&#xff1a;https://leetcode.cn/problems/sort-list/?envTypestudy-plan-v2&envIdtop-100-liked 第一种&#xff0c;插入排序&#xff0c;会超时 class Solution {public ListNode sortList(ListNode head) {//插入排序&#xff0c;用较为简单的方式解决ListNo…

程序人生——Java泛型和反射的使用建议

目录 引出泛型和反射建议93&#xff1a;Java的泛型是类型擦除的建议94&#xff1a;不能初始化泛型参数和数组建议95&#xff1a;强制声明泛型的实际类型 建议96&#xff1a;不同的场景使用不同的泛型通配符建议97&#xff1a;警惕泛型是不能协变和逆变的 建议98&#xff1a;建议…

C++:类之六脉神剑——默认成员函数

个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 一、默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为 空类 。 空类中真的什么都…

【Poi-tl Documentation】自定义占位符来设置图片大小

前置说明&#xff1a; <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.1</version> </dependency>模板文件&#xff1a; image_test.docx package run.siyuan.poi.tl.policy;imp…

双路控制比例方向阀放大器

该模块比例放大器用于控制一个带有两个螺线管的比例方向控制阀或一个/两个独立的比例压力阀或比例节流阀&#xff0c;每个阀带有一个或二个螺线管。 各种可调参数允许对相应阀门的最佳适应。单路双路四路控制&#xff0c;供电24VDC&#xff0c;输入指令兼容多种可选&#xff0c…

代码随想录训练营Day25:● 216.组合总和III ● 17.电话号码的字母组合

216.组合总和III 题目链接 https://leetcode.cn/problems/combination-sum-iii/description/ 题目描述 思路 自己写的效率会慢一些&#xff0c;而且没有用到剪枝 class Solution {List<List<Integer>> list new ArrayList<>();List<Integer> lis…

识别和定位 - 实现工业自动化及生产数字化,推动现代工业4.0

工业4.0的定义 工业 4.0 是指将智能数字化技术集成到制造和工业流程&#xff0c;包括工业物联网网络、人工智能、大数据、机器人和自动化等一系列技术。工业 4.0 能帮助企业实现智能制造&#xff0c;建立智能工厂&#xff0c;目标是提高生产力、效率和灵活性&#xff0c;同时在…

虹科Pico汽车示波器 | 免拆诊断案例 | 2015 款路虎神行者车熄火后散热风扇依旧高速运转

一、故障现象 一辆2015款路虎神行者车&#xff0c;搭载2.2 L发动机&#xff0c;累计行驶里程约为16万km。车主反映&#xff0c;车辆熄火后&#xff0c;散热风扇依旧高速运转&#xff0c;且无法停止。 二、故障诊断 接车后首先试车&#xff0c;故障现象的确存在。使用故障检…

软件测试之学习测试用例的设计(等价类法、边界值法、错误猜测法、场景法、因果图法、正交法)

1. 测试用例的概念 软件测试人员向被测试系统提供的一组数据的集合&#xff0c;包括 测试环境、测试步骤、测试数据、预期结果 2. 为什么在测试前要设计测试用例 测试用例是执行测试的依据 在回归测试的时候可以进行复用 是自动化测试编写测试脚本的依据 衡量需求的覆盖率…

性能测试工具——wrk的安装与使用

前言 想和大家来聊聊性能测试&#xff0c;聊到了性能测试必须要说的是性能测试中的工具&#xff0c;在这些工具中我今天主要给大家介绍wrk。 ​介绍 wrk是一款开源的性能测试工具 &#xff0c;简单易用&#xff0c;没有Load Runner那么复杂&#xff0c;他和 apache benchmar…

多种智能搜索算法可视化还原 3D 魔方

一、写在前面 许久没有写图形化界面的程序了&#xff0c;最近学习了一些经典的盲目搜索算法与智能搜索算法&#xff0c;正好拿来还原三阶魔方&#xff01;试试手&#xff01; 提前声明 我不是专业搞人工智能的&#xff0c;理论或者实现过程有些许错误也很正常&#xff0c;评论…

YOLOv5_seg-Openvino和ONNXRuntime推理【CPU】

纯检测系列&#xff1a; YOLOv5-Openvino和ONNXRuntime推理【CPU】 YOLOv6-Openvino和ONNXRuntime推理【CPU】 YOLOv8-Openvino和ONNXRuntime推理【CPU】 YOLOv7-Openvino和ONNXRuntime推理【CPU】 YOLOv9-Openvino和ONNXRuntime推理【CPU】 跟踪系列&#xff1a; YOLOv5/6/7-O…

解决游戏程序一运行就退出的问题

正文&#xff1a; 在游戏开发过程中&#xff0c;我们可能会遇到程序一运行就立即退出的情况。这种情况通常是由于程序中的某些逻辑错误或初始化问题导致的。 下面我们将分析可能的原因&#xff0c;并提供一些解决方案。 目录 正文&#xff1a; 原因分析&#xff1a; 解决方案…

Linux磁盘配额

磁盘配额 概述 Linux系统作为一个多用户的操作系统&#xff0c;在生产环境中&#xff0c;会发生多个用户共同使用一个磁盘的情况&#xff0c;会造成Linux根分区的磁盘空间耗尽&#xff0c;导致Linux系统无法建立新的文件&#xff0c;从而出现服务程序崩溃、系统无法启动等故障…

【ArcGISPro】道路数据下载并使用

下载 下载链接: Geofabrik 下载服务器 这些数据通常 每天更新。 下载结果 arcmap用户下载工具 10.2:http://www.arcgis.com/home/item.html?id=16970017f81349548d0a9eead0ebba39 10.3:

力扣题目训练(20)

2024年2月13日力扣题目训练 2024年2月13日力扣题目训练594. 最长和谐子序列598. 区间加法 II599. 两个列表的最小索引总和284. 窥视迭代器287. 寻找重复数135. 分发糖果 2024年2月13日力扣题目训练 2024年2月13日第二十天编程训练&#xff0c;今天主要是进行一些题训练&#x…