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

VUE基础快速入门

VUE 和 VUE-Cli

在这里插入图片描述

  • VUE 是一种流行的渐进式JavaScript框架,用于构建Web用户界面
  • 它具有易学、轻量级、灵活性强、高效率等特点,并且可以与其他库和项目集成
  • 是目前最流行的前端框架之一
  • VUE-Cli 称为“VUE脚手架”,它是由VUE官方提供的客户端,专门为单页面应用快速搭建的脚手架
  • 使用它可以轻松的创建新的应用程序,而且可以自动生成vue和webpack工程模板

前端工程分类

前端工程分为单页面架构和多页面架构

  1. 多页面架构(传统方案):
    指工程中存在多个*.html 文件,每一个页面对应一个 html 文件
  2. 单页面架构(VUE 脚手架工程):
    指工程中只有一个 html 页面文件,通过一个 html 页面中的内容改变实现多页面的效果
    每个页面至少对应一个*.vue 文件
    用户的URL只对应一个页面,我们可以随时替换这个页面的内容,方便更新
    在这里插入图片描述
    每个页面可以由多个部分组成,每个部分都可以按需替换
    局部替换的做法,也反向实现了页面某些部分的"复用"

在这里插入图片描述
注意:

  1. html 文件是页面全部内容,vue 文件可能是页面的一个部分,也能是页面的所有内容
  2. 两种方式对用户体验没有影响,不论哪种方式在用户端是一样的

在这里插入图片描述
2. IDEA工具VUE工程初始化

  1. 确保IDEA中有vue插件

在这里插入图片描述

  1. 通过 IDEA 的 Terminal 工具,在工程的根目录下,执行 vue create 工程名 来创建工程
  2. 通过 cd 工程名 指令 进入到创建的 vue 工程目录下
  3. 启动工程: npm run serve
  4. 停止工程:Ctrl+C 输入 Y 回车
  5. 修改端口号:在 package.json 文件的第 6 行修改:
"serve": "vue-cli-service serve --port 9090",
  1. VUE项目工程结构解析
    项目中需要大家关注的主要内容:

  2. public 文件夹:里面存放静态资源文件,如:图片/视频等

  3. src/router/index.js:路由配置文件,在里面配置请求地址和 VUE 组件的映射关系

  4. src/views:在里面创建对应每个页面的*.vue 文件

  5. App.vue:此组件工程启动后自动挂载到 index.html 页面的组件,可以理解为工程的入口

  6. main.js:当需要引入其他框架或对进行配置时使用此文件

  7. package.json:修改端口号

  8. 新view.vue 的创建方式

  9. 在 v1/src/App.vue中添加新view文件的router-link链接
    在这里插入图片描述

  10. 在v1/src/views文件夹下创建一个新的VueComponent(也就是.vue文件)

在这里插入图片描述
3. 编写新创建好的.vue文件

  1. template标签中放的是HTML
  2. style标签中放的是CSS
  3. script标签中放的是JS
    注意:vue3的script开始标签中必须要有setup,否则代码不生效!
    在这里插入图片描述
    在这里插入图片描述
  4. 还需要在v1/src/router/index.js文件中配置路由跳转的路径
  5. path就是App.vue中router-link标签中to属性的值
  6. 箭头函数加载的就是对应的.vue文件的路径
    在这里插入图片描述
  7. 写完可以启动项目访问:http://localhost:9090/ 进行测试,如果看到了下图所示的内容,则表明配置成功了

在这里插入图片描述
5. MVC 与 MVVM
MVC 设计模式就是将实现前端业务的所有代码划分为三部分

  • M: Model 模型 , 对应数据相关代码
  • V: View 视图, 对应的是页面标签相关
  • C: Controller 控制器, 对应的是将数据显示到页面中的过程代码
    MVC 设计模式的弊端: Controller 需要频繁的进行 DOM 相关操作(遍历查找元素),比较浪费资源
    MVVM 设计模式就很好的解决了这个问题:
    MVVM 设计模式也是将实现前端业务的所有代码划分为三部分
  • M: Model 模型 , 对应数据相关代码(数据)
  • V: View 视图, 对应的是页面标签相关(页面)
  • VM:ViewModel 视图模型,直接将页面元素与变量进行绑定
    • 视图模型负责将页面中可能发生改变的元素和某个变量在内存中进行绑定
    • 对变量进行监听,当变量发生改变时,会从内存中找到和变量所对应的元素, 让元素进行改动
      这样就不用像 MVC 设计模式中通过遍历查找的方式查找元素了,大大提高了执行的效率

在这里插入图片描述
6. VUE指令练习
6.1 文本相关指令练习 AView.vue

  1. const info = ref(“文本相关的内容”); 定义响应式变量,注意需要导入!
  2. {{变量}} 插值,让此处的文本内容与变量进行绑定
  • v-text=“响应式变量名”:将文本内容与变量进行绑定
  • v-html=“响应式变量名”:将标签内容与变量进行绑定
  1. 关于写法:
  2. 响应式变量的导入语句: import {ref} from “vue”;
  3. 在JS代码中使用响应式变量: console.log(info.value);
  4. 箭头函数: const f = (参数列表)=>{方法体}
<template>
<h1>我是第一个页面</h1>
<!-- 插值指令:将页面显示的文本与响应式变量的值进行绑定
如果修改变量的值,页面显示的文本也会随之改变-->
<span>{{info}}</span>
<p>{{info}}</p>
<h1>{{info}}</h1>
<!-- 响应式变量的值还可以拼接 -->
{{info+'大家好呀!'}}
<hr>
<p v-text="info"></p> <!-- v-text渲染文本内容-->
<p v-html="info"></p> <!-- v-html若有html元素,会按照元素效果进行渲染-->
<button @click="f">点我</button> <!-- 点击事件@click -->
</template><script setup>
import {ref} from "vue";
//1.定义响应式变量,注意:必须导入!
const info = ref('我是info666');
//2.箭头函数
const f = ()=>{
info.value = '我是<mark>info2</mark>';//在JS中使用响应式变量的值,必须.value!!!
}</script><style scoped></style>

6.2 属性绑定练习 BView.vue

  • v-bind:属性名=“变量名”
  • 让HTML元素的 xxx 属性的值与变量值进行绑定
  • 可以简写成 :属性名=“变量名”
<template><h1>属性绑定练习</h1><input type="text" value="kk"> <!--输入框默认值设置为kk--><input type="text" value="info"> <!--输入框默认值设置为info--><input type="text" v-bind:value="info"> <!--输入框value属性与响应式变量info绑定--><input type="text" :value="info"> <!--属性绑定可以简写 去掉前面的v-bind--><hr><a href="url">超链接1</a><a :href="url">超链接2</a>
</template>
<script setup>
import {ref} from "vue";const info = ref('属性绑定999')const url = ref('https://www.jd.com')
url.value = 'https://www.baidu.com';
</script><style scoped></style>

6.3 双向绑定练习 CView.vue
在这里插入图片描述

  1. 双向绑定:页面中的内容发生改变,变量的值也会随之改变
  2. v-model=“变量名” 除了这个其他都是单向绑定
  3. 当需要获取用户输入的内容时使用(输入框/单选/多选/下拉选框等)
  • 之前 DOM 操作需要先获取 html 元素,再获取 html 元素的值,效率较低
  • 现在使用 MVVM 的方式:当页面的值发生改变,变量保存的值也会立即随之改变,可以直接使用
  • 双向绑定的数据会实时更新,但注意用户输入也会影响绑定的数据
<template><h1>双向绑定指令</h1>{{info}}<input type="text" :value="info"><hr><!-- 双向绑定:将页面与下方变量info进行绑定1)info变量的值会显示在绑定的html元素上2)页面html元素发生改变,绑定的info变量的值也会随之改变--><input type="text" v-model="info"><h3>登录页面</h3><input type="text" placeholder="请输入用户名" v-model="user.username"><input type="password" placeholder="请输入密码" v-model="user.password"><br>性别:<input type="radio" name="gender" value="1" v-model="user.gender"><input type="radio" name="gender" value="0" v-model="user.gender"><button @click="f()">登录</button>
</template><script setup>
import {ref} from "vue";
const info = ref('测试数据');
const user = ref({username:'tom',password:'123',gender:"0"})
const f = ()=>{console.log(user.value);console.log(user.value.username);console.log(user.value.password);console.log(user.value.gender);
}
</script><style scoped></style>

6.4 事件绑定练习 DView.vue

  • @click=“f()” 与 v-on:click=“f()” 都是绑定点击事件
  • @keydown.enter=“ent()” 表示绑定敲回车事件
<template><h1>事件绑定指令</h1><!-- 下面两种写法是等价的,我们一般用第2种 --><button v-on:click="f()">按钮</button><button @click="f()">按钮2</button><h3>敲回车事件</h3><input type="text" placeholder="请搜索你喜欢的影片"@keydown.enter="ent()" v-model="search">
</template><script setup>
import {ref} from "vue";
const search = ref('');
const ent = ()=>{alert('您想搜索的内容是:'+search.value);
}const f = ()=>{alert('点击了!');
}
</script><style scoped></style>
6.5 循环指令练习 EView.vue
- v-for="元素 in 数组"  遍历数组 遍历时会生成当前遍历到的元素
- v-for="元素 in 数字n"  遍历数组 从1到数字n,步长为1,数字n可以自定义
- v-for="(元素,下标) in 数组"  第2个参数是当前遍历到的元素下标,从0开始
<template><h1>循环指令</h1><ul><!-- 循环遍历arr数组,uname就是本轮循环遍历到的元素 --><li v-for="uname in arr">{{uname}}</li></ul><ol><!-- 从1开始遍历,一直到数字5,固定每次++,结束数字5可以自定义 --><li v-for="item in 5">{{item}}</li></ol><table border="1px"><caption>商品列表</caption><tr><th>序号</th><th>商品名称</th><th>商品价格</th><th>商品库存</th><th>操作</th></tr><tr v-for="(item,index) in productArr"><td>{{index+1}}</td><td>{{item.title}}</td><td>{{item.price}}</td><td>{{item.num}}</td><td><button @click="del(index)">删除</button></td></tr></table>
</template><script setup>
import {ref} from "vue";const arr = ref(["张三","李四","王五","赵六","钱七"]);const productArr = ref([{title:'小米手机',price:5000,num:800},{title:'华为手机',price:6000,num:900},{title:'苹果手机',price:7000,num:100},{title:'OPPO手机',price:8000,num:200},
]);const del = (index)=>{if(confirm('您确认要删除此条数据吗?')){//删除数组中的元素,从当前index开始,删1个元素productArr.value.splice(index,1);}
}
</script><style scoped></style>

6.6 隐藏显示指令练习 FView.vue
v-if=“变量”:控制元素是否显示

  • true 显示,false 不显示
  • 直接在DOM中跳过该元素渲染,HTML代码中没有该元素
  • 元素首次渲染需要复杂计算或初始化,v-if初次加载的速度快,推荐使用
    v-else: 和最近的未关闭的 v-if 状态取反
    v-show=“变量”:控制元素是否显示
  • true 显示,false 不显示(隐藏元素)
  • 通过设置CSS display:none;让元素消失
  • 当元素需要频繁修改显示状态时推荐使用,不用多次新建删除元素,开销较小
<template><h1>隐藏显示指令</h1><!-- v-if="布尔值" true元素显示 false元素消失false表示该元素不会被渲染到DOM中,会直接跳过这部分内容的渲染 --><p v-if="true">张三</p><p v-if="false">李四</p><p>王五</p><hr><p v-if="isShow">月亮</p><p v-if="isShow">星星</p><!-- v-else是v-if取反 它会找离自己最近的v-if进行取反 --><p v-else>太阳</p><hr><!-- v-if是直接在DOM中跳过该元素渲染,HTML代码中没有该元素 --><p v-if="false">小绿</p><!-- v-show是修改元素的CSS属性display:none;在频繁切换是否显示时才推荐,性能更好 --><p v-show="false">小红</p>
</template><script setup>
import {ref} from "vue";const isShow = ref(false);
</script><style scoped></style>
6.7 计算器练习 GView.vue<template><h1>计算器练习</h1><input type="text" placeholder="请输入数字1" v-model="a"/><input type="text" placeholder="请输入数字2" v-model="b"/><hr><button @click="calc('+')"></button><button @click="calc('-')"></button><button @click="calc('*')"></button><button @click="calc('/')"></button><h4>运算结果:{{result}}</h4>
</template><script setup>
import {ref} from "vue";
//定义响应式变量
const a = ref('');
const b = ref('');
const result = ref('');
//定义箭头函数
const calc = (o)=>{//响应式变量在JS中使用必须.value!//eval("5*2") 结果为10 将字符串形式的算式转为JS进行运算result.value = eval(a.value+o+b.value);
}
</script><style scoped></style>

6.8 猜数字练习 HView.vue

<template><h1>猜数字练习</h1><input type="text" placeholder="请输入1~100之间的整数" v-model="num"><button @click="guess()">猜一猜</button><h3>{{result}}</h3>
</template><script setup>
import { ref } from 'vue';
const num = ref('');
const result = ref('');
//生成一个随机数
let x = parseInt(Math.random()*100)+1;
console.log(x);
const guess = ()=>{if(num.value>x){result.value='猜大了';}else if(num.value<x){result.value='猜小了';}else{result.value='猜对了';}
}
</script><style scoped></style>
6.9 员工列表练习 IView.vue
```html
<template><h1>员工列表练习</h1><input type="text" placeholder="请输入员工姓名" v-model="e.name"><input type="text" placeholder="请输入员工工资" v-model="e.salary"><input type="text" placeholder="请输入员工岗位" v-model="e.job"><button @click="add()">点我添加</button><hr><table border="1px"><tr><th>员工编号</th><th>员工姓名</th><th>员工工资</th><th>员工岗位</th></tr><tr v-for="(emp,i) in arr"><td>{{i+1}}</td><td>{{emp.name}}</td><td>{{emp.salary}}</td><td>{{emp.job}}</td></tr></table>
</template><script setup>
import {ref} from "vue";const e = ref({name:'',salary:'',job:''});
const arr = ref([]);
const add = ()=>{//如果输入框有空值,不允许新增!if(e.value.name.trim()=='' || e.value.salary.trim()=='' || e.value.job.trim()==''){alert('请输入完整信息');return;}//每准备好一个员工数据,就存入arr数组中arr.value.push(e.value);//新增成功后,清空所有输入框e.value = {name:'',salary:'',job:''};//e.value = {};
}</script><style scoped></style>
6.10 个人简历练习
<template><h1>个人简历练习</h1><table border="1px"><tr><td>照片:</td><td><img :src="person.imgUrl" width="100"></td></tr><tr><td>姓名:</td><td>{{person.name}}</td></tr><tr><td>年龄:</td><td>{{person.age}}</td></tr><tr><td>好友:</td><td><ul><li v-for="fName in person.friends">{{fName}}</li></ul></td></tr></table><button @click="loadData()">点击加载数据</button>
</template><script setup>
import {ref} from "vue";//准备一个空对象用来保存数据
const person = ref({name:'',age:'',imgUrl:'',friends:[]});
const loadData = ()=>{person.value = {name:'传奇哥',age:18,imgUrl:'fcq.jpg',friends:['李四','王五','赵六']}
}
</script><style scoped></style>
  1. VUE指令总结
  2. {{变量}}:插值,让此处的文本内容和变量进行绑定
  3. v-text=“变量”:让元素的文本内容和变量进行绑定
  4. v-html=“变量”:让元素的 html 标签内容和变量进行绑定
  5. v-bind:属性名=“变量”:让 xxx 属性的值和变量进行绑定,简写是把 v-bind 去掉
  6. v-model=“变量”:让控件的值和变量进行双向绑定
    应用场景:当需要获取用户输入内容时使用
    (当变量的值改变时,控件的值会随之改变;当控件中用户输入的值改变时,变量的值也会随之改变)
  7. v-on:事件名=“方法”:事件绑定,简写@事件名
  8. v-for=“(变量,下标) in 数组”:循环遍历指令,遍历的过程中生成遍历到的当前元素
  9. v-if=“变量”:控制元素是否显示,true 显示,false 不显示(直接不渲染该元素)
  10. v-else 和 v-if 的状态取反
  11. v-show=“变量”:控制元素是否显示,true 显示,false 不显示(隐藏元素)

相关文章:

VUE基础快速入门

VUE 和 VUE-Cli VUE 是一种流行的渐进式JavaScript框架&#xff0c;用于构建Web用户界面它具有易学、轻量级、灵活性强、高效率等特点&#xff0c;并且可以与其他库和项目集成是目前最流行的前端框架之一VUE-Cli 称为“VUE脚手架”,它是由VUE官方提供的客户端&#xff0c;专门为…...

用Python实现特征工程之特征提取——数值特征提取、类别特征提取、文本特征提取、时间特征提取

特征提取是特征工程中的关键步骤&#xff0c;它从原始数据中提取有意义的特征&#xff0c;以便机器学习模型能够更好地理解和学习数据。根据数据类型&#xff0c;特征提取可以分为数值特征提取、类别特征提取、文本特征提取和时间特征提取。下面详细讲解每种特征提取方法&#…...

按图搜索新体验:阿里巴巴拍立淘API返回值详解

阿里巴巴拍立淘API是一项基于图片搜索的商品搜索服务&#xff0c;它允许用户通过上传商品图片&#xff0c;系统自动识别图片中的商品信息&#xff0c;并返回与之相关的搜索结果。以下是对阿里巴巴拍立淘API返回值的详细解析&#xff1a; 一、主要返回值内容 商品信息 商品列表…...

vue跨域问题

本地调试 可以通过在vue.config.js中配置devServer来实现跨域请求。 module.exports {publicPath: ./,productionSourceMap: false, // 生产环境是否生成 sourceMap 文件devServer: {proxy: {/bi: {target: http://1.11.113.20:1234/bi, // 后台接口域名ws: false, //…...

【NLP】文本处理的基本方法【jieba分词、命名实体、词性标注】

文章目录 1、本章目标2、什么是分词3、jieba的使用3.1、精确模式分词3.2、全模式分词3.3、搜索引擎模式分词3.4、中文繁体分词3.5、使用用户自定义词典 4、什么是命名实体识别5、什么是词性标注6、小结7、jieba词性对照表⭐ &#x1f343;作者介绍&#xff1a;双非本科大三网络…...

unity 本地使用Json(全套)

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神不吝指教&#xff01; 文章目录 前言一、Json是什么&#xff1f;二、创建Json文件1.在线编辑并转实体类&#xff08;C#&#xff09;2.Json文件 三、解析Json并使用四、报错&#xff1a;JsonError&#xff1a;JsonExce…...

java消息队列ActiveMQ

安装 前置条件 activemq的运行依赖于jdk&#xff0c;需要提前安装jdk如果已经安装了jdk&#xff0c;需要根据jdk的版本来选择对应的版本进行安装activemq版本对应在官网上&#xff0c;使用java -version 看jdk的版本注意&#xff1a;jdk和mq的版本不一致会报错&#xff0c;电脑…...

Android SurfaceFlinger——信号同步原理(五十一)

经过前面系列文章的学习,我们的已经理解了 SurfaceFlinger 运行机制以及同步机制,但是SurfaceFlinger 又是以什么方法是把需要刷新的信号发送给 App 进程的。 一、VSync简介 垂直同步(Vertical Synchronization,简称 VSync)是一种用于同步视频信号和显示设备刷新率的技术…...

html+css网页制作 博云丝网5个页面 无js ui还原度100%

htmlcss网页制作 博云丝网5个页面 无js ui还原度100% 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取…...

Docker Hub 镜像代理加速

因为未知原因&#xff0c;docker hub 已经不能正常拉取镜像&#xff0c;可以使用以下代理服务来进行&#xff1a; "https://docker.m.daocloud.io", "https://noohub.ru", "https://huecker.io", "https://dockerhub.timeweb.cloud"…...

矩阵:消除冗余

矩阵 基本概念 矩阵&#xff08;Matrix&#xff09;是一个按照行和列排列的元素的二维数组。具体来说&#xff0c;一个 ( m \times n ) 的矩阵有 ( m ) 行和 ( n ) 列&#xff0c;表示为&#xff1a; A ( a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯…...

【AWS账号解绑关联】Linker账号解绑重新关联注意事项

文章目录 一、来自客户疑问二、提交工单获取帮助三、最佳操作说明四、最佳操作步骤五、参考资料活动上新 一、来自客户疑问 将Linker账号&#xff0c;从一个组织中退出&#xff0c;重新关联到新的组织中&#xff0c;这解绑到重新完成新的关联绑定期间会在Linker账号中的账单中…...

入门学习使用overleaf和latex

文章目录 1.下载对应的latex论文模板2.overleaf平台的使用2.1overleaf平台的介绍2.2overleaf平台模板文件的上传2.3latex语法的学习2.3.2 分段(如下图显示)2.3.3 其他2.3.4简单latex实操2.3.5 换行符和换页符2.3.6左右居中对齐2.3.7 字体设置2.3.8插入固定位置图片2.3.9文字包围…...

后端调优——分布式锁选型——入门

文章目录 引言正文分布式锁的定义分布式锁的具体应用场景如何实现分布式锁主动轮询型分布式锁实现思路一、MySQL分布式锁二、Redis分布式锁 监听回调型分布式锁Etcd分布式锁Zookeeper分布式锁 锁的对比 总结 引言 最近面试&#xff0c;一直被问到分布式锁&#xff0c;然后仅仅…...

k8s集群管理 Pod管理命令

k8s集群管理命令 信息查询命令 子命令说明help用于查看命令及子命令的帮助信息cluster-info显示集群的相关配置信息api-resources查看当前服务器上所有的资源对象api-versions查看当前服务器上所有资源对象的版本config管理当前节点上的认证信息 资源对象概述 Pod概述 Pod 管…...

Java 并发(二)—— AQS原理

AQS&#xff0c;全名AbstractQueuedSynchronizer。 抽象队列同步器定义多线程访问共享资源的同步模板&#xff0c;解决了实现自定义同步器时涉及的大量细节问题&#xff0c;简化开发两种同步状态&#xff1a;独占、共享核心组件&#xff1a;State变量、CLH变体队列、获取 / 释…...

Maven插件:exec-maven-plugin-代码执行或者直接输出内置变量信息

文章目录 概述使用应用自行实现记录项目打包插件 概述 官网&#xff1a; https://www.mojohaus.org/exec-maven-plugin/usage.html   依赖&#xff1a; https://mvnrepository.com/artifact/org.codehaus.mojo/exec-maven-plugin 使用 <plugin><groupId>org.codeh…...

https://ffmpeg.org/

https://ffmpeg.org/ https://www.gyan.dev/ffmpeg/builds/ https://github.com/BtbN/FFmpeg-Builds/releases F:\Document_ffmpeg F:\Document_ffmpeg\ffmpeg-master-latest-win64-gpl-shared\bin...

linux 源码部署polardb-x 错误汇总

前言 在linux 源码部署polardb-x 遇到不少错误&#xff0c;特在此做个汇总。 问题列表 CN 启动报错 Failed to init new TCP 详细错误如下 Caused by: Failed to init new TCP. XClientPool to my_polarx#267b21d8127.0.0.1:33660 now 0 TCP(0 aging), 0 sessions(0 runni…...

vscode用快捷键一键生成vue模板

项目中有些代码模块是固定的&#xff0c;如下面的代码所示&#xff0c;为了不重复写这些相同的代码&#xff0c;我们可以使用快键键一键生成模板。 流程&#xff1a; 中文&#xff1a;首选项-> 用户代码片段 -> 输入框中输入vue,找到vue.json文件&#xff08;没有vue.j…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...