自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(256)
  • 资源 (1)
  • 收藏
  • 关注

原创 SpringAI-Tool简单实践

本文介绍了在SpringAI 1.0.0-M6版本中使用Tool Calling实现复杂业务逻辑的方法。首先通过简单示例展示了如何通过@Tool注解定义工具方法(如获取当前时间),并演示了其调用过程。然后详细讲解了进阶用法,包括工具调用的完整流程(从模型决策到结果返回)。最后给出了一个实践案例,展示了如何通过定义三个工具方法(时间提取、字段抽取、JSON合并)来实现复杂的数据处理流程,其中结合了大模型能力和业务逻辑处理。文章还提供了相关代码片段,帮助开发者理解具体实现方式。

2025-12-23 09:51:42 603

原创 SpringBoot整合Spring-AI并使用Redis实现自定义上下文记忆对话

本文介绍了基于SpringAI和Redis实现带有上下文记忆的AI对话系统。通过配置SpringAI与DeepSeek大模型集成,并使用Redis存储对话历史,实现了多轮对话功能。关键技术包括:自定义ChatMemory服务管理对话上下文,包括消息裁剪和Token估算;RedisTemplate配置用于持久化存储;OpenAI接口封装实现模型调用。系统支持会话历史维护、自动消息裁剪和24小时会话过期,为构建智能对话系统提供了可扩展的实现方案。

2025-12-11 16:12:21 1257

原创 生产事故复盘--小问题引发的大事故

问题复盘

2025-06-19 11:29:00 383

原创 使用腾讯云高性能空间部署YOLOv11训练模型

公司为提升工业互联网中零件筛选效率,决定采用视觉模型进行自动标注与区分。由于本地电脑性能限制,开发人员选择使用腾讯高性能空间进行模型训练。环境部署包括安装PyTorch、labelImg标注工具及项目源码,并通过requirements.txt文件配置依赖。数据准备阶段,使用labelImg进行数据标注,并将图片和标签文件按比例切分为训练集、验证集和测试集。开发人员通过Python脚本实现数据切分,确保数据集的合理分配,为后续模型训练奠定基础。

2025-05-19 11:26:16 911

原创 多到爆炸!你的 AI 超能力已就位!(Gemini、Grok、通义...一次解锁!)

优点:谷歌出品,必属精品!信息检索能力杠杠的,知识面广到没朋友,妥妥的“AI百科全书”!缺点:有时候回答过于严谨,缺少一点“皮”劲儿~优点:马斯克家的“叛逆小子”,自带幽默感,怼人功力一流,想要一个风趣的AI伙伴?选它就对了!缺点:有时候过于放飞自我,容易跑偏~优点:阿里家的“全能选手”,中文理解能力一流,擅长各种生活场景,是你的“AI生活小助手”!缺点:在一些前沿技术领域,可能不如海外模型那么深入。优点: 专注编程优化,代码生成能力飞起,是程序员们的一把利剑。

2025-02-26 09:04:29 380

原创 Spring Cloud Alibaba AI实践

在现如今AI时代,spring也对ai进行了各种兼容匹配,推出了Spring AI来支持各大AI厂商,持的模型类型包括聊天和文本到图像,但是由于国内的机制以及各大厂商的限制,Spring AI在国内使用不便,因此阿里巴巴推出了Spring Cloud Alibaba AI ,完成通义系列大模型的接入。项目启动,使用postman请求对应接口路径,可以发现,打印日志中已经做出了回复,证明当前项目已经接入了阿里通义大模型。点击头像位置有个API-KEY管理,获取到,然后配置在项目中。

2024-10-19 14:13:54 916 1

原创 EasyExcel注解实现导出动态下拉框字符超出255

easyexcel动态下拉,突破255字符限制

2024-03-13 10:31:18 1381 2

原创 Java使用自定义注解实现数据脱敏以及字段加解密

Java实现实体类属性数据脱敏,加解密

2023-12-20 13:18:05 1037

原创 Java可重入锁(GPT编写)

Java可重入锁是Java并发编程中常用的一种锁机制,它可以允许同一个线程多次获取同一个锁,从而避免死锁和其他并发问题。Java可重入锁的实现基于AQS框架,它通过状态变量state和等待队列来实现锁的获取和释放。Java可重入锁支持可重入性,即同一个线程可以多次获取同一个锁,而不会造成死锁或其他并发问题。

2023-10-18 15:55:46 907

原创 返回yyyy-MM-dd的list

// 返回的日期集合

2023-10-16 17:02:55 334

原创 程序员开发过程中还是需要写注释的

简单说明:关于注释的问题,一直以来都是两面派,一方面认为在快速迭代的开发过程中,添加注释会浪费很多程序员自己的时间,从而影响开发进度,被问责被丢锅...另一方面认为,注释作为开发功能的赘述,不管是对于leader的review还是对于后面维护的人员,都是很友好的行为。详细论述:代码注释可以帮助其他开发人员更好地理解代码的功能和实现方式,也可以帮助自己更好地维护和修改代码。如果代码没有注释,那么其他人在阅读代码时可能会遇到很多困难,也会增加代码维护的难度。当然,写注释也需要注意适度。

2023-10-12 09:36:48 302

原创 基于InsCode实现一个自己的chatgpt

​。

2023-08-17 10:26:37 247

原创 springboot使用http发起远程服务调用,请求参数包含StandardMultipartHttpServletRequest

问题记录方便后续使用

2023-04-27 16:29:26 723

原创 我的创作纪念日

希望自己技能分享类的总结越来越多,问题复盘越来越少,有深度的文章越来越多,浅显记录越来越少。1.提升了一些职业技能,比如说springboot整合系列,更轻松应对多种业务场景。没什么成就,更多还是自己吧,坚持学习,保持进步,每天成长一点点,进步一点点。2.记录了生活工作中遇到的问题,进行复盘分析,更好的让自己学会总结和自省。3.记录了一些常用的小工具类,给他人带来便利。

2023-04-23 09:48:39 146

原创 BeanUtils工具类

public class BeanUtils { private static final String DEFAULT_HYPHEN = "-"; /** * 对象拷贝,先使用Spring的BeanUtils进行浅拷贝,再尝试拷贝属性名称相同、但类型不同的字段 * * @param source 源对象 * @param target 目标对象 */ public static void copyProperties(Objec

2023-04-07 16:13:15 255

原创 近期bug修复及开发问题小结

问题小结

2023-03-14 14:48:38 206

原创 json对象出现$ref: “$.list[0]“

循环引用:当一个对象包含另一个对象时,fastjson就会把该对象解析成引用。

2023-03-14 14:40:56 1176

原创 MySQL使用行号分页

MySQL查询优化(无主键无索引分页查询)

2023-02-08 19:18:20 246

原创 RocketMQ相关面试题简单整理

RocketMQ面试题整理

2022-06-29 16:11:27 2219

原创 Java使用poi解析excel工具类

package cn.com.gome.scot.alamein.business.report.common.util;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;import java.io.FileN

2022-05-18 17:51:09 968

原创 Java常用excel导出实现

最近在做很多报表相关的开发,包括使用shell和hive将大数据汇总,然后页面做展示,还有将结果导出excel发送给相关负责人,由于导出表格的时候,有很多场景,现在针对几种常用场景,进行一些整理,方便以后使用。1.少量数据,使用alibaba.excel.EasyExcelExcelUtils.java:@Slf4jpublic class ExcelUtils { /** * Excel模板导出 * * @param templateInputStream

2022-03-11 14:43:29 2997

原创 近期一些开发规范上的问题记录

1.log打印一定要在接口调用处和数据返回处加上log打印调用方法名和出入参,方便日志排查。在业务逻辑开发处,对一些关键点进行日志打印,方便在逻辑处理时进行问题排查。日志需要精简,不需要过多,能简单明确定位到问题即可。2.精度问题普通的Double类型直接做加减乘除的时候会出现精度缺失,需要用用BigDecimal类。 public double add(double d1,double d2){ BigDecimal bd1 = new BigDecimal(Doubl

2021-12-02 15:18:01 188

原创 Command line is too long

Command line is too long. Shorten command line for SpringBootMainApplication or also for Application找到.idea文件夹下面的workspace.xml文件,搜索到PropertiesComponent,在标签下增加一行:<property name="dynamic.classpath" value="true" />即可解决...

2021-12-02 11:00:13 185

原创 Dubbo远程调用文件上传服务

背景:由于公司内部使用dubbo作为远程服务调用,在使用其他系统的文件上传服务时,系统出现报错。 @ResponseBody @RequestMapping(value = "uploadResourceImg", headers = "content-type=multipart/form-data", method = RequestMethod.POST) public RestResult<ResultDto> uploadImage(@RequestPa

2021-11-04 20:24:54 935

原创 20210907生产问题记录

背景以前写过一个定时任务,每天将mongodb的数据同步到MySQL,使用的是xxjob作为定时任务框架,一直都是正常使用的,今天发现生产环境在7月19日之后就没有了数据,但是使用elk平台还有xxjob的控制台查看定时任务记录,都是正常状态。分析排查首先确定是否写对了数据库,是否有数据库配置的修改,经过确定排除了此种情况。后来查看服务器的日志打印,发现有一条 Could not set property 'id' of 'class com.jpgk.entity.report.OrgWareho

2021-09-07 20:37:53 326

原创 2021-08-26Dubbo踩坑笔记

背景由于项目是多人协作,服务调用使用的dubbo,在定义接口出入参的时候,我自己定义了一个基本入参xxxReq,包含了两个分页属性,后续有其他同事将此类继承了一个BaseReq。base中包含分页字段。本地单元测试,接口都能根据分页数据的值查询出对应的数据,但是dubbo Consumer端查出的数据一直是走的默认数据。而且服务器上,根据分页条目的属性名查询日志,根本查不到日志输出,由于默认数据与数据库条目还是一致的,所以错误的以为触发了dubbo的缓存机制,并没有真正的将请求打到服务器上,也导致排查错

2021-08-27 15:17:47 381

原创 Dubbo原理学习(二)

Dubbo SPI在前面的学习中ServiceConfig中有一段private static final Protocol protocol = (Protocol)ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();点击进入Protocol ,可以看到一个特殊的注解@SPI。学习一下:java spi机制SPI,Service Provider Interface,主要是被框架的开发人员使用,比

2021-08-18 19:52:21 227

原创 Dubbo原理学习(一)

Dubbo简介项目中使用dubbo作为rpc框架,而且以前一直也是有过使用经验,但是没有深入学习过,近期项目进度不紧,就简单学习一下深入原理。dubbo官方文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html开头开始一张众所周知的dubbo原理图:节点角色说明Provider 暴露服务的服务提供方Consumer 调用远程服务的服务消费方Registry 服务注册与发现的注册中心Monitor 统计服务的调用次数和调用时间的监

2021-08-16 16:53:53 419

原创 List聚合

需求:数据库查出一批集合,时间各不相同,但是现在要求对同一天的金额和总数再次叠加处理:@Data@AllArgsConstructor@NoArgsConstructorpublic class ResultDO { private String times; private Double price; private Long count;}public class DataTest { public static void main(String[] a

2021-05-19 14:31:18 567

原创 BeanCopy

package com.example.demo.util;import com.baomidou.mybatisplus.extension.exceptions.ApiException;import net.sf.cglib.beans.BeanCopier;import net.sf.cglib.beans.BeanMap;import org.springframework.objenesis.ObjenesisStd;import java.util.ArrayList;impo

2021-05-13 17:52:46 308

原创 String转换List<JSONObject>

/** * 字符串格式化 */ public static List<JSONObject> getList(String data){ ObjectMapper mapper = new ObjectMapper(); JavaType javaType = getCollectionType(ArrayList.class, JSONObject.class); List<JSONObject> ...

2021-05-12 10:59:25 1735 1

原创 Mybatis-Plus 3.2.0与3.4.0的坑

批量插入3.2.0版本中,IService有一个看着很迷惑人的一个方法boolean saveBatch(Collection<T> entityList, int batchSize);以为这个是批量插入,其实不然,跟随代码进入底层会发现: public boolean saveBatch(Collection<T> entityList, int batchSize) { String sqlStatement = this.sqlStatemen

2021-04-03 15:42:32 1990

原创 对List进行分割的几种方式

1、使用google guava对List进行分割需要引入google guava依赖,引入后可以使用,简单方便但是需要引入额外依赖,如果不介意可以使用。//假设查询出很多用户信息List<User> users = userService.findAll();//按每100个一组分割List<List<User>> parts = Lists.partition(users, 100);parts.stream().forEach(list -> {

2021-04-02 13:31:21 39097

原创 java获取一天的起止时间

Calendar calendar = new GregorianCalendar(); // 0可以修改,0代表当前时间,-1代表前一天 calendar.add(Calendar.DAY_OF_MONTH,0); //一天的开始时间 yyyy:MM:dd 00:00:00 calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINU...

2021-03-30 15:27:25 2264

原创 2020-12-28踩坑记录

public static void main(String[] args) { boolean b1 = Boolean.parseBoolean("true"); System.out.println("b1=" + b1);//b1=true b1 = Boolean.parseBoolean("false"); System.out.println("b1=" + b1);//b1=false boolean b2 = Boolean.valueOf("t

2020-12-28 18:07:17 238

原创 HTML简单入门学习(二)

分析一个简单HTML文档样例:<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>我的测试站点</title> </head> <body> <p>这是我的页面</p> </body></html>分析如下:在HTML中应用CSS和JavaScr

2020-12-24 20:39:45 313

原创 HTML简单入门学习(一)

什么是 HTML?HTML (HyperText Markup Language) 不是一门编程语言,而是一种用来告知浏览器如何组织页面的标记语言。HTML 可复杂、可简单,一切取决于开发者。它由一系列的元素(elements)组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈现或者工作。 一对标签( tags)可以为一段文字或者一张图片添加超链接,将文字设置为斜体,改变字号,等等。剖析一个 HTML 元素这个元素的主要部分有:开始标签(Opening tag):包含元素的名称(本例为

2020-12-23 20:52:50 204

原创 有人见星辰,有人见尘埃

思考年前匆匆忙忙的走,匆匆忙忙的离职。以为从北京回到家,就能缓缓休息一下,结果年后的疫情原因,让自己变成了休长假。看似枯燥且无聊的生活,让我找到了生活的一些思考,开始试着读书,去看一些经典文学,哲学文献,也开始对各种各样的人生和世界有了自己的一个认识,慢慢的也就觉得一切都是那么平和与自然。年后匆匆忙忙的回,匆匆忙忙的入职。回到北京的生活,似乎并没有入想象般的那么不堪。由于隔离原因,换了个自己喜欢的环境。刚入职就远程办公的心情,自己孤独一人隔离在屋子里解决食宿问题,与看似自在的生活有着强烈的

2020-12-22 20:46:28 752 1

原创 序列化和反序列化学习(三)

几种常见的序列化和反序列化协议ThriftThrift是Facebook开源提供的一个高性能,轻量级RPC服务框架,其产生正是为了满足当前大数据量、分布式、跨语言、跨平台数据通讯的需求。 但是,Thrift并不仅仅是序列化协议,而是一个RPC框架。相对于JSON和XML而言,Thrift在空间开销和解析性能上有了比较大的提升,对于对性能要求比较高的分布式系统,它是一个优秀的RPC解决方案;但是由于Thrift的序列化被嵌入到Thrift框架里面,Thrift框架本身并没有透出序列化和反序列化接口,这导致

2020-12-21 22:47:44 190

原创 2020-12/18-19停更说明

哈哈和好朋友合作整了点东西,做了两天工具人,不过工具人也是很欢乐的,哈哈收获也很多,更多的是无法表达的,愿我们都能做更好的自己~

2020-12-20 22:45:26 185

文件上传下载模板-excel模板下载,按照模板内容可以插入到对应表

文件上传下载模板-excel模板下载,按照模板内容可以插入到对应表

2023-05-05

SpringBoot经典学习笔记.pdf

网络上传播的关于springboot的开发学习笔记,适用于初学者在入门阶段学习使用,关于注解开发还有一些底层简单实现。

2020-06-01

空空如也

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

TA关注的人

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