AcWing周赛 题解及知识点汇总 更新中...
AcWing-周赛 第104场题解T1: 4981. 第几项考察知识点:语法题
题解及分析:AcWing 4981. 第几项
T2: 4982. 进制考察知识点:进位制,位运算,枚举
题解及分析:AcWing 4982. 进制
T2: 4983. 最大的数考察知识点:枚举,思维题
题解及分析:AcWing 4983. 最大的数
AcWing-周赛 第103场题解T1: 4978. 解方程考察知识点:解方程,枚举
题解及分析:AcWing 4978. 解方程
T2: 4979. 合适的环考察知识点:无向图存储,枚举
题解及分析:AcWing 4979. 合适的环
T3: 4980. 猜数字考察知识点:思维题,(试除法)分解质因数,枚举,STL
题解及分析:AcWing 4980. 猜数字
AcWing-周赛 第102场题解T1: 4975. 或运算考察知识点:位运算
题解及分析:AcWing 4975. 或运算
T2: 4976. 倍增 考察知识点:分解质因数,思维题,理清题意
题解及分析:AcWing 4976. 倍增
T3: 4977. 三元组考察知识点:枚举,乘法 ...
C++11 多线程编程基础(下)
C++11 多线程编程基础(下)六、std::lock_guard 和 std::unique_lock参考:std::lock_guard 与 std::unique_lock
01.主要作用std::lock_guard会在构造函数时自动加锁,析构时自动解锁, 比较常用
互斥锁会在std::lock_guard对象生命周期结束时自动解锁
std::lock_guard是C++标准库中的一个用于管理互斥锁的RAII(资源获取即初始化)类。
它的主要作用是在创建std::lock_guard对象时自动锁定一个互斥锁,当std::lock_guard对象生命周期结束时,会自动解锁互斥锁,
这样可以确保在一段作用域内互斥锁的正确使用,避免了忘记解锁或因异常而未解锁锁的问题。
std::unique_lock主要特点是可以对互斥量进行更加灵活的管理,包括延迟加锁、条件变量、超时等, 但所占资源也会变多。
std::unique_lock在离开作用域后,会触发析构自动解锁。
try_lock_for是C++标准库中std::mutex类的一个成员函数,用于尝试在一段指定的时间内获取互斥锁。 ...
C++11 多线程编程基础(上)
C++11 多线程编程基础(上)参考的学习视频:
【视频 - C++11 多线程编程 - 小白零基础到手撕线程池】
【视频 - C++11 多线程并发 基础入门教程 1.1 创建线程(thread)】
课程学习目录:
一、std::thread线程库01.基础知识进程:正在运行中的程序(是动态的)
线程:可以让OS在同一时刻运行多个函数(进程中的进程)
OS可以有多个进程,一个进程也可以有多个线程
程序可利用的线程最大数量,取决于你环境的CPU核数
为什么要使用线程?
单线程是串行执行,效率是比较低的
利用好多线程可提高程序的运行效率
02.常见用法
#include
std::thread t(function_name, args…);
std::thread th(func, ...);
这里创建了一个名为th的线程,入口函数是func; 并且可以给入口函数传参;
th.join();
让整个程序在这个函数卡住,阻塞在这;
让主线程等待,直到子线程执行完毕;
th.detach();
让主线程与子线程分离,此时主线程是可以结束,子线程是挂在后台的;
注意:我们需 ...
CMU15-445-P1 Buffer Pool Manager
[CMU15-445] P1 Buffer Pool Manager【视频 前置知识-缓冲池】
【文档 p1-lab详情地址】
Task #1 - LRU-K Replacement Policy任务要求This component is responsible for tracking page usage in the buffer pool. You will implement a new class called LRUKReplacer in src/include/buffer/lru_k_replacer.h and its corresponding implementation file in src/buffer/lru_k_replacer.cpp. Note that LRUKReplacer is a stand-alone class and is not related to any of the other Replacer classes. You are expected to implement only the LRU-K replacemen ...
CMU15-445-P0 C++ Primer
[CMU15-445] P0 C++ Primer【文档 p0-lab详情地址】
Task#1 Copy-On-Write Trie要求In this task, you will need to modify trie.h and trie.cpp to implement a copy-on-write trie. In a copy-on-write trie, operations do not directly modify the nodes of the original trie. Instead, new nodes are created for modified data, and a new root is returned for the newly-modified trie. Copy-on-write enables us to access the trie after each operation at any time with minimum overhead(最小开销). Consider inserting ("ad", ...
CMU 15-445 2023-Spring Lab记录合集
CMU 15-445 2023-Spring lab记录合集一、课程介绍课程总体介绍:转自课程介绍部分:CMU 15-445: Database Systems
这是一门质量极高,资源极齐全的 Database 入门课,这门课的 Faculty 和背后的 CMU Database Group 将课程对应的基础设施(Autograder, Discord) 和课程资料
(Lectures, Notes, Homework) 完全开源,让每一个愿意学习数据库的同学都可以享受到几乎等同于 CMU 本校学生的课程体验。
这门课的亮点在于 CMU Database Group 专门为此课开发了一个教学用的关系型数据库 bustub,并要求你对这个数据库的组成部分进行修改,实现上述部件的功能。
具体来说,在 15-445 中你需要在四个 Project 的推进中,实现一个面向磁盘的传统关系型数据库 Bustub 中的部分关键组件。
主要包括以下4块内容:
Buffer Pool Manager (内存管理),
B Plus Tree (存储引擎),
Query Executors & ...
C++ 设计模式(单例+工厂)
C++ 设计模式(单例+工厂)1.单例模式推荐一个讲解单例视频,整体概述比较全面:【视频 C++单例模式:从设计到实现】
工作具体项目中的应用,可以看看这个视频,讲了单例的各种用法:【视频 C++单例模式】
下面是我自己从上面视频中的整理的一些讲解的理解和代码实现,主要是懒汉式单例模式。
(1).概念通过单例模式的方法创建的类在当前进程中有且仅有一个实例。单例模式,属于创建类型的一种常用的软件设计模式。
具体细分:
懒汉式单例,会提供一个创建对象的方法(需要使用时创建)
饿汉式单例,在类加载的时候就创建对象(程序运行时创建,比较着急)
共同点:
01.要声明一个静态的类引用变量
02.类的构造函数要私有
03.提供一个公有的创建对象的方法,能够全局访问
区别:
懒汉式单例是在方法调用时创建对象,而饿汉式是在类加载是创建对象;
多线程情况下,懒汉式单例存在线程安全问题,饿汉式不存在线程安全问题。
(2).应用场景对程序运行期间对全局唯一资源的统一访问。
比如,配置管理、日志记录、线程池、连接池、内存池、对象池、消息队列等。
自己最近学习的tcp服务端,就用到了单例模式(懒汉 ...
C/C++ 内存四区总结
C/C++ 内存四区总结0.简单概述C/C++程序在执行时,将内存大方向划分为4个区域(内存四区)来存放所有数据。
程序运行前产生
代码区:存放函数体的二进制代码,由操作系统进行管理的
全局区:存放全局变量、静态变量以及常量
程序运行后产生
栈区:由编译器自动分配释放, 存放函数的参数值、局部变量等
堆区:由程序员分配和释放, 若程序员不释放,程序结束时由操作系统回收
内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程。
按是否在全局区来划分变量和常量:
虚拟地址空间(操作系统的视角)
虚拟地址空间被分配给进程,用于存储程序代码、数据和堆栈等。
小总结:
(1).全局区存放哪些数据?
全局变量、静态变量、常量(字符串常量,const修饰的全局常量或变量)
(2).不在全局区中的有哪些?
局部变量(栈区),const修饰的局部常量或变量
(3).区分const修饰的局部常量或变量:
const 修饰的局部常量或变量在声明时必须初始化,并且一旦初始化后,就不能再改变它们的值。
12345678910111213141516171 ...
LeetCode Hot100 分类刷题汇总
LeetCode Hot100 分类刷题汇总目前进度:68/100
对于算法底子不好的我,认为分类汇总的刷题的效率会高很多,通过这些总结希望自己回顾复习时能更快的回忆起解题思路。
如果发现我的代码有误或者你有不理解的地方,欢迎交流,可以在评论区留言。
传送门
数组
位运算
二分查找
双指针
链表
栈和队列
单调栈
哈希表
树
图
回溯和 DFS
BFS
动态规划
贪心
数组
题目
难度
标签
题解
【31. 下一个排列】
MID
双指针、字典序
题解
【48. 旋转图像】
EASY
矩阵翻转
题解
【169. 多数元素】
EASY
摩尔投票法、数组处理
题解
【215. 数组中的第K个最大元素】
MID
快速选择排序
题解
【238. 除自身以外数组的乘积】
MID
前缀和、前后缀分解
题解
【448. 找到所有数组中消失的数字】
EASY
数组处理
题解
位运算
题目
难度
标签
题解
【338. 比特位计数】
EASY
位运算、枚举
题解
【136. 只出现一次的数字】
EASY
位运算、异或性质
题 ...
C++ 算法刷题 - 常用技巧汇总
C++ 算法刷题 - 常用技巧汇总定义变量自带的宏常量123456int N = INT_MAX; // 2147483647int M = INT_MIN; // -2147483648const int INF = 0x3f3f3f3; INF: // 66319347,在图论中通常用来代替最大值,防止运算过程中溢出std::cout << "N: " << N << std::endl;std::cout << "M: " << M << std::endl;std::cout << "INF: " << INF << std::endl;
字符串及字符处理字符串初始化让字符串重复,利用构造函数来初始化
12std::string str(10, 'h'); std::cout << str << std::endl; // 会输出10个h
字符串判断函数
i ...