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

Vue生命周期脚手架工程Element-UI

一 Vue2.x生命周期

每个vue实例再被创建时都要经过一系列的初始化过程:
创建实例
装载模板
渲染模板等等
vue为生命周期中的每个状态都设置了钩子函数(监听函数)。每个vue实例处于不同的生命周期时,对应的函数就会触发调用
https://www.cnblogs.com/L-xmin/p/13031773.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><div id="app"><span id="num">{{num}}</span><button @click="num++">点赞</button><br>{{name}},有{{num}}个点赞!
</div></head>
<body><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script>let vm=new Vue({el:"#app",data:{name:"张三",num:1},methods:{show(){return this.name}},// 第一个生命周期函数,组件的data,methods,DOM结构都还没有初始化beforeCreate() {console.log("=========beforeCreate=============");console.log("数据模型未加载: "+this.name,this.num); //undefinedconsole.log("方法未加载: "+this.show());console.log("html模板未渲染: "+document.getElementById("num").innerText);},// 第二个生命周期函数,组件的data,methods已经可以访问到,但html模板尚未渲染,该函数中我们通常发送ajax请求created(){console.log("=========created=============");console.log("数据模型已加载: "+this.name,this.num); //undefinedconsole.log("方法已加载: "+this.show());console.log("html模板已加载:" + document.getElementById("num"));console.log("html模板未渲染: "+document.getElementById("num").innerText);},// 第三个生命周期函数,模板结构已经在内存中编译完成,但还没有渲染到页面上,仍然无法获得模板中的内容,页面看到的还是一个插值表达式beforeMount() {console.log("=========beforeMount=============");console.log("html模板未渲染: "+document.getElementById("num").innerText);},// 组件创建阶段的最后一个生命周期函数,页面真正被渲染了,用户能看到真实页面数据mounted() {console.log("=========mounted=============");console.log("html模板已渲染: "+document.getElementById("num").innerText);},//更新部分的生命周期beforeUpdate() {console.log("=========beforeUpdate=============");console.log("数据模型已更新:"+this.num);console.log("html模板未更新:"+document.getElementById("num").innerText);},updated() {console.log("=========updated=============");console.log("数据模型已更新:"+this.num);console.log("html模板已更新:"+document.getElementById("num").innerText);},})</script>    
</body>
</html>

创建部分的生命周期

beforeCreate

此时,组件的data和methods以及页面DOM结构都还没有初始化

created

此时,组件的data和methods可用。但页面还没被渲染出来,在该函数中,我们经常会发起ajax请求

beforeMount

此时,模板结构已经在内存中编译完成,但还没有真正渲染到页面上。页面上看不到真实的数据,能看到的只是一个模板而已,仍然无法获得模板中的内容,仍然是一个插值表达式

mounted

组件创建阶段的最后一个生命周期。此时,页面已经真正渲染好了,用户可以看到真实页面数据。


以上执行完,组件就离开了创建阶段,进入运行阶段。如果用到了一些第三方UI插件,必须在mounted中来初始化插件。

运行中的生命周期函数,会根据data数据的变化有选择性的触发0次或n次

更新部分的生命周期

以后当每点一次赞,num就会变化,就会触发下面的两个钩子函数

beforeUpdate

此时数据是最新的,但页面上呈现的数据还是旧的

updated

页面已经完成了更新,此时data数据是最新的,同时页面上呈现的数据也是最新的

beforeDestroy

执行该函数的时候,组件即将被销毁但还没有真正销毁,此时组件(data、methods等数据或方法)还可以正常用。

destroyed

组件完成销毁,组件废了

二 使用Vue脚手架进行模块化开发

我们实际在使用vue开发项目的时候,大多使用其模块化的开发环境。我们去做一个后台管理系统,也是通过其模块化的开发环境搭建了一个单页应用,我们会发现项目中实际上只有一个html页面(index.html),其他所有的功能都是通过编写vue相关的组件(.vue结尾的文件),来完成最后的功能

2.1 搭建模块化环境测试

  1. 全局安装webpack,webpack是一个项目打包工具。-g是指全局安装
    npm install webpack -g
  2. 全局安装vue脚手架
    npm install -g @vue/cli-init
  3. 初始化vue项目。vue脚手架使用webpack模块初始化一个appname项目
    vue init webpack appname
    桌面创建项目文件夹名称,如vue-demo,然后进入该文件夹,在文件路径地址上输入cmd,回车就可以在当前目录中打开cmd窗口,在当前目录执行上面的命令
    初始化的时候有几项配置
    项目名称,项目描述,作者,vue构建版本(使用standalone),安装vue-router,不适用eslint,不使用单元测试,不安装e2e tests,选择npm为包管理工具

如果出现vue不是内部或者外部命令等错误,使用cnpm或者配置npm路径环境变量

npm config list

然后打开上面的地址,查看是否有vue.cmd

如果一直处于downloading template然后最后超时报错如下:

是因为github被墙了,无法访问,解决方法:https://www.cnblogs.com/liufqiang/p/13697531.html,按照要求更改后可以正常初始化

  1. 启动vue项目

上一步构建完后,再cd进入下一层目录(vue-demo目录下还有一层vue-demo,需要进入第二层实际项目路径),执行如下的命令来运行脚手架工程
npm run dev
项目的package.json中有scripts,代表我们能运行的命令

2.2 vue脚手架工程目录介绍

在 vscode中打开vue-demo项目,可以看到如下目录

目录/文件作用图片
build与打包工具webpack有关的代码
config主要是一些配置信息,如项目访问端口号
node_modules使用npm install 给项目安装的所有依赖
src这里是我们要开发的目录,基本上要做的事情都在这个目录里
static静态资源文件,如图片,字体
index.html首页内容,只有一个id为app的div
package.jsonnpm安装的依赖包的信息,我们每安装一个依赖,在package.json中都会有devDependencies依赖声明,包括它在哪里下载,它的版本号是多少,都有

src里面包含了几个目录及文件:

  • assets: 放置一些图片,如logo等
  • components: 目录里面放了一个组件文件,可以不用
  • App.vue: 项目入口文件,我们也可以直接将组件写这里,而不使用 components 目录
  • main.js: 项目的核心文件

总结:一句话,开发期间关注src里面的代码以及src里面编写相应的功能

2.3 vue脚手架项目运行流程

  • index.html
    声明简单的id为 app 的div给 vue 挂载
  • src下的main.js主程序
    主程序中引入了 vue、App 和 router 模块, 创建了一个 Vue实例,并把 App.vue 模板的内容挂载到 index.html 的 id 为 app 的 div 标签下, 并绑定了一个路由配置
  • App.vue
    上面 main.js 把 App.vue 模板的内容,放置在了 index.html 的 div 标签下面。查看 App.vue 的内容我们看到,这个页面的内容由一个 logo 和一个待放置内容的 router-view,router-view 的内容将由 router 配置决定
  • router下的index.js
    查看 route 目录下的 index.js,我们发现这里配置了一个路由, 在访问路径 / 的时候, 会把 HelloWorld 模板的内容放置到上面的 router-view中

如果我们自定义了一个Hello路由,那么我们访问/hello的时候,会把Hello 模板的内容放置到上面的router-view中,即:如果不需要首页a标签跳转,只是输入地址访问的话,直接改路由即可

关于APP.vue文件:可以发现内容分为3个部分,

  • template(模板,页面要显示成什么),
  • script(vue实例的methods,data等),
  • style(当前template的样式)。这是一个标准的vue单文件组件
    https://cn.vuejs.org/v2/guide/single-file-components.html
    模块化开发的时候,我们会写大量的.vue的单模块组件,格式就是上面的3个部分

    上面的router-view是路由视图的意思,意思是当前页面上面显示的是图片,下面显示什么,要根据我们访问路径动态决定。默认是/*/(url哈希的访问方式) ,所以这个是一个动态的视图,* 后的/是默认要显示的视图

访问/的定义在route目录的index.js中,访问/,会使用我们名称为HelloWorld的组件,而Helloworld组件从哪来,我们从下图可以看到也是从外面导入的

导入Helloworld的from后面有个@符号,@符号代表当前src整个目录的根目录,然后从src下面的components下找HelloWorld.vue

如果我们想自己编写一个Hello.vue组件,来访问,我们同样在components目录下编写Hello.vue,编写3要素,template,script,style

<template><div><h1>你好啊,hello,{{name}}</h1></div>
</template>
<script>
// 导出vue实例,推荐data写函数的方式,return 一个对象,对象有个name值
export default {data(){return {name:"周杰伦"}}
}
</script>
<style></style>

组件写好以后,要想使用,而且是路径/hello使用,那么接下来我们需要编写路由,在main.js中,我们可以看到导入的路由都在router目录下,因此我们在router目录下的index.js中添加一个路由path指向访问地址,name是访问path的地址,要展示哪个组件,使用之前都得先导入

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Hello from '@/components/Hello'Vue.use(Router)export default new Router({routes: [{path: '/',name: 'HelloWorld',component: HelloWorld},{path:'/hello', name:'Hello',component:Hello}]
})

然后保存,我们访问/hello路径

然后我们再访问/,会发现又变回了helloworld组件,而我们可以发现上面的图片不变,原因就是因为访问不同的组件只会改变路由视图的部分,不会改变路由视图上面的图片

我们如果想点击一个超链接就去我们的hello组件,那么需要在App.vue中修改如下

app.vue只有路由视图可以变,上面的图片是不会变的

三 使用Vue整合element-ui

element-ui是一个使用比较广泛的vue组件库,帮我们抽取了常用的如单选框,输入框,按钮之类的各种组件,可以简化我们的开发

3.1 npm安装与引入

  1. 安装elementUI:i是install的简写 npm i element-ui
  2. 安装完后,在我们vue-demo项目的package.json中的依赖列表会列出刚刚安装的element-ui,可以看到是2.15.6版本

然后,我们在main.js主程序中将element-ui组件以及它的css样式导入
因为我们引入了,所以我们可以直接导入,类似于java中pom文件添加完依赖,就可以直接import进去
最后我们需要让vue使用我们的element-ui组件,添加一行代码Vue.use

未来我们需要用到其他组件库,也是在main.js中采用上述方法导入使用

3.2 使用element-ui组件

3.2.1 简单引入

我们在我们之前编写的Hello.vue组件中使用Elementui,添加一个单选框,单选框组件代码复制下面链接的文档 https://element.eleme.cn/#/zh-CN/component/installation

el-radio其实本质上就是elementUI抽取的组件,之前不是学过组件化么,等于以前我们要自己做很多设定,现在elementUI帮我们做好了

要使用 Radio 组件,只需要设置v-model绑定变量,选中意味着变量的值为相应 Radio label属性的值,label可以是String、Number或Boolean。

如上文档所示,我们修改Hello.vue组件内容,添加单选框,label就是单选框的value值,通过data中设置radio值来默认让某个选中

// 0. 如果使用模块化机制编程,导入 Vue 和 VueRouter,要调用 Vue.use(VueRouter)// 1. 定义(路由)组件。
// 可以从其他文件 import 进来
const Foo = { template: '<div>foo</div>' }
const Bar = { template: '<div>bar</div>' }// 2. 定义路由
// 每个路由应该映射一个组件。 其中"component" 可以是
// 通过 Vue.extend() 创建的组件构造器,
// 或者,只是一个组件配置对象。
// 我们晚点再讨论嵌套路由。
const routes = [{ path: '/foo', component: Foo },{ path: '/bar', component: Bar }
]// 3. 创建 router 实例,然后传 `routes` 配置
// 你还可以传别的配置参数, 不过先这么简单着吧。
const router = new VueRouter({routes // (缩写)相当于 routes: routes
})// 4. 创建和挂载根实例。
// 记得要通过 router 配置参数注入路由,
// 从而让整个应用都有路由功能
const app = new Vue({router
}).$mount('#app')// 现在,应用已经启动了!
3.2 简单后台管理界面

https://element.eleme.cn/#/zh-CN/component/container
在elementui官方文档的基本组件中选择container布局容器,elementui帮我们写好了常见的几个页面布局,我们使用如下的布局,分左右上三部分

复制template部分代码到App.vue里面,因为页面一进来就是index.html页面,是一个id为app的div,在main.js中配置了在这个div里面加载App.vue组件,相当于一进来就展示的是App.vue的template部分,因此我们将App.vue的template部分完全替换

然后将scripts部分的代码和style部分的代码复制并覆盖之前的App.vue的script和style中的代码

data就是v-bind:data的缩写,也就是它绑定了一个自定义属性data,这个data的值关联export default {data}中的data,这个data函数,返回了一个对象,对象中有个属性tableData数组
然后每一列el-table-column使用prop指定取出数组中每一个对象的哪个元素的值作为显示,label就是表头显示的字

当el-table元素中注入data对象数组后,在el-table-column中用prop属性来对应对象中的键名即可填入数据,用label属性来定义表格的列名。可以使用width属性来定义列宽

修改完后,再次访问,发现效果如下:

我们下面去实现点击左侧的选项1,右边显示默认给的用户列表,点击选项2,右边显示hello组件的内容

通过修改el-main标签,el-main就是右边的内容区,是需要根据路径的不同显示不同的内容,因此我们需要将它抽取出来。首先注释掉表格部分内容,然后改为如下

然后将表格部分内容抽取为一个组件,叫做MyTable组件,MyTable.vue文件

后来我们要经常编写vue组件,自己每次都写template,script,style这3部分太麻烦了,可以快捷的让vscode给我们生成这样一个模板

很简单:创建vue对应的代码片段,可以帮我们快速的生成vue模板
vue.json
文件–首选项–用户代码片段–新建代码片段–取名vue.json

// https://www.cnblogs.com/songjilong/p/12635448.html
{"Print to console": {"prefix": "vue","body": ["<!-- $1 -->","<template>","<div class='$2'>$5</div>","</template>","","<script>","//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)","//例如:import 《组件名称》 from '《组件路径》';","","export default {","//import引入的组件需要注入到对象中才能使用","components: {},","data() {","//这里存放数据","return {","","};","},","//监听属性 类似于data概念","computed: {},","//监控data中的数据变化","watch: {},","//方法集合","methods: {","","},","//生命周期 - 创建完成(可以访问当前this实例)","created() {","","},","//生命周期 - 挂载完成(可以访问DOM元素)","mounted() {","","},","beforeCreate() {}, //生命周期 - 创建之前","beforeMount() {}, //生命周期 - 挂载之前","beforeUpdate() {}, //生命周期 - 更新之前","updated() {}, //生命周期 - 更新之后","beforeDestroy() {}, //生命周期 - 销毁之前","destroyed() {}, //生命周期 - 销毁完成","activated() {}, //如果页面有keep-alive缓存功能,这个函数会触发","}","</script>","<style scoped>",(这一行复制的时候需要删掉)     "//@import url($3); 引入公共css类","$4","</style>"],"description": "生成vue模板"},"http-get请求": {"prefix": "httpget","body": ["this.\\$http({","url: this.\\$http.adornUrl(''),","method: 'get',","params: this.\\$http.adornParams({})","}).then(({ data }) => {","})"],"description": "httpGET请求"},"http-post请求": {"prefix": "httppost","body": ["this.\\$http({","url: this.\\$http.adornUrl(''),","method: 'post',","data: this.\\$http.adornData(data, false)","}).then(({ data }) => { });" ],"description": "httpPOST请求"}
}

然后以后我们写一个vue,就会快捷的帮我们提示生成全部的3部分内容

<template><div><el-table :data="tableData"><el-table-column prop="date" label="日期" width="140"></el-table-column><el-table-column prop="name" label="姓名" width="120"></el-table-column><el-table-column prop="address" label="地址"></el-table-column></el-table></div>
</template><script>export default {data() {const item = {date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'};return {tableData: Array(20).fill(item)}}};
</script>

然后修改路由,通过点击左侧连接,右边内容页显示具体内容。
左边点击选项1,发送table请求,点击选项2,发送hello请求

修改router目录下的index.js文件,增加路由:

import MyTable from '@/components/MyTable'{path: '/table',name: 'MyTable',component: MyTable}

然后修改导航一种分组一的选项1和选项2的index并且开发menu的属性router为true

然后再次点击左侧导航1的分组一的选项1和选项2可以看到正确的跳转了

最后编辑于:2025-04-21 11:14:22


喜欢的朋友记得点赞、收藏、关注哦!!!

相关文章:

Vue生命周期脚手架工程Element-UI

一 Vue2.x生命周期 每个vue实例再被创建时都要经过一系列的初始化过程&#xff1a; 创建实例 装载模板 渲染模板等等 vue为生命周期中的每个状态都设置了钩子函数&#xff08;监听函数&#xff09;。每个vue实例处于不同的生命周期时&#xff0c;对应的函数就会触发调用 https:…...

LeetCode[226] 翻转二叉树

思路&#xff1a; 使用递归&#xff0c;归根结底还是左右节点互相倒&#xff0c;那么肯定需要一个temp节点在中间传递&#xff0c;最后就是递归&#xff0c;没什么说的 代码&#xff1a; /*** Definition for a binary tree node.* public class TreeNode {* int …...

ConcurrentHashMap解析

ConcurrentHashMap解析 以下是对 Java 8 及以后版本 ConcurrentHashMap 源码的深入解析&#xff0c;涵盖其底层数据结构、并发控制机制、核心操作流程、扩容与迁移、树化/退化策略&#xff0c;以及性能特性。总体来说&#xff0c;ConcurrentHashMap 在 JDK 8 中摒弃了原有的 S…...

windows10 系统显示mov文件格式缩略图

最近做视频剪辑&#xff0c;有些mov格式文件&#xff0c;但是尝试用各种播放器默认播放&#xff0c;都没有缩略图可看&#xff0c; 很影响查看。 遂选择了个插件&#xff0c;来在windows10系统显示mov文件的缩略图。 1.下载安装 K-Lite Codec Pack &#xff08;安装时一路Ne…...

力扣智慧思想小题,目录力扣.跳跃游戏(思想很重要)力扣.跳跃游戏II(还是思想)力扣.分发糖果力扣151.反转字符串中的单词力扣.轮转数组

目录 力扣.跳跃游戏(思想很重要) 力扣.跳跃游戏II&#xff08;还是思想) 力扣.分发糖果 力扣151.反转字符串中的单词 力扣.轮转数组 字符 a97 A65; JRE:Java运行时候的环境 JDK: JAVA开发套件(工具包) java原本是.java文件&#xff0c;编译成.class字节码文件 八种基本数据…...

【LangChain基础系列】深入全面掌握文本分类

文本分类是自然语言处理领域中的一个重要任务,旨在将文本数据自动归类到预定义的类别中。它是实现信息检索、智能推荐、情感分析等应用的基础技术之一。 应用场景 1. 垃圾邮件过滤 &#xff1a;自动识别并过滤垃圾邮件。 2. 情感分析 &#xff1a;分析用户评论或社交媒体内容…...

AI赋能高频PCB信号完整性优化

在5G通信、自动驾驶、卫星导航等高频技术快速迭代的今天&#xff0c;**信号完整性&#xff08;SI&#xff09;**已成为高频PCB设计的核心挑战。如何在高密度布线、复杂电磁环境中实现信号的精准传输&#xff1f;猎板PCB通过**AI驱动设计优化**、**材料与工艺创新**以及**智能化…...

如何从播放器构造角度研究 Media3 源码

Jetpack Media3 是 Android 提供的现代化媒体播放库。 Media3 的核心组件包括&#xff1a; ExoPlayer&#xff1a;播放器核心&#xff0c;负责协调媒体播放。MediaSource&#xff1a;定义媒体来源&#xff08;如 DASH、HLS、Progressive&#xff09;。TrackSelector&#xff…...

大模型深度思考与ReAct思维方式对比

大模型的「深度思考」与「ReAct思维方式」虽然都涉及复杂推理过程&#xff0c;但并非完全等同的概念。它们在目标、机制和应用场景上存在显著差异&#xff0c;以下是具体分析&#xff1a; 一、概念本质差异 深度思考&#xff08;Deep Reasoning&#xff09; 定义&#xff1a;泛…...

视频编解码学习六之视频采集和存储

视频采集的核心原理是用光学元件&#xff08;如摄像头&#xff09;将光信号转换为电信号进行传输和存储。 摄像头的主要功能是将光学图像转换为电信号&#xff08;模拟或数字&#xff09;&#xff0c;核心流程如下&#xff1a; 1. 光学成像 镜头组&#xff1a;聚焦光线到感光…...

Linux开发工具【中】

目录 一、vim 1.1 插入模式 1.2 底行模式 1&#xff09;set nu 2&#xff09;set nonu 3&#xff09; /XXX n 4&#xff09;&#xff01;command 5&#xff09;vs other 1.3 补充 1&#xff09; 批量化操作 2&#xff09;批量化替换 : 3&#xff09;快速定位&am…...

Django之账号登录及权限管理

账号登录及权限管理 目录 1.登录功能 2.退出登录 3.权限管理 4.代码展示合集 这篇文章, 会讲到如何实现账号登录。账号就是我们上一篇文章写的账号管理功能, 就使用那里面已经创建好的账号。这一次登录, 我们分为三种角色, 分别是员工, 领导, 管理员。不同的角色, 登录进去…...

深度学习Y7周:YOLOv8训练自己数据集

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、配置环境 1.官网下载源码 2.安装需要环境 二、准备好自己的数据 目录结构&#xff1a; 主目录 data images&#xff08;存放图片&#xff09; annotati…...

2025年渗透测试面试题总结-某服面试经验分享(附回答)(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 1. 协议类型 2. OSI七层模型 3. 网络层协议 4. HTTP请求头 5. 常见端口 6. 中间件解析漏洞 7. CS…...

手写Promise的静态方法

最近对promise原理的理解&#xff0c;手写下其中的静态方法。 手写Promise的静态方法 1. Promise.resolve2. Promise.reject3. Promise.all4. Promise.any5. Promise.race6. Promise.allSettled 1. Promise.resolve 首先就是resolve方法&#xff0c;它会接收一个值&#xff0…...

Python Cookbook-7.8 使用 Berkeley DB 数据库

任务 你想将一些数据做持久化处理&#xff0c;而且也想体验一下BerkeleyDB数据库的简洁和高效。 解决方案 如果以前在你的计算机中安装过 BerkeleyDB&#xff0c;Python标准库附带的bsddb包(以及可选的 bsddb3&#xff0c;用于访间Berkeley DBrelease 3.2数据库)可以被用来作…...

云手机虚拟地址技术的运营场景

云手机虚拟地址技术通过模拟地理位置&#xff08;GPS/IP地址&#xff09;与设备指纹&#xff0c;结合云端虚拟化能力&#xff0c;在多个商业场景中实现突破性应用。以下是其核心运营场景及技术实现路径的深度解析&#xff1a; 一、跨境电商与区域化运营 本地化合规与流量突破 目…...

操作符详解(2)

目录 9 结构成员访问操作符 9.1.2 结构体变量的定义和初始化 9.2 结构体成员的直接访问 10 操作符的属性&#xff1a;优先级、结合性 10.1 优先级 11 表达式求值 11.1 整型提升 11.2 算术转换 11.3 问题表达式解析 11.3.1 表达式1 11.3.2 表达式2 11.3.3 表达式3 1…...

责任链设计模式

一、核心接口定义 MyAbstractChainHandler<T> 接口继承自 Ordered 接口&#xff0c;用于实现链式处理逻辑。 import org.springframework.core.Ordered;public interface MyAbstractChainHandler<T> extends Ordered {void handle(T requestParam);String getCha…...

【银河麒麟高级服务器操作系统】服务器外挂存储ioerror分析及处理分享

更多银河麒麟操作系统产品及技术讨论&#xff0c;欢迎加入银河麒麟操作系统官方论坛 forum.kylinos.cn 了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;product.kylinos.cn 开发者专区&#xff1a;developer.kylinos.cn 文档中心&a…...

麒麟信安举办特种行业核心代理商中级技术认证培训班

近日&#xff0c;麒麟信安举办为期一周的特种行业核心代理商中级技术认证培训班&#xff0c;吸引了众多来自各地代理商公司的技术骨干踊跃参与。 此次培训班旨在赋能合作伙伴&#xff0c;助力其深入理解并熟练运用麒麟信安产品的核心优势&#xff0c;进一步提升在特种行业中的业…...

非对称加密:为什么RSA让“公开传密”成为可能

在1977年之前&#xff0c;加密世界遵循一个铁律&#xff1a;想要安全通信&#xff0c;必须先秘密交换密钥。无论是凯撒密码还是二战时的恩尼格玛机&#xff0c;都依赖发送方和接收方预先共享同一把“钥匙”。但RSA算法的出现颠覆了这一规则——它让陌生人可以在完全公开的环境下…...

阿里云ddos云防护服务器有哪些功能?ddos防御手段有哪些??

阿里云ddos云防护服务器有哪些功能?ddos防御手段有哪些&#xff1f;&#xff1f; DDoS&#xff08;分布式拒绝服务&#xff09;云防护服务器通过多种技术和策略来抵御大规模网络攻击&#xff0c;确保服务的高可用性。以下是其主要功能和防御手段的详细说明&#xff1a; 一、D…...

如何防止域名DNS被劫持?

防止域名DNS被劫持需要综合技术手段和管理措施&#xff0c;以下是一份详细的防护方案&#xff1a; --- ### **一、基础防护措施** 1. **选择可靠的域名注册商和DNS服务商** - 优先选择支持DNSSEC、提供多因素认证&#xff08;MFA&#xff09;的知名服务商&#xff08;如Cl…...

桥隧坡灾害监测报警:用科技筑起生命安全的“智能防线”

.2024年&#xff0c;梅大高速茶阳路段高边坡塌方事件造成重大伤亡&#xff0c;举国痛心。这场悲剧再次敲响警钟&#xff1a;桥梁、隧道、边坡等高风险区域的实时监测与精准报警&#xff0c;已成为交通安全的生命线。如何用技术手段在灾害发生前“抢跑”&#xff0c;第一时间阻断…...

K8S常见问题汇总

一、 驱逐 master 节点上的所有 Pod 这会“清空”一个节点&#xff08;包括 master&#xff09;上的所有可驱逐的 Pod&#xff1a; kubectl drain <master-node-name> --ignore-daemonsets --delete-emptydir-data--ignore-daemonsets&#xff1a;保留 DaemonSet 类型的…...

ideal创建Springboot项目(Maven,yml)

以下是使用 IntelliJ IDEA 创建基于 Maven 的 Spring Boot 项目并使用 YAML 配置文件的详细步骤&#xff1a; 一、创建 Spring Boot 项目 启动项目创建向导 打开 IntelliJ IDEA&#xff0c;点击“File”->“New”->“Project”。 在弹出的“New Project”窗口中&#…...

解决:‘java‘ 不是内部或外部命令,也不是可运行的程序-Java环境变量配置(含JDK8、JDK21安装包一站式配置)

在使用命令行运行 .jar 文件时&#xff0c;很多用户会遇到如下错误提示&#xff1a; java 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 这个报错表明系统无法识别 java 命令&#xff0c;通常是由于 Java 没有正确安装&#xff0c;或是系统环境变量没有配…...

android.app.Fragment和androidx.fragment:fragment的区别

android.app.Fragment 与 androidx.fragment.app.Fragment 的区别 这两个 Fragment 实现代表了 Android 碎片化开发的两个时代&#xff0c;以下是它们的核心区别&#xff1a; 一、起源与演变 android.app.Fragmentandroidx.fragment.app.Fragment引入时间Android 3.0 (API 1…...

OrangePi Zero 3学习笔记(Android篇)3 - 串口

目录 1. 找到串口号 2. 修改串口权限 3. 串口类 3.1 serialport.hpp 3.2 serialport.cpp 3.2.1 构造函数 3.2.2 Open函数 3.2.3 Close函数 3.2.4 Write函数 3.2.5 Read函数 3.2.6 SetFlowCtrl函数 4. 测试程序 5. 编译 6. 运行验证 除了默认的UART用于shell&…...

Node.js 技术原理分析系列9——Node.js addon一文通

Node.js 是一个开源的、跨平台的JavaScript运行时环境&#xff0c;它允许开发者在服务器端运行JavaScript代码。Node.js 是基于Chrome V8引擎构建的&#xff0c;专为高性能、高并发的网络应用而设计&#xff0c;广泛应用于构建服务器端应用程序、网络应用、命令行工具等。 本系…...

HBuilderX安卓真机运行安装失败解决汇总

前置方案 1. 确认USB调试和连接模式 &#xff08;1&#xff09;开启USB调试&#xff1a;进入手机设置 > 开发者选项 > 确保USB调试已开启&#xff08;如无开发者选项&#xff0c;连续点击“版本号”激活&#xff09;。 &#xff08;2&#xff09;连接模式&#xff1a;将…...

TensorFlow 2.x入门实战:从零基础到图像分类项目

TensorFlow 2.x入门实战&#xff1a;从零基础到图像分类项目 前言 TensorFlow是Google开发的开源机器学习框架&#xff0c;已成为深度学习领域的重要工具。TensorFlow 2.x版本相比1.x有了重大改进&#xff0c;更加易用且功能强大。本文将带你从零开始学习TensorFlow 2.x&…...

SpringBoot+Dubbo+Zookeeper实现分布式系统步骤

SpringBootDubboZookeeper实现分布式系统 一、分布式系统通俗解释二、环境准备&#xff08;详细版&#xff09;1. 软件版本2. 安装Zookeeper&#xff08;单机模式&#xff09; 三、完整项目结构&#xff08;带详细注释&#xff09;四、手把手代码实现步骤1&#xff1a;创建父工…...

数据中台-常用工具组件:DataX、Flink、Dolphin Scheduler、TensorFlow和PyTorch等

数据实施服务工具组件概览 数据中台的数据实施服务涵盖 数据采集、处理、调度、分析与应用 全流程&#xff0c;以下为关键工具组件及其作用&#xff1a; 工具类型核心功能典型应用场景DataX离线数据采集多源异构数据批量同步数据仓库ODS层数据导入Apache Flink实时计算引擎流…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】电商数据分析案例-9.2 流量转化漏斗分析

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 9.2 流量转化漏斗分析&#xff1a;从数据清洗到可视化全流程实战一、背景与目标二、数据准备与清洗2.1 数据来源与字段说明2.2 数据清洗步骤2.2.1 去除无效数据2.2.2 处理时…...

结合Splash与Scrapy:高效爬取动态JavaScript网站

在当今的Web开发中&#xff0c;JavaScript的广泛应用使得许多网站的内容无法通过传统的请求-响应模式直接获取。为了解决这个问题&#xff0c;Scrapy开发者经常需要集成像Splash这样的JavaScript渲染引擎。本文将详细介绍Splash JS引擎的工作原理&#xff0c;并探讨如何将其与S…...

[计算机科学#10]:早期的计算机编程方式

【核知坊】&#xff1a;释放青春想象&#xff0c;码动全新视野。 我们希望使用精简的信息传达知识的骨架&#xff0c;启发创造者开启创造之路&#xff01;&#xff01;&#xff01; 内容摘要&#xff1a;1804年&#xff0c;为了在织布机上编织出丰富多彩的…...

JAVA:Spring Boot 集成 Lua 的技术博客

1、简述 在现代开发中,Lua 以其轻量级、高性能以及易嵌入的特点广泛用于脚本扩展、游戏开发以及配置处理场景。将 Lua 与 Spring Boot 集成,可以在 Java 项目中实现动态脚本功能,增强项目的灵活性和动态配置能力。 样例代码: https://gitee.com/lhdxhl/springboot-example…...

代码随想录算法训练营 Day40 动态规划Ⅷ 股票问题

动态规划 题目 121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; 使用二维 dp 数组表示 1. dp[i][0] 表示持有股票的最大金额&#xff0c;dp[i][1] 表示不持有股票的最大金额&#xff0c;表示盈利结果 2. 递推公式由前一天持有金额和是否买股票决定 决定是否…...

【已解决】WORD域相关问题;错误 未找到引用源;复制域出错;交叉引用域到底是个啥

&#xff08;微软赶紧倒闭 所有交叉引用域&#xff0c;有两个状态&#xff1a;1.锁定。2.手动。可通过编辑->链接查看。 “锁定”状态域的能力&#xff1a; 1. 导出PDF格式稳定&#xff08;【已解决】WORD导出PDF时&#xff0c;参考文献上标自动被取消/变为正常文本_word…...

小米 MiMo 开源:7B 参数凭什么 “叫板” AI行业巨头?

目录 一、技术革命的起点&#xff1a;小米AI战略的“破局者” 1.1 战略背景&#xff1a;从硬件厂商到AI基础设施提供商 1.2 团队揭秘&#xff1a;“天才少女”罗福莉与小米AI梦之队 二、技术架构解析&#xff1a;7B参数如何实现“推理跃迁” 2.1 核心技术原理 2.2 技术指…...

构建高可用性的LVS-DR群集:实现无缝的负载均衡与故障转移

目录 一、LVS-DR集群 1.LVS-DR工作原理 2.数据包流向分析 3.LVS-DR模式特点 二、直接路由模式&#xff08;LVS-DR&#xff09; 1.资源清单 2.配置负载调度器(lvs) 3.配置节点服务器(web1、web2) 4.测试LVS群集 5.使用NFS发布共享资源&#xff08;nfs上&#xff09; …...

低光图像增强新色彩空间HVI:技术突破与创新解析(HVI: ANewColor Space for Low-light Image Enhancement)

摘要 低光图像增强&#xff08;LLIE&#xff09;是计算机视觉领域的关键任务&#xff0c;旨在从受损的低光图像中恢复细节信息。针对现有方法在标准RGB&#xff08;sRGB&#xff09;空间易产生色偏与亮度伪影的问题&#xff0c;以及HSV色彩空间转换引发的红/黑噪声问题&#xf…...

Abaqus学习笔记

目录 Abaqus介绍 学习资源 ​编辑Abaqus/CAE abaqus下载安装 abaqus基本操作 Abaqus启动 新建模型 ​编辑 ​编辑修改界面背景 ​编辑​编辑结果信息的显示与否 ​编辑计算结果信息字体设置 ​编辑允许多绘图状态 单位量纲 视图操作 事前说明 ODB文件 本构关系…...

AquaCrop 模型新视角:多技术助力农业精准水管理

技术点目录 模型原理介绍与数据要求及模型分析数据制备、模型运行与案例实践&#xff08;界面GUI版本&#xff09;模型优化与敏感性分析&#xff08;基于R语言实践&#xff09;源代码分析&#xff08;基于FORTRAN&#xff09;未来气候变化影响分析与案例实践&#xff08;基于Py…...

从知识图谱到精准决策:基于MCP的招投标货物比对溯源系统实践

前言 从最初对人工智能的懵懂认知,到逐渐踏入Prompt工程的世界,我们一路探索,从私有化部署的实际场景,到对DeepSeek技术的全面解读,再逐步深入到NL2SQL、知识图谱构建、RAG知识库设计,以及ChatBI这些高阶应用。一路走来,我们在AI的领域里一步一个脚印,不断拓展视野和能…...

【平面波导外腔激光器专题系列】1064nm单纵模平面波导外腔激光器‌

摘要&#xff1a;我们介绍了平面波导外腔二极管激光器 (PW-ECL) 的特性。据我们所知&#xff0c;这是第一款蝶形封装的 1064nm半导体激光器&#xff0c;其可以稳定锁定到外部参考频率。我们从精密实验的角度评估了它的性能&#xff0c;特别是使用碘的超精细吸收线&#xff0c;在…...

C++ 算法学习之旅:从入门到精通的秘籍

在编程的浩瀚宇宙中&#xff0c;C 算法宛如璀璨的星辰&#xff0c;照亮我们前行的道路。作为一名 C 算法小白&#xff0c;或许你和我一样&#xff0c;怀揣着对算法的好奇与憧憬&#xff0c;却又在学习的道路上感到迷茫。别担心&#xff0c;今天我就和大家分享一下如何学习各种基…...

按摩椅上的气囊系统 是现代按摩椅中非常关键的组成部分,它与机芯系统相辅相成,为用户提供全方位、更接近真人按摩的体验

按摩椅上的气囊系统是现代按摩椅中非常关键的组成部分&#xff0c;它与机芯系统相辅相成&#xff0c;为用户提供全方位、更接近真人按摩的体验。 一、按摩椅气囊的产生背景 1. 传统按摩方式的局限 早期的按摩椅主要依赖机械式的“凸轮电机”或简单的机芯滚轮结构&#xff0c;…...