# TechCPP **Repository Path**: yudaichen/TechCPP ## Basic Information - **Project Name**: TechCPP - **Description**: No description available - **Primary Language**: C/C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-31 - **Last Updated**: 2025-01-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 如下是C++后台研发技术路线以及知识点,这里有很多细节,还需要不断完善。 欢迎大家[提交PR](https://www.programmercarl.com/qita/join.html)来一起完善这个知识库,成为contributor! 👉 如果你是编程零基础,或者想入门C++,推荐 [【卡码网】C++基础课](https://kamacoder.com/course.php?course_id=1) 👉 如果你有C++基础,想手写STL,推荐 [【卡码网】手写简单版本STL(C++)](https://kamacoder.com/course.php?course_id=10) # C++primer B站视频讲解 * [学习C++书籍推荐](https://www.bilibili.com/video/BV1rK4y1e7ed) * [听说C++ primer 太厚了 看不进去?](https://www.bilibili.com/video/BV1Z5411874t) * [C++ primer 第一章,你要知道的知识点还有这些!](https://www.bilibili.com/video/BV1Kv41117Ya) * [C++ primer 第二章,前两节](https://www.bilibili.com/video/BV1MA411j74g) (玩命更新ing...) # 编程语言C++ * [C++primer5笔记代码资料](https://github.com/youngyangyang04/TechCPP/tree/master/docs/C++primer5笔记代码资料) * [volatile static const extern等关键字](./problems/volatile,static,const,extern等关键字.md) * [宏定义和展开、内联函数区别](./problems/宏定义和展开、内联函数区别.md) * 常用库函数实现 * [malloc,strcpy,strcmp的实现,常用库函数实现,哪些库函数属于高危函数](./problems/malloc,strcpy,strcmp的实现,常用库函数实现,哪些库函数属于高危函数.md) * [STL原理及实现](./problems/STL原理及实现.md) * [虚函数的作用和实现原理,什么是虚函数,有什么作用?](./problems/虚函数的作用和实现原理,什么是虚函数,有什么作用.md) * [纯虚函数,为什么需要纯虚函数?](./problems/纯虚函数,为什么需要纯虚函数.md) * [为什么需要虚析构函数,什么时候不需要?](./problems/为什么需要虚析构函数,什么时候不需要.md) * [内联函数、构造函数、静态成员函数可以是虚函数吗?](./problems/内联函数、构造函数、静态成员函数可以是虚函数吗.md) * [构造函数中可以调用虚函数吗?](./problems/构造函数中可以调用虚函数吗.md) * [为什么需要虚继承?虚继承实现原理解析](./problems/为什么需要虚继承.md) * [虚函数是针对类还是针对对象的?](./problems/虚函数是针对类还是针对对象的?.md) * [同一个类的两个对象的虚函数表是如何维护的?](./problems/同一个类的两个对象的虚函数表是如何维护的?.md) * [C++ 内存分配机制](./problems/C++内存分配.md) * 指针 * [迭代器与普通指针有什么区别](./problems/迭代器与普通指针有什么区别.md) * [C++的智能指针及其原理](./problems/C++的智能指针及其原理.md) * [悬挂指针和野指针有什么区别?](./problems/悬挂指针和野指针有什么区别?.md) * [指针常量和常量指针的区别](./problems/指针常量和常量指针的区别.md) * [指针和引用有什么区别呢?](./problems/如何避免悬挂指针?.md) * [如何避免悬挂指针?](./problems/如何避免悬挂指针?.md) * [override和overload的区别](./problems/override和overload的区别有那些.md) * [写string类的构造,析构,拷贝函数](./problems/写string类的构造,析构,拷贝函数.md) * [C++中类成员的访问权限有那些?](./problems/C++中类成员的访问权限有那些?.md) * [C++多态的实现有那几种?他们有什么不同?](./problems/C++多态的实现有那几种?他们有什么不同?.md) * [C++中右值引用有什么作用?](./problems/C++中右值引用有什么作用?.md) * [面向对象的三大特征是什么](./problems/面向对象的三大特征是什么.md) * [静态分配内存和动态分配内存有什么区别?](./problems/静态分配内存和动态分配内存有什么区别?.md) * [C++结构体内存对齐](./problems/C++结构体内存对齐.md) * [讲一讲C++中的原子操作有那些?](./problems/讲一讲C++中的原子操作有那些?.md) * [简单说说STL中的优先级队列是如何实现的?](./problems/简单说说STL中的优先级队列是如何实现的?.md) * [C++中动态链接库和静态连接库的区别是什么?](./problems/C++中动态链接库和静态连接库的区别是什么?.md) * [在C++中,对一个对象先malloc后delete这样使用可以吗?有什么风险?](./problems/在C++中,对一个对象先malloc后delete这样使用可以吗?有什么风险?.md) * [在C++中,三个全局变量相互依赖,程序应该如何初始化呢?300个呢?](./problems/在C++中,三个全局变量相互依赖,程序应该如何初始化呢?300个呢?.md) * [STL中的优先级队列是如何实现的?](./problems/STL中的优先级队列是如何实现的?.md) * [如果拿到虚函数表的储存地址,是否可以改写虚函数表的内容?](./problems/如果拿到虚函数表的储存地址,是否可以改写虚函数表的内容?.md) * [在C++中为什么需要深拷贝,浅拷贝会存在哪些问题?](./problems/在C++中为什么需要深拷贝,浅拷贝会存在哪些问题?.md) * [如何构造一个类使得只能在堆上或者栈上分配内存?](./problems/如何构造一个类使得只能在堆上或者栈上分配内存?.md) * [什么是C++的内存模型?](./problems/什么是C++的内存模型?.md) * [指针和引用在内存中的表现形式有何不同?](./problems/指针和引用在内存中的表现形式有何不同?.md) * [内存映射文件是什么?如何用它来处理大文件?](./problems/内存映射文件是什么?如何用它来处理大文件?.md) * [C++中结构体内存布局的规则是什么?](./problems/C++中结构体内存布局的规则是什么?.md) * [在C++中,用堆和用栈谁更快一点?](./problems/在C++中,用堆和用栈谁更快一点?.md) * [C++中struct和class有什么区别?](./problems/C++中struct和class有什么区别?.md) * [如果A这个对象对应的类是一个空类,那么sizeof(A)的值是多少?](./problems/如果A这个对象对应的类是一个空类,那么sizeof(A)的值是多少?.md) * [如果A这个指针指向一个数组,那么sizeof(A)的值是多少?](./problems/如果A这个指针指向一个数组,那么sizeof(A)的值是多少?.md) * [如果A是某一个类的指针,那么在它等于nullptr的情况下能直接调用里面的A对应类里面的public函数吗?](./problems/如果A是某一个类的指针,那么在它等于nullptr的情况下能直接调用里面的A对应类里面的public函数吗?.md) * [STL中一般都有那些常见的算法库呢?](./problems/STL中一般都有那些常见的算法库呢?.md) * [C++中,结构体可以直接赋值吗?](./problems/C++中,结构体可以直接赋值吗?.md) * [\#define和const的区别有那些?](./problems/\#define和const的区别有那些?.md) * [在C++的map中,[]与insert有那些区别?](./problems/在C++的map中,[]与insert有那些区别?.md) * [在32位和64位系统中,指针分别为多大?](./problems/在32位和64位系统中,指针分别为多大?.md) * [weak_ptr是如何解决shared_ptr循环引用的?](./problems/weak_ptr是如何解决shared_ptr循环引用的?.md) * [虚函数是否可以声明为static?](./problems/虚函数是否可以声明为static?.md) * [如何使用gdb来定位C++程序中的死锁?](./problems/如何使用gdb来定位C++程序中的死锁?.md) * [C++中常用的类优化技术有那些?](./problems/C++中常用的类优化技术有那些?.md) * [C++的atomic代码底层是如何实现的?](./problems/C++的atomic-bool代码底层是如何实现的?.md) * [原子变量的内存序是什么?](./problems/原子变量的内存序是什么?.md) * [什么是左值?什么是右值?有什么不同?](./problems/什么是左值?什么是右值?有什么不同?.md) * [什么是完美转发?](./problems/什么是完美转发?.md) * [C++中四种cast的转换?](./problems/C++中四种cast的转换?.md) * [内存池是什么?在C++中如何设计一个简单的内存池?](./problems/内存池是什么?在C++中如何设计一个简单的内存池?.md) * [STL中,map的底层是如何实现的?](./problems/STL中,map的底层是如何实现的?.md) * [STL中,set的底层是如何实现的?](./problems/STL中,set的底层是如何实现的?.md) * [set,mutiset,map,mutimap之间都有什么区别?](./problems/set,mutiset,map,mutimap之间都有什么区别?.md) * [在C++的算法库中,find()和binary_search()有什么区别?](./problems/在C++的算法库中,find()和binary_search()有什么区别?.md) * [lower_bound()和upper_bound()有什么区别?](./problems/lower_bound()和upper_bound()有什么区别?.md) * [为什么需要allocator?他在STL中有什么作用?](./problems/为什么需要allocator?他在STL中有什么作用?.md) * [什么是RAII原则,他在STL是怎么应用的?](./problems/什么是RAII原则,他在STL是怎么应用的?.md) * [STL容器是线程安全的吗?](./problems/STL容器是线程安全的吗?.md) * [什么是泛型编程,他在STL中是怎么使用的?](./problems/什么是泛型编程,他在STL中是怎么使用的?.md) * [如何选择合适的STL容器](./problems/如何选择合适的STL容器.md) * [函数参数的入栈顺序是什么,从左到右还是从右到左?](./problems/函数参数的入栈顺序是什么,从左到右还是从右到左.md) * [讲讲函数调用的过程](./problems/讲讲函数调用的过程.md) * [git的merge和rebase有什么区别?](./problems/git的merge和rebase有什么区别.md) # 数据结构与算法 * [数据结构与算法学习攻略](https://github.com/youngyangyang04/leetcode-master) * [数组和链表的区别、适用场景](./problems/数组和链表的区别、适用场景.md) * [栈和队列的区别、适用场景](./problems/栈和队列的区别、适用场景.md) * [什么时候会产生栈溢出,为什么一直递归就会栈溢出](./problems/什么时候会产生栈溢出,为什么一直递归就会栈溢出.md) * [循环队列怎么实现](./problems/循环队列怎么实现.md) * [什么是二叉树、二叉搜索树、平衡二叉树、完全二叉树、满二叉树](./problems/什么是二叉树、二叉搜索树、平衡二叉树、完全二叉树、满二叉树.md) * [二叉树和链表的区别](./problems/二叉树和链表的区别.md) * [什么是哈夫曼树?构造过程?应用场景](./problems/什么是哈夫曼树?构造过程?应用场景.md) * [什么是堆?如何维护堆](./problems/什么是堆?如何维护堆.md) * [什么是红黑树?红黑树与平衡二叉树、B/B+ 树的区别](./problems/什么是红黑树?红黑树与平衡二叉树、B和B+树的区别.md) * [什么是跳表?跳表和平衡二叉树的区别](./problems/什么是跳表?跳表和平衡二叉树的区别.md) * [如何判断图中是否有环(拓扑排序)](./problems/如何判断图中是否有环(拓扑排序).md) * [时间复杂度和空间复杂度的定义?时间换空间 & 空间换时间的例子有哪些](./problems/时间复杂度和空间复杂度的定义?时间换空间&空间换时间的例子有哪些.md) * [常见排序算法及其时间复杂度、各种排序算法对比](./problems/常见排序算法及其时间复杂度、各种排序算法对比.md) * [内存有限,怎么对100亿数据进行排序(大数据小内存排序问题,答案不唯一)](./problems/内存有限,怎么对100亿数据进行排序(大数据小内存排序问题).md) * [如何判断某网页的URL是否存在于包含100亿条数据的黑名单上(大数据小内存去重问题,答案不唯一)](./problems/如何判断某网页的URL是否存在于包含100亿条数据的黑名单上(大数据小内存去重问题).md) * [检查手机号是否存在于百万数据电话号中(答案不唯一)](./problems/检查手机号是否存在于百万数据电话号中.md) * [内存有限,如何在20亿个整数中找到出现次数最多的数(答案不唯一)](./problems/内存有限,如何在20亿个整数中找到出现次数最多的数.md) * [内存有限,如何在 40 亿个非负整数中找到所有未出现的数(答案不唯一)](./problems/内存有限,如何在40亿个非负整数中找到所有未出现的数.md) * [内存有限,如何在 100 亿数据中找到中位数(答案不唯一)](./problems/内存有限,如何在100亿数据中找到中位数.md) * [内存有限,如何在 2 亿个整数中找出不连续的最小数(答案不唯一)](./problems/内存有限,如何在2亿个整数中找出不连续的最小数.md) # 设计模式 * [C++设计模式](https://github.com/youngyangyang04/DesignPattern) * [C++单例模式](./problems/C++单例模式.md) * [用C++设计一个不能被继承的类](./problems/用C++设计一个不能被继承的类.md) * [如何定义一个只能在堆上定义对象的类?栈上呢](./problems/如何定义一个只能在堆上定义对象的类栈上呢.md) * [类构造和析构的顺序](./problems/类构造和析构的顺序.md) # 操作系统 * [linux的内存管理机制,内存寻址方式,什么叫虚拟内存,内存调页算法,任务调度算法](./problems/linux的内存管理机制内存寻址方式什么叫虚拟内存内存调页算法任务调度算法.md) * [锁:互斥锁,乐观锁,悲观锁](./problems/锁:互斥锁,乐观锁,悲观锁.md) * [死锁必要条件及避免算法](./problems/死锁必要条件及避免算法.md) * [动态链接和静态链接的区别](./problems/动态链接和静态链接的区别.md) * [常见的信号、系统如何将一个信号通知到进程](./problems/常见的信号、系统如何将一个信号通知到进程.md) * [linux系统的各类同步机制、linux系统的各类异步机制](./problems/linux系统的各类同步机制、linux系统的各类异步机制.md) * [如何实现守护进程](./problems/如何实现守护进程.md) * [标准库函数和系统调用的区别](./problems/标准库函数和系统调用的区别.md) * [协程是什么,为什么需要协程](./problems/协程是什么,为什么需要协程.md) * [进程的状态转换有那些?](./problems/进程的状态转换有那些?.md) * [什么是进程?什么是线程?他们的区别是什么?](./problems/什么是进程?什么是线程?他们的区别是什么?.md) * [进程间的通信方式有那些?](./problems/进程间的通信方式有那些?.md) * [线程间的通信方式有那些?](./problems/线程间的通信方式有那些?.md) * [线程,进程和协程是否有自己独立的堆区和栈区?](./problems/线程,进程和协程是否有自己独立的堆区和栈区?.md) * [什么是PCB?](./problems/什么是PCB?.md) * [分页和分段的区别是什么?](./problems/分页和分段的区别是什么?.md) * [为什么有了进程还需要线程和协程?](./problems/为什么有了进程还需要线程和协程?.md) * [外中断和内中断有什么区别?](./problems/外中断和内中断有什么区别?.md) * [什么是僵尸进程?](./problems/什么是僵尸进程?.md) * [程序编译的过程](./problems/程序编译的过程.md) * [并行和并发的区别](./problems/并行和并发的区别.md) * [什么是缺页中断](./problems/什么是缺页中断.md) * [为什么用户态和内核态的相互切换过程开销比较大](./problems/为什么用户态和内核态的相互切换过程开销比较大.md) * [介绍下分层存储体系和 CPU 三级缓存](./problems/介绍下分层存储体系和CPU三级缓存.md) * [为什么 CPU访问寄存器的速度比访问内存CPUCache 的速度快](./problems/为什么CPU访问寄存器的速度比访问内存CPUCache的速度快.md) * [固态硬盘和机械硬盘区别](./problems/固态硬盘和机械硬盘区别.md) * [操作系统本身为用户提供什么功能](./problems/操作系统本身为用户提供什么功能.md) * [什么是缓冲区溢出?](./problems/什么是缓冲区溢出?.md) * [介绍下进程的地址空间(虚拟地址和物理地址)](./problems/介绍下进程的地址空间(虚拟地址和物理地址).md) * [一段代码从程序到执行经历怎么样的过程(程序在计算机中是如何运行起来的)](./problems/一段代码从程序到执行经历怎么样的过程(程序在计算机中是如何运行起来的).md) * [什么是页表、什么是快表](./problems/什么是页表、什么是快表.md) * [从本地读取一个文件通过网络发送到另一端,中间涉及几次拷贝](./problems/从本地读取一个文件通过网络发送到另一端,中间涉及几次拷贝.md) * [单线程怎么保证高并发?](./problems/单线程怎么保证高并发?.md) * [select/poll/epoll 分别讲讲](./problems/selectpollepoll分别讲讲.md) # linux 服务器 * [32位系统一个进程最多有多少堆内存](./problems/32位系统一个进程最多有多少堆内存.md) * [五种I/O 模式:阻塞I/O,非阻塞 I/O,I/O 多路复用,信号驱动 I/O,异步 I/O](./problems/五种IO模式.md) * [介绍下 Socket 编程](./problems/介绍下Socket编程.md) * [Socket 和 WebSocket 的区别](./problems/Socket和WebSocket的区别.md) * [WebScoket 底层原理](./problems/WebScoket底层原理.md) * [IO 模型了解哪些?](./problems/IO模型了解哪些?.md) * [select 模型和 poll 模型,epoll模型](./problems/select模型和poll模型epoll模型.md) * [socket服务端的实现,select和epoll的区别(必问)](./problems/socket服务端的实现,select和epoll的区别.md) * [epoll哪些触发模式,有啥区别?](./problems/epoll哪些触发模式,有啥区别?.md) * [用户态和内核态的区别](./problems/用户态和内核态的区别.md) * [linux文件系统:inode,inode存储了哪些东西,目录名,文件名存在哪里](./problems/linux文件系统:inode,inode存储了哪些东西,目录名,文件名存在哪里.md) * [分段和分页的区别有那些?](./problems/分段和分页的区别有那些?.md) * [进程终止的方式有那些?](./problems/进程终止的方式有那些?.md) * [软中断和硬中断分别指的是什么](./problems/软中断和硬中断分别指的是什么.md) * [同步,异步,阻塞和非阻塞的概念](./problems/同步,异步,阻塞和非阻塞的概念.md) * [如果发现自己的Linux服务器负载过高,应该怎么排查原因呢?](./problems/如果发现自己的Linux服务器负载过高,应该怎么排查原因呢?.md) * [NGINX在Linux上是如何工作的?简单描述一下](./problems/NGINX在Linux上是如何工作的?简单描述一下.md) * [Linux上有个二进制程序一直在运行,我修改代码置换重新编译把原来的二进制程序覆盖了,会怎么样?](./problems/Linux上有个二进制程序一直在运行,我修改代码置换重新编译把原来的二进制程序覆盖了,会怎么样?.md) # 计算机网络 * [OSI七层模型分别是?各自的功能分别是什么?](./problems/OSI七层模型分别是?各自的功能分别是什么?.md) * [为什么需要三次握手,两次不行?](./problems/为什么需要三次握手,两次不行?.md) * [TCP和UDP区别](./problems/TCP和UDP区别.md) * [TCP和UDP各自的有点](./problems/TCP和UDP的区别.md) * [TCP和UDP的首部长什么样子](./problems/TCP和UDP首部长什么样子?.md) * [TCP和UDP头部字节定义](./problems/TCP和UDP头部字节定义.md) * [TCP和UDP三次握手和四次挥手状态及消息类型](./problems/TCP和UDP三次握手和四次挥手状态及消息类型.md) * [time_wait,close_wait状态产生原因,keepalive](./problems/time_wait,close_wait状态产生原因,keepalive.md) * [什么是滑动窗口,超时重传](./problems/什么是滑动窗口,超时重传.md) * [列举你所知道的tcp选项](./problems/列举你所知道的tcp选项.md) * [socket什么情况下可读?](./problems/socket什么情况下可读?.md) * [connect会阻塞,怎么解决?(必考必问)](./problems/connect会阻塞怎么解决.md) * [keepalive是什么?如何使用?](./problems/keepalive是什么?如何使用?.md) * [长连接和短连接](./problems/长连接和短连接.md) * [UDP中使用connect的好处](./problems/UDP中使用connect的好处.md) * [DNS和HTTP协议,HTTP请求方式](./problems/DNS和HTTP协议,HTTP请求方式.md) * [SYN队列和ACCEPT队列](./problems/SYN队列和Accept队列.md) * [SYN队列溢出了怎么办](./problems/SYN队列溢出了怎么办.md) * [什么是数字签名?](./problems/什么是数字签名?.md) * [什么是数字证书?](./problems/什么是数字证书?.md) * [什么是大小端,他在计算机网络中都有什么应用呢](./problems/什么是大小端,他在计算机网络中都有什么应用呢.md) * [局域网的IP分配策略是什么?它是怎么实现的?](./problems/局域网的IP分配策略是什么?它是怎么实现的?.md) * [在TCP三次握手的时候,如果网络情况非常好且百分百不会发生拥塞,不会重传,不会有历史链接问题,那么三次握手可以改为两次吗?](./problems/在TCP三次握手的时候,如果网络情况非常好且百分百不会发生拥塞,不会重传,不会有历史链接问题,那么三次握手可以改为两次吗?.md) * [请你介绍一下http1.0](./problems/请你介绍一下http1.0.md) * [请你介绍一下http1.1](./problems/请你介绍一下http1.1.md) * [请你介绍一下http2.0](./problems/请你介绍一下http2.0.md) * [请你介绍一下http3.0](./problems/请你介绍一下http3.0.md) * [POST和GET的主要区别有那些?](./problems/POST和GET的主要区别有那些?.md) * [GET请求中,URL编码有什么含义?](./problems/GET请求中,URL编码有什么含义?.md) * [HTTP方法都有那些?](./problems/HTTP方法都有那些?.md) * [HTTP中常用的状态码都有那些?](./problems/HTTP中常用的状态码都有那些?.md) * [HTTP长连接和短链接都用在那些场景?](./problems/HTTP长连接和短链接都用在那些场景?.md) * [对称加密和非对称加密的区别都有那些?](./problems/对称加密和非对称加密的区别都有那些?.md) * [DNS解析的过程?](./problems/DNS解析的过程?.md) * [为什么DNS会使用UDP而不使用TCP呢?](./problems/为什么DNS会使用UDP而不使用TCP呢?.md) * [Cookie和Session](./problems/Cookie和SessioN.md) * [DNS域名缓存是什么?](./problems/DNS域名缓存是什么?.md) * [TCP和UDP对应常见的应用层协议有那些](./problems/TCP和UDP对应常见的应用层协议有那些.md) * [说说你对TCP滑动窗口的理解?](./problems/说说你对TCP滑动窗口的理解?.md) * [TCP协议是如何保证可靠传输的?](./problems/TCP协议是如何保证可靠传输的?.md) * [什么是拆包和粘包?](./problems/什么是拆包和粘包?.md) * [说说你对TCP流量控制的理解?](./problems/说说你对TCP流量控制的理解?.md) * [TCP粘包是怎么产生的?](./problems/TCP粘包是怎么产生的?.md) * [在TCP拥塞控制中,使用了什么样的算法?](./problems/在TCP拥塞控制中,使用了什么样的算法?.md) * [forward和redirect的区别是什么?](./problems/forward和redirect的区别是什么?.md) * [TCP的最大连接数是多少?](./problems/TCP的最大连接数是多少?.md) * [什么是IP地址?可以简单介绍下吗?](./problems/什么是IP地址?可以简单介绍下吗?.md) * [什么是mac地址?可以简单介绍下吗?](./problems/什么是mac地址?可以简单介绍下吗?.md) * [ip地址和mac地址的区别都有那些?](./problems/ip地址和mac地址的区别都有那些?.md) * [针对于ipv4地址不够用的情况,我们是如何解决的?](,.problems/针对于ipv4地址不够用的情况,我们是如何解决的?.md) # 数据库 * [谈谈数据库中索引的理解,索引和主键区别](./problems/谈谈数据库中索引的理解,索引和主键区别.md) * [现在普通关系数据库用得数据结构是什么类型的数据结构](./problems/现在普通关系数据库用得数据结构是什么类型的数据结构.md) * [索引的优点和缺点](./problems/索引的优点和缺点.md) * [关系型数据库和非关系数据库的特点](./problems/关系型数据库和非关系数据库的特点.md) * [乐观锁与悲观锁的区别](./problems/数据库中乐观锁与悲观锁的区别.md) * [数据库范式:第一第二第三范式](./problems/数据库范式第一第二第三范式.md) * [数据库日志类型作用](./problems/数据库日志类型作用.md) * [B TREE 和B+TREE的区别](./problems/BTREE和B+TREE的区别.md) * [union和join](./problems/union和join.md) * [Innodb和Myisam的区别](./problems/Innodb和Myisam的区别.md) * [mysql架构是什么样的?](./problems/mysql架构是什么样的?.md) * [一条SQL语句在数据库框架中的执行过程](./problems/一条SQL语句在数据库框架中的执行过程.md) * [数据库中常见的锁都有哪些?](./problems/数据库中常见的锁都有哪些.md) * [优化索引的办法有那些](./problems/优化索引的办法有那些.md) * [mysql为啥会产生死锁呢?如何避免他?](./problems/mysql为啥会产生死锁呢?如何避免他?.md) * [在Mysql中,数据要写入磁盘,redolog也要写入磁盘,为什么要多此一举?](./problems/在Mysql中,数据要写入磁盘,redolog也要写入磁盘,为什么要多此一举?.md) * [MySQL的行级锁有那些种类?](./problems/MySQL的行级锁有那些种类?.md) * [mysql索引失效有哪几种情况?](./problems/mysql索引失效有哪几种情况?.md) * [数据库事务隔离级别有那些?](./problems/数据库事务隔离级别有那些?.md) * [mysql数据库中,产生的redolog都会直接写入磁盘吗?](./problems/mysql数据库中,产生的redolog都会直接写入磁盘吗?.md) * [数据库的ACID特性](./problems/数据库的ACID特性.md) * [MySQL的主从复制是如何实现的?](./problems/MySQL的主从复制是如何实现的?.md) * [mysql的索引都有那些?](./problems/mysql的索引都有那些?.md) * [Redis 有什么作用?为什么要用 Redis](./problems/Redis有什么作用?为什么要用Redis.md) * [Redis 的底层数据结构有哪些](./problems/Redis的底层数据结构有哪些.md) * [介绍 intset 及其升级过程,支持降级吗](介绍intset及其升级过程,支持降级吗.md) * [介绍 SDS,Redis 为什么要使用 SDS 而不是 C 字符串](./problems/介绍SDS,Redis为什么要使用SDS而不是C字符串.md) * [介绍 dict,什么是 rehash?什么是渐进式 rehash](./problems/介绍dict,什么是rehash?什么是渐进式rehash.md) * [介绍 ziplist,什么是连锁更新?quicklist、lispack](./problems/介绍ziplist,什么是连锁更新?quicklist、lispack.md) * [介绍 Redis 的 skiplist](./problems/介绍Redis的skiplist.md) * [Redis 数据类型(对象)有哪些](./problems/Redis数据类型(对象)有哪些.md) * [Redis String 原理和使用场景(分布式锁)](./problems/RedisString原理和使用场景(分布式锁).md) * [Redis List 的原理和使用场景](./problems/RedisList的原理和使用场景.md) * [Redis Set 的原理和使用场景](./problems/RedisSet的原理和使用场景.md) * [Redis ZSet 的原理和使用场景(延迟队列)](./problems/RedisZSet的原理和使用场景(延迟队列).md) * [为什么 Zset 需要同时使用跳表和字典来实现?](./problems/为什么Zset需要同时使用跳表和字典来实现?.md) * [为什么 Redis 使用跳表而不是红黑树来实现 Zset](./problems/为什么Redis使用跳表而不是红黑树来实现Zset.md) * [Redis Hash 的原理和使用场景](./problems/RedisHash的原理和使用场景.md) * [Redis的HyperLogLog的原理和使用场景](./problems/Redis的HyperLogLog的原理和使用场景.md) * [Redis的Bitmap的原理和使用场景](./problems/Redis的Bitmap的原理和使用场景.md) * [Redis中Stream的原理和使用场景](./problems/Redis中Stream的原理和使用场景.md) * [Redis中数据(键值对)是怎么存储的](./problems/Redis中数据(键值对)是怎么存储的.md) * [Redis如何判断键是否过期?过期键的删除策略有哪些](./problems/Redis如何判断键是否过期?过期键的删除策略有哪些.md) * [Redis的key设定24h过期时间,那么24h后就一定会过期吗](./problems/Redis的ke设定24h过期时间,那么24h后就一定会过期吗.md) * [Redis内存淘汰策略](./problems/Redis内存淘汰策略.md) * [Redis的两种持久化方式以及优缺点](./problems/Redis的两种持久化方式以及优缺点.md) * [为什么AOF后台重写和BGSAVE命令都用子进程而不是线程?](./problems/为什么AOF后台重写和BGSAVE命令都用子进程而不是线程?.md) * [Redis是单线程还是多线程?Redis6.0之后为何又引入了多线程](./problems/Redis是单线程还是多线程?Redis6.0之后为何又引入了多线程.md) * [Redis不是单线程吗,为什么会存在并发安全问题](./problems/Redis不是单线程吗,为什么会存在并发安全问题.md) * [Redis单线程在多核机器里使用会不会浪费机器资源](./problems/Redis单线程在多核机器里使用会不会浪费机器资源.md) * [讲一讲Redis主从复制](./problems/讲一讲Redis主从复制.md) * [讲一讲Redis的哨兵](./problems/讲一讲Redis的哨兵.md) * [讲一讲Redis的集群](./problems/讲一讲Redis的集群.md) * [Redis主从复制、哨兵、集群的区别](./problems/Redis主从复制、哨兵、集群的区别.md) * [什么是一致性哈希,Redis集群为什么不用一致性哈希](./problems/什么是一致性哈希,Redis集群为什么不用一致性哈希.md) * [如何解决Redis集群数据丢失问题(异步复制、集群脑裂)](./problems/如何解决Redis集群数据丢失问题(异步复制、集群脑裂).md) * [介绍Redis事务(Redis能实现ACID吗)](./problems/介绍Redis事务(Redis能实现ACID吗).md) * [Redis缓存穿透问题及其解决方案](./problems/Redis缓存穿透问题及其解决方案.md) * [Redis缓存雪崩问题及其解决方案](./problems/Redis缓存雪崩问题及其解决方案.md) * [Redis缓存击穿问题及其解决方案](./problems/Redis缓存击穿问题及其解决方案.md) * [Redis的BigKey问题及其解决方案](./problems/Redis的BigKey问题及其解决方案.md) * [如何解决缓存和数据库一致性问题](./problems/如何解决缓存和数据库一致性问题.md) * [Redis和Memcached的区别](./problems/Redis和Memcached的区别.md) * [Redis为什么这么快](./problems/Redis为什么这么快.md) # 海量数据处理 * [bitmap](./problems/bitmap.md) * [Map-Reduce原理](./problems/Map-Reduce原理.md) * [BloomFilter原理](./problems/BloomFilter原理.md) * [Trie树原理](./problems/Trie树原理.md) * LSM树原理 # linux下操作命令以及工具 * [工作中常用的linux 命令](./docs/linux常用操作命令.md) * 编译工具GCC * 调试工具GDB * 性能优化工具Perf * 内存泄露检查工具Valgrind * makefile编写 # 程序员求职 * [简历模板](https://github.com/youngyangyang04/Markdown-Resume-Template) # 程序员的工具 工欲善其事必先利其器 * [vim配置](https://github.com/youngyangyang04/PowerVim) # 适合新手的开源项目 * [联机五子棋(c实现)](https://github.com/youngyangyang04/Gomoku) * [fileHttpServer(go语言实现)](https://github.com/youngyangyang04/fileHttpServer) * [Sqlgen(shell脚本实现的批量操作mysql)](https://github.com/youngyangyang04/PowerSqlgen) * [单机存储引擎(C++实现的跳表)](https://github.com/youngyangyang04/Skiplist-CPP) * [NosqlAttack (python实现)](https://github.com/youngyangyang04/NoSQLAttack) # 关于作者 大家好,我是程序员Carl,[《代码随想录》](https://programmercarl.com/other/publish.html)作者,哈工大师兄,先后在腾讯和百度从事分布式技术研发。 * [代码随想录网站](https://programmercarl.com) * [代码随想录Github](https://github.com/youngyangyang04/leetcode-master) * [代码随想录算法公开课](https://www.bilibili.com/video/BV1fA4y1o715) * [卡码网-专业ACM练习网站](https://kamacoder.com/)