自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (7)
  • 收藏
  • 关注

原创 数据结构—链表

相关数据结构实现用go语言实现相关代码做题合集:https://github.com/longpi1/algorithm-pattern链表(Linked List)是一种常见的数据结构,它由一系列节点(Node)组成,每个节点包含数据和指向下一个节点的指针(在双向链表中还包括指向前一个节点的指针)。下面我将详细介绍链表的特点、优缺点,并提供 Go 语言实现的示例。

2025-06-28 14:11:07 340

原创 数据结构—栈与队列

栈支持两种主要操作:Push(入栈):将元素添加到栈顶。Pop(出栈):从栈顶移除并返回元素。其他辅助操作包括检查栈是否为空、获取栈长度等。切片模拟栈// 创建栈// push压入// pop弹出// 检查栈空队列支持两种主要操作:Enqueue(入队):将元素添加到队列尾部。Dequeue(出队):从队列头部移除并返回元素。其他辅助操作包括检查队列是否为空、获取队列长度等。// 创建队列// enqueue入队// dequeue出队// 长度0为空。

2025-06-28 14:10:34 339

原创 数据结构—数组

数组的长度是类型的一部分,例如[3]int和[4]int是不同的类型。数组是值类型,赋值或传递时会复制整个数组。

2025-06-28 14:09:53 219

原创 算法复杂度分析

算法分析不是精确计算时间/空间,而是关注其随输入规模增长的趋势。大O表示法是描述这种趋势的标准工具,它关注的是上界和最坏情况(通常)。选择合适的算法对程序的性能至关重要,尤其是在处理大规模数据时。一个 O(n^2) 算法在n很大时会比 O(n log n) 算法慢得多。在Go中,除了理论分析,还可以使用testing包中的基准测试 (benchmark) 功能来实际测量代码段的执行时间,这对于比较不同实现或优化效果很有帮助。但基准测试结果受具体机器和环境影响,而复杂度分析提供的是更通用的理论指导。

2025-06-28 14:07:22 1179

原创 PostgreSQL对比Mysql

选择哪个数据库,不是一个“谁更好”的问题,而是一个“

2025-06-28 14:02:54 844

原创 03.Golang 切片(slice)源码分析(二、append实现)

先来看看append// 内置函数append将元素追加到切片的末尾。// 如果有足够的容量,则重新划分目标以容纳// 新建元素。// 如果没有,将分配一个新的底层数组。// Append返回是更新后的切片。Go编译器不允许调用了 append 函数后不使用返回值。// 因此,有必要存储append的结果,通常在保存切片本身的变量中:// 常见用法:// 添加元素// 直接追加一个切片//// 作为特殊情况,将字符串附加到字节片是合法的,如下所示://append。

2025-05-12 21:53:05 1402

原创 02.Golang 切片(slice)源码分析(一、定义与基础操作实现)

slice 的底层数据是数组,slice 是对数组的封装,它描述一个数组的片段。两者都可以通过下标来访问单个元素。数组是定长的,长度定义好之后,不能再更改。在 Go 中,数组是不常见的,因为其长度是类型的一部分,限制了它的表达能力,比如 [3]int 和 [4]int 就是不同的类型。而切片则非常灵活,它可以动态地扩容。切片的类型和长度无关。数组就是一片连续的内存, slice 实际上是一个结构体,包含三个字段:长度、容量、底层数组。

2025-05-12 21:52:30 1258

原创 DeepWiki: Github的百科全书

DeepWiki通过AI技术重新定义了代码文档的生成与交互方式,其开源免费模式为开发者社区带来革新。尽管存在准确性和成本挑战,但其在提升代码可读性、促进开源协作方面的潜力已得到广泛认可。

2025-05-12 21:50:48 1464

原创 hashicorp raft源码分析(二、日志复制与安全性实现)

上述过程简单来说就是, 上层写日志, leader 同步日志, follower 接收日志, leader 确认提交日志, follower 跟着提交日志.

2025-05-12 21:43:57 1081

原创 hashicorp raft源码分析(一、项目介绍与Leder选举实现)

本文基于 hashicorp/raftv1.7.3版本进行源码分析API手册:https://pkg.go.dev/github.com/hashicorp/raftraft论文中文解读:https://github.com/maemual/raft-zh_cn/blob/master/raft-zh_cn.md在阅读文章前需要有一定的 raft 基础, 不然直接看源码会一头雾水.Raft是一种分布式一致性算法。

2025-05-12 21:42:53 1122

原创 01.Golang 源码目录结构

该目录中的每个文件都是。列表,每行一个,方便。

2024-11-24 17:39:30 672 1

原创 Golang的语言特性与鸭子类型

上述是对于的最有名的阐述。意思是对于事物类型的判断, 不取决于事物本身预设的标签(label), 而取决于判断者判断时需要用到的条件, 如果事物拥有符合条件的属性,那么在判断者眼中它就是那种类型。当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。在鸭子类型中,关注点在于对象的行为,能做什么;而不是关注对象所属的类型。例如,在不使用鸭子类型的语言中,我们可以编写一个函数,它接受一个类型为“鸭子”的对象,并调用它的“走”和“叫”方法。

2024-11-24 17:38:45 1135

原创 不注册访问 Claude3 大模型

随着Claude3大模型的出世,大模型霸主地位已经发生易位,但是国内使用Claude3官网 无论是注册都不容易,本篇文章主要介绍如何不通过Claude3 官网实现Claude3 大模型的使用,

2024-03-08 20:29:10 2303

原创 Viper反序列化解析字段不成功问题

name、NAME、NaMe 等等,如果名称不一致没有指定 tagName ,则默认为 mapstructure,这也是为什么带下划线或者名称不一致的字段不加 mapstructure标签无法解析的原因。默认情况下,mapstructure 使用结构体中字段的名称做这个映射,不区分大小写,比如 Name 字段可以映射到。mapstructure 用于将通用的map[string]interface{}解码到对应的 Go 结构体中。通过mapstructure映射名称。

2024-03-08 20:26:15 597

原创 Golang对比Java、python为什么要保留指针

Go 的指针一方面提供了引用语义,另一方面像 C 语言一样给了开发者灵活管理内存的能力。参考链接:樊冰心:https://www.zhihu.com/question/399589293/answer/2242103027。

2024-01-14 10:55:29 1214

原创 面试常见的场景设计题

所谓海量数据处理,就是指数据量太大,无法在较短时间内迅速解决,或者无法一次性装入内存。针对时间,可以采用巧妙的算法搭配合适的数据结构,如Hashmapbit-map堆数据库倒排索引/Trie树;针对空间,大而化小,分而治之(hash映射),把规模大化为规模小的,各个击破。海量数据分而治之/hash映射 + hash统计 + 堆/快速/归并排序;Trie树/Bloom filter/Bitmap数据库/倒排索引(问题实例:文档检索系统,查询那些文件包含了某单词,比如常见的学术论文的关键字搜索。

2024-01-14 10:42:56 2193 1

原创 gRPC vs HTTP

在HTTP/2协议中**,HTTP消息被分解独立的帧(Frame),交错发送,帧是最小的数据单位。然而当你的watcher成千上万的时,即使集群空负载,大量轮询也会产生一定的QPS,server端会消耗大量的socket、内存等资源,导致etcd的扩展性、稳定性无法满足Kubernetes等业务场景诉求。在etcd v3中,为了解决etcd v2的以上缺陷,使用的是基于HTTP/2的gRPC协议,双向流的Watch API设计,实现了连接多路复用。HTTP/2 不是 gRPC 独占的。

2024-01-14 10:39:59 1661

原创 05.neuvector网络学习与管控实现

dp侧收到ctrl_add_tap_port数据后,执行路径如下dp_ctrl_handler->dp_ctrl_add_tap_port->dp_data_add_tap->dp_alloc_context->dp_open_socket(创建AF_PACKET的socket并绑定容器的网络接口eth0)->dp_ring_v1(通过setsockopt创建的接收的环形缓冲区-)

2024-01-13 20:58:13 1470 2

原创 04.neuvector进程策略生成与管控实现

欢迎大家关注我的github。

2024-01-13 20:56:19 576

原创 03.neuvector之组的划分逻辑

NeuVector 会自动从正在运行的应用程序中创建组。这些组以前缀‘nv‘开头。您也可以使用 CRD 或 REST API 手动添加它们,并且可以在任何模式下创建、发现、监视或保护。网络和响应规则需要这些组定义。对于自动创建的组(以“nv”开头的“学习”组) ,NeuVector 将学习网络和处理规则,并在发现模式下添加它们。自定义组不会自动学习和填充规则。注意: nv组开始时默认为进程/文件保护启用零漂移。

2024-01-13 20:50:14 1115

原创 02.neuvector之Enforcer容器功能介绍

Enforcer容器在neuvector中主要负责网络与DLP/WAF的规则策略的实现以及网络数据的采集上报;以DaemonSet的方式运行,主要有三个进程monitor、agent、dp;monitor:负责监控其他进程是否正常运行以及资源消耗等;agent:负责与controller容器进行交互,通过grpc与consul实现数据上报与策略下发,其中进程与文件的策略学习与防护由agent做,网络相关具体实现由dp进程实现;dp:负责网络的数据采集上报,网络拦截告警等相关功能;

2024-01-13 20:48:19 613

原创 01.neuvector防护平台功能实现设计

本篇文章主要讲neuvector大概的设计与实现,功能实现细节可查看后续文章,

2024-01-13 20:43:42 1502

原创 PostgreSQL对比Mysql

需要根据具体的应用需求和业务场景来选择适合的数据库。PostgreSQL的灵活性、性能和可靠性使其适用于各种不同类型的应用场景。无论是开发Web应用、处理地理空间数据,还是进行数据分析和构建企业级应用,PostgreSQL都提供了强大的功能和支持[

2023-12-02 16:58:44 647

原创 04.PostgreSQL是如何实现隔离级别的?

PostgreSQL 是支持事务的,事务的四大特性是原子性、一致性、隔离性、持久性,我们这次主要讲了隔离性。当多个事务并发执行的时候,会引发脏读、不可重复读、幻读这些问题,那为了避免这些问题,SQL 提出了四种隔离级别,分别是读未提交、读已提交、可重复读、串行化,从左往右隔离级别顺序递增,隔离级别越高,意味着性能越差,PostgreSQL 引擎的默认隔离级别是读已提交。**在PostgreSQL里,你可以请求四种可能的事务隔离级别中的任意一种。

2023-12-02 16:57:52 599

原创 03.PostgreSQL常用索引与优化

name text如果没有索引,数据库需要扫描整个表才能找到相应的数据。利用EXPLAINParallel Seq Scan 表示并行顺序扫描,执行消耗了 12 s;由于表中有包含大量数据,而查询只返回一行数据,显然这种方法效率很低。关于执行计划的更多信息,可以参考这篇文章。此时,如果在 id 列上存在索引,则可以通过索引快速找到匹配的结果。创建索引需要消耗一定的时间。Index Scan 表示索引扫描,执行消耗了 20 ms;

2023-12-02 16:57:20 543

原创 02.PostgreSQL 查询处理期间发生了什么?

解析器(Parser)解析器根据SQL语句生成一颗语法解析树(parse tree)。分析器(Analyzer)分析器对语法解析树进行语义分析,生成一颗查询树(query tree)。重写器(Rewriter)重写器按照规则系统中存在的规则,对查询树进行改写。计划器(Planner)计划器基于查询树,生成一颗执行效率最高的计划树(plan tree)。执行器(Executor)执行器按照计划树中的顺序访问表和索引,执行相应查询。

2023-12-02 16:56:40 457

原创 01.PostgresSQL进程与基础架构

文中主要内容引用自本篇文章主要讲述PostgreSQL中进程与内存的架构。

2023-12-02 16:55:55 375

原创 Kubernetes集群架构与组件介绍

主要负责所在节点上的Pod资源对象的管理,例如Pod资源对象的创建、修改、监控、删除、驱逐及Pod生命周期管理等。的组件, 该组件公开了 Kubernetes API,API Server 是整个系统的核心组件之一,它是 Kubernetes API 的前端。总之,API Server 是 Kubernetes 系统中非常重要的组件之一,它为整个系统提供了一个统一的入口和管理接口,使得 Kubernetes 的各个组件可以相互协作,从而实现对 Kubernetes 集群的管理和监控等操作。

2023-06-01 22:03:48 918

原创 linux中etc目录下hosts与resolv.conf文件作用

总的来说,和/etc/hosts文件都是非常重要的配置文件,它们可以帮助操作系统正确地解析域名和IP地址的对应关系,从而保证网络连接的正常运行。

2023-06-01 22:03:09 6158

原创 client-go架构与原理介绍

下面对图中每个组件进行简单介绍:​client-go 组件:Reflector: 定义在/tools/cache 包内的 Reflector 类型中的 reflector 监视 Kubernetes API 以获取指定的资源类型 (Kind)。完成此操作的函数是 ListAndWatch。监视可以用于内建资源,也可以用于自定义资源。

2023-06-01 22:01:23 2382

原创 Golang通道阻塞情况与通道无阻塞实现

如果通道已满,并且没有协程在读取通道中的数据,那么任何试图将数据写入通道的协程都会被阻塞,直到有空间可用为止。如果通道为空,并且没有协程在等待从通道中读取数据,那么任何试图从通道中读取数据的协程都会被阻塞,直到有数据可用为止。使用select的default语句,在channel不可读写时,即可返回使用select+定时器,在超时时间内,channel不可读写,则返回。

2023-06-01 21:56:41 1842

原创 Go语言基于ip集合推出对应的CIDR

【代码】Go语言基于ip集合推出对应的CIDR。

2023-06-01 21:56:14 922

原创 Golang内存泄露场景与定位方式

循环引用:如果两个或多个对象相互引用,且没有其他对象引用它们,那么它们就会被垃圾回收机制误认为是仍在使用的对象,导致内存泄漏。全局变量:在Golang中,全局变量的生命周期与程序的生命周期相同。如果一个全局变量被创建后一直存在于内存中,那么它所占用的内存就无法被回收,可能会导致内存泄漏。未关闭的文件句柄:如果程序打开了文件句柄但没有关闭它们,那么这些文件句柄所占用的内存就无法被回收,可能会导致内存泄漏。大量的临时对象。

2023-06-01 21:42:10 4195

原创 关于ICMP与ping:计算机网络中的侦察兵

本文章主要内容引用自:1.刘超,2.

2023-03-25 00:03:20 1242 1

原创 云原生场景下的容器网络隔离技术

本文从传统网络隔离与云原生网络隔离两个角度出发,分析了现有的网络隔离技术的特点,讨论了云原生场景下网络隔离技术需要满足的特点。首先我们通过分析传统隔离得出,在面对复杂的云原生应用场景时,为了更好保护我们的业务容器安全,我们需要一些新的隔离技术去实现网络隔离。然后,我们通过介绍目前云原生网络隔离的两种实现方案,得出一个理想的容器网络隔离技术需要满足哪些特点。最后,希望通过本篇文章的分享,你能有所收获。

2023-03-24 23:57:52 726

原创 入侵检测——如何实现反弹shell检测?

如何实现反弹shell检测?

2023-03-24 23:57:39 4014 1

原创 什么是路由?

关于路由的相关介绍

2023-03-24 23:55:47 6460

原创 对称/非对称加密、数字签名、证书

对称/非对称加密、数字签名、证书相关介绍

2023-03-24 23:52:20 616

原创 应用层协议:DNS协议

网域名称系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 协议运行在 UDP 之上,DNS使用TCP和UDP端口53[1]。在网络世界,也是这样的。你肯定记得住网站的名称,但是很难记住网站的 IP 地址,因而也需要一个地址簿,就是 DNS 服务器,它是一个由分层的 DNS 服务器(DNS server)实现的分布式数据库;它还是一个使得主机能够查询分布式数据库的应用层协议。DNS 最早的设

2023-03-24 23:48:50 900

原创 应用层协议:HTTP协议(下)——请求方法与状态码、消息

HTTP协议——请求方法与状态码、消息

2023-03-24 23:47:17 546

超级录屏 8.2.zip

超级录屏 8.2简单实用的录屏软件,操作非常简单,本人经常使用

2019-07-05

mybatis.spring.rar

整合Spring、Mybatisd对单表进行增删查改,学习Spring和Mybatis,自己写的一个小实验

2020-03-29

软考中级软件设计师09~18年真题及答案解析.rar

文件包括09-18年软件设计师真题答案以及解析

2019-10-22

04-08软件设计师汇总.rar

该文件包括04-08年软件设计师所有主题和详细解答,保质保量

2019-10-22

数据库复习.zip

数据库复习是期末抱佛脚的利器,欢迎

2019-07-05

超市管理·系统.rar

超市管理系统是基于Java的课程设计成果,简单易懂,大家可以借鉴

2019-07-05

空空如也

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

TA关注的人

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