Simon's | Blog

Why so serious?

MIT6.S081学习笔记【一】

"MIT6.S081学习笔记【一】"

笔记 process 每一个进程有自己私有的用户态内存空间,包括指令、数据、堆栈。 内核会在CPU间调度进程的执行,当一个进程进入“等待”状态时,内核会保存当前进程执行的CPU寄存器数据,当其被唤醒时,会reload保存的数据。内核使用PID来唯一标识一个进程。 fork fork是linux的一个系统调用,fork会创建一个新的进程作为调用者的子进程。fork在父进程中返回子进程...

使用gdb调试golang程序

"使用gdb调试golang程序"

TODO

理解Service Mash

"服务间通信的基础设施"

初识Service Mash Service Mesh 又译作 “服务网格”,作为服务间通信的基础设施层。Buoyant 公司的 CEO Willian Morgan 在他的这篇文章 WHAT’S A Service Mesh? AND WHY DO I NEED ONE? 中解释了什么是 Service Mesh,为什么云原生应用需要 Service Mesh。 下面是 Willian...

TCP连接能发送一个0字节的数据包吗

"网络编程"

TCP连接能发送一个0字节的数据包吗 众所周知,一个TCP连接 send 或 recv 函数返回 0 表示对端关闭了连接。但有人可能认为如果发送 0 字节数据,那么 send 函数也会返回 0,对端会 recv 到 0 字节的数据,事实是这样的吗? 我们来通过一个例子,来看下 send 一个长度为 0 的数据,send 函数的返回值是什么,对端是否会 recv 到 0 字节的数据。 s...

C++右值引用和移动语义

"C++右值引用和移动语义"

C++11引入了右值引用,有一定的理解成本,工作中发现不少同事对右值引用理解不深,认为右值引用性能更高等等。本文从实用角度出发,用尽量通俗易懂的语言讲清左右值引用的原理,性能分析及其应用场景,帮助大家在日常编程中用好右值引用和std::move。 左值和右值 左值可以取地址,可以被赋值,位于等号左边 int a = 5 这里的a就是一个左值,而5就是一个右值 struct...

C++和python函数调用的区别与联系

"C++和python函数调用的区别与联系"

时隔两周,加入字节跳动后的第一篇技术博客 一般方法 类方法 目前对于类方法的调用,各个语言主要有两种方式 (这里所说的显示和隐式的主要是说对于类方法,this指针的声明方式) C++的隐式调用 在C++中,使用操作符.或者->来访问一个类的成员变量或者成员方法。如: class Foo{ public: static void bar(int val){...

C++右值引用和移动语义

"C++右值引用和移动语义"

传统方式 对于一般的网络编程乃至分布式应用或者微服务架构中,各个服务之间的数据通信是少不了的,比如服务端和客户端想要传递一个User的数据结构,通常情况下,我们会先定义一个结构体: struct User{ int id; string name; /*...*/ } 考虑到各个服务的实现和字节序的问题,发送方还要把这个结构体序列化成字节流,接收方收到字节流以...

gRPC介绍

"另一种开源高性能RPC框架"

RPC基本概念 什么是RPC RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务。 如果需要将本地student对象的age+1,可以实现一个addAge()方法,将student对象传入,对年龄进行更新之后返回即可,本地方法调用的函数体通过函数指针来指定。上述操作的过程中,如果addAge()这个方法在服务端,执行函数的函数...

Redis 6.0源码学习

"多线程网络IO模型"

如果让我评选一个最喜欢的C/C++开源项目,那一定是Redis 对于问题“你认为Redis有如此高的性能原因是什么?”在今年上半年你依然可以回答说: 单线程无锁操作 epoll 纯内存 … 但自从Redis 6.0版本发布后,Redis迎来了第一个多线程版本,今天来分析学习一下Redis 6.0版本多线程相关的代码。 redis 6.0 中默认是不启用多线...

分布式系统节点间的数据复制

"分布式系统节点间的数据复制"

“Better code, better life. ” 注意:本文部分内容/图片摘自《数据密集型应用系统设计》 所谓复制,是指在多台通过网络连接的机器上保存相同数据的拷贝。 那为什么需要复制数据呢?主要又以下几点原因: 允许系统在部分节点出现故障后继续工作(增加可用性) 地理上保持数据离用户更近(减少延迟) 扩展可以提供查询的机器数量(增加读吞吐) 复制算...