自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(223)
  • 资源 (2)
  • 收藏
  • 关注

原创 gRPC-Go源码解读三 服务端处理流程分析

子协程主要工作就是处理HTTP2 Frame,当收到Header Frame后则根据Header头中携带的path域找到对应Client请求的服务名和方法名,然后从grpcServer中查找程序启动时注册的服务,找到则处理,找不到则返回一个错误消息是"unknown service" 或者"unknown method" Header Frame,关于传输层其它部分的处理(如http2初始化、流量控制、数据读写等)可以参考前面几篇博文。整个过程不涉及服务发现和负载均衡,因此代码相对简洁。

2023-04-18 15:14:56 657 1

原创 gRPC-Go源码解读一 客户端请求链路分析

gRPC Client请求流程

2023-04-17 16:35:05 401

原创 gRPC 四种RPC类型异同

Unary RPC & Streaming RPC

2023-04-15 13:48:19 1012

原创 gRPC-Go源码解读二 传输层数据处理流程

gRPC 传输层处理

2023-04-14 17:17:33 796

翻译 HTTP/2和Protobuf是如何为gRPC铺平道路的?

gRPC HTTP2 ProtoBuf

2023-04-12 17:09:02 207

翻译 最大化Linux中的TCP吞吐量:理解和调优发送和接收缓冲区

TCP发送和接收缓存

2023-04-12 08:32:21 4477 3

翻译 Protobuf 是啥以及为啥要用它

Protobuf 介绍

2023-03-08 19:30:00 1014

原创 Redis 高可扩展

Redis高可扩展

2023-02-27 21:38:46 290

原创 Redis 高可用

Redis高可用

2023-02-22 22:16:49 969

原创 Redis 持久化

Redis持久化方式

2023-02-11 15:54:16 859

原创 Golang Context源码解析

Golang Context包源码解读

2022-08-25 13:41:18 648

原创 分享链接的结构化展示

URL 结构化解析

2022-07-17 15:55:52 454

原创 Redis 有序集合(zset)取交集(zinterstore)操作耗时测试

取交集的场景很多,比如公众号文章显示有多少个好友已读,又或者群聊成员列表显示有多少个好友已经入群。最近遇到一个类似场景,一开始的觉得线上数据量较大,redis 取交集操作时间复杂度在O(N),实时计算会不会不合适?是否离线计算更好?请教了组内资深大佬,大佬说数据量不大的情况下redis计算挺快的。听了之后感觉需要实际测试一下,不然贸然上线心里没底。下面是测试流程,有需要的同学可以参考下。 假定测试目标是统计在线用户中付费用户数量,测试结果如下图,先说结论:耗时和数据集大小...

2021-09-19 20:58:26 1989

原创 Linux JQ 命令学习笔记

JQ是一个命令行工具,主要用于处理json文本。语法很简单,如下:jq [options...] filter [files...] JQ可以对json文本执行多种操作,包括选择、遍历、删减等等。例如jq ´map(.price) | add´ 表示遍历输入的数组,并将其中每个元素的price累加起来。默认情况下,jq从stdin中读取json数据流,多个数据流使用空格分隔。还有一些命令行参数,主要用于控制输出和输出的格式,filter是jq语言编写的,主要用于操作...

2021-08-15 11:44:00 1892

原创 Win10 使用minikube搭建k8s集群 并运行hello-minikube实例

这篇文章记录了minikube 搭建集群并运行hello-minikube实例的过程。整个流程完全参考官方教程(https://minikube.sigs.k8s.io/docs/handbook/controls/);在开始之前需要先安装好minikube和kubectl,安装比较简单,直接参考官方文档即可:1. minikubehttps://minikube.sigs.k8s.io/docs/start/2. kubectlhttps://kubernetes.io...

2021-07-10 11:33:44 750

原创 页表是啥以及为啥多级页表能够节省空间

简单的说,页表就是一个存储物理页地址的表,我们知道,现在的程序使用的都是虚拟内存,CPU在取指令或者取数据的时候使用的是虚拟地址,为了能够从内存中取得数据,需要将虚拟地址转换为物理地址...

2021-06-06 09:53:19 5376

原创 InnoDB & MySQL 全文索引 学习笔记

最近在学习MySQL全文索引的知识,基本搞清了功能以及使用方式,整理了相关资料分享出来一起学习进步哈全文检索(Full-Text Search)是将存储于数据库中的整本书或整篇文章中的任意内容信息查找出来的技术。它可以根据需要获得全文中有关章、节、段、句、词等信息,也可以进行各种统计和分析。1. 倒排索引在老版本的MySQL数据库中,InnoDB存储引擎并不支持全文检索技术,从InnoDB 1.2.x版本开始,InnoDB存储引擎开始支持全文检索,其支持MyISAM存储引擎的全部功能,并且还支持

2020-11-01 02:24:04 1153

原创 中文按拼音首字母排序的C++实现方案

C++ 中文转拼音 示例

2020-08-29 15:06:49 6354

原创 mysql 慢查询 定位过程,和order by有关

mysql 慢查询 定位过程,和order by有关

2020-08-15 10:11:59 323

原创 Linux进程间通信六 Posix 共享内存简介与示例

1. 共享内存简介共享内存主要用于不同进程之间相互通信,因为操作的是同一块地址,不需要内核和用户层之间数据拷贝,属于最快的进程间通信方式,不过,为了防止读写冲突,一般需要额外的同步手段。之前介绍了SystemV共享内存的使用方式,今天介绍下Posix共享内存。Posix 共享内存API主要有这几个,shm_open,用于获取或者创建一个共享内存文件描述符,ftruncate,用于设置共享内存的大小,新建的共享内存大小为0,mmap,用于将共享内存文件映射到进程的虚拟地址空间,其实共享内存真正核心的工作主

2020-07-04 15:50:12 1073

原创 Linux进程间通信五 Posix 信号量简介与示例

信号量用于进程或线程间同步,Posix信号量是一个非负整型,只有两种操作,加一(sem_post)和减一(sem_wait),如果信号量值为0,sem_wait默认阻塞。Posix信号量有两种,有名信号量和无名信号量,顾名思义,就是是否有名字。有名信号量有一个名字,长度不超过NAME_MAX-4(i.e. 251),因为内核会默认加上'sem.',所以这里要减4,名字以斜杠开头'/',后面跟上一个或多个非斜杠字符。不同进程可以通过同一个名字来操作有名信号量,sem_open用于创建或者获取已存在的信号量

2020-07-04 15:49:28 4484

原创 Linux进程间通信四 Posix 消息队列简介与示例

1. 读取的时候,buffer要足够大。2. 需要手动mount看数据。3. 优先级队列,可以获取优先级参考文档https://www.man7.org/linux/man-pages/man7/mq_overview.7.html

2020-07-04 11:49:59 4619

原创 Linux进程间通信三 System V 信号量简介与示例

提纲1. System V信号量简介2. 接口介绍3. 编程实例4. 开发注意事项

2020-06-26 14:28:32 415

原创 Linux进程间通信二 System V 消息队列简介与示例

1. SystemV消息队列简介2. API接口2. 1 创建或获取消息队列ID#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>/*** @brief 创建或获取消息队列ID** @params key 标识符,整形变量,三种方式,固定值,IPC_PRIVATE,ftok生成* @params msgflg,标志位,IPC_CREAT and IPC_EXCL.

2020-06-21 16:28:10 564

原创 Linux进程间通信一 System V 共享内存简介与示例

提纲:System V简介共享内存简介API介绍1. 创建system v共享内存#include <sys/ipc.h>#include <sys/shm.h>/*** @brief 创建共享内存ID** @params key 与shm_id关联的key* @params size 共享内存的大小* @params shmflg 标志位和权限控制标志位,可以多个用or运算。IPC_PRIVATE、IPC_CREAT、 IPC_EXCL*.

2020-06-06 17:59:11 766

原创 OSError: Cannot initialize new instance of inotify, Errno=Too many open files (EMFILE) 问题解决

自己的模块需要监控指定目录,因为要监控的目录过多,创建了很多WatchManager实例,结果报错,提示打开太多文件。Google了一下,有提示说修改配置的//查看cat /proc/sys/fs/inotify/max_user_instances// 扩大数量echo 256 > /proc/sys/fs/inotify/max_user_instances其实inot...

2020-03-15 09:29:52 1184 1

原创 Python logging动态调整日志等级

如果是root logger,可以直接调用setLevel调节 logger = logging.getLogger() logger.setLevel(level)如果要调整handler可以像下面这样: level = logging.DEBUG logger = logging.getLogger() for handler in logger.handlers:...

2020-02-24 21:20:47 3207

原创 Linux MySQL Connector/C++ 编程实例

本篇文章介绍如何在Linux平台使用Connector/C++ 连接数据库,假定MySQL已经安装完成。如果还没有安装MySQL,请先安装。MySQL版本:8.0.19目录1. 安装Connector/C++2. 编写代码3. 创建数据库4. 可能遇到的编译问题解决方案参考文档:示例是一个图书馆管理系统,拥有添加、删除、修改、查询功能。先看下实现效果图:在看...

2020-02-03 19:08:32 1376 1

原创 curd boy 入门

CURD Boy的最基础的MySQL操作,学会了,你就是夜空中最亮的仔O(∩_∩)O哈哈~目录1. 数据库操作2. 基础数据类型3. 表操作4. 行操作5. 列操作6. 插入操作7. 查询操作8. 修改操作9. MySQL注意事项1. 数据库操作>>>>>>>>>>>>>&...

2019-12-21 23:22:01 3135

原创 vscode Downloading package ‘C/C++ language components (Windows)‘ Failed.问题解决

vscode打开项目后无法使用代码跳转等功能,然后提示一堆错误: Downloading package 'C/C++ language components (Windows)' Failed. Retrying... Failed. Retrying...下载错误,自动重试多次还是不行。因为网络原因。怀疑无法跳转可能和这个问题相关,Google了一下,网上看到一篇文章,说是可以手动下...

2019-12-08 21:15:01 15175 6

原创 vscode remote ssh 远程开发免密登陆方法

使用vscode远程插件remote-ssh可以在本地直接编辑服务器代码,使用非常方便。但是,每次打开的时候都需要手动输入密码,非常繁琐,Google了一个免密登录的方法,使用ssh-keygen -t rsa 在本地用户目录下.ssh生成一对密钥,id_rsa和id_rsa.pub。如果本地目录已经有该文件则不用在重新生成。然后把公钥id_rsa.pub的内容追加到服务器/home/.ssh...

2019-12-08 21:03:53 13013

原创 Linux 性能分析工具总结

介绍下日常开发使用的分析工具,如有新的,请在评论中指出。一. gprof,打印出程序运行中各个函数消耗的时间,可以帮助程序员找出众多函数中耗时最多的函数。使用过程简单,只需三个步骤。使用-pg编译、链接选项开启分析功能。 执行程序,会在当前目录生成gmon.out文件。 使用gprof处理gmon.out得到分析文件。例子://使用-pg选项编译、链接gcc -o gprof...

2019-11-10 16:11:50 361

原创 memcpy的优化方案

面经2019

2019-11-10 12:13:23 1757 3

原创 2019 腾讯社招后台开发六面面经

面经2019

2019-10-30 17:53:53 425

原创 2019 社招腾讯后台开发总结三 编程语言篇

面经2019

2019-10-30 17:52:04 128

原创 冒泡排序 c代码

冒泡排序是不是排序算法的鼻祖呢?应该是。即便是没学过算法的小学生,你让他正序排列一串数字,估计他的思路就是冒泡排序。冒泡排序的时间复杂度为O(n^2),和普通的插入排序一样,要说区别吧,可能是冒泡排序是将数字从后往前插入,插入排序是从前往后插。普通场景下需要排序搞个冒泡就解决了,除非数量级特别大,不然杀鸡焉用牛刀。冒泡排序思想就是数据集中两两比较,找到最大的放到最后,然后重新来一遍,找到次最大...

2019-10-30 17:36:07 318

原创 动态规划 dp01 西瓜分堆问题 c代码

先看下题目:已知14个西瓜 的重量,分别为:23 21 12 19 18 25 20 22 16 19 12 15 17 14请将这些瓜分成两堆,每堆的个数不限,使两堆西瓜重量之差最小。我们知道,动态规划类问题是存在明确的步骤的:1. 分阶段。2. 状态迁移方程。3. 求最优解。这道题要把西瓜分成两堆,假设A堆和B堆,对于每个西瓜而言,要么分到A,要么分到B,和01背...

2019-10-30 17:35:59 2154

原创 《剑指offer》c++版本 8.二叉树的下一个结点

如题:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。这道题目考察对二叉树中序遍历的理解,做题的时候,如果没有思路,简单画画图,可以帮助理解。上图没有画出指向父节点的指针,不过,不妨碍分析问题。已知节点,求中序遍历后一个节点。如果节点存在右子树,显然,后一个节点位于右子树上最左边位置,递归...

2019-10-30 17:35:44 250

原创 2019 社招腾讯后台开发总结一 操作系统篇

面经2019

2019-10-30 17:32:11 120

原创 leetcode 450. 删除二叉搜索树中的节点 c语言实现

如题:给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7]key = ...

2019-10-30 17:31:15 723

IPv6分片报文

IPv6分片报文,研究 IPv6协议扩展头部的时候可以使用。

2018-07-21

IPv6 UDP报文,

IPv6报文,分析IPv6报文的格式、构成等。希望有帮助。本来不想要分的,拿出来有人需要就看一下

2018-07-03

空空如也

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

TA关注的人

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