240 发简信
IP属地:广东
  • 异步处理http请求同步返回结果

    如何设计一个接口,使用消息队列异步请求,但是客户端同步收到结果   异步处理,同步返回?为什么会有这样一个需求?既然接口要求同步返回,那么直接阻塞就好了,要什么异步消息同步返...

  • 120
    Redis高级功能之 - 布隆过滤器

    从一个场景说起 在刷抖音有刷到过重复内容吗,这么多的推荐内容要推荐给这么多的用户,它是怎么保证每个用户在看推荐内容时,保证不会出现之前已经看过的推荐视频呢?也就是说,抖音是如...

  • HTTP 1.0、1.1、2.0、3.0区别

    HTTP 1.0 特点 1.0的HTTP版本,是一种无状态,无连接的应用层协议。 HTTP1.0规定浏览器和服务器保持短暂的链接。 浏览器每次请求都需要与服务器建立一个TCP...

  • Go - 常见问题

    make和new new(T) 和 make(T, args) 是Go语⾔内建函数,⽤来分配内存,但适⽤的类型不⽤。 new(T) 会为了 T 类型的新值分配已置零的内存空间...

  • Go - panic 的十种方法

    前言 本章节有且仅有一个目的,那就是让你的 Go 程序遇到 panic。 D.1 数组/切片索引越界 运行结果: D.2 空指针调用 运行结果: D.3 过早关闭 HTTP ...

  • 120
    Go - 网络轮询器

    前言 可以从 Go 源码目录结构和对应代码文件了解 Go 在不同平台下的网络 I/O 模式的实现。比如,在 Linux 系统下基于 epoll,freeBSD 系统下基于 k...

  • 120
    TCP知识

    一、TCP 简介 第一部分先为大家介绍一下 TCP 的主要概念,并讲解一下 TCP 的三个重要特性。 面向连接; 基于字节流; 可靠性。 关于网络分层的概念实在是老生常谈了,...

  • 120
    Go - GMP模型

    简述 G — 表示 Goroutine,它是一个待执行的任务; M — 表示操作系统的线程,它由操作系统的调度器调度和管理; P — 表示处理器,它可以被看做运行在线程上的本...

  • Go - map

    Key的选择注意点 key 类型的 K 必须是可比较的(comparable),也就是可以通过 == 和 != 操作符进行比较;value 的值和类型无所谓,可以是任意的类型...

  • Go - strings

    数据结构 与切片的数据结构相比,少了cap,是一个只读的切片 因为字符串作为只读的类型,我们并不会直接向字符串直接追加元素改变其本身的内存空间,所有在字符串上的写入操作都是通...

  • Go - sync.Once

    设计目的 Once 常常用来初始化单例资源,或者并发访问只需初始化一次的共享资源,或者在测试的时候初始化一次测试资源。 使用场景 sync.Once 只暴露了一个方法 Do,...

  • Go - sync.Cond

    设计目的 为等待 / 通知场景下的并发问题提供支持。Cond 通常应用于等待某个条件的一组 goroutine,等条件变为 true 的时候,其中一个 goroutine 或...

  • Go - sync.WaitGroup 协同等待,任务编排利器

    设计目的 可以等待一组 Goroutine 的返回,一个比较常见的使用场景是批量发出 RPC 或者 HTTP 请求将原本顺序执行的代码在多个 Goroutine 中并发执行,...

  • Go - sync.RWMutex

    设计目的 大多数读请求之间互不影响,在读多写少的场景下,可以分离读写操作,提高读写并发性能. 限制 只能读读并发, 读写, 写写操作不并发 RWMutex RWMutex 在...

  • 120
    Go - sync.Mutex

    设计目的 保证多个 Goroutine 在访问同一片内存时不会出现竞争条件等问题 Locker接口 Locker 的接口定义了锁同步原语的方法集: Mutex 以及读写锁 R...

  • Go - Pool: 性能提升大杀器

    特性 sync.Pool 数据类型用来保存一组可独立访问的"临时"对象,它说明了 sync.Pool 这个数据类型的特点,也就是说,它池化的对象会在未来的某个时候被毫无预兆地...

  • 120
    Go - Channel

    设计理念 执行业务处理的 goroutine 不要通过共享内存的方式通信,而是要通过 Channel 通信的方式分享数据。 Channel 类型和基本并发原语是有竞争关系的,...

  • Go - array、slice

    array 特征 内存连续,可以根据索引获取元素. 初始化之后大小就无法改变. 存储元素类型相同、大小相同的两个数组才是一个类型 初始化 特殊点 在不考虑逃逸分析的情况下,如...