haha and giraffe
码龄9年
关注
提问 私信
  • 博客:43,761
    43,761
    总访问量
  • 78
    原创
  • 2,343,132
    排名
  • 20
    粉丝
  • 0
    铁粉

个人简介:一只努力的长颈鹿

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2016-04-23
博客简介:

haha与长颈鹿的博客

查看详细资料
个人成就
  • 获得29次点赞
  • 内容获得5次评论
  • 获得75次收藏
创作历程
  • 2篇
    2020年
  • 44篇
    2019年
  • 37篇
    2018年
成就勋章
TA的专栏
  • 剑指offer刷题专栏
    13篇
  • Distributed System
    1篇
  • Redis
    6篇
  • LevelDB
    5篇
  • CUDA
    2篇
  • machine learning
    1篇
  • Thinking
    1篇
  • Algorithm
    14篇
  • C++
    13篇
  • Network Programming
    9篇
  • Linux
    16篇
  • Git
    1篇
  • Data Structures
    3篇
  • docker
  • Mysql
    3篇
  • Server
    6篇
兴趣领域 设置
  • 大数据
    mysql
  • 服务器
    linux
创作活动更多

仓颉编程语言体验有奖征文

仓颉编程语言官网已上线,提供版本下载、在线运行、文档体验等功能。为鼓励更多开发者探索仓颉编程语言,现诚邀各位开发者通过官网在线体验/下载使用,参与仓颉体验有奖征文活动。

368人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

c++云风coroutine库解析

云风coroutine库是一个C语言实现的轻量级协程库,源码简洁易懂,可以说是了(ru)解(keng)协程原理的最好源码资源。我在之前的文章中,借助腾讯开源的libco,对C/C++的协程实现有了一个简单介绍,参考博客。其实libco和云风coroutine有很多相似的思想,只不过实现的方式不同而已,云风库只是提供了一种实现思路,并没有对hook进行处理,而libco则是工业级的协程库实现。通过...
原创
发布博客 2020.05.05 ·
761 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

6.824分布式系统学习笔记

Lecture 1:Introduction为什么需要分布式系统?并行,多机能提供解决问题效率容错,多机器可以有效降低系统出错概率,当一台机器宕机后,另一台机器依旧能工作解除物理限制,分布在多地的机器能相互通信安全性与隔离性,labMapReduceRaft协议K/V servershared K/V servicePerformance --Scalability可...
原创
发布博客 2020.02.29 ·
708 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

HTTP知识总结

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是一个用于web的客户端与服务器之间的交互协议。其在TCP/IP协议栈中处于应用层,与其相关的还有DNS(域名与IP之间的转换协议)、TCP(传输层协议)、IP(网络层协议)。目前主流的版本是HTTP/1.1,同时HTTP/2.0也在推广。
原创
发布博客 2019.12.13 ·
338 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

深入理解数据结构——红黑树

本篇文章深入讲述红黑树的原理与实现。红黑树是一个非常重要的数据结构,也是面试中的常考知识点。其本质上是一个平衡搜索树,可是其“平衡”的条件和AVL树不同。在深入了解红黑树之前要先熟悉平衡搜索树的相关知识,这里就不再介绍。
原创
发布博客 2019.12.04 ·
267 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

#include " *.c / *.cpp "源文件的理解和使用

今天在看redis源码的时候,ae库中为了跨平台式多路复用的实现,运用了如下代码。/* Include the best multiplexing layer supported by this system. * The following should be ordered by performances, descending. */#ifdef HAVE_EVPORT#includ...
原创
发布博客 2019.11.18 ·
1297 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Redis中的事件管理

Redis中的很重要的一部分是对于事件的管理,ae事件库的最大特点就是简洁明了并高效。本章将重点放在Redis对于事件的处理过程。Redis事件事件调度过程...
原创
发布博客 2019.11.18 ·
196 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Redis中的持久化策略——RDB与AOF

之前叙述了Redis中的数据库键值对存储方式以及键过期策略。本篇文章将着重介绍一下Redis中的数据持久化策略,这也是Redis中的重中之重。
原创
发布博客 2019.11.14 ·
367 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

Redis中的键空间与键过期

本章主要来介绍一下Redis的数据库对象,主要关注Redis对于存储在服务器中的键值对数据如何进行管理。
原创
发布博客 2019.11.13 ·
443 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Redis的对象及命令

上一章讲解了Redis中的数据结构,这一章对Redis中的对象做详细介绍。Redis中对象Redis中有五大对象,分别是:字符串对象,列表对象,哈希对象,集合对象,有序集合对象。...
原创
发布博客 2019.11.07 ·
1043 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Redis的数据结构

之前简单介绍了Redis的特点和基本命令。这一章将着重于Redis的对象。相比于Memcached,Redis丰富的对象类型是一个非常重要的特点,每个对象又有两种以上的编码方式,这在对数据进行管理的时候提供了很大的便捷性,由于其是一个内存型数据库,内存的空间十分有限,不同的编码方式优化了数据存储时候的空间。Redis中的数据结构Redis中的数据结构十分丰富,主要包括一下六种,SDS,list...
原创
发布博客 2019.11.06 ·
170 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Redis初识与配置

最近在了解Nosql的具体实现,redis作为KV数据库的重要成员,怎么能遗忘他呢。本篇文章对其特性做一些介绍,以后有时间对其底层做详细分析。Redis简介Redis是一个存储key-value对的内存型数据库,也就是说对其的基本增删改查等操作都是对内存中的数据进行(当然其也有持久化策略),由于这个原因,其读写性能相对于mysql等关系型数据库有很大的提升。其特点如下:1....
原创
发布博客 2019.11.03 ·
159 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

LevelDB源码解读——Compaction和VersionEdit

前面几篇简单介绍了LevelDB中的数据结构和存储方式(log、MemTable、sstable)。这一章节来解读一下LevelDB最核心的内容——合并操作与版本控制。Compaction按照LevelDB的框架思路,Compaction有两种使用方式,一种是MemTable -> Level0 ,称为Minor Com-paction,另一种是Level0 -> Level1,称...
原创
发布博客 2019.10.29 ·
423 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LevelDB源码解读——MemTable和sstable

在前几章中,我们已经熟悉了LevelDB中的创建、读数据、写数据等基本操作,现在应该仔细来看看存储数据的结构体了,一开始我们已经看了skiplist的实现,其实MemTable中基本上就是依靠skiplist来实现的。MemTable是在内存中的数据存储结构,一些基本的读取操作都是会先对其做操作,而sstable则是磁盘上的存储结构。MemTableMemTable的结构较为简单。对其的get...
原创
发布博客 2019.10.27 ·
1190 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

LevelDB源码解读——数据库开启、读取与存入

本章主要介绍对LevelDB基础操作Open,Put,Get等操作,熟悉具体的数据读写处理流程。
原创
发布博客 2019.10.24 ·
514 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LevelDB源码解读——Log日志文件

日志文件是LevelDB架构中最重要的一个部分,由于LSM-Tree是将写入的数据先存放在内存中的Memtable, 当到达临界时,就将其变成只读Immutable Memtable,随后后台进程将其flush到磁盘上sstable,如果在这个过程中系统发生错误,内存中的数据就会受到破坏,这时候就需要日志文件进行恢复。LevelDB在将数据写入内存的时候就会将其记录在日志文件中。日志格式每一条...
原创
发布博客 2019.10.22 ·
627 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LevelDB源码解读——简介及数据结构

久闻LevelDB大名,由于课程需要,借助此次机会对levelDB源码的几个主要模块进行解读,同时加强对c++的理解。LevelDB简介LevelDB是一个google开源的持久型K-V数据存储引擎,是一个很好的c++学习源码。LevelDB的主要特点在于其写性能十分优秀(在牺牲了部分读性能的前提下),这也是LSM-Tree的主要特性之一。LevelDB的安装这里不再叙述,详见LevelDB...
原创
发布博客 2019.10.19 ·
1228 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

Nginx基础流程与启动过程解析

最近在学习nginx源码,由于时间有限,主要看主体逻辑流程,事件模块,HTTP模块等重要模块。本章首先对nginx启动过程做详细分析。nginx架构设计理念nginx启动过程概述master进程worker进程...
原创
发布博客 2019.10.12 ·
633 阅读 ·
1 点赞 ·
0 评论 ·
7 收藏

C++协程概述

本篇文章记录了,我在学习C/C++实现协程封装过程的新得体会,以及对协程的理解。一开始对知道“协程”这个概念实在go语言里面,很多资料对其的描述都是“轻量级的用户态线程”。 首先,用户态和内核态分别是程序在运行过程中的两种状态,如果线程在用户进程地址空间的状态下中执行程序,则称为用户态,一旦发生系统调用、中断、异常等事件,就会由用户态转换到内核态,进入到内核地址空间去执行函数(系...
原创
发布博客 2019.09.27 ·
1805 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

C++11新特性解析

Table of Contents类型推导智能指针移动语义杂项nullptr、0、NULLconstexpr本篇博客对于C++11的新特性做一些详细的描述和记录。尽量用简洁的语言和小栗子说明C++11做了哪些优化工作。类型推导模板函数类型推导。当调用一个模板函数时候,会自动进行模板参数推导。在推导的过程中,实参的引用性会被忽略(也就是说如果传进的是一个引用...
原创
发布博客 2019.09.17 ·
776 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

c++对象模型解析(一)

本系列记录在学习过程中,我对于c++对象模型的理解,主要包括如下知识点等底层实现机制。c++对象大小计算 虚函数(虚表,虚指针) 构造函数,析构函数(定义,作用,什么时候编译器自动生成) 多重继承,虚继承(菱形继承,优劣处) 动态绑定(多态,静态类型与动态类型)struct 和 class之间关系区别成员变量权限,首先struct中的成员变量默认是私有的,class的成员...
原创
发布博客 2019.07.28 ·
229 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏
加载更多