关于vue生命周期理解示例代码
在业务运作时,特定的逻辑代码,需要在特定的阶段去执行,所以需要理解Vue的生命周期,以及各个周期内的方法,才能明确业务代码的编写
概述:Vue生命周期,指一个vue实例从创建到销毁的过程。
分为四个阶段:①创建-->②挂载-->③更新-->④销毁
①创建阶段 拿到数据准备好,进行响应式处理
②挂载阶段基于提供的数据和模板进行渲染,产生页面效果
③更新阶段 对页面进行操作,修改页面,会修改数据,对应着做数据修改,更新视图(这两个动作可以持续循环进行)
④销毁阶段 页面关闭,销毁实例
1、像官网首页那种进页面就要获取数据进行初始化渲染页面的请求,最早也要在创建阶段之后,在响应式数据准备好之后
2、若想要操作dom,至少也要等模板渲染出来,所以最早也要在挂载阶段之后
3、在整个vue的生命周期过程中,从一开始的创建到最后的销毁的一系列过程中,vue都提供了一系列函数,并且到了对应的生命阶段时,会去自动调用这些函数,而这四个阶段一共提供了八个函数(生命周期钩子)
4、有了这些生命周期钩子之后,开发者就可以在特定阶段去执行我们想执行的代码;如上面的1、就响应式的数据准备好之后想发初始化请求,可以写在创建阶段后的钩子里去执行,2、就可以把操作dom的代码写在挂载阶段后的钩子里去执行
这里可以用一个计数器来调这些函数,来演示一下
body代码:
<body><div id="app"><h3>{{ title }}</h3><div><button @click="count--">-</button><span>{{ count }}</span><button @click="count++">+</button></div></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {count: 100,title: '计数器'}})</script>
</body>
页面效果:
先写初级阶段的两个钩子,分别对应初级阶段前后,可以尝试故意在初级阶段前,也就是数据还没准备好的beforeCreat钩子里用this 去获取count,去调页面上的响应式数据:
beforeCreate () {console.log('beforeCreate 响应式数据准备好之前调取count===>', this.count)},
页面刷新重新加载,就会发现页面报undefined了,是肯定访问不到的啊,
所以切记,在创建阶段的beforeCreate 钩子里面对数据进行任何处理都是不合理的,至少要在created里面至少等数据有了再去操作,
// 1. 创建阶段(准备数据)beforeCreate () {console.log('beforeCreate 响应式数据准备好之前调取count===>', this.count)},created () {console.log('created 响应式数据准备好之后', this.count)// this.数据名 = 请求回来的数据// 可以开始发送初始化渲染的请求了},
如下图,这里在created里面获取count就有了, 所以在created里面才可以开始发送初始化渲染的请求
同样,可以在挂载阶段前后两个钩子里,去调H3这个模板,测试渲染成功没有
<h3>{{ title }}</h3>
代码(模板渲染之前调mountedbeforeMount钩子,模板渲染之后调mounted钩子):
// 2. 挂载阶段(渲染模板)beforeMount () {console.log('beforeMount 模板渲染之前', document.querySelector('h3').innerHTML)},mounted () {console.log('mounted 模板渲染之后', document.querySelector('h3').innerHTML)// 可以开始操作dom了},
这里看到打印出来还是双花括号模板语法,说明在此时即挂载阶段之前的mounted 钩子里,模板是还没有被渲染的:
而在挂载阶段之后的mounted钩子里,再去取H3标签,就已经被渲染了,双花括号title就已经被换成了data里面的值:计算器,并将计算器 输出到控制台,所以如果想操作dom,至少要得到模板渲染之后的mounted 钩子里
小结:这里可以知道,当页面展示这个计数器的时候,其实就已经经历了创建阶段和挂载阶段,
// 3. 更新阶段可以测试点击计算器的加号,数据变化这个过程,(修改数据 → 更新视图)
beforeUpdate钩子执行的时候,数据修改了,视图还没更新, 而updated钩子执行时, 数据修改了,视图已经更新
// 3. 更新阶段(修改数据 → 更新视图)beforeUpdate () {console.log('beforeUpdate 数据修改了,视图还没更新', document.querySelector('span').innerHTML)},updated () {console.log('updated 数据修改了,视图已经更新', document.querySelector('span').innerHTML)},
四、单独用app.$destroy()方法销毁,可以看到效果:
详细代码:
<!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>{{ title }}</h3><div><button @click="count--">-</button><span>{{ count }}</span><button @click="count++">+</button></div></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {count: 100,title: '计数器'},// 1. 创建阶段(准备数据)beforeCreate () {console.log('beforeCreate 响应式数据准备好之前', this.count)},created () {console.log('created 响应式数据准备好之后', this.count)// this.数据名 = 请求回来的数据// 可以开始发送初始化渲染的请求了},// 2. 挂载阶段(渲染模板)beforeMount () {console.log('beforeMount 模板渲染之前', document.querySelector('h3').innerHTML)},mounted () {console.log('mounted 模板渲染之后', document.querySelector('h3').innerHTML)// 可以开始操作dom了},// 3. 更新阶段(修改数据 → 更新视图)beforeUpdate () {console.log('beforeUpdate 数据修改了,视图还没更新', document.querySelector('span').innerHTML)},updated () {console.log('updated 数据修改了,视图已经更新', document.querySelector('span').innerHTML)},// 4. 卸载阶段beforeDestroy () {console.log('beforeDestroy, 卸载前')console.log('清除掉一些Vue以外的资源占用,定时器,延时器...')},destroyed () {console.log('destroyed,卸载后')}})</script>
</body>
</html>
功能需求:
1.基本渲染
2.添加功能
3.删除功能
4.饼图渲染
1.基本渲染
(1)思路:刚进页面首先要先发送请求,获取数据,其实所以在created生命周期钩子里面写get数据的方法
data: {},created (){}
1)因为有引下面这个包,所以直接用await axios
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
2)然后get方法的第一个参数是url地址,因为get请求,像get和delete这种请求都需要传一个id,请求所以第二个请求参数要写到params里面以对象形式传过去,如下将创建者写到params里面
params:{creator:'fly'}
3)然后发现报错及详情:
async created (){const res = await axios.get('https://applet-base-api-t.itheima.net/bill',{params:{creator:'fly'}})// console.log(res)}
报错Uncaught SyntaxError: await is only valid in async functions and the top level bodies of modules-CSDN博客
4)解决报错后将获取数据通过控制台打印出来的效果如下:
(2)拿到数据,存到data的响应式数据中
1)要存到data里面,可以定义一个
const app = new Vue({el: '#app',data: {mylist:[]},
2)在created里面用myList来接收
this.mylist=res.data.data
目前代码
async created (){const res = await axios.get('https://applet-base-api-t.itheima.net/bill',{params:{creator:'yang'}})this.mylist=res.data.data// console.log(res)}
(3)页面结合数据,进行渲染,通常用v-for
1)连续编号用下标{{index+1}},金额若需要保留两位小数用toFixed( 2 )
<tr v-for="(item,index) in mylist" :key="item.id"><td>{{index+1}}</td><td>{{item.name}}</td><td>{{item.price.toFixed(2)}}</td><td><a href="javascript:;">删除</a></td></tr>
2)已经写了一个类样式为"red" 这里加这个类的条件是金额大于500的大额数字,可以用:class
<tr v-for="(item,index) in mylist" :key="item.id"><td>{{index+1}}</td><td>{{item.name}}</td><td :class="{red:item.price>=500}" >{{item.price.toFixed(2)}}</td><td><a href="javascript:;">删除</a></td></tr>
(4)下面的消费统计,用计算属性实现
<tfoot><tr><td colspan="4">消费总计: {{totalPrice.toFixed(2)}}</td></tr>
</tfoot>
const app = new Vue({el: '#app',data: {myList:[]}, computed:{totalPrice(){return this.myList.reduce((sum,item) => sum +item.price ,0);}},
2.添加功能
(1)收集表单数据 思路:输入框填写数据后,点击按钮会加到列表中,所以要考虑到输入框需要收集数据,所以要去data里面声明元素上面的表单元素用v-model将数据与数据做绑定即可
data: {myList:[],name:'',price:''},
<input type="text" v-model.trim="name" class="form-control" placeholder="消费名称" /><input type="text" v-model.number="price" class="form-control" placeholder="消费价格" /><button type="button" class="btn btn-primary">添加账单</button>
(2)给添加按钮注册点击事件,发送添加请求
代码如下
<button type="button" @click="add" class="btn btn-primary">添加账单</button>
methods:{async add(){const res=await axios.post('https://applet-base-api-t.itheima.net/bill',{creator:'fly1',name:this.name,price:this.price})}}
(3)数据改变后,页面需要基于新数据重新渲染,所以可以把查询数据渲染的方法封装起来,后面多次使用
3.删除功能
(1)给删除按钮注册点击事件,传id
<td><a href="javascript:;" @click="del(item.id)">删除</a></td>
(2)根据id发送删除请求,注意这里是直接在路径后面拼接id,id要用传过来的id,不写死所以用 ` ,然后用$接上id
del(id){const res=axios.delete(`https://applet-base-api-t.itheima.net/bill/${id}`)}
(3)重新渲染, // console.log(id) 下面的id要用传过来的id,不写死所以用 ` 然后用$接上id
del(id){// console.log(id) 下面的id要用传过来的id,不写死所以用 ` 然后用$接上idconst res=axios.delete(`https://applet-base-api-t.itheima.net/bill/${id}`)// console.log(res)this.getList()}
4.饼图渲染
第一步,想要基于数据动态实时生成饼图,就要先生成一个饼图,需要在项目中引入 Apache ECharts详情请看:
作业思路汇总:
1.基本渲染
2.添加功能
3.删除功能
4.饼图渲染
1.基本渲染
(1)一进页面首先要先发送请求,获取数据,所以在created生命周期钩子里面写get数据的方法
(2)拿到数据,存到data的响应式数据中
(3)页面结合数据,进行渲染,通常用v-for
(4)列表下面的消费统计,用计算属性实现
2.添加功能
3.删除功能
4.饼图渲染
相关文章:
关于vue生命周期理解示例代码
在业务运作时,特定的逻辑代码,需要在特定的阶段去执行,所以需要理解Vue的生命周期,以及各个周期内的方法,才能明确业务代码的编写 概述:Vue生命周期,指一个vue实例从创建到销毁的过程。 分为四…...
【MySQL数据库】C#实现MySQL数据库最简单的查询和执行函数
文章目录 前言一、查询方法二、执行方法 前言 C#和MySQL数据库是常见的数据交互,标准的查询和执行方法如下,做个记录。 一、查询方法 private static int QueryTable(string tableName, DateTime today, string stepName){int result 0; // 返回数据…...
深度学习笔记之BERT(二)BERT精简变体:ALBERT
深度学习笔记之BERT——BERT精简变体:ALBERT 引言回顾:ResNet对于反向传播的作用BERT的配置BERT的问题/缺陷ALBERTALBERT的策略BERT VS ALBERT 引言 上一节从 Word2vec \text{Word2vec} Word2vec上下文信息的局限性角度出发,介绍了 BERT \text{BERT} BE…...
Easyexcel(5-自定义列宽)
相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出)Easyexcel(4-模板文件)Easyexcel(5-自定义列宽) 注解 ColumnWidth Data…...
Linux 安装 Git 服务器
一、安装 Git 1. 在 CentOS/RHEL 中使用以下命令: sudo yum update -y # 或者 sudo dnf update -y (在较新的系统中) sudo yum install git -y验证安装:git --version 2. 配置 Git 用户 git config --global user.name "Your Name" git co…...
C#学习笔记——窗口停靠控件WeifenLuo.WinFormsUI.Docking使用-腾讯云开发者社区-腾讯云
C#学习笔记——窗口停靠控件WeifenLuo.WinFormsUI.Docking使用-腾讯云开发者社区-腾讯云 C#学习笔记——窗口停靠控件WeifenLuo.WinFormsUI.Docking使用 发布于 2021-06-10 00:10:59 7.1K0 举报 文章被收录于专栏:c#学习笔记 一、介绍 DockPanelSuite是托管在…...
c++-有关输出、信息输入、趣味输入应用、运算符、变量、浮点数数据类型的基础知识
C是一种功能强大且广泛使用的编程语言,它可以用于开发各种类型的应用程序。在这篇文章中,我们将介绍C程序的输出、信息输入、趣味输入应用、运算符、变量和浮点数数据类型的基础知识。 目录 输出 信息输入 趣味输入应用 运算符 变量 浮点数数据类…...
STM32-- keil 的option for target使用
keil版本号 1.device界面 如:stm32f103c8t6的工程,可以直接在device这里修改成stm32f103vct6,虽然引脚不一样,但是很多一样的地方,可以直接使用,有些不修改也可以下载程序。 2.target xtal的设置不起作用了…...
Python 使用 Token 认证方案连接 Kubernetes (k8s) 的详细过程
在 Kubernetes 中,使用 Token 认证是一种常见的客户端身份验证方式,尤其适用于 ServiceAccount。以下是详细的步骤,包括如何查看 Token、获取 API 服务地址、配置远程连接,以及如何在 Python 中连接 k8s。 1. 获取 Token 首先&a…...
神经网络(系统性学习二):单层神经网络(感知机)
此前篇章: 神经网络中常用的激活函数 神经网络(系统性学习一):入门篇 单层神经网络(又叫感知机) 单层网络是最简单的全连接神经网络,它仅有输入层和输出层,没有隐藏层。即&#x…...
3D Gaussian Splatting在鱼眼相机中的应用与投影变换
paper:Fisheye-GS 1.概述 3D 高斯泼溅 (3DGS) 因其高保真度和实时渲染而备受关注。然而,由于独特的 3D 到 2D 投影计算,将 3DGS 适配到不同的相机型号(尤其是鱼眼镜头)带来了挑战。此外,基于图块的泼溅效率低下,尤其是对于鱼眼镜头的极端曲率和宽视野,这对于其更广泛…...
MATLAB的语音信号采集与处理分析
1、基本描述 本文描述的系统是一个全面而精细的语音信号处理平台,核心组件由MATLAB的高级功能模块构建而成。系统的核心交互界面,借助于MATLAB的uifigure函数搭建,为用户提供了一个直观且响应迅速的操作环境。通过设计的GUI按钮,如…...
H.265流媒体播放器EasyPlayer.js H5流媒体播放器如何验证视频播放是否走硬解
随着技术的不断进步和5G网络的推广,中国流媒体播放器行业市场规模以及未来发展趋势都将持续保持稳定的增长,并将在未来几年迎来新的发展机遇。流媒体播放器将继续作为连接内容创作者和观众的重要桥梁,推动数字媒体产业的创新和发展。 EasyPla…...
深度学习:ResNet每一层的输出形状
其中 /**在输出通道数为64、步幅为2的7 7卷积层后,接步幅为2的3 3的最大汇聚层,与GoogLeNet区别是每个卷积层后增加了批量规范层**/ b1 nn.Sequential(nn.Conv2d(1, 64, kernel_size7, stride2, padding3),nn.BatchNorm2d(64), nn.ReLU(),nn.MaxPool2d(kernel_s…...
牛客题库 21738 牛牛与数组
牛牛与数组题目链接 题目大意 牛牛喜欢这样的数组: 1:长度为n 2:每一个数都在1到k之间 3:对于任意连续的两个数A,B,A<=B 与(A % B != 0) 两个条件至少成立一个请问一共有多少满足条件的数组,对 1 e 9 + 7 1e^9+7 1e9+7 取模 输入格式 输入两个整数 n , k n,k n,…...
学会Lambda,让程序Pythonic一点
Lambda是Python里的高阶用法,要把代码写得Pythonic,就需要了解这些高阶用法,想说自己是一名真正的Python程序员,先要把代码写得Pythonic。 今天聊下Lambda的用法,写篇简短的用法说明。 Lambda是匿名函数的意思&#…...
旋转向量v和旋转矩阵R
旋转向量v和旋转矩阵R 旋转向量 v 和旋转矩阵 R 是三维空间中描述旋转的两种数学表示方式。两者的关系通过 Rodrigues 公式 建立。 1. 旋转向量v 2. 旋转矩阵R 3. 旋转向量v和旋转矩阵R的关系 两者通过 Rodrigues 公式 和特殊的矩阵运算互相转换: 4. 代码示例 1…...
CSS浮动:概念、特性与应用
CSS浮动是网页设计和开发中常见的布局技术之一,以下是CSS浮动相关的所有重要知识点: 一、浮动的定义与语法 浮动(float)属性可以指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。浮动属性最初只用…...
类和对象(下)
1.取地址运算符重载 1.1 const成员函数 • 将const修饰的成员函数称之为const成员函数,const修饰成员函数放到成员函数参数列表的后 ⾯。 • const实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。 const 修饰D…...
后端接受大写参数(亲测能用)
重要点引入包别引用错了 import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data;JsonSerialize Data public class Item {JsonProperty(value "Token")private String token…...
Android仿前端分页组件pagination
仿前端pagination Android仿前端分页组件pagination 最近Android原生有个需求就是做个分页组件,不用上拉加载,因为数据量太大用户喜欢前端的方式,UI主要是拼凑比较简单,主要补充了一些判断越界和数据不全的细节,记录方…...
网络安全中常用浏览器插件、拓展
引言 现在的火狐、Edge( Chromium内核)、Chrome等浏览器带有插件、拓展(Plugin)的功能。这些插件中有的可以过滤广告,有的提供便捷的翻译,有的提供JavaScript脚本支持,方便用户的使用也大大的增…...
Vue 使用 Cropper.js 实现图片裁剪功能
前言 图片裁剪功能无论是用户头像的裁剪,还是图片内容的精确调整,都成为了提升用户体验的关键一环。Vue.js 结合 Cropper.js 这一功能丰富的图片裁剪库,可以轻松实现高效、直观的图片裁剪功能。本文将详细介绍如何在 Vue.js 项目中集成并使用…...
Python 3 和 JSON 数据格式
Python 3 和 JSON 数据格式 Python 3 是一种广泛使用的编程语言,以其简洁明了的语法和强大的功能而闻名。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python 3 提供了内置的 json 模块,使得在 Python 程序…...
Halo 正式开源: 使用可穿戴设备进行开源健康追踪
在飞速发展的可穿戴技术领域,我们正处于一个十字路口——市场上充斥着各式时尚、功能丰富的设备,声称能够彻底改变我们对健康和健身的方式。 然而,在这些光鲜的外观和营销宣传背后,隐藏着一个令人担忧的现实:大多数这些…...
第一个autogen与docker项目
前提条件:在windows上安装docker 代码如下: import os import autogen from autogen import AssistantAgent, UserProxyAgentllm_config {"config_list": [{"model": "GLM-4-Plus","api_key": "your api…...
React第四节 组件的三大属性之state
前言 状态 state适用于类式组件中,而再函数式组件中需要使用 useState HOOK 模拟状态; React的组件就是一个状态机,通过与用户的交互,实现不同的状态,根据不同的状态展现出不一样的UI视图 并不是组件中所有的属性 都是组件的状态…...
在 CentOS 系统上直接安装 MongoDB 4.0.25
文章目录 步骤 1:配置 MongoDB 官方源步骤 2:安装 MongoDB步骤 3:启动 MongoDB 服务步骤 4:验证安装步骤 5:可选配置注意事项 以下是在 CentOS 系统上直接安装 MongoDB 4.0.25 的详细步骤: 步骤 1&#x…...
C++知识点总结(58):序列型动态规划
动态规划Ⅰ 一、基础1. 意义2. 序列 dp 解法 二、例题1. 最大子段和2. 删数最大子段和(数据强度:pro max)3. 最长上升子序列(数据强度:pro max)4. 3 或 5 的倍数序列5. 数码约数序列 一、基础 1. 意义 动…...
【系统架构设计师】真题论文: 论网络安全体系设计(包括解题思路和素材)
更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2014年 试题4)解题思路论文素材参考网络安全体系设计目标与原则网络安全体系的主要组成部分网络安全体系设计流程真题题目(2014年 试题4) 随着社会信息化的普及,计算机网络已经在各行各业得到了广泛…...
TypeScript学习笔记(三)
类型详细介绍 七、常用类型与语法 1.any any 的含义是:任意类型,一旦将变量类型限制为 any , 那就意味着放弃了对该变量的类型检查。 // 明确的表示a的类型是 any —— 【显式的any】 let a: any // 以下对a的赋值,均⽆警告 a 100 a 你…...
logstash 解析数组格式json数据:split, json
1,需求说明 原始数据格式: 1条 (2*2)》4个指标数据 [{"app":"aa","url":"www.1.com","metrics":[{"name":"cpu","value":11},{"name&quo…...
修改一下达梦disql 提示符
经常用disql的有时某些信息希望提示一下,默认的只显示SQL> 为了方便使用,可以在 glogin.sql 中增加些内容。 vi $DM_HOME/bin/disql_conf/glogin.sql增加以下几行 set time on set lineshow offcol global_name new_value global_name SELECT ins…...
Vue通用组件设计原则
在 Vue.js 开发中,设计通用组件是一项重要的任务,可以提升代码的复用性和可维护性。以下是通用组件设计的主要原则和最佳实践: 1. 清晰的职责划分 通用组件应该具有单一的职责,专注于完成某一类特定功能,而不依赖具体…...
uniapp页面样式和布局和nvue教程详解
uniapp页面样式和布局和nvue教程 尺寸单位 uni-app 支持的通用 css 单位包括 px、rpx px 即屏幕像素。rpx 即响应式px,一种根据屏幕宽度自适应的动态单位。以750宽的屏幕为基准,750rpx恰好为屏幕宽度。屏幕变宽,rpx 实际显示效果会等比放大…...
Ubuntu问题 -- 设置ubuntu的IP为静态IP (图形化界面设置) 小白友好
目的 为了将ubuntu服务器IP固定, 方便ssh连接人在服务器前使用图形化界面设置 设置 找到自己的网卡名称, 我的是 eno1, 并进入设置界面 查看当前的IP, 网关, 掩码和DNS (注意对应eno1) nmcli dev show掩码可以通过以下命令查看完整的 (注意对应eno1) , 我这里是255.255.255.…...
【Java】期末复习章节 未完待续(版)
文章目录 【01算法类】1.1 使用冒泡排序算法对数组a{9, 7, 4, 6, 3, 1,10},按由小到大的规律排序数组中的元素。1.2 从键盘输入一个4位整数n,判断n是否是回文数。(回文数是指,将其数字反转排列的数与其本身相同。例如:…...
C语言数据结构——详细讲解 双链表
从单链表到双链表:数据结构的演进与优化 前言一、单链表回顾二、单链表的局限性三、什么是双链表四、双链表的优势1.双向遍历2.不带头双链表的用途3.带头双链表的用途 五、双链表的操作双链表的插入操作(一)双链表的尾插操作(二&a…...
经验笔记:Git 中的远程仓库链接及上下游关系管理
Git 中的远程仓库链接及上下游关系管理 1. 远程仓库的链接信息 当你克隆一个远程仓库时,Git 会在本地仓库中记录远程仓库的信息。这些信息包括远程仓库的 URL、默认的远程名称(通常是 origin),以及远程仓库中的所有分支和标签。…...
Swift闭包的本质
1 闭包的本质其实是一个引用类型:存储在堆空间上,由堆分配空间,且生命周期由ARC(自动引用计数机制)管理 2 捕获值:闭包会捕获上下文使用到的变量(引用类型会保持引用关系)ÿ…...
【SKFramework框架核心模块】3-2、音频管理模块
推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群:398291828小红书小破站 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【Unity3D框架】SKFramework框架完全教程《全…...
常用Rust日志处理工具教程
在本文中,我想讨论Rust中的日志。通过一些背景信息,我将带您了解两个日志库:env_logger和log4rs。最后,我将分享我的建议和github的片段。 Rust log介绍 log包是Rust中日志API的事实标准,共有五个日志级别࿱…...
深入理解索引(二)
1.引言 在数据库和数据结构中,索引(Index)是一种用于提高数据检索速度的重要机制。本文将详细深入介绍索引。 2. 为什么要使用索引 大家在使用索引之前一定要搞清楚使用索引的目的,因为索引的不当使用可能不但起不到正向作用&a…...
Python 开发工具 -- PyCharm 简介
一、PyCharm 简介 PyCharm 是由 JetBrains 打造的一款 Python IDE。 PyCharm 具备一般 Python IDE 的功能,比如:调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制等。 另外,PyCharm 还提供了一些很好的功能用…...
C# 属性 学习理解记录
字段和属性 左边字段,右边属性 拓展,属性安全: 1、设置public private 和protected 等,只读,只写, 2、在get set 方法时,验证,异常时抛出错误...
使用chrome 访问虚拟机Apache2 的默认页面,出现了ERR_ADDRESS_UNREACHABLE这个鸟问题
本地环境 主机MacOs Sequoia 15.1虚拟机Parallels Desktop 20 for Mac Pro Edition 版本 20.0.1 (55659)虚拟机-操作系统Ubuntu 22.04 服务器版本 最小安装 开发环境 编辑器编译器调试工具数据库http服务web开发防火墙Vim9Gcc13Gdb14Mysql8Apache2Php8.3Iptables 第一坑 数…...
【大数据学习 | Spark-Core】Spark的分区器(HashPartitioner和RangePartitioner)
之前学过的kv类型上面的算子 groupby groupByKey reduceBykey sortBy sortByKey join[cogroup left inner right] shuffle的 mapValues keys values flatMapValues 普通算子,管道形式的算子 shuffle的过程是因为数据产生了打乱重分,分组、排序、join等…...
第六届国际科技创新学术交流大会(IAECST 2024)暨第四届物流系统与交通运输国际学术会议(LSTT 2024)
重要信息 会议官网:www.lstt.org 大会时间:2024年12月6-8日 大会地点:中国-广州 大会简介 第六届国际科技创新学术交流大会暨第四届物流系统与交通运输国际学术会议(LSTT 2024)将于2024年12月6-8日在广州举办&…...
看Threejs好玩示例,学习创新与技术(ogl)
本文标题可能看的你莫名奇妙,什么是ogl?ogl是一个新的三维引擎库,可以简单任务是非常简化的ThreeJS。下面图是它的一个示例,可见虽然它是一个麻雀,但五脏还是比较全的。 1、先说OGL OGL的代码非常简单,主要…...
读书笔记_《创华为.任正非传》_精华书摘
人生经历 43岁,开始创建华为 爷爷:金华火腿乡间厨师 父亲: 1910年生,北平民大经济系读书->职业学校任教->国民党兵工厂会计,组织读书会(读书会后来有很多人在新中国成立后成为高级干部。) 母亲: 高中毕业,乡村教师…...