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

前端最新Vue2+Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!

Vue 快速上手

Vue概念

Vue 是一个用于构建用户界面的渐进式框架

构建用户界面:基于数据渲染出用户看到的页面

渐进式:循序渐进

框架:一套完整的项目解决方案

Vue 的两种使用方式:
① Vue 核心包开发
场景:局部 模块改造
② Vue 核心包 & Vue 插件 工程化开发
场景:整站 开发

创建实例new Vue()

创建 Vue 实例,初始化渲染

核心步骤 4步:
1.准备容器
2.引包(官网)-开发版本/生产版本

一旦引入 Vuejs核心包,在全局环境,就有了Vue 构造函数

Vue.js (vuejs.org)[这里是图片002]https://v2.cn.vuejs.org/Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org)[这里是图片003]https://cn.vuejs.org/

指定配置项 → 渲染数据
①el指定挂载点
② data 提供数据

插值表达式{{}}

插值表达式是一种 Vue 的模板语法

1.作用:利用表达式进行插值,渲染到页面中

2.语法:{{ 表达式 }}

3.注意

响应式特性

Vue 核心特性:响应式
我们已经掌握了基础的模板渲染,其实除了基本的模板渲染,Vue背后还做了大量工作。
比如:数据的响应式处理 →响应式:数据变化,视图自动更新

实例:const后面定义的

data中的数据,是会被添加到实例上(在console里进行)
1.访问数据 实例.属性名
2.修改数据 实例.属性名=新值

开发者工具

安装 Vue 开发者工具:装插件调试 Vue 应用
(1)通过谷歌应用商店安装(国外网站)
(2)极简插件:下载 → 开发者模式 → 拖拽安装 → 插件详情允许访问文件

(还是edge好用)

Vue 指令

1.什么是 Vue 指令呢
指令就是带有 v- 前缀 的特殊 属性,不同属性 对应 不同的功能
学习不同指令 →解决不同业务场景需求
2.如果需要动态解析标签,可以用哪个指令语法
v-html=“表达式”->动态设置元素 innerHTML

3.可以在API — Vue.js (vuejs.org)查看api查看指令
v-html/v-show/v-if/v-else/v-on /v-bind /v-for /v-model

Vue 指令 v-show vs v-if

v-show1.作用:控制元素显示隐藏2.语法:v-show="表达式"false 隐藏表达式值 true 显示3.原理:切换 display:none 控制显示隐藏,频繁切换显示隐藏的场景

v-if1.作用:控制元素显示隐藏(条件渲染)2.语法: v-if="表达式"表达式值 true 显示,false 隐藏3.原理: 基于条件判断,是否 创建 或 移除 元素节点4.场景: 要么显示,要么隐藏,不频繁切换的场景

v-else v-else-if1.作用:辅助 v-if 进行判断渲染

2.语法:v-else或v-else-if="表达式"3.注意: 需要紧挨着 v-if 一起使用

v-on1.作用: 注册事件,添加监听,提供处理逻辑

2.语法:① v-on:事件名="内联语句② v-on:事件名="methods中的函数名()"3.简写:@事件名4.注意:methods函数内的 this 指向 Vue 实例而语法1可以直接拿到data里面数据

v-bind1.作用:动态的设置html的标签属性→src url title

2.语法:v-bind:属性名="表达式"3.注意:简写形式 :属性名=“表达式”

v-for数组、对象、数字1.作用:基于数据循环,多次渲染整个元素

2.遍历数组语法:v-for=“(item,index) in 数组”,item 每一项,index 下标

v-for 中的 key
key作用:给元素添加的唯一标识,便于Vue进行列表项的正确排序复用
注意点:1.key 的值只能是 字符串 或 数字类型2.key 的值必须具有 唯一性3.推荐使用 id 作为 key(唯一),不推荐使用 index 作为 key(会变化,不对应)

  • v-model1.作用:给 表单元素 使用,双向数据绑定:→ 可以快速 获取 或 设置 表单元素内容
    ①数据变化 →视图自动更新
    ② 视图变化 → 数据自动更新
    2.语法:v-model='变量 ’

    综合案例-小黑记事本

    列表渲染v-for
    删除功能filter使用

    添加功能

    通过 v-model 绑定 输入框 → 实时获取表单元素的内容

    点击按钮,进行新增,往数组最前面加unshift

    add() {this.rwlist.unshift({id: +new Date(),name: this.tianjia})}
    
    底部统计

    统计数组长度

    清空

    数组设为[]

    指令补充

    指令修饰符

    通过"."指明一些指令 后缀,不同 后缀 封装了不同的处理操作 → 简化代码

    ① 按键修饰符
    @keyup.enter键盘回车监听
    ②v-model.trim去除首尾空格v-model.number转数字
    ③事件修饰符
    @事件名.stop阻止冒泡
    @事件名.prevent →阻止默认行为

    v-bind对于样式操作的增强
    操作class

    语法 :class=“对象/数组”
    ① 对象 →键就是类名,值是布尔值。如果值为 true,有这个类,否则没有这个类

    操作syle

    语法 :style=“样式对象”

    适用场景:某个具体属性的动态设置
    v-model应用于其他表单元素

    常见的表单元素都可以用 v-model绑定关联 →快速 获取 或 设置 表单元素的值
    它会根据 控件类型 自动选取 正确的方法 来更新元素(下面这个不用记住)

    性别:男

    computed 计算属性

    概念:基于现有的数据,计算出来的新属性。依赖的数据变化,自动重新计算。

    计算属性 →可以将一段 求值的代码 进行封装

    基础语法:

    ① 声明在 computed 配置项中,一个计算属性对应一个函数
    ② 使用起来和普通属性一样使用{{计算属性名 }}

    //需求:对 this.list 数组里面的 num 进行求和 →this.list.reduce((sum, item) => sum + item.num, 0)

    计算属性 vs 方法

    计算属性:有缓存的,一旦计算出来结果,就会立刻缓存;

    下一次读取→直接读缓存就行→性能特别高
    作用:封装了一段对于数据的处理,求得一个结果。
    语法:① 写在 computed 配置项中

    ② 作为属性,直接使用 →this.计算属性{{ 计算属性 }}

    methods 方法:

    作用:给实例提供一个方法,调用以处理业务逻辑

    语法:① 写在 methods 配置项中@事件名=“方法名”

    ② 作为方法,需要调用this.方法名(){{ 方法名()}}

    完整写法

    计算属性默认的简写,只能读取访问,不能"修改
    如果要"修改"–>需要写计算属性的完整写法

    set(value)随便什么不是value也行

    成绩案例

    watch 侦听器

    作用:监视数据变化,执行一些 业务逻辑 或 异步操作
    语法:

    简单写法 →简单类型数据,直接监视

    完整写法 →添加额外配置项

    (1)deep:true 对复杂类型深度监视
    (2)immediate:true 初始化立刻执行一次handler方法

    综合案例:水果购物车

    渲染/删除/修改数量/全选反选/统计总价/持久化

    生命周期

    生命周期 &生命周期四个阶段/生命周期钩子/生命周期案例

    四个阶段,八个钩子

    created:响应式数据准备好了,可以开始发送初始化染请求

    综合案例:小黑记账清单(饼图不想学)

    列表渲染(请求)/添加/删除/饼图渲染

    工程化开发入门

    工程化开发和脚手架

    ctrl+shift+`显示终端,注意文件要从你命名的文件打包导入vs code

    镜像:npmconfigsetregistryhttps://registry.npmmirror.com/

    命令:npm i -g@vue/cli

    3之后要cd到该文件App.vue上一级(可能是src)

    less-loader 是一个允许你在Webpack中处理LESS文件的加载器。

    命令:npm install less-loader --save-dev

    项目运行流程

    在div里面引入组件时候也要有头身体尾巴顺序

    组件化

    安装 less 和 less-loader: 使用以下命令安装这两个包,并将它们添加到 package.jsondevDependencies 中(自动):

    npm install less less-loader --save-dev
    

    组件注册

    注意命名一定要大驼峰(没用就重新创建文件)

    综合案例:小兔鲜首页(没找到文件)

    拆分模块-局部注册/结构样式完善/拆分组件-全局注册

    组件的三大组成部分(结构/样式/逻辑)

    scoped样式冲突

    就是

    data是一个函数


    组件通信

    组件通信语法

    组件通信,就是指 组件与组件 之间的数据传递
    组件的数据是独立的,无法直接访问其他组件的数据
    想用其他组件的数据 →组件通信

    组件通信解决方案
    父子关系props 和 $emit
    非父子关系1. provide & inject2. eventbus
    通用解决方案:Vuex(适合复杂业务场景)

    父子通信1.父组件通过 props 将数据传递给子组件2.子组件利用 $emit 通知父组件修改更新

    父传子

    prop

    hobby.join(,)

    props 校验

    作用:为组件的 prop 指定验证,不符合要求,控制台就会有错误提示→帮助开发者快速发现错误 语法:类型校验,非空校验,默认值,自定义校验

    没穿值按默认值,传了按传的

    子传父

    newTitle变成传智教育然后赋值更新数据

    prop &data、单向数据流

    共同点:都可以给组件提供数据。
    区别:
    data 的数据是自己的 → 随便改
    prop 的数据是外部的 → 不能直接改,要遵循 单向数据流
    单向数据流:这个数据流动是单向的,父级 prop 的数据更新,会向下流动,影响子组件。

    修改父的count再拿到父的count

    非父子(扩展)

    src/util/EventBus.js

    AB都要导入import Bus from ‘…/utils/EventBus.js’

    发布一接收多,一对多

    复杂可以响应式

    综合案例:小黑记事本(组件版,我不想看)

    拆分组件/渲染/添加/删除/统计/清空/持久化

    进阶语法

    v-model原理

    模板中获取事件的形参→$event 获取

    v-model应用于组件

    vlue接收,value绑定,父组件v-model

    sync修饰符

    ref和$refs

    $nextTick

    Vue是异步更新 DOM 的
    想要在 DOM 更新完成之后做某件事,可以使用$nextTick

    自定义指令

    基本语法(全局&局部注册)

    inserted和mounted差不多,都在渲染完操作,全局注册在main.js,使用在App.main

    指令的值

    1. el代表的是指令绑定的 DOM 元素。
    2. binding是一个对象,包含了指令的相关信息,如value(指令的值)、arg(指令的参数)、modifiers(指令修饰符)等。binding.value可以拿到指令的值

    1.通过指令的值相关语法,可以应对更复杂指令封装场景
    2.指令值的语法
    ① v-指令名=“指令值”,通过 等号 可以绑定指令的值
    ② 通过 binding.value 可以拿到指令的值
    ③ 通过 update 钩子,可以监听指令值的变化,进行dom更新操作

    v-loading 指令封装

    场景:实际开发过程中,发送请求需要时间,在请求的数据未回来时,页面会处于空白状态 =>用户体验不好
    需求:封装一个 v-loading 指令,实现加载中的效果

    • css3引进了::来定义伪元素,为了和伪类做区分,:是css2的写法

    • .loading::before选择所有具有loading类的元素,并在其前面添加一个伪元素。

    • content: "";必须提供,即使它是空字符串,因为content属性是创建伪元素的必要条件。

    • position: absolute;将伪元素定位为绝对定位,这意味着它相对于其最近的已定位(非 static)祖先元素定位。

    • left: 0; top: 0;将伪元素的位置设置在其父元素的左上角。

    • width: 100%; height: 100%;使伪元素的尺寸与其父元素相同。

    • background: #fff url("./loading.gif") no-repeat center;设置伪元素的背景为白色,并添加一个加载动画的GIF图像,该图像不重复且居中显示。

      no-repeat:不平铺(背景图像只显示一次,而不是在整个元素的背景上重复时,可以使用这个属性)

    伪元素定位就是利用CSS的伪元素(::before::after)来在HTML元素的前后添加一些内容,并且通过CSS来控制这些内容的位置。

    1.通过指令相关语法,封装了指令v-loading 实现了请求的loading效果
    2核心思路
    (1)准备类名 loading,通过伪元素提供遮罩层
    (2)添加或移除类名,实现loading蒙层的添加移除
    (3)利用指令语法,封装v-loading 通用指令
    inserted 钩子中,binding.value 判断指令的值,设置默认状态 update 钩子中,binding.value 判断指令的值,更新类名状态

    默认插槽

    插槽分类:默认插槽(组件内定制一处结构)上
    具名插槽(组件内定制多处结构
    作用域插槽:是插槽的一个传参语法

    场景:当组件内某一部分结构不确定,想要自定义怎么办用插槽 slot 占位封装
    1.先在组件内用 slot 占位
    2.使用组件时,传入具体标签内容插入

    后备内容

    具名插槽

    组件内 有多处不确定的结构 怎么办
    具名插槽
    1.slot占位,给name属性起名字来区分
    2.template配合 v-slot:插槽名 分发内容
    v-slot:插槽名 可以简化成#插槽名

    作用域插槽

    作用域插槽的作用是什么
    可以给插槽上绑定数据,供将来使用组件时使用
    步骤
    (1)给 slot 标签,以 添加属性的方式传值
    (2)所有属性都会被收集到一个对象中
    (3)template中,通过、#插槽名=“obj”、 接收

    综合案例:商品列表

    MyTag 组件封装

    my-tag 标签组件封装
    1.创建组件-初始化
    2.实现功能
    (1)双击显示,并且自动聚焦
    v-if v-else @dbclick 操作 isEdit
    自动聚焦:1. n e x t T i c k = > nextTick => nextTick=>refs 获取到dom,进行focus获取焦点2.封装v-focus指令 (2)失去焦点,隐藏输入框
    @blur 操作 isEdit 即可 (3)回显标签信息
    回显的标签信息是父组件传递过来的
    v-model实现功能(简化代码)v-model=>:value 和 @input
    组件内部通过props接收,:value设置给输入框
    (4)内容修改了,回车 =>修改标签信息
    @keyup.enter,触发事件 $emit(‘input’,e.target.value)

    MyTable 组件封装

    my-table 表格组件的封装
    1.数据不能写死,动态传递表格渲染的数据
    props
    2.结构不能写死-多处结构自定义 【具名插槽】
    (1)表头支持自定义工
    (2)主体支持自定义

    路由入门

    单页应用程序

    单页面应用(SPA):所有功能在 一个html页面上实现

    单页面应用
    系统类网站/内部网站/文档类网站/移动端站点

    多页面应用
    公司官网/电商类网站

    路由概念

    路由是一种映射关系
    Vue中的路由是路径 和 组件 的映射关系

    根据路由就能知道不同路径的,应该匹配渲染哪个组件

    VueRouter的基本使用

    目标:认识插件 VueRouter,掌握 VueRouter的基本使用步骤
    作用:修改地址栏路径时,切换显示匹配的组件
    说明:Vue 官方的一个路由插件,是一个第三方包
    官网:https://v3.router.vuejs.org/zh/

    npm install vue-router@3.6.5

    1.如何实现路径改变,对应组件切换
    Vue 官方插件 VueRouter
    2.VueRouter 的使用基本步骤(5+2)
    5个基础步骤
    ①下包 ②引入③ Vue.use 安装注册④创建路由对象 ⑤ 注入Vue实例
    2个核心步骤
    创建组件,配置规则(路径组件的匹配关系)
    配导航,配置路由出口 router-view(组件展示的位置)

    组件目录存放问题

    分类开来 更易维护
    src/views文件夹页面组件-页面展示-配合路由用
    src/components文件夹复用组件-展示数据-常用于复用

    路由进阶

    路由模块封装

    路由模块的封装抽离的好处是拆分模块,利于维护
    快速引入组件:基于 @ 指代 src 目录,从 src 目录出发找组件

    这个是绝对路径

    声明式导航&导航高亮

    1.router-link是什么vue-router提供的全局组件,用于替换a标签
    2.router-link怎么用to="/路径值
    必须传入to属性,指定路由路径值
    3.router-link好处能跳转能高亮(自带激活时的类名)

    精确匹配&模糊匹配

    自定义高亮类名

    嫌类名太长,配一下(在index.js里)

    声明式导航传参

    查询参数传参

    搜索关键词可以{{$route.query.参数名}}

    要想再出现搜索结果要在

    动态路由传参

    搜索关键词可以{{$route.query.words}}

    搜索结果要this.$route.query.words

    对比

    动态路由参数可选符

    search/:words 表示,必须要传参数。如果不传参数,也希望匹配,可以加个可选符"" 正则表达式,问号表示0个或者1个,解决search后无参数空白页问题

    路由重定向

    路由404

    路由模式

    编程式导航(跳转)

    综合案例:面经基础版

    一级路由/二级路由/导航高亮/请求渲染/路由传参/缓存组件

    通过 children 配置项,可以配置嵌套子路由
    1.在children配置项中,配规则

    2.准备二级路由出口

    首页请求渲染
    npm add axios

    ${}就是要用模板字符串,写在属性值里面的,不是写在标签之间

    push用router,取参数用route

    数据加载好了再进行渲染

    这个是组件名,没有配置name的才会用文件名作为组件名

    基于VueCli自定义创建项目

    ESLint手动修正代码规范错误

    (这里我保存时候对齐的不能自动格式化。可以ctrl+shift+f)

    vuex概述

    构建多组件共享的数据环境

    <template><div id="app"><h1>根组件</h1><input type="text"><Son1></Son1><hr><Son2></Son2></div>
    </template><script>
    import Son1 from './components/Son1.vue'
    import Son2 from './components/Son2.vue'export default {name: 'app',data: function () {return {}},components: {Son1,Son2}
    }
    </script><style>
    #app {width: 600px;margin: 20px auto;border: 3px solid #ccc;border-radius: 3px;padding: 10px;
    }
    </style>
    

    main.js不要动

    Son1.vue

    <template><div class="box"><h2>Son1 子组件</h2>从vuex中获取的值: <label></label><br><button>值 + 1</button></div>
    </template><script>
    export default {name: 'Son1Com'
    }
    </script><style lang="css" scoped>
    .box{border: 3px solid #ccc;width: 400px;padding: 10px;margin: 20px;
    }
    h2 {margin-top: 10px;
    }
    </style>
    

    Son2.vue

    <template><div class="box"><h2>Son2 子组件</h2>从vuex中获取的值:<label></label><br /><button>值 - 1</button></div>
    </template><script>
    export default {name: 'Son2Com'
    }
    </script><style lang="css" scoped>
    .box {border: 3px solid #ccc;width: 400px;padding: 10px;margin: 20px;
    }
    h2 {margin-top: 10px;
    }
    </style>
    

    好东西,记得要保存。

    创建一个空仓库

    vue2=>路由是3,vuex版本3

    vue3=>路由是4,vuex版本4

    第一步npm add vuex@3如果出现问题

    如何提供&访问vuex的数据

    这样便于我以后添加别的计算属性

    mutations的基本使用

    传参

    监听

    辅助函数-mapMutations

    如果你想改变货架上的商品,你不能直接去拿,你需要通过一个特殊的通道(这就是 mutation)。这个通道有专门的工作人员(mutations 函数)来处理这些商品的变动。

    mapMutations 就像是给你一个快速通道,让你可以直接在你的组件里调用这些工作人员,而不需要每次都跑到超市的后门去。(仓库定义方法,组件可以直接调用)

相关文章:

前端最新Vue2+Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!

Vue 快速上手 Vue概念 Vue 是一个用于构建用户界面的渐进式框架 构建用户界面&#xff1a;基于数据渲染出用户看到的页面 渐进式&#xff1a;循序渐进 框架&#xff1a;一套完整的项目解决方案 Vue 的两种使用方式: ① Vue 核心包开发 场景:局部 模块改造 ② Vue 核心包 &am…...

肿瘤电场治疗费用

肿瘤电场治疗作为一种前沿的肿瘤治疗方法&#xff0c;近年来备受关注。该方法通过利用特定频率的交流电场&#xff0c;作用于恶性肿瘤细胞&#xff0c;以达到抑制肿瘤生长的目的。然而&#xff0c;随着这种治疗方法的普及&#xff0c;其费用问题也逐渐成为患者和家属关注的焦点…...

datatables快速入门

官网 进入官网https://datatables.net/ 点击下载 支持多种方式下载 快速入门 这里以cdn的方式演示 https://cdn.datatables.net/ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport&…...

ReactPress 1.6.0:重塑博客体验,引领内容创新

ReactPress 是一个基于Next.js的博客&CMS系统&#xff0c; Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 体验地址&#xff1a;http://blog.gaoredu.com/ 今天&#xff0c;我们自豪地宣布ReactPress 1.6.0版本的正式发布&#xff0c;…...

我的创作纪念日(五年)

慕然回首 平平无奇的周一早晨&#xff0c;收到来自csdn的提醒&#xff0c;创作纪念日五周年了&#xff0c;这也意味着我从事开发行业差不多有整整五年了&#xff0c;五年啊&#xff01;你知道这五年我是怎么过的吗&#xff1f;一句Just do IT&#xff0c;我做it整整做了五年&am…...

企业AI助理背后的技术架构:从数据到智能决策

在当今数字化时代&#xff0c;企业AI助理已经成为推动企业数字化转型和智能化升级的重要工具。它们通过整合企业内外部数据资源&#xff0c;运用先进的算法和模型&#xff0c;为企业提供高效、精准的智能决策支持。本文将深入探讨企业AI助理背后的技术架构&#xff0c;从数据收…...

主流AI视频生成工具|Sora零基础入门指南

Sora是什么&#xff1f; Sora 是 OpenAI 推出的新一代 AI 视频生成工具。它能让用户通过简单的文本描述或图片提示&#xff0c;快速生成高质量的视频内容。无论是广告短片、创意视频&#xff0c;还是实验性艺术作品&#xff0c;Sora 都能帮助创作者以极低的门槛实现自己的想法。…...

单元测试/系统测试/集成测试知识总结

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、单元测试的概念 单元测试是对软件基本组成单元进行的测试&#xff0c;如函数或一个类的方法。当然这里的基本单元不仅仅指的是一个函数或者方法&#xff0…...

前端文件下载多方式集合

基于vueelement UI框架 // ts-ignore import axios from "axios"; import { ElMessage } from "element-plus"; import webConfig from "/config";class FileDownload {/*** 文件流下载* param url string 下载地址* param params object 请求…...

PG备份恢复--pg_dump

pg_dump pg_dump 是一个逻辑备份工具。使用 pg_dump 可以在数据库处于使用状态下进行一致 性的备份,它不会阻塞其他用户对数据库的访问 。 一致性备份是 pg_dump 开始运行时&#xff0c;给数据库打了一个快照&#xff0c;且在 pg_dump 运行过程 中发生的更新将不会被备份。 …...

Java进阶学习笔记|面向对象

第一章.类和对象 1.面向对象的介绍 1.面向过程:自己的事情自己干,代表语言C语言洗衣服:每一步自己要亲力亲为 -> 找个盆,放点水,找个搓衣板,搓搓搓 2.面向对象:自己的事情别人帮忙去干,代表语言Java语言 洗衣服:自己的事情别人干 -> 全自动洗衣机3.为啥要使用面向对…...

ESP32_H2(IDF)学习系列-ADC模数转换(连续转换)

一、简介&#xff08;节选手册&#xff09; 资料参考https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32h2/api-reference/peripherals/adc_calibration.html 1 概述 ESP32-H2 搭载了以下模拟外设&#xff1a; • 一个 12 位逐次逼近型模拟数字转换器 (SAR ADC)&…...

二叉树的右视图

199. 二叉树的右视图 已解答 中等 相关标签 相关企业 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 # Definition for a binary tree node. # class TreeNode(object): #…...

Pinpoint 是一个开源的分布式追踪系统

pinpointagent2.2.2.tar 是 Pinpoint 的一个版本&#xff0c;Pinpoint 是一个开源的分布式追踪系统&#xff0c;专门用于对 Java 应用程序进行性能监控、日志记录和故障诊断。它可以帮助开发人员和运维人员追踪和分析微服务架构中服务之间的调用链&#xff0c;并进行性能分析。…...

React 脚手架使用指南

React 脚手架使用指南 目录 概述创建项目项目结构常用命令配置说明最佳实践 概述 什么是 React 脚手架&#xff1f; React 脚手架(Create React App)是 Facebook 官方提供的创建 React 单页应用的工具。它提供了一个零配置的现代构建设置。 为什么使用脚手架&#xff1f;…...

Win10提示“缺少fbgemm.dll”怎么办?缺失fbgemm.dll文件的修复方法来啦!

fbgemm.dll文件的作用 fbgemm.dll&#xff08;Facebook GEMM library&#xff09;是一个动态链接库文件&#xff0c;它主要用于优化矩阵乘法运算&#xff0c;提高计算性能。虽然它不是Windows 10系统的核心组件&#xff0c;但在某些应用程序或游戏中&#xff0c;尤其是那些需要…...

vue2 elementui if导致的rules判断失效

优化目标 和 目标转化出价必填的 切换的时候还会隐藏掉 这时候的if语句会导致rules判断失效 我的办法是把判断拉到外面 别放在el-form-item里 <section v-if"unitForm.baseTarget OCPM && unitForm.cpaTargetOptions ! undefined && unitForm.cpaTa…...

基于科大讯飞大模型Spark 4.0 Ultar 的微信聊天机器人搭建教程---零基础搭建最详细图文版!!!

1、软件的下载及部署 搭建该微信聊天机器人&#xff0c;主要依赖的编程语言为python&#xff0c;故需要搭建python的开发环境&#xff0c;主要包含python解释器的下载与安装以及编译器pycharm的下载与安装 1.1 python解释器的下载与安装 python解释器官网&#xff1a;https:…...

SpringBoot整合Netty

前言 Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高并发协议服务器和客户端。 Netty主要基于Java NIO实现,提供了异步和事件驱动的网络编程工具,简化了TCP和UDP服务器的编程。 Netty广泛应用于分布式系统、实时通信、游戏开发等领域,例如,…...

机器学习之PCA降维

主成分分析&#xff08;PCA&#xff0c;Principal Component Analysis&#xff09; 主成分分析&#xff08;PCA&#xff09;是一种常见的无监督学习技术&#xff0c;广泛应用于数据降维、数据可视化以及特征提取等任务。PCA的目标是通过线性变换将数据从高维空间映射到低维空间…...

《 OpenCV 环境搭建》

《OpenCV 环境搭建》 一、OpenCV 简介二、准备工作三、安装 OpenCV&#xff08;一&#xff09;获取安装包&#xff08;二&#xff09;安装过程 四、配置环境变量&#xff08;一&#xff09;系统环境变量配置&#xff08;二&#xff09;项目环境变量配置&#xff08;以 Visual S…...

【阅读记录-章节7】Build a Large Language Model (From Scratch)

系列文章目录 【阅读记录-章节1】Build a Large Language Model (From Scratch) 【阅读记录-章节2】Build a Large Language Model (From Scratch) 【阅读记录-章节3】Build a Large Language Model (From Scratch) 【阅读记录-章节4】Build a Large Language Model (From Scr…...

在js中实现下载base64数据,兼容低版本

详细步骤如下 1、解析 Base64 数据&#xff1a; 如果数据流中包含前缀 data:…;base64,&#xff0c;先分离 MIME 类型和 Base64 数据部分。如果没有前缀&#xff0c;假设默认 MIME 类型&#xff08;如 application/octet-stream&#xff09;。 2、Base64 解码&#xff1a; 使…...

垃圾分割数据集labelme格式659张1类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;659 标注数量(json文件个数)&#xff1a;659 标注类别数&#xff1a;1 标注类别名称:["garbage"] 每个类别标注的框数&#…...

深入探索 npm cache clean --force:清理 npm 缓存的艺术

npm 是 JavaScript 编程语言的包管理器&#xff0c;它是 Node.js 运行环境的默认包管理器。npm 提供了一个丰富的生态系统&#xff0c;包括数以百万计的可重用代码包。然而&#xff0c;随着时间的推移&#xff0c;npm 的缓存可能会变得庞大&#xff0c;影响性能或导致一些奇怪的…...

Flink中并行度和slot的关系——任务和任务槽

一、任务槽&#xff08;task slots) Flink的每一个TaskManager是一个JVM进程&#xff0c;在其上可以运行多个线程&#xff08;任务task&#xff09;&#xff0c;那么每个线程可以拥有多少进程资源呢&#xff1f;任务槽就是这样一个概念&#xff0c;对taskManager上每个任务运行…...

22【AUTOSAR自适应平台设计的概述01】杂项概念介绍

1.AUTOSAR自适应平台设计的概述 本小课题主要是让读者对AUTOSAR自适应平台设计的思路有个宏观的概念,不拘泥于具体的技术细节。 总结如下: 概述AUTOSAR自适应平台(AP)的设计。为AP用户和实施者提供总体设计和关键概念2.具体的章节由以下几个部分组成: 技术范围和方法: 介…...

基础运维学习计划-base版

目录 需要学习的内容&#xff1f; liunx基础 sql/mysql基础 tcp/ip协议基础 http基础 dns基础 网络基础&#xff1a;交换&路由概念&原理 常见网络协议 月学习计划 12.26 日 &#xff08;bilibili自己找视频看看&#xff0c;资源很多&#xff09; 12.27日 1…...

Golang的发展历程

Golang的发展历程可以分为以下几个阶段&#xff1a; 设计阶段&#xff1a;2007年&#xff0c;Google开始研究开发一种新的编程语言&#xff0c;主要出于对C和Java等编程语言的不足之处的反思。经过一年多的研究和讨论&#xff0c;Golang的设计方案得到确定&#xff0c;主要包括…...

数据结构之线性表之顺序表

定义&#xff1a; 由n&#xff08;n>0&#xff09;个数据特性相同的元素构成的有限序列称为线性表 简单来说n个相同数据类型的数据组wsw合在一起的这么一个集合就是一个线性表 线性表包括顺序表和链表 1. 顺序表&#xff08;我们所有的代码实现都用函数来封装&#xff09…...

GESP202309 二级【小杨的 X 字矩阵】题解(AC)

》》》点我查看「视频」详解》》》 [GESP202309 二级] 小杨的 X 字矩阵 题目描述 小杨想要构造一个 的 X 字矩阵&#xff08; 为奇数&#xff09;&#xff0c;这个矩阵的两条对角线都是半角加号 &#xff0c;其余都是半角减号 - 。例如&#xff0c;一个 5 5 5 \times 5 5…...

流量主微信小程序工具类去水印

工具类微信小程序流量主带后台管理&#xff0c;可开通广告&#xff0c;带自有后台管理&#xff0c;不借助第三方接口 介绍 支持抖音&#xff0c;小红书&#xff0c;哔哩哔哩视频水印去除&#xff0c;功能实现不借助第三方平台。可实现微信小程序流量主广告变现功能&#xff0c…...

Es搭建——单节点——Linux

Es搭建——单节点——Linux 一、安装 下载安装包&#xff1a; 官网下载地址&#xff1a;https://www.elastic.co/downloads/elasticsearch 上传包到linux 切换到安装目录下 解压&#xff1a;tar -zxvf elasticsearch-7.17.1-linux-x86_64.tar.gz 重命名安装文件夹 mv elastics…...

linux安装idea

参考原网址&#xff1a;在Linux系统中安装idea教程_idea linux-CSDN博客 1.下载idea Download IntelliJ IDEA – The Leading Java and Kotlin IDE 选择Download&#xff0c;下载正确的文件名&#xff1a;ideaIU-2024.3.1.1.tar.gz 2.安装vim sudo apt install vim 3.解压…...

PLSQL 客户端连接 Oracle 数据库配置

1. 安装Oracle客户端 首先&#xff0c;安装Oracle客户端。可以从Oracle官方网站下载Oracle Instant Client, 安装完成后&#xff0c;请记住安装路径&#xff0c;因为将在后续步骤中需要用到它。 2. 配置环境变量 添加环境变量 ORACLE_HOME 安装Oracle客户端后&#xff0c;配…...

C#调用OpenXml,读取excel行数据,遇到空单元跳过现象处理

问题及现象 在OpenXML中文件不包含空白单元格的条目&#xff0c;这就是跳过空白单元格的原因。 所以如果当我们打开一个excel&#xff0c;读取一个表格数据&#xff0c;发现如果有空单元格&#xff0c;openXML会跳过导致读取的数据发生错位。 比如这个是原始的excel表格数据…...

【计算机视觉CV-图像分类】06 - VGGNet的鲜花分类实现:从数据预处理到模型优化的完整实战!

目录 引言 VGGNet概述 VGGNet的网络架构 基于预训练VGGNet的五类鲜花分类实现 4.1 数据准备与预处理 4.2 模型实例化与参数调整 4.3 模型训练与保存最优模型 4.4 模型导入与预测 4.5 训练过程的可视化 模型优化与防止过拟合 总结与展望 参考文献 引言 在计算机视觉…...

QT 控件定义为智能指针引发的bug

问题描述&#xff1a; std::unique_ptr<QStackedLayout> m_stacked_layout; 如上为定义&#xff1b; 调用&#xff1a; Line13ABClient::Line13ABClient(QWidget *parent) : BaseWidget(parent) { // 成员变量初始化 m_get_ready false; m_tittle_wnd…...

@register_model 装饰器

使用 register_model 装饰器来注册模型类有以下几个优势&#xff1a; 自动化注册&#xff1a; 通过装饰器自动将模型类注册到一个全局字典中&#xff0c;避免了手动注册的繁琐操作&#xff0c;使代码更加简洁和易于维护。 易于扩展&#xff1a; 可以方便地添加新模型&#xff…...

图像处理-Ch7-图像金字塔和其他变换

Ch7 小波变换&其他图像变换 文章目录 Ch7 小波变换&其他图像变换背景知识(bk)图像金字塔(Image Pyramid)子带编码(Sub-band Coding)Z - 变换(线性变换)完美重建滤波器组(PCFB, Perfect Construction Filter Banks)有限脉冲响应&#xff08;FIR&#xff09;滤波器双正交…...

解决在vue3+vite+element-plus 中echarts在el-dialog无法正常显示问题

核心&#xff1a;在dom加载完成后调用echarts实例 的resize()方法 这里是一个例子 这里封装一个echarts <template><div class"container" ref"container"></div> </template> <script lang"ts" setup> import {…...

SQL进阶技巧:如何计算摆动的序列?| LeetCode 376.-摆动序列

目录 0 摆动序列 1 数据准备 2 问题分析 3 小结 0 摆动序列 原题链接:376. 摆动序列 - 力扣(LeetCode) 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的…...

告别卡顿:探索 Java FGC 的根源与高效解决方案

Java Full Garbage Collection (FGC) 的产生原因及解决办法 引言 在Java应用程序的生命周期中&#xff0c;垃圾回收&#xff08;Garbage Collection, GC&#xff09;是确保内存有效管理的关键机制。然而&#xff0c;当发生Full Garbage Collection&#xff08;FGC&#xff09…...

MySQL索引为什么是B+树

MySQL索引为什么是B树 索引是帮助MySQL高效获取数据的数据结构&#xff0c;在数据之外&#xff0c;数据库还维护着满足特定查找算法的数据结构B树&#xff0c;这些数据结果以某种特定的方式引用数据&#xff0c;这样就可以在这些数据结构上实现高级查找算法&#xff0c;提升数据…...

准备考试:解决大学入学考试问题

引言 在编程竞赛和算法挑战中&#xff0c;我们经常会遇到各种类型的组合问题。这些问题不仅考验我们的逻辑思维能力&#xff0c;还要求我们熟练掌握数据结构和算法。在这篇文章中&#xff0c;我们将探讨一个有趣的问题——“准备考试”&#xff0c;这个问题来自于一个虚构的情…...

vue3中如何自定义插件

英译汉插件 i18n.ts export default {install: (app: any, options: any) > {// 注入一个全局可用的$translate()方法app.config.globalProperties.$translate (key: string) > {// 获取options对象的深层属性// 使用key作为索引return key.split(".").redu…...

Linux应用软件编程-多任务处理(进程)

多任务&#xff1a;让系统具备同时处理多个事件的能力。让系统具备并发性能。方法&#xff1a;进程和线程。这里先讲进程。 进程&#xff08;process&#xff09;&#xff1a;正在执行的程序&#xff0c;执行过程中需要消耗内存和CPU。 进程的创建&#xff1a;操作系统在进程创…...

PyCharm专项训练5 最短路径算法

一、实验目的 本文的实验目的是通过编程实践&#xff0c;掌握并应用Dijkstra&#xff08;迪杰斯特拉&#xff09;算法和Floyd&#xff08;弗洛伊德&#xff09;算法来解决图论中的最短路径问题。 二、实验内容 数据准备&#xff1a; 使用邻接表的形式定义两个图graph_dijkstra…...

“AI+Security”系列第4期(一)之“洞” 见未来:AI 驱动的漏洞挖掘新范式

在数字化浪潮下&#xff0c;安全漏洞问题日益严峻&#xff0c;成为各行业发展的重大挑战。近日&#xff0c;“AISecurity” 系列第 4 期线下活动于北京成功举办&#xff0c;聚焦 “洞” 见未来&#xff1a;AI 驱动的漏洞挖掘新范式&#xff0c;汇聚了安全领域的众多专家。 本次…...

安卓蓝牙扫描流程

目录 系统广播 流程图 源码跟踪 系统广播 扫描开启广播&#xff1a;BluetoothAdapter.ACTION_DISCOVERY_STARTED "android.bluetooth.adapter.action.DISCOVERY_STARTED";扫描关闭广播&#xff1a;BluetoothAdapter.ACTION_DISCOVERY_FINISHED "android.b…...