Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

指针和引用的区别。

并发并行和并发有什么区别? 并发(concurrency):把任务在不同的时间点交给处理器进行处理。在同一时间点,任务并不会同时运行。 并行(parallelism):把每一个任务分配给每一个处理器独立完成。在同一时间点,任务一定是同时运行。 goroutine 可能发生并行执行; 但 coroutine(协程) 始终顺序执行。 并发的三大特性:有序性 ,原子性,可见性 有序性:即...

Go 内存管理go 管理内存Go语言的内存分配器的核心设计思想是:多级内存分配模块,减少内存分配时锁的使用与系统调用;多尺度内存单元,减少内存分配产生碎片。 Golang的内存管理实现主要涉及以下几个方面: 内存分配器(malloc)和释放器(free):Golang使用tcmalloc作为其默认的内存分配器,它是一个高效的内存分配器,可以减少内存碎片。在Go语言中,可以使用内置函数mal...

Go 基础数据类型占用空间 类型 空间 int8 1 int16 2 int32 4 int64 8 int 4(32位)/8(64位) float32 4 float64 8 string 1(英文)/2~4(中文取决于字符集) bool 1 byte 1 funcGo语言中,函数被认为是一等公民(First-class...

kafkaMQMQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常 见的上下游「逻辑解耦 + 物理解耦」的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。 MQ优势 异步处理 - 相比于传统的串行、...

mysql三大范式数据库在表设计的方法论,为了尽可能的降低表之间的耦合度,提高表的可读性。 第一范式(**确保每列保持原子性)**:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。==数据库表中的任何字段都是单一属性的,不可再分==。==单表(字段)拆分到不可拆分为止== 第二范式(**确保表中...

GO 切片陷阱切片的复制问题,导致新切片和旧切片的底层数组一致,修改会导致底层数组改变。 二维切片的拷贝问题: 12345678// newArr是新切片// matrix是旧切片// copy(目标切片, 原切片),需要保证目标切片有足够的容量可以容纳。newArr := make([][]int, len(matrix)) for i := range matrix { ne...

场景知识限流漏桶和令牌桶都是常用的限流算法,用于控制系统的流量,防止系统被过度访问而崩溃。总的来说,漏桶算法适用于需要稳定处理请求的场景,而令牌桶算法适用于需要应对瞬时流量激增的场景。 固定窗口算法劣势:临界时间点产生突发流量,统计数量不准确。 滑动窗口算法滑动窗口算法把间隔时间划分成更小的粒度,当更小粒度的时间间隔过去后,把过去的间隔请求数减掉,再补充一个空的时间间隔。当滑动窗口的格子划分...

服务架构演进分层架构分层架构模式(Layered Architecture Pattern)是架构模式中最常见的架构模式之一,也称为 n 层架构模式,分层架构模式中的组件被组织成水平层,每个层在应用程序中执行特定的角色(例如,表示逻辑或业务逻辑)。尽管分层架构模式没有指定模式中必须存在的层的数量和类型,但大多数分层架构都包含四个标准层:表示层、业务层、持久层和数据库层。 分层架构特征: 整...

GRPC 简介gRPC:gRPC是Google公布的开源项目,基于HTTP2.0协议,并支持常见的众多编程语言。HTTP 2.0协议是基于二进制的HTTP协议的升级版本,gRPC底层使用了Netty框架。 使用gRPC, 可以一次性的在一个.proto文件中定义服务并使用任何支持它的语言去实现客户端和服务端,它们可以应用在各种场景中, gRPC解决了不同语言及环境间通信的复杂性。使用prot...