Rust入门 - Part 1 - 通用编程概念

本节将学习到变量、基本类型、函数、注释和控制流。这些基本内容几乎在每个 Rust 程序中都会遇到,所以尽早接触这些内容,从核心知识学起。 ...

Read More...


字节跳动的网络库 netpoll 源码解析

在微服务盛行的现在,内部服务通常以长连接为主,而 Go 原生 net 网络库却无法提供足够的性能和控制力,如无法感知连接状态、连接数量多导致利用率低、无法控制协程数量等。为了能够获取对于网络层的完全控制权,同时先于业务做一些探索并最终赋能业务,所以有了 netpoll ...

Read More...


GO网络模型分析以及 GNET 源码解析

GO网络模型分析,GO使用EPOLL以及REACT的网络模型,但是 one-routine-perconnection 的概念,在内部服务大量长链接的情况下,并不适用,相对的,gnet的 multi react 网络模型,解决了这个问题。但是生态并不成熟,以下是解析 ...

Read More...


浅谈Go中的定时器以及时间轮算法实现

在实现需求的过程中, 经常会遇到如下的一类需求: 在一个间隔时间之后做某事: 例如在最后一次消息发送的5分钟之后, 断开连接 在一个间隔时间之后不停的做某事: 例如每隔5分钟之后刷新内存中的缓存 ...

Read More...


微服务学习-day 3-Go Concurrency(1)

操作系统会为该应用程序创建一个进程。作为一个应用程序,它像一个为所有资源而运行的容器。这些资源包括内存地址空间、文件句柄、设备和线程。线程是操作系统调度的一种执行路径,用于在处理器执行我们在函数中编写的代码。一个进程从一个线程开始,即主线程,当该线程终止时,进程终止。这是因为主线程是应用程序的原点。然后,主线程可以依次启动更多的线程,而这些线程可以启动更多的线程。无论线程属于哪个进程,操作系统都会安排线程在可用处理器上运行。每个操作系统都有自己的算法来做出这些决定。 ...

Read More...


微服务学习-day 2-Go的错误处理

Go 的处理异常逻辑是不引入 exception,支持多参数返回,所以你很容易的在函数签名中带上实现了 error interface 的对象,交由调用者来判定。 ...

Read More...


微服务学习-day 1-微服务概览

大家经常谈论的是一个叫SOA(面向服务的架构模式,它和微服务又是什么关系?你可以把微服务想成是SOA的一种实践。 ...

Read More...


红黑树--Golang实现

红黑树是树的数据结构中最为重要的一种。Java的容器TreeSet、TreeMap均使用红黑树实现。JDK1.8中HashMap中也加入了红黑树。C++ STL中的map和set同样使用红黑树实现。之前的文章已经详细介绍了2-3-4树的性质与操作。本篇文章将从2-3-4树与红黑树关系出发,详细阐明红黑树。2-3-4树和红黑树是完全等价的,但是2-3-4树的编程实现相对复杂,所以一般是通过实现红黑树来实现替代2-3-4树,而红黑树也同样保证在O(logN)的时间内完成查找、插入和删除操作。 ...

Read More...


[转载]Golang 内存对齐

简单来说,操作系统的cpu不是一个字节一个字节访问内存的,是按2,4,8这样的字长来访问的。所以当处理器从存储器子系统读取数据至寄存器,或者,写寄存器数据到存储器,传送的数据长度通常是字长。 ...

Read More...


GO Interface内部实现的理解

interface底层上是分别由两个struct实现:iface和eface。eface表示empty interface,不包含任何方法,iface 表示 non-empty interface,即包含方法的接口。从概念上来讲,iface和eface均由两部分组成:type和value,type表示interface的类型描述,主要提供concrete type相关的信息,value指向interface绑定的具体数据。 ...

Read More...


好好学习,天天向上