2月19号
寒假每天敲代码的过程中,从先前的什么都不懂,在一步步看题解,学习新知识,运用学到的知识,解决问题,很多时候对数据结构和算法的选择有问题,不能准确选择,这个时候还是得多敲代码,就我自己而言,代码敲多了会让自己更熟练掌握这个知识点,也能更好的去运用,遇到相似的问题还可以举一反三,加深思考和理解.但是我也意识到,我写题时,每次就只会思考一会觉得不会了,就直接放弃思考,看题解了,没有更多的耐心去多理解思考题目,总是依赖题解.在最近这几天,我回头看了之前写的题,有些之前做错了改正的题,隔到现在去看还是会错,说明写错了的题也要时不时去看看,加深记忆,增强理解.通过这个寒假,我学习到了许多知识,同时相比之前也更加自律,很庆幸将这个寒假期间利用了起来来提升自己,希望自己以后变得更好.
这个寒假学习了一些数据结构与算法知识,包括栈,单端队列,双端队列,单向链表,双向链表,树,二叉树,前缀和,差分,并查集,背包问题,还学习了map函数与set函数;
map函数:
map<int,int>a;
a.count(x); //判断x为下标的元素是否在a中,是就返回1,否就返回0;
a.erase(x); //删除a中x为下标的元素;
a.size(); //返回a中元素的个数;
a.clear(); //清空;
map<string,int>a;定义一个string到int对应的map; 自变量为string类型,函数值为int类型;对于每一个string,就有一个int类型的值与它对应;
a["wyxniubi"]=1; //赋值;
cout<<a["wyxniubi"]; //调用,此时输出1;
二维数组开一个10的5次方*10的5次方,会导致空间复杂度炸死;
我们可以用map函数:
map<int,int>a; // 相当于 int a[int] 一个一维数组;
set函数:
set是STL的一个关联容器,底层为红黑树;
它可以有序的储存数据,提供快速的查找,添加删除的功能;
set<int>q; //以int型为例,默认按键值升序;
set<int,grezter<int>>p; //降序排列;
set<int>::iterator it //定义一个名为it的迭代器;
q.insert(x); //将x插入q中;
q.erase(x); //删除q中的x元素,返回1或0,0表示set中不存在x;
q.clear(); //清空q;
bool b=q.empty(); //判断q是否为空,若是返回1,否返回0;
int x=q.size(); //返回q中元素的个数;
it=q.find(x); //在q中查找x.返回x的迭代器,若x不存在,则返回指向q尾部的迭代器即q.end();
it=q.lower_bound(x); //返回一个迭代器,指向第一个键值不小于x的元素;
it=q.upper_bound(x); //返回一个迭代器,指向第一个键值大于x的元素;
并查集:是一种树形的数据结构;
合并:将两个子集合并成一个集合;
查找:确定某个元素处在哪个集合;
f[x]存节点x的父节点:(f[]的初始化)
每个节点是一个集合,每个节点的父节点是自己:
for(int i=1;i<=n;i++) f[i]=i ;
查找:(找根节点就是找元素的根)
int find(int x)
{
if(x!=f[x]) f[x]=find(f[x]);
return f[x];
}
合并:(把一个集合的根指向另一个集合的根)
void unionset(int x,int y)
{
f[find(x)]=find(y);
}
前缀和:数列的前n项求和;
假设有a1,a2,a3,a4,a5,a6...个数;
则前缀和prefix[1]=a1;
prefix[2]=a1+a2;
prefix[3]=a1+a2+a3;
prefix[4]=a1+a2+a3+a4;
.....
prefix[n]=a1+a2+a3+a4+....+an;
前缀和用途:降低算法的时间复杂度;处理区间之间的问题;
第i个数到第j个数的和:
sum=prefix[j]-prefix[i];
一维数组的前缀和:前n项和
二维数组的前缀和:s[i][j](以a[1]][1]到a[i][j]的对角构成的 i*j 的矩形内所有元素的和;
递推式:s[i][j]=s[i-1][j]+s[i][j-1]+a[i][j]-s[i-1][j-1];
求a[3][3]和a[5][5]为对角线的矩阵求和:
s[5][5]-s[4][2]-s[2][5]+s[2][2];
以a[x1][y1]和a[x2][y2]为对角顶点元素的子矩阵的和:
S[x2, y2] - S[x1 - 1, y2] - S[x2, y1 - 1] + S[x1 - 1, y1 - 1];
差分:
假设有a1,a2,a3,a4,a5,a6...个数;
则差分diff[1]=a1-a0;
diff[2]=a2-a1;
diff[3]=a3-a2;
diff[4]=a4-a3;
.....
diff[n]=an-a(n-1);
对差分进行前缀和:
diff[1]+diff[2]+diff[3]=a3;
对差分数组进行前缀和,就可以的到原数组;
对前缀和数组进行差分,就可以得到原数组;
如果diff[i]+1,在做前缀和时,第i个数开始,原数组都加 1 ;
如果让区间 [i,j] 都加上 x :
diff[i]+=x;(让ai到an都加 x );
diff[j+1]-=x;(让aj+1到an都减去 x );
二维数组的差分:
d[0][0]=a[0][0];
d[0][j]=a[0][j]-a[0][j-1];
d[i][0]=a[i][0]-a[i-1][0];
递推式:b[i][j]=a[i][j]-a[i-1][j]-a[i][j-1]+a[i-1][j-1];
对a数组中的(x1,y1)到(x2,y2)之间的元素都加上 c :
{
b[x1][y1]+=c;
b[x2+1][y1]-=c;
b[x1][y2+1]-=c;
b[x2+1][y2+1]+=c;
}
栈(先进后出):
使用前需要引入 stack 头文件;
stack<int>a;
a.push(); --> 入栈顶部;
a.pop(); --> 出栈顶部元素;
a.top(); --> 调取顶部元素;
a.empty(); --> a中元素为空;
a.size(); --> a中元素的数量;
单端队列(先进先出)(尾进头出):
使用前需要引入 queue 头文件;
queue<int>a;
a.push(); --> 入队列尾部;
a.pop(); --> 出队列首部元素;
a.front(); --> 调取首部元素;
a.back(); --> 调取尾部元素;
a.empty(); --> a中元素为空;
a.size(); --> a中元素的数量;
双端队列(头尾都能进都能出):
使用时需要引入 deque 头文件;
双端队列支持的操作有 4 个:
在队首插入一个元素;
在队尾插入一个元素;
在队首删除一个元素;
在队尾删除一个元素;
deque<int>a;
a.front(); --> 调取首部元素;
a.back(); --> 调取尾部元素;
a.push_front(); --> 在对首插入元素;
a.pop_front(); --> 出队列首部元素;
a.push_back(); --> 在队尾插入元素;
a.pop_back(); --> 出队列尾部元素;
a.insert() 在指定位置前插入元素(传入迭代器和元素);
a.erase() 删除指定位置的元素(传入迭代器);
a.empty(); --> a中元素为空;
a.size(); --> a中元素的数量;
链表与数组的区别:
1.数组的地址是连续的;
2.而链表元素在存储时都会配备一个指针,用于指向后续元素,链表是用指针找到下一个元素,所以链表元素可以存储在内存任意位置;
1.通过a[3]找到数组中第四个元素;
2.而链表则需要从头开始遍历;
1.数组中删除元素,则需要把其后面元素都往前移一位;
2.链表中删只需要找到元素后,让前一个data的指针指向后一个data,释放该元素就行;
树:
顶部节点:根节点;
父节点和子节点;
没有子节点的节点:叶子结点;
数中一个节点的子节点个数称为该节点的度;
数中度数最大称为该数的度;
二叉树:
每个节点只有两个子节点:左子结点和右子节点;
二叉树的形态:
左斜树:只有左子结点;
右斜树:只有右子节点;
就是链表!!!(一个指针);
满二叉树:最下方的叶子节点无左右子节点,其余都有;
完全二叉树:叶子节点是允许缺失的,且叶子结点都必须靠左排序;
(链表里面两个指针);
5:
4 6:
1 2 7 8:
遍历顺序:
前序:(中左右) 5 4 1 2 6 7 8 ;
中序:(左中右) 1 4 2 5 7 6 8 ;
后续:(左右中) 1 2 4 7 8 6 5 ;
01背包问题:
有 n 件物品和一个容量是 m 的背包;每件物品只能使用一次;
第 i 件物品的体积是 w,价值是 v;
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大;
输出最大价值;
输入格式:
第一行两个整数,N,V,用空格隔开,分别表示物品数量和包容积;
接下来有 N 行,每行两个整数 v , w ,用空格隔开,分别表示第i件物品的体积和价值;
输出格式:
输出一个整数,表示最大价值;
dp[j]:
表示背包容量为 j 时的最大值;
dp[i][j]:
表示在背包容量为 j 时,从下标为 0 到 i 的物品里取任意的最大值;
思路:当前物品 i 能不能放得下背包 j ;
1.放不下:不放,继承上一层的状态;
2.放得下:考虑要不要放;
a.不放:继承上一层状态;
b.放:背包容量剩余 j-w[i];
(w[i]是体积,v[i]是价值);
二维代码:
for(int i=1;i<=n;i++){
for(int j-1;j<=m;j++){
if(j<w[i]) dp[i][j]=dp[i-1][j];
else dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
}
}
cout<<dp[n][m];
一维代码:
for(int i=1;i<=n;i++){
for(int j=m;j>=w[i];j--){
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
cout<<dp[m];
完全背包问题:
有 n 种物品和一个容量是 m 的背包;每种物品都有无限件可用;
第 i 种物品的体积是 w ,价值是 v ;
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大;
输出最大价值;
输入格式:
第一行两个整数, n, m,用空格隔开,分别表示物品种数和包容积;
接下来有 n 行,每行两个整数 w ,v ,用空格隔开,分别表示第 i 种物品的体积和价值;
输出格式:
输出一个整数,表示最大价值;
思路:
先继承上一层状态,(放不放得下);
放得下,考虑要不要放:
1.不放,继承上一层状态;
2.放,背包容量剩余 j-w[i];
二维代码:
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
dp[i][j]=dp[i-1][j];
if(j>=w[i]){
dp[i][j]=max(dp[i][j],dp[i][j-w[i]]+v[i]);
}
}
}
cout<<dp[n][m];
一维代码:
for(int i=1;i<=n;i++){
for(int j=w[i];j<=m;j++){
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
cout<<dp[m];
多重背包问题:
有 n 种物品和一个容量是 m 的背包;
第 i 种物品最多有 s 件,每件体积是 w ,价值是 v ;
求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大;
输出最大价值;
输入格式:
第一行两整数, n , m ,用空格隔开,分别表示物品种数和背包容积;
接下来有 n 行,每行三个整数 w , v , s ,用空格隔开,分别表示第 i 种物品的体积、价值和数量;
输出格式:
输出一个整数,表示最大价值;
w[i]表示物体体积;
v[i]表示物体价值;
s[i]表示物体数量;
法一:转换成01背包问题;
for(int i=1;i<=n;i++){
for(int k=1;k<=s[i];k++){
for(int j=m;j>=w[i];j--){
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
}
cout<<dp[m];
法二:二进制优化法;
for(int i=1;i<=n;i++){
int k=1,p=0;
cin>>w>>v>>s;
while(k<=s){
v[++p]=v*k;
w[p]=w*k;
s-=k;
k*=2;
}
if(s){
v[++p]=v*s;
w[p]=w*s;
}
}
for(int i=1;i<=p;i++){
for(int j=m;j>=w[i];j--){
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
cout<<dp[m];
相关文章:
2月19号
寒假每天敲代码的过程中,从先前的什么都不懂,在一步步看题解,学习新知识,运用学到的知识,解决问题,很多时候对数据结构和算法的选择有问题,不能准确选择,这个时候还是得多敲代码,就我自己而言,代码敲多了会让自己更熟练掌握这个知识点,也能更好的去运用,遇到相似的问题还可以举…...
EX_25/2/19
1. 封装一个 File 类,用有私有成员 File* fp 实现以下功能 File f "文件名" 要求打开该文件 f.write(string str) 要求将str数据写入文件中 string str f.read(int size) 从文件中读取最多size个字节,并将读取到的数据返回 析构函数 …...
纯新手教程:用llama.cpp本地部署DeepSeek蒸馏模型
0. 前言 llama.cpp是一个基于纯C/C实现的高性能大语言模型推理引擎,专为优化本地及云端部署而设计。其核心目标在于通过底层硬件加速和量化技术,实现在多样化硬件平台上的高效推理,同时保持低资源占用与易用性。 最近DeepSeek太火了&#x…...
ubuntu源码方式安装TensorRT-LLM推理框架
简要记录安装过程和遇到的问题 写在前面: 一切的二手安装教程都不如官方手册,建议先根据手册进行安装,遇到问题再自行谷歌: TensorRT官方文档 先安装docker TensorRT-LLM 官方推荐使用 Docker 进行构建和运行 ubuntu安装docker…...
集合 数据结构 泛型
文章目录 1.Collection集合1.1数组和集合的区别【理解】1.2集合类体系结构【理解】1.3Collection 集合概述和使用【应用】内部类匿名内部类Lambda表达式 1.4Collection集合的遍历【应用】1.5增强for循环【应用】 2.List集合2.1List集合的概述和特点【记忆】2.2List集合的特有方…...
python脚本文件设置进程优先级(在.py文件中实现)
在 Python 代码中可以直接通过 psutil 模块或 系统调用 来设置进程优先级,无需依赖终端命令。以下是具体方法和示例: 1. 使用 psutil 模块(跨平台推荐) psutil 是一个跨平台库,支持 Windows、Linux 和 macOS。通过其 …...
Docker 安装 Apache
Docker 安装 Apache 引言 Apache HTTP Server(简称Apache)是一个开源的HTTP服务器软件,广泛应用于各种操作系统和平台。Docker作为一种容器化技术,可以简化Apache的部署过程,使得其能够在任何环境中快速部署。本文将详细介绍如何在Docker容器中安装Apache。 准备工作 …...
实在智能与宇树科技、云深科技一同获评浙江省“人工智能服务商”、 “数智优品”等荣誉
近日,浙江省经信厅正式公布《2024 年浙江省人工智能应用场景、应用标杆企业、人工智能服务商及 “数智优品” 名单》。 实在智能获评浙江省“人工智能服务商”,核心产品 “实在 Agent 智能体” 入选 “数智优品”。一同获此殊荣的还有宇树科技、云深处科…...
C语言指针学习笔记
1. 指针的定义 指针(Pointer)是存储变量地址的变量。在C语言中,指针是一种非常重要的数据类型,通过指针可以直接访问和操作内存。 2. 指针的声明与初始化 2.1 指针声明 指针变量的声明格式为:数据类型 *指针变量名…...
管道的学习
进程间通信:是指在操作系统中,两个或多个独立的进程之间进行数据交换和信息共享的一种机制 进程间通信的本质:先让不同的进程先看到同一份资源,才有通信的条件 进程间通信的目的: 1.将一个进程的数据发送给另一个进程…...
迪威模型网:免费畅享 3D 打印盛宴,科技魅力与趣味创意并存
还在为寻找优质3D打印模型而发愁?快来迪威模型网(https://www.3dwhere.com/),一个集前沿科技与无限趣味于一体的免费3D打印宝藏平台! 踏入迪威模型网,仿佛开启一场未来科技之旅。其“3D打印”专区ÿ…...
Java运算符
- 算术运算符 - 正号 - - 负号 - 加号 - - 减号 - * 乘号 - / 除 - % 取余 - 自增(前) 先运算后取值 i; 自增(后) 先取值后运算 i; public cla…...
Kimi K1.5 与 DeepSeek R1:AI 模型的深度对比
文章目录 一、背景介绍二、核心功能对比三、K1.5 使用方法:四、总结 随着人工智能技术的飞速发展,大型语言模型在各个领域都展现出了巨大的潜力。Kimi K1.5 和 DeepSeek R1 作为当前备受关注的两款先进 AI 模型,各自拥有独特的功能和优势。本…...
mysql索引为什么用B+树不用,B树或者红黑树
MySQL 选择 B 树作为索引结构,而不是 B 树或红黑树,主要原因如下: 1. 磁盘 I/O 优化 B 树:节点存储更多键值,树的高度较低,减少了磁盘 I/O 次数,适合处理大规模数据。 B 树:虽然也…...
Redis 全方位解析:从入门到实战
引言 在当今互联网快速发展的时代,高并发、低延迟的应用场景越来越普遍。Redis,作为一款高性能的开源数据库,以其卓越的性能和灵活的功能,成为了许多开发者的首选工具。无论是在缓存、消息队列,还是在实时数据分析等领…...
无第三方依赖 go 语言工具库
- 开源地址 GitHub - zdhsoft/xmutilsgo: utils for go - 使用办法 go get github.com/zdhsoft/xmutilsgo 主要内容 int.go 定义泛型的整数类型和字符串转整数的函数和随机范围的函数isin.go 判断指定元素是否再数组中的函数page.go mysql用于分页的类ret.go 通用返回值的类…...
代码随想录算法【Day49】
Day49 42. 接雨水 思路 这道题利用单调栈进行横向求解。对于每一个元素,找到它右边第一个比它大的元素和左边第一个比它大(或者与它相等的元素,当然这种情况可以忽略),最后计算雨水的存储量:(…...
R-CNN
这是一个20004096的一个特征矩阵 05:44在这个特征矩阵当中呢 05:45每一行就是我们一个候选框 05:48通过CNN网络得到了一个特征向量 05:51然后它有2000候选框 05:53所以它一共有2000行 05:54然后中间这个就是我们所说的SVM权值矩阵 05:58它的每一列呢 05:59就对应着我们…...
Linux探秘坊-------5.git
1.git介绍 1.版本控制器 为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统&am…...
项目中分库分表的分布式ID如何生成
分库分表与分布式ID生成在Java项目中的应用 在大规模的分布式系统中,数据库表和数据量的增大可能会导致单个数据库或单个表的性能瓶颈。为了解决这个问题,我们通常使用分库分表来进行数据的水平切分和垂直切分。同时,在分布式环境中…...
SOME/IP--协议英文原文讲解8
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.2 Speci…...
JUC并发—7.AQS源码分析三
大纲 1.等待多线程完成的CountDownLatch介绍 2.CountDownLatch.await()方法源码 3.CountDownLatch.coutDown()方法源码 4.CountDownLatch总结 5.控制并发线程数的Semaphore介绍 6.Semaphore的令牌获取过程 7.Semaphore的令牌释放过程 8.同步屏障CyclicBarrier介绍 9.C…...
避坑:过早的文件结束符(EOF):解决“git clone龙蜥OS源码失败”的失败过程
避坑:过早的文件结束符(EOF):解决“git clone龙蜥OS源码失败”的失败过程 安装Anolis OS 8.9 下载AnolisOS-8.9-x86_64-dvd.iso并安装。 使用uname -a查看内核版本为5.10.134-18.an8.x86_64。 [rootlocalhost cloud-kernel]# c…...
基于知识图谱的问答系统:后端Python+Flask,数据库Neo4j,前端Vue3(提供源码)
基于知识图谱的问答系统:后端PythonFlask,数据库Neo4j,前端Vue3 引言 随着人工智能技术的不断发展,知识图谱作为一种结构化的知识表示方式,逐渐成为问答系统的重要组成部分。本文将介绍如何构建一个基于知识图谱的问答…...
日做力扣题2--215. 数组中的第K个最大元素
这道题我在做北京的一家教育公司的笔试时出现过,且题目里直接要求使用快排做,所以我也使用快排做的。 题目: 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最…...
centos8 使用yum安装程序出现报错
在执行yum指令出现源更新不了Could not resolve host: mirrorlist.centos.org; Unknown error问题 yum -y update结果 Errors during downloading metadata for repository appstream: - Curl error (6): Couldnt resolve host name for http://mirrorlist.centos…...
linux系统搭建DNS服务器、详细知识讲解
DNS服务器系统为rocky9.5, 1、安装DNS dnf -y install bind bind-utilsbind软件包 BIND 是一个开源的 DNS 服务器软件,广泛用于域名解析服务。 配置管理: 权威 DNS 服务器(Authoritative DNS):为特定域名…...
【部署优化篇四】《DeepSeek移动端优化:CoreML/TFLite实战对比》
手机里的AI助手能秒速回答你的问题,游戏人物能实时追踪你的表情变化,这些酷炫功能的背后都离不开移动端机器学习框架的支撑。今天我们就来撕开两个当红炸子鸡框架CoreML和TFLite的神秘面纱,看看它们在模型优化这件事上到底藏着哪些独门绝技。 一、移动端优化的生存法则 在…...
DeepSeek联网搜索
deepseek 0、前言1、未联网2、联网2.1 SerpAPI2.2 SerpAPIDeepseek 0、前言 为获取最新消息,需给deepseek联网 1、未联网 from dotenv import load_dotenv from langchain_deepseek import ChatDeepSeekload_dotenv()# 1、模型 model ChatDeepSeek(model"d…...
pt100 2线和3线的区别?
3线比2线更稳定一些; 在电路中,b和c是不连接在一起的; 测试的时候,b和c是接在一起的,也就是说pt100中b和c是连接在一起的 3线比2线多一个反馈; 平时测试的时候,测试一下ab或者ac 都是一样的…...
ollama-chat-ui-vue,一个可以用vue对接ollama的开源项目,可接入deepSeek
ollama-chat-ui-vue 使用vue3 vite elementUi 搭建的前端chat,通过ollama可与模型对话,目前支持独立思考,切换模型(联网查询后续支持) github地址:ollama-chat-ui-vue 制作不易github点点star,谢谢 前置工作 安装ollama,ollama官网地址 安装完olla…...
hot100-3、438、560、239、240、160、234(2简3中1难)
滑窗问题↓ 3. 无重复字符的最长子串(中等) 方法一、滑动窗口 数组结合哈希表ascii码,滑动出口。其实可以优化为left Math.max(left,map.get(s.charAt(i)) 1),数组的话就是全部初始化为-1,用来计算最新下标而不是…...
深入理解 Java 反射机制:获取类信息与动态操作
在 Java 编程中,反射(Reflection)是一种强大的机制,允许程序在运行时动态地获取类的信息并操作类的属性、方法和构造器。反射是 Java 动态语言特性的核心,广泛应用于框架开发、插件系统、序列化和反序列化等领域。本文…...
Redis 主从复制
概念 在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他服务器,满⾜故障恢复和负载均衡等需求。Redis 也是如此,它提供了复制的功能,实现了相同数据的多个 Redis 副本,通过一个主节点(ma…...
Unity中NavMesh的使用 及其 导出给java服务端进行寻路
1.先添加 AI Navigation组件 2.Windows-->AI-->Navigation(Obsolete) 这样子就可以看到烘焙按钮 3.将物体标记为行走和不可行走 4.添加一个Plane和一些球体,并把需要形成NavMesh的物体选择为静态 // 因为只能烘焙静态的 之后可以看出烘焙后,看着被…...
【含文档+PPT+源码】基于微信小程序的猎兔汽车保养维修美容服务平台的设计与实现
项目介绍 本课程演示的是一款基于微信小程序的猎兔汽车保养维修美容服务平台的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部…...
iOS App的启动与优化
App的启动流程 App启动分为冷启动和热启动 冷启动:从0开始启动App热启动:App已经在内存中,但是后台还挂着,再次点击图标启动App。 一般对App启动的优化都是针对冷启动。 App冷启动可分为三个阶段: dyld:…...
一周学会Flask3 Python Web开发-request请求钩子(Hook)
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 有时候我们业务需求对请求做一些鉴权,日志,统计分析等功能,这时候可以对请求进行预处理( …...
git clone
方法一(替换URL) git clone https://gitclone.com/github.com/tendermint/tendermint.git 方法二(设置git参数) git config --global url."https://gitclone.com/".insteadOf https:// git clone https://github.co…...
nginx ngx_http_module(8) 指令详解
nginx ngx_http_module(8) 指令详解 nginx 模块目录 nginx 全指令目录 一、目录 1.1 模块简介 ngx_http_ssi_module:服务器端包含(SSI)模块,允许在HTML页面中插入其他内容或动态生成的内容。通过特殊的SSI指令(如 …...
Apache Struts RCE (CVE-2024-53677)
前言 对目前的Apache Struts RCE (CVE-2024-53677)的poc进行总结,由于只能单个ip验证,所以自己更改一下代码,实现:多线程读取url验证并保存,更改为中文解释 免责声明 请勿利用文章内的相关技术从事非法测试…...
windows系统本地部署DeepSeek-R1全流程指南:Ollama+Docker+OpenWebUI
本文将手把手教您使用OllamaDockerOpenWebUI三件套在本地部署DeepSeek-R1大语言模型,实现私有化AI服务搭建。 一、环境准备 1.1 硬件要求 CPU:推荐Intel i7及以上(需支持AVX2指令集) 内存:最低16GB,推荐…...
前端:最简单封装nmp插件(组件)过程。
一、nmp使用 1、注册nmp账号:npm | Home 2、创建插件名称文件夹,如: vue3-components 3、初始化一个package.json文件:nmp init npm init package.json配置用处介绍,如下: {// 包名,必须…...
百度搜索融合 DeepSeek 满血版,开启智能搜索新篇
百度搜索融合 DeepSeek 满血版,开启智能搜索新篇 🚀 🔹 一、百度搜索全量接入 DeepSeek 🔹 百度搜索迎来重要升级,DeepSeek 满血版全面上线!🎉 用户在百度 APP 搜索后,点击「AI」即…...
导出指定文件夹下的文件结构 工具模块-Python
python模块代码 import os import json import xml.etree.ElementTree as ET from typing import List, Optional, Dict, Union from pathlib import Path class DirectoryTreeExporter:def __init__(self,root_path: str,output_file: str,fmt: str txt,show_root: boo…...
V4L2驱动之UVC
以下是关于V4L2摄像头驱动框架与UVC协议的关联分析,从内核驱动到用户空间的完整视角: 1. V4L2驱动框架核心架构 关键组件: 核心层 (V4L2 Core) v4l2_device:设备的总入口,管理所有子组件video_device:对应…...
【Linux】匿名管道的应用场景-----管道进程池
目录 一、池化技术 二、简易进程池的实现: Makefile task.h task.cpp Initchannel函数: 创建任务: 控制子进程: 子进程执行任务: 清理收尾: 三、全部代码: 前言: 对于管…...
umi react+antd 判断渲染消息提示、input搜索、多选按钮组
记得map里返回的每层遍历结构都要带上key(图里没加,最近在接手react,熟悉中......
Windows桌面系统管理5:Windows 10操作系统注册表
Windows桌面系统管理0:总目录-CSDN博客 Windows桌面系统管理1:计算机硬件组成及组装-CSDN博客 Windows桌面系统管理2:VMware Workstation使用和管理-CSDN博客 Windows桌面系统管理3:Windows 10操作系统部署与使用-CSDN博客 Wi…...
华为昇腾 910B 部署 DeepSeek-R1 蒸馏系列模型详细指南
本文记录 在 华为昇腾 910B(65GB) * 8 上 部署 DeepSeekR1 蒸馏系列模型(14B、32B)全过程与测试结果。 NPU:910B3 (65GB) * 8 (910B 有三个版本 910B1、2、3) 模型:DeepSeek-R1-Distill-Qwen-14B、DeepSeek…...