学习Vue及项目工程化

学习Vue及项目工程化

  • Vue
  • 快速上手
    • 插值表达式
  • Vue基本命令
    • v-html
    • v-show
    • v-if 和 v-else 和 v-else-if
    • v-on和@click函数调用
    • v-bind
    • v-for
      • 案例--书架
    • v-model
    • 功能总结
  • 综合案例-小黑记事本
    • 列表渲染
    • 删除功能
    • 添加功能
    • 底部统计
    • 清空
  • 项目工程化
    • 更换npm镜像
    • 方式一:在网页是去创建
    • 方式二:在命令行里创建
    • 案例:文章搜索
      • main.js
      • Api.vue
      • Article.vue
      • 优化
        • 接口调用的js代码一般封装在.js文件中,并以函数的形式暴露给外部
          • article.js
          • Article1.vue
        • 定义一个变量,记录公共的前缀,baseURL
        • 拦截器 request.js
          • request.js
          • article1.js
  • element
    • 安装
      • Vue3
      • Vue2
    • 快速上手
      • 完整引入
        • main.js
        • Button.vue
  • 案例
    • 环境准备
    • 跨域
      • 配置代理来解决跨域
    • 优化axios响应拦截器
    • 路由
    • 子路由
    • Bug:前端没有接收token
      • Pinia状态管理库
      • 优化:Axios请求拦截器
    • Bug:刷新时,Pinia数据丢失
      • persist-Pinia持久化插件
    • 未登录处理


Vue

构建用户界面的渐进式框架
在这里插入图片描述

快速上手

创建一个Vue实例

<!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>
</head>
<body>

    <div class="box2">
        {{msg}}
    </div>

    <div class="box">
        {{count}}
    </div>

    <div id="app">
        <!-- 这里将来会编写一些用于渲染的代码逻辑 -->
        <h1>{{msg}}</h1>
        <a href="#">{{count}}</a>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>


    <script>
        //一旦引入VueJS核心包,在全局环境,就依赖Vue构造函数
        const app = new Vue({
            // 通过el配置选择器,指定Vue管理的是哪个盒子
            el: '#app',
            // 通过data提供数据
            data: {
                msg: 'Hello World',
                count: 666
            }
        })

    </script>

</body> 
</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>
</head>
<body>

    <div id="app">
        <p>{{nickname}}</p>
        <p>{{nickname.toUpperCase()}}</p>
        <p>{{nickname + '你好'}}</p>
        <p>{{age >= 18 ? '成年' : '未成年'}}</p>
        <p>{{friend.name}}</p>
        <p>{{friend.desc}}</p>

        //不能使用
        <!-- <p title="{{nickname}}">我是p标签</p> -->

    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                nickname: 'tony',
                age: 18,
                friend: {
                    name: 'jepson',
                    desc:'热爱学习Vue'
                }
            }
        })

    </script>





</body> 
</html>

Vue基本命令

v-html

在这里插入图片描述

v-show

v-show和v-if都可以做隐藏:
v-show主要用于频繁切换的地方,如购物车显示
v-if主要用于不频繁切换,如弹窗提示
在这里插入图片描述

v-if 和 v-else 和 v-else-if

<!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>
</head>
<body>

    <!-- 
        v-show底层原理:切换css的display:one 来控制显示隐藏
        v-if底层原理:根据判断条件控制元素创建和移除(条件渲染)
    -->

    <div id="app">
        <div v-html="msg"></div>  <!-- v-html解析特殊标签 -->

        <div v-show="flag" class="box">v-show控制</div>
        <div v-if="flag" class="box">v-if控制</div>


        <p v-if="gender === 1">性别:男</p>
        <p v-else>性别:女</p>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                msg: 
                   '<a href="https://www.baidu.com" target="_blank">百度一下</a>',
                flag: false,
                gender: 2
            }
        })

    </script>
</body> 
</html>

v-on和@click函数调用

在这里插入图片描述

<!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>
</head>
<body>

    <div id="app">
        <button v-on:click="count--">-</button>
        <span>{{ count }}</span>
        <button v-on:click="count++">+</button>

        <br>
        <br>
        <button @click="fn">切换显示隐形</button>
        <h1 v-show="isShow">程序员</h1>

        <div class="box">
            <h3>小王自动贩卖机</h3>
            <button @click="buy(5)">可乐5元</button>
            <button @click="buy(10)">咖啡10元</button>
        </div>
        <p>银行卡余额:{{ money }}元</p>  

    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                count: 100,
                isShow: true,
                money: 1000
            },
            methods: {
                fn() {
                    console.log('切换显示')
                    app.isShow = !app.isShow
                },
                buy (price) {
                    console.log('扣费')
                    this.money -= price
                }
            }
        })

    </script>

</body> 
</html>

v-bind

在这里插入图片描述

<!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>
</head>
<body>

    <div id="app">
        <img v-bind:src="imgUrl" v-bind:title="msg" alt="">
        <img :src="imgUrl" :title="msg" alt=""> <!-- 简写 -->
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                imgUrl: './imgs/maven.jpg',
                msg: 'Maven Logo'
            }
        })
    </script>

</body> 
</html>

v-for

在这里插入图片描述

在这里插入图片描述

<!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>
</head>
<body>

    <div id="app">
        <h3>小王水果店</h3>
        <ul>
            <li v-for="(item, index) in list">
                {{ item }} - {{ index }}
            </li>
        </ul>

    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                list: ['西瓜','苹果','鸭梨','榴莲']
            }
        })
    </script>

</body> 
</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>
</head>
<body>

    <div id="app">
        <h3>小王的书架</h3>
        <ul>
            <!-- key给列表项添加唯一标识。便于Vue进行正确排序复用 -->
            <li v-for="(item, index) in booksList" ::key="item.id">
                <span>{{ item.name }}</span>
                <span>{{ item.author }}</span>
                <button @click="del(item.id)">删除</button>
            </li>
        </ul>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                booksList: [
                    {id: 1, name: '《红楼梦》', author: '曹雪芹'},
                    {id: 2, name: '《西游记》', author: '吴承恩'},
                    {id: 3, name: '《三国演义》', author: '罗贯中'},
                    {id: 4, name: '《水浒传》', author: '施耐庵'}
                ]
            },
            methods: {
                del (id) {
                    //fillter不会删除原数组会把结果保存在新数组里,所以我们要把原数组重新赋值
                    this.booksList = this.booksList.filter(item => item.id !== id)
                }
            },
        })
    </script>

</body> 
</html>

v-model

<!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>
</head>
<body>

    <div id="app">
        <!-- v-model 数据和视图双向数据绑定 -->
        账号:<input type="text" v-model="username"> <br><br>
        密码:<input type="password" v-model="password"> <br><br>
        <button @click="login">登录</button>
        <button @click="reset">重置</button>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    
    <script>
        const app = new Vue({
            el: '#app',
            data: {
                username: '',
                password: ''
            },
            methods: {
                login () {
                    console.log('登录');
                    console.log(this.username);
                    console.log(this.password);
                },
                reset () {
                    console.log('重置');
                    this.username = '';
                    this.password = '';
            }
        }
        })
    </script>

</body> 
</html>

功能总结

在这里插入图片描述

综合案例-小黑记事本

列表渲染

删除功能

添加功能

底部统计

清空

项目工程化

更换npm镜像

设置镜像源:npm config set registry https://registry.npmmirror.com

查看当前使用的镜像地址:npm config get registry

方式一:在网页是去创建

在命令行中,执行如下指令:

vue ui

方式二:在命令行里创建

在命令行中,执行如下指令:

npm init vue@latest

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

案例:文章搜索

在这里插入图片描述

main.js

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

createApp(App).use(router).mount('#app')

Api.vue

<!-- <script>
export default {
    data() {
        return {
            message: 'Hello, Vue 3!'
        }
    }
  }
</script> -->

<script setup>
  import { ref } from 'vue'
  //导入 Api.vue文件
  import ApiVue from './Api.vue'
  //导入 Article.vue文件
  import ArticleVue from './Article.vue'
  import ArticleVue1 from './Article1.vue'

  //调用ref函数,定义响应式数据
  const message = ref('Hello, Vue 3!')



</script>


<template>
  <h1>{{ message }}</h1>
  <!-- 导入并使用 Api.vue组件 -->
  <ApiVue />

  <!-- 导入并使用 Article.vue组件 -->
  <!-- <ArticleVue /> -->

  <!-- 导入并使用 Article1.vue组件 -->
  <ArticleVue1 />


</template>

<style>
  h1 {
    color: blue;
  }
</style>

Article.vue

<script setup>
import { ref } from 'vue'
import axios from 'axios'

//定义响应式数据 ref
const articleList = ref([]);

//发送异步请求,获取所有文章数据
axios.get('http://localhost:8080/product/findByCate?cate_id=1')
  .then(result => {
    // console.log(result.data);
    //把服务器响应的数据保存起来
    articleList.value = result.data.data;
  }).catch(err => {
    console.log(err);
  })

//定义响应式数据 searchConditions
const searchConditions = ref({
  name: ''
})

//定义search函数
const search = () => {
  //发送异步请求,根据条件查询文章数据
  axios.get('http://localhost:8080/product/findName', {
    params: {...searchConditions.value}}).then(result => {
    console.log(result.data);
    //把服务器响应的数据保存起来
    articleList.value = result.data.data;
  }).catch(err => {
    console.log(err);
  })
}

</script>


<template>
  <!-- <div>{{ articleList }}</div> -->
  <div>
    文章标题: <input type="text" v-model="searchConditions.name">
    文章分类: <input type="text" v-model="searchConditions.category">
    发布状态: <input type="text" v-model="searchConditions.state">
    <button v-on:click="search">搜索</button>
    <br />
    <br />
    <table border="1 solid" colspa="0" cellspacing="0">
      <tr>
        <th>文章标题</th>
        <th>分类</th>
        <th>发表时间</th>
        <th>状态</th>
        <th>操作</th>
      </tr>
      <tr v-for="(article, index) in articleList" :key="index">
        <td>{{ article.name }}</td>
        <td>{{ article.cate_id }}</td>
        <td>{{ article.create_time }}</td>
        <td>{{ article.sales_volume }}</td>
        <td>
          <button>编辑</button>
          <button>删除</button>
        </td>
      </tr>
    </table>
  </div>
</template>


优化

接口调用的js代码一般封装在.js文件中,并以函数的形式暴露给外部
article.js
import axios from 'axios'

//获取所有文章数据函数
export async function articleGetAllService() {
    //发送异步请求,获取所有文章数据
    //同步等待服务器响应的结果,并返回,async  await
    return await axios.get('http://localhost:8080/product/findByCate?cate_id=1')
        .then(result => {
            return result.data.data;
        }).catch(err => {
            console.log(err);
        })
}

//获取单个文章数据函数
export async function articleSearchService(conditions) {
    //发送异步请求,根据条件查询文章数据
    return await axios.get('http://localhost:8080/product/findName', {
        params: conditions
    }).then(result => {
        return result.data.data;
    }).catch(err => {
        console.log(err);
    })
}
Article1.vue
<script setup>
import { ref } from 'vue'
import { articleGetAllService, articleSearchService } from '@/api/article.js'; // 导入函数

//定义响应式数据 ref
const articleList = ref([]);

//获取所有文章数据
// let data = articleGetAllService();
// articleList.value = data;
//同步获取articleGetAllService的返回结果  async await
const getAllArticle = async function () {
    let data = await articleGetAllService();
    articleList.value = data;
}
getAllArticle();


//定义响应式数据 searchConditions
const searchConditions = ref({
    name: ''
})

//定义search函数
const search = async function() {
    //文章搜索
    let data = await articleSearchService({...searchConditions.value})
    articleList.value = data;
}


</script>


<template>
    <!-- <div>{{ articleList }}</div> -->
    <div>
        文章标题: <input type="text" v-model="searchConditions.name">
        文章分类: <input type="text" v-model="searchConditions.category">
        发布状态: <input type="text" v-model="searchConditions.state">
        <button v-on:click="search">搜索</button>
        <br />
        <br />
        <table border="1 solid" colspa="0" cellspacing="0">
            <tr>
                <th>文章标题</th>
                <th>分类</th>
                <th>发表时间</th>
                <th>状态</th>
                <th>操作</th>
            </tr>
            <tr v-for="(article, index) in articleList" :key="index">
                <td>{{ article.name }}</td>
                <td>{{ article.cate_id }}</td>
                <td>{{ article.create_time }}</td>
                <td>{{ article.sales_volume }}</td>
                <td>
                    <button>编辑</button>
                    <button>删除</button>
                </td>
            </tr>
        </table>
    </div>
</template>


定义一个变量,记录公共的前缀,baseURL

const baseURL = ‘http://localhost:8080’;
const instance = axios.create({baseURL})

instance.get(‘/product/findByCate?cate_id=1’)

拦截器 request.js

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

request.js
//定制请求的实例

//导入axios  npm install axios
import axios from 'axios';
//定义一个变量,记录公共的前缀  ,  baseURL
const baseURL = 'http://localhost:8080';
const instance = axios.create({baseURL})


//添加响应拦截器
instance.interceptors.response.use(
    result=>{
        return result.data.data;
    },
    err=>{
        alert('服务异常');
        return Promise.reject(err);//异步的状态转化成失败的状态
    }
)

export default instance;
article1.js
/* //导入axios  npm install axios
import axios from 'axios';
//定义一个变量,记录公共的前缀  ,  baseURL
const baseURL = 'http://localhost:8080';
const instance = axios.create({baseURL}) */

import request from '@/util/request.js'

export async function articleGetAllService() {
    return request.get('/product/findByCate?cate_id=1');

}

export async function articleSearchService(conditions) {
    return request.get('/product/findName', { params: conditions });
}

element

安装

首先查看自己安装vue的版本,输入vue -V

如果自己的vue版本是3.0以上说明需要引入的是element-ui plus而不是element-ui

Vue3

npm install element-plus --save
如果下载的时候还会报错,执行这条指令:npm install element-plus --save --legacy-peer-deps

Vue2

npm install --save element-ui
如果下载的时候还会报错,执行这条指令:npm install element-ui --save --legacy-peer-deps

快速上手

在这里插入图片描述

完整引入

main.js

import Vue from ‘vue’;
import ElementUI from ‘element-ui’;
import ‘element-ui/lib/theme-chalk/index.css’;
import App from ‘./App.vue’;

Vue.use(ElementUI);

new Vue({
el: ‘#app’,
render: h => h(App)
});

Button.vue
<template>
<el-row>
    <el-button>默认按钮</el-button>
    <el-button type="primary">主要按钮</el-button>
    <el-button type="success">成功按钮</el-button>
    <el-button type="info">信息按钮</el-button>
    <el-button type="warning">警告按钮</el-button>
    <el-button type="danger">危险按钮</el-button>
  </el-row>
  
  <el-row>
    <el-button plain>朴素按钮</el-button>
    <el-button type="primary" plain>主要按钮</el-button>
    <el-button type="success" plain>成功按钮</el-button>
    <el-button type="info" plain>信息按钮</el-button>
    <el-button type="warning" plain>警告按钮</el-button>
    <el-button type="danger" plain>危险按钮</el-button>
  </el-row>
  
  <el-row>
    <el-button round>圆角按钮</el-button>
    <el-button type="primary" round>主要按钮</el-button>
    <el-button type="success" round>成功按钮</el-button>
    <el-button type="info" round>信息按钮</el-button>
    <el-button type="warning" round>警告按钮</el-button>
    <el-button type="danger" round>危险按钮</el-button>
  </el-row>
  
  <el-row>
    <el-button icon="el-icon-search" circle></el-button>
    <el-button type="primary" icon="el-icon-edit" circle></el-button>
    <el-button type="success" icon="el-icon-check" circle></el-button>
    <el-button type="info" icon="el-icon-message" circle></el-button>
    <el-button type="warning" icon="el-icon-star-off" circle></el-button>
    <el-button type="danger" icon="el-icon-delete" circle></el-button>
  </el-row>
</template>

案例

环境准备

在这里插入图片描述

跨域

在这里插入图片描述

配置代理来解决跨域

在这里插入图片描述

在这里插入图片描述

优化axios响应拦截器

在这里插入图片描述

路由

在这里插入图片描述
在这里插入图片描述

子路由

在这里插入图片描述

Bug:前端没有接收token

Pinia状态管理库

在这里插入图片描述

优化:Axios请求拦截器

在这里插入图片描述

在这里插入图片描述

Bug:刷新时,Pinia数据丢失

persist-Pinia持久化插件

在这里插入图片描述
在这里插入图片描述

未登录处理

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RKE安装k8s及部署高可用rancher之证书在外面的7层LB(nginx中) 7层负载均衡

一 了解 Rancher 1 推荐架构 安装 Rancher 的方式有两种&#xff1a;单节点安装和高可用集群安装。因为单节点安装只适用于测试和 demo 环境&#xff0c;而且单节点安装和高可用集群安装之间不能进行数据迁移&#xff0c;所以推荐从一开始就使用高可用集群安装的方式安装 Ran…

初学者快速入门学习日语,PDF文档音频教学资料合集

一、资料描述 本套学习资料是很全面的&#xff0c;共有734份文件&#xff0c;包括PDF&#xff0c;PPT&#xff0c;表格&#xff0c;图片&#xff0c;音频等多种格式&#xff0c;可以作为初级日语的学习教材&#xff0c;也是非常适合初学者入门的&#xff0c;可以帮助大家快速的…

在macOS中搭建.NET MAUI开发环境

文章目录 准备安装扩展安装 .NET安装工作负载安装 Xcode 命令行工具调试安卓应用安装 JDK安装 Android SDK 安装 Android 模拟器安装模拟器安装镜像创建虚拟机 同意许可条款创建 MAUI 项目调试 MAUI 应用切换调试目标 参考资料 准备 一台 macOS Monterey 以上的电脑安装 XCode…

Android14之audit2allow自动生成Selinux规则(一百七十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

软考网络工程师教程第五版(2018最新版)

软考网络工程师教程第五版(2018最新版) 内容简介 本书是全国计算机技术与软件专业技术资格(水平)考试指定用书。作者在前4版的基础上,根据网络工程师新版大纲的要求,针对考试的重点内容做了较大篇幅的修订,书中主要内容包括数据通信、广域通信网、局域网、城域网、因特网…

Vue实现JSON字符串格式化编辑器组件

相信很多同学都用过网上的在线JSON格式化工具来将杂乱的JSON数据转换成易于我们阅读和编辑的格式。那么&#xff0c;你有没有想过自己动手实现一个这样的工具呢&#xff1f;今天&#xff0c;我将介绍如何使用Vue.js来构建一个简单的JSON格式化工具。 功能简述 支持格式化JSON字…

一起读《奔跑吧Linux内核(第2版)卷1:基础架构》- 大小端字节序

关注 点赞 不错过精彩内容 大家好&#xff0c;我是硬核王同学&#xff0c;最近在做免费的嵌入式知识分享&#xff0c;帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作! Hello&#xff0c;大家好我是硬核王同学&#xff0c;是一名刚刚工作一年多的Linux工程师&#xff0…

2024年【陕西省安全员A证】考试报名及陕西省安全员A证模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 陕西省安全员A证考试报名考前必练&#xff01;安全生产模拟考试一点通每个月更新陕西省安全员A证模拟试题题目及答案&#xff01;多做几遍&#xff0c;其实通过陕西省安全员A证作业模拟考试很简单。 1、【多选题】《建…

基于ssm的职业高中学情成绩系统设计论文

摘 要 如今的时代&#xff0c;是有史以来最好的时代&#xff0c;随着计算机的发展到现在的移动终端的发展&#xff0c;国内目前信息技术已经在世界上遥遥领先&#xff0c;让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#x…

计算机毕业设计------学习论坛小程序

项目介绍 本项目分为两种用户类型&#xff0c;分别是普通用户&#xff0c;管理员用户&#xff1b; 管理员用户包含以下功能&#xff1a; 管理员登录,个人中心,用户管理,分类信息管理,论坛帖子管理&#xff0c;资料帖子管理&#xff0c;举报信息管理&#xff0c;系统管理功能…

【华为机试】2023年真题B卷(python)-靠谱的车

一、题目 题目描述&#xff1a; 程序员小明打了一辆出租车去上班。出于职业敏感&#xff0c;他注意到这辆出租车的计费表有点问题&#xff0c;总是偏大。 出租车司机解释说他不喜欢数字4&#xff0c;所以改装了计费表&#xff0c;任何数字位置遇到数字4就直接跳过&#xff0c;其…

简易机器学习笔记(四)初识卷积神经网络

前言 第一次写卷积神经网络&#xff0c;也是照着paddlepaddle的官方文档抄&#xff0c;这里简单讲解一下心得。 首先我们要知道之前写的那些东西都是什么&#xff0c;之前写的我们称之为简单神经网络&#xff0c;也就是简单一层连接输出和输出&#xff0c;通过前向计算和逆向…

C#使用 OpenHardwareMonitor获取CPU或显卡温度、使用率、时钟频率相关方式

C# 去获取电脑相关的基础信息&#xff0c;还是需要借助 外部的库&#xff0c;我这边尝试了自己去实现它 网上有一些信息&#xff0c;但不太完整&#xff0c;都比较零碎&#xff0c;这边尽量将代码完整的去展示出来 OpenHardwareMonitor获取CPU的温度和频率需要管理员权限 在没…

基于SSM的游戏资源管理系统+vue论文

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…

深入数组扩展应用

一、字符串反转 例如&#xff1a;‘123abc’----->‘cba321’ 字符串方法实现: var str 123abcvar reversFn function(str) {var newStr for (var i str.length - 1; i > 0; i--) {newStr str[i]}return newStr }console.log(reversFn(str));数组方法实现&#xf…

vue保姆级教程----深入了解Vuex的工作原理

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

从有向带权图判断最短路径里各目标顶点顺序

对如下有向带权图&#xff0c;若采用迪杰斯特拉(Dijkstra)算法求从源点a到其他各顶点的最短路径&#xff0c;则得到的第一路径的目标顶点是b&#xff0c;第二条最短路径的目标顶点是c&#xff0c;后续得到的其余各最短路径的目标顶点依次是() A.d,e,f B.e,d,f C.f,d,e D.f,…

通过IP地址进行网络安全防护

随着互联网的普及&#xff0c;网络安全问题日益凸显。一个重要的网络安全防护手段是通过IP地址进行控制和管理。本文将介绍如何通过IP进行网络安全防护。 一、IP地址的基本概念 IP地址是互联网协议地址的简称&#xff0c;用于标识网络中的设备。IP地址由32位二进制数字组成&am…

odoo 客制化审批流

以BPM、OA为代表的应用平台&#xff0c;低代码处理为前提的审批流功能定制化 功能介绍&#xff1a; 业务对象&#xff1a;针对侵入式注册BPM业务场景&#xff1a;设置审批场景&#xff1a;如&#xff1a;请假大于三天的场景、金额大于1000的场景节点条件&#xff1a; 当符合某…

运动蓝牙耳机哪个品牌好?2024年热销运动蓝牙耳机推荐

​作为一个热爱跑步的运动爱好者&#xff0c;我在过去四年里尝试了许多不同类型的运动蓝牙耳机&#xff0c;包括入耳式、半入耳式、颈挂式和开放式等。在这个过程中&#xff0c;我逐渐总结出了挑选运动耳机的一些心得&#xff0c;了解到一款优秀的运动耳机需要满足哪些基本条件…