My Blogs
CO-STAR prompt framework
Published 2024年05月21日 10:34 by james
CO-STAR
A simple way to further improve quality of generation is to follow the CO-STAR framework, a template that sections out key aspects that most influence response generation. CO-STAR was …
ChatGPT DAN
Published 2023年03月10日 11:51 by james
Vault
Vault 主要使用令牌,而每个令牌都与客户端的策略相关联。每个策略都是基于路径的,策略规则限制了每个客户端对路径的操作和可访问性。使用 Vault,您可以手动创建令牌并将其分配给您的客户端,或者客户端可以登录并获取令牌。下面的图示显示了 Vault 的核心工作流程。
Vault 的核心工作流程包括四个阶段:
- 认证:在 Vault 中,认证是指客户端提供信息,Vault 使用这些信息来确定客户端是否是其所声称的身份。一旦客户端通过身份验证方法进行了认证,就会生成一个令牌并与一个策略相关联。
- 验证:Vault 根据第三方可信来源(如 Github、LDAP、AppRole 等)验证客户端。
- 授权:Vault 将客户端与 Vault 安全策略进行匹配。此策略是一组规则,定义了客户端使用其 Vault 令牌可以访问哪些 API 端点。策略提供了一种声明性的方式来授予或禁止对 Vault 中特定路径和操作的访问权限。
- 访问:Vault 通过根据与客户端身份相关联的策略发放令牌,授予对密钥、密文和加密功能的访问权限。然后,客户端可以在未来的操作中使用其 Vault 令牌。 …
对称加密算法总结
Published 2023年03月10日 01:49 by james
常见的对称加密算法有DES、3DES、AES、RC4和Blowfish等,这些算法在加密速度、加密强度、密钥长度和安全性等方面都有所不同。
以下是这些算法的详细对比:
- DES (Data Encryption Standard):DES是一种古老的对称加密算法,它使用56位密钥和64位分组大小。DES的加密速度相对较慢,而且密钥长度较短,安全性受到了威胁,已经不再被广泛使用。
- 3DES (Triple Data Encryption Standard):3DES是DES的改进版,它使用3个56位的密钥来加密数据,加密强度更高。但是,3DES的加密速度比其他算法慢,因为它需要进行多次加密。
- AES (Advanced Encryption Standard):AES是一种高级对称加密算法,它使用128位、192位或256位的密钥和128位分组大小。AES比DES和3DES更快,安全性更高,目前被广泛使用。
- RC4:RC4是一种流密码算法,它使用变长密钥,可以支持任意长度的密钥。RC4的加密速度很快,但是它的安全性受到了威胁,容易受到攻击,不建议使用。
- Blowfish:Blowfish是一种对称加密算法,它使用变长密钥和64位分组大小。Blowfish的加密速度很快,安全性也很高,但是在一些情况下,可能受到已知明文攻击的威胁。
Algorithm | Key Length | Block Size | Encryption Mode(s) | Padding Mode(s) | Encryption Speed | Security | Hardware … |
---|
doorman readme
Published 2023年03月09日 18:51 by james
Doorman是全球分布式客户端速率限制的解决方案。与共享资源(例如数据库、gRPC服务、RESTful API或其他资源)通信的客户端可以使用Doorman自愿限制其使用资源的方式(通常是每秒请求数)。Doorman是用Go编写的,并使用gRPC作为其通信协议。对于某些高可用性功能,它需要分布式锁管理器。我们目前支持etcd,但是使用Zookeeper代替应该相对简单。
入门指南
Doorman的目的是根据某种公平的定义,分配和分发客户端的容量。客户端获得资源的容量取决于以下四个因素:
- 资源(全球范围内)的配置最大容量。
- 此客户端的容量需求(希望)。
- 全球所有其他客户端的容量需求(希望)。
- 用于在所有客户端之间分配容量的确切算法(由配置定义)。
Doorman主服务器会记住当前具有容量的所有客户端,并在客户端请求容量时将其请求插入其内存并运行算法,以确定此客户端应该获得什么。
租约长度和刷新间隔
Doorman只在有限的时间内分配容量,以租约形式给出。每个容量授予都带有租约长度:客户端在租约期间保证获得相应的容量。典型的租约长度为五分钟。除了租约长度之外,Doorman服务器还返回刷新间隔。这是客户端预计多长时间后需要重新检查以获取新租约的间隔。典型的刷新间隔为五秒。
注意:Doorman系统是合作性的。客户端应该遵守容量授予、租约长度和刷新间隔。该系统没有保护不良行为的客户端。
在系统的正常操作中,所有客户端都定期向服务器检查以刷新其容量。服务器知道所有客户端及其资源需求,并在每个请求上对容量进行最佳分配。出于优化目的(减少Doorman服务器上的qps),客户端代码会在向Doorman服务器发送请求时进行所有资源的批量刷新。这意味着在特定情况下(例如注册新资源时),资源可能会比预期更快地刷新其容量。
Doorman配置指定了应使用哪个算法将容量分配给所有客户端。算法页面解释了当前可用的算法及其如何将容量分配给每个客户端。
租约长度和刷新间隔这两个参数优化了系统的多种不同行为:
- Doorman服务器的负载。
- 系统在资源需求变化和客户端出现和消失时收敛的速度。
- 系统如何处理Doorman服务器无法访问或响应缓慢。
当Doorman服务器变得无法访问并重新连接时。
当客户端无法访问Doorman服务器时,以下情况发生:
- 客户端会错过一个或多个刷新间隔。对于客户端来说,这并不重要,只是客户端的容量不会因为潜在的资源需求变化而调整。
- 当Doorman服务器长时间不可用时,租约会过期,资源会恢复到其配置的安全容量。这可以是以下任何一个:
- 1,表示无界(无限)速率限制,或
- 0,表示所有对资源的访问都被阻止,或者是一个正数。
- 一旦Doorman服务器重新可达,客户端将恢复请求容量。
注意:Doorman在不同集群中使用多个服务器和主选举过程来确定当前的主服务器。
Doorman不共享或存储其内部数据库。这意味着当Doorman服务器成为主服务器时,它会从空的客户端和未完成的租约仓库开始。但是这并不像看起来的那么严重,因为一旦服务器可用,所有客户端都会开始调用它以刷新其租约。由于Doorman服务器知道它没有足够的信息来运行其算法,因此它将简单地返回当前分配的容量,或者如果请求来自当前没有资源容量的客户端,则返回零。服务器知道当前分配的容量,因为客户端在每个GetCapacity RPC中都会包含它。这个阶段的服务器被称为学习模式。
在资源的学习模式期间,每个请求都将被回答一个相同容量的新租约。实际上,在几个刷新间隔之后,服务器可以合理地确定它已经与所有现有的客户端联系过了。然而,出于安全原因,缺省的学习模式持续时间与租约长度相同。这个决定确保当学习模式持续时间到期时,我们可以确定没有租约是我们不知道的(因为这些租约已经过期)。如果你想在Doorman主节点选举后更快地收敛系统,你可以在资源模板中显式配置学习模式持续时间(有关更多信息,请参见系统配置页面)。
谁想要什么? …
软件开发的201个原则
Published 2023年02月24日 23:35 by james
一般原则(GENERAL PRINCIPLES)
原则1 质量第一
QUALITY IS #1
原则2 质量在每个人眼中都不同
QUALITY IS IN THE EYES OF THE BEHOLDER
原则3 开发效率和质量密不可分
PRODUCTIVITY AND QUALITY ARE INSEPARABLE
原则4 高质量软件是可以实现的
HIGH-QUALITY SOFTWARE IS POSSIBLE …