自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 资源 (6)
  • 收藏
  • 关注

原创 模糊PID控制算法的C++实现

模糊PID的C++实现方法

2017-10-14 20:17:53 42597 83

原创 模糊控制算法的C++实现

之前写过一篇关于使用样本数据获取模糊规则的博文,原文 的地址是:http://blog.csdn.net/shuoyueqishilove/article/details/71908410,大家可以参考,本篇文章适合对模糊控制算法有一定了解的人阅读,给大家提供一种如何用C++实现模糊控制的方法,仅供参考。

2017-07-01 10:26:35 23013 23

原创 分库分表与MySQL分区表深度对比分析

本报告旨在对这两种技术进行系统性、多维度的深度比较,涵盖其核心概念、实现方式、性能影响、应用场景、选型标准,并结合2025年的技术现状,探讨它们的组合使用策略及未来发展趋势。分库分表和MySQL分区表是解决数据库扩展性问题的两种不同维度、不同层级的技术手段,它们并非简单的替代关系,而是针对不同瓶颈的解决方案。分库分表的根本目的是突破单一物理节点的硬件资源(CPU、内存、存储、网络I/O)上限,从而实现系统性能和存储容量的线性扩展。要深入理解这两种技术,首先必须明确它们的本质区别,即数据物理分布的范围。

2025-08-28 16:55:45 694

原创 ResourcelessTransactionManager的作用

摘要: ResourcelessTransactionManager 是 Spring 提供的轻量级事务管理器,用于无需外部资源(如数据库)的内存事务场景。核心功能包括模拟事务生命周期(开始/提交/回滚)、确保内存操作原子性(如缓存更新、计算任务),并兼容 Spring 事务抽象层。典型应用包括:内存缓存/计算、单元测试(避免真实数据库依赖)、非持久化消息处理。与资源型事务管理器相比,它不涉及资源锁定或隔离级别控制,适用于纯内存逻辑。需注意:持久化或分布式场景仍需传统事务管理器。

2025-08-13 23:16:29 400

原创 ThreadLocal总结

ThreadLocalMap是ThreadLocal实现功能的主要内部类,他使用Entry数组维护线程数据,Entry是一个弱引用的对象,他是一个Map结构,以ThreadLocal为key,Object为value。ThreadLocal源码中提供了共有的接口set、get、remove等,私有的字段threadLocalHashCode、nextHashCode等主要用于搜索定位数据。ThreadLocal的类关系图如下,他主要是通过内部的ThreadLocalMap实现数据的线程隔离。

2025-08-01 16:37:35 869

原创 Java-Lock锁

ReentrantLock内部原理简析 ReentrantLock通过Sync抽象类及其子类FairSync(公平锁)和NonfairSync(非公平锁)实现锁机制,底层基于AQS(AbstractQueuedSynchronizer)框架。AQS使用volatile修饰的state变量表示锁状态,通过双向链表维护等待线程队列。Node节点包含waitStatus、前后指针和线程信息等字段。关键操作通过CAS指令实现,底层依赖x86的LOCK CMPXCHG、ARM的LDREX/STREX等硬件指令保证原子

2025-07-31 16:29:13 309

原创 SpringBatch配置与入门实例

通过对SpringBatch基础概念的了解,参考:SpringBatch使用介绍任何技术用起来之后,再去探究内部细节的原理,才会事半功倍。下面记录一下笔者在SpringBoot项目中集成SpringBatch,并且通过一个小的实例展示如何简单使用它进行批处理。需要引入以下依赖我这里用的SpringBoot版本是2.7.18,引入spring-boot-starter-batch时不需要再指定版本号,他会自动匹配对应版本,拉去maven依赖。需要新建配置类SpringBatchConfig,用于配置基础的

2025-07-05 16:37:18 554

原创 SpringBatch使用介绍

一般来说,一个典型的批处理程序:从数据库、文件或队列中读取大量的记录。以某种方式处理数据。以修改后的形式写回数据。Spring Batch将这种基本的批量迭代自动化,提供了将类似事务作为一个集合进行处理的能力,通常是在离线环境下,无需任何用户互动。批量作业是大多数IT项目的一部分,而Spring Batch是唯一提供强大的、企业级解决方案的开源框架。

2025-07-05 15:57:31 777

原创 SpringBatch处理数据性能优化

摘要:本文介绍了Spring Batch同步与异步处理Step的实现方式。同步处理采用ItemReader批量读取数据,ItemProcessor转换数据,ItemWriter写入数据的流程。异步处理通过AsyncItemProcessor和AsyncItemWriter包装,配合线程池实现多线程处理,可提升大数据量场景下的性能。文中提供了两种模式的代码实现示例,包括批量读取游标设计、线程池配置等关键实现细节,为批处理系统优化提供了可行方案。

2025-06-27 10:50:56 406

原创 Cline中配置MCP

【代码】Cline中配置MCP。

2025-04-22 15:58:15 562

原创 deepseek:2025年Java面试必刷高频LeetCode题目

优先掌握链表、数组、动态规划类题目,再扩展至树和设计题。每类题目需至少掌握两种解法(如递归/迭代、暴力/优化),并注重代码规范(边界处理、变量命名)。

2025-03-15 20:59:57 634

原创 deepseek: 通过命令行将 Windows 11 的右键菜单改为 Windows 10 风格

要通过命令行将 Windows 11 的右键菜单改为 Windows 10 风格,可以使用 reg 命令直接修改注册表。通过以上方法,你可以快速使用命令行将 Windows 11 的右键菜单改为 Windows 10 风格,并随时恢复。修改注册表后,需要重启资源管理器以使更改生效。修改注册表有一定风险,建议提前备份重要数据或创建系统还原点。需要以管理员身份运行命令提示符或脚本,否则会提示权限不足。启用 Windows 10 风格的右键菜单。

2025-03-03 16:59:02 207

原创 Jetson Nano B01安装ubuntu20.04-LTS

jetson nano官方最高支持的ubuntu版本是18.04,这版本有点低,不支持ROS2 Foxy安装,ROS2 Foxy需要ubuntu版本为20.04及以上,支持Jetson Nano的ubuntu20.04-LTS镜像如下:Qengineering/Jetson-Nano-Ubuntu-20-image: Jetson Nano with Ubuntu 20.04 image下载镜像之后按照如下链接进行刷机:https://blog.csdn.net/IvoryDai/article/detai

2024-01-06 10:43:16 2932 1

原创 Ubuntu20.04安装ROS2 Foxy

如果这一步有问题,参考:https://blog.searchinfogo.com/2021/01/27/github-connection-refused/时访问packages.ros.org无法成功,主要的原因是没有外网,而自己整一个外网代理又非常麻烦,所以一般是通过设置国内源来实现。安装ROS2的教程在网上很多,但是我操作之后都有问题,大部分的问题是在。默认情况下,每次打开新shell终端时都必source安装文件,执行。替换为国内的镜像源的域名,这里我替换为清华大学源域名。启动listener。

2024-01-06 10:35:26 2305 1

转载 BeanFactory和FactoryBean的区别

但少数情况下,容器中的 bean 本身就是工厂,作用是产生其他 bean 实例。即一个Bean A如果实现了FactoryBean接口,那么A就变成了一个工厂,根据A的名称获取到的实际上是工厂调用getObject()返回的对象,而不是A本身,如果要获取工厂A自身的实例,那么需要在名称前面加上’&'符号。BeanFactory是一个接口,它是Spring中工厂的顶层规范,是SpringIoc容器的核心接口,它定义了getBean()、containsBean()等管理Bean的通用方法。

2023-10-23 19:48:28 203

原创 Sharding-JDBC分库分表-分布式事务-5

分库分表必然会涉及到分布式事务的问题,关于这方面,sharding JDBC为用户提供了两种分布式事务解决方案:XA事务和BASE事务,这两个的区别是:XA事务,追求强一致性,锁定的资源范围比较大,是个并发量要求不高、事务锁定时间短的场景;而BASE事务是一种柔性事务,它追求的是最终一致性,对资源锁定范围小,适合高并发的场景。sharding JDBC分布式事务介绍。

2023-09-12 22:46:51 665 1

原创 Sharding-JDBC分库分表-自定义分片算法-4

自定义分片算法时通过配置分片策略类型和算法类名,实现自定义扩展。允许向算法类内传入额外的自定义属性,传入的属性可以通过属性名为props的类实例取出。自定义分片算法有三种类型标准分片算法复杂分片算法hint分片算法算法分类需要实现接口说明标准支持单个分片键,需要实现精确和范围分片接口复杂支持多个分片键,但是分片键数据类型需要一样hint没有分片键,分片值通过hint注入而不是SQL。

2023-09-10 17:41:43 1280 1

原创 Sharding-JDBC分库分表-自动配置与分片规则加载原理-3

分片规则、审计规则、key生成规则都是通过SPI的方式加载,自动配置类ShardingSphereAutoConfiguration中创建ShardingSphereDataSource的时候,会加载配置的分片规则,创建核心配置类ShardingRule,在ShardingRule的创建中会通过SPI的方式加载分片规则。其中,创建数据源bean时会根据不同的模式创建不同的bean,本地模式直接从配置文件中加载,配置中心模式就从配置中心加载。

2023-09-03 18:44:46 1113

原创 Sharding-JDBC分库分表-自定义分布式ID生成算法-2

Sharding JDBC自定义分布式ID生成算法通过SPI方式提供扩展能力,算法需要实现接口KeyGenerateAlgorithm

2023-09-02 22:47:53 1080

原创 Sharding-JDBC分库分表-入门-1

Apache ShardingSphere 是一款分布式 SQL 事务和查询引擎,可通过数据分片、弹性伸缩、加密等能力对任意数据库进行增强官网:https://shardingsphere.apache.org/index_zh.html官方样例:https://shardingsphere.apache.org/blog/cn/material/oct_12_4_updates_and_faq_your_1_minute_quick_start_guide_to_shardingsphere/

2023-08-29 23:38:44 362

原创 HTTPS安全连接的建立过程

https安全连接的建立过程

2023-06-07 10:17:11 2210

原创 异常信息记录入库

全局异常异步记录到数据库

2023-02-25 18:05:20 1434

原创 Git回滚代码到某个tag

开发中总会有人不小心将代码提交到错误的分支上,比如应该提到dev分支的代码提交到了master分支,可以使用git回滚到tag的方法进行回滚。2、寻找tag提交ID显示如下结果commit f2acd7b8e58fe053fbf4feadc8208a07b47d7d4d (tag: 22.5.0.3, tag: 22.5.0.2, tag: 22.5.0.1)commit后面就是提交ID4、推送到源仓库注意,这需要开启仓库的force push权限

2022-12-07 11:25:47 4164

原创 AOP核心

面相关切面编程,利用AOP可以对业务的各个部分进行隔离,使得业务逻辑各部分之间耦合度降低,提高开发效率。基于AspectJ实现AOP操作有两种方式实现:XML配置和使用注解。

2022-10-17 23:31:48 512

原创 MyBatis的Mapper接口自动注册原理

MapperScan注解提供了一种使用Java配置的方式来注入mapper接口,功能与在xml文件中通过MapperScannerRegistrar配置MapperScannerConfigurer是一样的,因为这个注解使用了@Import注解导入了MapperScannerRegistrar。如上所示的Mybatis的mapper接口,在定义之后,可以直接在service实现类中使用,那么这些Mapper是如何被加载的呢?整个Mapper的加载过程可以归纳为。注册Mapper接口。

2022-10-17 15:51:21 2262

原创 Spring IOC核心知识

控制反转(IOC: Inversion Of Control),把对象的创建和对象之间的调用过程都交给Spring管理,从而降低耦合度。

2022-10-10 20:32:40 965

原创 SpringBoot配置自动加载机制

自动配置加载机制

2022-10-10 14:53:26 2473 1

原创 自定义注解实现分布式限流

自定义注解实现分布式限流实践

2022-08-27 12:02:55 540

原创 Fiddler拦截HTTPS请求

fiddler拦截浏览器的HTTPS请求

2022-07-30 10:34:00 1466

原创 Springboot中使用LUA脚本进行Redis操作

Springboot中使用LUA脚本进行Redis操作

2022-07-27 19:56:54 2175

原创 电商数据模型设计

电商数据模型设计

2022-07-27 19:42:50 1677

原创 数组的字典排序

数组的字典排序

2022-06-09 12:00:17 1287

原创 Spring事务执行的原理(@Transactional)

事务执行的原理(@Transactional)Spring框架默认使用基于CGLIB的AOP动态代理实现,根据前面的CGLIB动态代理原理的分析(Spring动态代理原理)。可以发现,应用启动的时候,在@EnableTransactionManagement注解的作用下会自动生成代理对象CglibAopProxy,并会为方法设置对应的拦截器链;当调用带有@Transactional注解的方法时,DynamicAdvisedInterceptor#intercept能够获取到该方法的拦截器链,由于方法带有事

2022-05-12 16:08:09 1167

原创 Spring的动态代理原理

Spring动态代理原理Spring动态代理有两种:CGLIB动态代理和JDK动态代理。JDK动态代理可以代理接口,不能代理没有实现接口的类;而CGLIB通过字节码技术可以动态生成被代理类的子类,从而可以代理没有实现接口的类;但是不能代理非public和final的方法,因为子类不可见。Spring框架中使用DefaultAopProxyFactory来确定使用CGLIB或者JDK的动态代理一般满足以下条件之一 就会进行CGLIB动态代理:optimize标志位被设定proxyTargetCl

2022-05-09 21:40:43 2261

原创 Spring事务原理之关键注解

Spring事务Spring事务通过AOP切面来增强目标方法的调用,控制事务的开启、提交和回滚。主要的接口有:TransactionManager:Spring事务管理器实现的标志接口,对标准事务和反应式事务都可用;TransactionStatus:代表事务的状态,事务代码可以使用它来获取事务的状态,也可以在失败的时候,编码式的请求一个回滚;他还包含了SavepointManager接口,用来访问保存点管理信息;注意只有底层事务管理器支持的时候,才能使用保存点管理器。TransactionDef

2022-05-07 20:59:46 609

原创 Feign使用和原理的总结

Feign总结使用引入依赖 <properties> <java.version>1.8</java.version> <spring-cloud.version>2021.0.1</spring-cloud.version> </properties> <dependencies> <dependency> <g

2022-04-22 17:45:30 2355

原创 SpringBoot启动原理

启动原理@SpringBootApplicationpublic class Application extends SpringBootServletInitializer { public static void main(String[] args) { // 新建SpringApplication SpringApplication app = new SpringApplication(Application.class); // 执行r

2022-04-19 19:19:28 465

原创 Ribbon负载均衡的原理

Ribbon依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.RELEASE</version> <relativePath/> <!--

2022-04-06 23:59:37 1019

原创 基于模板模式与多线程的高效集成数据处理

高效处理集成数据从外部系统集成的数据一般需要经过一定的处理才能写入正式表,常见的实现需要满足下面几点:定时任务触发集成数据后处理防止定时任务频繁触发导致数据错乱处理数据要足够快大批量数据同时处理不能出现OOM定时任务平台回调反馈结果以上几点同时满足,集成数据才能准确。但是经过实践发现,团队写的代码很多都是重复的,可以考虑使用模板方法模式对集成数据进行优化。1、算法结构如图,抽象模板类AbstractIntegrateTemplate中的integrate方法定义了算法执行的

2022-03-22 14:40:04 668

原创 责任链模式

设计模式-责任链模式责任链模式(Chain of Responsibility Pattern):避免请求的发送者与接收者耦合,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。算法结构如上图,AbstractHandler定义了抽象方法handle(),具体的handle()业务逻辑交给子类HandlerA、HandlerB、HandlerC去实现,在AbstractHandler中的next字段可以将具体的Han

2022-03-12 18:20:52 748

proteus仿真步进电机

利用51单片机实现步进电机的控制,包括实时正反转,加减速控制

2016-04-22

mini数学矩阵运算库 C语言

本数学矩阵运算库采用C语言编写,可以实现基本的数学矩阵运算,如加减,相乘,求行列式的值,求矩阵的逆等,使用方便。

2018-05-24

基于英飞凌XC2000的电动车用PMSM矢量控制程序,带CAN模块通讯

PMSM矢量控制程序,CAN通讯

2017-04-04

自适应模糊PID代码 C++实现

基于C++ 的模糊PID控制代码,参考许多论文制定的PID参数调整模糊规则,代码对于想了解这方面的人有一定的借鉴意义。但是不保证什么控制对象都能用,具体对象具体设计。

2018-05-24

模糊控制器 C++实现

本模糊控制器采用C++语言是实现,完全可以转化为C代码使用。本控制器对于想要实现模糊控制落地的朋友来说有一定的借鉴意义,但是具体控制对象的模糊规则和隶属度函数制定有所区别,不能一概而论。

2018-05-24

空空如也

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

TA关注的人

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