自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于java中的String类详解

Java String类在Java 8及之前使用char[]存储字符串,Java 9后改为byte[]+编码标志位,以节省内存空间。String对象存储在堆中,字符串常量池位于堆内存以实现字符串驻留。String类被声明为final以确保安全性、不可变性和性能优化。从char[]改为byte[]的优化主要针对Latin-1字符,可减少内存占用并提升缓存局部性,同时保持原有API不变。这一改动体现了Java团队对性能的精细优化。

2025-09-13 23:05:45 1186

原创 为什么企业禁用MinIO,以及MinIO的开源平替介绍

中国企业正主动弃用MinIO,转向国产开源替代方案,主要出于四大风险考量:1)AGPLv3许可证的传染性风险;2)不符合信创国产化要求;3)早期版本存在数据安全疑虑;4)社区版功能"断供"迫使购买商业版。推荐替代方案包括基于Rust语言的RustFS(兼容S3协议、Apache2.0许可)和XSKY的XEOS(企业级方案),但需注意其发展阶段和商业化差异。企业需根据自身需求评估替代方案。

2025-09-13 22:40:32 7526

原创 Mysql 幻读详解

MySQL InnoDB中的幻读问题解析:在可重复读(RR)隔离级别下,幻读指同一事务内两次查询结果集行数不一致,因其他事务插入或删除数据导致。InnoDB通过Next-Key Lock(记录锁+间隙锁)机制防止幻读,但需使用SELECT...FOR UPDATE等加锁语句才会生效。单纯快照读仍可能出现幻读,关键操作建议加锁查询或提升至SERIALIZABLE隔离级别。

2025-09-12 21:47:24 1325

原创 经典排序算法总结

本文介绍了八种常见排序算法,包括冒泡排序、插入排序、选择排序、希尔排序、快速排序、归并排序、堆排序和桶排序。每种算法都详细说明了其基本思路、代码实现、时间复杂度和空间复杂度等关键特性。其中快速排序和归并排序表现最优,10万数据量下耗时仅50毫秒和26毫秒。文章强调学习这些算法不仅能应对笔试面试,更重要的是培养编程思维,理解双指针、分治、递归等核心思想,体现开发者的基本功。建议读者动手实践以加深理解。

2025-09-12 20:36:23 850

原创 AI大模型:程序员的江湖,刀口舔血路

本文以程序员视角回顾了AI技术发展历程,从最初对AI(如AlphaGo)的不屑,到GPT-3出现时的震惊,再到如今AI替代部分编程工作的职场焦虑。作者通过个人经历展现了程序员与AI的博弈:从被AI抢走工作,到学会驾驭AI工具,最终成为"AI驯兽师"。文章揭示了AI时代程序员的生存之道——既要掌握新技术,又要保持对业务需求的理解力,强调"人心"才是程序员不可替代的价值。结尾以"Hello,World"呼应开头,表达了对技术初心的坚守。

2025-09-09 22:16:17 700

原创 JDK8、JDK11、JDK17、JDK21的进化之路

Java从JDK8到JDK21的演进脉络:JDK8奠定现代基础(Lambda/Stream);JDK11实现工具链现代化(var/HttpClient);JDK17带来语言能力飞跃(Records/模式匹配);JDK21革新并发编程(虚拟线程)并完善模式匹配。各LTS版本围绕开发效率、性能优化和代码简洁性持续升级,使Java保持现代语言竞争力。

2025-09-09 21:40:44 1823

原创 Java 对象内存布局详解

Java对象内存布局分为对象头、实例数据和对齐填充三部分。对象头包含MarkWord(8字节)和类型指针(4/8字节),数组对象还有4字节长度字段。实例数据存储成员变量,大小取决于字段类型和数量。对齐填充确保对象大小为8字节倍数。例如,普通Object对象占用16字节,包含字段的User对象可能占用24字节。内存占用受指针压缩设置影响,可通过JOL工具精确测量。理解内存布局对优化JVM性能和内存管理至关重要。

2025-08-22 21:22:08 915

原创 java对象创建的过程

Java对象创建过程解析:从JVM角度看,使用new关键字创建对象涉及多个精细步骤。首先检查类是否已加载,未加载则执行类加载;接着在堆中分配内存(采用指针碰撞或TLAB方式);然后进行内存空间零值初始化;设置对象头信息存储元数据;最后执行构造方法完成初始化。整个过程涉及类加载、内存分配、同步控制等机制,是JVM实现内存管理和多线程同步的基础。文章还提到逃逸分析等优化手段,后续可深入探讨。

2025-08-22 11:26:03 779

原创 B站搜推大规模召回系统工程实践

B站搜推召回系统架构演进与实践 摘要:本文介绍了B站搜索推荐系统中大规模召回系统的架构设计与实现。系统采用多级漏斗架构,通过云原生的两级服务设计(merge服务+索引服务)解决传统单体架构的扩展性问题。merge服务作为业务引擎采用配置化、算子化设计,支持多通道召回与结果合并;索引服务分为文本召回、x2i召回和向量召回三类,分别针对不同场景优化。系统通过分布式索引构建、实时数据更新、稳定性保障等设计,实现了高性能、高时效性和高可扩展性。未来将持续优化模型召回能力、组件化水平和平台自动化程度。

2025-08-21 13:41:17 994

原创 闲鱼搜索召回升级:向量召回&个性化召回

本文介绍了闲鱼搜索场景中召回环节的优化实践。针对传统文本召回存在的语义匹配不足等问题,团队从两个方向进行了改进:一是引入语义向量召回模型(DSSM架构),通过Query改写、难样本构造、对比学习损失函数等技术提升相关性;二是增加基于行为的I2I(Q2I2I)召回,利用用户行为数据增强个性化能力。实验表明,优化后七日人均买卖家提升3.31%,人均成单提升4.02%。文章还讨论了多模态融合、个性化向量召回等尝试,并指出未来需在召回效率与体感指标间寻求平衡。方案兼顾技术突破与业务特性,为电商搜索优化提供了实践参考

2025-08-21 13:37:06 2110

原创 JVM-类加载详情

Java类加载机制通过运行时加载.class文件实现动态扩展,其生命周期包括加载、验证、准备、解析、初始化五个阶段。类加载器采用双亲委派模型,确保核心类库安全,但可通过自定义类加载器打破该机制。类加载过程严格控制字节码验证,初始化阶段执行<clinit>()方法完成静态变量赋值。自定义类加载器需继承ClassLoader并重写findClass()方法,实现从特定路径加载类文件。虽然技术上可以创建同名系统类,但会破坏JVM稳定性,应避免这种操作。该机制为Java提供了动态扩展能力,是插件化等技术

2025-08-18 18:16:35 870

原创 Linux常用命令详解

USER, PID (进程ID), %CPU, %MEM, VSZ (虚拟内存大小), RSS (常驻内存大小), TTY (终端), STAT (状态), START (启动时间), TIME (CPU 时间), COMMAND (命令)。(所有者: rwx=7, 组: r-x=5, 其他人: r-x=5) - 常用可执行文件权限。: 指定 HTTP 请求方法 (如 GET, POST, PUT, DELETE)。(所有者: rw-, 组: r--, 其他人: r--) - 常用数据文件权限。

2025-08-18 12:29:48 652

原创 docker常用命令详解

仓库名和标签都是none的情况,

2025-08-17 22:36:31 1371

原创 常用的SQL语句

本文汇总了SQL常用操作语句,主要包括:1)数据查询(SELECT)基础语法及条件、排序、分组、连接等高级查询;2)数据操作(DML)如插入、更新、删除数据;3)表结构管理(DDL)包括创建、修改表结构;4)索引管理;5)事务控制;6)用户权限管理;7)常用函数(聚合、字符串、日期、数学函数);8)其他实用语句如查看数据库/表结构、数据导入导出等。全文提供了SQL核心功能的语法示例,适合数据库开发与管理人员快速查阅参考。

2025-08-17 21:45:30 935

原创 redis的key过期删除策略和内存淘汰机制

Redis的过期键删除策略主要包括三种:定时删除(立即释放内存但消耗CPU)、惰性删除(访问时才检查删除,可能内存泄漏)和定期删除(折中方案,定期扫描删除)。Redis实际采用惰性删除+定期删除的组合策略。内存淘汰机制包括不淘汰数据和针对过期键或全部键的多种淘汰算法(如LRU、LFU、TTL等)。在RDB/AOF持久化和主从复制过程中,过期键有特殊处理机制,如主节点删除后通知从节点同步删除。这些策略平衡了内存使用和性能需求。

2025-08-16 23:20:50 1382

原创 AI风暴下的工程师:从CRUD废墟到湮灭亦或重生

当系统恢复稳定,年轻的CTO拍着我的肩:“老杨,你的价值从来不是写接口,而是把‘工程铁律’刻进AI的DNA里。真正的价值正从CRUD的灰烬中涅槃——那是将人类在复杂系统中摸爬滚打的血泪教训,淬炼为驾驭AI巨兽的缰绳与灯塔的能力。” 我握着手机,指节发白——那些我曾信手拈来的分库分表、缓存击穿策略,在电话那头已沦为无人问津的遗迹。我依然会打开Cursor生成代码,但目光不再空洞——我审视着每一行AI的产出,思考着如何将十年淬炼的工程之魂(系统思维、容错设计、领域约束)编织进这些自动化的经纬之中。

2025-08-16 22:47:17 1219

原创 RocketMQ-延时消息和定时消息

延时消息是指消息在发送到 RocketMQ 后,),等待该时间点到达后投递给消费者。

2025-08-14 10:00:00 420

原创 RocketMQ-顺序消息介绍

RocketMQ 的顺序消息(FIFO 消息)是一种严格按照消息发送顺序进行存储和消费的消息类型。它通过或来确保消息的顺序性,适用于对消息顺序有严格要求的业务场景。默认情况下生产者会把消息以Round Robin轮询方式发送到不同的Queue分区队列;而消费消息时会从多个Queue上拉取消息,这种情况下的发送和消费是不能保证顺序的。如果将消息仅发送到同一个Queue中,消费时也只从这个Queue上拉取消息,就严格保证了消息的顺序性。但顺序消息分为全局顺序消息和部分顺序消息。

2025-08-13 12:56:36 638

原创 RocketMQ-事务消息介绍

RocketMQ的事务消息机制通过"半消息+二次确认"实现分布式事务一致性。流程分为两个阶段:先发送半消息到Broker,执行本地事务后提交二次确认(Commit/Rollback);若未收到确认则启动回查机制。支持三种状态:提交、回滚和待回查的中间状态。典型应用场景包括订单系统、支付系统等需要保证本地操作与消息发送一致性的场景。代码示例展示了如何创建事务生产者、设置事务监听器(含本地事务执行和状态回查逻辑)以及发送事务消息。该机制有效解决了分布式系统中的事务一致性问题。

2025-08-13 12:19:48 1313

原创 基于千问2.5-VL-7B训练识别人的表情

本文介绍了使用LLaMA-Factory微调通义千问2.5-VL-7B多模态模型的流程。首先安装LLaMA-Factory工具并下载模型,然后准备FER-2013人脸表情数据集,通过脚本将图片路径和情感标签转换为JSON格式的训练数据。最后配置训练参数,发现增加训练轮数能显著提高表情识别的准确率。整个过程涵盖了从环境搭建、数据处理到模型训练的关键步骤。

2025-07-31 14:34:45 755

原创 大模型微调工具LLaMA-Factory的安装流程

以适应特定的应用场景,如。

2025-07-31 09:52:41 656

原创 ThreadLocal详解

如果当前线程的threadLocals为空,就会new ThreadLocalMap(this, value) 绑定当前线程。ThreadLocalMap内部是Entry数组,Entry的k为当前线程且为弱引用,同时为线程类Thread的内部属性。set时先获取当前线程的ThreadLocalMap,用当前线程作为key进行赋值。线程池复用线程时,未清理 ThreadLocal 导致残留旧数据。:子线程无法获取父线程的 ThreadLocal 值。的 Entry,但依赖调用时机。

2025-07-30 19:16:20 457

原创 docker的安装和配置流程

本文详细介绍了Docker在CentOS系统上的安装与配置流程。主要内容包括:1)通过sudo su进入管理员模式并更新yum;2)彻底卸载旧版Docker及相关组件;3)安装必要依赖包;4)设置阿里云镜像源;5)安装Docker CE并配置启动服务。第二部分重点说明如何配置多个国内镜像源加速下载,通过编辑daemon.json文件添加6个常用镜像地址,并重启服务使配置生效。最后通过docker info命令可验证配置是否成功。全文提供了完整的命令行操作指南,适合需要快速部署Docker环境的用户参考。

2025-07-29 16:57:55 596

原创 Nginx安装流程

本文介绍了Nginx的安装步骤和常用命令。安装过程包括下载解压源码包、配置编译参数(支持HTTPS和流式处理)、编译安装等步骤。常用命令包含启动、停止、重启Nginx服务等操作。文中还提供了可直接执行的安装脚本,并推荐了一个实用的工具网站。全文提供了从安装到基本使用的完整指导,适合需要快速部署Nginx的用户参考。

2025-07-29 16:30:25 388

原创 Mysql 5.7和Mysql 8到底有哪些差异?

MySQL 8引入了一些新的数据类型,为开发人员提供了更多的选择。数据字典提高了元数据的存储效率,降低了元数据访问的成本,并使MySQL更容易扩展和维护。MySQL 8引入了新的数据字典架构,用于管理数据库的元数据信息。此外,MySQL 8还引入了密码策略,可以强制用户使用更强的密码,从而增加了数据库的安全性。I nnoDB存储引擎一直是MySQL的默认存储引擎,而MySQL 8进一步改进了它的性能和稳定性。这些新的数据类型扩展了MySQL的功能,使其更适合不同类型的应用程序和用例。

2025-07-26 18:19:35 842

原创 开源的语音合成大模型-Cosyvoice使用介绍

CosyVoice 是由阿里巴巴达摩院通义实验室开发的新一代生成式语音合成大模型系列,其核心目标是通过大模型技术深度融合文本理解与语音生成,实现高度拟人化的语音合成体验。以上为简单的demo,实测效果很好了,可以使用CosyVoice框架提供的http接口,也可以自己使用fastapi定制化开发。支持自然语言指令(如“欢快语气”)及富文本标签(如 <laugh>)159。仅需 3s 参考音频;内置 7 种预训练音色(中/英/日/韩/粤男女声);(中/英/日/韩/粤语/四川话等),支持中英混合语句自然合成;

2025-07-23 19:37:42 1832

原创 Arthas工具使用指南

摘要: Java开发者常面临线上环境性能问题(如CPU飙升、内存泄漏)难以实时诊断的痛点。阿里巴巴开源的Arthas通过字节码增强和Attach机制,提供无侵入式诊断能力,支持动态监控方法调用、线程分析、内存泄漏追踪及代码热更新。核心功能包括:thread定位线程阻塞、trace分析慢请求、watch监控方法参数、redefine热修复代码,以及heapdump内存快照等。典型场景如性能瓶颈定位、死锁分析、数据不一致排查等,显著提升问题解决效率。安装便捷,支持动态Attach到运行中的JVM,是Java开发

2025-07-23 18:47:52 1071

原创 Mysql中order by的性能问题

在使用order by时,如果出现Using filesort,说明此sql存在性能问题,需要对于此类sql语句进行优化,使其尽量使用Using index。

2025-07-22 17:00:26 1026

原创 LLaMA-Factory相关参数说明

量化是大模型领域中的一项关键技术,它通过降低模型参数的精度,将浮点数转换为整数或定点数,从而实现模型的压缩和优化。这样做的主要目的是减少模型的存储需求、加快推理速度,并降低模型的计算复杂度,使得大模型能够更高效地在资源受限的设备上运行,例如移动设备、嵌入式系统等场景。

2025-07-22 11:40:11 1616

原创 爬虫问题---ChromeDriver的安装和使用

在浏览器里面输入回车查看浏览器版本Chrome的版本要和ChromeDriver的版本对应,否则会出现版本问题。

2024-07-31 13:17:17 1822

原创 Spring Cloud 组件

Eureka Client 会通过发送rest请求的方式向eureka服务端注册自身元数据:ip地址,端口,运行状况等信息,服务端会把注册信息存储在一个双层map中。 Eureka Client 在拉取服务信息时,先从缓存层获取,如果获取不到,先把数据存储层的数据加载到缓存中,再从缓存中获取。值得注意的是,数据存储层的数据结构是服务信息,而缓存中保存的是经过处理加工过的、可以直接传输到 Eureka Client 的数据结构。 eureka客户端每30秒发送一次心跳来续约,告知此

2024-07-31 10:59:48 1636

原创 redis存储结构

例如,字符串可以是普通的编码(REDIS_ENCODING_RAW),也可以是压缩后的编码(REDIS_ENCODING_EMBSTR 或REDIS_ENCODING_LZF)。在 Redis 中,数据可以是字符串(REDIS_STRING)、列表(REDIS_LIST)、集合(REDIS_SET)、有序集合(REDIS_ZSET)、哈希表(REDIS_HASH)、流(REDIS_STREAM)等类型之一。Redis是一个高性能的键值存储系统,它支持多种类型的数据结构,如字符串、列表、集合、散列等。

2024-07-24 18:22:36 1698

原创 Spring循环依赖详解

在Spring框架中,循环依赖是指两个或更多的Bean相互间直接或间接地依赖对方的情况。这种依赖关系可能导致Bean的实例化过程中出现问题,但Spring通过其内部的处理机制能够解决某些类型的循环依赖。简单的说就是A依赖B,B依赖C,C依赖A这样就构成了循环依赖。

2024-07-22 22:39:54 1387 1

原创 JDK和CGLIB的动态代理详解

1.JDK动态代理: 代理的类必须实现一个接口,因为反射机制生成一个实现被代理接口的匿名类。2.CGLIB动态代理: 动态生成被代理类的子类.JDK动态代理通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口,核心是InvocationHandler接口和Proxy类,反射机制生成一个实现代理接口的匿名类,被代理对象必须有其接口。

2024-07-22 17:48:34 412

原创 mysql的B+树索引结构介绍

I InnoDB存储引擎中页的大小为16KB,一般表的主键类型为INT(占用4个字节)或BIGINT(占用8个字节),指针类型也一般为4或8个字节,也就是说一个页(B+Tree中的一个节点)中大概存储16KB/(8B+8B)=1K个键值(因为是估值,为方便计算,这里的K取值为1000。: B+树的节点可以存储更多的键值,这意味着每个节点可以包含更多的数据,从而减少了树的深度。例如,如果一个节点可以存储1000个键值,而B树的节点只能存储100个键值,那么B+树的高度将是B树的十分之一左右。

2024-07-19 23:56:55 1132

转载 Java线程的6种状态及切换(透彻讲解)

Java中线程的状态分为6种。1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得CPU时间片后变为运行中状态(running)。

2024-07-19 14:28:29 156

原创 关于mysql碎片和数据页分裂问题

1:insert,delete、uodate都可能会产生碎片,浪费空间2:只有insert随机主键时,产生碎片会导致数据页分离。3:碎片多会导致索引数据不集中,影响索引性能。

2024-07-19 11:52:29 2145

原创 线程池---核心方法总结

Worker:内部类,继承了Runnable和AQS,定义了Thread线程对象。ctl:AtomicInteger类型对象,有两层含义:workerCount,表明当前有效的线程数;runState,表明当前线程池的状态,是否处于Running,Shutdown,Stop,Tidying,Terminate五种状态。workQueue:BlockingQueue类型,线程池的队列。mainLock:ReentrantLock类型,线程池的锁。workers。

2024-07-18 23:51:28 1298

原创 线程池 --- 基础总结

通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销。对线程进行一些维护和管理,比如定时开始,周期执行,并发数控制等等。Executor是一个接口,跟线程池有关的基本都要跟他打交道。下面是常用的ThreadPoolExecutor的关系。

2024-07-18 23:22:57 934

原创 volatile关键字解析

volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色。同synchronized相比(synchronized通常称为重量级锁),volatile更轻量级,相比使用synchronized所带来的庞大开销,倘若能恰当的合理的使用volatile,自然是美事一桩。为了能比较清晰彻底的理解volatile,我们一步一步来分析。首先来看看如下代码try {

2024-07-17 22:31:13 696

后端开发+redis+详细了解

后端开发+redis+详细了解

2022-07-06

空空如也

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

TA关注的人

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