<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[WOF_Spark的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/WOF_Spark</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; WOF_Spark]]></copyright><item><title><![CDATA[关于息肉检测和识别项目的总结]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/134134084</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/134134084</guid><author>WOF_Spark</author><pubDate>Tue, 31 Oct 2023 15:10:15 +0800</pubDate><description><![CDATA[Backbone!!!")# 这段代码是一个模型的前向传递过程。该模型首先通过backbone网络，# 对输入的x进行特征提取，得到4个不同分辨率的特征图。# 然后将这些特征图送入LP Header网络进行处理，融合不同层次的特征。# 接着通过上采样（interpolation）将处理后的特征图进行恢复到原始输入图像尺寸大小，# 并最终送入线性预测器（linear_pred）获得输出结果。#stage 1。]]></description><category></category></item><item><title><![CDATA[数据结构（408）典型算法题-线性表的顺序表示]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/123680887</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/123680887</guid><author>WOF_Spark</author><pubDate>Wed, 23 Mar 2022 15:32:12 +0800</pubDate><description><![CDATA[1.删除有序数组重复元素（双指针）
#include&lt;iostream&gt;
using namespace std;
int main(){
	int a[]={1,1,2,2,3,3,4};
	int k=1;
	for(int i=1;i&lt;7;i++){
		if(a[i]!=a[i-1]){
			a[k]=a[i];
			k++;
		}
	}
	for(int i=0 ;i&lt;k;i++){
		cout&lt;&lt;a[i]&lt;&lt;endl;
	}
	return]]></description><category></category></item><item><title><![CDATA[Bigtable学习笔记]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/121618785</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/121618785</guid><author>WOF_Spark</author><pubDate>Tue, 30 Nov 2021 17:26:00 +0800</pubDate><description><![CDATA[枯木逢春不在茂
年少且惜镜边人
写在前面
就在刚才又看完了一遍《霍元甲》之后，内心百感交集，当初看只是看打打杀杀，现在却截然不同。可能每个人心中都住着一个霍元甲吧，总总因为年少时的轻狂，最终留下了不可磨灭的痛，正如最后与日本武士品茶那段话所说的，真正的敌人就是自己，战胜自己的好胜心，看清事情的本质，以德服人，以武会友。这才应该是每个人心中的“津门第一”。不多说了，开卷。
正文
google 三件套，mapreduce  bigtable  GFS
Bigtable 是一个分布式的结构化数据存储系统，它被设计]]></description><category></category></item><item><title><![CDATA[GFS论文学习笔记]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/121524200</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/121524200</guid><author>WOF_Spark</author><pubDate>Mon, 29 Nov 2021 18:41:54 +0800</pubDate><description><![CDATA[枯木逢春不在茂
年少且惜镜边人
写在前面
夜来无事，看看论文吧
正文开始
设计思路

首先，组件失效被认为是常态事件，而不是意外事件
其次，以通常的标准衡量，我们的文件非常巨大
第三，绝大部分文件的修改是采用在文件尾部追加数据，而不是覆盖原有数据的方式
第四，应用程序和文件系统 API 的协同设计提高了整个系统的灵活性

设计预期

系统的工作负载主要由两种读操作组成：大规模的流式读取和小规模的随机读取


单一的 Master 节点的策略大大简化了我们的设计。单一的 Master 节点可以通过全局的信息精]]></description><category></category></item><item><title><![CDATA[MIT6.824（lab3B-snapshot）]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/121547314</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/121547314</guid><author>WOF_Spark</author><pubDate>Thu, 25 Nov 2021 22:31:05 +0800</pubDate><description><![CDATA[枯木逢春不在茂
年少且惜镜边人
写在前面
lab3B需要实现一个快照功能，这需要对raft的代码需要进行更改，比如在发送心跳的时候，如果nextindex是快照里面的内容则就需要发送快照给peer，持久化也要进行修改，算是对raft加整个系统进行了大优化吧，要独立完成这个任务，很难（对我来说）。所以还是参考了大佬的代码。
实现过程
首先在Raft层引入了LastIncludedIndex和LastIncludedTerm两个持久化状态
kv层需要开启快照发送loop，这里注意判断raft log长度时不要加]]></description><category></category></item><item><title><![CDATA[MIT6.824（lab3A-kv存储）]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/121545948</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/121545948</guid><author>WOF_Spark</author><pubDate>Thu, 25 Nov 2021 20:49:38 +0800</pubDate><description><![CDATA[枯木逢春不在茂，
年少且惜镜边人。
写在前面
今天的考试还算顺利，不过今天的我，心里也是莫名的不舒服，不舒服？不舒服就来写博客吧，3A要求基于Raft实现分布式kv server
实现过程
要求：

单个客户端，是串行的
多个客户端可以并发的发起请求
一旦有客户端读取到新值，那么其他的客户端也都应该读到该值

由于自己的LAB3的代码参考了这位老哥的代码，本文只是个人复习+学习所用，大家可直接跳转去该链接学习。
type Clerk struct {
	mu sync.Mutex
	servers []*l]]></description><category></category></item><item><title><![CDATA[MIT6.824(lab2C-日志持久化)]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/121520090</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/121520090</guid><author>WOF_Spark</author><pubDate>Wed, 24 Nov 2021 17:49:12 +0800</pubDate><description><![CDATA[枯木逢春不在茂
年少且惜镜边人
写在前面
lab2B已经完成的raft的大部分内容，2C主要是对currentterm，[]log，voteFor 进行持久化存储，后边3B也会修改这一部分的代码，还有就是2B中提到的心跳被拒后回退机制太慢，需要优化。
具体实现
首先是持久化函数，lab中给出的代码可以直接套用
// save Raft's persistent state to stable storage,
// where it can later be retrieved after a crash ]]></description><category></category></item><item><title><![CDATA[MIT6.824（LAB2B-日志一致性检查）]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/121517892</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/121517892</guid><author>WOF_Spark</author><pubDate>Wed, 24 Nov 2021 16:43:55 +0800</pubDate><description><![CDATA[枯木逢春不在茂
年少且惜镜边人
写在前面
emmmmmmmmmmmmmmmmmmm,想了想没什么说的，说说lab2b，写lab2B之前我觉得应该先看一遍raft论文，当然两边更好，三遍更好好。
实现过程
也是MAKE函数打头阵
func Make(peers []*labrpc.ClientEnd, me int,
	persister *Persister, applyCh chan ApplyMsg) *Raft {
	rf := &amp;Raft{}
	rf.peers = peers
	rf.pe]]></description><category></category></item><item><title><![CDATA[MIT6.824(lab2A-领导人选举)]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/121515769</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/121515769</guid><author>WOF_Spark</author><pubDate>Wed, 24 Nov 2021 15:57:10 +0800</pubDate><description><![CDATA[枯木逢春不在茂
年少且惜镜边人
写在前面
说好的今天写2A,就得写2A，这种回忆式的写总结是非常痛苦的，这个过程中有大量的遗忘，写的过程就是弥补的过程。今天早上的计组考试直接GG，因为没复习的缘故，前面的大部分知识直接g了。奉劝各位考研小伙伴还是得把专业知识（408）的东西搞好，不要像我一样，一事无成。
实现过程
在写LAB2之前，查阅了好多资料，每次写不出来，都让我怀疑自己是不是能干计算机这个行业，LAB2写了两遍，第一遍勉强过来些测试点，但是多次运行后直接挂掉，找错直接给我整的人都傻了，一度怀疑人生，所]]></description><category></category></item><item><title><![CDATA[MIT6.824-LAB1(MapReduce)]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/121495048</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/121495048</guid><author>WOF_Spark</author><pubDate>Tue, 23 Nov 2021 22:10:29 +0800</pubDate><description><![CDATA[枯木逢春不在茂
年少且惜镜边人
写在前面
从大二下开始，便再也没有写过博客，多半以学习笔记的形式存在于我的机械硬盘。回顾大学的两年半，发现自己学的知识大多都忘记的比较快，真正掌握的也少之又少。这期间也曾迷失过自我，也曾拥有过许多，但是这都不重要，重要的是，五年前说的镜边人，还是现在的镜边人。
大三上学期的目标也都没有切实的实现，须记在以后的学习中切勿眼高手低，切勿操之过急，切勿过度膨胀。应不论在什么时候都应该认清自我，应常以“菜鸡“自称，切勿再去说学了什么，应思考自己能干什么！哦，对了！刷力扣题是灰常重要的]]></description><category></category></item><item><title><![CDATA[剑指   哦佛儿    力扣]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/112297402</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/112297402</guid><author>WOF_Spark</author><pubDate>Thu, 07 Jan 2021 19:10:57 +0800</pubDate><description><![CDATA[找出数组中重复的数字。


在一个长度为 n 的数组 nums 里的所有数字都在 0～n-1 的范围内。数组中某些数字是重复的，但不知道有几个数字重复了，也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

示例 1：

输入：
[2, 3, 1, 0, 2, 5, 3]
输出：2 或 3 
 

限制：

2 &lt;= n &lt;= 100000

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/shu-zu-zhong-zhong-f]]></description><category></category></item><item><title><![CDATA[LOL导航图]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/111935495</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/111935495</guid><author>WOF_Spark</author><pubDate>Thu, 07 Jan 2021 18:36:16 +0800</pubDate><description><![CDATA[#include&lt;stdio.h&gt;
#include&lt;conio.h&gt;
#include&lt;iostream&gt;
#include&lt;assert.h&gt; //用于getNum中的debug
#include&lt;string.h&gt;
#include&lt;fstream&gt;//用于i ofstream
#include &lt;vector&gt;
#define MAX 123456
#define LEN2 sizeof(struct land)//]]></description><category></category></item><item><title><![CDATA[《关键路径》（邻接矩阵）]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/111241366</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/111241366</guid><author>WOF_Spark</author><pubDate>Tue, 15 Dec 2020 22:11:34 +0800</pubDate><description><![CDATA[枯木逢春不在茂，年少且惜镜子边人
该路劲的求法主要是基于拓扑排序实现的
其中有4个数组
ve   ： 事件的最早发生时间
vl    :    事件的最迟发生时间
ee  ：  活动的最早发生时间
el    :    活动的最迟发生时间
其中 ：
ve [i] 的值是所有值到当前节点的最大值
vl [i]  的值是逆拓扑排序的求最小值
ee：  是与他相连接的节点的最早发生时间
el      比如  x-y 表示的是用 用y的最迟发生时间 -  权值得到x最迟发生时间
然后比较ee       ==  ]]></description><category></category></item><item><title><![CDATA[《floyd》（邻接矩阵实现）&&《Dijkstra》（邻接表实现）  求最短路径c++]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/110846311</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/110846311</guid><author>WOF_Spark</author><pubDate>Tue, 08 Dec 2020 22:32:13 +0800</pubDate><description><![CDATA[floyd
#include &lt;stdio.h&gt;
#define INF 0xfffffff
#define N 220

int map[N][N];
int path[N][N];
int Pa[N];
int CityNum, RoadNum;

void Init(){								// 初始化
    for(int i = 0; i &lt; CityNum; i ++){
        for(int j = 0; j &lt; CityNum; j++){
         ]]></description><category></category></item><item><title><![CDATA[动态规划（最长回文字串）&&利用dfs （vector）写简单路径]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/110502618</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/110502618</guid><author>WOF_Spark</author><pubDate>Thu, 03 Dec 2020 21:29:44 +0800</pubDate><description><![CDATA[https://leetcode-cn.com/problems/longest-palindromic-substring/
Dp 题！
class Solution {
public:
    string longestPalindrome(string a) {
    int n=a.size();
    int max=1;
    int begin=0;
    string ans;
    vector&lt;vector&lt;int&gt;&gt;  A(n,vector&lt;i]]></description><category></category></item><item><title><![CDATA[无重复字符的最长字串&并查集找到连通分支]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/110500619</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/110500619</guid><author>WOF_Spark</author><pubDate>Wed, 02 Dec 2020 21:38:53 +0800</pubDate><description><![CDATA[https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        // 哈希集合，记录每个字符是否出现过
        unordered_set&lt;char&gt; occ;
        int n = s.size();
        // 右]]></description><category></category></item><item><title><![CDATA[拓扑排序]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/110452533</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/110452533</guid><author>WOF_Spark</author><pubDate>Tue, 01 Dec 2020 21:16:21 +0800</pubDate><description><![CDATA[今天学习了拓扑排序
他的思想其实是在一个有向无环图中，开始     先找出一个入度为0的节点，然后入队，之后删除这个节点发出的所有边，然后图发生了变化 这时候剩下的节点的入度也有可能会
变， 所以每次都需要更新，然后出队 ， 然后继续找入度为0 的节点，入队     。
那么结束是如何判断的呢！
结束时    分 两种情况
队空  则加个计数器  看出队了多少次
如果计数器的num==n  则拓扑排序成功！、
否则  失败  说明有回路   有两个节点入度无法等于0
thats all
小生拙见   欢迎大]]></description><category></category></item><item><title><![CDATA[力扣简单题+最短路径的 prime和kruskal算法]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/110209667</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/110209667</guid><author>WOF_Spark</author><pubDate>Mon, 30 Nov 2020 20:53:28 +0800</pubDate><description><![CDATA[给定一个整数数组 nums 和一个目标值 target，请你在该数组中找出和为目标值的那 两个 整数，并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是，数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
class Solution {
public:
    vector&lt;int&gt; twoSum(vector&lt;int&gt]]></description><category></category></item><item><title><![CDATA[无向图的存储以及遍历]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/110141881</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/110141881</guid><author>WOF_Spark</author><pubDate>Wed, 25 Nov 2020 19:53:26 +0800</pubDate><description><![CDATA[枯木逢春不再茂， 年少且惜镜人
无向图的存储以及遍历（邻接表以及DFS BFS）
之前写过邻接矩阵（比较好理解  ，当时queue还是数组写的  比较low 不好容易理解），那今天我来写写较为复杂一点的邻接表
多的不说直接上代码
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;queue&gt;
using namespace std;

typedef char vertexType;    //顶点的数据类型，这里姑且设为字符]]></description><category></category></item><item><title><![CDATA[二叉搜索树]]></title><link>https://blog.youkuaiyun.com/WOF_Spark/article/details/109231291</link><guid>https://blog.youkuaiyun.com/WOF_Spark/article/details/109231291</guid><author>WOF_Spark</author><pubDate>Thu, 22 Oct 2020 21:58:30 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;string&gt;
#include &lt;cstdio&gt;
using  namespace std;

struct node{
    int key;
    node *r,*l,*p;
};
node *root,*NIL;

void insert(int k){
    node *x=root;
    node *y=NIL;


    node *z]]></description><category></category></item></channel></rss>