Hsz's Blog

现代魔法及其影响与应用

GRPC接口服务

GRPC接口服务 GRPC正如其名,是目前应用较广的一种RPC(Remote Procedure Call)协议. RPC RPC(Remote Procedure Call),远程过程调用.它的设计目标就是希望调用起来和使用本地的函数一样简单.也就是说RPC只是一种形式,本质上还是一种请求响应模式的服务. RPC技术由来已久,也很早就被应用,比如jsonrpc,xmlrpc这些...

Protobuf介绍.

Protobuf介绍 Protobuf是由google开源的一套序列化工具.它需要预先定义数据的schema,将其编译为需要的编程语言对应的类或者结构体,然后针对定义好格式的数据实例进行序列化和反序列化. 对于大多数编程语言涉及3个实体: .proto文件,用于定义数据的结构 对应编程语言的类/结构体定义文件,用于在对应编程语言中表现和使用数据,由protoc编译.proto...

JSON介绍

JSON介绍 JSON是一种广泛使用的半结构化序列化协议,广泛使用于前后端通信,半结构化数据保存,项目配置等领域.由于其应用极广,所以几乎每门相对现代些的编程语言中都会有用于解析它的标准库.因此其使用起来学习成本很低.在数据科学领域中JSON也是最常见的数据序列化形式之一. JSON的表现形式 一个典型的JSON数据如下: { "name":"小明", "age":1...

JSONSchema介绍

JSONSchema介绍 JSONSchema是用来定义JSON数据约束的一个标准.根据这个约定模式,交换数据的双方可以理解JSON数据的要求和约束,也可以据此对数据进行验证以保证数据交换的正确性. 当然由于许多JSONSchema实现都附带可以校验用于生成JSON的对应结构体或者哈希表结构等,它事实上也可以用于做结构化数据校验. 目前最新的JSONSchema版本是Draft 8,但多...

微服务架构

微服务架构 微服务架构是当今流行的一种应用构造形式,与之相对的概念是单体应用架构.在了解微服务架构之前我们先来明确几个概念. 概念定义 业务 指的是需要处理的事务(功能)的集合.比如github的业务就是提供代码托管及相关的功能.业务是有拓展性需求的,比如github开始只是托管代码加社交功能,后面又加上了项目管理功能,又加上了文档静态页面托管功能,又加上了cicd功能等,鬼...

网络身份认证

网络身份认证 网络令牌技术很早就被应用在通信安全领域,通常是作为身份认证的工具. TLS已经可以解决通信安全问题,但它的问题在于太重了 不带客户端验证的TLS无法确认客户端的合法性 带客户端验证的TLS使用非常不便 通常我们都是使用的不带客户端验证的TLS,然后再通过其他方式验证客户端的合法性. JWT就是用于解决客户端合法性验证的一项技术. 身份认证问题 身份...

TLS与通信安全

TLS与通信安全 互联网的通信安全是建立在SSL/TLS协议之上. 从明文通信到TLS加密通信 在TLS出现之前的蛮荒时代,数据都是明文传输的,明文传输的缺点当然就很明显–消息在每个经过的节点上都可以被读出窃取到.因此早期qq经常会有盗号的,那就是明文传输的锅. 总结来说明文传输的风险点有3个: 窃听风险(eavesdropping):第三方可以获知通信内容...

使用Gitea代替Github托管代码

使用Gitea代替Github托管代码 Github虽好,但它不是开源的!它是代码托管的服务商.确实Github做的非常好用,大家用起来也非常方便,但不要忘记,它不是开源的!使用它你需要冒被限制账号甚至被封号的风险.毕竟伊朗人已经被封了. 没错这不符合开源精神,但是它本来就不是开源的!因此我们有必要给Github找个备胎,甚至拜托Github自己来.Gitea就是一个相当靠谱的选择. ...

使用GithubActions自动化工作流

使用GithubActions自动化工作流 Github在2019年底开放了内置的CI/CD工具GithubActions.这样使用Github托管的代码终于有了不借助外部服务自动化测试打包部署的能力. 同时由于后发优势,GithubActions几乎是目前最易用的CI/CD工具. GithubActions类似于传统的CI/CD工具,都是使用代码配置脚本,执行器执行脚本,页面管理执行...

使用Sphinx写项目文档

使用sphinx写项目文档 Sphinx是一个开源的python文档生成器,这里有一个中文的使用手册,它采用reStructuredText作为默认的源文件格式,也可以配置使用markdown作为源文件,可以输出为html文件或者pdf文件(需要latex)等多种格式. 由于它自带解析python docstring的功能,因此非常适合用于给python项目做接口文档.通过其他第三方插...