- 博客(33)
- 收藏
- 关注
原创 Java基础复习(二、String相关)
Java基础复习目录二、String相关String 的内部存储String 重要方法String 的不可变性String 常量池String、StringBuilder 和 StringBuffer 的比较二、String相关本章主要介绍了 String 的主要内容,包括 String 的实现和重要方法源码解读、String 的特性以及用处、常量池、老生常谈的 Str...
2020-04-29 17:57:13
454
原创 【无标题】
本文在第 04 篇 PromptRunner 之上,实现多轮对话最小工程方案:ConversationSession 会话存储、TokenEstimator 与 ContextBudget 预算计算、三种截断策略(KeepLastN / TokenBudgetFill / SummarizeAndReplace)、ContextManager 统一组装 messages,以及 CostTracker 会话级成本治理。明确 RAG context 不进永久 history、system 由模板渲染等边界。适合
2026-07-13 22:21:25
392
原创 Prompt 工程基础 — 模板、版本与效果追踪
文章摘要 本文探讨了大型语言模型(LLM)项目中Prompt工程化的重要性,指出Demo阶段常见的硬编码Prompt方式在迭代中会导致维护困难、业务调整受限、缺乏版本追踪等问题。作者提出将Prompt从字符串常量转化为可管理的配置资产,设计了一套包括PromptTemplate、PromptRegistry、PromptRunner在内的解决方案,通过变量注入、关注点分离和版本化管理提升Prompt的可维护性。 文章详细拆解了Prompt消息结构,建议将规则、资料和示例对话分别放置,并介绍了模板化的实现方案
2026-07-02 22:19:10
194
原创 模型 API 接入与统一 LLMClient 设计
本文讨论了在AI应用开发中,从Demo到生产环境时常见的调用层问题,并提出了构建稳定、可控的LLMClient接入层解决方案。文章指出,简单的三行API调用在真实场景中会面临超时、错误处理、日志追踪等挑战,并提出了统一接口设计原则,包括单一入口、供应商无关性、可观测性和配置集中化。通过定义核心数据类型和抽象Provider层,实现了对不同模型供应商(如OpenAI、DeepSeek等)的适配,将SDK差异屏蔽在接入层内部,为业务代码提供稳定统一的调用方式。该方案可解决生产环境中的超时重试、流式处理、结构化输
2026-06-27 18:42:33
366
原创 AI 应用技术栈全景图:从模型到产品,中间到底需要哪些组件?
原因不在于工具本身多,而在于 AI 应用同时跨越了模型、数据、工具、产品交互、评估和运维。它可以帮你组织 Prompt、链式流程、工具调用和 Agent,但它不能替你定义业务场景、整理知识库、设计权限、建立评估集。下一篇会从最小 API 调用开始,封装一个可复用的模型接入层,覆盖超时、重试、流式输出、结构化返回、Token 统计和日志,为后续 RAG、Agent 和评估打基础。地图的价值是:当你听到一个新框架、新概念、新工具时,先知道它在技术栈哪一层,解决什么问题,是否与你当前项目有关。
2026-06-17 22:05:28
374
原创 从 ChatGPT 到真正可用的 AI 产品:会调 API,只是第一步
摘要 从API调用到产品化AI应用存在显著差距。典型Demo仅验证模型基本问答能力,而实际产品需解决输出不一致、私有知识缺失、幻觉等问题。核心挑战包括: Demo局限:缺乏系统提示词、上下文管理、结构化输出等能力,导致风格漂移或错误。 LLM边界:擅长自然语言处理,但需工程补足私有知识(RAG)、实时数据(Agent)和稳定性(日志/降级)。 技术选型: 纯LLM:适用于开放式生成任务。 RAG:需接入企业文档等静态知识。 Agent:需查询实时系统(如订单数据库)。 产品化四层能力: 稳定调用(消息结构、
2026-06-11 22:23:03
408
原创 【系列预告】AI应用开发实战课:26篇教程覆盖 Prompt、RAG、Agent 与工程化
筹备中的「AI应用开发实战课」共26篇,覆盖Prompt、RAG、Agent与工程化上线。每篇附可复制代码,帮你从会调API进阶到能上线AI产品。欢迎关注,第一时间收到更新。
2026-06-09 23:00:01
305
原创 如何在groovy模板中保留$符号
如何在groovy模板中保留$符号背景原有功能是这样子的,我们允许用户写一个sql模板,通过${xxx}来动态传入参数。于是用到了groovy的模板功能,在构造sql的时候,使用模板来对参数进行动态调整。简单代码如下: String script = "SELECT id, name, age, detail FROM student WHERE grade=${grade}"; ScriptEngineManager factory = new ScriptEngineManager
2021-11-01 12:08:02
1332
原创 日志级别配置与探究
日志级别配置今天重构项目,重新开始搭建,在项目启动时希望输出info日志,结果发现日志无法输出,因此引出此篇文章,权做记录与分享。1. 配置依赖首先,pom配置中增加依赖:<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> <dependency> <groupId>org.apache.logging.log4j&l
2021-08-17 11:40:29
964
原创 分页查询LIMIT慢SQL优化
一、问题描述在做分页查询的时候,遇到一个问题。之前做分页查询的功能的时候,都是从前端页面发回 searchCondition(查询条件)、curPage(当前页面)、pageSize(页面记录条数)两个参数,然后通过构造 sql 语句,实现查询的功能。比如说,查询性别为男,年级是21级的学生,分页是第10页,每页30条数据,那么发回的内容中:{searchCondition:{'sex':'male','grade':'2021'}, curPage: 10, pageSize: 30}按照上面逻辑
2021-05-28 12:00:18
1002
1
原创 30分钟带你了解阻塞队列所有内容,再也不怕面试官刁难你了!(上)
30分钟带你了解阻塞队列所有内容,再也不怕面试官刁难你了!(上)目录1、概述2、BlockingQueue 源码解析3、ArrayBlockingQueue 源码解析3-1、ArrayBlockingQueue 概述3-2、ArrayBlockingQueue 源码3-3、ArrayBlockingQueue 总结4、LinkedBlockingQueue 源码解析4-1、LinkedBlockingQueue 概述4-2、LinkedBlockingQueue 源码4-3、
2020-05-28 15:23:29
529
原创 Lock - 对锁的一些面试题的总结
Lock - 对锁的一些面试题的总结看到一个问题:请谈谈你对乐观锁、悲观锁、自旋锁、分段所、读写锁、排它锁、共享锁等等锁的理解,他们有什么区别?这么大致一看,发现没什么思路,觉得对锁的了解还是不够透彻。这边来总结一下,但不会很细致。乐观锁 - 悲观锁乐观锁和悲观锁是相对而言的,他们的区别如下表格:锁概述使用场景样例悲观锁悲观锁对数据被外界修改持保守态度(悲观),因此在整个数据处理过程中,将数据出于锁定状态,而别的任务出于被阻塞的状态;写多读少,保证写操作时的数据安全1、
2020-05-18 09:32:39
1061
原创 HashMap 源码解读
HashMap 源码解读在很多面试中,都会涉及到HashMap的问题,比如说问你HashMap存储结构,get、put的时间复杂度,或者扩容机制等等,这次我们来通过对源码的阅读,来实现对HashMap的理解!(大量源码源码警告!!!)先看类的继承结构:public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { ..
2020-05-15 23:37:52
299
转载 类加载各阶段详解
搬运自《Java 虚拟机(第二版)》深入了解虚拟机-类加载类从被加载到虚拟机内存中开始,到卸载出内存位置,他的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Uploading)7个阶段。其中验证、准备、解析3个部分统称为连接。类加载中初始化的时机虚拟机规范中严格规定了有且只有5中情况必须立即对类进行"初始化"(而加载、验证、准备自然需要在此之前
2020-05-14 10:29:35
733
2
原创 Java基础复习(八、注解)
八、注解注解基础什么是注解注解原理八、注解(标注)注解基础什么是注解注解(Annotation)是 JDK 5 以后引入的一种机制,又称标注。它的使用方法和注释基本相同,但与注释不同的是,JVM 可以通过反射的方法获取注解的内容,从而起到对修饰元素(包、类、方法、成员变量、参数以及本地变量等)起到说明和配置的功能。用处最常用的功能 - 生成文档。比如说 JDK 中自带的 @param、@return格式检查。比如说 JDK 中自带的 @override、@Suppres.
2020-05-13 20:58:54
288
1
转载 Java基础复习(七、泛型)
七、泛型泛型详解概述一个栗子特性泛型的使用泛型类泛型接口泛型通配符泛型方法泛型方法的基本用法类中的泛型方法泛型方法与可变参数静态方法与泛型泛型方法总结泛型上下边界关于泛型数组要提一下最后泛型相关问题泛型关于泛型的内容,我在找参考资料的时候,发现了两篇博客,内容已经写得很全了,我这边就当个搬运工。另外,请大家尊重版权,我标明了原地址了!这不是原创!搬运地址:1、java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一(https://b.
2020-05-11 09:15:19
648
原创 Java基础复习(六、反射)
六、反射反射的主要用途反射的基本使用获得 Class 对象判断一个对象是不是某个类的实例实例的创建获取成员和使用反射的一些注意事项六、反射Java的反射机制是在运行过程中,对于任何一个类,都能够知道这个类的所有属性和方法;对于任何一个对象,都能够调用他的任何一个方法和属性(这种说法不正确,我之前调用private方法时就报错。必须要在前面设置一下权限才能使用)。这...
2020-05-08 15:05:45
386
原创 Java基础复习(五、异常)
五、异常异常机制的概述异常的结构ThrowableErrorException异常常见的问题异常异常机制的概述异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。程序错误分为三种:1、编译错误;2、运行时错误;3、逻辑错误。(1)编译错误是因为程序没有遵循语...
2020-05-07 20:25:08
732
原创 Java基础复习(四、三大特性)
四、三大特性封装访问修饰符this 关键字内部类继承继承的特性方法的重写初始化继承相关关键字多态引用多态方法多态引用类型转换抽象类接口四、三大特性封装说到封装,基本上是个程序员都用过。我们在写一个方法的时候,不会将一个方法体写的特别长,而是选择将方法拆解成好几个方法,将不同逻辑的方法进行封装。Java 的封装比一般的方法封装更加系统...
2020-05-06 16:29:09
509
原创 Java基础复习(三、关键字)
三、关键字关键字简单介绍部分关键字详解breakfinalfinallystaticsynchronizedvolatile三、关键字关键字简单介绍Java关键字一共53个,其中包含了两个保留字 goto, const。关键字含义abstract表明类或者成员方法具有抽象属性assert断言,用来进行程序调试boolean...
2020-05-01 16:39:51
869
原创 Java基础复习(一、数据类型)
目录一、数据类型基本类型包装类型缓存池一、数据类型本章主要介绍了基本类型、包装类型以及相关的缓存池的内容,涉及到基本的存储空间、自动装箱拆箱、编译反编译操作等。基本类型Java有八种基本类型:类型名称字节空间使用场景byte1字节(8 bit)存储字节数据(较常用)short2字节(16 bit)兼容性考虑(很少使用)int4...
2020-04-29 17:56:39
638
原创 牛客网 - vivo2020届春季
牛客网 - vivo2020届春季1、[编程题]手机屏幕解锁模式时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M现有一个 3x3 规格的 Android 智能手机锁屏程序和两个正整数 m 和 n ,请计算出使用最少m 个键和最多 n个键可以解锁该屏幕的所有有效模式总数。其中有效模式是指:1、每个模式必须连接至少m个键和最多n个键;2、所有的...
2020-04-24 18:16:37
364
原创 Java的自动装箱和拆箱
如需转载请私信或者表明转载地址https://www.cnblogs.com/lewisyoung/p/12769084.html目录一、什么是自动装箱自动拆箱二、自动装箱自动拆箱的实质三、需要注意的点四、其他一些问题五、总结一、什么是自动装箱自动拆箱自动装箱自动拆箱是在JDK5以后引入的一个特性。在学习Java的过程中,我们认识到有八种基础类型,以及他们对应的包装类型。...
2020-04-24 18:15:11
330
原创 LeetCode——4. Median of Two Sorted Arrays
先贴连接!https://leetcode.com/problems/median-of-two-sorted-arrays/ 下面是题目的截图。题目意思是,找出两个排好序的数组的中间值。注意时间复杂度必须小于等于O(log(m+n))。emmmm,一看,排好序的两个数组,而且只是求中间值。好的吧,直接暴力上。先对两个数组进行排序,然后求中间值。贴出代码如下:class...
2018-12-05 16:11:48
262
原创 LeetCode——3. Longest Substring Without Repeating Characters
先贴连接!https://leetcode.com/problems/longest-substring-without-repeating-characters/ 下面是题目的截图。题目意思很简单,求最长不重复字串的长度。暴力求解思路:遍历每个字符,然后求该字符接下去的最长不重复字串,如果长度超过我们的maxLen,就重新复制maxLen,如果出现重复字符,则从下一个字符开始。...
2018-12-05 15:21:16
206
原创 LeetCode——2.Add Two Numbers
先贴连接!https://leetcode.com/problems/add-two-numbers/ 下面是题目的截图。题目是这样的。简单来说就是两个数相加,就是这两个数保存的方式是用链表的形式保存的。节点的结构如下: public class ListNode { int val; ListNode next; ListNode(int x) {...
2018-12-05 14:14:58
229
原创 LeetCode——1. Two Sum
一个学期的研究生生活快过去了,感觉每天除了开发就是看书,没啥意思。。于是和同学约好了do something new,开始了每日一题LeetCode之旅。。。希望总是半途而废的我,这次能坚持下来!因为开发用的Java,C++都快忘光了。。。这里是同学的C++解法,https://blog.csdn.net/DoggoneW/article/details/84727758先贴连接!https:...
2018-12-02 18:58:59
278
原创 数据库系统概念第六版课后习题答案-第二章
实践习题2.1 考虑图2-14所示关系数据库。这些关系上适当的主码是什么?Ans: 如图2.1中带下划线的码。(emmmm,发现答案不是很靠谱。比如员工的名字有重名的现象,显然name不能作为主码。但其实name+street+city也可能会有碰巧一样的情况。所以严格来说,这几张表的结构不是很好,项目中最好还是用id作为主键会比较好。)2.2 考虑从instructor的dept...
2018-11-28 22:04:59
41030
9
原创 数据库系统概念第六版课后习题答案-第一章
实践习题在原书的网站有英文版的,我会翻译下来。而剩余的习题没有答案的,我会在网上找找,或者干脆自己做,不能保证答案质量,仅作参考。实践习题1.1 这一章讲述了数据库系统的几个主要的优点。它有那两个不足之处?Ans: a. 建立一个数据库系统需要更多的知识,钱,技能和时间;b. 数据库的复杂性可能会导致性能的降低。1.2 列出Java和C++之类的语言中的类型说明系统与数据库系统...
2018-11-25 22:43:35
39836
5
原创 Java的反射机制
Java的反射机制是在运行过程中,对于任何一个类,都能够知道这个类的所有属性和方法;对于任何一个对象,都能够调用他的任何一个方法和属性(这种说法不正确,我之前调用private方法时就报错。必须要在前面设置一下权限才能使用)。这种动态获取的信息以及动态调用对象的功能称为java语言的反射机制。我们知道,在java语言中,我们可以获取一个对象的类型(对象.getClass()),也可以获取一个类...
2018-10-14 12:21:55
408
原创 关于机器学习课程的感想(一)
接下来两年半,甚至可能是五年,应该都要针对人工智能、深度学习、机器学习的内容进行学习。由于现在还没正式入学,所以自己先买了几本书,找了点视频对相关内容进行学习。现在想把看的内容记下来写个博客,以后回头再修改修改。先开始的是机器学习的内容。视频看的是斯坦福大学教授Andrew NG(吴恩达)教授的公开课,网易云课堂上有资源大家可以直接去看。这个视频资源有两个好处,首先是大牛+名校的组合,权威性不...
2018-07-27 18:50:33
4484
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅