自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试官说让我手撕一个DeepSeek???

本文介绍了如何用PyTorch实现稀疏混合专家(SparseMoE)技术,解决大模型全量计算的高成本问题。首先定义了MOEConfig配置类,包含隐藏层维度、专家数量等参数。然后构建SprseMOE模块,包含专家列表和路由层。关键的路由层MOERouter通过门控机制计算专家分数,使用softmax和topk选择权重最高的K个专家,并生成专家掩码。最后,SprseMOE的前向传播将输入分发给选定的专家计算,加权聚合各专家输出。整个过程实现了让模型"选择性激活"专家,显著降低计算量,是提升

2025-06-08 11:25:25 522

原创 MoE 与 LSTM的门,你真的理解差异吗?

摘要: 本文对比分析了LSTM和MoE(混合专家)模型中的门控机制差异。LSTM通过遗忘门、输入门和输出门控制时序信息的流动,采用Sigmoid全连接层实现连续元素级调节,擅长处理长期依赖但扩展性有限。MoE则通过路由网络选择性地激活专家子网络(前馈网络),采用Softmax-TopK实现模块级离散决策,具有参数效率高、支持并行的优势,但面临训练不稳定等挑战。两者在结构设计、信息流控制、梯度传播和计算效率等方面存在显著差异,分别适用于时序建模和大规模条件计算场景。(149字)

2025-06-07 20:27:22 926

原创 JIT即时编译器全面剖析:原理、实现与优化

即时编译器(JIT)作为现代软件开发中的关键技术,通过在程序运行时动态将代码转换为机器码,显著提升了应用程序的执行效率。JIT编译器结合了解释执行和编译执行的优势,首先通过解释器执行代码,同时收集性能数据,识别热点代码,然后将这些热点代码编译为机器码,以提高后续执行的效率。JIT编译器广泛应用于Java、C#、JavaScript等多种编程语言和运行环境,成为现代高性能计算不可或缺的组成部分。JIT编译器通过多种优化技术,如方法内联、逃逸分析、窥孔优化等,提高生成的机器码的执行效率。然而,JIT编译器也面临

2025-05-20 21:08:19 916

原创 看之前熟悉双亲委派加载机制,看之后了解双亲委派加载机制

Java类加载机制是JVM运行时环境的核心组成部分,负责将Java类文件加载到内存中并确保其正确执行。类加载过程包括加载、验证、准备、解析和初始化五个阶段,每个阶段都有其特定任务。双亲委派加载机制是类加载的核心,确保类的加载层次和安全性,避免重复加载和恶意代码的加载。类加载器层次结构包括引导类加载器、扩展类加载器和系统类加载器,每个类加载器在加载类时首先委托给父类加载器,只有在父类加载器无法加载时才会自己加载。自定义类加载器允许开发者根据特定需求创建类加载器,提供更大的灵活性和定制空间。类加载机制在Java

2025-05-19 18:46:49 1071 1

原创 OpenAI新发布Codex的全面解析

OpenAI推出的Codex工具标志着人工智能在代码生成和软件工程领域的重大突破。Codex具备多任务处理、代码生成与修改、代理系统与云驱动等核心功能,能够显著提高开发效率并降低成本。其多语言支持和代码兼容性使其适用于多种开发场景,而云驱动特性则提供了强大的计算能力和灵活性。Codex的发布不仅推动了AI在软件开发中的深入应用,还改变了开发者的工作方式和开发流程,促进了行业的创新与发展。尽管面临市场竞争和技术挑战,Codex的持续优化和扩展有望为开发者带来更多便利和价值,同时OpenAI也需关注其伦理和社会

2025-05-17 20:00:33 1186

原创 MyBatis:从入门到深度理解

MyBatis是一款广泛应用于Java企业应用开发的持久层框架,以其强大的SQL定制能力、高级映射机制和良好的性能著称。它通过XML或注解配置,简化了JDBC代码和数据库操作,支持自定义SQL、存储过程和复杂映射。MyBatis的核心思想是将SQL语句与Java对象映射,提升开发效率。其发展历程从iBatis到MyBatis,逐步成为Java持久化领域的重要框架。MyBatis适用于需要高度控制SQL、复杂业务逻辑和与现有数据库集成的场景。使用过程包括配置文件加载、会话工厂创建、SQL执行和事务管理。MyB

2025-05-15 18:26:16 1044

原创 主从架构:技术原理与实现

本文深入探讨了分布式锁和主从架构在分布式系统中的应用。首先,文章复习了分布式锁的实现方式,包括Redis的setnx+lua脚本、Redission以及看门狗机制,并讨论了可重入锁和阻塞锁的实现。接着,文章重点介绍了主从架构,详细阐述了其在MySQL和Redis中的实现原理、核心组件、配置步骤以及优缺点。主从架构通过分离读写操作,实现了负载均衡、高可用性和数据冗余,适用于不同的应用场景。文章还比较了MySQL和Redis在主从架构上的异同,并展望了未来主从架构的发展趋势,如同步机制优化、一致性模型多样化、自

2025-05-12 22:02:01 1284

原创 力扣94. 二叉树的中序遍历

2.栈 while--->左边,然后res添加,在换到右边。1.递归 先一直向左边找,然后res添加,最后向右找。经典老题:两种实现思路 递归或栈。给定一个二叉树的根节点。

2025-05-08 20:05:27 327

原创 MySQL概念简介

MySQL作为世界上最流行的开源关系型数据库之一,其强大的事务处理能力和高并发支持使其在各种复杂应用场景中得到广泛应用。MySQL的核心机制包括日志系统、锁机制和事务管理,这些机制共同确保了数据库的ACID特性,为应用程序提供了可靠的数据存储和处理环境。本报告将深入剖析MySQL的日志系统、锁机制和事务管理,为高级工程师提供全面的技术洞察。

2025-05-07 21:47:38 1388

原创 ThreadLocal源码深度剖析:内存管理与哈希机制

问题描述内存泄漏Entry 的 key 是弱引用,value 是强引用,不及时清理会导致内存泄漏线程复用问题在线程池中,ThreadLocal 变量可能被后续任务错误读取不支持父子线程传值子线程无法继承父线程的 ThreadLocal 值缺乏自动清理机制需要手动调用remove(),否则容易出问题由 Alibaba 开源的增强版 ThreadLocal,用于解决线程池中 ThreadLocal 值传递问题,是目前最主流的解决方案之一。

2025-05-05 18:38:24 2025 1

原创 RabbitMQ 深度解析:从核心组件到复杂应用场景

消息队列作为分布式系统中不可或缺的组件,承担着解耦系统组件、保障数据可靠传输、提高系统吞吐量等重要职责。在众多消息队列产品中,RabbitMQ 凭借其可靠性和丰富的特性,在企业级应用中获得了广泛应用。本研究报告将全面剖析 RabbitMQ 的核心组件、工作原理,深入探讨 Java 开发中常见的消息处理问题,并详细阐述如何实现复杂的消息处理场景,同时揭示 RabbitMQ 底层的负载均衡机制。

2025-05-04 22:48:35 1257

原创 MCP----当今程序员必备的知识

在当今快速发展的技术环境中,大型语言模型(LLM)已经成为人工智能领域的重要组成部分。这些模型不仅能够理解和生成自然语言,还能执行各种复杂的任务,如翻译、问答、甚至编程。然而,随着LLM的广泛应用,一个关键问题逐渐显现:如何使这些模型能够与外部世界进行有效互动?为了解决这一问题,模型上下文协议(Model Context Protocol,简称MCP)应运而生。MCP是一个创新的开源协议,旨在标准化大型语言模型与外部数据源和工具之间的通信方式。

2025-05-03 18:50:16 1404

原创 Java 自旋锁:实现机制与优化策略

用户也可自己实现自旋锁(如上例)或更复杂的 MCS、CLH(ReentrantLock底层的Node节点) 等队列锁,来满足极低延迟需求。然而,

2025-05-02 20:20:30 1254

原创 分布式锁的几种实现

分布式锁:当多个进程不在同一个系统中(比如分布式系统中控制共享资源访问),用分布式锁控制多个进程对资源的访问。

2025-05-01 20:46:25 1338

原创 力扣28. 找出字符串中第一个匹配项的下标

思路就是匹配左右两边相同的字母(不包括左右),直到不匹配为止。最后给next赋值就是你的匹配长度。首先不管能不能理解原理,我觉得至少也应该知道每个变量有啥用,能写出来就行,原理这个东西就看自己水平如何了。1.next数组:当模式串匹配失败时,告诉我们下一个应该从模式串的哪个位置继续比较。相信这个算法大家或多或少也有听过,今天我们来具体聊聊这个算法的实现与原理。,从而提高匹配效率。先看看,等把整个流程看完说不定就有新的理解了。不过如何来实现这两步才是关键。不懂的话把代码多演练几遍。喜欢的话可以点点关注哦!

2025-04-29 18:39:48 338

原创 力扣151. 反转字符串中的单词(Java题解)

/快慢指针来去除fast++) {= ' ') {if (slow!//首位置无需添加空格= ' ') {//单词复制//复制数组//逆序手写l++;r--;end++) {if (end == a.length || a[end] == ' ') //以空格为界,对每个单词进行逆序。

2025-04-28 20:00:17 464

原创 Java中的并发编程类

基础的线程Thread类,Runnable接口以及高级一点的Future,Callable接口。到后来的线程池ThreadPoolExecutor类,以及一些常用的volatile,synchronized关键字,原子类,通信工具类,还有一些并发集合。

2025-04-27 21:28:29 1280

原创 Java的锁-----万字长文

目录各类锁的用法与示例底层实现细节synchronized 的 JVM 实现ReentrantLock 的 AQS 机制Java 内存模型与锁的关系死锁产生与避免不同锁的性能对比与选型建议JDK锁机制的演进Java 提供了多种锁(Lock)实现,用于在多线程环境下实现互斥和同步。这些锁主要分为两大类:内置锁(基于关键字 的监视器锁)和显示锁(实现了 接口的锁)。常见的锁包括:内置锁(synchronized):基于对象头的监视器锁,由 JVM 实现。(面试重点)ReentrantLock:显式可重入互斥

2025-04-25 20:50:54 1371

原创 蓝桥杯 2025 省 B真题 装修报价

为了验证系统报价是否合理,老王决定模拟其运作方式,尝试每种可能的运算符组合,计算出所有可能出现的结果的总和。思路:对于本题而言可以发现无非就是三个符号间的组合,但需要注意的是在真实代码中^的优先级是低于+(-),所以需要我们单独处理异或相关的式子。然而,当老王提交数据后,他发现这套系统的运作方式并不透明:系统只会给出一个最终报价,而不会公开任何运算过程或中间步骤。前缀是会逐渐增加,但某一时刻对应的前缀只对当前的组合有效,增加之后,后面的符号组合也会变化。现在,请你帮老王算出所有可能的结果的总和。

2025-04-24 19:54:13 773

原创 控制反转 IoC(万字长文)

因为前些阵子看spring面经,所以一直想具体写一些内容。所以这篇文章就诞生了。许多人对于刚接触Spring-Boot,对于这个概念云里雾里,相信有不少小伙伴在看一些视频时,别人上来一个Controller--->Service(ServiceImpl)--->Mapper,在这个过程中难免少不了那问题就来了,直接new一个对象他不香吗,为啥还要这样呢?就是我们今天要聊的。但是这只是两个类,一个大型项目,少说上百个类,一点不夸张。

2025-04-21 21:00:49 1488

原创 力扣142. 环形链表 II

有slow*2=fast知: (a+b)*2 == a+b+c+b 即 c = a 但不要忘记这只是我们举得例子,实际可能。那么对于head来说,我们可以让其向后遍历一次,slow也向后遍历,发现恰好相遇。为了表示给定链表中的环,评测系统内部使用整数。2.Map记录每一个位置,如果出现重复位置的出现,就说明存在环。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。

2025-04-19 19:18:33 475

原创 力扣206.反转链表(学不会来找我)

要知道不能单纯让一个指针一直向后遍历,我们需要调整指针的顺序,就需要知道前后指针是谁,才可以将头倒过来。题目要求将一个链表逆序 自然想到将指针全部反过不来不就行。但是关键在于咋执行这个操作。但存在一个问题:就是cur该如何进行下一个node的寻找呢?

2025-04-18 19:23:14 334

原创 2025届蓝桥杯c++A组真题----好串的数目

断点”指的是相邻两个字符 s[i-1] 和 s[i] 不满足非递减关系(即 s[i] 既不等于 s[i-1] 也不等于 s[i-1] + 1 )。对于一个长度为 n 的字符串 s=s0​s1​⋯sn−1​ 来说,子串的定义是从中选出两个下标 l,r (0≤l≤r≤n−1),这之间所有的字符组合起来的一个新的字符串:s′=sl​sl+1​⋯sr​ 就是其中一个子串。

2025-04-17 18:14:58 1322

原创 力扣209. 长度最小的子数组

2.为啥不是r-l+1 因为我在进入while循环之前就已经r++了。喜欢这篇文章麻烦给博主点点关注。两层for循环遍历即可。

2025-04-12 14:55:55 186

原创 力扣673:最长递增子序列的个数(Java)

/ cnt[i] 表示以 nums[i] 结尾的 LIS 个数。// dp[i] 表示以 nums[i] 结尾的 LIS 长度。// 用更小的 num 更新已有的长度。// 初始化:每个数自身算一个长度为1的序列。// 同样的长度,数量累加。让j在i的范围内向前遍历 只要存在nums[i]>nums[j]时,就满足递增的要求,就可以更新dp数组。

2025-04-07 19:47:49 559

空空如也

空空如也

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

TA关注的人

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