rust语言基础学习笔记(上)
1.语言环境安装和开发工具准备 1.1 Rust语言环境安装 安装Rust 1.2 开发工具VSCode + Rust扩展 VSCode + rust-analyzer 1.3 HelloWorld cargo是rust的构建系统和包管理器,使用cargo可以创建rust项目。 创建项目: cargo new c01_hello Created binary (application) `c01_hello` package 项目目录结构如下:
1.语言环境安装和开发工具准备 1.1 Rust语言环境安装 安装Rust 1.2 开发工具VSCode + Rust扩展 VSCode + rust-analyzer 1.3 HelloWorld cargo是rust的构建系统和包管理器,使用cargo可以创建rust项目。 创建项目: cargo new c01_hello Created binary (application) `c01_hello` package 项目目录结构如下:
因为kong的社区版不提供dashboard,本文将介绍kong的第三方开源的图形化管理工具konga在Kubernetes集群上的部署安装。 konga是一个非官方的第三方开源的kong的图形化管理工具,konga需要使用kong的Admin API,konga具有如下特性:
本文将使用helm在Kubernetes集群中部署微服务API网关kong,并将其用作Kubernetes的Ingress Controller。 Kong官方单独维护了一个项目叫Kong for Kubernetes,项目的地址是https://github.com/Kong/kubernetes-ingress-controller。 Kong for Kubernetes是一个Kubernetes的Ingress Controller,通过插件架构提供API管理能力。 Kong官方另外提供了一个Helm Chart,使用Helm安装这个Chart可以在Kubernetes集群上运行Kong所需的所有组件。
kong是一个云原生的、高性能的、可扩展的API网关(分布式微服务抽象层)。 kong基于openresty, nginx+lua模块开发,其核心价值就是高性能和可扩展性。 kong的基本运行情况如下图所示,kong可以通过充当微服务请求的网关, 同时通过插件提供负载均衡、日志记录、身份认证、速率限制(rate-limiting)、转换(transformations)等功能。
grpcurl是一个命令行工具,使用它可以在命令行中访问gRPC服务,就像使用curl访问http服务一样。 准备: 在gRPC服务中注册reflection服务 gRPC服务是使用Protobuf(PB)协议的,而PB提供了在运行时获取Proto定义信息的反射功能。grpc-go中的"google.golang.org/grpc/reflection"包就对这个反射功能提供了支持。 这里以grpc-go官方的helloword为例,代码结构如下: grpc-hello ├── go.mod ├── go.sum ├── main.go └── proto ├── doc.go ├── helloworld.pb.go └── helloworld.proto helloworld.proto:
今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第23, 24节的学习笔记。 笔记 这两节分上、下两节主要介绍了对于"业务系统"如何做需求分析、系统设计、代码实现,并且遵循前面已经学过的设计原则。 原文中以一个"积分兑换系统"为实战案例进行介绍。
今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第22节的学习笔记,介绍面向对象设计原则中的迪米特法则(LOD)原则。 笔记 面向对象有很多经典的设计原则: SOLID5原则分别是 单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖反转原则(DIP) KISS - Keep It Simple, Stupid YAGNI - You aren’t gonna need it DRY - Don’t Repeat Yourself LOD - Law of Demeter(迪米特法则,又叫做最少知识原则) LOD原则 “高内聚、弱耦合"是一个非常重要的设计思想,能够有效的提高代码的可读性和可维护性,能够缩小功能改动导致的代码改动范围。 “高内聚、弱耦合"实际上可以作为很多设计思想、设计原则的总纲,很多设计思想、设计原则都是以实现"高内聚、弱耦合"为目的,例如单一职责原则(SRP)、基于接口而非实现编程等等。
今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第21节的学习笔记,介绍面向对象设计原则中的DRY原则。 笔记 面向对象有很多经典的设计原则: SOLID5原则分别是 单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖反转原则(DIP) KISS - Keep It Simple, Stupid YAGNI - You aren’t gonna need it DRY - Don’t Repeat Yourself LOD - Law of Demeter(迪米特法则,又叫做最少知识原则) DRY原则 DRY原则,中文译为不要重复自己,不要写重复代码,不要自己造轮子。 但实际上,重复的代码不一定违背DRY原则,而有些看似不重复的代码确可能违背DRY原则。 DRY原则也与代码的复用性相关。
今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第20节的学习笔记,介绍面向对象设计原则中的KISS原则和YAGNI原则。 笔记 面向对象有很多经典的设计原则: SOLID5原则分别是 单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖反转原则(DIP) KISS - Keep It Simple, Stupid YAGNI - You aren’t gonna need it DRY - Don’t Repeat Yourself LOD - Law of Demeter(迪米特法则,又叫做最少知识原则) KISS原则 KISS原则直译过来就是"尽量保持简单"。 KISS原则是保持代码可读性和可维护性的重要手段,足够简单,也就意味着很容易读懂,这就让BUG不容易隐藏且更容易修复。 这个原则从另一个角度也给出了我们在做开发时不要过度设计,要学会用简单的方法解决复杂的问题。
今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第19节的学习笔记,介绍面向对象设计原则中的依赖反转原则(DIP)。 笔记 面向对象有很多经典的设计原则: SOLID5原则分别是 单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)、依赖反转原则(DIP) KISS - Keep It Simple, Stupid YAGNI - You aren’t gonna need it DRY - Don’t Repeat Yourself LOD - Law of Demeter(迪米特法则,又叫做最少知识原则) 依赖反转原则 依赖反转(DIP)与控制反转(IOC)、依赖注入(DI)有什么区别和联系呢?