- 博客(13)
- 资源 (3)
- 收藏
- 关注
原创 Redis源码阅读_03_dict
结构定义// hash表结构,每个字典采用两个哈希表,实现渐进式rehashtypedef struct dictht { // 哈希表数组,每个元素一条链表 dictEntry **table; unsigned long size; unsigned long sizemask; unsigned long used;} dictht;typedef struct dictEntry { void *key; union { v
2021-04-18 22:53:28 117
原创 【Effective Modern C++】读书笔记(1)_模板类型推导
description: Deducing TypesUnderstand template type deduction// normal templatetemplate<typename T>void f(ParamType param);// usagef(expr);During compilation, compilers use expr to deduce two types: one for T and one for ParamType.These typ.
2021-04-08 17:19:13 121
原创 可加载内核模块之HelloWorld
Linux n227-088-244 4.14.81.bm.15-amd64 #1 SMP Debian 4.14.81.bm.15 Sun Sep 8 05:02:31 UTC 2019 x86_64 GNU/Linuxhellokernel.c//// Created by zhaojieyi on 2021/3/15.//#include <linux/module.h>#include <linux/kernel.h>#include <linux/.
2021-03-15 17:01:12 144
原创 vsprintf和vsnprintf使用测试
结论vsprintf不会对字符进行截断,可能越界,造成运行时错误;vsnprintf会对字符进行截断,并返回字符的实际长度;其存储上限是bufSize - 1;vsprintf#include <stdio.h>#include <iostream>using namespace std;constexpr uint32_t DEFAULT_BUF_SIZE = 16;char buf[DEFAULT_BUF_SIZE];void PrintTest(cons
2021-03-14 14:48:38 861
原创 默认移动构造函数对堆栈内存的处理
开发过程中需要使用默认移动构造函数,并涉及到堆栈内存的操作,故一探究竟默认移动构造函数的条件启用默认移动构造函数必须满足以下全部条件:没有声明拷贝赋值函数。没有声明拷贝构造函数。没有声明移动赋值函数。移动构造函数没有隐式声明为delete没有声明析构函数。对于类内的成员对象,如果是STL容器这种本身有移动实现的成员变量,又不包含非RAII的资源管理,那么默认移动逻辑是可以预想到的,但是对于堆栈内存,移动构造会进行何种处理,还不是很明白,因此写代码进行验证。代码验证#include.
2021-01-21 17:34:12 429
原创 Redis源码阅读_02_adlist
A generic doubly linked list implementationRedis的adlist.h和adlist.c共同定义了其基本数据结构list,其底层是一个带有迭代器的双向链表结构,迭代器的实现非常精巧。adlist.h#ifndef __ADLIST_H__#define __ADLIST_H__/* Node, List, and Iterator are the only data structures used currently. */typedef stru
2020-11-19 23:45:16 76
原创 Redis源码阅读_01_目录分析
源码学习第一弹,选择了Redis这个内存数据库进行学习。选择的是redis-6.0.9的版本,是一个稳定版本,获取地址Redis。该版本提供了不少新特性,正适合一探究竟。首先学习下Redis源码的目录结构,Redis源码主要路径在src目录下文件名功能adlist.h/adlist.c用于对list的定义,它是个双向链表结构ae.h/ae.c用于Redis的事件处理,包括句柄事件和超时事件anet.h/anet.c作为Server/Client通信的基础封装,包括a
2020-11-19 16:25:12 94
原创 Coredump练习
Coredump练习系统环境[root@localhost crash]# cat /proc/versionLinux version 4.18.0-147.el8.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)) #1 SMP Wed Dec 4 21:51:45 UTC 2019[root@localhost crash]# uname -aLi
2020-10-20 00:42:25 172
原创 【C++】模板类相关
今日面试,对“”模板类和普通类实例化时有什么区别”的回答不是很准确,故做个总结1. 类模板类模板描述了一组相关的类或数据类型,它们只能通过类型来区分:整数值、指向(或引用)具有全局链接的变量的指针、其他的组合。类模板尤其适用于描述通用但类型安全的数据结构。声明一个普通的类模板:template <typename T>class Complex{ public: //构造函数 Complex(T a, T b) { this->.
2020-09-09 00:57:52 79
翻译 C++的友元声明
C++的友元声明友元声明出现于类体内,并向一个函数或另一个类授予对包含友元声明的类的私有及受保护成员的访问权。语法及描述// (1)friend 函数声明,指明函数为此类的友元class Y { int data; // 私有成员 // 非成员函数的运算符 operator<< 将拥有对 Y 的私有成员的访问权 friend std::ostream&a...
2020-04-14 17:56:38 1543
原创 Java I/O_FilterInputStream类
下面4个类都是从FilterInputStream派生来的,具体说明如下。 ①BufferedInputStream 从硬盘往一个内存缓冲区进行初始读操作,缓冲区长度默认为 2KB字节,也可以通过入口参数指定缓冲区长度。1 public BufferedInputStream(InputStream in); //为一个输入流构造一个基于缓冲区的过滤流,默认为2KB字节2 p
2016-07-27 23:00:37 337
数字通信第五版习题参考答案
2015-10-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人