2 patientcat

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 12w+

右值和移动语义进阶

右值和移动文章目录右值和移动1. 前言2. 左值和右值3. 右值引用4. 完美转发4.1 万能引用和右值引用区别1. 前言这里就不谈右值和移动的一些基础概念。这里主要谈一下,是不是我们可以无脑使用std::move2. 左值和右值我们都知道C++实际上分为左值和右值的。一般情况下,我们认为可以这样区分能够被取地址的值称为左值,不能被取地址的被称为右值。当然这里C/C++的原生字符串例外。...

2019-12-31 22:47:30

leetcode-245-最短单词距离(找俩个有序数组中的差的最小值)

题目给定一个单词列表和两个单词 word1 和 word2,返回列表中这两个单词之间的最短距离。word1 和 word2 是有可能相同的,并且它们将分别表示为列表中两个独立的单词。示例:假设 words = [“practice”, “makes”, “perfect”, “coding”, “makes”].输入: word1 = “makes”, word2 = “coding”...

2019-12-18 22:53:10

Redis源码学习-8-Redis源码网络部分简要分析

main函数流程文章目录main函数流程0. 前言1. 简要源码分析1.1 小结0. 前言接下来,我们就跟随一下代码,或者说函数调用栈,来看下。Redis是怎么做的。1. 简要源码分析当前,我们先刨除一些业务上的代码,仅仅只看有关网络的代码。// redis.cint main(int argc, char **argv) { // 初始化服务器 // 这里主要设...

2019-12-17 23:39:59

shared_from_this使用注意

文章目录1. shared_from_this只能被shared_ptr管理对象调用2. 禁止在栈/堆上构造对象2.1 更加优雅的方式3. 只能在栈上或者堆上构造对象这里算是为我的智能指针学习补上最后一块知识。1. shared_from_this只能被shared_ptr管理对象调用在cppreference里有这么一句话这里提到了这么一句话,只允许在shared_ptr所管理的对象上...

2019-12-15 21:48:38

从零开始写一个Redis-2

Reactor和Log文章目录Reactor和Log1. Logger1.1 EasyLogging++1.2 muduo::Logging2. Reactor2.1 我的文章参考2.2 简单说明2.3 第一个版本2.3.1 Event2.3.2 EventLoop2.3.3 Poller2.3.4 例子2.4 第二个版本3. Acceptor3.1 源码实现3.1 echo服务器测试4. 结语...

2019-12-15 20:54:51

从零开始写一个Redis-3

Redis-03文章目录Redis-031. Timestamp1.1 源代码2. TcpConnection2.1 类简要2.2 handleRead2.3 Send和handleWrite3. TcpServer4. EchoServer1. Timestamp时间点。如何理解时间点呢,对于点来说,一定要有参考点,单独一个点的值是没有意义的,对于距离点来说,比如5,这实际上是相对于0偏...

2019-12-15 20:52:54

从零开始写一个Redis-1

Redis为了学习Redis和更好地理解Redis,决定自己写一个C++版本的Redis文章目录Redis0.写在前面的话1.NoSQL究竟是什么?1.1 测试1.2 完整源码1.3 小结2. Redis协议解析2.1 简单协议分析2.2 参考2.3 简单的Redis客户端2.4 简单的Redis服务器0.写在前面的话第一,我这里仅仅只是学习Redis的思想。所以使用的是C++,而且很多...

2019-12-04 20:08:15

Redis源码学习-7-事件驱动2

事件驱动文章目录事件驱动1. 数据结构1.1 Demultiplexer1.1.1 创建epoll实例1.1.2 关联事件到fd,并修改epfd的兴趣列表1.1.3 轮询1.2 Dispatcher1.2.1 初始化Dispatcher1.2.2 添加文件事件1.2.3 处理事件1.3 事件的抽象1.3.1 文件事件1.3.2 时间事件1.4 小结2. 实践1. 数据结构1.1 Demult...

2019-12-01 17:12:28

Redis源码学习-6-事件驱动1

事件驱动编程文章目录事件驱动编程1 回顾1.1 阻塞编程1.2 Tips:read和write的局限2. 事件驱动编程2.1 问题1:什么时候读2.2 问题2:读多少3. Reactor模式伪代码3.1 结构3.2 简单运行1 回顾这里的回顾主要涉及到我自己的学习。如果是初学者的话,可以跳过,直接到2.1.1 阻塞编程一般情况下,我们在最开始学习网络编程的时候,这里主要指socket编程...

2019-12-01 17:09:06

Redis源码学习-5-对象

对象文章目录对象1. 对象分类2. 数据结构2.1 类型2.2 编码3. 接下来的目标5. 各种对象5.1 创建一个新 robj 对象5.2 字符串对象5.2.1 编码5.2.2 embstr的创建5.3 列表对象5.3.1 编码5.4 哈希对象5.4.1 编码5.5 集合对象5.5.1 编码5.5.2 zset几个概念澄清。Redis并不直接使用之前学习的数据结构,而是使用对象1. 对象分...

2019-12-01 17:08:12

Redis源码学习-4-整数集合

整数集合文章目录整数集合1. 数据结构2. 有序结构3. 升级3.1 具体演示3.2 为什么设置升级?主要存放在intset.h1. 数据结构typedef struct intset { // 编码方式 uint32_t encoding; // 集合包含的元素数量 uint32_t length; // 保存元素的数组 in...

2019-11-24 15:34:24

Redis源码学习-3-跳表

跳表-skipList文章目录1. 跳表和红黑树2. 跳表的c++简单实现2.1 源码2.2 一个普通的跳表2.3 查找3. Redis跳表的数据结构3.1 跳表节点3.2 跳跃表3.3 跳表的创建3.4 插入跳表节点到跳表中3.5 属性解释4. 跳表的特有API文章目录redis.h 中的 zskiplist 结构和 zskiplistNode 结构, 以及t_zset.c 中所有以 zsl...

2019-11-14 22:11:32

lldb在vscode显示STL内容

文章目录1. 参考回答2. 我的实践1. 参考回答github issue reply2. 我的实践环境 macOS + lldb + clang, 尝试用gcc + gdb的方式,但是pretty-printer的问题没有解决。安装codelldb修改配置文件,只用修改launch.json即可注意添加断点结果图另外一种方法没有尝试。感觉有了对STL的debug,才...

2019-11-14 16:15:28

Redis源码学习-2-字典

哈希表文章目录哈希表1. 数据结构1.1 哈希表节点1.2 哈希表1.3 字典2. 一个普通状态下的字典3. 字典的变化3.1 创建一个字典3.2 插入一个元素3.3 发生哈希冲突之后3.4 哈希算法3.5 rehash渐进式rehash3.6 rehash期间的字典操作在文件<<dict.h>>和<<dict.c>>中1. 数据结构对于类似...

2019-11-13 19:24:43

数据结构绘制利器——graphviz和dot语言

在学习和写博客的时候常常要画一些数据结构。这里我认为使用graphviz + vscode的方式可以较为成熟的解决这个问题。只需要花费一点点时间熟悉。如果精修至大成,将会成为你的一个非常优秀的技能。

2019-11-13 14:48:36

Redis源码学习-1-简单字符串

简单字符串(SDS)文章目录简单字符串(SDS)1. 预备知识1.1 字节对齐1.1.1 影响1.1.21.2 buf[]使用1.2.1 有什么用?1.2.2 正确例子char[]不能想用就用2. 数据结构2.1 优点3 SDS API3.1 简单分析 sdslen3.2 如何兼容C字符串函数在文件<<sds.c>>和<<sds.h>>中1. ...

2019-11-12 20:58:03

leetcode-搜索专题

搜索1. 关于搜索1.1 BFS和DFS小谈1.1.1 BFS模板1.1.2 DFS模板2. 题目一览2.1 排列和组合问题2.1.1 排列问题1. 综述2. 送上来的排列问题2.1.2 组合问题1. 综述2. 问题2.1 子集问题2.2. 终极思考2.2 固定长度子集问题2.3 回溯问题2.4 BFS问题2.5 Partition问题(插点问题)利用map加快字符串转化1. 关于搜索在lee...

2019-11-08 23:17:19

利用zc序列进行简单的帧同步

帧同步zc序列的产生同步算法参考文章 https://wenku.baidu.com/view/accce6d1240c844769eaeea9.htmlzc序列的产生产生zc序列,根据论文公式得出,K值可以用来评价ZC序列的好坏。1位最好,其次为signal_length-1.function [cazac_sequence] = CreatCazac(signal_length, K)...

2019-11-01 22:14:32

chatroom项目手册

chatroom-go项目手册0. 前言第一次写项目手册,有以下几个目的吧。回顾下使用go语言的感受思考一些编程细节思考整体项目的流程github地址1. 项目简单说明这个项目算是自己学习完go语言使用之后的一个简单总结吧。顾名思义,项目本身就是完成个聊天室的功能。功能比较简单,但经过自己的优化后,还是有些能看得过眼的东西。项目数据库使用了redis,纯粹的目的是为了下一...

2019-10-25 22:03:25

leetcode-回溯法-全排列

题目题目源自leetcode这三道题leetcode-46leetcode-47leetcode-267思路这里总结下上述问题的思路。假设给定一个数组,里面的数字均唯一。比如[1, 2, 3, 4, 5, 6]如何做出他们的全排列。这里我们的思路有很多个解释。1. 直觉法根据直觉我们知道。我们可以在第一个位置上,从6个数字中任选一个。然后在第二个位置从5个中选一个。结果就是6 * ...

2019-10-08 22:00:52

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。