自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

魏波

魏波

  • 博客(1101)
  • 资源 (5)
  • 收藏
  • 关注

原创 C#之windows桌面软件第三课:完整的串口调试助手

接上一节,这节来编写一个完整的串口调试助手!using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Window...

2019-06-14 10:59:31 3170 6

原创 无人机自动悬停的实现方法(大疆无人机为例)

无人机自动悬停的实现方法 自动悬停是指将无人机固定在预设的高度位置与水平位置上,其实也就是一组三维座标。不过,无人机是如何知道自己的位置的呢?其实说起来也很简单,高度一般来说是通过超声波传感器(测量与地面的距离,比较少见)或者是气压计(高度会影响大气压的变化)来测量的,而水平位置的座标则由GPS模块来确定。当然,GP...

2019-05-27 19:03:31 20488

原创 不完全微分PID控制算法用C语言实现!

1.不完全微分PID控制算法框图2.不完全微分PID控制算法公式3.不完全微分PID控制公式用C语言实现微分先行的PID算法实现,包括位置型和增量型两种实现方式。(1)位置型void PIDRegulation(PID *vPID, float processValue){ float thisError; float thisDev; t...

2019-02-01 11:04:21 6010 1

翻译 微分先行PID控制算法用C语言实现!

1.微分先行PID控制算法框图 2.微分先行PID控制算法公式 3.微分先行PID控制公式用C语言实现微分先行的PID算法实现,包括位置型和增量型两种实现方式。(1)位置型void PIDRegulation(PID *vPID, float processValue){  float thisError;  float c1,c2,c3,te...

2019-02-01 10:46:15 8329 4

原创 多传感器信息融合算法总结

多传感器信息融合算法总结

2018-11-17 14:49:46 21438 1

原创 实时摄像头数据传输丢包问题

实时摄像头数据传输丢包问题做一个实时摄像头数据传输的项目,服务器可以向客户端的多个端口发送数据。问题:如果服务器只向一个端口发送数据,客户端只接受一个端口的数据,那么数据传输没问题。但是如果服务器向客户端的多个端口发送数据,而客户端之接收一个端口的数据,这时就会有丢包的现象。是什么原因?如何解决?解决方法:方法一:多线...

2018-09-29 17:10:06 6726

原创 STM8控制4位LED数码管显示数字

用4位LED显示数字#define STB_H GPIOC->ODR |= (uint8_t)(GPIO_PIN_2)#define STB_L GPIOC->ODR &= (uint8_t)(~GPIO_PIN_2)#define DATA_H GPIOE->ODR |=(uint8_t)( GPIO_PIN...

2018-07-27 09:30:13 10608

原创 移远NB-IOT模块的BC28与M26与BC26对比

一:引脚对比在16引脚接一个LED灯,如果模块能上网LED会闪烁。二:主要参数对比三:电压范围对比

2018-07-17 11:38:12 14251 1

原创 NBIOT 移远BC28模块+stm32开发板例程、教程(打通TCP、COAP协议)

为了开发者能够快速入门BC28的开发,加快开发者的项目进度,开发出此款针对BC28的stm32开发板和完善的发送网络数据的示例程序(TCP协议、COAP协议),程序流程逻辑清楚,注释完善,上手就可以玩转开发自己的BC28应用程序。MUC使用STM32L051C8T6型号。这款型号小巧灵活,特别适合用作为产品开发的型号,价格相对偏低同时又可以满足产品开发需求。我们的板子上使用stm32的低功耗串口(...

2018-07-06 17:33:30 24423 2

翻译 STM32F103+语音识别模块HBR640

STM32F103+语音识别识别模块HBR640先来看结果演示:用声音控制烧水壶烧水和关闭链接:https://weibo.com/tv/v/Hbb04FWkY?fid=1034:4326638951797661HBR640实物图HBR640框架结构图:串口工具:上位机串口协议: 官方给的STM32F...

2018-06-03 19:13:13 31100 18

原创 一个完整的DS1302时钟在STM32上的应用实例

一个完整的DS1302时钟在STM32上的应用(代码位置有点乱).整理后的完整代码https://blog.csdn.net/weibo1230123/article/details/80372790一个完整的DS1302时钟在STM32上的应用/*DS1302时钟芯片*/uint8_t read[] = {0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};/...

2018-05-23 14:39:46 6719 5

原创 DS1302时钟芯片在STM32F0中的完整应用代码

DS1302在STM32F0中的应用DS1302在STM32F0中的应用/**********************第一:首先对端口进行配置****************///DS1302时钟端口定义void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO...

2018-05-19 11:27:40 4007 1

原创 MF RC522读卡芯片手册

MF RC522读卡芯片手册。

2018-05-03 11:16:21 7341

原创 用Arduino检测环境中的温湿度

用Arduino检测环境中的温湿度使用的温湿度传感器是 SHT1X 温湿度传感器。其技术规格如下:全部校准,数字输出;接口简单(2-wire),响应速度快;超低功耗,自动休眠;出色的长期稳定性;超小体积(表面贴装);湿度范围 0—100%RH,温度范围-40℃—128.8℃测湿精度±4.5%RH,测温精度±0.5℃(25℃)模块尺寸:32X17mm传感器采用 2-wire 接口,数字输出,所以需要...

2018-04-22 21:06:38 5313 1

原创 Arduino 控制舵机

Arduino 控制舵机#include <Servo.h>Arduino自带的Servo函数及其语句,先来介绍一下舵机函数的几个常用语句吧。1、attach(接口)——设定舵机的接口,只有9或10接口可利用。2、write(角度)——用于设定舵机旋转角度的语句,可设定的角度范围是0°到180°。3、read()——用于读取舵机角度的语句,可理解为读取最后一条write()命令中的值。...

2018-04-22 19:20:30 3185

原创 用树莓派获取天气状况

用树莓派获取天气状况在树莓派上我们可以通过”wether”工具来以命令行的方式获取天气预报信息。首先当然是安装Weather工具,通过命令行 sudo apt-get install weather-util安装结束后便可以通过不通的方式获取天气预报了。最简单的获取天气状况的方法是使用ICAO代码(International Civil Aviation Organization Airport ...

2018-04-11 15:21:55 5842

原创 【已解决】springboot启动时报错:could not resolve dependencies for project

【摘要】"Could not resolve dependencies"错误常见于SpringBoot项目构建时,涉及Maven/Gradle依赖解析失败问题。解决方案分为四步:1.定位错误日志中缺失依赖的GAV坐标;2.检查构建文件中的依赖拼写和版本;3.验证仓库配置(中央/私有仓库URL、代理设置);4.清理缓存(Maven的.m2/repository或Gradle的caches目录)。对于依赖冲突,建议使用dependency:tree/dependencies命令分析,并通过e

2025-08-08 16:36:58 743

原创 @CacheConfig​​当前类中所有缓存方法详解

@CacheConfig是Spring框架提供的类级别缓存配置注解,主要用于统一管理同一类中多个缓存方法的公共参数。它支持配置缓存名称(cacheNames)、键生成器(keyGenerator)、缓存管理器(cacheManager)等属性,避免在每个缓存方法上重复声明相同配置。方法级注解的配置会覆盖类级别的默认设置,两者条件(condition/unless)会进行逻辑与运算。该注解适用于需要共享相同缓存配置的类,能显著提升代码简洁性和可维护性,自Spring3.2起支持所有版本。

2025-08-08 14:39:07 644

原创 application.properties配置文件详解

SpringBoot核心配置文件application.properties详解:该文件用于定义应用运行时的各类参数,覆盖应用核心、数据源、Web、安全、缓存等十余个功能模块。主要配置项包括:应用名称/端口(spring.application.name/server.port)、数据源(spring.datasource.*)、ORM框架(JPA/MyBatis)、Web服务器(Tomcat/Jetty)、安全(SpringSecurity)、缓存(Redis/Caffeine)、日志级别(logging

2025-08-08 14:18:54 293

原创 spring.cache.type=SIMPLE详解

摘要:spring.cache.type=SIMPLE是Spring框架中配置简单内存缓存的参数,使用ConcurrentHashMap实现进程内缓存。它适用于轻量级场景,无需额外依赖,但功能有限,不支持分布式、自动过期等特性。相比于Redis等专业缓存,SIMPLE类型适合小型应用和开发测试环境,具有简单易用的优势,但在生产环境中面临内存限制和功能单一的局限性。开发者需根据实际需求在简单缓存与专业缓存方案间权衡选择。

2025-08-08 14:15:45 657

原创 SonarQube 扫描多个微服务模块

摘要:SonarQube扫描多微服务模块时,需根据代码存储结构选择方案。单仓库多模块(Monorepo)可通过构建工具(Maven/Gradle)自动扫描子模块,在根目录配置sonar-project.properties;多仓库多模块需为每个独立仓库单独配置扫描,通过CI/CD自动化执行。关键点包括确保projectKey唯一性、控制扫描范围、处理依赖关系及优化扫描性能。扫描完成后,各微服务模块将作为独立项目展示质量指标。

2025-08-08 13:36:16 767

原创 Spring Cache 详解

SpringCache是Spring框架提供的声明式缓存抽象层,通过注解简化缓存开发,支持多种缓存实现(如Caffeine、Redis)。核心特性包括:1)@Cacheable/@CachePut/@CacheEvict注解实现缓存操作;2)支持多级缓存和自定义键生成策略;3)提供condition/unless条件缓存控制;4)通过CacheManager统一管理不同缓存实现。文章还探讨了分布式缓存一致性解决方案(Cache-Aside模式)和常见问题应对策略(缓存穿透/击穿/雪崩),最后总结了Sprin

2025-08-08 11:09:36 891

原创 Redis 原理、概念与数据类型;增删改查实例;实现缓存并统计点击量

本文介绍了Redis的核心原理与应用实践。主要内容包括:1)Redis基本概念与特性,如内存存储、持久化机制和丰富的数据类型;2)Redis核心原理,包括单线程模型和IO多路复用技术;3)Python实现用户信息缓存的增删改查操作;4)使用Redis的INCR命令实现高并发点击量统计。文章通过具体代码示例展示了Redis在缓存管理和计数器场景中的实际应用,体现了Redis高性能、原子性和持久化的优势。

2025-08-08 09:03:39 635

原创 自动化测试软件中的防抖(Debounce)和防重(Anti-duplicate)按钮

摘要:自动化测试中防抖(Debounce)和防重(Anti-duplicate)按钮的测试需结合前端交互与后端请求验证。防抖测试需验证高频触发下仅最后一次操作有效(如输入框搜索),防重测试需确保按钮点击后阻止重复提交(如表单)。测试场景包括功能验证、边界条件和异常情况,使用Playwright模拟用户操作,Postman验证接口请求。关键点包括精确控制时间间隔、异步操作等待、状态隔离及多端覆盖,通过系统化测试方案保障功能稳定性。(150字)

2025-08-06 09:07:02 593

原创 各类错误码详解

本文系统梳理了各类技术系统中的错误码体系,涵盖HTTP状态码、操作系统错误码、编程语言错误码、数据库错误码以及网络/业务错误码五大类。重点介绍了每类错误码的典型代表、触发场景及实际应用,如HTTP 404表示资源不存在、Linux ENOENT表示文件不存在、MySQL 1062表示唯一键冲突等。文章强调错误码作为系统"问题语言"的重要性,指出理解错误码需要结合具体场景,通过错误码快速定位问题根源,从而提高调试效率。不同领域的错误码服务于特定场景,从底层系统操作到上层业务逻辑均有对应标识

2025-08-05 17:40:36 740

原创 按钮防抖设计

按钮防抖(Debounce)是一种前端优化技术,主要用于防止用户快速重复点击按钮导致多次触发操作。核心原理是:点击后延迟执行目标函数,若在延迟时间内再次点击则重置计时。实现方式包括原生JavaScript(基础版和立即执行版)、Vue自定义指令和React Hook。优化建议包括:点击后禁用按钮、显示加载状态以减少误操作。注意设置合理的延迟时间(300-500ms),避免内存泄漏,并区分防抖与节流的不同应用场景。该技术适用于表单提交等需要防止重复触发的交互场景。

2025-08-05 17:25:47 398

原创 什么情况下浮动IP(Floating IP)会“漂移”(Drift)

摘要: 浮动IP(FloatingIP)的“漂移”(Drift)指IP地址动态迁移至另一资源,确保高可用性与灵活调度。触发场景包括:1)主实例故障时通过健康检查自动切换;2)管理员手动迁移以进行维护或负载均衡;3)跨可用区/区域容灾;4)负载均衡器动态分配流量;5)弹性伸缩组自动替换实例。实现依赖云平台的虚拟网络接口、健康检查及元数据服务。不同云服务商(如AWS、OpenStack、阿里云)的实现方式各异,需结合业务需求配置漂移策略以最小化服务中断。

2025-08-05 16:41:31 860

原创 浮动IP(Floating IP)的删除通常需要满足什么条件

摘要:浮动IP的删除通常需满足以下条件:1)未绑定任何实例或资源;2)已解除与计算实例、负载均衡器或NAT网关等网络组件的关联;3)无未完成的网络操作;4)未被安全组、路由表等规则引用;5)符合计费和配额要求。操作流程一般为:检查绑定状态→解除关联→清理依赖→执行删除。不同云服务商的具体规则可能略有差异,操作前建议参考官方文档。

2025-08-05 16:38:58 809

原创 Apache Shiro“​​全栈式安全框架​​”简述

摘要: Apache Shiro是一款轻量级全栈Java安全框架,提供身份认证、授权、会话管理和加密等核心安全功能。其模块化设计支持灵活扩展,可对接多种数据源,适用于Web应用、微服务等场景。通过简洁API实现RBAC/PBAC权限控制,支持分布式会话和多种加密算法。相比Spring Security,Shiro具有无依赖、低学习成本、容器无关等优势,能快速集成到各类Java系统中,是企业级应用安全控制的理想选择。(150字)

2025-08-04 16:37:10 601

原创 Jwts用于创建和验证 ​​JSON Web Token(JWT)​​ 的开源库详解

JJWT(Java JWT)库中的Jwts类是Java中处理JSON Web Token(JWT)的核心工具类,主要用于创建和验证JWT。它提供两大核心功能:1)通过Jwts.builder()构建并签名JWT,设置标准声明(如签发者、过期时间)和自定义声明,使用指定算法和密钥签名;2)通过Jwts.parserBuilder()解析并验证JWT,验证签名有效性后提取声明内容。该库支持单点登录、接口鉴权等场景,使用时需注意密钥安全、算法选择和声明时效性,是Java实现无状态认证的首选方案。

2025-08-04 15:54:59 452

原创 equalsIgnoreCase比较两个字符串的内容是否相等,但忽略大小写差异详解

在 Java 中,是String类的一个实例方法,其核心作用是​​(即不区分字母的大小写形式)。它适用于需要“不严格”字符串匹配的场景(例如用户输入校验、不区分大小写的标识符比较等)。

2025-08-04 15:40:12 728

原创 Exception异常体系详解

本文详解Java异常体系:所有异常继承自Throwable类,分为Error(系统级错误)和Exception(程序可处理异常)。Exception又分为受检异常(CheckedException)和非受检异常(RuntimeException)。受检异常必须显式处理,如IOException、SQLException;非受检异常表示代码逻辑错误,如NullPointerException、ArrayIndexOutOfBoundsException。文章还介绍了如何通过继承Exception或Runtim

2025-08-04 15:21:50 930

原创 SimpleDateFormat早期Java 日期格式化工具详解

摘要:SimpleDateFormat是Java早期用于日期格式化的核心工具类,通过模式字符串实现Date对象与字符串的相互转换。其核心功能包括格式化(Date→String)和解析(String→Date),使用预定义字符组合模式字符串定义日期格式。但存在线程不安全问题,多线程环境下需避免实例共享(建议使用ThreadLocal或每次新建实例)。Java 8及以上版本推荐使用线程安全的DateTimeFormatter替代。使用时需注意模式与字符串严格匹配,并考虑时区和语言环境的影响。(149字)

2025-08-04 14:57:51 1187

原创 AbstractAuthenticationToken 认证流程中​​认证令牌的核心抽象类详解

摘要:AbstractAuthenticationToken是Spring Security认证流程中的核心抽象类,实现了Authentication接口,为具体认证令牌(如用户名密码令牌、JWT令牌)提供基础结构和方法实现。它管理认证状态、存储主体与凭证、处理权限集合,并定义认证令牌的生命周期规范。主要子类包括UsernamePasswordAuthenticationToken(表单登录)、JwtAuthenticationToken(JWT认证)和AnonymousAuthenticationToke

2025-07-31 17:02:54 491

原创 SecurityContextHolder 管理安全上下文的核心组件详解

摘要: SecurityContextHolder是Spring Security的核心组件,负责通过ThreadLocal存储当前线程的SecurityContext(包含用户认证信息如身份、权限等),实现线程隔离和安全信息共享。开发者可通过其API获取/设置上下文,支持控制器、服务层及异步任务(需配置传递机制)。默认自动清理上下文,避免线程复用风险。作为连接认证与业务逻辑的桥梁,它实现了无侵入式安全访问,是权限控制的关键基础。使用时需注意异步场景的上下文传递和线程安全问题。

2025-07-31 16:53:35 1035

原创 AuthenticationManager​​认证流程的核心入口组件详解

摘要:AuthenticationManager是Spring Security认证流程的核心组件,负责接收认证请求并协调认证过程。它不直接处理认证逻辑,而是作为调度中心,将请求委托给具体的AuthenticationProvider(如数据库、JWT或LDAP认证提供者)执行。默认实现ProviderManager通过遍历认证提供者列表,找到匹配的provider完成验证,并处理认证成功/失败结果。该组件支持多层级认证和灵活扩展,是企业级认证场景的关键调度枢纽,其工作流程包括请求接收、provider委托

2025-07-31 16:52:24 584

原创 BasicAuthenticationFilter处理 HTTP 基本认证(Basic Authentication)的核心过滤器详解

摘要:BasicAuthenticationFilter是Spring Security中处理HTTP基本认证的核心过滤器,负责解析Authorization请求头、验证Base64编码的用户名密码,并将认证结果存入安全上下文。它适用于API接口等无状态认证场景,需配合HTTPS保证传输安全。该过滤器自动注册于http.httpBasic()配置中,支持自定义认证逻辑和失败处理。相比表单登录更轻量,但安全性依赖HTTPS,且每次请求都需验证可能影响性能。

2025-07-31 14:07:49 566

原创 JpaRepository简化数据访问层(DAO)开发详解

JpaRepository是Spring Data JPA的核心接口,通过"约定优于配置"原则大幅简化DAO层开发。它继承CrudRepository和PagingAndSortingRepository,自动提供18个基础CRUD方法,支持方法名解析自动生成查询(如findByUsernameAndAgeBetween)、分页排序(Pageable/Sort)等功能。同时支持@Query注解自定义复杂JPQL/SQL查询,并与Spring事务无缝集成。相比传统DAO模式,JpaRepo

2025-07-31 13:56:06 467

原创 this.getClass()详解

摘要: this.getClass() 是 Java 中用于获取当前对象运行时实际类型的方法,继承自 Object 类,返回 Class 对象。其特点包括:1) 运行时识别实际类型(支持多态);2) 不可重写,行为稳定。主要应用场景: 反射:动态获取类方法、字段等元信息; 类型判断:精准识别多态对象的子类类型; 日志记录:动态获取类名,避免硬编码; 序列化:确定对象类型以正确反序列化。 与 类名.class 的区别在于动态性(运行时 vs 编译时)。需注意:1) 非静态方法调用,否则空指针;2) 代理对象返

2025-07-31 13:47:44 720

原创 LoggerFactory(日志门面框架核心工厂类)详解

摘要:LoggerFactory是Java日志门面框架(如SLF4J)的核心工厂类,提供统一的日志记录入口,通过getLogger方法创建Logger实例,实现日志抽象与具体实现的解耦。它支持按类隔离、单例管理,允许动态切换日志实现(如Logback、Log4j2),而无需修改业务代码。作为日志系统的"枢纽",LoggerFactory确保了应用程序日志的一致性和可维护性,广泛应用于业务日志记录、框架集成和测试验证等场景。

2025-07-31 13:42:28 748

extern()和 flock()函数

extern()和 flock()函数extern()和 flock()函数

2019-04-11

cJSON是C语言中的一个JSON编解码器

cJSON是C语言中的一个JSON编解码器cJSON是C语言中的一个JSON编解码器

2019-04-11

Lua源代码分析顺序

Lua源代码分析顺序

2019-04-11

Memcached源码分析之内存管理

Memcached源码分析之内存管理Memcached源码分析之内存管理

2019-04-11

coreutils 的所有代码链接

coreutils 的所有代码链接coreutils 的所有代码链接coreutils 的所有代码链接

2019-04-11

空空如也

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

TA关注的人

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