avatar
文章
26
标签
16
分类
6
首页
时间轴
标签
分类
关于
首页
时间轴
标签
分类
关于

qyhome

C++求最大最小公约数
发表于2025-06-29
在 C++ 中,可以使用 欧几里得算法(辗转相除法) 高效计算两个数的最大公约数(GCD)。以下是几种实现方式: 方法 1:递归实现(推荐) #include <iostream>using namespace std;int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b);}int main() { int a = 24, b = 36; cout << "GCD of " << a << " and " << b << " is: " << gcd(a, b) << endl; return 0;} 输出: GCD of 24 and 36 is: 12 方法 2:迭代实现 #include <iostream>using namespace std;int...
什么是死锁?如何避免死锁?
发表于2025-06-25|计算机基础知识|计算机基础知识•操作系统
什么是死锁?如何避免死锁? 死锁是指两个或多个进程在争夺系统资源时,由于互相等待对方释放资源而为无法继续执行的状态。 死锁只有同时满足以下四个条件才会发生: 互斥条件:一个进程占用了某个资源时,其他进程无法同时占用该资源。 请求保持条件:一个线程因为请求资源而阻塞的时候,不会释放自己的资源。 不可剥夺条件:资源不能被强制性地从一个进程中剥夺,只能由持有者自愿释放。 环路等待条件:多个进程之间形成一个循环等待资源的链,每个进程都在等待下一个进程所占有的资源。 只需要破坏上面一个条件就可以破坏死锁。 破坏请求与保持条件:一次性申请所有的资源。 破坏不可剥夺条件:占用部分资源的线程进一步申请其他资源时,如果申请不到,可以主动释放它占有的资源。 破坏循环等待条件:靠按序申请资源来预防。让所有进程按照相同的顺序请求资源,释放资源则反序释放。
每周LeetCode回顾-2
发表于2025-06-23|leetcode|C++•leetcode
633. 平方数之和 思路:双指针 对于给定的非负整数 \(c\)​,需要判断是否存在整数 \(a\)​ 和 \(b\)​,使得 \(a^2+b^2=c\)​。可以枚举 \(a\)​ 和 \(b\)​ 所有可能的情况,时间复杂度为 \(O(c^2)\)​。但是暴力枚举有一些情况是没有必要的。例如:当 \(c=20\)​ 时,当 \(a=1\)​ 的时候,枚举 \(b\)​ 的时候,只需要枚举到 \(b=5\)​ 就可以结束了,这是因为 \(1^2+5^2=25>20\)​。当 \(b>5\)​ 时,一定有 \(1^2+b^2>20\)​。 假设 \(a\leq b\),初始时 \(a=0\),\(b=\sqrt c\),进行如下操作: 如果 \(a^2+b^2=c\)​,我们找到了题目要求的一个解,直接返回 true; 如果 \(a^2+b^2<c\),此时需要将 \(a\) 的值加 \(1\),继续查找; 如果 \(a^2+b^2>c\),此时需要将 \(b\) 的值减 \(1\),继续查找。 当...
进程间通信方式
发表于2025-06-23|计算机基础知识|计算机基础知识•操作系统
进程间通信方式 管道 命名管道 共享内存 消息队列 套接字(socket) 信号 信号量 管道:是一种半双工的通信方式,数据只能单向流动而且只能在具有父子进程关系的进程间使用。 有名管道:也是一种半双工的通信方式,但是它允许无亲缘关系进程间的通信。 信号量:是一个计数器,可以用来控制多个进程对共享资源的访问,常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此主要作为进程间以及同一进程内不同线程之间的同步手段。 消息队列:消息队列是消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。 信号:用于通知接收进程某个事件已经发生,从而迫使进程执行信号处理程序。 共享内存:就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存也是最快的进程间通信方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,比如信号量配合使用,来实现进程间同步和通信。 Socket 套接字:是支持...
线程的同步方式
发表于2025-06-23|计算机基础知识|计算机基础知识•操作系统
线程间的同步方式 线程同步机制是指在多线程编程中,为例保证线程之间的互不干扰,而采用的一种机制。常见的线程同步机制有以下几种: 互斥锁:是最常见的线程同步机制。它允许只有一个线程同时访问被保护的临界区(共享资源)。 读写锁:允许多个线程同时读取共享资源,但只允许一个线程写入资源。 条件变量:用于线程间通信,允许一个线程等待某个条件满足,而其他线程可以发出信号通知等待线程。通常与互斥锁一起使用。 信号量:用于控制多个线程对共享资源进行访问的工具。
CPP容器-string
发表于2025-06-16|C++基础知识|C++•stl•容器•数据结构
C++中的string容器详解 std::string是C++标准库中用于处理字符串的容器类,它提供了丰富的字符串操作功能,比C风格的字符数组(char[])更安全、更方便。 基本特性 动态大小:string可以动态调整大小,无需手动管理内存 丰富的操作:提供多种字符串操作方法 安全性:自动处理内存分配和释放,减少缓冲区溢出风险 兼容性:可以与C风格字符串互操作 头文件 使用string需要包含头文件: #include <string> 构造函数 string提供了多种构造函数: std::string s1; // 默认构造,空字符串std::string s2("Hello"); // 从C风格字符串构造std::string s3(s2); // 拷贝构造std::string s4(5, 'x'); // 构造包含5个'x'的字符串std::string s5(s2.begin(),...
C++中常用的数学函数
发表于2025-06-09|C++基础知识|C++
在C++中,常用的数学函数主要通过 <cmath> 头文件提供(C++中也可用 <math.h>,但推荐使用C++风格的头文件)。以下是一些常用的数学函数及其说明: 1. 基本运算 函数 描述 示例 abs(x) 绝对值(整数,<cstdlib>) abs(-5) → 5 fabs(x) 浮点数的绝对值 fabs(-3.14) → 3.14 fmod(x, y) 浮点数取余 fmod(10.5, 3.0) → 1.5 remainder(x, y) 带符号的余数(IEEE规范) remainder(10.5, 3.0) → -0.5 fmax(x, y) 返回最大值 fmax(2.0, 3.0) → 3.0 fmin(x, y) 返回最小值 fmin(2.0, 3.0) → 2.0 2....
阿里云oss-picGo-typora搭建图床
发表于2025-06-09|问题记录|Hexo•Markdown•阿里云OSS•picGo•typora
Typora 图床设置 前言:因为开始记录博客,发现本地存储的图片路径与服务器路径总是不太一样,总是复制粘贴又不太方便,在此选择搭建图床来进行使用。 软件介绍 我们需要将图片上传到云(专业称图床)上,而云有多种,如下: 阿里云oss 专业,快速,存储空间便宜,一年9块钱40G。但是下行流量需要另外收费。 github...
CPP中sort函数的详细使用指南
发表于2025-06-06|C++基础知识|C++•stl
C++ sort 算法的详细使用指南 sort 是 C++ STL 中最常用的排序算法,定义在 <algorithm> 头文件中。它使用高效的排序算法(通常是快速排序的变体)对序列进行排序。 基本用法 1. 默认排序(升序) #include <algorithm>#include <vector>#include <iostream>int main() { std::vector<int> nums = {4, 2, 5, 3, 1}; // 默认升序排序 std::sort(nums.begin(), nums.end()); for (int num : nums) { std::cout << num << " "; } // 输出: 1 2 3 4 5} 2. 降序排序 #include...
CPP中常用的STL算法
发表于2025-06-06|C++基础知识|C++•stl
C++ 中常用的 STL 算法 STL (Standard Template Library) 提供了大量实用的算法,主要定义在 <algorithm> 头文件中。以下是一些最常用的 STL 算法: 非修改序列操作 for_each - 对范围内的每个元素应用函数 std::vector<int> v{1, 2, 3};std::for_each(v.begin(), v.end(), [](int i){ std::cout << i << " "; }); all_of/any_of/none_of - 检查范围中元素是否满足条件 bool all_even = std::all_of(v.begin(), v.end(), [](int i){ return i%2 == 0; }); 修改序列操作 copy/copy_if - 复制元素 std::vector<int>...
123
avatar
QY
学习记录
文章
26
标签
16
分类
6
Follow Me
最新文章
C++求最大最小公约数2025-06-29
什么是死锁?如何避免死锁?2025-06-25
每周LeetCode回顾-22025-06-23
进程间通信方式2025-06-23
线程的同步方式2025-06-23
分类
  • C++基础知识9
  • leetcode2
  • 个人博客1
  • 数据结构与算法1
  • 计算机基础知识8
  • 问题记录4
标签
C++stl排序算法leetcode容器数据结构HexoMarkdownLatex计算机基础知识操作系统Git计算机网络阿里云OSSpicGotypora
归档
  • 六月 2025 16
  • 五月 2025 10
网站信息
文章数目 :
26
本站总字数 :
24.6k
本站访客数 :
本站总浏览量 :
最后更新时间 :
©2025 By QY
框架 Hexo 7.3.0|主题 Butterfly 5.3.5
赣ICP备2025062752号-1