- 博客(91)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 从Prompt、 ReAct 到 Loop Engineering、Harness:AI Agent 工程化的 8 阶演进与 5 层落地架构
本文从最初的 Prompt 提示词,到提示词工程、到上下文工程、到 CoT 思维链、ReAct 模式,再到如今企业级落地不可或缺的Agent、AgentLoop、 Loop Engineering 与 Harness Runtime,Agent 的技术栈究竟经历了怎样的演进,以及是否有本质区别,要怎么做,进行了阐述
2026-08-03 04:25:21
376
原创 RAG/Agent 记忆混合检索多路召回:RRF 算法与Chunk RRF、Document RRF如何决策TopK
本文介绍了Rag、Agent混合检索、多路召回中,chunk 与Document 如何决策TopK
2026-07-30 16:13:15
439
原创 AI 会话记忆工程实践:PostgreSQL + Elasticsearch + Milvus 混合召回与踩坑复盘
本文复盘一套 AI 会话记忆功能从简单 ILIKE、PG 临时分词到 ES + Milvus + Reranker 混合检索的演进,重点讲清权威数据、事件投影、完整问答轮次、RRF 融合、证据链以及 PostgreSQL/MyBatis/ES 真实环境中的典型坑。
2026-07-30 13:59:21
447
原创 从“会写代码”到“会管理 AI 工程”:Codex 实战中的项目文档规范设计
文章摘要:AI编程时代面临的核心挑战是项目理解而非代码生成。本文提出通过建立"项目记忆系统"解决AI协作问题,推荐包括AGENTS.md、HANDOFF.md等关键文档的标准目录结构,其中AGENTS.md作为AI专用指南,HANDOFF.md记录当前进度,ADR保存架构决策。文章强调验证机制、风险控制及会话自动化的重要性,指出未来工程师需要构建AI可理解的工程体系,使AI从代码助手升级为真正的项目成员。
2026-07-27 00:24:28
413
原创 codex引入的项目变更,无损修正和找回历史线程会话
本文介绍了Codex项目路径变更后的会话恢复方案。当项目路径改变导致Finder打开失败且新对话无法定位项目时,可通过修改配置文件修复:1)退出Codex后,修改~/.codex/config.toml中的项目路径;2)更新.codex-global-state.json中的旧路径;3)在~/.codex/sessions目录下找到对应日期的会话文件(.jsonl),批量替换旧路径。完成修改后重启Codex,即可恢复项目访问和历史会话记录。该方法通过全局配置和会话文件的双重路径更新,解决了路径变更导致的会话
2026-07-04 16:21:02
424
原创 sprinbboot 2.7启动不生成日志文件
新增了一个springboot项目,通过idea 调试,并且在idea 的vm options中指定-Dlogging.config=classpath:logback-pro.xml 或者 -Dlogging.config=classpath:logback-dev.xml 都能正常生成对应的日志文件。问题依旧,于是猜测应该是启动的时候,没加载到指定的配置,试着把-Dlogging.config=classpath:logback-pro.xml 提到 -jar 前,结果也终于达到预期。
2023-10-27 00:57:25
4536
原创 springboot 2.7 文件上传采坑Required request part ‘file‘ is not present
由于是采用form-data 格式:multipart/form-data,初步分析是 springboot 在接收到fileList时,form表单的格式无法解析为json序列化,具体还待后面细分析。spring.mvc.hiddenmethod.filter.enabled=true配置,默认为false, 在springboot的旧版本中,默认是true.本意是多文件批量上传,如此不行,则继续单文件上传,转换思路是把多文件压缩为zip文件,然后服务端接收到后,再行解压,即可。
2023-10-13 01:01:04
4639
原创 springboot2.6.4 集成freemark(404问题,只返回模板名称问题)
同时需要特别注意,如果test.ftl 文件在目录resources/templates/的下一级目标,比如在目录resources/templates/ftl/目录下,则controller的返回模板要携带该路径:为。查阅了其他文章,说是springboot自2.2以后,模板的后缀改为.ftlh了。但是我在命名模板为test.ftlh时,仍然报404,后修改为test.ftl 正常了。问题2:get请求过程中,返回结果类型为 test(模板名称),而非test.ftl的模板内容。如上,即可正常启动。
2023-07-23 02:12:33
3557
原创 Sublime Text 正则表达式处理
按钮以启用正则表达式模式。4. 在查找面板中,输入匹配您想要删除的特定文字的正则表达式模式。例如,如果您想要删除包含单词"example"的行,可以使用模式。Sublime Text会高亮显示所有匹配模式的行。1. 打开Sublime Text。sublime 正则表达式匹配不含指定文字删除行。3. 在查找面板上方,点击。选择所有高亮显示的行。匹配指定文字结尾 空行替换。匹配包含指定文字 空行替换。
2023-07-12 16:43:58
5836
原创 FeignClient默认连接方式HttpURLConnection之坑---get请求变为post,访问405
在项目中,使用feignClient 进行http 服务调用,feignClient的默认连接方式为HttpURLConnection,因为HttpURLConnection没有连接池,并发高的时候,会有一定的网络开销,在做项目优化的时候,替换改为okHttp以便复用其连接池。我们作为调用方,表象是用的get请求,实际走的是post请求,所以没有影响,后面改为okHttp后,okHttp不会做这种特殊的转换,所以我们的请求还是get请求,故而就会有问题了。
2023-03-14 23:09:16
2110
原创 IDEA: the file too large: showing a read-only && This view is read-only
IDEA: the file too large: showing a read-only && This view is read-only,idea 文件太大,导致文件只读不能打开
2022-11-28 22:13:12
3715
原创 spirngboot项目.mvn/wrapper/maven-wrapper.properties‘ does not exist.
Exception in thread "main" java.lang.RuntimeException: Wrapper properties file '~/.mvn/wrapper/maven-wrapper.properties' does not exist. at org.apache.maven.wrapper.WrapperExecutor.forWrapperPropertiesFile(WrapperExecutor.java:54)
2022-11-21 04:15:57
5165
原创 shell获取指定进程名称的pid
主要是根据命令: jps -l | grep 进程名称, 来实现sysapp$ jps -l11943 sun.tools.jps.Jps16463 org.logstash.Logstashsysapp$ jps -l | grep Logstash16463 org.logstash.Logstash通过shell脚本执行,则可获得APP_PID为16463#!/bin/bashset -euo pipefail# 填写自己要过滤的进程名称APP_PID...
2022-05-30 01:33:20
6575
4
原创 InvalidDefinitionException: No serializer found for class java.lang.Object and no properties discove
使用springcloudgateway 搭建项目后,写个test验证返回响应,响应结果报如下错误:{ "timestamp": "2022-04-08T14:21:45.160+0000", "path": "/tech/health/check", "status": 500, "error": "Internal Server Error", "message": "Type definition error: [simple type, class .
2022-04-09 22:18:02
12587
3
原创 idea 重新下载jar包
maven 依赖的jar包,很多时候,同一个jar包会存在多个版本,删除其中一个后,重新编译,会把旧jar 由加载回来了方式一:对maven reimport方式 二:在命令行,直接执行以下命令mvn -U idea:idea
2022-01-24 04:40:34
3289
原创 HttpServletRequest在spring中获取及使用
一般在controller 中直接获取:HttpServletRequestHttpServletRequest 是线程安全的,所以在service层可以直接通过注入使用@Autowiredprivate HttpServletRequest servletRequest;业务逻辑中,也可通过RequestContextHolder 获取ServletRequestAttributes requestAttributes1 = (ServletRequestAttributes)..
2022-01-23 22:11:21
1787
原创 redis 基于时间窗口的限流
public boolean limitRateActionAllowed(LimitRateActionEnum actionKeyEnum, String keyParam, int period, int maxCount) { // 生成唯一的key actionKeyEnum = actionKeyEnum == null ? LimitRateActionEnum.GENERATOR : actionKeyEnum; keyParam...
2021-12-06 20:50:09
808
原创 springboot 集成rabbtiMq
本文主要解决以下几个问题1、rabbtiMq的消息队列topic,交换器exchange和路由key routKey的概念及关系2、rabbitMq消息的生产和消费的规则逻3、springboot集成rabbitMq4、通过代码自动创建topic 、exchange、以及指定routKey绑定topic和exchange一、rabbtiMq的消息队列topic,交换器exchange和路由key routKey的概念及关系1、消息队列topic: 本质就是.........
2021-10-13 00:30:48
559
原创 springboot动态调整日志级别-LoggingSystem
在日常项目开发中,排查问题,通常第一步是根据日志定位问题,故而,我们总是会在关键节点,尽可能多的输出日志,但是一旦系统上线,大量的日志输出,明显会影响系统的性能。 通常,我们知道可以调整日志级别,在线上用更高的日志级别(info warn error),但是变更日志级别,总是需要重新发版,如果能动态调整日志级别,并实时生效,这不失为一个不错的办法。由此,springboot的LoggingSystem可以解决这个问题。具体用法如下: @Autowired pri...
2021-09-14 01:19:25
2440
2
原创 sshd:root@notty: linux 被暴力登录处理
一、背景今天打开自己的私有服务器,猛然间发现最近登录失败将近2000次,登录失败的ip134.209.236.115德国法兰克福。一顿吃鲸。。。。由于我是私有服务器,在进行外网和内网ssh的端口映射时已经提前改为非22端口了,这算是第一道防线。密码设置也相对复杂,所以比较幸运的是,还好还未被攻破,赶紧处理一番二、常规处理方案1、修改公网的端口和内网端口映射为不常见的端口(一般ssh端口默认是22)。如果是阿里、腾讯云服务,则可以变更ssh端口为非22端口.同时配置安全策略组。...
2021-08-19 00:56:23
15079
原创 Apache Doris-(官方文档)
官方文档:http://doris.apache.org/master/zh-CN/快速开始文档:http://doris.apache.org/master/zh-CN/installing/compilation.html
2021-08-12 00:35:58
16680
2
原创 TransmittableThreadLocal-可在父子线程中传递变量
ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal的区分及原理:推荐博文:Java 学习笔记(三)之 ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal作者结论总结:1) ThreadLocal 用来存储线程本地变量,仅是线程自己存储数据的,若一个线程要使用另一个线程存储在 ThreadLocal 变量,除非 存储在 ThreadLocal 中的 Va...
2021-08-06 05:59:18
484
原创 两个map的value 进行合并-Map的merge操作
public static void main(String[] args) { HashMap<String, List<Long>> failedMapSingle = Maps.newHashMap(); HashMap<String, List<Long>> failedMap = Maps.newHashMap(); failedMap.put("a", Lists.newArrayList(...
2021-07-01 15:46:49
1655
原创 springboot和springcloud 版本匹配
查看最新的springboot 和springcloud 版本匹配地址:https://start.spring.io/actuator/info当前版本匹配:"spring-cloud": { "Hoxton.SR11": "Spring Boot >=2.2.0.RELEASE and <2.3.11.BUILD-SNAPSHOT", "Hoxton.BUILD-SNAPSHOT": "Spring Boot >=2.3.11.BUILD-SNA...
2021-05-12 16:32:01
565
原创 python 精度及位数处理
1、其他博文说明的用法:设置 decimal.getcontext().prec = 3decimal.getcontext().prec = 3print(decimal.Decimal('2.3') / decimal.Decimal('3')) # 结果:0.767print(decimal.Decimal('1.22222') * decimal.Decimal('0.01')) # 结果:0.0122print(decimal.Decimal('1') / decimal.De...
2021-04-10 15:46:58
2960
原创 shell 循环执行sql脚本
线上批量更新,数量过多,流程上必须写脚本,就试着先写个简单的,逻辑: 每次更新一条,根据id逐条更新。后续其实可以优化为分页批量执行(limit x,y 或者 where id < last and id >= id +1000),效率会更高。#!/bin/bashi=1step=1#cnt=$(/usr/local/MySQL/bin/mysql -u root -p -Dtf_test -s -e "${cmd}")while (($i<=3))do ...
2021-03-10 15:47:14
3649
原创 java list对象去重
Category gc = new Category(); gc.setId(1L); gc.setCategroyName("name1"); Category gc2 = new Category(); gc2.setId(2L); gc2.setCategroyName("name2"); Category gc3 = new Category(); gc3.setId(1L); .
2021-02-02 16:29:38
484
原创 mybatis-plus 特殊用法小记
1、指定字段或者函数和条件进行查询查询条件可以按照mybatis-plus 的 wrapper 进行封装,然后使用@select 写函数 或者指定字段LambdaQueryWrapper<CouponReceiver> qw = Wrappers.lambdaQuery(CouponReceiver.class);qw.in(CouponReceiver::getCouponInfoId, couponIdList).groupBy(CouponUser::getCouponInf.
2020-12-23 01:13:32
643
原创 springboot + springDataJpa 用法小记
1、自定义查询语法进行分页定义 repository接口,同时继承JpaSpecificationExecutor,然后即可使用Repository.findAll(specification, pageable); 进行分页public interface IAppJdOrderRecordRepository extends JpaRepository<AppJdOrderRecord, Long>, JpaSpecificationExecutor<AppJ...
2020-12-23 00:56:07
385
原创 钉钉自定义机器人日志报警
引入钉钉的maven 依赖 <dependency> <groupId>com.aliyun</groupId> <artifactId>alibaba-dingtalk-service-sdk</artifactId> <version>1.0.1</version> <exclusions> ...
2020-12-18 10:42:21
1142
原创 开发springboot start
springboot start的核心思想,就是针对spring的一些配置进行约定并封装,简化配置流程,方便项目直接引入和使用。我们在开发场景中,对于一个springboot start 模块,比较粗略的开发认知是:1、通过application.properties 或application.yaml 文件配置相关的 属性2、在实际业务中,注入 start的 service 方法,直接调用使用如此,自己动手开发一个start的核心流程:1、创建一个springboot 项目,引入.
2020-12-15 01:28:00
1201
原创 springboot自定义logbackAppender
1、背景:自定义appender, 针对日志级别,指定日志级别的输出,同时发送到钉钉,实现日志报警监控2、实现方式:以下两种方式,实现任意一个即可1)、 自定义Appender 继承UnsynchronizedAppenderBase<ILoggingEvent>extends UnsynchronizedAppenderBase<ILoggingEvent>具体实现:@Getter@Setterpublic class DingTalkA.
2020-12-15 00:55:53
5292
原创 springboot快速集成定时任务
1、启动类增加 @EnableScheduling 注解@SpringBootApplication@ComponentScan({"com.xxl.job.admin.controller","com.xxl.job.admin.core.conf","com.xxl.job.admin.localjob","com.xxl.job.admin.service"})@MapperScan("com.xxl.job.admin.dao")@EnableSchedulingpublic clas
2020-12-04 22:07:18
316
1
原创 springboot集成kafka + 多groupId 配置消费组
1、添加maven 依赖 <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency>2、配置producerimport org.apache.kafka.clients.prod...
2020-07-27 21:51:55
23940
4
原创 konga 连接postgresql 12+启动异常:error: column r.consrc does not exist
mac 环境下,konga 配合postgresql 启动,异常如下:A hook (`orm`) failed to load!error: column r.consrc does not exist at Connection.parseE (/Users/tangfeng/dev/github/konga/node_modules/sails-postgresql/node_modules/pg/lib/connection.js:539:11) at Connection
2020-07-10 15:36:59
3048
spring3.2.4+mybatis3.1.1 框架搭建
2016-01-17
如何通过代码解析SNMP的MIB库文件
2015-03-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅