自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2024-06-19 21:49:12 767

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

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

2024-06-16 19:14:00 511

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

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

2024-06-15 20:45:26 949

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

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

2024-06-14 22:11:35 859

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

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

2024-05-27 21:43:06 604

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

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

2024-05-22 22:13:12 650

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

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

2024-05-21 22:06:21 802

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

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

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

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

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

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

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

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

2024-04-11 22:07:43 1393

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

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

2024-04-07 21:57:17 547

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

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

2024-04-06 08:29:02 679

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

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

2024-04-05 14:41:19 1214

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

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

2024-04-01 21:18:12 969

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

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

2024-03-24 22:03:30 749

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

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

2024-03-17 19:32:03 1228

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

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

2024-03-16 11:05:29 1219

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

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

2024-03-05 21:43:22 1034

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

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

2024-03-03 10:34:26 944

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

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

2024-02-29 21:42:50 1103

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

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

2024-02-26 21:01:51 771

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

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

2024-02-25 16:38:23 1356

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

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

2024-02-23 21:37:00 917

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

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

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

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

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

2024-02-07 16:58:48 1595

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

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

2024-02-05 21:40:53 2039

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

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

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

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

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

2024-02-03 15:16:00 1137

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

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

2024-02-02 21:44:01 935

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

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

2024-01-31 21:48:33 1411

原创 打破静态安全扫描工具分析结果孤岛的桥梁-SARIF 详解

在软件开发过程中,静态分析是保障代码质量的一个重要方法。静态分析工具可以在不运行程序的情况下检查源代码,发现代码中的质量和安全问题。然而不同的静态分析工具可能会产生不同的输出格式,这给工具之间的结果交换和集成带来了很大的挑战。为了解决这个问题,微软提出了 SARIF(Static Analysis Results Interchange Format,静态分析结果交换格式)标准。

2024-01-29 21:42:36 504

原创 引领云计算未来的技术-云原生详解

云原生(Cloud Native)一词最早由 Pivotal 公司的 Matt Stine 于2013年提出,云原生(Cloud Native)是一种构建和运行应用程序的方法,充分利用了云计算的各种优势,例如灵活性、可扩展性和弹性。云原生应用程序是为云而生,是在云环境中构建和部署的,通常是微服务架构、容器化部署、动态管理和自动化运维并且能够在动态环境(如公有云、私有云和混合云)中进行弹性伸缩。云原生技术可以帮助企业快速构建和部署应用程序,提高应用程序的可扩展性和可靠性,降低运维成本。

2024-01-28 20:22:35 1503

原创 新型唯一标识符 ULID 详解

ULID(Universally Unique Lexicographically Sortable Identifier,通用唯一字典排序标识符)是一种新型的唯一标识符格式,由 Alizain Feerasta 在2016年提出,在保持唯一性的同时,提供了可排序的特性。ULID 旨在解决 UUID 在某些场景下存在问题,并提供额外的优势。这使得 ULID 在需要排序的同时保持全局唯一性的场景中非常有用,例如在分布式系统中用于日志排序、数据库主键等。

2024-01-28 12:48:31 1942

原创 Web 安全之点击劫持(Clickjacking)攻击详解

点击劫持(Clickjacking)攻击,又称为界面伪装攻击,是一种利用视觉欺骗手段进行攻击的方式。攻击者通过技术手段欺骗用户点击本没有打算点击的位置,当用户在被攻击者攻击的页面上进行操作时,实际点击结果被劫持,从而被攻击者利用。这种攻击方式利用了用户对网站的信任,通过覆盖层(通常是透明的iframe)覆盖在另一个网页之上,使受害者无法察觉。

2024-01-27 17:19:22 1835

原创 你真的了解 UUID 吗?

UUID(Universally Unique Identifier,通用唯一标识符)是在计算机科学和信息技术领域中被广泛使用的一种数据格式,用于确保不同系统间标识符的唯一性。UUID 的设计可以在没有中心化服务的情况下生成唯一的标识符,非常适用于分布式计算系统。

2024-01-27 11:46:12 1081

原创 HTTP API 认证技术详解(五):Token-based Authentication

Token-based 认证是一种无状态的认证方式,被广泛用于现代 Web 应用程序中,客户端在登录成功后,服务器会返回一个 Token,客户端需要保存这个 Token。在后续的请求中,客户端需要在请求头中带上这个 Token,服务器通过验证 Token 的有效性来完成身份认证。

2024-01-24 21:09:24 1393

原创 Web 安全之水坑攻击(Watering Hole Attack)详解

水坑攻击(Watering Hole Attack)是一种精心策划的网络攻击策略,针对目标群体的用户,通过感染他们经常访问的网站来散播恶意软件、收集用户信息等。这种攻击方式的名称源于野生动物的捕食行为,捕食者会在水坑等地方等待猎物,因为猎物会经常来到这些地方饮水。同样地,攻击者会寻找目标群体经常访问的网站,将这些网站变成“水坑”,比如行业内部网站、论坛或软件供应商的网页。当目标用户访问这些被污染的网站时,就会被悄无声息地下载恶意软件或遭受其他形式的安全威胁。

2024-01-18 21:18:45 1734

原创 HTTP API 认证技术详解(四):HMAC Authentication

HMAC(Hash-based Message Authentication Code)认证是一种被广泛使用的技术,用于验证消息的完整性和真实性。HMAC 结合了哈希函数和加密密钥,比单纯的哈希更安全。在网络通信和数据存储中,HMAC 可以确保传输的数据未被篡改,并验证消息发送者的身份。

2024-01-17 21:38:45 1188

原创 Golang 如何基于现有的 context 创建新的 context?

在 Golang 中,context 包提供了创建和管理上下文的功能。当需要基于现有的 context.Context 创建新的 context 时,通常是为了添加额外的控制信息或为了满足特定的生命周期需求。

2024-01-16 22:12:23 840

原创 HTTP API 认证技术详解(三):JWT Authentication

JWT(JSON Web Tokens)是一种开放标准(RFC 7519),定义了一种紧凑的、自包含的格式,用于实现网络应用程序中的身份验证和授权机制。

2024-01-15 21:56:08 1239

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关注的人

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