随笔分类 -  Golang

上一页 1 2 3 4 5 6 ··· 9 下一页
摘要:在Go语言中,空指针是一个常见的运行时错误来源,它通常发生在尝试访问一个未被初始化或已被设置为nil的指针所指向的值。 1、凡是有点『.』操作的的行为都要先进行非nil判断: 例如,想记录一个err的msg,通过err.Error()就可以获取到err的string类型的错误消息msg,但这里需要对 阅读全文
posted @ 2024-04-25 19:37 李若盛开 阅读(645) 评论(0) 推荐(0)
摘要:当多个协程同时访问和修改同一个共享资源(如切片)时,如果没有适当的同步机制,可能会导致数据竞争和不一致的结果。 func processChunk(chunk []int64, wg *sync.WaitGroup, failedList []int64) { defer wg.Done() fmt 阅读全文
posted @ 2024-04-24 20:12 李若盛开 阅读(138) 评论(0) 推荐(0)
摘要:1、项目介绍 go-wrk是一个强大的HTTP基准测试工具,利用Go语言的并发特性(goroutines和调度器)来生成大规模负载,可以在单个多核CPU上运行并达到显著的性能。这个项目最初的目的是对比Go和C语言在构建类似工具时的性能和代码复杂度,结果显示Go语言的性能同样出色,且代码量更少。 2、 阅读全文
posted @ 2024-03-29 19:55 李若盛开 阅读(151) 评论(0) 推荐(0)
摘要:nsq最初是由bitly公司开源出来的一款简单易用的消息中间件,它可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息。它有以下特性: 分布式。它提供了分布式的、去中心化且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和高可用特性。 易于扩展。它支持水平扩展,没有中心化的 阅读全文
posted @ 2024-03-29 19:18 李若盛开 阅读(177) 评论(0) 推荐(0)
摘要:背景介绍 目前开发的产品架构采用微服务架构,微服务之间通信的消息格式则使用的proto3标准协议格式。 proto介绍 全称Protocol Buffers是Google公司开发的一种数据描述语言,是一种类似 XML但更灵活和高效的结构化数据存储格式,可用于结构化数据的序列化,适用于数据存储、RPC 阅读全文
posted @ 2024-03-25 20:34 李若盛开 阅读(717) 评论(0) 推荐(0)
摘要:channel是引用类型,需要实用make来创建channel,如下 make(chan Type, [buffer]) chan Type 通道的类型buffer 是可选参数,代表通道缓冲区的大小(省略则代表无缓冲) 使用make创建channel,第一个参数是channel类型。size表示缓冲 阅读全文
posted @ 2024-03-23 00:31 李若盛开 阅读(140) 评论(0) 推荐(0)
摘要:1)var 变量声明多用于全局变量 var name type // var 变量名 数据类型 定义一个 type 类型的变量 name, 并分配内存空间给 name 赋 type 类型的零值。 var name *type 定义一个 type 类型的指针变量 name, 指针变量不分配内存空间,零 阅读全文
posted @ 2024-03-20 14:06 李若盛开 阅读(118) 评论(0) 推荐(0)
摘要:接口 接口(interface)定义了一个对象的行为规范,之定义规范不实现,由具体的对象来实现规范的细节。 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface是一组method的集合,是duck-type programming的一种体现。接口做的事情就 阅读全文
posted @ 2024-03-17 20:11 李若盛开 阅读(27) 评论(0) 推荐(0)
摘要:gRPC和HTTP都是网络协议,但是它们之间存在一些显著的区别。 1、传输协议HTTP使用文本基础的协议,而gRPC使用的是二进制协议,这意味着gRPC数据包更小,传输效率更高。另外,gRPC使用HTTP/2协议,支持多路复用,从而可以更好地处理并发请求。2、性能差异gRPC在性能方面优于HTTP。 阅读全文
posted @ 2024-03-13 13:15 李若盛开 阅读(831) 评论(0) 推荐(0)
摘要:用法1)主要是用于函数有多个不定参数的情况,可以接受多个不确定数量的参数(可选参数) package main import "fmt" func test(args ...string) { // 可以接受任意个string参数 for _, v := range args { fmt.Print 阅读全文
posted @ 2024-03-13 13:13 李若盛开 阅读(161) 评论(0) 推荐(0)
摘要:在当今构建软件时,开发者在编程语言上有着丰富的选择。两种脱颖而出的语言是 Go 和 Rust ,都很强大但却截然不同。Rust和Go似乎都是系统编程语言,都编译为机器码,并且都提供了出色的性能。 将权衡它们在并发、安全性、速度、互操作性等方面的方法。将探讨每种语言的优势 - Go 适用于云原生开发, 阅读全文
posted @ 2024-03-02 13:47 李若盛开 阅读(1236) 评论(0) 推荐(0)
摘要:go-cache是一种内存中的key:value store/cache库,类似于Memcached,适用于在一台机器上运行的应用程序(单机应用程序)。 文档 https://pkg.go.dev/github.com/patrickmn/go-cache https://github.com/pa 阅读全文
posted @ 2024-01-29 20:03 李若盛开 阅读(1091) 评论(0) 推荐(0)
摘要:HTTP接口和RPC接口都是生产上常用的接口,顾名思义,HTTP接口使用基于HTTP协议的URL传参调用,而RPC接口则基于远程过程调用。 RPC(即Remote Procedure Call,远程过程调用)和HTTP(HyperText Transfer Protocol,超文本传输协议),前者是 阅读全文
posted @ 2024-01-28 20:59 李若盛开 阅读(705) 评论(0) 推荐(0)
摘要:概述 gRPC 和 HTTP 是两种常见的网络通信协议,用于在客户端和服务器之间进行通信。它们具有不同的特点和适用场景,下面进行详细比较。 HTTP(Hypertext Transfer Protocol) 特点: 1)简单易用:HTTP 使用简单的请求方法和状态码来进行通信,如 GET、POST、 阅读全文
posted @ 2024-01-28 12:06 李若盛开 阅读(251) 评论(0) 推荐(0)
摘要:1、概述 1.1 什么是gRPC RPC的全称是Remote Procedure Call,远程过程调用。RPC是一种协议,它实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型。使用的时候客户端调用server端提供的接口就像是调用本地的函数一样。 而gRP 阅读全文
posted @ 2024-01-27 13:06 李若盛开 阅读(1492) 评论(0) 推荐(0)
摘要:1、使用下载的老版goland ide工具,使用debug模式无法正常生效: 异常信息是因为goland中的dlv.exe版本太老,也就是dlv.exe不能适配最新的go版本: error layer=debugger could not patch runtime.mallogc: no type 阅读全文
posted @ 2024-01-25 19:21 李若盛开 阅读(820) 评论(0) 推荐(0)
摘要:密码学有很多较快的算法是基于c或c++纂修,而工程上主要以go语言为主,在此梳理一些go调用c常见问题和用例。有很多奇特的方式进行传输,但是想要性能最优还是以指针传输作为主要传输方式。 一些简单的计算可以直接使用c编写成.h进行引用,但在工程部署常常拥有大量依赖库,若在服务器上部署时间太慢,还可能存 阅读全文
posted @ 2024-01-20 21:08 李若盛开 阅读(495) 评论(0) 推荐(0)
摘要:1. go-micro简介 Go Micro是一个插件化的基础框架,基于此可以构建微服务,Micro的设计哲学是可插拔的插件化架构 在架构之外,它默认实现了consul作为服务发现(2019年源码修改了默认使用mdns),通过http进行通信,通过protobuf和json进行编解码 2. go-m 阅读全文
posted @ 2024-01-14 23:03 李若盛开 阅读(442) 评论(0) 推荐(0)
摘要:在Go语言中方法就是定义了接受者的函数,方法和函数只差了一个参数,那就是方法在 func 和标识符之间多了一个参数。接受者定义在func关键字和函数名之间: type Person struct { name string age int } func (p Person) say() { fmt. 阅读全文
posted @ 2024-01-12 22:41 李若盛开 阅读(2) 评论(0) 推荐(0)
摘要:Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。 package main import ( "fmt" ) type Phone interface { call() } type NokiaPhone struct { 阅读全文
posted @ 2024-01-11 20:20 李若盛开 阅读(28) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 ··· 9 下一页