如何生成ssh keys
当我们部署hexo出现 1git@github.com: Permission denied (publickey). fatal: Could not read from remote repository 这是我们的SSH秘钥没有正确设置或配置在Github上。下面是解决办法。 安装git后会自带ssh,终端输入 ssh 生成ssh keys ssh-keygen -t rsa -C "xxxxx@163.com" 邮箱为注册github的邮箱账号。然后连续回车即可。 找到.ssh文件夹,打开id_rsa.pub文件并复制内容。 添加ssh key到github 登录你的github找到SSH and GPG keys选项,然后New SSH key,把刚才复制的内容粘贴到key,名字可以自定义。 测试ssh绑定是否成功 在终端输入ssh -T git@github.com,出现下图即为成功。 这样我们就可以推送我们的blog到github了。
STM32的输入输出模式介绍
一、浮空输入模式(GPIO_Mode_IN_FLOATING) 工作原理:此模式下,GPIO 引脚不连接内部上拉或下拉电阻,处于一种 “悬空” 状态,完全依靠外部电路来确定引脚的电平。它对外部输入信号的响应最为 “纯粹”,没有内部电阻的干扰,但也因此容易受到外界干扰信号的影响。 代码设置示例(基于 STM32 标准库): 12345// 假设要将 GPIOA 的 Pin0 设置为浮空输入模式GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure); 适用场景:适用于连接一些具有高阻抗输出的外部设备,例如某些传感器在未被触发时输出为高阻抗,如电容式触摸传感器。在这种情况下,使用浮空输入模式可以准确检测传感器输出电平的微小变化,就像在平静的湖面上等待一丝微风引起的涟漪,一旦有变化就能及时捕捉到。 ...
TIM定时中断
TIM定时器(timer)定时器1. 基本介绍 定时器可以对输入的时钟进行计数,并在计算数值达到设定值时触发中断。 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时。 不仅具备基本的定时中断功能,而且还包含内外时钟源的选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。 根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型。 2. 定时器类型 类型 编号 总线 功能 高级定时器 TIM1、TIM8 APB2 拥有通用定时器全部功能,并额外具有重复计数器、死区生成、互补输出、刹车输入等功能 通用定时器 TIM2、TIM3、TIM4、TIM5 APB1 拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从出触发模式等功能 基本定时 TIM6、TIM7 APB1 拥有定时中断、主模式触发DAC的功能 STM32F03C8T6定时器资源:TIM1、TIM2、TIM3、TIM4 2025/3/6 未完
MVM和MVC模式
MVC模式核心内容: Model:负责数据的存储和业务逻辑。 View:负责展示数据、用户界面。 Controller:负责处理用户输入,更新模型和视图。 工作流程: 用户与视图进行交互。 视图将用户的输入传递给控制器。 控制器根据输入调用模型的方法,更新模型的状态。 控制器通知视图更新以反映模型的变化。 优点: 分离关注点,是的代码结构清晰。 便于维护和扩展。缺点 对于复杂的UI控制器可能会变得臃肿。 视图和控制器之间的耦合度较高。 MVVM模式核心内容: Model:负责数据的存储和业务逻辑。 View:负责展示数据,用户界面。 ViewModel:作为中介者,负责数据绑定、命令处理和状态管理。 工作流程: 用户与视图进行交互。 ViewModel监听视图的变化,并更新模型。 ViewModel监听模型的变化,并更新模型。 优点: 数据绑定机制简化了视图和模型之间的同步。 降低了视图和模型之间的耦合度。 缺点: 可能会增加内存开销。 负责的数据绑定逻辑可能难以调试。 总结:选择哪种软件设计模式取决于应用场景和需求。在现在的大多数前端框架的设计模式...
理解闭包
1. 概念闭包的核心是词法作用域,即函数在定义时所处的作用域,而不是在执行时所处的作用域。这意味着,函数可以访问定义时所处的作用域中的变量,即使这个函数在其他地方被调用。 2. 经典示例123456789function outerFun(){ let n = 1 function innerFun(){ console.log(n) } return innerFun}const newFun = outerFun()newFun() //输出 1 在这个例子中: outerFun定义了一个局部变量n和一个内部函数innerFun。 innerFun访问了outerFun,即使outerFun已经执行完毕。 outerFun返回了innerFun,并将其复制给newFun。 当newFun被调用时,它仍然可以访问n,这就是闭包的作用。 闭包的应用场景 数据封装和私有变量:闭包可以用来创建私有变量,防止外部直接访问和修改。1234567891011function createCounter() ...
STM32中断
NVIC优先级分组 抢占优先级 响应优先级 NVIC的中断优先级由优先级寄存器的4位(0-15) 决定,这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级。抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号进行排队。 分组方式 分组方式 抢占优先级 响应优先级 分组0 0位,取值为0 4位,取值0~15 分组1 1位,取值0~1 3位,取值0~7 分组2 2位,取值0~3 位,取值0~3 分组3 3位,取值0~7 1位,取值0~1 分组4 4位,取值0~15 0位,取值为0 EXTI 外部中断 EXTI可以监测指定的GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序。 支持的触发方式:上升沿/下降沿/双边沿/软件触发 支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断 通道数:16个GPIO_Pin,外加PVD输出、RTC闹...
hexo常用指令
基础指令1. 初始化博客项目1hexo init <folder> # 在指定文件夹初始化Hexo项目 2. 新建文章12hexo new "文章标题" # 在 source/_posts 下生成新文章hexo new draft "草稿标题" # 在 source/_drafts 下生成草稿 3. 生成静态文件1hexo generate # 或简写为 hexo g 4. 启动本地服务器1234hexo server # 或简写为 hexo s# 常用参数:hexo s -p 4000 # 指定端口hexo s -o # 启动后自动打开浏览器 5. 部署到远程仓库12hexo deploy # 或简写为 hexo d# 需要提前配置 _config.yml 的 deploy 字段(如Git仓库) 6. 清除缓存和生成文件1hexo clean # 删除缓存和 public 文件夹(解决页面未更新问题) 组合指令1. 生成并生成本地预览1hexo g -s # 等同于 ...
年终总结
工作 不知不觉我已经毕业了快2.5年了,从最初的刚毕业的有志青年成长为职场牛马了。今年收获颇丰,我自己把自学的知识用在了项目中,包括React、flutter、uniapp、微信小程序。最大的收获还是用上了fluter。flutter是最近几个月开始学习使用的,dart在语法上更接近java,学习成本还挺大的,毕竟之前对于java不是很熟,不像uniapp那样熟悉Vue基本就能上手。最近的BLE项目给了我练手的机会,尤其是对于通过BLE进行数据传输这方面有了开发经验。不过对于flutter的掌握尚浅,只能跟着官网的例子学习,知道这样写法会产生这样的效果,而不知道为什么会产生这样的效果。flutter的优点:目前我能明确感知到的是运行速度要比uniapp快(具体什么原因需要我以后探索),并且能很方便的调用手机系统级的文件管理器。 web端也从原来的ruoyi换到了antdpro,其实没啥特别单纯的想增加自己的经验。 我还认真写了软著,等到证书到手才告知什么奖励没有,并且还没有挂我的名字,操蛋了。再让我写我可是不写了。 生活 在生活上我终于完成了我上学时的梦想。出行上我拥有了...
Google Map在React中的使用
为了应对海外业务原本的项目中的聚合标记需要使用全英文底图,最终选择Google云平台的中的Google Map服务。 注册Google Cloud账号地址:https://developers.google.cn/ ,这里网络不好需要科学工具。注册使用google邮箱,并且需要提供海外的信用卡如visa,完成验证 获取apikey在Google Map platform创建应用可以获取APIkey 安装 vis.gl/react-google-map123npm insstall vis.gl/react-google-map oryarn add vis.gl/react-google-map 引入Google Map123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657import React from 'react';import {createRoot} from &...
react项目中如何进行组件的懒加载
有时候我们在项目中引入组件:import *** from ‘url’,一般都是这样引用的,但是有时候们的组件加载比较缓慢,就会出现整体白屏的情况,非常影响体验,还好react为我们提供了方法。 123456789//在组件外u调用lazyconst SomeComponent = lazy(()=>import('url'))export function App(){ return ( <Suspensse fallback={<Loading/>}> <SomeComponent/> </Suspensse> )} 把需要懒加载的组件都这样引入,页面加载的时候就会先展示Loading,而不影响其他的组件加载。