自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 C++实现分布式网络通信RPC框架

完整的RPC过程如下图:远程调用需传递服务对象、函数方法、函数参数,经序列化成字节流后传给提供服务的服务器,服务器接收到数据后反序列化成服务对象、函数方法、函数参数,并发起本地调用,将响应结果序列化成字节流,发送给调用方,调用方接收到后反序列化得到结果,并传给本地调用。以user.proto中的Login//Login函数的参数{}得到user.pb.cc和user.pb.h,每个message结构体都生成个类。...

2022-08-15 18:51:52 4733 2

原创 C++实现集群聊天服务器

项目是集群聊天工具(项目源代码链接),包括客户端和服务端,功能和QQ或微信类似,包括:注册、登录、加好友、私聊、创建群、加群、群聊等。

2022-08-13 23:09:58 2016 3

原创 muduo库源码分析和总结

陈硕大神的muduo库设计巧,但是难读懂,这里简单做个总结,注意回调函数太多,需仔细研究回调的传递和调用。、,其次陈硕认为网络编程的本质是处理三个半事件,重点关注之连接的建立连接的断开包括主动断开和被动断开消息到达,文件描述符可读消息发送完毕。这个算半个事件。...

2022-08-01 19:06:26 1159

原创 实现简单数据库

众所周知,无论是前端、后端,最终系统数据都会通过数据库系统进行读取和写入等操作,如下图所示,注册数据经过后端服务器最终进入数据库,因此可以认为数据库是系统的核心,特别是一旦涉及到高并发时,数据库可能成为系统的瓶颈,因此数据库的底层有必要深入学习,这里简单总结下基础数据库的底层实现,为后续深入学习数据库打下基础...

2022-07-28 00:14:36 2436

原创 字节青训营第十三课之深入浅出RPC框架的笔记与总结.md

字节青训营第十三课之深入浅出RPC框架的笔记和总结,先从本地函数调用引出RPC的基本概念,接着重点讲解了RPC框架的核心的三层,编解码层、协议层和网络传输层,其次围绕RPC框架的核心指标,例如稳定性、可扩展性和高性能等,展开讲解相关的知识,最后分享了字节跳动高性能RPC框架Kitex的相关实践...

2022-06-30 00:29:24 383 1

原创 字节青训营第十四课之HTTP框架修炼之道的笔记与总结

HTTP协议是最广泛使用的协议之一。本文主要包括HTTP协议、HTTP框架的设计与实现、性能优化、企业实践等,而如何设计与实现一个HTTP框架是本文的重点

2022-06-26 23:37:17 287

原创 字节青训营第五课之设计模式之Database SQL与GORM实践的笔记与总结

导入的database/sql包,它是Go原生的数据库操作的包,定义连接和操作数据库的接口,导入的mysql包则是数据库驱动包,它实现database/sql包中接口定义的方法,用户无需关注底层实现,只需调用接口定义方法,就可使用api和mysql进程进行通信导入sql和driver包,通过传入driver和dsn初始化连接,注意:Open方法只会校验参数语法而非真正建立连接,其次DB引用是并发安全的,并维护空闲连接池,因此Open函数只需调用一次,很少需关闭DB。因此上面的例子将注释掉DB结构体维护所连接

2022-06-23 00:47:08 221

原创 Redis一文全总结

本文详细总结redis基本数据结构、redis对象及使用场景、网络模型、持久化、缓存、集群等知识

2022-06-02 17:59:31 456

原创 字节青训营第三课之高质量编程与性能调优实战的笔记和总结

这是字节青训营第三课:高质量编程与性能调优实战的笔记和总结概要准备尝试使用 test 命令,编写并运行简单测试尝试使用 -bench参数,对函数进行性能测试推荐阅读Go代码Review建议、Uber的Go编码规范高质量编程简介高质量编程简言之就是代码达到正确、可靠、简洁清晰的目标:正确性:考虑各种边界条件,错误的调用正确处理可靠性:异常或错误处理策略保障依赖的服务出现异常能够处理简洁:逻辑简单,后续调整或新增功能能快速支持清晰:代码易于阅读理解,重构或修改功能不易出问题编程原

2022-05-16 16:34:57 483

原创 字节青训营第四课之高性能Go语言发行版优化与落地实践的笔记和总结

这是字节青训营的第四课:高性能Go语言发行版优化与落地实践的笔记和总结概览本节课主要介绍性能优化和实践,性能优化包括自动内存管理、Go内存管理及优化、编译器与静态分析、编译器优化,实践包括字节内部的Balanced GC优化对象分配以及编译器优化Beast mode性能优化的基本问题性能优化是什么?提升软件系统处理能力,减少不必要消耗,充分发掘计算机性能为什么要做性能优化?提升用户体验:让刷抖音更丝滑不卡顿高效利用资源:降低成本提高效率,小优化乘海量机器也会显著节约成本性能优化

2022-05-15 16:22:16 580

原创 字节青训营第二课之工程实践的笔记和总结

这是字节青训营的第二课:工程实践的笔记和总结1语言进阶并发go可以充分发挥多核优势,高效运行,介绍原理之前,先介绍几个概念:并发:单CPU同时间段切换交错执行多任务并发:多CPU同时刻都运行任务进程:资源管理的最小单位,进程虚拟地址空间分成用户和内核空间线程:资源调度最小单位,再内核态,共享进程中的资源,比进程轻量级协程:再用户态的轻量级线程,调度和切换都在用户态,因此高效goroutinego中的协程goroutine使用简单,只需在调用函数(普通或匿名函数)前加go关键字,没有

2022-05-10 13:01:43 739

原创 字节青训营第一课之go语言入门的笔记和总结

1Go语言简介由于Go语言有语法简单、高性能等特点,因此国内外各大公司如谷歌、腾讯、字节等都在使用,特别是字节全面拥抱Go,原因是最初因性能问题将Python换成Go,而Go学习简单,性能高,且部署简单。总的来说Go语言特性如下:语法简单、学习曲线平缓高性能、高并发丰富的标准库完善的工具链静态链接快速编译跨平台垃圾回收个人而言,因我是C++出身,对C++复杂的语法感到麻木,因此特别喜欢Go语法简单、上手快的特点,几小时就能上手,再加上Go天生高并发,有

2022-05-09 22:26:43 1144

原创 简单红黑树入门

定义和性质红黑树是种平衡二叉搜索树,是特化的AVL树,查找和二叉搜索树无异,但在插入和删除时通过调整保持二叉搜索树的平衡,相对于AVL树,牺牲部分平衡性以换取插入/删除操作时少量的旋转操作,整体来说性能要优于AVL树。可在O(logn)内查找、插入和删除,因此应用非常广泛,非常重要。红黑树必须满足以下性质:每个结点要么是黑色,要么是红色。根结点是黑色。每个叶子结点(NIL)是黑色。每个红结点的两个子结点一定是黑色。(即不能连续红色,红结点定被黑父子相连)任意一结点到每个叶子

2022-04-27 00:09:13 245

原创 C++实现简单线程池

C++实现简易线程池

2022-04-11 23:15:01 5901 5

原创 通过汇编深入理解C++语言

最近整理印象笔记的笔记,找到以前在深信服做病毒逆向分析时的笔记,总结分享下,算是比较好的入门汇编的材料,强烈建议想掌握C和C++本质的同学,动手写些简单的例子代码,再Debug模式下(注意不要用Release模式,因为很多细节会被优化掉),**对照源码看汇编代码,能让你对C和C++有更本质的认识**,另外建议先看懂CSAPP中的汇编入门章节,再来看我的博客比较好。

2022-04-09 23:00:59 1850

原创 csapp之第八章:异常控制流

异常控制流(ECF)发生在系统各层次,是系统提供并发的基本机制:包括硬件层的四种类型异常、操作系统层提供进程基本概念和两个重要抽象、操作系统和程序之间的接口、应用层非本地跳转。

2022-04-09 21:39:06 841

原创 csapp之第11章:网络IO.md

现今网络应用随处可见,有趣的是,所有的网络应用都基于相同的基本编程模型,有相似的整体逻辑结构、依赖相同的编程接口。大多数网络应用程序都基于客户端-服务器模型,一服务器进程和一或多客户端进程(客户端和服务器是进程而不是机器或主机,这点很重要),服务器管理资源,服务器为客户端提供服务,由客户端请求服务器。总的来说四步:请求、操作、响应、处理。客户端进程发送请求给

2022-02-25 20:33:10 804

原创 csapp之第10章:系统级I⁄O

了解Unix I/O将帮助理解其他系统概念。I/O是系统操作不可或缺的部分,因此经常遇到I/O和其他系统概念之间的循环依赖有时必须用Unix I/O,用高级I/O不太可能或不合适,如标准I/O库没提供读取文件元数据的方式,此外I/O库存在一些问题1. Unix I/O输入/输出(I/O)是主存和外部设备之间复制数据的过程,在 Linux 中,文件就是字节的序列。所有的 I/O 设备(如网络、内核、磁盘和终端等)都被模

2022-02-08 21:50:27 616

原创 虚拟内存

系统中的进程与其他进程共享CPU和主存。首先进程多需要的内存也多,其次内存易被破坏,如进程A不小心写入进程B使用的内存。为更有效管理内存且少出错,系统提供对主存的抽象概念叫虚拟内存。虚拟内存是硬件异常、硬件地址翻译、主存、磁盘文件和内核的完美交互,为每个进程提供大的、一致的和私有的地址空间,虚拟内存提供三个重要能力:使用主存更有效率:用 DRAM 作为部分的虚拟地址空间的缓存简化内存管理:每个进程都有统一的线性地址空间隔离地址空间:进程间不会相互影响;用户程序不能访问内核信息和代码1 地址空间

2022-02-03 08:22:04 1528

原创 csapp之lab:shell lab

shell lab主要目的是为了熟悉进程控制和信号

2022-02-02 14:37:03 4808 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除