自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 k8s之client-go:golang与k8s交互的桥梁

k8s是一个非常成熟且强大的容器自动化编排引擎,对于这样一个利器,k8s官方提供了clientgo用来给我们使用golang去接入k8s,通过k8s的api来对k8s中的资源进行操作通过client-go实现对k8s集群中资源对象(包括deployment、service、ingress、replicaSet、pod、namespace、node等)的增删改查等操作我们演示了一个简单的例子,来描述client-go的基本用法,希望对你有所帮助。

2024-07-14 18:32:34 503

原创 Rust入门篇:数据类型

你好,我是醉墨居士,前面我们学习了如何使用rust在控制台进行输出,接下来我将带给大家一些关于计算机的基础知识,这能够帮助我们更好的理解rust我们已经介绍了rust中基本的数据类型,希望你有所能收获。

2024-05-04 14:22:26 664

原创 Rust入门篇:你好,世界

你好,我是醉墨居士,欢迎回来对于我们大多数人接触一门新的编程语言时,第一个任务一般是编写一个控制台输出hello world的程序我们这篇博客也是如此,让我们一起使用rust去和世界打个招呼吧我们通过上述例子能看出rust是一门编译型语言,rust通过fn关键字来声明函数,而main函数是rust程序的入口。

2024-05-04 12:55:37 535

原创 Linux内核源码安装

我是醉墨居士,我们安装一下Linux内核源码,方便我们学习Linux内核也方便我们进行eBPF开发时查看Linux内核的一些信息本篇博客我们学习了如何安装linux内核源码。

2024-02-25 11:31:34 440

原创 Linux内核网络

你好,我是醉墨居士,因为Linux内核涉及的内容极多,我们初学者如果一上来就开始深挖细节,很有可能会在Linux内核代码的茫茫大海之中迷失自我。本篇博客希望可以帮助大家先有个全局的视野,剩余的细节内容,根据沿着全局的脉络去学习,可能会有意想不到的效果🫠。

2024-02-25 11:31:07 736

原创 eBPF实践篇之基础概念

eBPF 是一门革命性的技术,可以在不修改内核源代码或者加载内核模块的情况下,安全和高效地拓展和增强Linux内核的功能,我们主要聚焦在eBPF在网络传输上的应用和实践🚀我们现在应该对于eBPF有了一个初步的认知和理解,我之后写一个简单的eBPF程序来加深印象。

2024-02-24 19:54:07 373

原创 eBPF实践篇之环境搭建

你好,我是醉墨居士,本次我们学习一下eBPF🤗

2024-02-24 13:39:01 557

原创 k8s的pod调度之节点选择器

你好我是醉墨居士,节点选择器(nodeSelector)可以指定将pod运行在我们打过标签的k8s集群中的某个节点上我们这篇博客讲解了一下nodeSelector的基本使用,希望对你有所帮助。

2024-02-22 19:43:32 841

原创 acwing讲解篇之5459. 区间嵌套

如果当前区间的右端点相比于前一个区间的右端点 有所上升或者不变则输出当前区间的索引和前一个区间的索引,然后结束循环。如果当前区间的左端点等于前一个区间的左端点,则输出前一个区间的索引和当前区间的索引,然后结束循环。如果区间遍历完毕还没找到满足条件的区间,则输出-1, -1。记录所有区间和区间对应的索引。按照区间左端点进行排序。然后遍历排序后的区间。

2024-01-21 15:36:37 421

原创 acwing讲解篇之94. 递归实现排列型枚举

定义递归深度deep,数字使用情况used,选择的数字顺序path。遍历未使用的数字,选择数字,然后进行递归,递归结束,恢复used。终止条件为递归深度达到n层时,打印path,然后返回。直到整个递归结束,程序结束。

2024-01-20 20:47:20 363

原创 acwing讲解篇之93. 递归实现组合型枚举

如果当前选择的数的个数为m,则说明当前数已经选完,此时将state对应要选择的数打印出来,然后返回。state当前位 置为1,深度加一,当前选择的数的个数加一,表示选择当前层对应的数,然后进行递归。然后用state进行状态压缩,state第i位是1表示选第i个数,第i位是0表示不选第i个数。当前还能选择的数的个数即n - deep,当前还应选择的数的个数即m - count。如果当前还能选择的数的个数小于当前还应选择的数的个数,则退出搜索。恢复state和count当前层初始的state和count。

2024-01-20 17:10:45 410

原创 acwing讲解篇之92. 递归实现指数型枚举

如果当前深度为n,则说明当前已经递归完前n层,此时将state对应要选择的数打印出来,然后返回。然后用state进行状态压缩,state第i位是1表示选第i个数,第i位是0表示不选第i个数。state当前位 置为1,表示选择当前层对应的数,然后进行递归。本题相当于二叉树的深度优先遍历,树的第i层是第i个数选或不选。state不变动,表示不选当前层对应的数,然后进行递归。我们记录当前递归的深度deep。state当前位 置为0。直到递归结束,程序退出。

2024-01-20 16:39:06 365

原创 LeetCode讲解篇之2280. 表示一个折线图的最少线段数

折线图中如果连续的线段共线,那么我们可以可以将其合并成一条线段。我们可以通过计算前一个线段的斜率和当前线段的斜率来判断是否共线。如果二者相等,则代表共线,则继续往后查找。如果不相等,则代表不共线,则线段数加一。最终遍历完数组,返回线段数的计数。首先将坐标点按照横坐标升序排序。

2024-01-14 17:28:58 441

原创 计算机算法之二分算法

大家好,我是醉墨居士,今天聊一下计算机中的经典算法 - 二分算法。

2024-01-14 12:44:36 481

原创 分布式系统的三字真经CAP

你好,我是醉墨居士,我一起探索一下分布式系统的三字真经CAP理论现实世界上总是充满各种不如意,没办法,我们只能进行权衡和妥协,选择适合自己的人生完美主义者追求的不是完美的终点,而是在追求过程中收获的成长和进步分布式系统也是如此,没有完美的分布式系统,只有最适合业务的分布式系统🙂我也不清楚是否能够摘下分布式系统的CAP,我想说的是完美主义者所追求的最高境界是在不完美的世界中找到完美的自己我是醉墨居士,我们下篇博客再见🤗。

2024-01-13 20:24:46 441

原创 分布式系统的前世

大家好,我是醉墨居士,我准备和大家浅聊一下分布式系统,分享我一下我的心得体会🫠虽然分布式系统存在一系列的挑战,但是总比无法正常处理庞大的数据要好啊我是醉墨居士,我们下篇博客再见🤗。

2024-01-13 19:38:35 398

原创 LeetCode讲解篇之90. 子集 II

初始化一个变量start表示当前从哪里开始遍历nums,初始化一个表示当索引元素是否被使用的数组。如果当前元素和前一个元素相等,前一个元素没被使用,则触发剪枝去重操作,跳过当次遍历。否则,将start赋值为当前元素的下一个,递归搜索。搜索过程的数字组合加入结果集。从start开始遍历nums。直到搜索完毕,返回结果集。

2024-01-13 16:45:09 534

原创 LeetCode讲解篇之78. 子集

初始化一个start变量记录当前从哪里开始遍历搜索nums,搜索过程的数字组合加入结果集,然后从start下标开始遍历nums,更新start,递归搜索,直到搜索完毕,返回结果集。

2024-01-13 16:16:30 530

原创 LeetCode讲解篇之47. 全排列 II

初始化一个nums中元素是否被访问的数组used、记录还需要递归的深度deep,遍历nums,如果当前元素被访问过或者当前元素等于前一个元素且前一个元素没被访问过就跳过该次遍历,否则选择当前元素,继续递归,直到deep为0,将此次递归选择的数组加入到结果集,退出递归,直到搜索完成,返回结果集。

2024-01-13 15:54:33 461

原创 LeetCode讲解篇之39. 组合总和

首先排序数组,然后开始选择数字,当选择数字num后,在去选择大于等于num的合法数字,计算过程中的数字和,直到选数字和等于target, 加入结果集,若数字和大于target则直接退出当前搜索,因为数字是从小到大排序的,如果当前数字和都大于target了,那么之后的选择过程数字和之后更大,所有之后的搜索为无效搜索,直接剪枝。

2024-01-13 15:05:11 419

原创 LeetCode讲解篇之216. 组合总和 III

使用递归回溯算法,当选择数字num后,在去选择大于num的合法数字,计算过程中的数字和,直到选择了k次,如果数组和等于n则加入结果集。从1开始选择数字,直到搜索完所有排列后,返回结果集。

2024-01-13 14:33:53 493

原创 Redis源码精读:哈希表

哈希表是Redis中非常重要的数据结构,这篇博客我们就一起来探索一下Redis中哈希表的奥秘。

2023-12-25 21:17:22 441

原创 Redis源码精读:字符串

Redis中实现了sds(simple dynamic string)这种字符串,它比c语言标准库的char*字符串更加实用我是醉墨居士,我会继续学习Redis,并为你分享我的心得体会😊。

2023-12-24 23:16:41 458

原创 Redis源码精读:准备工作

虽然阅读大型项目的源码是一件非常消耗精力的事情,但是它能够给我们带来巨大的收益,总的来说,我感觉还是利大于弊大家加油,我们一起进军Redis🤓。

2023-12-24 21:56:13 411

原创 Go语言使用mongodb

在MongoDB中,数据以BSON(Binary JSON)的格式存储。BSON是一种二进制表示的JSON文档形式。D是有序的BSON文档。M是无序的BSON文档。A是有序的BSON数组。

2023-12-24 20:38:50 372

原创 Podman配置mongodb

【代码】Podman配置mongodb。

2023-12-24 18:36:48 784

原创 计算机组成原理之冯诺依曼体系结构

CPU由算术逻辑单元(Arithmetic Logic Unit,ALU)计算机系统主要由CPU,内存,主板,硬盘,I/O设备这些组件组成。和控制器单元(Control Unit,CU)组成。

2023-12-23 11:17:52 363

原创 从零实现分布式服务系统

分布式系统具有高可靠性、高性能、可扩展性、灵活性、数据共享、可靠性和地理分布等优点,使得其在各种应用场景下都具有巨大的优势,当然分布式系统实现复杂度要高于单体系统🫠项目代码使用纯粹的Go语言标准库实现,不借用任何其它第三方库😁我是醉墨居士,废话不多说,我们现在开始吧🤗恭喜你,我们一起完成了简易分布式系统的开发,麻雀虽小,五脏俱全😉希望这个项目能让你有所收获😊如果有什么错误,请你评论区或者私信我指出,让我们一起进步✌️。

2023-12-18 22:38:18 425

原创 Go语言实现深度学习的正向传播和反向传播

正向传播是指从神经网络的输入层开始,通过逐层计算和传递,将输入数据一直传递到输出层。在每一层中,通过对输入数据进行加权求和并应用激活函数,得到该层的输出。这个过程可以看作是将输入数据在网络中前进(向前传播),直至得到模型的预测结果。反向传播是指根据模型的预测结果和实际标签之间的差异,从输出层向输入层反向计算梯度,并利用梯度来更新网络参数。这篇博客我将使用Go语言实现正向传播和反向传播,帮助你理解其底层的运转规律项目代码使用纯粹的Go语言标准库实现,不借用任何其它第三方库。用轮子是生活,造轮子是信仰。

2023-12-02 12:41:47 1202

原创 Go语言实现大模型分词器tokenizer

大模型的tokenizer用于将原始文本输入转化为模型可处理的输入形式。tokenizer将文本分割成单词、子词或字符,并将其编码为数字表示。大模型的tokenizer通常基于词表进行编码,使用词嵌入将单词映射为向量表示。tokenizer还可以将输入文本进行填充和截断,以确保所有输入序列的长度一致,以便于模型的批量处理。这篇博客使用纯粹的Go语言标准库,不借用任何其它第三方库。用轮子是生活,造轮子是信仰。

2023-11-29 21:06:55 1179

原创 DNS服务

表示为服务器所有的IP地址启用DNS服务,并允许任何人对服务器发送DNS查询请求。将listen-on和allow-query的ip或域名换成any。网卡DNS地址修改127.0.0.1,断开互联网连接。重启named服务,使更改后的数据生效。

2023-11-15 16:35:05 112 1

原创 Go语言实现HTTP正向代理

正向代理(Forward Proxy)是一种代理服务器的部署方式,它位于客户端和目标服务器之间,代表客户端向目标服务器发送请求。正向代理可以用来隐藏客户端的真实身份,以及在不同网络环境下实现访问控制、负载均衡、缓存、访问优化等功能。

2023-11-06 19:18:46 941 2

原创 TCP流量控制和拥塞控制

当接收方网络拥塞,未能及时ACK时,导致发送方超时重传大量数据,使网络更加拥塞。为了应对这种情况,拥塞控制就可以大战身手了,拥塞控制用来调节网络负载。当发送方发送速率大于接收方的处理速率时,接收方会把数据包放入缓冲区,当缓冲区满了,就只能将数据包丢弃。为了应对这种情况,流量控制就可以大展身手了。(注:TCP Tahoe当出现丢包时直接将拥塞窗口设置为1,会导致发送速率不稳定,目前已经废弃)流量控制的作用对象是发送方和接收方。拥塞控制的作用对象是整个网络。

2023-11-06 08:58:33 124

原创 TCP三次握手和四次挥手

连接是全双工的,双方必须都收到对方的FIN包及确认才可关闭。三次握手主要是保证连接是双工的,可靠主要是保证重传机制的。

2023-11-05 18:16:34 165

原创 手写操作系统篇:实现裸机应用程序

我们既然是手写操作系统,那么就不能再继续依赖底层操作系统了,就需要我们直接和硬件对接。

2023-11-03 23:47:31 456

原创 手写操作系统篇:环境配置

这篇博客先配置好我们之后的开发环境,下载一些依赖的软件包ubuntu系统。

2023-11-03 16:00:16 383

原创 手写操作系统篇:前言

大家好,最近在写一个操作系统,然后记录和分享我的感悟,帮助大家能够深入浅出操作系统这个领域,这个系列的代码简洁,麻雀虽小,五脏俱全,可以帮助大家把握操作系统的心脏和脉搏。

2023-11-03 08:38:39 137

原创 vscode免密码认证ssh连接virtual box虚拟机

修改配置文件,Host随便填,HostName填127.0.0.1,User填你要连接的用户,比如我连接的是root用户,Port配置为刚才为虚拟机设置端口转发的端口。win+r输入cmd打开命令提示符,执行 ssh-keygen -t rsa -b 4096,然后连续按3次Enter,打开id_rsa.pub文件,复制里面的内容。回到vscode,点击刷新按钮,然后点击齿轮图标下面的箭头符号,然后根据提示操作,最后vscode免密ssh连接virtual box虚拟机就大功告成了。为虚拟机设置端口转发。

2023-10-30 21:13:09 444

原创 Docker底层原理:Namespace的使用

U 或 --user[=]:进入指定的User命名空间。-C 或 --cgroup[=]:创建新的Cgroup命名空间。-m 或 --mount[=]:进入指定的Mount命名空间。-n 或 --net[=]:进入指定的Network命名空间。-i 或 --ipc[=]:进入指定的IPC命名空间。-p 或 --pid[=]:进入指定的PID命名空间。-u 或 --uts[=]:进入指定的UTS命名空间。-u 或 --uts:创建新的UTS命名空间。options可选参数。

2023-10-29 23:53:36 382

原创 Docker底层原理:UnionFS的使用

Linux中常用的联合文件系统有OverlayFS和Aufs(Another Union File System), OverlayFS是Linux内核自带的联合文件系统, 而Aufs则是第三方提供的联合文件系统, 本博客以OverlayFS为主。

2023-10-29 23:33:15 342

空空如也

空空如也

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

TA关注的人

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