自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(150)
  • 资源 (1)
  • 收藏
  • 关注

原创 Flutter 环境配置

需要把F:\flutter_windows\flutter_windows_3.0.4\flutter\bin目录配置到path环境变量里。Visual Studio主要用于flutter 桌面软件开发,如果您只是开发flutter app可以不用安装Visual Studio。搭建环境过程中要下载很多资源文件,当一些资源下载不了的时候,可能会报各种错误。Flutter的时候有可能会受到限制。注意:提示输入Y/N的地方全部输入Y。就会多一个flutter项目的创建。安装完成之后,重启应用。

2023-06-11 12:46:54 3706

原创 STM32 gpio外部中断详解

EXTI 即是外部中断和事件控制器,它是由 20 个产生事件/中断请求的边沿检测器组成。每一条输入线都可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每个输入线都可以独立地被屏蔽。挂起寄存器保持着状态线的中断请求。从 EXTI 功能框图可以看到有两条主线,一条是由输入线到 NVIC 中断控制器,一条是由输入线到脉冲发生器。这就恰恰是 EXTI 的两大部分功能,产生中断与产生事件,两者从硬件上就存在不同。

2023-04-16 19:05:50 2655 3

原创 c语言定义宏的时候使用do while

需要注意的是,这个宏的实现可能存在一些问题,例如没有考虑到参数的副作用等情况。因此,在使用宏时需要谨慎考虑其实现方式,以避免潜在的问题。结构的好处是,在使用宏定义时可以像一个独立的语句一样使用,而不会产生语法上的问题。结构来定义宏时,通常是为了确保宏定义中的代码块在使用时可以像一个独立的语句一样被执行。结构本身就是一个语句,因此可以像上面的例子一样使用宏,而不会导致语法错误。结构本质上是一个语句,因此需要使用分号作为结尾,以标识语句的结束。结构也可以避免一些潜在的错误,例如在宏定义中使用。

2023-04-10 23:13:09 1655 1

原创 C语言预处理命令(宏定义和条件编译)

define 叫做宏定义命令,它也是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。return 0;} 运行结果: 120100return 0;} 运行结果: 120注意第 6 行代码int sum = 20 + N,N被100代替了。#define N 100就是宏定义,N为宏名,100是宏的内容(宏所表示的字符串)。

2023-04-07 23:00:42 1113

原创 初识 STM32和STM32F407简介

STM32F407ZGT6.pdf 数据手册是针对 STM32F407 系列的数据手册,主要包括 8 个章节。整个 STM32F407 数据手册,对我们开发以及学习 STM32 来说都比较重要,因此建议大家可以简单的通读一遍这个文档,以加深印象。对于原理图设计,最重要的莫过于引脚定义这一章节了,只有知道了 STM32 的引脚定义,才能开始设计原理图。最小系统就是保证 MCU 正常运行的最低要求,一般是指 MCU 的供电、复位、晶振、BOOT等部分。

2023-04-05 17:25:04 10192

原创 STM32CubeMXA安装和创建项目

STM32CubeMX 运行环境搭建包含两个部分。首先是 Java 运行环境安装,其次是STM32CubeMX 软件安装。

2023-04-05 16:55:48 775

原创 c语言中的内存管理

c语言中的内存管理

2023-03-26 17:38:24 798

原创 c语言结构体详解

c语言结构体详解

2023-03-26 15:30:05 1709

原创 GCC 编译器的主要组件和编译过程

标准C库:核心的C函数都有一个主要的C库来提供。如果在应用程序中用到了C库中的函数,这个库就会通过链接器和源代码连接来生成最终的可执行程序。分析器:分析器将源语言程序代码转换为汇编语言。因为要从一种格式转换为另一种格式(C到汇编),所以分析器需要知道目标机器的汇编语言。链接器:链接器将汇编器生成的单独的目标文件组合成可执行的应用程序。需要注意的是,GCC编译过程的具体实现可能因操作系统和编译器版本的不同而有所差异,但大致流程相似。汇编器:汇编器将汇编语言代码转换为CPU可以执行字节码。

2023-03-26 12:54:28 497

原创 c语言中的函数指针详解

c语言中的函数指针详解

2023-03-25 22:18:43 251

原创 c语言中的数组、数组名、指针的详解

c语言中的数组、数组名、指针的详解

2023-03-25 15:05:41 1307

原创 vite中import.meta.glob的具体用法

vite中import.meta.glob的具体用法

2023-02-26 22:55:06 19670 2

转载 十分钟搞懂WebAssembly

十分钟搞懂WebAssembly

2023-02-03 23:55:12 810

转载 JavaScript引擎是如何解析代码的?

JavaScript引擎是如何解析代码的?

2023-01-30 20:07:47 497 1

转载 像素、分辨率、DPI、PPI

像素、分辨率、DPI、PPI

2023-01-25 11:24:12 558

原创 Javascript 中的this指向

Javascript 中的this指向

2023-01-18 17:42:45 865

原创 基于element v-model属性封装上传组件

基于element v-model属性封装上传组件

2023-01-18 17:32:30 546

原创 Javascript 职责链模式

Javascript 职责链模式

2023-01-18 11:31:13 432

原创 Javascript 模板模式

Javascript 模板模式

2023-01-17 15:46:54 889

原创 Javascript 组合模式

Javascript 组合模式

2023-01-17 14:50:24 576

原创 javascript 命令模式

javascript 命令模式

2023-01-17 11:27:58 719

原创 springboot 实现tree菜单结构(通过递归的方法)

springboot 实现tree菜单结构(通过递归的方法)

2022-12-04 17:21:52 1266

原创 element-ui table组件通过js配置,实现效果

element table组件进行二次封装,简化页面代码,通过js进行配置

2022-09-05 11:54:25 954

原创 oss vue上传文件功能封装

oss vue上传文件功能

2022-06-05 22:46:06 447

原创 Vue导出功能组件封装

Vue导出功能组件封装

2022-06-05 22:41:47 365

原创 树形拖拽功能封装

树形拖拽功能封装

2022-06-05 22:39:09 102

原创 ref、 reactive、toref、torefs的用法,区别

ref、 reactive、toref、torefs的用法,区别ref接受一个内部值并返回一个响应式且可变的 ref 对象。ref 对象仅有一个 .value property,指向该内部值const count = ref(0)console.log(count.value) // 0count.value++console.log(count.value) // 1如果将对象分配为 ref 值,则它将被 reactive 函数处理为深层的响应式对象reactive返回对象的响应式副

2022-03-16 23:07:56 1280 1

原创 vue watch 动态监听echart的变化的需要注意的一个坑

最近公司分配一个任务给我开发一个数据大屏,开始研究起echart的使用,用vue的框架进行开发。要求半个小时刷新一次效果如下:返回的数据放在store里面的:用的是计算属性和watch配合监听 computed: { watchData () { return this.$store.state.crmData.month_revenue }, curData () { return this.$store.state.crmData.month_

2022-01-19 21:42:04 1474

原创 原生小程序封装瀑布流组件

原生小程序封装瀑布流组件最近在公司产品突然说要把首页改成瀑布流的形式,特地研究了一下瀑布流的实现方式,有一个致命的坑需要注意,就是原生的小程序不支持作用域插槽,最后通过研究了一个开源组件,发现的实现方式很有意思,通过抽象节点实现。步骤一:创建两个组件, water-fall 和water-fall-item (具体代码放在文末)步骤二: (抽象节点不知道怎么用,可以看官方文档:抽象节点)water-fall组件中的water-fall.json,需要加配置步骤三:index页面进行引用

2021-12-02 10:25:46 1012

原创 vue cli 4.X.X开发vue项目时,使用eslint进行检验

最近准备进入新的公司,接手的vue项目主要是通过eslint来进行规则检查的,就特地查看了vscode 中开发vue项目如何配置eslint, 本文作为自己的一个学习记录。步骤一:用vue cli4 创建项目步骤二: 用npm 安装eslint项目的库"@vue/cli-plugin-eslint": "^4.5.15","eslint": "^6.7.2","eslint-plugin-vue": "^6.2.2","babel-eslint": "^10.1.0"步骤三: 在根目录.

2021-11-21 16:26:54 974

原创 vue项目中进行svg组件封装及配置

最近刚入新的公司,拿到项目之后,发现一个有趣的事情就是标题的icon是用svg来弄的,这篇文章彻底弄清楚怎么使用1.创建vue项目(通过cli来搭建脚手架,该测试项目是用vue cli4进行配置的)2.创建一个自定义组件具体代码如下:<template> <svg :class="svgClass" aria-hidden="true" v-on="$listeners"> <use :xlink:href="iconName" /> &lt.

2021-11-14 20:17:02 1734

原创 微信小程序 canvas中的restore和save的用法

最近在看微信小程序canvas的功能,突然发现save和restore的用法,官方文档介绍的比较少,自己做了一个demo进行测试实现:index.wxml文件<!--index.wxml--><view class="container"> <canvas canvas-id="mycanvas" style="height:1000px;width:375px"></canvas></view>index.js文件P

2021-11-13 11:33:39 1408

原创 浏览器javascript事件原理分析

这里是引用我们都知道,javascript从诞生之日起就是一门单线程的非阻塞的脚本语言。这是由其最初的用途来决定的:与浏览器交互。单线程意味着,javascript代码在执行的任何时候,都只有一个主线程来处理所有的任务。1.调用栈(执行栈)我们知道,当我们调用一个方法的时候,js会生成一个与这个方法对应的执行环境(context),又叫执行上下文。这个执行环境中存在着这个方法的私有作用域,上层作用域的指向,方法的参数,这个作用域中定义的变量以及这个作用域的this对象。而当一系列方法被依次调.

2021-11-01 12:32:14 497

原创 uniapp 开发小程序页面与组件的生命周期的顺序,父组件与子组件的生命周期的顺序

最近在项目开发的时候,遇到页面生命周期和组件生命周期的问题,就突发奇想,这些生命周期之间的触发顺序到底是怎样的?下面就带你研究一下:1.步骤1 用hbuilder创建一个uniapp项目,页面结构如下:2.组件demo01 嵌套组件demo02组件demo01<template> <view> demo01 <demo02></demo02> </view></template><script&g.

2021-10-20 15:07:03 3148 2

原创 原生微信小程序中页面生命周期与组件生命周期的触发时间顺序

原生微信小程序中页面生命周期与组件生命周期的触发时间顺序1.用微信开发者工具新建一个项目2.新增两个组件,作为测试用3.页面只有log,index作为测试4.现在index页面进行测试将组件挂载到界面中,在页面index.json,进行生命 "usingComponents": { "demo01":"/components/demo01" }开始测试页面生命周期 onLoad(){ console.log(111) }, onShow(){

2021-10-14 15:45:02 651

转载 Vue图片懒加载原理和实现

原理分析先将img标签的src链接设为同一张图片(默认图片),当js监听到该图片进入可视窗口时,再将实际地址应用。实现方法判断元素是否在可视范围 /** * 判断元素是否在可视范围 */ function isVisible(ele){ let windowHeight = window.innerHeight let position = ele.getBoundingClientRect() // 当元素的top偏移量小于页面大小并且大于高度的负数

2021-09-15 11:47:09 1614 1

转载 vue虚拟列表实现原理

vue中实现一个虚拟列表应用场景前端的业务开发中会遇到不使用分页方式来加载长列表的需求。如在数据长度大于 1000 条情况,DOM 元素的创建和渲染需要的时间成本很高,完整渲染列表所需要的时间不可接受,同时会存在滚动时卡顿问题;解决该卡顿问题的重点在于如何降低长列表DOM渲染成本问题,文章将介绍通过虚拟列表渲染的方式解决该问题。为什么需要虚拟列表虚拟列表是对长列表的一种优化方案。在前端开发中,会碰到一些不能使用分页方式来加载列表数据的业务形态,我们称这种列表叫做长列表。比如,手机端,淘宝商品展示

2021-09-15 10:40:20 3176 1

转载 理解Vue中 key 的作用

理解Vue中 key 的作用 key 的特殊属性主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。 如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法。而使用 key 时,它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素。 有相同父元素的子元素必须有独特

2021-09-12 13:23:16 2800

转载 理解VUE双向数据绑定原理和实现

理解VUE双向数据绑定原理和实现 原文链接:  https://www.jianshu.com/p/e7ebb1500613  一、原理: 1.vue 双向数据绑定是通过 数据劫持 结合 发布订阅模式的方式来实现的, 也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变; 2.核心:关于VUE双向数据绑定,其核心是 Object.defineProperty()方法; 3.介绍一下Object.def

2021-09-12 13:16:55 2883

原创 小程序聊天室功能效果(暂时没有语音功能)

基于uniapp开发框架,uview组件库开发的小程序聊天室功能效果;目前已经实现消息自动滚动到底部,已经弹出键盘和更多功能时页面无需自动往上推动,类似微信的效果以下是代码实现:代码仓库:https://gitee.com/huang_ting/chat-components.git由于代码过长,只截取部分,需要的去仓库下载;1.布局分析(1)内容容器中使用scroll-view组件,使用scroll-into-view来绑定内容id,实现自动滚动到底部,(2)子容器chat-info使用

2021-09-07 14:12:16 286

jdk1.8安装包.zip

java sdk 1.8

2021-06-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除