gonaYet
码龄8年
  • 337,584
    被访问
  • 142
    原创
  • 401,436
    排名
  • 23
    粉丝
关注
提问 私信
  • 加入CSDN时间: 2014-06-03
博客简介:

gonaYet的博客

查看详细资料
  • 2
    领奖
    总分 170 当月 0
个人成就
  • 获得67次点赞
  • 内容获得12次评论
  • 获得139次收藏
创作历程
  • 2篇
    2021年
  • 1篇
    2020年
  • 32篇
    2018年
  • 69篇
    2017年
  • 153篇
    2016年
成就勋章
TA的专栏
  • 语言_cc++
    121篇
  • 语言_java
    18篇
  • 语言_汇编
    7篇
  • 数据库_备忘录
  • 数据库_mysql
    5篇
  • kv数据库_redis
    11篇
  • rpc_thrift
    2篇
  • 并行计算_cuda
    19篇
  • web容器_tomcat
    1篇
  • 操作系统_
    1篇
  • 操作系统_linux
    145篇
  • 操作系统_linux内核
    3篇
  • 图形学_opengldirectx
    2篇
  • 管理工具_docker
    1篇
  • 管理工具_git
    3篇
  • 管理工具_maven
  • 协同工作_
    1篇
  • 网络编程_
    7篇
  • 分布式_
  • 其他_中文切词
    1篇
  • 其他_加密解密
    1篇
  • 其他_search
    1篇
  • 其他_restful
    1篇
  • 其他_jsr-rs
    1篇
  • 分布式_zookeeper
    1篇
  • 语言_python
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

[redis] sentinel

要点:1.sentinel 为redis哨兵,其与redis公用一个代码2.sentinel有主观认为master挂掉sdown,和当有多少个sentinel认为master挂掉后的客观挂掉odown3.odown发生后,进入failover,会进行master选举,这里当大多数sentinel认为某个slave可以充当master的时候,会进行切换4.slave的发送通过mast...
原创
发布博客 2021.09.09 ·
18 阅读 ·
0 点赞 ·
0 评论

[c/c++] tcmalloc大空闲内存不释放问题

一、现象1.线上服务(内存分配采用tcmalloc)出现瞬时内存上涨的情况(如按G级别上涨),且长时间不释放内存。二、问题定位1.确定内存是泄漏还是tcmalloc的空闲内存(我这边的是空闲内存,并不是内存泄漏)1)可以通过增加代码,支持打印tcmalloc内存分配统计信息。 char* stats_buffer = new char[4096]; MallocExtension::instance()->GetStats(stats_buffer, 409..
原创
发布博客 2021.07.22 ·
1370 阅读 ·
0 点赞 ·
0 评论

[qemu] 桥接模式,ifconfig -a只有lo本地网卡

一、现象1.按照网上的教程,编译linux内核,编译qemu,编译busybox2.主机建立桥接br0,对应的两个port,tap0和eth03.qemu启动,使用tap0进行桥接网络配置,一般启动方式:qemu-system-x86_64 -m 1024M --kernel linux-4.4.216/arch/x86/boot/bzImage -hda ./ext4_root...
原创
发布博客 2020.03.19 ·
1019 阅读 ·
0 点赞 ·
0 评论

[linux_内核相关] x86_64下进程切换schedule理解

一、背景schedule作为内核进程切换的入口,用于选择一个新的进程进行调度。 二、函数内部重要方法schedule     |---------->__schedule(false)                                |---------------->pick_next_task(进程选择策略,从中选择一个的进程)      ...
原创
发布博客 2018.11.19 ·
634 阅读 ·
1 点赞 ·
0 评论

[linux_内核相关] 自制启动x86_64架构下的linux(qemu+grub2+busybox+vmlinuz+登录配置+网络配置)

 一、名词说明qemu:虚拟机,用于模拟某种机器的物理架构,这样我们可以模拟从开机加电到最后的操作系统的启动grub2:bootloader,用于加载linux内核(vmlinuz)和initrd(ram disk,内存文件系统)busybox:用于制作最终的根文件系统(rootfs),也就是我们在ubuntu等发行版操作系统下的根目录/ram disk(initrd, ini...
原创
发布博客 2018.10.23 ·
3355 阅读 ·
8 点赞 ·
0 评论

[linux] x86_64, 线程栈如何分配的

一、背景我们知道一个进程的空间地址可以大致划分为代码区(text)、只读数据区(rodata)、初始化数据区(data)、为初始化数据区(bss)、堆(heap)、共享内存区(.so,mmap的地方)、栈(stack)、内核区(kernel)。堆:自底向上增长栈:自顶向下增长其中这里的栈可以说成是进程栈(或者是主线程栈),但是当主进程(主线程)之外创建了新的子线程,我们都知道线...
原创
发布博客 2018.09.10 ·
1470 阅读 ·
5 点赞 ·
0 评论

[redis] crc16

一、背景redis集群使用哈希槽实现,其对key进行哈希计算采用crc16(key) & 0x3fff,得到在16384个槽的其中一个,每个槽对应一个redis节点,如果为当前节点则执行请求,否则返回重定向节点操作 二、crc16如下图,redis的实现:/* CRC16 implementation according to CCITT standards. *...
转载
发布博客 2018.09.05 ·
1514 阅读 ·
0 点赞 ·
0 评论

[linux] mmap内存映射

一、要点1. 内存布局,代码段-数据段[data,bss]-堆-内存映射区-栈-内核区2.经实践,内存映射区(linux x86-64 4.4.0-117-generic)自顶向下 3.按需调页,当访问一个虚拟地址,发生缺页错误后,会进行按需调页,如果合法,分配物理内存,文件内容填充数据4.匿名内存映射,不需要文件,即分配物理内存不需要物理文件数据填充5.write on co...
原创
发布博客 2018.08.21 ·
111 阅读 ·
0 点赞 ·
0 评论

[c/c++] linux下变量和函数的动态链接说明

一、简要背景1.linux平台,64位2.使用.so文件,动态绑定3.说明基于elf文件elf(可执行和链接格式文件),即其有两种视图,一个是执行视图(也可以叫程序加载视图,用于将文件加载到内存中并可以执行的视图)图右。另一个是链接视图,用于给链接器在链接阶段使用,图左。如图: 二、例子fun.h#ifndef _FUN_H_#define _FUN_H_...
原创
发布博客 2018.08.20 ·
300 阅读 ·
1 点赞 ·
0 评论

[linux] xargs

一、描述    xargs - build and execute command lines from standard input    将标准输入的数据建立成命令行模式二、例子find ./ -type f | xargs则会将当前目录下的所有文件,形成命令行的参数find ./ -type f | xargs grep keyword --color1.grep keyword files...
原创
发布博客 2018.05.22 ·
84 阅读 ·
0 点赞 ·
0 评论

[linux] diff和patch

链接:https://www.cnblogs.com/cocowool/p/6409643.htmlLinux中的Diff和Patch本文主要记录两个命令的学习情况:diff 和 patch。diff 和 patch 是一对工具,使用这对工具可以获取更新文件与历史文件的差异,并将更新应用到历史文件上。在数学上说,diff就是对两个集合的差运算,patch就是对两个集
转载
发布博客 2018.05.03 ·
140 阅读 ·
0 点赞 ·
0 评论

[redis] 内存淘汰策略

一、描述redis默认是没有设置maxmemory字段的,maxmemory为redis进程的最大内存,单位字节二、maxmemory-policy当设置了maxmemory字段的时候,即限制了进程的内存大小,那么当redis的存储数据量大于该设置值后,便需要想办法将redis中的数据删除,以空出空间来保存新的存储需求三、参数maxmeory-policy有
原创
发布博客 2018.04.22 ·
598 阅读 ·
0 点赞 ·
0 评论

[zookeeper] zab协议

一、描述zab(ZooKeeper Atomic Broadcast原子消息广播协议),是zookeeper一致性协议,zab协议主要包括两种模式,消息广播和奔溃恢复二、角色zookeeper中主要的两种角色,leader和follower,这两种角色都有投票权三、消息广播1.follower收到prosoal等写事务的提议2.follower会发送给lea
原创
发布博客 2018.04.15 ·
143 阅读 ·
0 点赞 ·
0 评论

[redis] rdb-dump.rdb

一、描述rdb(redis databses)redis的其中一个持久化数据方式(默认),是rdb模式,简单说就是会再一定的触发条件下,会启动子进程生成dump.rdb(快照文件)二、源码解析2.1 src/rdb.c:rdbSaveBackground代码逻辑:1.fork(),创建出子进程2.子进程调用rdbSave函数,完成实际的dump操作
原创
发布博客 2018.04.14 ·
1685 阅读 ·
0 点赞 ·
0 评论

[redis] zset数据结构

一、描述redis其中一个数据结构为zset(sorted set-有序集合),其主要作用用于排行榜实现,你可以获取排名第几到第几的数据二、数据结构sorted set-有序集合在redis中有两种实现1.ziplist,压缩双向链表,相关链接2.skiplist,跳表实现三、skiplist数据结构score:分值,用于排序backward
原创
发布博客 2018.04.14 ·
10491 阅读 ·
1 点赞 ·
0 评论

[redis] set数据结构

一、描述redis的一个类型set(集合)二、redis其内部实现1:hashmap(hash table)散列表实现,key=value,  value=null即可,散列表相关链接2:intset-可以理解为正数有序数组三、intset的数据结构定义contents:字节数组,其可以有16bit,32bit,64bit编码成整数的方式enco
原创
发布博客 2018.04.12 ·
619 阅读 ·
0 点赞 ·
0 评论

[redis] list数据结构

一、描述redis的一个数据结构为list(双向列表)二、数据结构定义struct quicklistNode *prev;struct quicklistNode *next;从prev和next都是当前该数据结构quicklistNode的定义,再查看其他数据如sz,count等都不能表示存放的数据,因此实际quicklistNode的数据存储功能是交由zi
原创
发布博客 2018.04.12 ·
232 阅读 ·
0 点赞 ·
0 评论

[redis] hashmap数据结构

一、描述
原创
发布博客 2018.04.12 ·
3517 阅读 ·
0 点赞 ·
0 评论

[redis] ziplist-压缩双向链表

redis ziplist-压缩双向链表
原创
发布博客 2018.04.12 ·
1815 阅读 ·
0 点赞 ·
0 评论

[redis] linux下网络处理模块

一、描述1.linux下redis默认才用epoll来完成io的多路复用,将当前需要监听的io事件交由操作系统来完成。当有相应关注的io事件到来的时候,操作系统则会通知用户程序相关的信息,这样即使采用单线程也能监听多个io事件。2.采用单线程来处理网络请求,除了1的epoll外,还有两个原因:2.1 redis的数据结构是基于内存来实现的,因此其效率极高,即使单线程也能得到很高
原创
发布博客 2018.04.09 ·
459 阅读 ·
1 点赞 ·
0 评论
加载更多