<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[marwi_study的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/marwi_study</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; marwi_study]]></copyright><item><title><![CDATA[从零搭建大模型应用：一文搞懂调用、RAG、Function Call与MCP（附完整代码）]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/163309267</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/163309267</guid><author>marwi_study</author><pubDate>Wed, 29 Jul 2026 17:05:36 +0800</pubDate><description><![CDATA[本文用"大脑、小抄、左膀右臂、外包团队"的生动比喻，从零开始搭建一个包含RAG检索增强生成和Function Call工具调用的大模型应用Demo，配Mermaid架构图和可运行的完整代码。]]></description><category></category></item><item><title><![CDATA[从硅片到字节码：计算机组成原理如何影响你写的每一行Java代码]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/163306666</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/163306666</guid><author>marwi_study</author><pubDate>Wed, 29 Jul 2026 16:19:56 +0800</pubDate><description><![CDATA[以下是一段约256个字符的文章摘要：

> 本文从CPU流水线、Cache缓存行与MESI缓存一致性协议出发，解释硬件如何决定代码性能；通过行优先遍历、多线程计数、对象内存占用、伪共享四个案例，展示底层原理在开发中的直接体现；进而将JVM解读为一台软件模拟的计算机——执行引擎对应CPU、堆与方法区对应内存、字节码对应指令集，JMM则是对多核缓存一致性的语言级抽象；最后结合真实生产环境的内存泄漏排查，演示从Grafana监控发现异常、MAT分析dump定位根因到修复验证的完整闭环。理解计算机如何运行，排查问题]]></description><category></category></item><item><title><![CDATA[电商平台系统架构演进之路]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/163069909</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/163069909</guid><author>marwi_study</author><pubDate>Tue, 21 Jul 2026 10:51:46 +0800</pubDate><description><![CDATA[一句话简介： 从单体应用到大数据平台，一篇文带你走完电商系统架构的完整演进之路。

核心内容：

本文从一名开发者的视角出发，以"被业务逼出来的架构演进"为主线，完整梳理了电商平台系统架构的九次关键进化：

单体应用 → 数据库分离 → 前后端分离 → 分层架构 → SOA（物理隔离）→ 微服务（去ESB）→ BFF（多端适配）→ 服务网格（治理下沉）→ 大数据层（数据价值挖掘）

文章不讲晦涩的理论，而是从每个阶段遇到的真实业务痛点出发，讲清楚"为什么需要进化"、"解决了什么问题"、"带来了什么新挑战"。]]></description><category></category></item><item><title><![CDATA[我想把这篇文章送给刚毕业时的自己]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/162582891</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/162582891</guid><author>marwi_study</author><pubDate>Sun, 05 Jul 2026 15:32:21 +0800</pubDate><description><![CDATA[以上列出的只是大学里有教的课程中对于计算机专业比较重要的内容，并不代表其他课就不重要，也不代表着学了这些就够了，路漫漫其修远兮，知道了这些只能算是入门了，后面还有分布式系统、大数据、高并发、虚拟机调优、sql 调优等等要学的，但是不要慌，还记得高中时学过一篇文章，其实就是要“走一步，再走一步”，最后回头就会发现，原来自己已经走了这么远，而那一个个看似巍峨的小山峰，不过是托举你前行的垫脚石～下一篇，我想讲讲电商平台的系统架构（或者你想先听哪个？评论区告诉我）。]]></description><category></category></item><item><title><![CDATA[从零到一开发「天才厨神」美食烹饪小程序：架构设计与踩坑记录]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/162528968</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/162528968</guid><author>marwi_study</author><pubDate>Thu, 02 Jul 2026 22:09:53 +0800</pubDate><description><![CDATA[本文分享了「天才厨神」美食烹饪小程序的开发经验，重点介绍了技术架构设计、核心功能实现和踩坑记录。项目采用微信小程序原生开发+云开发（CloudBase）方案，实现了菜品展示、收藏、盲盒抽取等功能。开发中遇到云函数依赖缺失、数据权限不足、审核被拒等问题，通过添加依赖配置、使用云函数处理权限操作、调整产品设计（如限制个人开发者的社交功能）等方案解决。最终产品通过审核并上线，涵盖了菜品管理、用户交互等完整功能。文章总结了小程序开发的实践经验，为开发者提供了有价值的参考。]]></description><category></category></item><item><title><![CDATA[算法题（二）]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/116448062</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/116448062</guid><author>marwi_study</author><pubDate>Thu, 06 May 2021 10:14:13 +0800</pubDate><description><![CDATA[个人在秋招和春招的时候刷了一些题目，主要是来自leetcode，通过学习别人的题解和个人的尝试，整理了一些题目较优的解法，现在分享给大家，可能对你的思维方式会有一丢丢的启发
链表
1. 反转链表
反转一个单链表。
示例:

输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL
输出: 5-&gt;4-&gt;3-&gt;2-&gt;1-&gt;NULL

进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题？
/**
 * Definition for singly-lin]]></description><category></category></item><item><title><![CDATA[算法题（一）]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/116325677</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/116325677</guid><author>marwi_study</author><pubDate>Sat, 01 May 2021 10:28:12 +0800</pubDate><description><![CDATA[个人在秋招和春招的时候刷了一些题目，主要是来自leetcode，通过学习别人的题解和个人的尝试，整理了一些题目较优的解法，现在分享给大家，可能对你的思维方式会有一丢丢的启发
数组
1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 的那 两个 整数，并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是，数组中同一个元素不能使用两遍。
你可以按任意顺序返回答案。
示例 1：

输入：nums = [2,7,11,15], target = 9]]></description><category></category></item><item><title><![CDATA[算法之对症下药(二)]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/106438460</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/106438460</guid><author>marwi_study</author><pubDate>Sat, 30 May 2020 15:02:14 +0800</pubDate><description><![CDATA[位运算是一种偏向于计算机底层的操作，需要我们比较了解计算机底层是如何运行的，比如二进制、补码、按位与、按位或等知识，虽然理解计算机底层来思考问题会比较复杂，也比较反人类，但是位运算却可以高效地运算（很简单的道理，编译器不需要先去理解语句的语义再转成机器语言，可以直接进行二进制运算），所以在算法题目中适当地运用一些位运算可以帮助我们AC题目
文章目录计算机的编码机制原码反码补码位运算按位与运算按位或运算异或运算左移右移运算运用位运算解决算法题题目1：数值的整数次方题目2：二进制中1的个数
计算机的编码机制
原]]></description><category></category></item><item><title><![CDATA[算法题目之对症下药（一）]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/106377489</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/106377489</guid><author>marwi_study</author><pubDate>Wed, 27 May 2020 13:14:42 +0800</pubDate><description><![CDATA[在算法题目中，对于不同类型的题目多多少少都有相对应的较为高效的数据结构和算法，这也是体现程序员价值所在的地方。
链表求倒数第k个的题目
这篇文章想分享的链表题目是题干中出现链表求倒数第k个的题目。

链表的特点（区别于数组）即是不连续存储，没有下标，所以不能直接获得想要的第几个元素，而必须从头遍历到想要的位置才能取到对应位置的内容，它的优点是增删比数组来得快，因为可以直接将某一个结点插入到一个链表中或者从一个链表中删除，而不涉及到大量数据的移动。因此在程序设计中，如果增删比较频繁，我们应该优先考虑链表；而查]]></description><category></category></item><item><title><![CDATA[SpringMVC无法进入Controller的方法]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/105730961</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/105730961</guid><author>marwi_study</author><pubDate>Fri, 24 Apr 2020 14:59:02 +0800</pubDate><description><![CDATA[之前做一个项目遇到一个问题,在Controller中写的RequestMapping没有起作用,找了好几天一直没有发现问题在哪里,但是一访问就出现404错误,即使我按住ctrl点链接也可以定位到这个controller里面。后来我再建了一个SpringMVC项目，发现主要的问题在于我的项目应用名是/bookshare，而我的控制器也用了一个mapping为/bookshare，可能是这里出现了歧义...]]></description><category></category></item><item><title><![CDATA[完整的SSM搭建过程]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/105658217</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/105658217</guid><author>marwi_study</author><pubDate>Tue, 21 Apr 2020 14:56:03 +0800</pubDate><description><![CDATA[SSM架构搭建过程
框架构成
Spring：简化Java开发

低侵入/低耦合：降低组件之间的耦合度，实现软件各层之间的解耦
声明式事务管理：基于切面和惯例
方便集成其他框架，降低Java开发难度

SpringMVC：简化MVC架构的搭建

Servlet–controller
JavaBean–model
JSP（html）–view

Mybatis：持久层框架
简化数据库连接操作，只需提供...]]></description><category></category></item><item><title><![CDATA[Linux学习笔记（二）]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/105199664</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/105199664</guid><author>marwi_study</author><pubDate>Mon, 30 Mar 2020 15:01:08 +0800</pubDate><description><![CDATA[Linux文件系统
文件类型和文件系统

文件类型分7类：
1.普通文件（-）
2.目录文件（d）irectory
3.块设备文件（b）lock
4.字符设备文件（c）haracter
5.符号链接文件（l）ink
6.命名管道文件（p）ipe
7.套接字文件（s）ocket

在/dev目录下，我们可以看到大多数文件为b或者c开头的文件

使用find命令查找不同类型的文件：
find / -t...]]></description><category></category></item><item><title><![CDATA[Linux学习笔记（一）]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/105199302</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/105199302</guid><author>marwi_study</author><pubDate>Mon, 30 Mar 2020 14:57:51 +0800</pubDate><description><![CDATA[Linux 操作系统的安装
1）/（根）分区：Linux的大部分系统文件和用户文件都保存在根分区，所以该分区一定要足够大。
2）Swap 分区：交换分区，作为虚拟内存使用，等于1倍或者两倍的物理内存
3）/boot 分区：启动分区，用于引导操作系统，100MB或者更大
4）引导器启动及基本配置
· Bootloader：启动引导器，也叫引导装载程序
· 作用：引导操作系统内核
· 位置：存储在硬盘...]]></description><category></category></item><item><title><![CDATA[最大子序列和|算法分析]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/102368778</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/102368778</guid><author>marwi_study</author><pubDate>Tue, 08 Oct 2019 11:26:35 +0800</pubDate><description><![CDATA[题目要求：给定一个数序列，计算出其子序列和的最大值
输入样例：4 -3 5 -2 -1 2 6 -2
输出样例：11
一、穷举法
我们最容易想到的是穷举法，就是将所有可能的情况列举出来然后比较得到最大的那个，如下：
int MaxSubsequenceSum(int a[] , int n)
{
	int thisSum, maxSum, i, j, k;
	maxSum = 0;
	for(i=...]]></description><category></category></item><item><title><![CDATA[奇数阶幻方]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/102098877</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/102098877</guid><author>marwi_study</author><pubDate>Fri, 04 Oct 2019 22:55:53 +0800</pubDate><description><![CDATA[说奇数阶幻方可能大家都还不是很熟悉，让我先简单地来介绍一下所谓的奇数阶幻方。如果你对我们中国古代的奇门遁甲之术有过一点点的兴趣，应该听说过《洛书》关于后天八卦的一个口诀是“戴九履一、左三右七、二四为肩、六八为足、五居其中”，其实这就是一个简单的奇数阶幻方，其特点如下图：

观察一下这个方阵的特点，这时你应该也注意到了，这个方阵中每一行、每一列以及每一条对角线的数字之和都相等，这就是我们中国古代人的...]]></description><category></category></item><item><title><![CDATA[正则表达式（简易版）|表格查询]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/100172064</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/100172064</guid><author>marwi_study</author><pubDate>Sat, 31 Aug 2019 14:12:42 +0800</pubDate><description><![CDATA[一、正则表达式特殊符号




特殊符号
表达含义




[:alnum:]
代表英文大小写字母及数字


[:alpha:]
代表英文大小写字母


[:blank:]
代表空格和Tab键


[:cntrl:]
键盘上的控制按键，如CR,LF,TAB,DEL


[:digit:]
代表数字


[:graph:]
代表空白字符以外的其他


[:lower:]
代表小写字母


[:pri...]]></description><category></category></item><item><title><![CDATA[繁忙的公路|算法题目]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/95046535</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/95046535</guid><author>marwi_study</author><pubDate>Mon, 08 Jul 2019 16:44:37 +0800</pubDate><description><![CDATA[题目：繁忙的公路 时间限制:6000MS  内存限制:65535K 提交次数:0 通过次数:0
题型: 编程题   语言: G++;GCC Description
在一条笔直的大道（单方向行车道）上，汽车川流不息。道路从起点到终点，等距离的标记了1到N，
即起点是1，然后分别是2、3、4…，终点是N。每一个标记处，安装了智能探头，可以感知 在该点处车辆的增减数量。
一开始，整条道路上，没有车，然...]]></description><category></category></item><item><title><![CDATA[Code::Blocks 中怎样调试程序]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/89791089</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/89791089</guid><author>marwi_study</author><pubDate>Fri, 03 May 2019 20:31:23 +0800</pubDate><description><![CDATA[编程遇到最头疼的事情就是找bug，有时候往往是编程五分钟，找bug两小时，那么如果连怎样debug都不会就更头疼了，debug就是一个通过观察变量的变化，通过发生错误的点寻找代码中发生错误的地方，从而根据发生的错误寻找解决的方法修改自己的代码。
接下来就正式进入debug环节：
首先有一个前提条件，就是要debug的程序名字不能包含中文，确切地说，应该是这个程序的绝对路径都不能包含中文（即下图的第...]]></description><category></category></item><item><title><![CDATA[html学习历程（一）]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/89739249</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/89739249</guid><author>marwi_study</author><pubDate>Wed, 01 May 2019 18:51:17 +0800</pubDate><description><![CDATA[html全称超文本标记语言(Hyper Text Markup Language)，标准通用标记语言下的一个应用。HTML 不是一种编程语言，而是一种标记语言 (markup language)，是网页制作所必备的。“超文本”就是指页面内可以包含图片、链接，甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分（英语：Head）、和“主体”部分（英语：Body），其中“头”部提供关于网页的...]]></description><category></category></item><item><title><![CDATA[关于Java按钮添加后要等鼠标滑过才会显示的问题]]></title><link>https://blog.youkuaiyun.com/marwi_study/article/details/89438761</link><guid>https://blog.youkuaiyun.com/marwi_study/article/details/89438761</guid><author>marwi_study</author><pubDate>Sun, 21 Apr 2019 20:31:32 +0800</pubDate><description><![CDATA[之前在开发程序的时候遇到一个问题，就是在窗口的面板里添加JBtton后但窗口显示时，按钮不显示，要等鼠标滑过按钮上面时才显示出来，根据这个问题我发了个帖子寻求大神帮忙，遇到一个大神指点了一下，他说我可能是因为窗口创建比JButton实例化早所以才会出现这样的情况，经过反复尝试，我找到了一个解决的方法，在这里记录一下：
的确可能是因为窗口在初始的时候并没有给后面要显示的JButton预留空间，在窗口...]]></description><category></category></item></channel></rss>