自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(164)
  • 资源 (12)
  • 收藏
  • 关注

原创 brpc收包一个草图

2023-09-14 17:30:18 107

原创 faiss 暴搜/ivf/ivfpq

一、总体总揽faiss提供了许多类型的近邻搜索算法实现,如下:一级分类 二级分类 特点 IndexBinary IndexBinaryFlat Binary指以汉明距离作为度量 IndexBinaryFromFloat IndexBinaryHash IndexBinaryHNSW In...

2022-03-10 10:54:27 3459

原创 HNSW算法(nsmlib/hnswlib)

一、数据结构1、HierarchicalNSW类成员描述 成员 描述 num_deleted_ 有过删除某向量的次数。 PS:不考虑增量情况下,它不会发生影响 M_ 每个(非0层)节点可以有多少个邻居 maxM_ maxM_ = M_ maxM0_ 第0层节点可以有多少个邻居 = 2 *maxM_ ef_construction_ .

2022-03-06 19:51:43 7093 8

原创 分布式+zookeeper八股文

1、zookeeper: zookeeper的节点组织结构:与标准文件系统的名称空间非常相似 zookeeper的节点包括三种类型: 「持久节点」(persistent node)节点会被持久 「临时节点」(ephemeral node),客户端断开连接后,ZooKeeper 会自动删除临时节点 「顺序节点」(sequential node),每次创建顺序节点时,ZooKeeper 都会在路径后面自动添加上10位的数字,从1开始...

2021-09-05 20:07:55 627

原创 网络八股文

1、网络IO模型 首先是同步IO和异步IO,这是很多人混淆的地方:同步IO:应用程序主动向内核查询是否有可用数据,如果有自己负责把数据从内核copy到用户空间。异步IO:应用程序向内核发起读数据请求需要:(1)告诉内核数据存放位置(2)注册回调函数,当内核完成数据copy后调用回调通知应用程序取数据。同步IO/异步IO最大区别:同步IO数据从内核空间到用户空间的copy动作是由应用程序自己完成。而异步IO则是注册回调函数并告知内核...

2021-09-05 19:10:31 231

原创 MySQL面试八股文

1、MySQL的B树和B+树 B树: 每个节点都存储数据,随机IO很大B+树: 数据都在叶子节点上,并且增加了顺序访问指针,每个叶子节点都指向相邻的叶子节点的地址。相比B-Tree来说,进行范围查找时只需要查找两个节点,进行遍历即可。而B-Tree需要获取所有节点,相比之下B+Tree效率更高。 所以B+ 树中,数据对象的插入和删除仅在叶节点上进...

2021-09-05 17:37:42 336

原创 kafka面试八股文

0、kafka的基本名词 topic:划分message的逻辑概念,一个topic的数据分布在多个broker上 partition:每个topic的数据,被切分至一个或多个partition中 offset:消息在partition的编号,不跨partition consumer:从broker获取message producer:向broker生产message replication:kafka...

2021-09-05 17:21:28 1908

原创 Redis八股文

一、Redis 1、都有哪种数据格式 string、hash、list、set、zset 引申出bitmap 分别对应哪些场景 2、为什么速度快纯内存操作 网络IO模型,牵出reactor 单线程处理,注意redis6.0后也有多线程 3、Redis持...

2021-09-05 11:33:53 154

原创 关于vector

    vector是一个基于使用动态堆空间的连续空间的STL容器,可以方便动态追加扩展,方便如同数组的按索引访问;    vector有两个重要概念,一个是容器的分配的空间的大小(capacity),一个是容器内当前元素的个数(size),前者对应的是实际在堆上为这个vector分配了多少堆空间,后者是当前vector内,实际有多少个元素,这和vector的迭代器(begin、end)相关;  ...

2018-05-14 20:20:08 530

原创 关于字节序

    字节序分为小端(主机字节序)和大端(网络字节序):    1、所谓字节序是:        数据在存储中,是由高字节部分到低字节部分,还是由低字节部分到高字节部分,就是字节序;        小端:从低字节部分到高字节部分存储        大端:从高字节部分到低字节部分存储        如0x1234:        内存顺序:                 低---高       ...

2018-05-10 16:43:36 3876

原创 c++的多态(重载、覆盖、隐藏)

    描述这类的文章有很多,这里用最简洁的方式用于记牢:    1、什么是重载(overload):        在同一个作用域下的两个同名函数,并且它们的参数不同(返回值是否相同可选),这样的两个函数叫重载。        注意理解"在同一个作用域下",至少包括以下:        a. 在同一个名字空间下面,比如都在名字空间abcde下定义的两个普通函数,或者两个全局函数;        ...

2018-05-02 20:19:29 1736

原创 c++11的闭包(lambda、function、bind)

    c++11开始支持闭包,闭包:与函数A调用函数B相比较,闭包中函数A调用函数B,可以不通过函数A给函数B传递函数参数,而使函数B可以访问函数A的上下文环境才可见(函数A可直接访问到)的变量;比如:    函数B(void) {        ......    }    函数A {        int a = 10;        B();    //普通调用函数B    }    函数...

2018-04-23 11:14:02 12313

原创 c++11的时间库chrono

    c++11的时间库chrono简化了时间、日期、时间间隔的计算的编程开发;主要体现于:    1、基于system_clock、steady_clock、high_resolution_clock的时钟(clock)的确凿时间点(time_point)的获取;    2、基于不同时间单位、不同时间点之差的时间间隔(duration)的计算;    c++11的时间库chrono均位于名字空...

2018-04-18 10:19:24 3382

原创 auto关键字实现简易的数值范围迭代器

比如需要遍历数值范围[5,10),直观的方法是:for (int i = 5; i < 10; i++) { .....}c++11的auto关键字,可以不指定数据类型,如下:for (auto i = 5; i < 10; i++) { .....}c++11的auto关键字,还可以遍历容器,如下:std::vector<int> v = {5,6,7...

2018-04-11 18:25:01 1155

原创 数据结构算法面试总结 序

数据结构算法面试总结 序

2017-11-06 10:50:19 1406

原创 记 今日头条广告架构社招面试

今日头条广告架构社招面试

2017-11-04 21:38:00 10235

原创 存储原理八股文

关于典型的存储引擎及其代表(mysql、redis/memcached、leveldb/rocksdb/hbase系)

2017-10-19 19:39:52 4707 1

原创 leetcode之双指针类-----OJ 228/15/16/18/26/80/121/75

链表中使用快慢指针的题也都可以算作双指针,本文着重更容易被作为双指针典型考察的典型题; 1、OJ228 summary ranges给定有序数组找出其中的区间,如给定[0,1,2,4,5,7],结果为:["0->2", "4->5", "7"]本题看起来是数组类区间相关,但其实是双指针操作能力考察思路:事实上是3个指针,一个是当前区间头指针st,然后是一个cur和n...

2017-10-18 22:40:19 377

原创 leetcode之数组类之数组的旋转与分治类-----OJ 189/33/81/153/154 数组旋转 旋转数组搜索 88 有序数组合并 4 两个有序数组寻找第K个元素/中位数 35 寻找插入位置

leetcode之数组类之数组的旋转与分治类-----OJ 189/33/81/153/154 数组旋转 旋转数组搜索 88 有序数组合并 4 两个有序数组寻找第K个元素/中位数 35 寻找插入位置

2017-10-15 21:30:56 477

原创 leetcode之数组类之区间类-----OJ 56/57/435/239 重叠区间个数 合并区间 插入区间 滑动窗口最大值

leetcode之数组类之区间类-----OJ 56/57/435/239 重叠区间个数 合并区间 插入区间 滑动窗口最大值

2017-10-15 17:37:45 944 1

原创 leetcode之链表类之相交成环类-----OJ 160/141/142 链表相交 链表环

leetcode之链表类之相交成环类-----OJ 160/141/142 链表相交 链表环

2017-10-15 17:01:34 428

原创 leetcode之二叉树类之二叉树中序遍历运用-----OJ173/230/98/99/285 二叉树迭代器/BST第K小元素/判断BST是否合法/恢复BST/二叉树下个节点

leetcode之二叉树类之二叉树中序遍历运用-----OJ173/230/99/285 二叉树迭代器/BST第K小元素/恢复BST/二叉树下个节点

2017-10-15 12:10:54 383

原创 leetcode之二叉树类之二叉树遍历系列-----94/144/145/102/107/103

leetcode之二叉树类之二叉树遍历系列-----94/144/145/102/107/103

2017-10-15 11:33:40 343

原创 leetcode之二叉树类之二叉树深度系列-----104/111/110/108/109 二叉树最大/最小深度/AVL树的判断和由有序序列生成(牵扯分治相关,OJ105/106)

leetcode之二叉树类之二叉树深度系列-----104/111/110/108/109 二叉树最大/最小深度/AVL树的判断和由有序序列生成(牵扯分治相关,OJ105/106)

2017-10-15 11:14:21 673

原创 leetcode之二叉树类之路径和系列-----112/113/124/257/437 path sum(牵扯附加OJ572和OJ100, 子树和子拓扑)

leetcode之二叉树类之路径和系列-----112/113/124/257/437 path su(牵扯附加OJ572和OJ100, 子树和子拓扑)

2017-10-14 20:21:10 400

原创 leetcode之二叉树类之最小公共祖先-----236/235. Lowest Common Ancestor of a Binary/Binary Search Tree

leetcode之深搜递归回溯类之最小公共祖先-----236/235. Lowest Common Ancestor of a Binary/Binary Search Tree

2017-10-14 19:49:15 359

原创 leetcode之深搜递归回溯类之排列与组合类-----77/39/40/216/317 组合 78/90/368 子排列 22/79/93/131 典型递归回溯 46/47 全排列

leetcode之深搜递归回溯类之排列与组合类-----77/39/40/216/317 组合 78/90/368 子排列 22/79/93/131 典型递归回溯 46/47 全排列

2017-10-03 12:19:38 574

原创 leetcode之深搜递归回溯类-----1/167/653. two sum(记忆化搜索寻找和为给定值的两个数)

leetcode之深搜递归回溯类-----1/167/653. two sum(记忆化搜索寻找和为给定值的两个数)

2017-10-03 01:35:30 508

原创 leetcode之链表逆序翻转类-----92/206 逆序 24/25/61/143 按规则翻转 86/234 双指针分治 19/82/83/203 按规则删除

leetcode之链表逆序翻转类-----92/206 逆序 24/25/61/143 按规则翻转 86/234 双指针分治 19/82/83/203 按规则删除

2017-10-02 13:54:15 464

原创 leetcode之链表类之链表归并类-----OJ 2/21/23/445 链表相加求和 链表归并

leetcode之链表类之链表归并类-----OJ 2/21/23445 链表相加求和 链表归并

2017-09-30 17:56:26 454

原创 leetcode之链表类之链表排序-----147/148. 链表快速排序 链表插入排序

和数组的快排完全相同,dfs分治,过程也一样,唯一多了的是,在计算出partition点j后,对后半部的递归需要做"partition点和end点是否已经相同"的判断,这是在end点已经是极大/小值时,会导致partition点j也走到end点,在数组快排可以通过"if (start >= end)"过滤,对于单链表则必须在这里提前判断出来,避免进行起点在终点后面的递归快排的最大好处是空间复杂

2017-09-30 16:43:14 416

原创 leetcode之数值计算类-----9. Palindrome Number(判断一个数是否为回文数)

leetcode之数值计算类-----9. 回文数

2017-09-29 11:28:37 386

原创 设计模式之:单例模式

一个单例类的特点:1、进程内只有唯一的类实例不可以被随意构造(禁止任何形式的自行构造),在被使用时或使用前创建(前者为所谓懒汉式,后者为所谓饿汉式),进程结束时释放2、多线程共用内部资源访问控制需要锁互斥具体的实现:1、实现禁止构造:出于不可以被随意构造(禁止任何形式的自行构造)的需要,单例基类需要禁止构造,实现方式为继承一个noncopyable基类

2017-09-13 11:28:51 314

原创 关于c++的class(偏c++11以前,构造、静态成员、const、初始化列表、友元、内联、template)

1、构造:构造分为三种:1、自定义构造和拷贝构造:体现为构造函数参数自定义。没什么说的,注意构造函数的调用顺序,当有继承关系时,构造时是从子类到基类,析构时是从基类到子类;构造函数不可以出现任何静态、const、virtual之类的修饰。这里主要注意的是,构造函数是会隐式构造的,如 class A { public: void test ()

2017-09-03 23:41:33 303

原创 c++11新特性总结

1、类型与变量相关1.1、nullptr:取代了NULL,专用于空指针1.2、constexpr:近似const, 可以修饰变量,也可以修饰函数,修饰变量如:const int global = 100;int main () {int temp = 100;constexpr int a = 1;//right constexpr int b

2017-09-03 15:50:56 13193

原创 一道特殊的排序面试题(交换思想活学活用)

如字符串abcdefg,现在需要按索引顺序1 42 0 5 3 6重排序,如对于14 2 0 5 36,排序结果为becafdg面试中很可能遇到这种非常突兀的问题,这需要基础概念牢固到能够随时运用的地步,本题就是一个锻炼遇到这种题,步骤:在纸上画心里思考,尽力找出一种较为简单的规律,能够完成这样的变化要求!如本题,在纸上画个简单的例子,如:自己假

2017-09-02 20:44:59 416

原创 关于网络(同步、异步、阻塞、非阻塞,select/poll/epoll,rpc/msgqueue,tcpip常见面试题)

1、先浅谈同步和异步:同步和异步关注的是消息通信机制所谓同步,就是在发出一个”请求或者调用“时,在没有得到结果之前,这个"请求或者调用"就不返回。但是一旦调用返回,那就是肯定得到返回值所谓异步,"请求或者调用"发出之后,就直接返回了,不会有任何返回值,返回值由被调用者,通过状态、通知、回调函数等等方式来通知调用者沿用网上众多通俗例子之一:你打电话问书店老板有没有

2017-08-30 19:50:33 1065

原创 关于c++的class(继承、重载、隐藏)

关于继承1、关于成员函数重载重载:满足以下三点叫做重载在同一类中;在同一个范围中(如都在public中);函数名相同(返回值、参数均可以不同)例子:class A { public: void func (int i, int j) { std::cout << "func has two args: " << i

2017-08-28 23:59:21 663

原创 排序总览

排序是出镜率最高的面试题,基本上没有之一一、就排序说排序这一环节的目的,一方面是完全熟悉常用常考的排序,另一方面是对排序所涉及的相关的知识,如时间复杂度的感觉到理解、不同的数据结构、不同的算法思路、排序解决的问题、排序在实际问题中的用途,建立一个更全面的体系,毕竟不论是面试还是实际工作,所面对的问题远远不会是仅是会写排序。1.0、排序本身都有哪些排序:1、原地比较排序:

2017-08-27 21:20:38 298

原创 关于redis

一、干什么用的:1、用于kv存储:数据实际存储在内存里,比起mysql存在磁盘里,读写都更加快速优点:比起那些存在磁盘里的,读写肯定更快(确切的说应该是redis自身的读写操作特别快,但实际使用中,redis以另一进程存在,则如计入网络开销就不好说了,典型如rocksdb等进程内数据库而且还基于lsm-tree的另论,尤其对于写)缺点:数据存在内存里,内存能用多大呢,大规模的数据不宜存

2017-08-26 23:58:46 833

linux用户进程内存映射

详解mmap、malloc在内核态的实现,原理是什么,有详细的描述和加的内核源码注释,可完全理解用户进程申请内存是怎么一回事

2013-08-28

linux进程创建详解

详细的描述linux系统调用fork、vfork、clone在内核中的实现,既有详细文字描述又有全部的源码加注释,有助于深入理解linux进程地址空间

2013-08-28

linux缺页异常详解

全面描述linux arm缺页异常的处理原理和处理方式,结合原理的解释描述以及全部相关的源码注释,深刻理解缺页异常

2013-08-28

linux arm的高端内存映射详解

以一个实际的linux的arm设备(不是什么2440!)描述了高端内存原理和源码注释详解,能够清楚的理解什么是高端内存,什么是vmalloc,什么是永久映射,什么是临时映射,需要注意什么,应用场合是怎样,在源码中的前龙后脉都有详细的注释和解释

2013-08-22

slab完全详解

目前有很多讲slab的文章,要么是纯讲原理画一堆图结合源码不深导致理解困难,要么是纯代码注释导致理解更困难,我在猛攻了一周时间后,细致总结一下slab,争取从原理到源码都能细致的理解到并立刻达到清楚的使用

2013-08-21

armlinux的bootmem分配器

详细描述armlinux启动阶段的bootmem分配器是怎么一回事,干什么的,中间被谁用过,最后被伙伴系统收编,结合函数和讲解,有价值

2013-08-12

linux内存页表创建

对linux内存页表创建的详细讲解,和本博客前面文章紧密联系,讲解了物理内存、硬件IO、中断是如何映射的,什么是内存,内存映射是怎么一回事,另有例子演示,适合正确理解概念的文章

2013-08-08

linux设备模型之sysfs使用

linux 设备模型的衍生产物sysfs的描述和用法,包括举例,初学者原创

2013-05-20

基于systemV的消息队列的多进程间CS通讯实现

花了近一周时间搞定的东东,多进程间通信实现,可编成动态库,挺实用的,望多交流指教!

2013-05-19

linux设备模型的I2C具体实现

疯狂研究I2C模型四五天,终于搞定后的心得,原创心得,全是手写,希望能共同交流!

2013-05-19

linux设备模型_____相关函数

本人经一段时间钻研linux设备模型、sysfs、I2C驱动后所写,初学者的原创心得,应该也适合初学者理解!

2013-05-19

linux设备模型____宏观印象

本人经一段时间钻研linux设备模型、sysfs、I2C驱动后所写,初学者的原创心得,应该也适合初学者理解!

2013-05-19

空空如也

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

TA关注的人

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