当前位置: 首页 > news >正文

vue入门

Attribute 绑定

v-bind:取值方式

开发前准备

安装node.js需要高于15.0

创建vue项目

npm init vue@latest

安装

npm install 

启动

npm run dev

模板语法

文本插值 {{ 变量 }}

<p> {{ mesg }} </p>

这种方式公支持单一表达式,也可以是js代码,但是这代码需要有返回值

原始html格式 v-html

<p v-html="属性键"></p>

这个可以实现将返回的属性键值是 html 的格式下,正确解析出 html

如 键为 baidu:<a href='http://www.baidu.com'>百度</a>
刚脚本内写成
<p v-html="baidu"></p>

属性绑定

v-bind:属性名

简写方式为 :属性名,如 v-bind:id,等同于:id

双大括号不能在 html 标签的属性中使用,如果要响应式绑定,需要使用v-bind指令

即实现动态属性值

<script >export default{data(){return {dtclass:"active",dtid:"dtid"}}}
</script><template><div v-bind:id="dtid" v-bind:class="dtclass">test</div>
</template>

上述执行后,div的id和class会变成 return内的对应值

如果 dtid 的值变为null或者undefind,则在页面上会移除相应的标签

也可使用批量绑定方式,即将所有属性放到一个对象内,再通过v-bind绑定此对象

<div v-bind="obattr">test</div>data(){return {obattr:{id: "myid",class: "myclass"
}
}
}

class属性绑定对象

用来动态显示 class 属性的属性值

可以绑定的方式有

  • 对象
  • 数组
  • 三元运算
  • 数组嵌套对象
<template><!-- class 绑定对象 --><!-- 属性值决定属性是否显示生效 --><!-- 即当 isActive 为ture时,则class属性值显示为 active两个都为 ture 时,class属性值显示为 active text-danger --><h3 :class="{'active':isActive,'text-danger':hasError}">测试显示class属性值</h3><h3 :class="classObject">多个对象绑定</h3><!-- 这里运行后 class 的属性值为  “active text-danger a b c” --><h3 :class="[classObject,mylist]">数组绑定</h3><h3 :class="[isActive ? 'active' : '']">三元运算</h3>
</template><script>export default {data(){return{isActive:true,hasError:true,classObject:{// 多个对象绑定时需要将这里的键与属性名一致'active':true,'text-danger':true},mylist:["a","b","c"]}},methods:{},computed:{}}
</script>
<style>.active{color: red;font-size: 30px;}
</style>

style属性绑定

同class属性绑定

条件渲染

v-if 和 v-else

指令用于条件性渲染一块内容。这块内容只会在指令的表达式返回真值时才被渲染

v-else与v-if搭配使用,当不显示v-if为假时,则渲染v-else的内容

<template>
<h3>条件渲染</h3>
<div v-if="flag">你能看见我么</div>
<div v-else>那你还是看看我吧</div>
</template>
<script>
export default {data(){return{flag:true}}
</script>

v-else-if

用于多重判断

<template>
<h3>条件渲染</h3>
<div v-if="flag">你能看见我么</div>
<div v-else>那你还是看看我吧</div>
<div v-if="num == 10">10/div>
<div v-else-if="num == 20">20</div>
<div v-else="num == 30">30/div>
</template>
<script>
export default {data(){return{flag:true,num:10}}
</script>

v-show

同 v-if 的应用方式,只是这里不能接 v-else

v-if 与 v-show的区别

v-if 是“真实的”按条件染,因为它确保了在切换时,条件区块内的事件监听器和子组件都会被销毁与重建
v-if 也是情性的:如果在初次染时条件值为 false,则不会做任何事。条件区块只有当条件首次变为 true 时才被渲染。
相比之下,
v-show 简单许多,元素无论初始条件如何,始终会被染,只有 CSS display 属性会被切换.
总的来说,v-if 有更高的切换开销,而 v-show 有更高的初始染开销。
因此,如果需要频繁切换,则使用总的来说,show 较好;
如果在运行时绑定条件很少改变,则 v-if 会更合适

列表渲染

v-for

循环新建标签,也可以用这种方式遍历对象的所有属性

<p v-for="item in items">   #这里的in可以使用of替代{{ item }}
</p>

当遍历对象的属性时,可以使用如下获取键值

<p v-for="(value,key,index) in items">   #这里的in可以使用of替代{{ value }},{{ key }},{{ index }}
</p>

对于json或者有嵌套的对象可以使用对象名.键名的方式调用

result:[{id:123,name:456},{id:456,name:789}]<p v-for="item in items">{{ item.id }}
</p>

也可以使用第二个参数,用来表示位置索引

result:[{id:123,name:456},{id:456,name:789}]<p v-for="(item,index) in items">   {{ item.id }}{{ index }}
</p>

通过key管理状态

Vue 默认按照“就地更新”的策略来更新通过 or 染的元素列表。当数据项的顺序改变时,Vue 不会随之移动 DOM 元素的顺序,而是就地更新每个元素,确保它们在原本指定的索引位置上渲染为了给 Vue 一个提示,以便它可以跟踪每个节点的标识,从而重用和重新排序现有的元素,你需要为每个元素对应的块提供一个唯一的 key attribute:

<div v-for="item of result" :key="item.id">

温馨提示
在这里是一个通过 v-bind 绑定的特殊 attributekey推荐在任何可行的时候为 v-for 提供一个key attributekey 绑定的值期望是一个基础类型的值,例如字符串或 number 类型

事件处理

v-on:事件类型

简写为 @:数据类型

<script >export default{data(){return {count:0}},methods:{addCount(){this.count++}}}
</script><template><h3>内联事件处理器</h3><button @click="addCount">add</button><p>{{ count }}</p>
</template>

事件传参

事件参数可以获取 event 对象和通过事件传递数据

获取event对象

    methods:{addCount(e){ #这里的e就是event对象,就是js原生的eventconsole.log(e)this.count++}}

传参则是直接在事件上传入参数

<script >export default{data(){return {count:0}},methods:{addCount(mesg){  #这里是形参console.log(mesg)this.count++}}}
</script><template><h3>内联事件处理器</h3><button @click="addCount('hello')">add</button> #这里传实参<p>{{ count }}</p>
</template>

如果要在传参的过程中还传递event参数则需要在传实参时,将envent以 $event 的方式传入

<script >export default{data(){return {count:0}},methods:{addCount(mesg,e){  #这里是形参console.log(mesg)console.log(e)this.count++}}}
</script><template><h3>内联事件处理器</h3><button @click="addCount('hello',$event)">add</button> #这里传实参<p>{{ count }}</p>
</template>

事件修饰符

在处理事件时调用 event.preventDefaut0 或 evet.stopPropagation0 是很常见的。尽管我们可以直接在方法内调用,但如果方法能更专注于数据逻辑而不用去处理 DOM 事件的细节会更好
为解决这一问题,Vue 为 v-on 提供了事件修饰符,常用有以下几个:

  1. .stop
  2. .prevent
  3. .once
  4. .enter

调用方式

<标签名 @事件类型.事件修饰符=“xxx”>
<a @click:prevent="mymythod" href="https://baidu.com">test</a>

数组变化侦测

变更方法

Vue 能够侦听响应式数组的变更方法,并在它们被调用时触发相关的更新。这些变更方法包括

push()
pop()
shift()
unshitf()
splice()
sort()
reverse()

替换数组方法

变更方法,顾名思义,就是会对调用它们的原数组进行变更。相对地,也有一些不可变(immutable) 方法,下面这些都不会更改原数组,而总是返回一个新数组。当遇到的是非变更方法时,我们需要将旧的数组替换为新的

filter()
concat()
slice()
<script >export default{data(){return {names:["a","b","c"]}},methods:{addList(){// 这种方式直接自动更新,向原数组添加数据并显示this.names.push("d")  //变更方法// 这种方式不会自动更新,需要手动重新赋值才能显示this.names = this.names.concat(["f","g"])//替换数组方法}}}
</script>
<template><button @click="addList">添加数据</button><ul><li v-for="(item,index) in names">{{ item }}</li></ul>
</template>

计算属性

即 computed,将复杂逻辑封闭成一个方法,放入computed标签内,在模板内直接调用方法名即可实现逻辑

<template><h3>测试</h3><p> {{ hasContent }}</p>
</template>
<script>export default {data(){return {item:{name:"myname",content: ["a","b"]}}},methods:{},// 计算属性computed:{hasContent(){return this.item.content.length > 0 ? "yes" : "no"}}}
</script>

与方法的区别

重点区别:
计算属性:计算属性值会基于其响应式依赖被缓存。

一个计算属性仅会在其响应式依赖更新时才重新计算方法:

方法调用总是会在重渲染发生时再次执行函数

侦听器 watch

侦听页面数据变化

只能监听 data 里面声明的数据

<template><h3>测试侦听器</h3><p>{{mesg}}</p><button @click="newMesg">修改数据</button>
</template>
<script>export default {data(){return{// mesg必须做为watch内的函数名mesg:"hello"}},methods:{newMesg(){this.mesg='update hello'}},computed:{},watch:{// newValue:改变之后的数据// oldvalue: 改变之前的数据// 函数名必须与侦听的数据对象保持一致// 当 mesg 的值发生变化时,会自动执行这个函数mesg(newValue,oldValue){console.log(newValue+"===="+oldValue)}}}
</script>

表单输入绑定 v-model

实时获取用户输入的数据

<template><h3>测试表单输入绑定</h3><form><input type="text" v-model="mesg"><p>{{ mesg }}</p><input type="checkbox" id="checkbox" v-model="checked"/><label for="checkbox">{{ checked }}</label></form>
</template>
<script>export default {data(){return{mesg:"",checked:false}},methods:{},computed:{}}
</script>

三人修饰符 lazy,number,trim

lazy: 只在失去焦点的时候调用

number: 只能输入数字

trim: 去除前后空格

ref 模板引用

即使用 ref 属性来操作DOM元素

  • 内容改变:模板语法{{}}
  • 属性改变:v-band
  • 事件绑定:@事件名或者v-on指令

如果没有特别需求,不要操作DOM

步骤是在 HTML元素中设置 ref 属性值,然后再通过 this.$refs.属性值的方式调用

<template><h3>测试 Ref 操作 DOM</h3><div ref="container" class="container">{{ container }}</div><button @click="getEle">getEle</button>
<!-- 这里的username供后面的 $refs 调用 --><input type="text" ref="username"/><button @click="getValue">getValue</button>
</template>
<script>export default {data(){return{container:"this is container"}},methods:{getValue(){console.log(this.$refs.username.value)},getEle(){// 使用 this.$refs.属性名的方式引用在HTML元素中ref属性指定的属性值调用console.log(this.$refs.container)this.$refs.container.innerHTML = "UPDATA CONT"}},computed:{}}
</script>

组件组成

概念

Vue组件是可复用的 Vue 实例。组件是 Vue 应用程序的构建块,它们提供了一种封装 HTML、CSS 和 JavaScript 的方式,使得可以复用组件来构建复杂的界面。

其本质上是一个对象,下面的代码就是一个组件,即一个 .vue 文件,组件中 template 是必须的,其它可以不必需

<template><h3>测试</h3>
</template>
<script>export default {data(){},methods:{},computed:{}}
</script>
<!-- scope: 如果写了这个属性,则表示让当前样式只在当前组件中生效 -->
<style scoped>
</style>

组件最大的优势就是可复用性
当使用构建步骤时,我们一般会将 Vue 组件定义在一个单独的 we 文件中,这被叫做单文件组件(简称 SFC)

组件注册

一个组件在使用前需要被注册,分为全局注册和局部注册

全局注册

在main.js文件中操作,这种注册方式使组件在整个项目中都可用

import MyComponent from './App.vue'app.component('MyComponent', MyComponent)

局部注册

局部注册的组件需要在使用它的父组件中显式导入,并且只能在该父组件中使用。它的优点是使组件之间的依赖关系更加明确,并且对 tree-shaking 更加友好。

<script setup>
import ComponentA from './ComponentA.vue'
</script><template><ComponentA />
</template>

如果没有使用 <script setup>,则需要使用 components 选项来显式注册:

import ComponentA from './ComponentA.js'export default {
// 这里用于注册components: {ComponentA},setup() {// ...}
}

组件的引入

有四种引入方式

src属性引入

即直接将script的 src 路径设置为组件的路径

<script src="path/to/vue.js"></script>  
<script src="path/to/your-component.vue"></script>

import引入

<script setup>
// RefDemo为引入名字,可以任取,一般与文件名一致
// from 后接 路径,表示组件所在的路径
import RefDemo from './components/RefDemo.vue';
</script><template>
<!-- 这里需要与 import 后的名称一致,才能在模板中显示 --><RefDemo />
</template>

路由配置引入

在Vue路由配置中通过components属性引入:

const routes = [  { path: '/your-route', component: YourComponent }  
];

Vue.use()方法引入

在Vue插件中通过Vue.use()方法引入:

const YourPlugin = {  install(Vue, options) {  Vue.component('your-component', YourComponent);  }  
};  Vue.use(YourPlugin);

组件传递数据props

数据传递

注意事项:
传递数据,只能从父级传递到子级,不能反其道而行props,且porps只读,无法在子级中修改

步骤:

  1. 在父模块中引入子模块
  2. 在模块的中增加 <子模块名 传递的变量名1=值1,…>
  3. 在子模块export中增加 porps:[“变量名1”,“变量名2”,…]
  4. 在子模块中以 模板语法 引用变量即可

father.vue

<template><Child :title=title :content=content /><div></div><h3>测试Props</h3></template>
<script >import Child from './Child.vue';export default {data(){return{title:"Father数据",content:"这是Fathercontent"}},components:{Child}}
</script>

child.vue

<template><h3>这是Child</h3><div>{{ title }}</div><div>{{ content }}</div>
</template>
<script>export default {props:["title","content"]}
</script>

数据校验

直接在props增加以 传递数据变量为键的数据

校验类型:

  • type:数据类型
  • default:父组件未传递变量时子组件显示的默认值
  • required:必选项,不传会发出警告
        props:{title:{type:[String,Object,Array]},content:{type:Number,// 当父组件没有传这个变量时显示的默认值default:0},// 数字和字符串可以直接default,但是如果是数组和对象,必须通过工厂函数返回默认值names:{type:Array,default(){return ["空"]},// 必选项required: true} }

组件事件

在组件的模板表达式中,可以直接使用 $emit 方法触发自定义事件触发自定义事件的目的是组件之间传递数据

即实现子组件数据传递给父组件

步骤:

  1. 子组件中使用 this.$emit(方法名,参数)方式自定义一个事件
  2. 父组件中在引入的子组件模板内使用 @子组件方法名=“父方法名” 的方式引用

father.vue

<template><Child @send="getdata" /><div></div><h3>测试Props</h3><div>{{ mesg }}</div></template>
<script >import Child from './Child.vue';export default {data(){return{title:"Father数据",content:"这是Fathercontent",mesg:""}},components:{Child},methods:{getdata(mesg){console.log("ddddd")this.mesg=mesg}}}
</script>

Child.vue

<template><h3>这是Child</h3><button @click="sendToFather">发送数据</button>
</template>
<script>export default {methods:{sendToFather(){this.$emit("send","子组件数据")}}}
</script>

插槽 Slots

元素是一个插槽出口,标示了父元素提供的插槽内容(slot content)将在哪里被渲染

步骤

  1. 在父组件 template 中引入模板使用 <模板名>需要传递的内容</模板名> 方式
  2. 在子组件 template 中增加 标签,即可在子组件中显示

渲染作用域

插槽内容可以访问到父组件的数据作用域,因为插槽内容本身是在父组件模板中定义的

father.vue

<template><Child><div>11111</div><!-- 这里可以动态显示到子组件 --><h3>{{ mesg }}</h3><div>222222</div></Child>
</template>
<script >
import Child from './Child.vue';
export default {components: {Child},data() {return {mesg: "test"}}
}
</script>

child.vue

<template><h3>这是Child</h3><h3>开始引入slot</h3><slot></slot>   <h3>引入完成slot</h3>   
</template>
<script>
</script>

默认内容

当父组件没有传递插槽给子组件时,可以在子组件child.vue中设置默认值

<template><h3>这是Child</h3><h3>开始引入slot</h3><slot>这里设置默认值</slot>   <h3>引入完成slot</h3>   
</template>
<script>
</script>

具名插槽

即给插槽命名,方便在子组件中指定slot引入

  1. 在父组件template中嵌套子组件template
  2. 在嵌套的template中添加属性 v-slot:名称 来定义slot名称
  3. 在子组件中slot中添加name=名称引用插槽

v-host可以使用#代替

father.vue

<template><Child><template v-slot:one><div>11111</div><!-- 这里可以动态显示到子组件 --><h3>{{ mesg }}</h3></template><!-- v-slot可简写为 # --><template #two><div>222222</div><!-- 这里可以动态显示到子组件 --><h3>{{ mesg2 }}</h3></template></Child>
</template>
<script >
import Child from './Child.vue';
export default {components: {Child},data() {return {mesg: "第一个插槽",mesg2: "第二个插槽"}}
}
</script>

child.vue

<template><h3>这是Child</h3><h3>开始引入slot</h3><slot name="one">默认1</slot>   <h3>引入完成slot</h3>   <slot name="two">默认2</slot>
</template>
<script>
</script>

在某些场景下插槽的内容可能想要同时使用父组件域内和子组件域内的数据。要做到这一点,我们需要一种方法来让子组件在渲染时将一部分数据提供给插槽
我们也确实有办法这么做!可以像对组件传递 props 那样,向一个插槽的出口上传递attributes

组件的生命周期

每个Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到DOM,以及在数据改变时更新 DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码

相关文章:

vue入门

Attribute 绑定 v-bind:取值方式 开发前准备 安装node.js需要高于15.0 创建vue项目 npm init vuelatest安装 npm install 启动 npm run dev模板语法 文本插值 {{ 变量 }} <p> {{ mesg }} </p>这种方式公支持单一表达式&#xff0c;也可以是js代码&#xf…...

区块链中slot、epoch、以及在slot和epoch中的出块机制,分叉原理(自己备用)

以太坊2.0中有两个时间概念&#xff1a;时隙槽slot 和 时段&#xff08;周期&#xff09;epoch。其中一个slot为12秒&#xff0c;而每个 epoch 由 32 个 slots 组成&#xff0c;所以每个epoch共384秒&#xff0c;也就是 6.4 分钟。 对于每个epoch&#xff0c;使用RANDAO伪随机…...

免费开源的vue+express搭建的后台管理系统

此项目已开源 前端git地址&#xff1a;exp后台管理系统前端: exp后台管理系统前端 后端git地址&#xff1a;express后台管理系统: express后台管理系统 安装运行 npm i yarn i 前端: npm run dev | yarn dev 后端: npm run start | yarn start 主要技术栈 前端后端名称版本名…...

【开发】视频云存储EasyCVR视频汇聚平台AI智能算法定制

安防视频集中存储EasyCVR视频汇聚平台&#xff0c;可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等功能。为了便…...

Ribbon:负载均衡及Ribbon

什么是负载均衡&#xff1f; 第一种轮询算法&#xff0c;依次遍历去执行&#xff0c;达到负载均衡 集成Ribbon 导入pom&#xff0c;在消费者服务里的pom文件导入 <!-- Ribbon 集成 --><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spr…...

【声波】声波在硼酸、硫酸镁 (MgSO4) 和纯水中的吸收研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

使用swoole实现实时消息推送给客户端

一. 测试服务端 //测试服务端public function testServer(){$server new Server(192.168.0.144, 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP);$server->on(request, function ($request, $response) {$response->header(Content-Type, text/plain);$response->end("He…...

Ordinals 之后,以太坊铭文协议 Ethscriptions 如何再塑 NFT 资产形态

随着加密市场的发展&#xff0c;NFT 赛道逐渐形成了其独有的市场。但在加密熊市的持续影响下&#xff0c;今年 NFT 赛道的发展充满坎坷与挑战。据 NFTGO 数据显示&#xff0c;截至 8 月 7 日&#xff0c;与去年相比&#xff0c;NFT 市值总计约 56.4 亿美元&#xff0c;过去 1 年…...

Python绘制爱心代码(七夕限定版)

写在前面&#xff1a; 又到了一年一度的七夕节啦&#xff01;你还在发愁送女朋友什么礼物&#xff0c;不知道怎样表达你满满的爱意吗&#xff1f;别担心&#xff0c;我来帮你&#xff01;今天&#xff0c;我将教你使用Python绘制一个跳动的爱心&#xff0c;用创意和幽默为这个…...

Java两整数相除向上取整

方法一&#xff1a;通过三目运算符 &#xff08;简单移动&#xff09; x / y (x % y ! 0 ? 1 : 0);方法二&#xff1a;通过ceil函数&#xff08;不推荐使用&#xff0c;涉及类型转换&#xff09; (int)Math.ceil((double)x/y);// 或者(int)Math.ceil(x * 1.0 /y);方法三&…...

Linux学习之Telnet明文漏洞

yum install telnet telnet-server xinetd -y安装软件。 systemctl start xinetd.service开启xinetd&#xff0c;systemctl start telnet.socket开启telnet。 xinetd来监控端口&#xff0c;然后把数据传给telnet。 ifconfig eth0看一下eth0网卡信息&#xff0c;。 iptable…...

产品经理如何提高用户画像效果?SIKT模型

产品经理做用户画像&#xff0c;最担心被业务方反馈&#xff1a;没效果。这往往是由用户画像与业务场景脱节造成的。那么我们该如何从业务场景出发&#xff0c;让用户画像更有效&#xff1f;一般来说&#xff0c;我们可以采用SIKT模型解决这个问题。 用户画像 ​ 1、SIK…...

ubuntu安装Microsoft Edge并设置为中文

1、下载 edge.deb 版本并安装 sudo dpkg -i microsoft-edg.deb 2. 设置默认中文显示 如果是通过.deb方式安装的&#xff1a; 打开默认安装路径下的microsoft-edge-dev文件&#xff0c;在文件最开头加上: export LANGUAGEZH-CN.UTF-8 &#xff0c;保存退出。 cd /opt/micr…...

Host/ KVM/ Docker/ K8s/ OpenStack/ Mesos简单介绍和区别

Host/ KVM/ Docker/ Kubernetes/ OpenStack 和 Mesos 的简单介绍&#xff1a; - Host&#xff1a; Host 是指物理服务器或虚拟机主机&#xff0c;它们可以运行多个虚拟机或容器来提供计算和存储资源。Host 是云计算和容器化技术中的基本组成部分。 - KVM&#xff1a; KVM 是…...

关于Transformer中的位置编码

位置编码 (Positional Encoding) 位置编码是在自然语言处理中&#xff0c;特别是在 Transformer 架构中使用的一个重要概念。Transformer 架构由于其自注意力机制 (Self-Attention Mechanism) 的特性&#xff0c;对序列中的元素没有固有的顺序感知。这意味着&#xff0c;如果不…...

ABAP 期初库存批量导入 demo1

&--------------------------------------------------------------------- *& Report ZMMCP005 &--------------------------------------------------------------------- 作者&#xff1a; Liv完成日期&#xff1a;描述&#xff1a; 期初库存导入需求简要说明&…...

想用 Python 写游戏,都有哪些好用的游戏开发库?

虽然 Python 在网络爬虫、人工智能、数据分析方面有广泛应用,但它并不是一门专门做游戏开发的编程语言,不过对于小型的游戏开发,Python 还是挺香的。下面为大家介绍几个支持 Python 的 2D、3D 游戏开发库,使用它们,你可以设计出很多有意思的小游戏! Cocos2d Cocos2d 是…...

vue3 路由缓存问题

目录 解决问题的思路&#xff1a; 解决问题的方案&#xff1a; 1、给roter-view添加key&#xff08;破坏复用机制&#xff0c;强制销毁重建&#xff09; 2、使用beforeRouteUpdate导航钩子 3、使用watch监听路由 vue3路由缓存&#xff1a;当用户从/users/johnny导航到/use…...

如何找到一个数的所有质因数,以及如何快速判断一个数是不是质数

前情介绍 今天遇到一个需求&#xff1a;找到一个数所有的质因数。 初步解决 先定义一个判断质数的函数&#xff1a; def is_Prime(number):i 2count 0while i < number:if number % i 0 :count 1i 1if count > 0:return Falseelse:return True 接着定义一个寻找质…...

西瓜书之神经网络

一&#xff0c;神经元模型 所谓神经网络&#xff0c; 目前用得最广泛的一个定义是“神经网络是由具有适应性的简单单元组成的广泛并行互连的网络&#xff0c;它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应”。 M-P神经元 M-P神经元&#xff1a;接收n个输入(…...

C++进阶 特殊类的设计

本篇博客介绍&#xff1a;介绍几种特殊的类 特殊类的设计 设计一个类不能被拷贝设计一个类 只能在堆上创建对象设计一个类 只能在栈上创造对象设计一个类不能被继承单例模式饿汉模式懒汉模式单例模式对象的释放问题 总结 设计一个类不能被拷贝 我们的拷贝只会发生在两个场景当…...

NLP序列标注问题,样本不均衡怎么解决?

【学而不思则罔&#xff0c;思而不学则殆】 1.问题 NLP序列标注问题&#xff0c;样本不均衡怎么解决&#xff1f; 2.解释 以命名实体识别&#xff08;NER&#xff09;为例&#xff0c;这个样本不均衡有两种解释&#xff1a; &#xff08;1&#xff09;实体间类别数量不均衡…...

大端和小端

大端和小端 大端&#xff08;Big Endian&#xff09;和小端&#xff08;Little Endian&#xff09;是两种不同的字节序排列方式&#xff0c;用于解释多字节数据在内存中的存储顺序。 在大端字节序中&#xff0c;高位字节&#xff08;最高有效位&#xff09;存储在低位地址&am…...

C++快速回顾(二)

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》&#xff0c;结合我自己的工作学习经历&#xff0c;我准备写一个音视频系列blog。C/C是音视频必…...

【LVS】1、LVS负载均衡群集

1.群集的含义&#xff1a; Cluster、群集、集群 由多台主机构成并作为一个整体&#xff0c;只提供一个访问入口&#xff08;域名与IP地址&#xff09;&#xff1b;可伸缩 2.集群使用的场景&#xff1a; 高并发 3.企业群集的分类&#xff1a; 根据群集所针对的目标差异&a…...

el-tree 懒加载树

el-tree 懒加载树 添加自定义图标指定叶子节点懒加载 <template><div><el-treeclass"filter-tree":data"treeData":props"defaultProps"ref"tree"lazy:load"loadTree":expand-on-click-node"true"…...

到江西赣州ibm维修服务器之旅-联想X3850 x6黄灯故障

2023年08月15日&#xff0c;一位江西赣州工厂客户通过朋友介绍与冠峰售前工程师取得联系&#xff0c;双方对产品故障前后原因沟通的大致情况如下&#xff1a; 服务器型号&#xff1a;Lenovo system x3850 x6 为用户公司erp仓库服务器 服务器故障&#xff1a;正常使用过程中业…...

VMware 虚拟机三种网络模式详解

文章目录 前言桥接模式(Bridged)桥接模式特点: 仅主机模式 (Host-only)仅主机模式 (Host-only)特点: NAT网络地址转换模式(NAT)网络地址转换模式(NAT 模式)特点: 前言 很多同学在初次接触虚拟机的时候对 VMware 产品的三种网络模式不是很理解,本文就 VMware 的三种网络模式进行…...

ASP.NET指定变量数据类型,速度提高了100倍

ASP.NET指定变量数据类型&#xff0c;速度提高了100倍由自动编程人工智能 发表在专区 10亿次求余数为0的计算&#xff1a; ASP运行速度130秒左右 ASP.NET Dim i, c, max 如果不指定数据类型&#xff0c;运行要120秒左右 Dim i, c, max As Integer 指定数据类型&#xff0c;运…...

PyArmor 一键加密

使用&#xff1a; pyarmor obfuscate main.py 参考&#xff1a;Python代码加密方案_python加密代码_wgr_1009的博客-CSDN博客 一 简介 PyArmor是用于保护Python代码的工具&#xff0c;它可以将Python脚本编译成加密的字节码&#xff0c;以增加代码的保护性。它的主要目的是防…...

redis--持久化

redis持久化 在 Redis 中&#xff0c;持久化是一种将数据从内存写入到磁盘的机制&#xff0c;以便在服务器重启或崩溃时能够恢复数据。Redis 提供了两种主要的持久化方式&#xff1a;RDB&#xff08;Redis Database Snapshot&#xff09;和AOF&#xff08;Append-Only File&am…...

管理外部表

官方文档地址&#xff1a;Managing Tables 关于外部表 Oracle 数据库允许您对外部表中的数据进行只读访问。外部表定义为不驻留在数据库中的表&#xff0c;通过向数据库提供描述外部表的元数据&#xff0c;数据库能够公开外部表中的数据&#xff0c;就好像它是驻留在常规数据…...

数字图像处理-AWB跳变

1、自动白平衡&#xff08;AWB&#xff09;算法是相机中常用的图像处理技术&#xff0c;它能够自动调整图像中的白平衡&#xff0c;使得图像中的颜色更加真实、自然。然而&#xff0c;在实际应用中&#xff0c;AWB算法也存在着一些问题&#xff0c;例如AWB跳变&#xff08;Whit…...

DNNGP、DeepGS 和 DLGWAS模型构成对比

一、DNNGP DNNGP 是基于深度卷积神经网络&#xff0c;这个结构包括一个输入层&#xff0c;三个卷积层&#xff0c;一个批标准化层&#xff0c;两个dropout层&#xff0c;一个平坦化层&#xff0c;一个 dense层。 dropout层&#xff1a;在神经网络中,dropout层是一个非常有效的正…...

postgresSQL 配置文件设置

postgres.conf 是 PostgreSQL 数据库的主要配置文件&#xff0c;其中包含了许多关于数据库行为的设置。以下是一些常见的配置项&#xff1a; listen_addresses: 这个参数定义了 PostgreSQL 服务监听的网络地址。默认值是 ‘localhost’&#xff0c;这意味着只有本机的客户端才能…...

【bug】Unity无法创建项目

bug UnityHub无法创建项目 UnityHub无法创建项目 出现的问题&#xff1a;在创建新项目时弹出来一个 无法创建项目 尝试的方法&#xff1a; 刷新许可证 ❌没用退出账号重新登陆 ❌没用重启电脑 ❌没用 最后发现是什么问题呢&#xff1f; 2021.3.3这个版本我之前在资源管理器中…...

跨境外贸业务,选择动态IP还是静态IP?

在跨境业务中&#xff0c;代理IP是一个关键工具。它们提供了匿名的盾牌&#xff0c;有助于克服网络服务器针对数据提取设置的限制。无论你是需要经营管理跨境电商店铺、社交平台广告投放&#xff0c;还是独立站SEO优化&#xff0c;代理IP都可以让你的业务程度更加丝滑&#xff…...

Hlang社区-社区导航栏实现

文章目录 前言项目结构导航实现创作中心移动小球消息提示完整代码前言 okey,这里的话是我们社区导航栏的实现: 废话不多说,看看效果: 我甚至为此用New Bing生成了一个Logo。 项目结构 废话不多说,先来看到我们的项目结构: 在这里导航栏是一个组件。 在App.vue里面直…...

Kestrel和ISS服务器下的配置

一、Kestrel服务器 Kestrel是ASP.NET Core框架中的一个跨平台的Web服务器。它是ASP.NET Core应用程序默认的HTTP服务器&#xff0c;并且可作为独立的Web服务器来托管ASP.NET Core应用程序。 Kestrel具有以下特点和功能 1、跨平台 Kestrel是完全跨平台的&#xff0c;可以在Wind…...

uniapp选择只选择月份demo效果(整理)

<template><view style"margin-top: 200rpx;"><!-- mode"multiSelector" 多列选择器 --><view><picker :range"years" :value"echoVal" change"yearChange" mode"multiSelector">{…...

微信ipad协议8.0.40 加好友功能

友情链接 geweapi.com 点击即可访问&#xff01; 好友请求验证 小提示&#xff1a; v_3 v_4 可以参考 搜索接口 请求URL&#xff1a; http://域名地址/api/contacts/verifyuser 请求方式&#xff1a; POST 请求头&#xff1a; Content-Type&#xff1a;application/js…...

如何通过本地搭建wamp服务器并实现无公网IP远程访问

文章目录 前言1.Wamp服务器搭建1.1 Wamp下载和安装1.2 Wamp网页测试 2. Cpolar内网穿透的安装和注册2.1 本地网页发布2.2 Cpolar云端设置2.3 Cpolar本地设置 3. 公网访问测试4. 结语 前言 软件技术的发展日新月异&#xff0c;各种能方便我们生活、工作和娱乐的新软件层出不穷&…...

matlab使用教程(19)—曲线拟合与一元方程求根

1.多项式曲线拟合 此示例说明如何使用 polyfit 函数将多项式曲线与一组数据点拟合。您可以按照以下语法&#xff0c;使用 polyfit 求出以最小二乘方式与一组数据拟合的多项式的系数 p polyfit(x,y,n), 其中&#xff1a; • x 和 y 是包含数据点的 x 和 y 坐标的向量 …...

【Go 基础篇】Go语言关键字和预定义标识符解析:探索编程的基石与核心要素

介绍 在计算机编程中&#xff0c;关键字&#xff08;Keywords&#xff09;和预定义标识符&#xff08;Predefined Identifiers&#xff09;是编程语言的核心要素&#xff0c;它们在语法结构和语言功能中起到重要作用。在Go语言&#xff08;Golang&#xff09;中&#xff0c;关…...

微服务与Nacos概述-6

RBAC 模型 RBAC 基于角色的访问控制是实施面向企业安全策略的一种有效的访问控制方式。 基本思想是&#xff0c;对系统操作的各种权限不是直接授予具体的用户&#xff0c;而是在用户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当…...

不是说嵌入式是风口吗,那为什么工作还那么难找?

最近确实有很多媒体、机构渲染嵌入式可以拿高薪&#xff0c;这在行业内也是事实&#xff0c;但前提是你有足够的竞争力&#xff0c;真的懂嵌入式。 时至今日&#xff0c;能做嵌入式程序开发的人其实相当常见&#xff0c;尤其是随着树莓派、Arduino等开发板的普及&#xff0c;甚…...

【二叉树】114. 二叉树展开为链表

114. 二叉树展开为链表 解题思路 后序遍历思路将root的左子树和右子树展平将root的右子树接到左子树下方 然后将整个左子树作为右子树 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* Tree…...

docker的安装与基础使用

一.docker简介 1&#xff09;什么是docker Docker是一种用于构建、打包和运行应用程序的开源平台。它基于操作系统级虚拟化技术&#xff0c;可以将应用程序和其依赖的库、环境等资源打包到一个可移植的容器中&#xff0c;形成一个轻量级、独立的可执行单元。 开发者在本地编…...

python+django+mysql高校校园外卖点餐系统--计算机毕设项目

本文的研究目标是以高校校园外卖点餐为对象&#xff0c;使其高校校园外卖点餐为目标&#xff0c;使得高校校园外卖点餐的信息化体系发展水平提高。论文的研究内容包括对个人中心、美食分类管理、用户管理、商家管理、美食信息管理、工作人员管理、安全检查管理、系统管理、订单…...

获取excel中的图片(包含wps中嵌入单元格图片)

项目中有excel导入功能,并且需要导入excel中的图片;模板如图: 已知office中插入的图片为浮动形式;如图: wps中可以插入浮动图片,也可以插入嵌入单元格图片;如图: 并且在wps嵌入单元格形式的图片可以看到使用的是公式;如图: 问题来了,如何获取图片 并且将图片与单元格进行对应 …...