golang grpc

Golang 中的 Functional Options 模式和 Builder 模式

[TOC] ## 一、概述 今天我们来看 Golang 中的 **Functional Options 模式**和 **Builder 模式**。 ## 一、如何实例化/初始化一个对象 我们从最简单的版本开始,如下: ```go type Server struct { Port int Proto ......
模式 Functional Builder Options Golang

跟着 GPT-4 从0到1学习 Golang 并发机制(三)

[TOC] ## 一、前言 话接上回[《跟着 GPT-4 从0到1学习 Golang 并发机制(二)》](https://www.danielhu.cn/from_0_to_1_go_concurrency_with_gpt_2/),我想试试看 GPT-4 能不能当好一个编程老师,循循善诱,由浅入深 ......
跟着 机制 Golang GPT

Golang学习笔记-循环

[toc] ## 自增循环遍历 > `for`循环语句中包含3个部分,`初始化语句`,`条件判断语句`和`循环标记语句` > > `初始化语句`在进入`for`循环体前执行,用于初始化循环用的变量,只执行一次 > > `条件判断语句`在每轮循环开始前执行,当条件成立时才会继续执行循环体中的内容,否则 ......
笔记 Golang

Golang学习笔记-数据类型

[toc] ## 整型 > 整型分为两类:`有符号整型` 和 `无符号整型` > > 在内存中由两部分表示: `{符号位}{数字位置}` ### 有符号整型 | 类型 | 长度(字节数) | 值的范围 | | | | | | int | 在32位平台为4,在64位平台为8 | 在32位平台等同于in ......
类型 笔记 数据 Golang

golang的list数据结构demo

package mainimport "container/list"func main(){ var mylist list.List //放在尾部 mylist.PushBack("go") mylist.PushBack("grpc") mylist.PushBack("mysql") //头 ......
数据结构 结构 数据 golang demo

golang channel Synchronization

在 Go 语言中,通道(channel)是一个很重要的并发同步机制,可以用来在不同的 goroutine 之间发送和接收数据。 通道实现了一个先进先出(FIFO)的数据结构,所以可以确保数据的接收顺序与发送顺序一致。此外,通道的发送和接收操作都是原子的,这意味着你不需要额外的锁来同步数据访问。 这里 ......
Synchronization channel golang

跟着 GPT-4 从0到1学习 Golang 并发机制(二)

btw: 我的[个人博客网站](https://www.danielhu.cn) [TOC] ## 一、前言 话接上回[《跟着 GPT-4 从0到1学习 Golang 并发机制(一)》](https://www.danielhu.cn/from_0_to_1_go_concurrency_with_ ......
跟着 机制 Golang GPT

Asp-Net-Core学习笔记:gRPC快速入门

## 前言 此前,我在做跨语言调用时,用的是 Facebook 的 Thrift,挺轻量的,还不错。 >Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。它通过一个代码 ......
Asp-Net-Core 笔记 Core gRPC Asp

跟着 GPT-4 从0到1学习 Golang 并发机制(一)

[TOC] ## 一、前言 今天玩点不一样的,我想试试看 GPT-4 能不能当好一个编程老师,循循善诱,由浅入深,深入浅出…… 给我讲解下 Golang 里的并发机制。 今天倒掉腹中半杯水,当回白纸,GPT 为笔,代码为颜料,挥笔泼墨,且看能绘出怎样的世界。 ## 二、开聊 > 下文通过 DevCh ......
跟着 机制 Golang GPT

Golang学习笔记-判断

> 判断有两种:`if` 和 `switch` ## if判断 > `if`用于条件判断,它会按照顺序一次执行,当`if`条件及`else if`条件都不成立,则会执行`else`部分的逻辑 > > 语法 > > ``` > if 条件判断 { > ... > }else if 条件判断 { > . ......
笔记 Golang

Golang学习笔记-常量

## 声明常量 > 声明常量关键字: `const` ```go const {常量名} {常量类型} 或 const {常量名} = {常量值} ``` ## 预定义常量 > 预定义常量:`true` , `false` , `iota` > > 其中`true` , `false` 是布尔类型, ......
常量 笔记 Golang

Golang学习笔记-变量

## 声明变量 > 声明变量关键字`var` ``` var {变量名称} {变量类型} ``` ### 例子 ```go // 声明一个变量为v1的整型变量,未赋值时默认值为0 var v1 int // 声明一个变量为v2的浮点型变量,未赋值时默认值为0 var v2 float32 // 声明 ......
变量 笔记 Golang

gain 基于io_uring 的golang 网络框架

io_uring 是linux kernel 从5.1开始支持的新的io 操作模式,性能很不错,gain 是一个golang 实现 参考使用 main.go package main import ( "fmt" "log" "net" "os" "sync/atomic" "time" "gith ......
框架 io_uring golang uring 网络

golang GRPC example

REF: Golang gRPC Example install protobuf go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 go install google.golang.org/grpc/cmd/protoc-g ......
example golang GRPC

golang struct interface 方法

有一个结构体 ``` type mystruct struct { a int } ``` 如果想为这个结构体增加一个方法,就类似于C++或者Java的类一样,有成员变量,也有成员函数,怎么实现呢?由于go没有类的概念,所以提供了一种方案。 ``` func (ms mystruct) test() ......
interface 方法 golang struct

让golang程序生成coredump文件并进行调试

今天讲讲怎么让golang程序生成coredump文件,并且进行调试的。 别看我写了不少golang的博客,其实我平时写c++的时间更多,所以也算和coredump是老相识了。`core dump`文件实际上是进程在某个时间点时的内存映像,当时进程使用的内存是啥样就会被原样保存下来存在文件系统的某个 ......
coredump 文件 程序 golang

在 Go gRPC 中传递额外参数

Go gRPC 是一个高性能、开源的 RPC 框架,它支持通过 Protocol Buffers 进行序列化和反序列化,提供了简单易用的 API,并且可以跨语言通信。在实际开发中,我们有时需要在 gRPC 方法之间传递一些额外的参数,例如请求头信息、跟踪 ID、取消信号等。本文将介绍在 Go gRP ......
参数 gRPC Go

Dockerfile加载cache提速制作golang业务镜像

Dockerfile # syntax=docker/dockerfile:1.2 FROM golang-1.18.5:ubuntu-22.04 AS builder ENV CGO_ENABLED 0 ENV GOOS linux ENV GOPROXY https://goproxy.cn,d ......
Dockerfile 镜像 业务 golang cache

Dockerfile制作golang-ubuntu_22.04基础镜像

Dockerfile FROM ubuntu:22.04 ADD go1.18.5.linux-amd64.tar.gz /usr/local ENV PATH=/usr/local/go/bin:$PATH 生成镜像 # docker build -f Dockerfile -t golang-1 ......

.net core 微服务之 gRPC

概念 什么是gRPC gRPC官网 微软官网 RPC基本理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 RPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端 ......
core gRPC net

gRPC vs. HTTP:网络通信协议的对比

## 概述 gRPC 和 HTTP 是两种常见的网络通信协议,用于在客户端和服务器之间进行通信。它们具有不同的特点和适用场景,下面对它们进行详细比较。 ## HTTP(Hypertext Transfer Protocol) ### 特点: 1. **简单易用**:HTTP 使用简单的请求方法和状态 ......
网络通信 网络 gRPC HTTP vs

golang中的sync.Map

golang中,同时读写map是线程不安全的,可能会出现panic错误: fatal error: concurrent map read and map write Go语言在 1.9 版本中提供了一种效率较高的并发安全的 sync.Map,sync.Map 和 map 不同,不是以语言原生形态提 ......
golang sync Map

linux环境安装golang

在使用pprof工具分析性能时,发现我们的环境上默认没有装go,所以执行不了go tool pprof命令,于是自己手动装了下。步骤如下: 首先下载一个对应系统架构的golang包,这里我用的是arm包,装的1.14.12版本。(见附件)。在环境上创一个个人目录,把包传上去,然后执行以下命令解压到/ ......
环境 golang linux

Golang中的Channel(一)

Golang在并发编程上有两大利器,分别是channel和goroutine。Golang中有一句名言:“使用通信来共享内存,而不是通过共享内存来通信”。这句话有两层意思,Go语言确实在sync包中提供了传统的锁机制,但更推荐使用channel来解决并发问题。这里先对Channel做一个基本的介绍, ......
Channel Golang

Golang中的Channel(二)

上篇介绍了Channel是什么以及它的类型,这篇总结一下Channel的用法。 基本语法 (1) 声明channel 声明channel的语法格式为: var ChannelName chan ElementType 与其他变量声明不同的是,在类型前面多了一个chan关键字。ElementType指 ......
Channel Golang

golang中的空切片和nil切片

Golang中的切片是很基本的数据结构,它的底层是一个数组,表层是一个包含三个变量的结构体: type slice struct { array unsafe.Pointer //指针,指向底层的数组 length int //切片的长度 capcity int //切片的容量 } 当把一个切片赋值 ......
golang nil

Golang的类图

@[toc] # 1. 依赖(Dependency) ## 1.1 概念 类与类的链接,A依赖于B,B的变化引起A的变化。 go中表现为B是A的方法的参数。 ## 1.2 代码示例 - 定义两个结构体`植物`和`天气` - 定义`植物`的方法`生长`,它需要参数`天气` - 实例化`植物`和`天气` ......
Golang

golang 解析yaml文件

#### 初始化 ```go package main import ( "github.com/spf13/viper" ) func initConfig() { viper.SetConfigName("config") viper.AddConfigPath("./") if err := ......
文件 golang yaml

Logback和grpc实现日志访问

# 日志方案 - ui和worker不一定再同一个机器上,看日志不能像看本地文件一样 - 日志放到es搜索引擎上 - 通过grpc通信获取远程日志信息 - 海豚调度的轻量级,选择了grpc实现远程访问日志的方案 ## 方案说明 ![image](https://img2023.cnblogs.com ......
Logback 日志 grpc

Golang起步篇

# 一. 安装Go语言开发环境 ## 1. Wondows下搭建Go开发环境 ### (1). 下载SDK工具包 **sdk下载地址为:**[__https://go.dev/dl/__](https://go.dev/dl/) ![](https://tcs-devops.aliyuncs.com ......
Golang