- 博客(1084)
- 资源 (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
3165
6

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

原创 不完全微分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
6003
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
8322
4

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

原创 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
10603

原创 移远NB-IOT模块的BC28与M26与BC26对比
一:引脚对比在16引脚接一个LED灯,如果模块能上网LED会闪烁。二:主要参数对比三:电压范围对比
2018-07-17 11:38:12
14242
1

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

翻译 STM32F103+语音识别模块HBR640
STM32F103+语音识别识别模块HBR640先来看结果演示:用声音控制烧水壶烧水和关闭链接:https://weibo.com/tv/v/Hbb04FWkY?fid=1034:4326638951797661HBR640实物图HBR640框架结构图:串口工具:上位机串口协议: 官方给的STM32F...
2018-06-03 19:13:13
31091
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
6715
5

原创 DS1302时钟芯片在STM32F0中的完整应用代码
DS1302在STM32F0中的应用DS1302在STM32F0中的应用/**********************第一:首先对端口进行配置****************///DS1302时钟端口定义void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO...
2018-05-19 11:27:40
4004
1

原创 用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
5300
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
3183

原创 用树莓派获取天气状况
用树莓派获取天气状况在树莓派上我们可以通过”wether”工具来以命令行的方式获取天气预报信息。首先当然是安装Weather工具,通过命令行 sudo apt-get install weather-util安装结束后便可以通过不通的方式获取天气预报了。最简单的获取天气状况的方法是使用ICAO代码(International Civil Aviation Organization Airport ...
2018-04-11 15:21:55
5836
原创 AbstractAuthenticationToken 认证流程中认证令牌的核心抽象类详解
摘要:AbstractAuthenticationToken是Spring Security认证流程中的核心抽象类,实现了Authentication接口,为具体认证令牌(如用户名密码令牌、JWT令牌)提供基础结构和方法实现。它管理认证状态、存储主体与凭证、处理权限集合,并定义认证令牌的生命周期规范。主要子类包括UsernamePasswordAuthenticationToken(表单登录)、JwtAuthenticationToken(JWT认证)和AnonymousAuthenticationToke
2025-07-31 17:02:54
354
原创 SecurityContextHolder 管理安全上下文的核心组件详解
摘要: SecurityContextHolder是Spring Security的核心组件,负责通过ThreadLocal存储当前线程的SecurityContext(包含用户认证信息如身份、权限等),实现线程隔离和安全信息共享。开发者可通过其API获取/设置上下文,支持控制器、服务层及异步任务(需配置传递机制)。默认自动清理上下文,避免线程复用风险。作为连接认证与业务逻辑的桥梁,它实现了无侵入式安全访问,是权限控制的关键基础。使用时需注意异步场景的上下文传递和线程安全问题。
2025-07-31 16:53:35
564
原创 AuthenticationManager认证流程的核心入口组件详解
摘要:AuthenticationManager是Spring Security认证流程的核心组件,负责接收认证请求并协调认证过程。它不直接处理认证逻辑,而是作为调度中心,将请求委托给具体的AuthenticationProvider(如数据库、JWT或LDAP认证提供者)执行。默认实现ProviderManager通过遍历认证提供者列表,找到匹配的provider完成验证,并处理认证成功/失败结果。该组件支持多层级认证和灵活扩展,是企业级认证场景的关键调度枢纽,其工作流程包括请求接收、provider委托
2025-07-31 16:52:24
405
原创 BasicAuthenticationFilter处理 HTTP 基本认证(Basic Authentication)的核心过滤器详解
摘要:BasicAuthenticationFilter是Spring Security中处理HTTP基本认证的核心过滤器,负责解析Authorization请求头、验证Base64编码的用户名密码,并将认证结果存入安全上下文。它适用于API接口等无状态认证场景,需配合HTTPS保证传输安全。该过滤器自动注册于http.httpBasic()配置中,支持自定义认证逻辑和失败处理。相比表单登录更轻量,但安全性依赖HTTPS,且每次请求都需验证可能影响性能。
2025-07-31 14:07:49
308
原创 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
234
原创 this.getClass()详解
摘要: this.getClass() 是 Java 中用于获取当前对象运行时实际类型的方法,继承自 Object 类,返回 Class 对象。其特点包括:1) 运行时识别实际类型(支持多态);2) 不可重写,行为稳定。主要应用场景: 反射:动态获取类方法、字段等元信息; 类型判断:精准识别多态对象的子类类型; 日志记录:动态获取类名,避免硬编码; 序列化:确定对象类型以正确反序列化。 与 类名.class 的区别在于动态性(运行时 vs 编译时)。需注意:1) 非静态方法调用,否则空指针;2) 代理对象返
2025-07-31 13:47:44
485
原创 LoggerFactory(日志门面框架核心工厂类)详解
摘要:LoggerFactory是Java日志门面框架(如SLF4J)的核心工厂类,提供统一的日志记录入口,通过getLogger方法创建Logger实例,实现日志抽象与具体实现的解耦。它支持按类隔离、单例管理,允许动态切换日志实现(如Logback、Log4j2),而无需修改业务代码。作为日志系统的"枢纽",LoggerFactory确保了应用程序日志的一致性和可维护性,广泛应用于业务日志记录、框架集成和测试验证等场景。
2025-07-31 13:42:28
490
原创 WebSecurityConfigurerAdapter简化配置工具详解
摘要:WebSecurityConfigurerAdapter是Spring Security早期提供的简化安全配置工具,通过继承基类并重写configure方法实现认证授权等配置(5.7版本后已弃用)。核心方法包括配置HTTP安全规则(HttpSecurity)、认证策略(AuthenticationManagerBuilder)和静态资源放行(WebSecurity)。弃用后推荐使用组件化配置方案,通过声明SecurityFilterChain、UserDetailsService等独立Bean实现更灵
2025-07-31 13:35:35
398
原创 ViewControllerRegistry注册视图控制器详解
SpringMVC中的ViewControllerRegistry接口用于快速注册视图控制器,将URL路径直接映射到视图(如JSP/Thymeleaf模板),无需传统控制器处理。主要适用于静态页面、欢迎页等无业务逻辑场景,支持集中管理视图映射、扩展视图技术和配置视图属性。相比传统控制器,它简化了纯视图返回场景的配置,提高开发效率,是"约定优于配置"的典型实践。
2025-07-31 13:23:56
93
原创 WebMvcConfigurer配置接口详解
摘要:WebMvcConfigurer是SpringMVC的核心配置接口,用于在不重写完整配置的情况下扩展MVC功能。它提供多种回调方法,支持配置视图解析器、添加拦截器、处理静态资源、自定义参数解析器、消息转换器和跨域设置等常见场景。相比WebMvcConfigurationSupport,它更轻量且能保留SpringBoot的自动配置。开发者只需实现该接口并覆盖所需方法,即可灵活定制MVC行为,适用于前后端分离、权限管理等业务需求。
2025-07-31 10:38:39
346
原创 如何理解Collection<? extends GrantedAuthority> xxx 泛型集合的声明
本文解析了Java中Collection<? extends GrantedAuthority>泛型集合声明的含义与应用。该声明表示一个存储GrantedAuthority及其子类对象的集合,常用于Spring Security权限管理。核心要点包括:1)? extends表示上界通配符,限定集合元素为GrantedAuthority子类型;2)该类型保证了类型安全,但限制了写入操作;3)与Collection<GrantedAuthority>相比更具灵活性;4)典型应用场景包括S
2025-07-31 10:24:26
318
原创 instanceof 详解
Java中的instanceof运算符用于判断对象是否属于特定类或其子类,或是否实现某接口。其语法为对象引用 instanceof 目标类型,返回布尔值。主要应用场景包括:类型安全检查、接口实现检查、避免强制转换异常以及处理多态对象类型。使用时需注意对null值返回false,不适用于基本数据类型,且与getClass()不同会考虑继承关系。虽然instanceof在类型判断中很有用,但应避免过度使用以保持代码的面向对象特性。该运算符是Java运行时类型检查的重要工具,特别适用于需要安全类型转换和多态处理的
2025-07-31 10:15:08
156
原创 UserDetails用于封装用户的详细信息接口详解
是 Spring Security 中用户信息的“标准化接口”,通过统一的方式封装用户的认证信息(用户名、密码)、权限(角色/权限)和账户状态(是否过期、锁定等)。无论是内存用户、数据库用户还是 LDAP 用户,都可以通过实现接口或使用内置实现类,无缝集成到 Spring Security 的认证和授权流程中。实际开发中,通常需要自定义来适配业务需求(如从数据库加载用户信息)。
2025-07-31 09:59:54
437
原创 如何理解java中Serializable标记接口?
摘要:Java中的Serializable是一个标记接口,用于指示类可被序列化(对象→字节流)和反序列化(字节流→对象)。实现该接口的类需注意:1. 用transient排除敏感字段;2. 显式声明serialVersionUID避免版本冲突;3. 静态变量不参与序列化。其典型应用包括分布式通信、缓存存储等。相比JSON、Protobuf等方案,Serializable是Java原生实现,但性能较低。核心作用是支持对象状态的持久化与跨系统传输。(150字)
2025-07-31 09:55:04
555
原创 Java 安全框架(尤其是 Spring Security)中,Object principal(主体对象)详解
摘要: 在SpringSecurity中,Object principal是认证主体的核心标识,表示当前用户/实体。它作为Authentication对象的关键属性,用于唯一标识用户(如用户名、UserDetails或自定义对象),携带基础信息(ID、权限等),并驱动权限控制与业务逻辑。开发者可通过SecurityContextHolder获取principal,并根据类型(String、UserDetails或自定义类)转换使用,需注意未认证时的判空及序列化问题。其灵活性支持业务扩展,是权限校验和用户信息
2025-07-31 09:33:04
778
原创 SaveRequestAwareAuthenticationSuccessHandler认证成功处理器详解
摘要:SaveRequestAwareAuthenticationSuccessHandler是Spring Security的认证成功处理器,用于在用户登录后自动重定向到最初请求的受保护URL。它通过RequestCache保存原始请求信息(如/user/dashboard),登录成功后优先跳转至该URL,若无则转向默认页面。相比SimpleUrlAuthenticationSuccessHandler的固定重定向,它提供了更流畅的用户体验。配置时需注意Session有效性和权限控制,避免重定向循环。该处
2025-07-31 09:25:56
209
原创 如何理解java中的Handler(处理者)?
摘要: Java中的**Handler(处理者)**是一个通用术语,指负责处理特定任务或事件的组件,具体含义依赖上下文。主要场景包括: Java Web开发:如Spring MVC中的@Controller(处理HTTP请求)、HandlerInterceptor(拦截器)等; Android开发:android.os.Handler类,用于线程间消息传递和UI更新; 自定义场景:如PaymentHandler、LogHandler等处理特定业务。 Handler的核心是接收任务→执行业务→输出结果,需结合
2025-07-31 09:22:16
321
原创 PrintWriter字符输出流类详解
摘要: PrintWriter是Java中用于格式化字符输出的工具类,提供print()、println()、printf()等方法,支持自动刷新缓冲区和简化错误处理(通过checkError())。它可输出到控制台、文件、网络等目标,典型应用包括Web响应(如Servlet返回JSON)、日志文件写入和格式化控制台输出。需注意字符编码设置(推荐通过OutputStreamWriter指定)、资源释放(建议try-with-resources)及自动刷新的性能影响。与BufferedWriter等流相比,P
2025-07-31 09:15:40
481
原创 authenticationException(认证异常)详解
摘要: AuthenticationException是Spring Security中认证失败的基类异常,用于标识认证流程中的错误(如密码错误、账户锁定等)。它通过子类(如BadCredentialsException、LockedException)传递具体失败原因,驱动认证失败处理器(AuthenticationFailureHandler)执行自定义响应(如提示用户、记录日志)。开发者可通过捕获异常类型精准处理,但需注意避免敏感信息泄露。其核心价值在于明确失败原因、增强交互体验,并支持安全监控。
2025-07-31 09:06:04
423
原创 HttpServletRequest 和 HttpServletResponse核心接口区别
摘要:HttpServletRequest和HttpServletResponse是JavaWeb开发中的核心接口,分别处理HTTP请求和响应。HttpServletRequest用于获取客户端请求参数、头信息、Cookies等输入数据,而HttpServletResponse负责设置响应状态、头信息、输出内容等。主要区别在于数据流向:Request是输入(客户端→服务器),Response是输出(服务器→客户端)。典型应用包括Request读取表单数据、获取会话,Response返回JSON、文件下载或重
2025-07-31 09:01:08
526
原创 SpringBoot的src/main/java下完整的文件夹有哪些?
SpringBoot项目的src/main/java下通常包含以下核心文件夹结构: 核心业务层:controller(接口层)、service(业务逻辑)、repository/mapper(数据访问)、model(数据模型,含Entity/DTO/VO); 扩展功能层:config(自定义配置)、exception(异常处理)、util(工具类)、constants(常量)、task(定时任务)、event(事件驱动)。 典型分层采用MVC或DDD架构,通过注解(如@RestController、@Ser
2025-07-30 11:15:01
574
原创 【已解决】@rolesAllowed中有哪些角色?
Java中@rolesAllowed注解用于声明式角色访问控制,常见角色包括: 基础角色:ADMIN(全系统权限)、USER(普通用户)、GUEST(只读访问) 管理角色:SUPER_ADMIN(最高权限)、MODERATOR(内容审核)、MANAGER(部门管理) 功能角色:EDITOR(内容编辑)、AUTHOR(自主创作)、SUPPORT(客服支持) 特殊角色:DEVELOPER(技术资源)、ANONYMOUS(匿名访问)、BILLING(财务权限) 角色命名通常带前缀(如ROLE_),并支持业务定制(
2025-07-29 16:03:13
932
原创 【已解决】CMD中查找占用8080端口的进程,并杀死该进程,通过一条命令实现。
【摘要】本文介绍了一条Windows CMD命令,用于查找并强制终止占用8080端口的进程。该命令组合了netstat、findstr和taskkill功能,首先查找占用指定端口的进程ID,然后提取PID并强制终止对应进程。命令采用for/f循环处理输出结果,其中需注意批处理文件中变量符号的差异(%a需改为%%a)。这条命令实现了端口占用问题的快速排查与解决,适用于开发调试等场景。
2025-07-22 13:31:59
180
原创 【已解决】IDEA运行程序时报错:Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded
摘要:解决IDEA运行程序时"Failed to configure a DataSource"报错的三种方案:1)启动类添加@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})排除自动配置;2)在application.yml中配置spring.autoconfigure.exclude排除;3)若使用数据库,检查并配置完整的数据库连接参数(url、username、password、driver-cla
2025-07-21 16:09:05
220
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人