自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Day3-AOF配置

目前,redis的持久化主要应用和RDB两大机制。AOF以日志的形式来记录每个写操作(增量保存),将redis执行过的所有写指令全部记录下来读操作不记录。只许追加文件,但不可以改写文件。redis启动之初会读取该文件,进行重新构建数据,

2026-06-08 13:56:13 220

原创 Day4-微服务-Seata默认事务

以上篇文章为基础,本章讲解AT事务的使用。以火车抢票系统为例。

2026-06-06 11:52:55 282

原创 Day4-微服务-Seata

的prepare逻辑。二阶段commit行为:调用。

2026-06-06 11:32:15 641

原创 Day3-微服务-Sentinel-具体使用

比例阈值0.3,最大RT,熔断时长,在统计时长内,10个有超过三个的请求超过最大RT就会熔断。接口的资源名称不要和接口路径一致,会导致限流后走不到降级方法中,不加资源返回的就是一堆字符串。规定一个被限流后该走哪一步,否则会报错,参数和返回值要和规则的一致。在idea中打开下载好的sentinel的jar包,点击运行启动类。对目标的限流是有条件的,需要关联的资源限流时,目标才会限流。将阈值修改后,每秒只能一个请求变为10个请求都通过。对接口有两种拦截,一种是进去了,一种是没进去。,且两个接口是实时的。

2026-06-05 23:48:32 270

原创 跨域问题CORS

不同端口,不同域名,浏览器向前端请求,前端服务响应后,浏览器再向后端服务发送ajax发送请求,使用代理解决问题。

2026-06-05 23:45:32 421

原创 智能体的自定义工具

ToolParam有两种用法,一种是在方法参数上直接标注,另一种是在VO/DTO类上直接标注,本文采用第二种,required参数值必须是true才能生效。将用户问题向量化,RAG 检索(调用 LLM 前自动触发)

2026-06-02 23:55:49 329

原创 各种锁解决高并发问题以及锁粒度

1.会导致售卖效率不高(可以容忍)2.在多节的情况下,还是会出现超卖(不能容忍)。处理效率变低,每时刻吞吐量变少了,500个人买票,8张票,不会出现超卖,出现问题,首先加节点。通过数据库来加锁,但是效率比较低。

2026-06-02 19:18:15 305

原创 Day5-微服务-RocketMQ具体项目的应用场景

告诉用户你有资格购票或者已经下单成功,不然一直在等待,给一个快速响应,前端轮询购票结果,用户不用担心中间的选座购票,轮询带来的压力对于后端相对较小。现在把异步操作分为出票模块,从服务端发送消息给MQ,查看是否有出票的请求,MQ有一个生产者和服务者。实例,在火车购票系统中,为了防止一个时间段的大量请求压跨系统,就要引入RocketMQ的消息队列,先拿号在买票,而不是同时一下子处理所有人的购票请求。场景:用户购票,在服务端,校验验证码,拿到锁,选座购票,那么现在,拿锁和选座购票中插入。

2026-06-01 23:37:39 398

原创 Day1-SpringAI-1.0.0版本

SpringAI支持SpringBoot3.2.x版本和SpringBoot3.3.x版本。

2026-06-01 20:22:09 665

原创 微服务-jmeter

配置请求头,注意后端接收的是application/json类型,但是jmeter默认发送的是text/plain,所以要将数据类型修改。可以看到在第80人之后的订单状态都是无票状态ERROR,并不会出现超卖。然后就自行选择保存的地方,这里就不展示了。jmeter传递token变量或全局变量。直接输入jmeter。

2026-05-29 23:46:25 236

原创 Day4-LangChain4j-向量数据库-检索增强RAG

关系型数据库MySQL,内存分布型数据库Redis,向量数据库Vector是向量或矢量的意思,一个是数学概念,另一个是物理的概念。Embedding Model:向量化模型,前面章节使用了ChatModel和StreamChatModel。概念:Embedding Model的工作原理是将文本、图像、和视频转换为向量的浮点数数组。这些向量旨在捕捉文本、图像和视频的含义。嵌入数组的长度称为向量的维度(Dimensionality)。指征特点:捕捉复杂的词汇关系(如语义相似性、同义词、多义词)

2026-05-29 23:45:10 221

原创 Day3-提示词工程-Function Calling-消息持久化-MCP协议

提示词工程并不是简单的提问!这是来自用户的消息。用户可以是你的应用程序的最终用户或应用程序本身。根据LLM支持的模态UserMessage可以只包含文本(String) ,或其他模态这是由AI生成的消息,通常是对UserMessage的响应,如你所注意到的,generate方法返回一个包裹在Response中的AIMessage。AIMessage可以包含文本响应(String) ,或执行工具的请求。ToolExecutionResuMessage:工具类的执行CustomMessage:自定义消息。

2026-05-27 14:32:50 569

原创 Day2-LangChain4j-模型参数-视觉处理-流式输出-记忆化工程

修改applicaiton.yml的配置,打开日志配置,必须要设置成EDBUG模式: 修改LLMConfig类:2.对话模型监听器listener首先定义一个监听器类继承LangChain4j的原生接口ChatModelListener:以下是接口的源码,与AOP的环绕通知有点类似:同样地在大模型配置类中,注意官网要求配置多个监听器,所以用List:按照LangChain4j的要求:4.超时机制:设置超时时间,只要超时,对大模型的请求就会中断。2.视觉理解:

2026-05-25 20:56:57 639

原创 Day1-LangChain4j

为Java而生。直接访问LangChain的官网。LangChain目的是简化将LLM集成到Java应用程序中的过程。UI交互层-> 服务层->模型层->存储层。大部分大模型都支持OpenAI协议。

2026-05-25 20:51:39 642

原创 子智能体挂载Skill和大模型结构化输出与Agent生命周期拦截器

子智能体是指被父级 Agent 当作"工具"来调用的下层 Agent。它不是普通的函数调用,而是一个具备独立推理能力的Agent,有自己的 prompt、tools、skills,能自主完成父 Agent 分配的专项任务。这本质上就是 AI Agent 领域的服务化拆分 —— 和微服务把单体拆成多个独立服务是同一个思想。

2026-05-24 17:22:15 726

原创 基于A2A协议将智能体注册到Nacos3.x

Nacos3.x比Nacos2.x多了可以注册智能体的功能。配置密钥,32位即可启动分为集群模式和单机模式,单机模式下,默认存储在derby下。

2026-05-24 16:36:46 372

原创 Day2-Redis常用5种数据类型

Redis列表是简单的字符串列表,单键多值。按照插入顺序排序。可以添加一个元素到列表的头部左边或者尾部右边一个列表最多可以包含2的32次方-1个元素。底层是一个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。2.3list-常用命令::从左侧插入一个或多个值。:将一个或多个值插入到已存在的列表头部。获取列表指定范围内的元素,0左边第1位,-1右边第1位,0 ~-1取出所有。没有rrange!!!从右侧插入一个或多个值。

2026-05-22 22:14:08 341

原创 Day1-redis

一个开源的key-value存储系统,使用内存存储。它支持存储的Value类型:包括String(字符串),list(链表),set(集合有序集合,hash(哈希类型。都支持push/popadd/romove,获取交集、并集、差集等一些相关操作,操作是原子性的。redis支持各种不同方式的排序。redis (与memcatched相同数据存在内存中。redis会周期性的把更新的数据写入磁盘,或者把修改的操作追加到记录文件。redis支持集群,实现。

2026-04-07 23:56:52 479

原创 Day3-mybatis动态拼接sql和使用注解完成增删改查操作

可以发现,注解方式的sql语句都是写死的,没有灵活性。

2026-04-07 23:52:51 64

原创 Day2-增删改查mybatis

但注意要加入SqlSession的commit提交事务方法,否则无法插入。配置SqlMapConfig.xml文件(与上一章有些不同)#{} ,parameterType,插入有传参和不传参。db.properties(后面的篇章都要用到)$需要用单引号包裹起来,int类型不需要。parameterType是参数类型。配置的是连接数据库的信息。$相当于拼接sql语句。

2026-04-06 20:02:56 39

原创 Day1-Mybatis基本文件配置和ORM简介

主流数据库都是关系数据库Object是对象Relational:是关系Mapping:映射Mybatis功能架构:基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理。将系统共用的抽取出来作为最基础的组件。为上层的数据处理层提供支撑。数据管理层:负责具体的sql查找、sql解析、sql执行和执行结果映射处理等。主要目的,根据调用的请求完成一次数据库操作。API接口层:提供给外部使用的API,开发人员通过这些API。

2026-04-06 19:56:46 204

原创 pandas库

errors='coerce':关键参数,意为「强制转换」:若单元格内容是可解析的数值(如'3'、'2.5'),则转换为对应的数字(3、2.5);若内容是无法解析的非数值(如'abc'、空字符串''、特殊符号),则不报错,而是将该值设为缺失值NaN。

2026-01-18 23:31:51 512 1

原创 vuex的介绍和使用

vuex 是一个 vue 的状态管理工具,状态就是数据。大白话:vuex 是一个插件,可以帮我们管理 vue 通用的数据 (多组件共享的数据)。2. 场景: ① 某个状态在很多个组件来使用 (个人信息) ② 多个组件共同维护 一份数据 (购物车3. 优势: ① 共同维护一份数据,数据集中化管理 ② 响应式变化 ③ 操作简洁 (vuex提供了一些辅助函数) 例如:购物车数据 个人信息数据。

2026-01-18 23:26:09 47

原创 Vue的指令

【代码】Vue的指令修饰符。

2026-01-17 23:14:22 346

原创 Vue的基本概述

渐进式:vue的生态非常全面,有声明式渲染,组件系统,客户端路由,大规模状态管理,构建工具等,框架就是一套完整的解决方案。库:类似工具箱,是一堆方法的集合,比如axios,lodash,echarts。

2026-01-17 23:04:09 45

原创 二分算法check()和库函数使用

lower_bound和upper_boundC++ STL 的设计中,是标准的半开区间操作。蓝桥云客:聪明的小羊肖恩。要找大于等于4和小于等于6的值,如果都用lower_bound的话,只会返回第一个小于等于6的值,后面可能还会有6。那么区间就错误了。肖恩的乘法表:枚举个数。

2026-01-16 23:02:22 46

原创 图论--并查集

并查集是一种图形数据结构,用于存储图中结点的连通关系。每个结点有一个父亲,会指向另外一个点,初始时指向自己。一个点的根节点是该点的父亲的父亲的...的父亲,直到某个点的父亲是自己(根)。当两个点的根相同时,我们就说他们是属于同一类,或者说是连通的。如下:7、5、1、3、6的根都是3,所以他们是连通的,2、4是连通的,而2、6不连通,因为他们的根不同。所有的点一开始都是指向自已的。

2026-01-16 23:00:44 134

原创 VM系统操作

date 月份几号小时分钟年份.毫秒。

2026-01-15 17:07:07 521

原创 在Xshell中操作VMware

Linux是没有Windows的盘的来存放文件;/home:是所有用户的主目录,除了root用户。usr:系统软件共享资源目录cd /进入用户的主目录/:根目录~(波浪号)代表进入当前登录用户的主目录。

2026-01-15 17:05:54 1061

原创 序列化和子序列化(Externalizable接口)

把teacherName属性改为static,把teacherGender改为transient属性,这依然不会影响反序列化时依然能读取这两个属性。Externalizable做反序列化时,会调用序列化类的构造方法,要求类中要有默认无参的构造方法。将Teacher这个对象先序列化保存到Teacher.txt这个文件,在反序列化输出teacher对象的信息。Externalizable做反序列化时,会调用序列化类的构造方法,要求类中要有默认无参的构造方法。Externalizable在序列化流程上,和。

2025-10-16 11:51:14 184

原创 序列化和反序列化(Serializable接口)

这里将stu文件中的studentx信息反序列化成Java对象,新创建的student对象可以看作是正常的Java对象使用。下面是学生类的实现,要在学生类后接入Serializable这个接口,才可以实现学生类的序列化。把在内存当中的数据,要远程传输到网络上或者保存到硬盘上,需要将java。现在我们将stu.txt文件中的student的信息反序列化并输出。因为是使用字节流的方法将Java对象写入文本文件,所以会出现乱码。:把字节序列转换成Java对象的过程。

2025-10-14 15:52:21 156

原创 文件字节流

正常读取Buffer文件里的你这个字,使用FileInputStream这个方法会出现乱码,为了避免这个这种情况,可以使用InputStreamReader这个方法作为一个桥梁,使得字节流可以转换为字符流。可以看到图片里面的字节流的复制方式和字符流是差不多的,这里就不过多赘述。

2025-10-13 01:58:18 205

原创 BufferReader的用法

第一张图片展示的是BufferReader的readline方法,它只能读取一行数据,那么第二张图片就是利用循环,依次读取每一行数据的操作,直到文件末尾。BufferReader和BufferWriter一样都是处理流。方法二:加上BufferWriter和BufferReader。以上就是三种文件复制的方法,如有疑问,请在评论区提出!方法三:transferto方法。

2025-10-12 15:18:45 222

原创 FileReader用法

读取文件方法:方式一就是循环读取,一直读取到文本末尾为止。(char)是为了将汉字对应的编码转换成汉字。方式二就是将字符存入数组中,返回读取到多少个字符。FileReader是用来读取文件中的内容。从第几个字符开始读取,使用skip方法。然后转换为string字符串。

2025-10-12 14:15:39 264 1

原创 BufferWrite使用方法

BufferedWriter和FileWriter的核心区别在于缓冲机制和效率。BufferedWriter内置8192字符缓冲区,仅在缓冲区满或调用flush/close时查码表,适合频繁写入;而FileWriter每次写入都要查码表,效率较低。BufferedWriter还提供换行方法,并能自定义缓冲区大小。单次写入可使用FileWriter,频繁操作建议使用BufferedWriter提升性能。两者缓冲单位不同(FileWriter以字节为单位,BufferedWriter以字符为单位)。

2025-10-12 13:25:52 286

原创 文件操作流(构造文件并写入)

注意:每次执行fw.write()都会将前面写入的内容覆盖掉,要追加就要在文件名后面加上true。执行flush之后,不能再使用close方法,会报错,但可以继续写入数据。使用flush方法也可以,强制刷新流,把缓存数据全部挤入需要的文本文档。或者使用try—catch处理方式,但数据写入以后,会自动关闭文件。创建一个Hello文本文件,写入“欢迎使用Java!还有一种写入方法就是将字符串和字符数组写入。字符数组也可以按照选取位置进行写入。字符流实现原理:字节流+编码表。

2025-10-12 13:12:55 157

原创 Java对象

编写类文件的时候,类文件存储在硬盘上,还没有被加载到内存中。在主方法中,创建了这个类的对 象,才会被加载到内存中,进行处理。对象就是实际存在的某类事物的个体,就上篇文章讲到宝马、奥迪这些就是车这个类的实际对象,也称实例对象。操作对象都是通过引用完成,一旦引用出栈,没有被引用的对象就变成了垃圾,应该被回收。类和对象的关系,就是抽象(车)和具体(宝马,法拉利)的关系。如果是在其他类中,可以使用对象名 点运算符去访问。类是模板,通过模板创建出具体的实例,就是对象。如果是在当前类中,可以直接访问属性和方法。

2025-10-01 14:04:05 239

原创 Java类

对于类的话,我个人的理解是,把相似的东西称为一个类。举个例子:奥迪,宝马,奔驰,他们都有各自的名字和标志,但是他们都是车,这个车就叫作一个类,再举一个例子,女人和男人都是人,这个人就是一个类。在Java文件中,可以有很多class类,但只能有一个public class,且这个public class必须跟文件名同名。赋值,则使用默认值,有赋值,则使用代码中的赋值。成员变量有默认值,局部变量没有默认值,产生的原因。类的成员变量,在下面所有的方法中,都可以访问到。化,类的成员变量初始化,是在。

2025-10-01 13:42:29 367

原创 Python基本操作题:程序接收用户输入的五个数,将这些按照输入顺序输出,每个数字占8个字符宽度,所有数字输出在同一行。

分割完后就返回由分割后的子串组成的列表(也就是数字)。然后通过for去遍历这个返回的列表,{:>8}就是format格式化填充的用法,其中0是可以省略的,因为只需要打印 i 的值,:必须有,而:后面的填充符号没有输入默认为空格,> 就是填充右边的意思,8就是填充后的长度,是多少就多少,format()j就是我们要打印的值,end = ''是为了防止程序运行自动换行,每遍历一次就会调用一次print 就会自动换行。请读者们自行运行,这里就不展示运行结果了,需要的在评论区@我就行了。

2024-07-24 23:32:02 557 1

原创 Python判断字符串中的字母(小写字母和大写字母)的方法

1.第一种方法:使用islower()和isupper()这两个函数分别来判断列表中的元素为小写字母和大写字母, lower用来记录小写字母的个数,upper用来记录大写字母的个数。2.第二种方法是将字母转化为对应的ASCII的值来判断当前字符是小写字母还是大写字母,使用Python的内置函数ord()就可以将字符转化为对应的ASCII码值了。3.第三种方法就是创建一个字符串从小写a到z和大写的A到Z,通过for循环去遍历判断大小写的数量即可,读者可自行在编译软件上操作,作者在这儿就不多赘述。

2024-07-24 22:33:53 2107

空空如也

空空如也

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

TA关注的人

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