随笔 - 165,  文章 - 0,  评论 - 4,  阅读 - 17887
03 2024 档案
使用三个线程交替打印ABC
摘要://用的是线程、互斥锁、条件变量 #include <iostream> #include <thread> #include <mutex> #include <condition_variable> using namespace std; mutex _mutex; //定义锁变量 condi 阅读全文
posted @ 2024-03-29 11:35 孜孜不倦fly 阅读(62) 评论(0) 推荐(0) 编辑
C++11新特性
摘要:1、成员变量默认初始化:构建一个类的对象不需要用构造函数初始化成员变量。 2、auto、decltype关键字:用于定义变量,编译器可以自动判断的类型(前提:定义一个变量时对其进行初始化); auto a = b; //根据b的类型推导类型 decltype(exp) a; //根据exp的类型推导 阅读全文
posted @ 2024-03-22 15:25 孜孜不倦fly 阅读(46) 评论(0) 推荐(0) 编辑
快速次幂
摘要:题目: 拿到一个数组,每次操作会将除了第x个元素之外的元素都翻倍,一共操作q次,求操作结束后所有元素之和 int main() { int n, q, xi; const long long mod = 1e9 + 7; cin >> n >> q; vector<long long> a(n); 阅读全文
posted @ 2024-03-18 15:07 孜孜不倦fly 阅读(5) 评论(0) 推荐(0) 编辑
合并 K 个升序链表
摘要:题目: class Solution { public: //合并两个升序链表 ListNode* mergetwo(ListNode* l1, ListNode* l2){ if(!l1 || !l2) return l1 ? l1 : l2; ListNode* dummy = new List 阅读全文
posted @ 2024-03-13 15:44 孜孜不倦fly 阅读(6) 评论(0) 推荐(0) 编辑
K 个一组翻转链表
摘要:题目: struct ListNode{ int val; ListNode* next; ListNode(): val(0), next(nullptr) {} ListNode(int _val): val(_val), next(nullptr) {} ListNode(int _val, 阅读全文
posted @ 2024-03-12 22:38 孜孜不倦fly 阅读(3) 评论(0) 推荐(0) 编辑
排序链表(自底向上归并排序)
摘要:题目: 时间复杂度:O(nlogn),空间复杂度:O(1) struct ListNode{ int val; ListNode* next; ListNode(): val(0), next(nullptr) {} ListNode(int _val): val(_val), next(nullp 阅读全文
posted @ 2024-03-11 21:24 孜孜不倦fly 阅读(10) 评论(0) 推荐(0) 编辑
DMA和零拷贝
摘要:一、DMA(直接内存访问) 1.作用:解决大量数据转移过度消耗CPU资源的问题 2.实现原理:在进行I/O设备和内存的数据传输时,数据搬运到内存的工作全部交给DMA控制器,而CPU不再参加与数据搬运相关的事情。 比如在文件传输:原本CPU负责将磁盘控制器缓冲区的内容搬运到内核缓冲区(PageCach 阅读全文
posted @ 2024-03-11 16:35 孜孜不倦fly 阅读(150) 评论(0) 推荐(0) 编辑
MySQL实现事务隔离的原理
摘要:一、read view四个字段 create_trx_id:创建该read view的事务的事务id m_ids:创建read view时,当前数据库中的活跃事务(指启动但还没提交的事务) min_trx_id:m_ids的最小值 max_trx_id:创建read view后,下一个事务的id 二 阅读全文
posted @ 2024-03-11 11:46 孜孜不倦fly 阅读(19) 评论(0) 推荐(0) 编辑
数组中的第K个最大元素
摘要:题目: //方法一,利用优先队列小顶堆greater(大顶堆是less) class Solution { public: int findKthLargest(vector<int>& nums, int k) { priority_queue<int, vector<int>, greater< 阅读全文
posted @ 2024-03-10 21:25 孜孜不倦fly 阅读(9) 评论(0) 推荐(0) 编辑
判断链表回文
摘要:题目: //方法一,空间复杂度O(n) class Solution { public: bool isPalindrome(ListNode* head) { vector<int> nums; //放进数组后用双指针判断 ListNode* cur = head; while(cur){ num 阅读全文
posted @ 2024-03-10 21:02 孜孜不倦fly 阅读(6) 评论(0) 推荐(0) 编辑
键入网址到网页显示,期间发生了什么?
摘要:1.解析url 2.生成http请求信息 3.DNS解析(域名解析) 4.TCP连接 5.发送http请求 6.服务器处理请求并返回响应 7.接收响应并显示网页 阅读全文
posted @ 2024-03-10 17:18 孜孜不倦fly 阅读(95) 评论(0) 推荐(0) 编辑
MySQL三种日志
摘要:一、undo log(回滚日志) 1.作用: (1)保证了事物的原子性(undo log 和 redo log 记录物理日志不一样,它是逻辑日志。可以认为当delete一条记录时, undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的updat 阅读全文
posted @ 2024-03-10 16:36 孜孜不倦fly 阅读(38) 评论(0) 推荐(0) 编辑
协程介绍
摘要:协程(Coroutine)是一种用户态的轻量级线程,它可以在单线程内实现多个执行线程的切换和调度,而无需依赖操作系统的线程管理机制(简单来说可以认为协程是线程里不同的函数,这些函数之间可以相互快速切换)。协程通常被称为“轻量级线程”或“用户级线程”。 协程的主要特点和优点包括: 轻量级: 协程的创建 阅读全文
posted @ 2024-03-09 15:35 孜孜不倦fly 阅读(48) 评论(0) 推荐(0) 编辑
C++ 17新特性
摘要:C++17 是 C++ 语言的一个重要版本,引入了许多新特性和改进,以提高开发效率和代码质量。以下是一些常用的 C++17 新特性: 结构化绑定(Structured Bindings):允许以声明式语法将复合类型(如元组、数组、结构体)中的成员绑定到变量上,从而简化代码并提高可读性。 #inclu 阅读全文
posted @ 2024-03-09 14:23 孜孜不倦fly 阅读(426) 评论(0) 推荐(0) 编辑
redis中zset的原理
摘要:一、zset有序集合的原理 如果有序集合元素个数少于128个且元素值小于64字节,使用压缩列表(新版本已经废弃压缩列表改用listpack数据结构了) 如果不满足上述条件,采用跳表作为redis的底层数据结构 二、压缩列表 1.由连续内存块组成的顺序性数据结构 2.根据数据大小和类型的不同进行数据内 阅读全文
posted @ 2024-03-08 17:11 孜孜不倦fly 阅读(407) 评论(0) 推荐(0) 编辑
C++中的static关键字
摘要:在 C++ 中,static 是一个关键字,用于声明静态变量、静态函数、静态类成员以及静态局部变量。static 关键字的作用取决于它所修饰的上下文,以下是 static 关键字的几种常见用法: 静态变量:在函数内部使用 static 关键字声明的变量称为静态局部变量。静态局部变量的生命周期延长到整 阅读全文
posted @ 2024-03-08 11:47 孜孜不倦fly 阅读(34) 评论(0) 推荐(0) 编辑
C++中的volatile关键字
摘要:在 C++ 中,volatile 是一个关键字,用于告诉编译器,该变量的值可能会在未知的时刻被意外地改变,因此编译器对于该修饰的变量的操作时应该保持对该变量内存地址的直接内存访问操作,而不应对访问该变量的代码进行任何优化。。volatile 关键字的主要作用是告诉编译器不要对该变量进行优化,以防止出 阅读全文
posted @ 2024-03-08 11:26 孜孜不倦fly 阅读(114) 评论(0) 推荐(0) 编辑
和为K的子数组
摘要:题目: 使用前缀和的方法可以解决这个问题,因为我们需要找到和为k的连续子数组的个数。通过计算前缀和,我们可以将问题转化为求解两个前缀和之差等于k的情况。 假设数组的前缀和数组为prefixSum,其中prefixSum[i]表示从数组起始位置到第i个位置的元素之和。那么对于任意的两个下标i和j(i 阅读全文
posted @ 2024-03-07 22:17 孜孜不倦fly 阅读(66) 评论(0) 推荐(0) 编辑
C++ LRU缓存
摘要:题目: //构建双向链表的节点结构(要有两个构造函数) struct Node{ int key, val; Node* pre; Node* next; Node():key(0), val(0), pre(nullptr), next(nullptr) {} Node(int _key, int 阅读全文
posted @ 2024-03-06 21:27 孜孜不倦fly 阅读(13) 评论(0) 推荐(0) 编辑
C++的4种强制类型
摘要:C++提供了4种强制类型转换的语法: 静态转换(static_cast) static_cast是用于在没有二义性的前提下进行基本数据类型转换的一种转换方式。它只能用于具有相关性的数据类型之间的转换,如将int类型转换为double类型。如果进行无关的数据类型之间的转换,编译器将报错。 用途:通常用 阅读全文
posted @ 2024-03-06 15:26 孜孜不倦fly 阅读(19) 评论(0) 推荐(0) 编辑
进程和线程的创建过程
摘要:进程和线程的创建过程是不同的,具体如下: 进程的创建过程: 进程的创建过程涉及到写时复制(Copy-on-Write,COW)机制。写时复制是一种可以延迟甚至避免拷贝数据的内存映射方式。新进程的创建过程大致如下: 操作系统为新进程分配必要的资源,如进程控制块等。 父进程的内存数据区域(代码段、数据段 阅读全文
posted @ 2024-03-06 15:19 孜孜不倦fly 阅读(25) 评论(0) 推荐(0) 编辑
Redis基本知识
摘要:一、什么是Redis Redis是一种基于内存的数据库,对数据的读写操作都是在内存中完成,因此读写速度非常快,用于存储键值对、缓存、消息队列、分布式锁等。 二、Redis和mencached的区别 相同:都是基于内存的数据库,读写都很快 不同: 1.Redis支持的数据类型更丰富(string、li 阅读全文
posted @ 2024-03-02 11:18 孜孜不倦fly 阅读(23) 评论(0) 推荐(0) 编辑
Nginx基本知识
摘要:一、什么是nginx Nginx是高性能的HTTP和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。 二、正向/反向代理 正向代理:nginx作为客户端去访问服务器。 反向代理:nginx作为服务器接收请求。此时反向代理服务器和目标 阅读全文
posted @ 2024-03-01 21:19 孜孜不倦fly 阅读(25) 评论(0) 推荐(0) 编辑


< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示