自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 资源 (10)
  • 收藏
  • 关注

原创 Spring源码笔记之SpringIOC--(5)BeanFactory的扩展之ListableBeanFactory

设计只提供了获取单个Bean的能力,为了额外提供获取所有bean(List Beans)的能力,定义了。中获取所有bean的操作会不会去父容器parentBeanFactory中搜索呢?都需要提供遍历bean的能力,但是这是一个比较常用的能力。在spring中我们可能会有获取所有bean的需求,但是。BeanFactory扩展,提供获取所有Bean的能力。BeanFactory扩展,提供访问父容器的功能。BeanFactory扩展,提供自动注入的能力。工具类实现递归搜索父容器所有bean的诉求。

2024-02-20 08:00:00 1125

原创 Spring源码笔记之SpringIOC--(4)BeanFactory的扩展之HierarchicalBeanFactory

在实际使用过程会通过引用父容器parent实现BeanFactory的嵌套调用,如下。BeanFactory扩展,提供获取所有Bean的能力。提供配置、分析和修改bean定义,以及预实例化单例能力。先引用BeanFactory的类继承关系图来看一下。BeanFactory扩展,提供访问父容器的功能。BeanFactory扩展,提供自动注入的能力。Spring默认的BeanFactory实现。提供配置BeanFactory的能力。分层功能的扩展,它提供了。这种关系有点类似与单链表。

2024-02-19 08:00:00 892

原创 Spring源码笔记之SpringIOC--(3)什么是BeanFactory?

是SpringIOC的最顶层接口,涵盖了IOC容器最基本的操作。提供了IOC容器获取所有Bean、配置Bean的额外能力。所有的实现类持有所有Bean的定义,用一个唯一的字符串(即Bean的名字)区分。提供单例Bean(singleton scope)与多例Bean的能力(prototype scope),自从Spring2.0后Bean的作用范围不单单局限于单例与多例,还具有提供请求(request)与对话(session)级别的范围。是IOC容器注册Bean的入口,也是Bean配置中心。

2024-02-18 08:00:00 893

原创 Spring源码笔记之SpringIOC--(2)从BeanDefinition到Bean实例

BeanFactory扩展,提供获取所有Bean的能力。提供配置、分析和修改bean定义,以及预实例化单例能力。)提供了获取bean实例的方法。BeanFactory扩展,提供访问父容器的功能。BeanFactory扩展,提供自动注入的能力。Spring默认的BeanFactory实现。注册BeanDefinition接口。提供配置BeanFactory的能力。

2024-02-17 23:06:24 1387

原创 Spring源码笔记之SpringIOC--(1)从XML文件到Bean的描述对象BeanDefinition

会被递归调用,BeanDefinitionParserDelegate是类内的对象,所以为了保证递归调用时类内能够使用正确的Delegate,此处。的set中,如果能add说明Resource未被加载,等加载完成后再remove,避免重复加载相同的Resource。最开始学习spring的入门实践是,编写一个xml文件,然后利用spring读取xml文件中配置的bean。的注册过程,但是实际使用IOC过程中,并不是直接使用。编写代码加载这个bean,并获取bean的实例。具体bean的加载实现在。

2024-02-17 22:58:57 794

原创 Kubernetes入门笔记 ——(3)理解pod对象

一个有A、B两个容器的pod,如果使用docker拉起,那AB会存在依赖关系,如A先启动,B共享A的Volume等资源。Infra容器必须占用足够小的资源,它使用k8s.gcr.io/pause的特殊镜像,是一个由汇编语言编写、永远处于暂停状态的容器,只有100-200KB。所以对于Linux进程组中每一个进程,k8s中都需要一个单独的容器,这些容器需要互相依赖紧密合作,pod的概念就应运而生。容器和pod是什么关系?pod只是逻辑的概念,pod内的容器共享了某些资源,k8s引入pod目的是容器设计模式。

2023-12-09 17:42:00 656

原创 Kubernetes入门笔记——(2)k8s设计文档

​k8s最初源自谷歌的Brog项目,架构与其类似,主要包括etcd、api server、controller manager、scheduler、kubelet和kube-proxy等组件。: 负责资源的调度, 按照预定的调度策略将 Pod 调度到相应的机器上;:负责维护容器的生命周期,也负责磁盘(CVI)和网络(CNI)的管理。api server里又有认证、鉴权、REST接口、调度触发等模块。:负责维护集群的状态,比如故障检测,自动扩展、滚动更新等。:资源操作的唯一入口,并提供认证、鉴权等功能。

2023-12-06 23:55:24 945

原创 Kubernetes入门笔记——(1)Kubernetes是什么

容器比docker是一个更大的概念,一开始Google工程师便使用Linux的Namespace技术,将多个应用安装在一台服务器上并相互隔离。这样一个docker容器只能“看到”自己的进程,且网络、存储、计算等资源都是被隔离和限制的,类似于运行在一个沙箱中。Kubernetes是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、扩缩容、运维等功能。k8s集群提供了多个容器的编排、扩展、资源管理、运维等一系列功能,基于容器的部署更为方便,可靠性更高,是一个强大的容器管理框架。

2023-12-06 22:44:55 634

原创 日志框架LOG4J2系列六——log4j2使用包装器

slf4j+log4j2组合使用时,有时会使用包装器LoggerWrapper(装饰器LoggerDecorator)对原生的Logger能力进行增强,如修改日志的入参或对日志增加一些定位信息。,并在打印位置时使用它在每个日志事件中堆栈进行遍历,打印全限定类名(FQCN)的上一个堆栈的行号。没有指定FQCN,导致Log4j2认为FQCN是其内部的Logger,他的上一层日志事件是。期望日志为打印业务日志的类名与行号,使用log4j2的。发现log4j2打印的行号错误,都打印相同的行号,且是。

2023-11-02 12:07:09 640

原创 MapStruct使用指南(二)——MapStruct数据类型转换

如果Mapstruct有些场景不能完成,可以自定义转化方法// 自定义方法实现 static PersonDto toPersonDto(Person person) {} }也可以使用@Mapping的表达式属性expression显式指定某一个参数。注意expression不会自动导入,所以表达式中要使用其他类的方法,要带全类名(包名.类名.函数名)或者使用@Mapper的imports显式导入所需要的类。

2023-07-05 23:46:51 12735

原创 MySQL学习笔记(2)——MySQL的锁

1、MySQL索引的类型主要有哪些?B-Tree索引、哈希索引、空间数据索引(R-Tree)、全文索引、其他索引(聚簇索引、覆盖索引等)。2、常见存储引擎与其支持的索引?B-Tree索引:InnoDB,MyISAM,NDB(大部分存储引擎都支持)哈希索引: Memory空间数据索引:mysql功能并不完善, PostgreSQL数据库PostGIS较好全文索引:MyISAM聚簇索引: InnoDB覆盖索引:InnoDBB-TREE索引如何理解?...

2022-03-27 23:38:58 524

原创 MySQL学习笔记(1)——MySQL的并发、事务与MVCC

基本知识一、MySQL的并发、事务与MVCC1.1 MySQL的架构1.2 并发控制1.2.1 读写锁1.2.2 锁粒度1.3 事务1.3.1 事务的四个特性ACID1.3.2 死锁1.3.3 事务日志1.3.4 隔离级别产生的问题1.3.4.1 三种因隔离级别产生的问题1.3.4.2 事务的四种隔离级别1.3.4.3 修改事务的隔离级别1.3.5 事务的自动提交1.3.6 事务型表与非事务型表1.3.7 InnoDB隐式与显式锁定1.4 多版本并发控制(MVCC)1.4.1MVCC的特性1.4.2 Inn

2022-01-09 16:04:38 1203

原创 Python快速入门(6)——for/if/while语句

除了数字支持基本运算符外,python支持幂乘(**),python的字符串、列表、元组都支持。python支持range()生成数值列表,并支持min、max、sum等常见操作。代表真和假,与常见的c/c++/java不同。Python 为了和自身的空值。遍历字符串列表与索引值,使用enumrate,可以指定start起始值。(首字母大写)保持风格统一,选择了首字母大写的。加法为添加元素,乘法为重复。while循环的语法为。遍历字符串列表并打印。

2026-02-08 14:42:16 323

原创 Python快速入门(5)——字典

类似于列表字典也是一种可变对象,可以随时添加删除元素。删除指定 key 的键值对,返回 value;根据键值直接访问修改value值,或者使用。通过指定key访问字典中的value值。直接使用键值对方式可以添加元素,使用。删除指定 key / 整个字典;从可迭代对象创建字典,指定默认值。删除并返回最后插入的键值对;类似列表,字典也有浅拷贝。类似于C或Java中。

2026-02-03 08:00:00 1425

原创 Python快速入门(4)——元组

如果想使用不可变列表,则需要用到元组。元组使用圆括号表示(())python中列表为。

2026-02-03 07:30:00 20

原创 python的copy和[:]切片复制哪个效率更高

效率层面copy()略高于[:]切片(快约10%-20%),列表越小差异越明显,超大列表差异可忽略;核心逻辑:两者都是浅拷贝,时间/内存复杂度一致,差异仅在于语法调用开销;场景选择追求效率/可读性 → 用copy();需切片+拷贝/兼容Python 2 → 用[:];通用写法 →list(lst)(效率与copy()持平,兼容性最好)。关键提醒:两者的效率差异在绝大多数业务场景中可忽略,优先保证代码的可读性和语义清晰性,比微乎其微的效率提升更重要。

2026-02-02 08:30:00 560

原创 Python快速入门(3)——列表

类似与C/Java的数组,在Python中列表替代,列表用方括号([])表示,用逗号分割元素。与python字符串不同的是列表支持索引修改元素值。python中列表都是动态的,其实严格来说跟c++的。并不直接返回一个列表,而是返回一个迭代器,这个一种。类似与C/Java,Python的字符串是。python也有浅拷贝与深拷贝之分,使用。类似于字符串的索引访问,列表也支持。,将列表转为字符串后插入到列表尾部。对列表永久排序(默认正序,在指定索引添加元素,使用。用一个列表扩充原有列表。:扩充原有列表应该使用。

2026-02-02 08:00:00 725

原创 Python快速入门(2)——数字

跟其他语言一样python支持整数,浮点数。其中整数除法要注意,在python2中两个整数相除只保留整数部分,但是python3中会都保留。,使用str()方法将数字转为字符串,这是跟C/Java的一个明显区别。对于字节流处理中会用到进制之间的转换。Python 作为强类型语言,

2026-02-01 13:33:14 53

原创 python反转列表reverse()和[::-1]哪个效率更高

效率层面reverse()远高于[::-1](原地操作无内存开销),列表越大优势越明显;场景层面无需保留原列表 → 用reverse()(高效、省内存);需要保留原列表 → 用[::-1](简洁),或“拷贝+reverse()”(更高效);特殊场景:元组/字符串等不可变序列,只能用[::-1]反转。

2026-02-01 13:13:16 728

原创 Python快速入门(1)——字符串

本文介绍了Python字符串的基本操作,主要面向有其他编程语言基础的读者。内容涵盖字符串索引访问(包括正序、倒序和切片)、常用方法(如获取长度、判空、大小写转换、删除空白字符)以及字符串分割操作(split()和partition())。特别说明了Python字符串切片的特点和使用技巧,如步长设置和字符串反转等。文章通过代码示例展示了各种字符串操作的具体用法,帮助读者快速掌握Python字符串处理的核心功能。

2026-01-25 15:40:30 723

原创 Java中strip与trim()的区别

(小于等于\u0020字符,如空格、\t\n\r\f等),无法处理中文全角空格,不间断空格(\u00A0)等Unicode空白。:去除首位全部的Unicode空白字符。jdk11及以上版本,java的。方法,那么原来的删除空白。仅支持ASCII字符场景。:仅处理字符串首尾的。

2026-01-25 15:07:10 293

原创 Python入门——__init__.py文件作用

时,能够被导入的成员(模块、类、函数、变量)」,从而隐藏包的内部细节,提升封装性,避免不必要的成员暴露。的原始核心作用,即使文件内容为空,也能实现「标记目录为 Python 包」的效果。,可用于完成包的初始化配置、定义全局变量、加载依赖等操作。通过__all__变量控制包的「公共接口」(封装性)包内的其他内部细节,同时也简化了外部导入(无需写。中直接定义的成员,无法导入子模块的内容。包被导入时,自动执行其中的初始化代码。中指定的 4 个模型,而不会暴露。导入某个包时,Python 会。

2026-01-18 22:15:52 726

原创 Spring Cloud入门—— (1)Spring Cloud Alibaba生态组件Nacos3.0本地部署

Nacos 用于生成JWT Token的密钥,使用长度大于32字符的字符串,再经过Base64编码。下面会有很多创建文件拉取等基于linux的命令动作,可以使用git bash或者cmder,或者自己查找window下cmd或powershell的命令。: Nacos Server端之间 Inner API的身份标识的Value,必填。: Nacos Server端之间 Inner API的身份标识的Key,必填。命名空间启动nacos,新建一个nacos的命名空间。使用nacos的快速启动模式。

2026-01-04 22:30:26 1128

原创 Kubernetes入门笔记 ——(4)Windows搭建k8s测试集群

可以选择集群节点个数。一般基于一致性协议,3节点是较好的选择。创建K8S集群,如果没有安装k8s集群可能需要提前安装一下。配置Docker Desktop的镜像源。下载安装Docker Desktop。配置阿里云/华为云等云厂商的镜像地址。集群部署3节点的nacos集群。创建一主三副的k8s集群。测试使用k8s的命令。

2026-01-02 17:45:25 303

原创 OpenAPITools使用——FAQ

建议排查配置项的是否为true</</</</</</</</</</</

2025-12-28 22:40:33 358

原创 OpenAPITools使用——入门介绍与生成SpringController/SpringCloudFeign代码

摘要 本文介绍了API-First开发理念,即以API规范(如OpenAPI/Swagger)为核心驱动开发流程。通过OpenAPI Generator工具,可以直接从yaml接口文件自动生成服务端Controller代码和客户端SDK(如okhttp/feign)。文章演示了项目结构搭建、maven配置,并提供了一个包含ping和curl接口的yaml示例,展示了如何通过规范化的接口定义同步推进前后端开发,提高开发效率。项目已在GitHub开源,支持JDK21环境。

2025-12-25 08:41:12 749

原创 Java类加载机制——双亲委派与自定义类加载器

Java类加载机制摘要 Java类加载机制是JVM将.class文件加载到内存并转换为可用类型的过程,包括加载、验证、准备、解析、初始化等阶段。核心采用双亲委派模型,通过启动类加载器、扩展类加载器、应用程序类加载器的层级结构确保类加载的安全性和唯一性。该模型可防止核心类被篡改,避免类重复加载,同时为模块化系统提供基础。类加载器通过parent委派机制实现自上而下的加载顺序,必要时可通过重写loadClass()方法打破双亲委派(如热部署等场景)。Java 9模块化系统对类加载器架构进行了调整,废弃了传统扩展

2025-12-20 21:07:02 988

原创 Java的SPI机制——动态加载ServiceLoader

核心代码仅依赖接口,不直接引用实现类,避免了 “硬编码 new 实现类” 的耦合问题,修改 / 替换实现无需改动核心代码。最核心的价值:第三方只需遵循 SPI 规范实现接口、配置文件,无需修改原有程序,即可无缝接入扩展。)由核心框架 / 模块定义,实现类(如 MySQL/Oracle 驱动)由第三方提供;符合规范的第三方 / 模块化服务实现,无需硬编码依赖,支持可插拔的扩展。,常见的数据库驱动厂商分别有不同的实现,如Mysql的驱动常用的有。配置文件内容:每行写一个实现类的全限定名(支持多个实现)。

2025-12-07 15:35:59 741

原创 Maven BOM(Bill of Materials)使用指南与常见错误

Maven BOM(Bill of Materials)是统一管理依赖版本的核心工具,其本质是一个特殊Maven项目(pom类型),通过dependencyManagement节点声明依赖版本。主要优势在于统一版本控制、减少冲突和简化升级流程。使用场景包括:1)导入官方/第三方BOM(如Spring Boot)统一生态依赖版本;2)自定义BOM管理多模块项目共用依赖。使用时需注意固定格式(type=pom+scope=import)和版本继承规则。常见问题如依赖版本冲突可通过检查BOM覆盖范围解决。BOM是

2025-12-03 22:39:51 732

原创 AI入坑之路——(1)搭建本地的Python与Jupyter开发环境

本文介绍了如何搭建本地Python与Jupyter开发环境。首先需要安装PyCharm和MiniConda,然后配置Conda与Pip的国内源(阿里云和清华源)。接着使用conda创建Python 3.10环境并激活,安装指定版本的JupyterLab和ipywidgets。最后详细说明了如何在PyCharm中配置conda环境作为项目解释器。该环境搭建完成后,可同时使用PyCharm和Jupyter Notebook/Lab进行Python开发,适合数据科学、科研等场景。

2025-12-02 08:36:20 332

原创 高级系统架构师笔记——系统架构设计基础知识(3)软件架构风格

fill:#333;color:#333;color:#333;fill:none;软件架构风格数据流调用/返回以数据为中心虚拟机独立构件批处理管道-过滤器主程序/子程序调用面向对象风格层次型风格客户端/服务器风格仓库黑板解释器规则系统进程通信事件系统架构风格关键字简介数据流-批处理传统编译器,每个阶段的结果作为下个阶段输入一个接一个,以整体为单位数据流-管道过滤器与批处理区别在整体一个接一个,前一个输出是后一个输入调用/返回-主程序/子程序。

2025-11-05 22:27:33 839

原创 高级系统架构师笔记——系统质量属性与架构评估(1)软件系统质量属性

指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件的个数。

2025-11-03 23:11:15 979

原创 高级系统架构师笔记——软件工程基础知识(3)逆向工程与需求工程

"之间的一致性,确保所有的工作成果符合用户需求。需求跟踪的目的是建立与维护"逆向工程是设计的恢复过程。形成需求规格/需求文档化。确定目标系统的业务工作流。定义项目范围和高层需求。识别用户角色和用户代表。

2025-11-01 17:21:58 1145

原创 高级系统架构师笔记——计算机系统基础知识(1)冯诺依曼结构、哈弗结构与流水线结构

吞吐率(TP)是指。

2025-10-30 08:48:57 687

原创 高级系统架构师笔记——数据库设计基础知识(5)Armstrong公理系统、无损连接和有损连接

在关系数据库的模式分解中,无损连接和有损连接是判断分解是否 “保留原数据完整性” 的核心概念,直接影响数据的可恢复性。类型定义本质无损连接(Lossless Join)关系模式分解后,通过自然连接可完全还原原关系模式,无信息丢失。分解是 “可逆” 的,连接结果与原关系完全一致。有损连接(Lossy Join)关系模式分解后,自然连接的结果包含原关系中没有的元组,或丢失原元组,导致信息失真。分解是 “不可逆” 的,连接后数据出现冗余或缺失。

2025-10-19 12:00:14 2109

原创 高级系统架构师笔记——数据库设计基础知识(4)函数依赖、多值依赖与范式

范式核心目标(消除的问题)依赖类型业务场景复杂度1NF属性非原子性无最基础2NF非主属性的部分依赖函数依赖复合主键3NF非主属性的传递依赖函数依赖多表关联BCNF主属性的依赖问题函数依赖复杂主键4NF非平凡多值依赖多值依赖一对多独立关系5NF非平凡连接依赖连接依赖复杂多对多范式核心定义解决的核心问题(对上一范式的优化)仍存在的问题(为下一范式铺垫)1NF。

2025-10-19 10:22:23 1023

原创 高级系统架构师笔记——数据库设计基础知识(1)数据库基本概念

按照不同的数据模型,可以将数据库的发展历史分为层次和网状数据库系统、关系数据库系统和第三代数据库系统3个阶段。层次和网状数据库系统层次模型采用树形结构表示数据与数据间的联系。树状结构除根结点以外的其他结点有且仅有一个双亲结点。上层和下一层类型的联系是1:n联系(包括1:1联系)。网状模型采用网络结构表示数据间联系,在网状模型中,允许一个以上的结点无双亲,或者一个结点可以有多于一个的双亲。关系数据库系统关系数据库系统采用关系模型作为数据的组织方式,在关系模型中用表格结构表达实体集以及实体集之间的联系,其最大特

2025-10-16 08:33:16 204

原创 高级系统架构师笔记——数据库设计基础知识(3)关系运算

聚集运算是关系代数运算中的一个非常重要的扩展。R÷S应当满足元组在X上的分量值x的象集Y,包含关系S在属性组Y上投影的集合。两个元数分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。关系R与S具有相同的关系模式,即R与S的元数相同(结构相同)。关系R与S的并由属于R或属于S的元组构成的集合组成,记作RUS,其形式定义如下,式中t为元组变量。θ连接:θ连接是从R与S的笛卡尔积中选取属性满足一定条件的元组。关系R与S具有相同的关系模式,关系R与S的交是由属于R同时又属于S的元组构成的。

2025-10-14 23:01:15 1053

原创 高级系统架构师笔记——数据库设计基础知识(2)关系数据库基本概念

针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。

2025-10-14 22:59:51 1023

原创 Linux如何永久修改主机名

本文介绍了在Linux系统中永久修改主机名的方法:1)使用hostname命令查看当前主机名;2)通过hostnamectl set-hostname命令设置新主机名;3)编辑/etc/hosts文件确保新主机名能被解析;4)hostnamectl修改会立即生效无需重启。该方法解决了多机通信时IP变化导致配置变更的问题,适用于需要稳定主机名标识的Linux环境。

2025-09-27 10:42:25 222

群ping工具CPing

群ping工具CPing

2025-09-27

L1-Introduction to Reinforcement Learning

斯坦福强化学习 课件L1-Introduction to Reinforcement Learning

2018-04-09

基于STM32F4系列的4个编码器4倍频的转速解析程序

基于STM32F4系列的4编码器4倍频转速解析程序,程序有效,需要根据自己的配置更改有问题欢迎提问。

2019-01-03

基于STM32F4的霍尔编码器解析程序

基于STM32F4的霍尔编码器解析程序,可以做辨向和解析速度

2018-04-12

ROS机器人底层嵌入式程序STM32

ROS机器人底层嵌入式程序STM32ROS机器人底层嵌入式程序STM32

2018-04-12

模型预测控制(Model Predictive Control: Theory and Design)

模型预测控制(Model Predictive Control: Theory and Design)不是扫描版,很清晰

2018-04-08

C++程序设计教程(王珊珊)

C++程序设计教程(王珊珊)C++程序设计教程(王珊珊)

2018-04-10

ROS机器人程序设计

ROS机器人程序设计ROS机器人程序设计ROS机器人程序设计

2018-04-09

STM32F4开发指南-库函数版本_V1.1

STM32F4开发指南-库函数版本_V1.1(完整版)十分清晰可以下载

2018-04-10

空空如也

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

TA关注的人

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