自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?

使用如下命令停止 Docker执行后报的时候报了一个 warning,如下这时候使用 docker ps 命令时会发现 docker 依然在运行。这个警告之所以出现,是因为 systemd 管理的 Docker 服务不仅包括了 docker.service,还有与之相关的 docker.socket。为了更好地理解这个问题,需要简单了解下 systemd 的工作原理,以及 Docker 在 systemd 中的配置和激活机制。

2024-07-17 21:28:31 487

原创 Web 安全之 VAPT (漏洞评估与渗透测试)详解

VAPT(Vulnerability Assessment and Penetration Testing,漏洞评估与渗透测试)是网络安全领域中的一种评估方法,结合了漏洞评估和渗透测试两种紧密相连但又有所区别的技术,以发现和评估系统中存在的漏洞和潜在的安全风险。VAPT 旨在帮助组织识别和发现系统中的安全漏洞,从而提高系统的安全性和抵御攻击的能力。

2024-07-16 20:51:43 714

原创 CentOS Stream 卸载 Podman 并安装 Docker 的方法

Podman 是一个无守护进程的容器引擎,旨在提供与 Docker 类似的命令行接口,但不需要守护进程运行。Podman 是 Red Hat 的开源项目,具有安全性、兼容性和灵活性等优点。文章持续更新中,微信搜索【路多辛】阅读更多优质文章CentOS Stream 默认安装了 Podman 来代替 Docker,导致在 CentOS Stream 中安装 Docker 会和 Podman 冲突,所以要想安装 Docker 的话,需要先卸载掉 Podman。

2024-07-14 19:59:48 565

原创 链路追踪详解(六):Zipkin 和 Jaeger 的安装方法

Zipkin 和 Jaeger 是比较受欢迎并且被使用比较多的开源的分布式链路追踪工具,接下来就安装一下 Zipkin 和 Jaeger,以后的链路追踪系列文章也主要以这两个产品来举例。文章持续更新中,微信搜索【路多辛】阅读更多优质文章。

2024-07-12 20:58:30 430

原创 OpenResty程序如何连接开启了TLS的Redis?

OpenResty 是一个基于 Nginx 和 Lua 的 Web 应用框架,允许开发者通过 Lua 脚本对 Nginx 的配置和行为进行扩展。当 OpenResty 需要连接到一个开启了 TLS 的 Redis 服务器时,需要确保两个方面:一是 Redis 服务器配置了 TLS,二是 OpenResty 客户端能够使用 TLS 进行连接。

2024-07-10 21:41:55 576

原创 CentOS 7镜像列表服务下线,还想继续使用该怎么办?

CentOS 7的生命周期已经在2024年6月30日终止(End of Life,EOL),官方将不再对该版本进行问题修复、功能更新以及其他形式的维护支持。这意味着使用 CentOS 7 的用户将面临安全漏洞无法得到修补的风险,同时随着其他软件的更新,可能会出现不兼容的情况。

2024-07-04 22:01:32 1359 2

原创 软件开发中常用环境你都知道哪些?

在软件开发过程中,不同的环境用于不同的阶段,以确保软件的质量和稳定性。接下来详细介绍一些常用的环境及作用。文章持续更新中,微信搜索【路多辛】阅读更多优质文章。

2024-07-02 22:42:05 801

原创 深入解析 gRPC 的重连机制

gRPC 重连机制是指在客户端与服务器之间的连接断开后,客户端自动尝试重新建立连接的过程。gRPC 的重连机制依赖于底层的传输层实现(如HTTP/2)和客户端库的配置。

2024-06-30 16:48:55 732 1

原创 深度解析服务发布策略之A/B测试

A/B测试,也称为拆分测试或桶测试,是一种对比实验方法,核心思想是通过对比两个或多个版本的表现来评估某一变化的效果。一般同时运行两个或多个版本的网页、应用功能或广告等,将目标群体随机分为两组或多组,每组分别体验不同的版本,然后通过统计分析比较各版本的表现数据,以确定哪个版本更符合业务目标。实验组和对照组:实验组是接触新版本的用户群体,对照组是接触旧版本或基准版本的用户群体。独立变量:在实验中被改变的因素,如网页设计、按钮颜色等。依赖变量:实验结果的衡量标准,如点击率、转化率等。

2024-06-29 17:47:37 566

原创 链路追踪详解(五):链路传播 Header 详解

链路追踪作为分布式系统中不可或缺的一部分,可以帮助开发和运维人员了解请求在系统中的流转链路,快速定位问题和识别性能瓶颈。而链路传播 Header 是实现跨服务调用链跟踪的关键机制,通过链路传播 Header,使得跟踪信息在不同服务间的透明传递,从而构建出完整的请求链路。文章持续更新中,微信搜索【路多辛】阅读更多优质文章。

2024-06-27 22:03:31 577

原创 深度解析服务发布策略之滚动发布

滚动发布,也称为滚动更新或蓝绿部署的一种变体,是一种逐步替换旧版本应用实例的部署策略。核心思想是在不影响现有服务的情况下,逐步将流量从旧版本切入到新版本,直到所有流量都切入到新版本为止。在滚动发布过程中,系统会逐步增加新版本实例的数量,同时减少旧版本实例的数量,直到新版本完全替换旧版本。这种策略能够显著降低更新失败的风险,同时确保服务的高可用性和连续性。

2024-06-19 21:49:12 827

原创 软件服务中的 SLA 到底是什么?

SLA 是服务提供商对客户的正式承诺,明确了服务提供商将提供何种级别的服务,旨在确保服务的可用性、响应时间、故障恢复时间等关键指标达到预定的目标。SLA 通常包含多个服务级别目标(Service Level Objectives,简称 SLO),这些目标是具体、可度量的,例如服务的可用性、性能、容量等。SLA 可以应用于各种类型的服务,包括云服务、网络服务、数据中心服务、软件服务等。在软件服务中,SLA可能包括软件的功能、性能、可用性、安全性、支持服务等。

2024-06-16 19:14:00 734

原创 深度解析服务发布策略之金丝雀发布

金丝雀发布是通过逐渐将新版本发布到生产环境,而不是一次性全面发布,来降低风险和影响的一种策略。这种策略的名称来源于采矿业中的“金丝雀测试”,金丝雀(一种小型鸟类)被用来检测矿井空气中有害气体的浓度。如果金丝雀出现异常或死亡,说明环境存在危险。在软件领域,金丝雀发布同样扮演着“哨兵”的角色,新版本首先只对一小部分用户(金丝雀用户)进行发布,如果新版本在金丝雀用户中运行良好,没有出现问题,那么就逐渐扩大发布范围,直到所有用户都使用新版本。

2024-06-15 20:45:26 1004

原创 深度解析服务发布策略之蓝绿发布

蓝绿发布是通过使用两套完全相同的生产环境来减少系统停机时间和降低风险的一种策略。这两个环境通常被称为"蓝"和"绿",在任意时刻,只有一个环境是活动的。在蓝绿发布中,"蓝"环境通常是当前活动的生产环境,而"绿"环境是准备新版本发布的预生产环境。当新版本在"绿"环境中部署好并经过测试验证通过后,将流量从"蓝"环境切换到"绿"环境。如果在"绿"环境中发现问题,可以快速回滚到"蓝"环境。等绿环境一切功能正常无误后,再将蓝环境升级到新版本。

2024-06-14 22:11:35 912

原创 为什么需要分布式 ID?

在现代软件架构中,分布式系统架构变得越来越流行。在这些系统中,由于组件分散在不同的服务器、数据中心甚至不同的地理位置,因此要构建高性能、可扩展的应用系统就需要一种可靠的方式来确保在整个系统中生成的 ID 是唯一的。文章持续更新中,微信搜索【路多辛】阅读更多优质文章。

2024-05-27 21:43:06 637

原创 备受 Linux 之父推崇的 dogfooding 产品开发方式详解

Linux 之父 Linus Torvalds 在 Linux 6.10 内核开发阶段的一个关于 DRM 图形驱动程序更新补丁的邮件列表中,称自己是 "dogfooding" 的忠实信徒。那什么是 dogfooding 呢?“dogfooding”(全称为“eating your own dog food”)是软件开发行业中的一个形象而又有趣的术语,直译为“吃狗粮”,实际上指的是公司内部使用自己开发的产品或服务的行为。

2024-05-22 22:13:12 688

原创 ChatGPT 对话使用的 EventSource 技术到底是什么?

EventSource 是 HTML5 中引入的一项技术,定义了一种从服务器到客户端的单向数据传输机制。EventSource 的核心思想是实现服务器端主动推送数据到客户端,而无需客户端频繁发起请求。基于 HTTP 长轮询技术,但与传统的轮询相比,具有更高的效率和实时性,因为一旦连接建立,服务器可以连续发送多个事件到客户端,直到连接关闭。

2024-05-21 22:06:21 945

原创 Web 安全之盗链(Hotlinking)攻击详解

盗链是指在一个网站上直接链接到另一个网站服务器上的文件的行为。简单来说,是指一个网站直接引用了其他网站上的资源(如图片、视频、文档等),而用户在访问这个网站时,实际上是在消耗被盗链网站的带宽和资源,但这些资源的流量和价值却归属到了盗链网站上。例如,网站 A 的管理员发现网站 B 有一张很好的图片,他不将图片下载后上传到自己的服务器,而是在自己的网页代码中直接引用网站 B 的图片 URL。这样,每当有人访问网站 A 的这个页面,图片都是从网站 B 的服务器上加载的。

2024-05-12 09:42:56 689 1

原创 Web 应用最安全的会话实现和保持方式是什么?

什么是会话管理?会话管理是一种在无状态的 HTTP 协议上保持用户状态的技术, Web 服务器通过会话管理可以识别和跟踪用户的请求。为什么需要会话管理?由于 HTTP 协议本身不保存状态信息,所以服务器需要一种机制来区分不同用户的请求,以及在多个请求之间保持用户的状态信息。会话创建会话信息应该由服务器端创建,服务器端创建会话 ID 以及会话信息后存储起来,将会话 ID 返回给 Web 客户端存储。会话 ID应 该是随机的、不可预测的,并且有足够的熵。会话 ID 通常是通过安全的随机数生成算法生成。

2024-04-21 20:34:36 1156 2

原创 你真的知道 HTTP OPTIONS 方法的作用吗?

根据 RFC 7231规范定义,HTTP OPTIONS 方法是一个“用于获取针对特定资源的 HTTP 请求方法或 URI 的通信选项”的请求方法。简单来说,当客户端发送一个 OPTIONS 请求到服务器时,是在询问:“对于这个特定的URL,服务器能处理哪些 HTTP 方法或者有哪些特殊的限制或要求”。

2024-04-11 22:07:43 1710

原创 简化开发与提升可维护性的编程范式-声明式 API

声明式 API 的核心思想是将“意图”与“执行”分离。开发者通过声明式 API 描述自己想要的结果,而不需要关心实现这一结果的具体步骤。系统根据这些声明自动确定如何执行任务。声明式 API 一般是通过开发者编写描述期望的系统状态的配置文件来与系统交互。这些配置文件通常采用 YAML 或 JSON 格式,明确地列出所需资源的属性和关系。例如,在 Kubernetes 中,可以编写一个 Pod 或 Deployment 的 YAML 配置文件,描述应用程序运行所需的容器镜像、副本数量、资源限制等细节。

2024-04-07 21:57:17 615

原创 如何理解 Go 语言中的 top-level 声明?

在 Go 语言中,“top-level”这个术语通常指的是与包(package)直接相关的代码结构和声明,而不是嵌套在函数或方法内部的代码。top-level 代码包括变量、常量、类型、函数和方法的声明,这些都是在包的最顶层作用域中定义的,因此任何包内部的代码都可以访问它们。理解 top-level 结构对于编写清晰、组织良好的代码至关重要。文章持续更新中,微信搜索【路多辛】阅读更多优质文章。

2024-04-06 08:29:02 710

原创 Web 安全之 SSL 剥离攻击详解

SSL(Secure Sockets Layer)是用于在互联网上建立加密连接,确保数据在客户端和服务器之间传输的过程中不被窃取或篡改一种安全协议。TLS(Transport Layer Security)是 SSL 的升级版,提供了更强的安全功能。在 SSL/TLS 的保护下,用户可以通过 HTTPS 协议安全地访问网站,避免敏感信息(如登录凭证、信用卡信息等)被中间人攻击者窃取。浏览器发送一个包含支持的 SSL/TLS 版本、加密算法选项等信息的“客户端Hello”消息。

2024-04-05 14:41:19 1334

原创 Web 安全之路径遍历攻击详解

路径遍历攻击的核心原理在于利用目标系统处理用户输入时的不安全或疏忽行为,尤其是当应用程序接受用户提供的文件名或路径,并据此进行文件操作(如读取、写入或执行文件)时。攻击者会提交精心构造的恶意路径,其中包含了特殊的字符序列或编码,使得原本应该在限定目录下的文件操作跨越了预设边界,进而访问到服务器文件系统的其他位置。

2024-04-01 21:18:12 1112

原创 高效的二进制列化格式 MessagePack 详解

MessagePack (简称 msgPack)是一种高效的二进制序列化格式,可以将各种数据类型(如整数、字符串、数组等)转换为二进制格式,以便于在网络传输或存储时使用。与 JSON 和 XML 等文本格式相比,MessagePack 的二进制格式更加紧凑,因此在处理大量数据时可以提供更好的性能。

2024-03-24 22:03:30 824

原创 高效灵活可扩展的数据序列化格式 TLV 详解

TLV(Tag-Length-Value)是一种常用的数据序列化格式,主要用于数据包或消息的有效载荷编码。这种编码方式把数据划分为三个主要部分:Tag(标签)、Length(长度)和 Value(值)。这种方式在电信、计算机网络、智能卡、物联网等领域被广泛应用,尤其在那些需要高效、灵活且可扩展的数据编码方案的领域。

2024-03-17 19:32:03 1653

原创 基于 .netrc 文件的身份验证详解

netrc(Network Resource Configuration)文件是一种在 Unix 和类 Unix 系统中用于存储网络登录和身份验证信息的文件,通常位于用户计算机的 home 目录下,文件名为 .netrc。这个文件可以包含(Machine)、登录名(Login)和密码(Password)三元组和其他字段,以便在执行诸如 FTP、HTTP、HTTPS、git 等命令行工具时自动进行身份验证。

2024-03-16 11:05:29 1465

原创 API 常用的序列化协议详解

API(Application Programming Interface,应用程序编程接口)在软件开发中扮演着至关重要的角色,不同的系统之间借助 API 可以通过网络进行数据交换。在数据交换过程中,序列化协议是实现数据结构转换为便于传输和存储格式的关键技术。序列化协议定义了如何将数据结构转换为一系列字节,以及如何将这些字节再转换回原始数据结构。常用的序列化协议有很多种,每种协议都有其特点和适用场景。本文将简单介绍下几种常用的序列化协议。

2024-03-05 21:43:22 1054

原创 从 AI 的爆火聊聊用户界面(UI)的演进

用户界面(User Interface,简称 UI)是人与计算机系统交互的媒介,用户可以通过用户界面向计算机发送指令,同时计算机可以通过用户界面向用户展示信息。用户界面的设计和演进不仅反映了技术的进步,还体现了人类与机器交互方式的不断变化。从早期的命令行界面到现在的自然用户界面,用户界面的设计经历了翻天覆地的变化。在当今这个数字化飞速发展的时代,人工智能(AI)已经成为了技术进步的一个重要标志。

2024-03-03 10:34:26 985

原创 到底什么是单点登录(SSO)?

单点登录(Single Sign-On,简称 SSO)是一种集中式的身份验证和授权机制,用户只需在一处输入一次凭证(例如用户名和密码)就可以访问多个相关但独立的软件系统。在数字化时代,企业和组织通常会使用多个应用程序和服务来支撑其业务流程。如果没有单点登录,也就意味着用户需要记住多个系统的用户名和密码,这对于用户来说既不方便也不安全,单点登录的出现就是为了解决这个问题。

2024-02-29 21:42:50 1229 1

原创 软件领域中,阈(yù)值还是阀(fá)值?

在日常的交流中,相信很多人经常听到阈值或者阀值这个词,大家可能都能理解这个词的意思,但是到底该用哪个词呢?

2024-02-26 21:01:51 971

原创 Web 安全之 CSV 注入攻击详解

CSV 是一种简单的文件格式,用于存储表格数据,每行一个数据记录,每个记录由逗号分隔的多个字段组成。CSV 文件因其简单性和跨平台性而被广泛使用,在数据导出和导入中尤其常见。CSV 注入攻击是攻击者通过某些方式在 CSV 文件中注入恶意的代码,并利用电子表格软件处理 CSV 文件时的特性来执行恶意代码实现非法操作的攻击方式。这种攻击通常发生在应用程序在处理 CSV 文件时,没有正确地校验或转义用户输入的特殊字符,从而被攻击者利用在 CSV 文件中注入恶意代码。

2024-02-25 16:38:23 1417

原创 Go 1.22 中的 for 循环新特性详解

在 Go 语言中,for 循环是实现迭代的主要方式。Go 中的 for 循环非常灵活,有多种使用方式,包括传统的三部分 for 循环、类似于其他语言中的 while 循环以及迭代集合的 range 循环。在 1.22 之前的版本中,for 循环的变量只创建一次,在每个迭代中为这个变量赋予对应的值。由于这个特性,使用起来很容易犯错,一不小心就会导致意想不到的行为。这个示例结果一般都会输出 bb,而并非预期中的 ab 或 ba。

2024-02-23 21:37:00 988

原创 Go 1.22 对 net/http 包的路由增强功能详解

Go 1.22 版本对 net/http 包的路由功能进行了增强,引入了方法匹配(method matching)和通配符(wildcards)两项新功能,这些特性使得开发者能够使用模式字符串来表达常见的路由,而不需要直接编写 Go 代码。

2024-02-21 20:25:39 1232 1

原创 ChatGPT 开放接口使用的认证方式 API Key Authentication 详解

API Key 通常是一个字符串,由 API 提供者生成并提供给 API 调用者。当 API 调用者发起请求时,需要在请求中包含这个 API Key,服务端接收到请求后会检查这个 Key 是否有效。

2024-02-07 16:58:48 1855

原创 OpenAI API 中的 system、user 和 assistant 什么意思?

在 OpenAI 的技术框架中,system、user 和 assistant 是三个核心概念,分别代表了系统、用户和助手。这三个概念在 OpenAI 的各种应用场景中都发挥着重要作用,如聊天机器人、文本生成、机器翻译等。

2024-02-05 21:40:53 2626

原创 权限系统设计详解(三):ABAC 基于属性的访问控制

ABAC(Attribute-Based Access Control,基于属性的访问控制)是一种灵活的访问控制机制,可以根据多个属性来控制用户对资源的访问。这些属性可以是用户属性(如职位、年龄、部门)、资源属性(如文档分类、创建日期)、环境属性(如访问时间、网络位置)和行为属性(如读取、写入、执行)等。ABAC 通过定义一系列的访问策略,这些策略基于属性进行评估,以决定是否允许用户执行特定的操作。ABAC 提供了比传统的访问控制模型(如基于角色的访问控制 RBAC)更高的灵活性和更细的粒度。

2024-02-04 21:39:32 3398 1

原创 观察复杂系统内部情况的秘密武器-可观测性详解

在软件系统中,可观测性通常是指系统内部状态和行为的可见性,通过收集和分析系统产生的数据(如日志、度量指标、追踪信息),可以及时且准确地了解系统内部运行状况的能力。这些数据构成了对系统状态的可观测视图,使得运维和开发人员能够观察系统的实时行为、查看健康状况及发现潜在问题。

2024-02-03 15:16:00 1154

原创 权限系统设计详解(二):IBAC 基于身份的访问控制

IBAC(Identity-Based Access Control,基于身份的访问控制)是信息安全管理中的一种传统访问控制模型,根据用户的身份(如用户名或用户ID)来授权用户对系统资源的访问。这种方法直接将访问权限与个体的身份相关联,是最直观的访问控制方式之一。与RBAC(基于角色的访问控制)不同,IBAC 更加强调用户身份的作用,通过身份信息来控制访问权限。

2024-02-02 21:44:01 1010

原创 权限系统设计详解(一):RBAC 基于角色的访问控制

RBAC(Role-Based Access Control,基于角色的访问控制)是一种被广泛使用的权限管理模型,用于控制用户对系统资源的访问权限。通过将权限与角色相关联,然后将角色分配给用户,从而实现更灵活、更易于管理的安全策略。

2024-01-31 21:48:33 1624

golang echo框架获取request body和response body方法源代码

内容概要:golang echo框架获取request body和response body方法。 适合人群:掌握golang使用方法,学习过echo框架。 能学到什么: 学会echo框架获取request body和response body方法并了解原理。

2023-02-11

空空如也

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

TA关注的人

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