Blog

rust语言基础学习: rust中的字符串

📅 2020-07-04

在Rust中提到字符串,通常指的是rust核心语言中的字符串类型str(字符串slice)和rust标准库中的String类型。 除了strString这两个常用的字符串类型,在标准库中还有一些其他的字符串类型,例如OsStringOsStrCStringCStr。 本文将介绍strString两个字符串类型。

...

rust语言基础学习: rust中的HashMap

📅 2020-07-03

rust与其他编程语言一样支持哈希Map这种数据结构。 HashMap<K, V>定义在rust标准库的collections moduleuse将其引入作用域。 下面演示HashMap最基本的API使用。

HashMap的创建和初始化 #

下面的代码演示了使用new创建了一个空的HashMap,使用insert向HashMap中添加元素。

...

rust语言基础学习笔记(中)

📅 2020-07-02

1.包、Crate和模块 #

rust的模块系统包括:

  • 包: cargo的一个功能,它允许你构建、测试、分享crate。一个包可以包含多个二进制crate和一个可选的库crate
  • crate: 一个模块的树形结构,它形成了库或二进制项目
  • 模块(mod)和use: 模块通过use来使用,允许你控制作用域和路径的私有性
  • 路径(path): 一个命名例如结构体、函数或模块等项的方式

1.1 包和crate #

crate是一个二进制项或库。 crate root是一个源文件,crate 是一个二进制项或者库。crate root 是一个源文件,Rust 编译器以它为起始点,并构成你的 crate 的根模块。 crate将一个作用域相关的功能分组到一起,使得这些功能可以方便的在多个项目间共享。

...

rust语言基础学习笔记(上)

📅 2020-07-01

1.语言环境安装和开发工具准备 #

1.1 Rust语言环境安装 #

1.2 开发工具VSCode + Rust扩展 #

1.3 HelloWorld #

cargo是rust的构建系统和包管理器,使用cargo可以创建rust项目。

创建项目:

1cargo new c01_hello
2Created binary (application) `c01_hello` package

项目目录结构如下:

...

Kong Web图形化管理工具Konga部署安装

📅 2020-06-04

因为kong的社区版不提供dashboard,本文将介绍kong的第三方开源的图形化管理工具konga在Kubernetes集群上的部署安装。 konga是一个非官方的第三方开源的kong的图形化管理工具,konga需要使用kong的Admin API,konga具有如下特性:

...

使用helm在Kubernetes集群中部署Kong

📅 2020-06-03

本文将使用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所需的所有组件。

...

API网关kong简介

📅 2020-06-02

kong是一个云原生的、高性能的、可扩展的API网关(分布式微服务抽象层)。 kong基于openresty, nginx+lua模块开发,其核心价值就是高性能和可扩展性。

kong的基本运行情况如下图所示,kong可以通过充当微服务请求的网关, 同时通过插件提供负载均衡、日志记录、身份认证、速率限制(rate-limiting)、转换(transformations)等功能。

...

使用grpcurl访问gRPC服务

📅 2020-04-28

grpcurl是一个命令行工具,使用它可以在命令行中访问gRPC服务,就像使用curl访问http服务一样。

准备: 在gRPC服务中注册reflection服务 #

gRPC服务是使用Protobuf(PB)协议的,而PB提供了在运行时获取Proto定义信息的反射功能。grpc-go中的"google.golang.org/grpc/reflection"包就对这个反射功能提供了支持。

这里以grpc-go官方的helloword为例,代码结构如下:

1grpc-hello
2├── go.mod
3├── go.sum
4├── main.go
5└── proto
6    ├── doc.go
7    ├── helloworld.pb.go
8    └── helloworld.proto

helloworld.proto:

...

设计模式之美学习笔记22: 用迪米特法则(LOD)实现高内聚、松耦合

📅 2019-12-23

今天继续打卡学习极客时间上的专栏“设计模式之美”, 本篇是专栏第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)、基于接口而非实现编程等等。

...

© 2025 青蛙小白 | 总访问量 | 总访客数