质数和约数
一、知识和经验
把质数和约数放在一起就是因为他们有非常多的联系,为了验证这个观点我们可以先学习唯一分解定理:一个大于 1 的自然数一定能被唯一分解为有限个质数的乘积。
而且一个数不仅能被质数分解,原本也应该被自己的约数分解,所以在数论的题目中,一个或多个数被分解的题型可以是让你求被质数分解和被约数分解。所以他们两个放在一起既是相似,也可以起到对比防止混淆。
这篇文章我更倾向于写成质数与约数的对比文章,所以筛质数这个操作我会放到文章最后介绍。
二、判断质数
质数从 2 开始,并且除了 1 和本身没有约数。优化:只试 [2, 根号x]
bool isprime(int x)
{if(x <= 1)return false;for(int i = 2; i <= x / i; i++)if(x % i == 0)return false;return true;
}
例题:质数筛
P5736 【深基7.例2】质数筛 - 洛谷
// https://www.luogu.com.cn/problem/P5736
#include <bits/stdc++.h>
using namespace std;bool isprime(int x)
{if(x <= 1)return false;for(int i = 2; i <= x / i; i++)if(x % i == 0)return false;return true;
}int main()
{int n;cin >> n;for(int i = 0; i < n; i++){int x;cin >> x;if(isprime(x))cout << x << ' ';}return 0;
}
三、分解质数和分解约数(一个数)
1、分解质数
其实就是实现唯一分解定理,也就是短除法一个个质数试。
这里有两种循环方法:
(1)[2, 根号x] 中的质数进行短除,毋庸置疑肯定是对的。
(2)直接 [2, 根号x] 循环试,这方法无非就是把合数也进行了循环,但是细想就会发现合数对应的分解质数一定出现在合数之前,所以在遇到合数的时候对应的质数已经短除完了,合数就算进入循环也不会产生影响
虽然方法二更简单,但是效率没有方法一高(实测过)
// 方法1
void deprime(int x)
{for(int i = 2; i <= x / i; i++){if(isprime(i)){while(x % i == 0){x /= i;a[i]++;}}}if(x > 1)a[x]++;
}// 方法2
void deprime(int x)
{for(int i = 2; i <= x / i; i++){while(x % i == 0){x /= i;a[i]++;}}if(x > 1)a[x]++;
}
a[i] 就是质数 i 对应公式中的指数
2、分解约数
分解约数很简单,就是 [1, 根号x] 试数
int main()
{int n; cin >> n;for(int i = 1; i <= n / i; i++){if(n % i == 0)cout << i << ' ';if(i * i != n)cout << n / i << ' ';}return 0;
}
3、对比
都是试数,但是质数范围 [2, 根号x],约数范围 [1, 根号x]
四、分解质数和分解约数(多个数)
1、暴力解法
既然一个数都能分解,那多个数分解的暴力解法就是枚举所有数,然后把所有数分解。
例题:质因子分解
P2043 质因子分解 - 洛谷
// https://www.luogu.com.cn/problem/P2043
// 质因子分解:模拟短除法,[2, 根号n]一个数除完之后下一个,因为合数一定被前面的质数分解完了,所以可以直接枚举,反正不会有合数
#include <bits/stdc++.h>
using namespace std;const int N = 1e4 + 10;
int a[N];void deprime(int x)
{for(int i = 2; i <= x / i; i++){while(x % i == 0){x /= i;a[i]++;}}if(x > 1)a[x]++;
}int main()
{int n;cin >> n;for(int i = 2; i <= n; i++){deprime(i);}for(int i = 2; i <= n; i++)if(a[i])cout << i << ' ' << a[i] << endl;return 0;
}
2、分解质数优化
例题:阶乘分解
P10495 阶乘分解 - 洛谷
分组思想:质数 x 在阶乘中的分解就是 x 的次方在 [1, n] 中的分组个数总和。
// https://www.luogu.com.cn/problem/P10495
#include <bits/stdc++.h>
using namespace std;
#define ll long long// 枚举质数及其次方来达到统计出现多少质数的目的
const int N = 1e6 + 10;
int a[N];bool isprime(int x)
{if(x <= 1)return false;for(int i = 2; i <= x / i; i++)if(x % i == 0)return false;return true;
}int main()
{int n;cin >> n;// 枚举质数for(int i = 2; i <= n; i++){if(isprime(i)){// 枚举质数及其次方统计ll p = i;while(p <= n){a[i] += n / p;p *= i;}}}for(int i = 2; i <= n; i++)if(a[i])cout << i << ' ' << a[i] << endl;return 0;
}
3、分解约数优化
例题:约数个数的和
登录—专业IT笔试面试备考平台_牛客网
分组思想:一个数 x 作为约数在 [1, n] 中的个数就是分组之后的组数。
// https://ac.nowcoder.com/acm/problem/14682
// 1~n所有约数的和:反过来枚举约数即可
// 对于一个x,在[1, n]中有n / x个数的约数有x
#include <bits/stdc++.h>
using namespace std;
#define ll long longint main()
{int n;cin >> n;ll ans = 0;for(int i = 1; i <= n; i++)ans += n / i;cout << ans;return 0;
}
五、唯一分解定理在约数中的应用
唯一分解定理中的质数 p 和对应的指数 a 对于约数是有用的。
一个数的约数个数等于 ai 加一之后全部的乘积
一个数的约数之和等于 pi 从指数 0 到 ai 的总和的全部乘积
例题:约数之和
登录—专业IT笔试面试备考平台_牛客网
// https://ac.nowcoder.com/acm/problem/22196
// 1、枚举全部约数相加
// 2.质因数分解之后用pa
// n的质因数不一定就比n小,可以相等
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e5 + 10;
int a[N];void deprime(int x)
{for(int i = 2; i <= x / i; i++){while(x % i == 0){x /= i;a[i]++;}}if(x > 1)a[x]++;
}int main()
{int n;cin >> n;deprime(n);ll ans = 1;for(int i = 2; i <= n; i++){if(a[i] != 0){ll tmp = 1;ll x = 1;for(int j = 0; j < a[i]; j++){x *= i;tmp += x;}ans *= tmp;}}cout << ans;return 0;
}
六、质数筛
暴力解法就是每一个数判断是不是质数。
接下来学的两个算法一定一定是要掌握原理!!!!!
而不是说我会写 [1, n] 里面两种筛质数方法的代码就可以的!!!!!
怎么筛出来的一定一定要搞清楚!!!!不然遇到新题就是不会
1、埃氏筛
(1)原理
质数的倍数一定不是质数。
(2)代码实现
#include <bits/stdc++.h>
using namespace std;
#define ll long long const int N = 1e8 + 10;
bool st[N];
ll cnt = 0;
int p[N];
ll n, q;// 埃氏筛
// 获取[1, n]中所有素数存储在p
// 思路:一个素数的倍数一定不是素数,即 1 * p, 2 * p...都可以筛掉
// 优化:可以直接从 p * p 开始筛,之前的[1, p - 1]被之前的数筛掉了
void agetprime()
{for (ll i = 2; i <= n; i++){if (st[i] == false){p[cnt++] = i;for (ll j = i; j * i <= n; j++)st[i * j] = true;}}
}
i 用于枚举所有质数,j 枚举对应质数的倍数,两者相乘就是被筛掉的数
2、欧拉筛
(1)原理
模拟埃氏筛就会发现同一个合数可能会被筛掉很多次,如果一个数只会被筛掉一次,那么时间复杂度就会是 O(N),怎么做到呢?一个合数只会被他的最小质因子筛掉。
代码模拟逻辑就是:2~n 的所有数 i 都要遍历,对应的倍数 j 是 [2, i] 中所有的质数,两者相乘的数被筛掉,如果 i 是 j 的倍数,终止循环。
(2)代码实现
#include <bits/stdc++.h>
using namespace std;
#define ll long long const int N = 1e8 + 10;
bool st[N];
ll cnt = 0;
int p[N];
ll n, q;// 欧拉筛
// 在埃氏筛中许多合数会被多次置true,如果每个合数只会被筛一次那么就是O(N)
// 也就是每一个合数只会被自己的最小质因子筛掉,12 = 2 * 2 * 3,那么12只被2筛掉一次
// 做到2点即可:埃氏筛中的j是从质数表中遍历,且一旦i能整除j就停止循环
// 上述的j是一个质数,代码中由于要循环遍历,所以j是下标,p[j]对应质数
// 这里由于每一个合数只会被自己的最小质因子筛掉,所以后面的合数可能会被前面的合数乘上质数列表中的一个数给筛掉
// 所以每一个数都要遍历到,不像埃氏筛中只遍历质数
void ogetprime()
{for (ll i = 2; i <= n; i++){if (st[i] == false)p[cnt++] = i;for (int j = 0; i * p[j] <= n; j++){// 如果i是合数,遍历到最小质因子结束// 如果i是质数,遍历到他自己结束// 所以判断成立的时候p[j]就是i的最小质因子 st[i * p[j]] = true;if (i % p[j] == 0) break;}}
}
对应例题:线性筛质数
P3383 【模板】线性筛素数 - 洛谷
3、对比
埃氏筛基于的是质数,只要给我 [2, n] 区间内的质数,我就能筛出 [2, n * n] 的质数,因为质数的倍数不是质数,即用一段区间的质数筛质数。
欧拉筛基于的是当前数之前所有的质数,然后我当前数乘以遍历质数去筛掉后面的数,即用连续的一段区间的质数筛质数。
一个是可以用毫无关联的一组质数筛质数,一个是必须连续的筛 [2, n] 质数。
4、例题
(1)素数密度
P1835 素数密度 - 洛谷
// https://www.luogu.com.cn/problem/P1835
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
#define ll long long
int p[N];
int cnt = 0;
bool st[N];// 欧拉筛+线性筛
// 欧拉筛出[2, sqrt(r)]
void ogetprime(int n)
{for(ll i = 2; i <= n; i++){if(st[i] == false)p[cnt++] = i;for(int j = 0; i * p[j] <= n; j++){st[i * p[j]] = true;if(i % p[j] == 0) break;}}
}bool ans[N];
int main()
{int l, r;cin >> l >> r;if(l < 2)l = 2;int limit = sqrt(r);ogetprime(limit);// 埃氏筛:现在已经有[2, sqrt(r)]所有质数,每个质数的倍数不是质数// 以前没有范围时倍数从p[i]开始,现在有l左边界,倍数从左边界向上整除p[i]或者至少2,向上整除?(l + x - 1) / xfor(int i = 0; i < cnt; i++){ll x = p[i];for(ll j = max(x * 2, (l + x - 1) / x * x); j <= r; j += x){ans[j - l] = true;}}int sz = 0;for(int i = l; i <= r; i++)if(ans[i - l] == false)sz++;cout << sz;return 0;
}
要注意左边界可能为1,此时变成2
如果左边界是质数,仅仅是向上取整还不够,倍数必须是2才能避免质数被筛掉。
(2)哥德巴赫猜想
UVA543 Goldbach's Conjecture - 洛谷
// https://www.luogu.com.cn/problem/UVA543
#include <bits/stdc++.h>
using namespace std;
#define ll long longconst int N = 1e6 + 10;
int p[N];
int cnt = 0;
bool st[N];void ogetprime()
{for(ll i = 2; i <= N; i++){if(st[i] == false)p[cnt++] = i;for(ll j = 0; p[j] * i <= N; j++){st[p[j] * i] = true;if(i % p[j] == 0) break;}}
}void f(int x)
{for(int l = 1; l < cnt; l++){if(st[x - p[l]] == false){printf("%d = %d + %d\n", x, p[l], x - p[l]);return;}}cout << "Goldbach's conjecture is wrong" << endl;
}int main()
{ogetprime();int x;while(1){cin >> x;if(x == 0)break;f(x);}return 0;
}
相关文章:
质数和约数
一、知识和经验 把质数和约数放在一起就是因为他们有非常多的联系,为了验证这个观点我们可以先学习唯一分解定理:一个大于 1 的自然数一定能被唯一分解为有限个质数的乘积。 而且一个数不仅能被质数分解,原本也应该被自己的约数分解…...
OSPF的四种特殊区域(Stub、Totally Stub、NSSA、Totally NSSA)详解
OSPF的四种特殊区域(Stub、Totally Stub、NSSA、Totally NSSA)通过限制LSA的传播来优化网络性能,减少路由表规模。以下是它们的核心区别: 1. Stub 区域(末梢区域) 允许的LSA类型:Type 1-3&#…...
Docker中运行的Chrome崩溃问题解决
问题 各位看官是否在 Docker 容器中的 Linux 桌面环境(如Xfce)上启动Chrome ,遇到了令人沮丧的频繁崩溃问题?尤其是在打开包含图片、视频的网页,或者进行一些稍复杂的操作时,窗口突然消失?如果…...
【从零实现JsonRpc框架#3】线程模型与性能优化
1.Muduo 的线程模型 Muduo 基于 Reactor 模式 ,采用 单线程 Reactor 和 多线程 Reactor 相结合的方式,通过事件驱动和线程池实现高并发。 1. 单线程模型 核心思想 :所有 I/O 操作(accept、read、write)和业务逻辑均…...
Kubernetes资源管理之Request与Limit配置黄金法则
一、从"酒店订房"看K8s资源管理 想象你经营一家云上酒店(K8s集群),每个房间(Node节点)都有固定数量的床位(CPU)和储物柜(内存)。当客人(Pod&#…...
Windows 上使用 WSL 2 后端的 Docker Desktop
执行命令 docker pull hello-world 执行命令 docker run hello-world 执行命令 wsl -d Ubuntu...
OpenLayers根据任意数量控制点绘制贝塞尔曲线
以下是使用OpenLayers根据任意数量控制点绘制贝塞尔曲线的完整实现方案。该方案支持三个及以上控制点,使用递归算法计算高阶贝塞尔曲线。 实现思路 贝塞尔曲线原理:使用德卡斯特里奥算法(De Casteljau’s Algorithm)递归计算任意…...
使用 Jackson 在 Java 中解析和生成 JSON
JSON(JavaScript Object Notation)是一种轻量级、跨语言的数据交换格式,因其简单易读和高效解析而广泛应用于 Web 开发、API 通信和数据存储。在 Java 中,处理 JSON 是许多应用程序的核心需求,尤其是在与 RESTful 服务交互或管理配置文件时。Jackson 是一个功能强大且广受…...
Qt中在子线程中刷新UI的方法
Qt中在子线程中刷新UI的方法 在Qt中UI界面并不是线程安全的,意味着在子线程中不能随意操作UI界面组件(比如按钮、标签)等,如果强行操作这些组件有可能会导致程序崩溃。那么在Qt中如何在子线程中刷新UI控件呢? 两种方…...
封装 RabbitMQ 消息代理交互的功能
封装了与 RabbitMQ 消息代理交互的功能,包括发送和接收消息,以及管理连接和通道。 主要组件 依赖项: 代码使用了多个命名空间,包括 Microsoft.Extensions.Configuration(用于配置管理)、RabbitMQ.Client&a…...
关于ffmpeg的简介和使用总结
主要参考: 全网最全FFmpeg教程,从新手到高手的蜕变指南 - 知乎 (zhihu.com) FFmpeg入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。-CSDN博客 FFmpeg教程(超级详细版) - 个人文章 - S…...
计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 08.阴影
阴影 没有阴影的渲染效果如下,看起来不真实: 有阴影的渲染效果如下,看起来真实: 显示阴影有两种方式,一种是原书中的方式,另一种是采用光线追踪技术,该技术可以参考ShaderToy学习笔记 08.阴…...
[面试]SoC验证工程师面试常见问题(七)低速接口篇
SoC验证工程师面试常见问题(七)低速接口篇 摘要:低速接口是嵌入式系统和 SoC (System on Chip) 中常用的通信接口,主要用于设备间的短距离、低带宽数据传输。相比高速接口(如 PCIe、USB 3.0),低速接口的传输速率较低(通常在 kbps 到几 Mbps 范围),但具有简单…...
算法训练营第十三天|226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、111.二叉树的最小深度
递归 递归三部曲: 1.确定参数和返回值2.确定终止条件3.确定单层逻辑 226.翻转二叉树 题目 思路与解法 第一想法: 递归,对每个结点进行反转 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, le…...
电子电器架构 --- 车载网关的设计
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界…...
`C_PiperInterface` 类接口功能列表
C_PiperInterface 类接口功能列表 C_PiperInterface 提供了全面的接口,用于控制 Piper 机械臂的运动、查询状态、设置参数以及管理 SDK 限制。 官仓链接 以下是 C_PiperInterface 类中所有接口的功能总结: 1. 初始化与连接相关接口 __new__: 实现单例…...
D. Apple Tree Traversing 【Codeforces Round 1023 (Div. 2)】
D. Apple Tree Traversing 题目大意 有一个包含 n n n 个节点的苹果树,初始时每个节点上有一个苹果。你有一张纸,初始时纸上没有任何内容。 你需要通过以下操作遍历苹果树,直到所有苹果都被移除: • 选择一个苹果路径 ( u , v…...
Docker镜像搬运工:save与load命令的实战指南
在日常的容器化开发中,镜像的搬运和部署是每个开发者必须掌握的技能。今天我们将深入探讨Docker的"save"和"load"这对黄金搭档,揭秘它们在镜像管理中的妙用。 一、基础认知:镜像的打包与解包 docker save 和 docker loa…...
查看Electron 应用的调试端口
以下是一些可以知道已发布第三方 Electron 应用调试端口的方法: * **通过命令行参数查看** : * 如果该 Electron 应用在启动时添加了类似 --remote-debugging-portxxxx 或 --inspectxxxx 的参数,那么其调试端口就是该参数指定的端口号。比…...
各种环境测试
加载测试专用属性 当在测试时想要加入某些配置且对其他测试类不产生影响是可以用Import注释添加配置 测试类中启动web环境 默认为none不开启...
腾讯云低代码实战:零基础搭建家政维修平台
目录 1. 欢迎与项目概览1.1 教程目的与受众1.2 项目愿景与目标:我们要搭建一个怎样的平台?1.3 平台核心构成与架构解析1.4 技术栈选择与考量1.5 如何高效阅读本教程 欢迎来到“腾讯云云开发低代码实战:从零搭建家政维修服务平台”开发教程&am…...
居然智家亮相全零售AI火花大会 AI大模型赋能家居新零售的进阶之路
当人工智能技术以摧枯拉朽之势重构商业世界时,零售业正在经历一场静默而深刻的革命。在这场变革中,居然智家作为新零售领域的创新标杆,凭借其在AI技术应用上的超前布局和持续深耕,已悄然构建起从消费场景到产业生态的智能化闭环。…...
微服务6大拆分原则
微服务6大拆分原则 微服务拆分是指将一个大型应用程序拆分成独立服务的过程,在微服务拆分时,需要考虑以下6大微服务拆分原则 一、单一职责原则 微服务单一职责原则,是指每个微服务应该专注于解决一个明确定义的业务领域或功能,…...
进程间通信--管道【Linux操作系统】
文章目录 进程间通信(IPC)进程间通信的目的1. 数据交换2. 资源共享3. 进程协同4. 系统解耦5. 分布式计算IPC 的典型方式对比总结 进程间通信的前提 匿名管道匿名管道的原理创建匿名管道的过程如果不关闭不需要的读写端会怎样?为什么父进程要同…...
模型实时自主训练系统设计
模型实时自主训练系统设计 一、系统架构 #mermaid-svg-MLuTBuo7ehvStoqS {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MLuTBuo7ehvStoqS .error-icon{fill:#552222;}#mermaid-svg-MLuTBuo7ehvStoqS .error-text{f…...
5.1 神经网络: 层和块
1 层(Layer) 1.1 定义 层是深度学习模型中的基本构建单元,它由一组神经元组成,负责对输入数据进行特定的数学运算和变换,以提取数据的某种特征或表示。每一层可以看作是一个函数,它接收输入数据ÿ…...
鸿蒙系统使用ArkTS开发语言支持身份证阅读器、社保卡读卡器等调用二次开发SDK
har库导入: { "license": "", "devDependencies": {}, "author": "", "name": "entry", "description": "Please describe the basic information.", &qu…...
【Bootstrap V4系列】学习入门教程之 组件-输入组(Input group)
Bootstrap V4系列 学习入门教程之 组件-输入组(Input group) 输入组(Input group)Basic example一、Wrapping 包装二、Sizing 尺寸三、Multiple inputs 多输入四、Multiple addons 多个插件五、Button addons 按钮插件六、Buttons with dropdowns 带下拉按钮七、Custom for…...
图像处理篇--- HTTP|RTSP|MJPEG视频流格式
文章目录 前言一、MJPEG (Motion JPEG)基本概念技术特点编码方式传输协议数据格式 优势实现简单低延迟兼容性好容错性强 劣势带宽效率低不支持音频缺乏标准控制 典型应用 二、RTSP (Real Time Streaming Protocol)基本概念技术特点协议栈工作流程传输模式 优势专业流媒体支持高…...
`RotationTransition` 是 Flutter 中的一个动画组件,用于实现旋转动画效果
RotationTransition 是 Flutter 中的一个动画组件,用于实现旋转动画效果。它允许你对子组件进行动态的旋转变换,从而实现平滑的动画效果。RotationTransition 通常与 AnimationController 和 Tween 一起使用,以控制动画的开始、结束和过渡效果…...
养生:开启健康生活的密钥
在快节奏的现代生活中,养生已成为追求健康的重要方式。从饮食、运动到生活习惯,每一个细节都关乎身体的健康。以下为你介绍科学养生的实用方法,助你打造健康生活。 饮食养生:均衡营养,滋养身体 合理的饮食是养生的基…...
大模型微调算法原理:从通用到专用的桥梁
前言 本文聚焦大模型落地中的核心矛盾——理论快速发展与实际应用需求之间的脱节,并系统探讨微调技术作为解决这一矛盾的关键手段。尽管大模型展现出强大的通用能力,但其在垂直领域的直接应用仍面临适配性不足、计算成本高等挑战。微调通过在预训练模型基础上进行针对性优化,…...
引言:Client Hello 为何是 HTTPS 安全的核心?
当用户在浏览器中输入 https:// 时,看似简单的操作背后,隐藏着一场加密通信的“暗战”。Client Hello 作为 TLS 握手的首个消息,不仅决定了后续通信的加密强度,还可能成为攻击者的突破口。据统计,超过 35% 的网站因 TL…...
深度学习中的目标检测:从 PR 曲线到 AP
深度学习中的目标检测:从 PR 曲线到 AP 在目标检测任务中,评估模型的性能是非常重要的。通过使用不同的评估指标和标准,我们可以量化模型的准确性与效果。今天我们将重点讨论 PR 曲线(Precision-Recall Curve)、平均精…...
测试左移系列-产品经理实战-实战认知1
课程:B站大学 记录产品经理实战项目系统性学习,从产品思维,用户画像,用户体验,增长数据驱动等不同方向理解产品,从0到1去理解产品从需求到落地的全过程,测试左移方向(靠近需求、设计…...
数据集-目标检测系列- 烟雾 检测数据集 smoke >> DataBall
数据集-目标检测系列- 消防 浓烟 检测数据集 smoke>> DataBall 数据集-目标检测系列- 烟雾 检测数据集 smoke >> DataBall * 相关项目 1)数据集可视化项目:gitcode: https://gitcode.com/DataBall/DataBall-detections-10…...
概率论与数理统计基础学习大纲
📅 课程规划 阶段一:基础入门(第1-3周) 目标:掌握概率基础和基本分布 核心知识点: 概率论的基本概念:随机事件、样本空间、概率公理条件概率与全概率公式:贝叶斯公式、事件独立性随机变量与分布:离散型和连续型随机变量常见分布: 离散:二项分布、泊松分布连续:…...
5大B2B数字营销社群营销标杆案例TOB企业数字化营销内容营销AI营销培训讲师培训师专家顾问唐兴通分享
全球B2B数字营销领域的企业社区(或BBS)标杆案例 在全球TOB(企业对企业)和B2B数字营销实践中,构建企业社区或在线论坛(BBS的现代演变)已成为增强客户关系、驱动产品采用、获取市场洞察和 genera…...
OC语言学习——Foundation框架(上)
一、字符串 NSString代表字符序列不可变的字符串,而NSMutable代表字符序列可变的字符串。 1.1 NSString字符串及功能 通过NSString,我们可以: 1、创建字符串。2、读取文件或网络URL来初始化字符串,或者将字符串写入文件或URL。3…...
【Linux】基础 IO(一)
📝前言: 这篇文章我们来讲讲Linux——基础IO主要包括: 文件基本概念回顾 C文件的操作介绍系统关于文件的基本操作 🎬个人简介:努力学习ing 📋个人专栏:Linux 🎀CSDN主页 愚润求学 …...
ODA服务器计算节点本地硬盘状态异常的处理
近期,在系统巡检过程中发现一个客户的ODA服务器本地硬盘节点出现告警,ODAX8 X9等,本地硬盘是使用的240GB M.2接口的SSD盘(卡式)的,这个没有外置的指示灯可以从服务器前面板查看,打开服务器机箱盖…...
图像处理篇---opencv实现坐姿检测
文章目录 前言一、方法概述使用OpenCV和MediaPipe关键点检测角度计算姿态评估 二、完整代码实现三、代码说明PostureDetector类find_pose()get_landmarks()cakculate_angle()evaluate_posture() 坐姿评估标准(可进行参数调整):可视化功能&…...
微调ModernBERT为大型语言模型打造高效“过滤器”
ModernBERT(2024 年 12 月)是最近发布的小型语言模型,由 Answer.AI、LightOn 和 HuggingFace 共同开发。它利用了现代优化技术,如用于 8,192 token 上下文窗口的 RoPE 和 GeGLU layers,在保持效率的同时提升性能。jina…...
【C++指南】STL容器的安全革命:如何封装Vector杜绝越界访问与迭代器失效?
🌟 各位看官好,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 🚀 使用STL的三个境界:能用,明理,能扩展 👍 如果觉得这篇文章有帮助&#…...
Linux在web下http加密和配置虚拟主机及动态页面发布
web服务器的数据加密 1.简介:由于http协议以明文方式发送,不提供任何方式的数据加密,也不适合传输一些重要的信息,如银行卡号、密码等,解决该缺陷设计了安全套接字层超文本传输协议https; 2.https的握手流…...
8.2.CICD自动化
目录 一、持续集成(CI)核心实践 代码质量管理 • 静态代码分析:SonarQube规则定制(安全漏洞、代码异味检测) • 单元测试覆盖率:Jacoco报告生成与阈值控制(覆盖率≥80%) • 代码风格…...
解密数据结构之位图和布隆过滤器
位图和布隆过滤器 前言:笔者在前面分享过哈希的知识,但是笔者在哈希那篇博客中并没有给出哈希的应用场景,今天笔者分享的知识是关于哈希的应用,也就是大名鼎鼎的位图和布隆过滤器。1.位图的定义位图解决 2.位图实现1.先使用命名空间封装&…...
《从零构建大模型》PDF下载(中文版、英文版)
内容简介 本书是关于如何从零开始构建大模型的指南,由畅销书作家塞巴斯蒂安• 拉施卡撰写,通过清晰的文字、图表和实例,逐步指导读者创建自己的大模型。在本书中,读者将学习如何规划和编写大模型的各个组成部分、为大模型训练准备…...
Linux的web服务器的部署和优化
http中访问请求中I/O结构 在HTTP协议中,I/O(输入/输出)结构主要涉及客户端与服务器之间的请求和响应交互。以下是HTTP请求和响应的基本结构及其关键组成部分: HTTP请求结构 HTTP请求由请求行、请求头和请求体三部分组成 请求行…...
vue2 上传pdf,拖拽盖章,下载图片
效果图片: 不多废话上代码: <template><div class"pdf-stamp" onbeforecopyreturn false onselectdocument.selection.empty() ondragstartreturn false onselectstart return false ><div class"scroll-box" scro…...