自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 AI入门——一文读懂什么是Skill以及如何开发Skill

相同点都用于引导模型行为都依赖上下文注入都可以包含目标、约束、步骤和示例都会影响输出质量和稳定性都需要持续优化都属于广义 Prompt Engineering区别点Prompt 面向单次任务,Skill 面向重复任务Prompt 偏临时输入,Skill 偏长期沉淀Prompt 是自由文本,Skill 是结构化模块Prompt 通常手动输入,Skill 可以自动匹配和调用Prompt 通常无独立权限,Skill 通常可做权限控制。

2026-03-30 00:51:52 586

原创 AI入门——什么是提示词(Prompt)以及如何写好提示词?

本文介绍了AI提示词(Prompt)的概念及其应用。Prompt本质上是AI模型的行为准则,通过结构化指令(角色定义+任务目标+执行规则+上下文+输出格式)来约束AI的输出。文章通过电商客服Agent的案例展示了Prompt如何定义角色、明确任务边界、给出执行步骤和约束输出格式。在编程示例中,逐步优化的Prompt从简单代码生成到规范的企业级Java代码(使用SLF4J日志、遵循编码规范),展示了Prompt对AI输出的精准控制作用。Prompt不是简单提问,而是通过结构化指令让AI输出更符合需求。

2026-03-22 20:45:32 602

原创 OpenClaw入门——OpenClaw安装

OpenClaw是一款基于Node.js的大模型应用开发工具。安装要求Node.js版本≥22,支持npm、PowerShell、Docker和离线安装方式。安装后可通过openclaw --version和openclaw doctor验证。使用前需申请API-KEY,如华为云或火山引擎的模型服务。通过openclaw onboard进行交互式配置,包括选择模型类型、对接应用渠道和配置技能。注意自定义模型需调整上下文长度限制以避免报错。配置完成后即可开始对话交互。

2026-03-01 08:11:44 1547 1

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

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

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

2024-02-19 08:00:00 917

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

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

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

2024-02-17 23:06:24 1405

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

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

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

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

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

2023-12-06 22:44:55 656

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

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

2023-11-02 12:07:09 659

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

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

2023-07-05 23:46:51 12784

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

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

原创 AI入门——什么是知识图谱?

知识图谱是一种用图结构组织知识的方法,通过实体(节点)、关系(边)和属性来表示现实世界中的对象及其关联。它比传统数据库更擅长处理复杂关系和多跳查询,广泛应用于搜索、推荐、问答等场景。知识图谱构建包括知识建模、数据采集、信息抽取、知识融合等步骤,常用图数据库如Neo4j存储和查询。Neo4j采用属性图模型,支持直观的可视化和高效的关联分析,适合构建中小型知识图谱。

2026-03-22 20:46:32 460

原创 OpenClaw安装后报错model context window too small (4096 tokens). Minimum is 16000

OpenClaw在使用自定义模型厂商时出现"Model context window too small"错误,原因是系统对未知模型默认限制为4096 token。解决方法为修改配置文件(~/.openclaw/openclaw.json),在models配置中添加本地模型信息,特别需要将"contextWindow"和"maxTokens"设置为实际支持的32000。配置中的模型ID必须与LM Studio加载的完全一致,并将mode设为&quo

2026-03-01 08:06:29 5828

原创 DockerDesktop打包docker镜像时报错

这个报错为:Docker 客户端尝试连接 //./pipe/dockerDesktopLinuxEngine 这个管道(Docker 引擎的通信通道),但系统找不到这个文件 / 管道;Start Docker Desktop when you log in(开机自启,避免下次再出问题);关闭 Docker Desktop(右键托盘图标 → Quit Docker Desktop);双击桌面 Docker Desktop 快捷方式,或在开始菜单搜索并启动;重启电脑后,再次启动 Docker Desktop。

2026-02-23 08:00:00 657

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

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

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

2026-02-03 08:00:00 1531

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

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

2026-02-03 07:30:00 79

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

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

2026-02-02 08:30:00 615

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

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

2026-02-02 08:00:00 779

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

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

2026-02-01 13:33:14 109

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

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

2026-02-01 13:13:16 795

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

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

2026-01-25 15:40:30 780

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

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

2026-01-25 15:07:10 397

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

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

2026-01-18 22:15:52 799

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

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

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

2026-01-02 17:45:25 371

原创 OpenAPITools使用——FAQ

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

2025-12-28 22:40:33 413

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

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

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

2025-12-20 21:07:02 1067

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

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

2025-12-07 15:35:59 816

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

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

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

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

2025-11-05 22:27:33 873

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

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

2025-11-03 23:11:15 1013

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

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

2025-11-01 17:21:58 1176

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

吞吐率(TP)是指。

2025-10-30 08:48:57 731

群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关注的人

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