- 博客(60)
- 收藏
- 关注
原创 Transformer 模型详解:从输入到输出的全流程剖析
阶段模块关键操作结果输入层Embedding + 位置编码文本 → 向量含顺序信息的词向量Encoder多头自注意力 + 前馈网络捕捉输入全局关系输入语义特征DecoderMasked 注意力 + Encoder-Decoder 注意力结合输入与上下文生成输出序列输出层转为词概率分布输出结果Transformer 是一种“全局思考、并行计算”的神经网络,它用注意力机制取代循环,使模型能高效理解和生成语言。
2025-11-02 16:26:42
891
原创 ChatTTS + SenseVoice-Small 实战:五分钟搭建你自己的语音大模型助手,让 AI 开口说话!
本文介绍了通过Docker在本地部署Xinference服务的完整流程。首先确保已安装Docker Desktop和Dify环境,然后通过指定挂载目录、环境变量和端口映射等参数启动容器。启动成功后可通过浏览器访问服务,并详细说明了如何集成ChatTTS语音合成模型和SenseVoice-Small语音理解模型,构建完整的语音交互系统,最后在Dify平台中进行相关配置和应用创建。
2025-11-02 11:05:15
372
原创 Java/注解Annotation/反射/元数据
摘要:Java注解是一种元数据,可为类、方法或参数添加额外信息。通过@interface定义注解,并使用元注解@Target和@Retention分别指定使用范围和保留时期。示例中定义了一个方法级运行时注解@MyAnnotation,包含limitType和lockTime两个可配置参数。在Test类的printString方法上应用该注解,并设置了自定义参数值。注解为代码提供了声明式的配置能力,增强了程序的灵活性和可维护性。(149字)
2025-09-17 21:56:18
150
原创 WebSokcet中Session在分布式情况下的实现
不同节点的session如果要进行通信,那么我们必须引入中间件,通过中间件进行广播,比如使用rabbitmq的fanout交换机,但是容易导致广播风暴。分布式情况下性能影响很大。首先我们会将每个节点中存放的session标识记录到redis中,key是ip+port,value为标识,并且添加过期时间,每隔一段时间,服务就会刷新,记录用户状态。如果某一个节点向其他节点发送消息,我们先从redis或许节点位置信息,然后基于发送到rabbitmq的队列中,然后我们节点进行消费。
2025-09-02 13:33:48
98
原创 分布式事务/Spring事务Transactional&Seata/3PC&2PC&TCC&RocketMQ事务消息/速通
摘要:分布式事务确保跨节点操作的一致性,常见方案包括2PC(二阶段提交)和3PC(三阶段提交),但存在性能瓶颈和资源浪费问题。TCC模式通过资源预冻结降低锁粒度,而Saga模式依赖本地事务自动执行和补偿机制。消息事务利用消息队列实现最终一致性。Seata框架提供XA模式(强一致)和AT模式(弱一致)两种实现方式,分别通过全局锁和日志回滚来保证事务特性,适用于不同业务场景。
2025-08-28 20:38:00
404
原创 Java垃圾回收器:从SerialGC到G1的演进/速通
本文介绍了四种JVM垃圾回收器:SerialGC(单线程)、ParallelGC(多线程,追求高吞吐量)、CMSGC(并发,最短STW)和G1(并发,优先回收高效区域)。不同回收器适用于不同场景,如SerialGC用于早期JVM,ParallelGC是JDK8默认,G1支持响应时间敏感场景并允许控制最大停顿时间。各回收器的工作机制不同,如CMS采用多阶段标记清除,G1则分为标记和回收阶段。JDK9后G1成为默认回收器。
2025-08-27 17:11:30
212
原创 MySQL讲解/内部结构/索引下推/Explain/慢查询(必备)
MySQL分为Server层和存储引擎层,Server层处理连接、解析、优化等逻辑,存储引擎负责数据存储。执行计划通过EXPLAIN分析,重点关注id(执行顺序)、type(访问类型)等指标。索引下推技术能减少回表操作,提升查询效率。慢查询日志可监控性能问题,通过设置long_query_time阈值记录低效SQL。InnoDB存储引擎使用聚簇索引组织数据,并通过undo log实现事务回滚和MVCC机制。优化策略包括合理使用索引、避免全表扫描、优化连接查询等。
2025-08-09 22:19:21
914
原创 万字解析Linux命令/操作系统/面试复习
本文总结了常见操作系统和Linux常用命令。主要介绍了Windows、Linux、Mac等PC操作系统和Android、iOS等移动操作系统,重点讲解了Linux系统的基本命令操作,包括文件目录操作(ls、cd、mkdir等)、文件内容查看(cat、more等)、查找命令(which、find)、文本处理(grep、wc)、权限管理(chmod、chown)以及网络和进程管理相关命令。同时还涵盖了用户管理、软件安装、压缩解压等实用操作技巧,为Linux系统使用提供了全面的基础命令参考。
2025-07-19 15:54:13
606
原创 适合小白的Java详解/万字解析/必备
Java核心特性摘要:1. 跨平台性:通过JVM实现"一次编写,到处运行",不同系统使用对应JVM翻译字节码为机器码。2. 面向对象:严格遵循OOP原则,支持封装、继承和多态(包括重载和重写)。3. 内存管理:自动垃圾回收机制管理内存。4. 数据类型:8种基本类型和对应包装类,注意浮点数精度问题建议使用BigDecimal。5. 重要概念:JDK(开发工具包)、JRE(运行环境)、JVM(执行引擎)三者的包含关系。6. 特殊机制:反射(运行时获取类信息)、泛型(类型参数化,支持通配符)、
2025-07-17 16:28:45
639
原创 网络编程/Java面试/TCP&UDP区别
InetAddress 是 Java 中 java.net 包下的一个类,主要用于表示 IP 地址(IPv4 或 IPv6)和主机名之间的映射,提供与网络主机相关的操作。内外IP:也叫局域网ip,只能在特点局域内使用,可减少ip使用。Socket 是对网络通信的封装,表示网络中通信的一个端点(IP 地址 + 端口号)。网络上的设备,事先规定的连接规则,以及传输数据的规则被称为协议。Socket 是通信的门口,IO 是门口收发数据的管道。网络编程:开发程序,实现不同设备程序间数据交互。
2025-07-16 22:15:03
317
原创 2025Nginx最新版讲解/面试
正向代理,代理对象是我们的客户端,目标对象不知道我们用户。VPN就是典型的正向代理。反向代理,代理对象是服务端,用户不知道服务端具体信息。而这正是Nginx所做的。根据权重优先级将请求打到服务器,可以根据服务器性能等指标。将我们静态数据存放在nginx上,无需在往服务端请求。维护系统多服务器部署,将我们请求代理到各个服务器。
2025-07-11 20:37:00
375
原创 2025最新版Docker讲解/面试/命令/容器化技术
docker是一款由Go语言开发基于操作系统内核提供轻量虚拟化,在Docker安装的软件并不是真正安装在宿主机操作系统中,而是安装在容器的文件系统中(隔离环境),宿主机看不到这些安装,容器之间互不影响。在我们docker内部有一个docker0网络,相当于一个局域网,每个容器都有自己的ip,我们可以直接通过他们的ip访问,但由于一些开关机会导致容器发生ip变化,所以这不是最佳选择。docker run [-v 宿主机路径/容器路径] --name 自定义容器名 镜像名:版本/ID。进入容器单独文件系统。
2025-07-11 16:46:37
532
原创 LangChainForJava?/Spring集成/流式输出/会话记忆Redis/Rag
如果采用最原始的方法用Spring集成大模型,势必会引起大量繁杂众多的代码。我们可以利用Langchain4J提供的框架或者使用Spring Ai都可以集成。都能快速搭建我们的基于大模型的项目。
2025-07-06 14:56:40
352
原创 Java序列化反序列化是什么?/Serializable/Code讲解
如果我们在Java中有向序列化某个对象的行为,我们需要将该类实现Java.io.Serializable接口,该接口没有任何方法,就是简单一个标记,用作这个类可以被我们Java编译器序列化的标志。Java序列化是将我们的对象转换成网络传输字节流的过程,相反,反序列化就是将我们的字节流转换成对象的过程。简而言之,就是将我们结构化的数据转换成非结构,扁平化的字节流。默认序列化效率低(反射 + 元信息),生成的字节流冗余较多;Java 序列化生成的字节流格式是 Java 私有的,,无法用于跨语言通信。
2025-06-22 15:31:21
409
原创 RabbitMQ多角度可靠性分析/基于Java代码深度解析
生产者可靠性:上一篇我介绍了RabbitMQ的基本交换机以及队列,不了解可以再回顾一下。那么这就带来一个问题,我们在程序中添加一个中间件,把我们的消息依托给MQ,那么我们如何保证我们的消息在这个过程不会丢失。保证它的的可靠性,目前主流从三个角度保证:生产者可靠性,MQ可靠性,消费者可靠性。生产者可靠性:所谓生产者可靠性就是我们如何保证将我们的消息从生产者将消息发送到队列或者消息的可靠性1. 重试机制针对网络异常,连接中断,卡顿的自动重发。(萌芽阶段,与客户端的连接,还没有到交换机/d队列)
2025-06-19 20:41:34
1026
原创 炸裂!!!图解RabbitMQ/交换机/队列/Java代码深入理解
RabbitMQ简介及Spring集成应用 RabbitMQ是一个基于Erlang开发的高性能消息中间件,采用AMQP协议,具有高吞吐量特性。其工作流程包括:消息序列化、UDP连接建立、交换机路由、队列存储和消费者反序列化处理。Spring通过AMQP依赖简化了RabbitMQ集成,提供RabbitTemplate发送消息和@RabbitListener接收消息的功能。配置需注意交换机和队列的存在性,避免消息丢失。典型应用包括Work队列模型,支持多消费者处理消息。核心端口为5672(协议)和15672(管
2025-06-12 22:19:45
407
原创 Java代码实现生产者消费者问题
用 Java 实现的经典生产者-消费者问题的代码,使用的是 wait() 和 notify() 方法实现线程间通信。
2025-05-23 21:31:12
196
原创 代码讲解Java线程转换
Java线程的生命周期主要包括新建、就绪、运行、阻塞和死亡五个状态。新建状态发生在使用new Thread()创建线程对象后,但在调用start()方法之前。调用start()后,线程进入就绪状态,具备运行资格,但实际运行取决于操作系统调度。Java中的Thread.State.RUNNABLE状态统称了“就绪”和“运行”两种状态,不区分线程是否正在执行。当线程获得CPU时间片时,进入运行状态,执行run()方法。阻塞状态包括同步阻塞、等待和超时等待,这些状态均由运行状态进入,恢复运行需先进入就绪状态。线程
2025-05-23 17:29:43
552
原创 JUC/多线程 :提升性能与解决并发问题
现代的计算机CPU往往性能都比较高,那么如果我们的计算机是单线程的,那么处理单任务的速度肯定是很快的。3>实现Callable接口,重写call方法(具有返回值,线程运行结果-FutureTask->管理结果 ),创建Thread对象,开启线程。2>实现Runnable接口(implements->写run方法),重写run方法,创建Thread对象,开启线程。插入/插队线程,插入到当前线程之前/换句话说就是当前线程进入另一个线程的等待线程池,等待唤醒。设置线程优先级(0-10,数字越高,优先级越高。
2025-05-18 09:45:20
305
原创 CSRF(cross-site request forgery)跨域请求伪造
CSRF 当我们在成功登录一个网站后,会将后端返回的cookie数据进行存放,每一次访问该域名都会将cookie存放在请求头,也就相当于用户登录凭证,但这种同域自动携带cookie存在一种问题 那就是当恶意网站也进去请求时,同样可伪造成正在登录的用户。那能获取本地存储(localStorage)和会话存储(sessionStorage)的数据吗。会话存储仅在当前tab中有效,tab关闭我们的数据也就随之丢失了。本地存储长期存在我们的浏览器,及时浏览器关闭也不会丢失。该请求携带cookie的数据。
2025-04-29 11:35:58
282
原创 spring-事务管理
想要添加事务管理,直接在你想要添加的地方类头或方法头添加@Transactional。注意修饰符必须为public,我们要让异常抛出,为不是捕捉异常。
2024-11-29 08:29:28
280
1
原创 Maven进阶
直接依赖间接依赖路径冲突同一个配置文件 相同坐标 不用版本 最后配置版本生效路径优先 谁层级高 谁是生效依赖声明优先 层级相同,看谁先声明可选依赖optionnal --不想给隐藏当前工程所依赖的资源 隐藏后对应的资源将不具有传递性排除依赖exclusions --- 不想要排除依赖时隐藏当前资源对应的依赖关系。
2024-11-03 10:35:40
357
原创 Spring中@Import和@ComponentScan注解差异
Import无论导入的该类是不是一个bean,都会自动将该类配置成一个bean,并解析里面的bean[类中的带有bean注解的方法才会装入到spring容器]。[配置类Configure 会被Spring容器自动注册为一个bean]ComponentScan则只有在该类是一个bean时才会进入该类,并解析,将其中bean装入容器中。
2024-11-01 11:21:35
579
原创 Spring整合Mybatis过程
通过配置扫描路径,Spring 会自动为每个 Mapper 接口生成代理对象,并将其注册为 Bean,从而使得我们可以在其他组件中直接注入并使用。当我们直接调用spring整合mybatis后的dao层方法 可以直接调用这是因为spring会通过拦截器自动拦截并将你的方法调用转换为对应的 SQL 执行。代理模式的使用使得我们在调用DAO接口方法时,实际上是调用MyBatis生成的代理类方法,这个方法内部会利用XML或注解配置的SQL来查询数据库并返回结果。在 Spring 和 MyBatis 整合时,
2024-10-31 11:13:17
425
原创 SpringMVC配置
SpringMVC技术与Servlet技术功能相当 开发效率高(好多共性的东西都封装好了,是对Servlet的封装,核心的DispatcherServlet最终继承自HttpServlet)SpringMVC基于java实现MVC模型的轻量级web框架运行步骤 2.对tomcat注册springmvc配置 [方法1] 声明[AnnotationConfigWebApplicationContext]同时对所需请求bean进行扫描[@ComponentScan("com.zz
2024-10-29 15:52:23
332
原创 Spring注解开发
Spring核心功能就是IOC, 其就是将Bean初始化到容器中,其中Bean是如何加载到容器 有两种方法 -> Spring XML 和Spring 注解为了省略XML文件过多的固定配置 我们可以创建一个类 并在类头注解@
2024-10-28 18:08:07
292
原创 Mybatis
帮助程序猿与数据库的交互操作步骤 利用MAVEN导入Mybatis依赖 在resources下创建mybatis-config xml文件编写映射器Mapper1. 创建xml文件 我们可以把这个文件看作一个对象 里面有我们相应的操作2.在进行相应操作前 我们需要有一个类 其中的属性应该与我们的表中的字段名相同查 若数据库字段名与所定义的类属性名不对应 则需要建立一个映射·--- --- 利用对
2024-10-28 17:18:06
289
原创 Java反射技术
Method m1 = aClass.getMethod("方法名", 参数类型1.class, 参数类型2.class...);返回类型 result = (返回类型)m1.invoke(类名, 参数1, 参数2);//获取对象所有方法 不包含父类方法 返回数组。//获取所有公有方法 包含父类方法 返回数组。将我们的class文件读取到内存中 注意对于类的加载只进行一次。
2024-10-28 10:45:14
421
原创 Spring框架
方便整合其他框架[Mybatis, SpringMVC, SpringBoot, SpringCloud,Redis...]4.IOC容器基本概念;把对象的创建过程和使用统一交给我们的spring进行管理-不需要开发者new。5.IOC底层实现技术:1.解析xml 2.工厂模式 3.反射技术。降低JavaEE api开发使用的难度[封装]1.核心组件IOC[]容器 Aop面向切面编程。方法的解耦 简化开发。--- bean底层实现原理 ---2.工厂模式[降低代码的耦合]3.反射[降低代码的耦合]
2024-10-27 16:20:18
260
原创 MVC架构模式/Java
MVC是一个架构模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。他们各自处理自己的任务。
2024-10-26 09:56:45
268
原创 JDBC实现对数据库的操作
/注意其中注册驱动的代码可省略不写 通过SPI技术会直接加载到mysql驱动类,自动将mysql驱动类注册到DriverManager里。注册[mysql]驱动 告诉你的java,你要连接的是什么牌子的数据库。获取对象[专门执行sql操作的对象]
2024-10-19 11:33:02
147
原创 Java修饰符
Private 仅自己所在的类可用,同一个包中的任何类都不可用。Proteced 不同包的子类可用,实例化对应属性不可。Default 同一个包的中的所有类都可用。Public 不同包的所有类都可用。
2024-10-18 08:32:24
260
原创 Tomcat/Servlet生命周期
loadOnStartup>=0,其中数字越低优先级越高 优点:响应时间快,客户端第一次访问时无需创建Servlet类 缺点:浪费空间资源,有些项目可能客户端不会访问。 loadOnStartup=-1,默认值 优点:不浪费资源,只在访问时创建 缺点:当客户第一次访问该项目时,需要客户等待创建 进行初始化工作...j加载配置文件...创建连接
2024-10-17 08:38:29
203
原创 越狱/快速幂/Java/取模问题
/n个位置 第1个位置的可能性为m 第i个位置的可能性为m-1 -> m*(m-1)^(n-1)一定不要给n进行取模运算,因为整个运算式中没有n的参与,对n取模将导致错误!//容斥定理 冲突总数 = m^n - m*(m-1)^n-1。//n个位置 有m^n中排列的可能性。
2024-10-16 09:37:06
164
原创 HTTP(超文本传输协议-HyperText Transfer Protocol)
http是万维网(www)通信的基础,设计目的即是确保客户端与服务器之间的通信,HTTP 是为了提供一种发布和接收 HTML 页面的方法,通过 HTTP 或者 HTTPS 协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。(二) 响应response。3xx:重定向(服务器给你调到新的位置)4xx:客户端请求语法错误或无法完成。(一)请response。1xx:请求接收正在处理。5xx:服务器代码错误。200:请求响应成功。
2024-10-15 14:43:22
149
空空如也
我的隔离级别是可重复读,为什么两次select结果不一样
2025-07-24
java spring Autowired自动注入 为什么这个会报错
2024-11-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅