周报 Week 3:
补题链接:
Week 3 DAY 1-CSDN博客
河南萌新联赛2024第(二)场:南阳理工学院-CSDN博客
Week 3 DAY 5:-CSDN博客
Week 3 DAY 6-CSDN博客
这周题单是动态规划——(背包问题,线性dp):
这周对背包问题有了百分之三十的理解 ^-^,区间dp听的牛客的,没听懂,将就写着了,后面还会出一个与区间dp相关的周报,这里有点乱七八糟的。。。.不过下面的背包问题和线性dp的知识点我觉得我记录的还可以,嘻嘻╮(. ❛ ᴗ ❛.)╭,了解到一些知识点的名称——SG函数,最小生成树,KMP,KMP学了,掌握进度百分之20吧。晕晕的 o( ̄ヘ ̄o#)
注意:
1009-「木」迷雾森林_动态规划专题:线性dp、背包问题,区间 (nowcoder.com)
注意:这代替开long long 会爆空间;因为内存空间是还得乘上字节数;
区间dp:
2955 -- Brackets (poj.org)
括号匹配:
f[i][j]表示ai....aj的串中,有多少个已经匹配的括号
如果ai与ak是匹配的
f[i][j]=max(f[i][j],f[i+1][k-1]+f[k+1][j]+2)——>2是自己匹配的括号
相当于是将 i 到 j 分成 [xxxxx] xxxxxx两部分
否则,f[i][j]=f[i+1][j];
(将第一个元素去掉---因为它肯定不能算)
边界f[i][j]=0;
记忆化搜索:
如果用递推的话,应该是区间大小由小到大递增作为最外层循环
for(int l=2;l<=n;l++)//枚举区间长度
{
for(int i=0;i+l-1<n;i++)//枚举区间起点
{
int j=i+l-1;//枚举区间终点
}
}
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
char a[105];
int dp[105][105];
int main()
{while(scanf("%s",a)!=EOF){ if(a[0]=='e'){return 0;}int n = strlen(a);memset(dp,0,sizeof(dp));for(int len = 2;len<=n;len++){for(int i = 0;i+len-1<=n-1;i++){int j = i+len-1;if((a[i]=='('&&a[j]==')')||(a[i]=='['&&a[j]==']')){dp[i][j] = max(dp[i][j],dp[i+1][j-1]+2);}for(int k = i;k<=j;k++){dp[i][j] = max(dp[i][j],dp[i][k]+dp[k+1][j]);} } }printf("%d\n",dp[0][n-1]);}return 0;
}
最长回文子序列
516. 最长回文子序列 - 力扣(LeetCode)
1.马拉车方法
2.动态规划:f[i][j]表示ai.....aj的串中,最长回文子序列长度
如果ai与 aj是一样的
f[i][j]=f[i+1][j-1]+2;
如果不一样,就要删掉其中一个
石子合并
石子合并 (nowcoder.com)
拓展:石子合并问题(动态规划)_石子合并问题动态规划-CSDN博客
- 先考虑没有环的
- f[i,j]表示合并 i 到 j 的所有石子的得分·;
- f[i,j]=max(f[i][j],f[i+k]+f[k+1][j]+sum[i][j]->(sum[j]-sum[i-1]);
- sum[i][j]表示i到j的石子的价值和!(也可以前缀和实现sum【i】表示前i个石头的价值,那么我们需要的就是sum[j]-sum[i-1])
- 但是现在有环!——可以通过取模的方法把他变成循环的!
- 也可以将序列加倍:变成:“1234 1234”,就可以完全用链的方法解决了!
- 边界:f[i][j]=0;
凸多边形的三角形拆分
凸多边形的划分 (nowcoder.com)
不会
田忌赛马
田忌赛马 (nowcoder.com)
田忌只有两种选择;1.田忌用最强的马打,2.田忌用最弱的马打
所以可以定义为区间,
f[k][i][j];后k轮比赛中,田忌使用了第i到第j匹马能够获得的最多的钱
k=1;i=1;j=n;
k=2;i=2 ;j=n/ i=1;j=n-1;
n-j+i=k;
(用过的马)j-i+1=n-k+1;
max:
- 齐王 第k匹马 和田忌 第i匹马 结果+f[k+1][i+1][j];
- 齐王 第k匹马 和田忌 第i匹马 结果+f[k+1][i][j-1];
只带i,j 可以省掉k。
#include <bits/stdc++.h>using namespace std;
#define int long long
const int maxn = 10001;
int n;
int dp[maxn][maxn];
int tian[maxn];
int qi[maxn];int cost(int tian_pos, int qi_pos) {if (tian[tian_pos]>qi[qi_pos]) return 200;if (tian[tian_pos]<qi[qi_pos]) return -200;if (tian[tian_pos]==qi[qi_pos]) return 0;return 0;
}signed main() {cin>>n;for (int i=1;i<=n;i++) {cin>>tian[i];}for (int i=1;i<=n;i++) {cin>>qi[i];}sort(qi+1, qi+1+n);sort(tian+1, tian+1+n);for (int len = 1;len<=n;len++) {for (int l=1;l+len-1<=n;l++) {int r = l+len-1;int k = len-1+1;dp[l][r] = max(dp[l+1][r]+cost(l, k), dp[l][r-1]+cost(r,k));}}cout<<dp[1][n];return 0;
}作者:在刷题的单身狗很开心
链接:https://www.nowcoder.com/discuss/542652396985442304
来源:牛客网
背包DP
N个物品,容量为V,每个物品有他的价值vi和权重wi(每个物品只能用一次或0次);
01背包问题(每件物品只能最多用一次):
2. 01背包问题 - AcWing题库
dp:
右边那一块不一定有,可能会出现空集,比如;
当列举的 j 此时小于某件物品的 v 时,就装不下,此时右边的结果就没有
二维:
#include<bits/stdc++.h>
using namespace std;
#define int long long
int v[1005],w[1005];
int dp[1005][1005];
signed main(){int N,V;cin>>N>>V;for(int i=1;i<=N;i++){cin>>v[i]>>w[i];}for(int i=1;i<=N;i++){for(int j=0;j<=V;j++){dp[i][j]=dp[i-1][j];if(j>=v[i]){dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]);}}}cout<<dp[N][V];return 0;
}
一维:
二维时的更新方式是:
dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]);
为何能转化为1维?
我们发现对于每次循环的下一组i,只会用到 i-1来更新当前的值,不会用到 i-2及其之后的值。于是可以在这次更新的时候,将原来的更新掉,反正以后也用不到。所以对于 i 的更新,只需要一个数组直接覆盖就行。
2.我们发现,对于每次 j 的更新,只需用到之前 i-1时的 j 或者j-v[i],不会用到之前后面的值,所以为了防止串着改,我们采取从后往前更新的方式,用原来 i-1的数组更新 i ;(如果从前往后更新的话,前面的更新过之后,会接着更新后面的值,这样就不能保证是原来的 i-1的数组来更新 i 的了
#include<bits/stdc++.h>
using namespace std;
#define int long long
int v[1005],w[1005];
int dp[1005];
signed main(){int N,V;cin>>N>>V;for(int i=1;i<=N;i++){cin>>v[i]>>w[i];}for(int i=1;i<=N;i++){for(int j=V;j>=v[i];j--){dp[j]=max(dp[j],dp[j-v[i]]+w[i]);}}cout<<dp[V];return 0;
}
完全背包(每件物品有无数个);
3. 完全背包问题 - AcWing题库
类似01背包问题,
朴素做法会超时:
#include<bits/stdc++.h>
using namespace std;
#define int long long
int v[1005],w[1005];
int f[1005][1005];
signed main(){int N,V;cin>>N>>V;for(int i=1;i<=N;i++){cin>>v[i]>>w[i];}for(int i=1;i<=N;i++){for(int j=1;j<=V;j++){for(int k=0;k*v[i]<=j;k++){f[i][j]=max(f[i-1][j],f[i-1][j-k*v[i]]+k*w[i]);}}}cout<<f[N][V]<<endl;return 0;
}
优化:
#include<bits/stdc++.h>
using namespace std;
#define int long long
int v[1005],w[1005];
int f[1005][1005];
signed main(){int N,V;cin>>N>>V;for(int i=1;i<=N;i++){cin>>v[i]>>w[i];}for(int i=1;i<=N;i++){for(int j=0;j<=V;j++){f[i][j]=f[i-1][j];if(j-v[i]>=0)f[i][j]=max(f[i][j],f[i][j-v[i]]+w[i]);}}cout<<f[N][V]<<endl;return 0;
}
一维
这里的 j 不去要从大到小枚举,因为它要的不是i-1的状态,它要的是当前 i 的状态
#include<bits/stdc++.h>
using namespace std;
#define int long long
int v[1005],w[1005];
int f[1005][1005];
signed main(){int N,V;cin>>N>>V;for(int i=1;i<=N;i++){cin>>v[i]>>w[i];}for(int i=1;i<=N;i++){for(int j=0;j<=V;j++){//if(j-v[i]>=0)f[i][j]=max(f[i-1][j],f[i][j-v[i]]+w[i]);else f[i][j]=f[i-1][j];}}cout<<f[N][V]<<endl;return 0;
}
整理一下:
01背包和完全背包的不同之处
01背包:
完全背包:
多重背包(每个物品数量不一样);
朴素暴力解法
4. 多重背包问题 I - AcWing题库
#include<bits/stdc++.h>
using namespace std;
const int N=220;
int n,m;
int v[N],w[N],s[N];
int f[N][N];
int main(){cin>>n>>m;for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){for(int k=0;k<=s[i]&&k*v[i]<=j;k++){f[i][j]=max(f[i-1][j],f[i-1][j-v[i]*k]+w[i]*k);}}}cout<<f[n][m];
}
多重背包不能用完全背包的优化方式,因为完全背包个数是无数个,多重背包个数是有限个没所以写式子的时候就是
已知第二段式子的最大值,并不能求出第二段除红色框以外的最大值,所以这种方法不可取
比如 知道两个绿色的最大值并不能知道粉色线的最大值。所以就不能直接用完全背包的方式优化
用二进制方式优化:
用10个新的物品表示原来的i个物品
这10个物品就是
2 4 8 16 32 64 128 256 512 1024
可以拼凑第i个物品所有的方案数了
log(n);
具体的就是:
s=200;
1,2,4,8,16,32,64, 73
可以凑出的数;
1,3,7,15, 31 , 63, 127 200
s:n
1 2 4 8..... 2^k , C (C<2^(k+1));
时间复杂度是N*V*logS;
做一遍01背包:
让他自己组数字,找出最大价值;
如果仍然不是很能理解的话,取这样一个例子:要求在一堆苹果选出n个苹果。我们传统的思维是一个一个地去选,选够n个苹果就停止。这样选择的次数就是n次
二进制优化思维就是:现在给出一堆苹果和10个箱子,选出n个苹果。将这一堆苹果分别按照1,2,4,8,16,.....512
1,2,4,8,16,512
分到10个箱子里,那么由于任何一个数字x∈[0,1023]
𝑥∈[0,1023] (第11个箱子才能取到1024)都可以从这10个箱子里的苹果数量表示出来,但是这样选择的次数就是 ≤10次。
#include<bits/stdc++.h>
using namespace std;
const int N=25000;
int n,m;
int v[N],w[N];
int f[N];
int main(){cin>>n>>m;int cnt=0;for(int i=1;i<=n;i++){int a,b,s;cin>>a>>b>>s;//a是第i种物品的体积,b是第i种物品的价值,//s是第i种物品的数量int k=1;while(k<=s){//进行二进制分组cnt++;v[cnt]=a*k;//第cnt组的体积就是一个物品的体积乘以cnt组的数量w[cnt]=b*k;//价值同理s-=k;//将s拆分k*=2;}if(s>0){//算C;cnt++;v[cnt]=a*s;w[cnt]=b*s;}}n=cnt;for(int i=1;i<=n;i++){//01背包问题:怎么从这n种中选择最大的价值;//这n种可以组成0-s的数字其中一个;for(int j=m;j>=v[i];j--){f[j]=max(f[j],f[j-v[i]]+w[i]);} }cout<<f[m]<<endl;return 0;}
分组背包问题(物品有n种,每种物品有若干个,只能选一组物品);
和多重背包的思考方式是一样的;
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int n,m;
int v[N][N],w[N][N],s[N];
int f[N];
int main(){cin>>n>>m;for(int i=1;i<=n;i++){cin>>s[i];for(int j=0;j<s[i];j++){cin>>v[i][j]>>w[i][j];}}for(int i=1;i<=n;i++){for(int j=m;j>=0;j--){for(int k=0;k<s[i];k++){if(v[i][k]<=j){f[j]=max(f[j],f[j-v[i][k]]+w[i][k]);} }}}cout<<f[m]<<endl;return 0;}
线性DP:
一行一行的求,难在分类
数字三角形:
898. 数字三角形 - AcWing题库
初始化的时候列要多初始化一格
#include<bits/stdc++.h>
using namespace std;
const int N=505;
int n,m;
int a[N][N],w[N][N],s[N];
int f[N];
int main(){int n;cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=i;j++){cin>>a[i][j];}}for(int i=0;i<=n;i++){for(int j=0;j<=i+1;j++){//这里要多初始化一点w[i][j]=-1e9;}}w[1][1]=a[1][1];for(int i=2;i<=n;i++){for(int j=1;j<=i;j++){w[i][j]=max(w[i-1][j-1]+a[i][j],w[i-1][j]+a[i][j]);}}int res=-1e9;for(int i=1;i<=n;i++){res=max(res,w[n][i]);}cout<<res<<endl;return 0;}
895. 最长上升子序列 - AcWing题库
最长上升子序列
这里分类的是以第i个数结尾;
什么是子序列?
可以隔着挑,但是得从前往后挑;
最长上升子序列的长度等于f[j]+1(1是后面以i结尾的那个数);
a[i]=max(a[j]+1);aj<ai (j=0,1,.....i-1);
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int n,m;
int a[N],w[N][N],s[N];
int f[N];
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n;i++){f[i]=1;//只有a[i]一个数的情况for(int j=1;j<i;j++){if(a[i]>a[j]){f[i]=max(f[i],f[j]+1);}}}int res=0;for(int i=1;i<=n;i++){res=max(res,f[i]);}cout<<res<<endl;return 0;
}
怎么记录最长子序列有那些数?
用一个数组g[i]去记录每一个长度转移的状态。
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int n,m;
int a[N],w[N][N],g[N];
int f[N];
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n;i++){f[i]=1;//只有a[i]一个数的情况g[i]=0;for(int j=1;j<i;j++){if(a[i]>a[j]){if(f[i]<f[j]+1){f[i]=f[j]+1;g[i]=j;//记录转移}}}}int k=1;for(int i=1;i<=n;i++){if(f[k]<f[i]){k=i;}}cout<<f[k]<<endl;for(int i=0,len=f[k];i<len;i++){cout<<a[k];k=g[k];//这里是倒着输出的}return 0;
}
最长公共子序列
897. 最长公共子序列 - AcWing题库
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int n,m;
char a[N],w[N][N],b[N];
int f[N][N];
int main(){cin>>n>>m;scanf("%s%s",a+1,b+1);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){f[i][j]=max(f[i-1][j],f[i][j-1]);if(a[i]==b[j]){f[i][j]=max(f[i][j],f[i-1][j-1]+1);}}}cout<<f[n][m]<<endl;return 0;
}
;
这周增添的讲题环节,虽然说能多多少少听懂一些学姐学长的思路,但是毕竟知识点跨度较大,我觉地,emmmm......可能对我帮助没有那么大,再者就是讲题的时候,有些同学更注重讲解如何去做题,其实,题意讲述明白也是很重要的哇T-T。有些东西光听是记不住的,过几天也就忘了,但是星期五晚上的牛客讲题是好的,毕竟题目都看过了也有所思考,以我们目前的水平补充点知识是能做的,就是看不懂题解,学长讲了题目的算法有哪些,可以私下再去填充,然后上手补题,我觉地这是很好的,至于星期六晚上的那堂课,呜呜呜,算法小白有种高一生听高考题的感觉,其实我就觉的我们目前还是得把基础打牢一点吧,先不要去试图建立高楼,有些东西听了也就只是听过,要实实在在的得到东西还是得通过练习,听后有练习才是听课的价值所在。T-T
over:
先到这吧,bye~
相关文章:
周报 Week 3:
补题链接: Week 3 DAY 1-CSDN博客 河南萌新联赛2024第(二)场:南阳理工学院-CSDN博客 Week 3 DAY 5:-CSDN博客 Week 3 DAY 6-CSDN博客 这周题单是动态规划——(背包问题,线性dp):…...
开源消息队列比较
目录 1. Apache Kafka 1.1安装步骤 1.1.1使用Docker安装 1.1.1手动安装 1.2 C#使用示例代码 1.2.1 安装Confluent.Kafka 1.2.2生产者代码示例 1.2.3消费者代码示例 1.3特点 1.4使用场景 2. RabbitMQ 2.1安装步骤 2.1.1使用Docker安装 2.1.2手动安装 2.2 C#使用示…...
【前端逆向】最佳JS反编译利器,原来就是chrome!
有时候需要反编译别人的 min.js。 比如简单改库、看看别人的 min,js 干了什么,有没有重复加载?此时就需要去反编译Javascript。 Vscode 里面有一些反编译插件,某某Beautify等等。但这些插件看人品,运气不好搞的话,反…...
微信小程序根据动态权限展示tabbar
微信小程序自定义 TabBar 后根据权限动态展示tabbar 在微信小程序开发中,自定义 TabBar 可以让应用更具灵活性和个性化。特别是在用户根据不同权限展示不同的 TabBar 内容时,正确的实现方法能够提升用户体验。本篇文章将分享如何使用事件总线实现权限变动时动态更新自定义 T…...
开源安全信息和事件管理(SIEM)平台OSSIM
简介 OSSIM,开源安全信息和事件管理(SIEM)产品,提供了经过验证的核心SIEM功能,包括事件收集、标准化和关联。 OSSIM作为一个开源平台,具有灵活性和可定制性高的优点,允许用户根据自己的特定需…...
【DP】01背包
算法-01背包 前置知识 DP 思路 01背包一般分为两种,不妨叫做价值01背包和判断01背包。 价值01背包 01背包问题是这样的一类问题:给定一个背包的容量 m m m 和 n n n 个物品,每个物品有重量 w w w 和价值 v v v,求不超过背…...
50、PHP 实现选择排序
题目: PHP 实现选择排序 描述: n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:(1)初始状态:无序区为R[1…n],有序区为空。(2)第1趟排序在无序区R[1…n]中选出关键字最小的记录R[k],将…...
17.延迟队列
介绍 延迟队列,队列内部是有序的,延迟队列中的元素是希望在指定时间到了以后或之前取出和处理。 死信队列中,消息TTL过期的情况其实就是延迟队列。 使用场景 1.订单在十分钟内未支付则自动取消。 2.新创建的店铺,如果十天内没…...
KCache-go本地缓存,支持本地缓存过期、缓存过期自维护机制。
GitHub - kocor01/kcache: go 本地缓存解决方案,支持本地缓存过期、缓存过期自维护机制。 最近系统并发很高,单接口10W的 QPS,对 redis 压力很大,大量的热KEY导致 redis 分片CPU资源经常告警。计划用 go 本地缓存缓解 redis 的压…...
斯坦福UE4 C++课学习补充 14:UMG-优化血量条
文章目录 一、优化执行效率二、简单脉冲动画 一、优化执行效率 绑定事件需要每一帧检查绑定对象是否有变化,势必造成CPU资源的浪费,因此优化执行效率的思路是:UI组件不再自行每帧查询血量,而是让血量自己在发生变化的同时通知UI进…...
在生信分析中大家需要特别注意的事情
在生信分析中大家需要特别注意的事情 标准的软件使用和数据分析流程 1. 先看我的b站教学视频 2. 先从我的百度网盘把演示数据集下载下来,先把要运行的模块的演示数据集先运行一遍 3. 前两步都做完了,演示数据集也运行成功了,并且知道了软件…...
Java工厂模式详解:方法工厂模式与抽象工厂模式
Java工厂模式详解:方法工厂模式与抽象工厂模式 一、引言 在Java开发中,设计模式是解决常见软件设计问题的一种有效方式。工厂模式作为创建型设计模式的一种,提供了灵活的对象创建机制,有助于降低代码的耦合度,提高系…...
springSecurity学习之springSecurity用户单设备登录
用户只能单设备登录 有时候在同一个系统中,只允许一个用户在一个设备登录。 之前的登陆者被顶掉 将最大会话数设置为1就可以保证用户只能同时在一个设备上登录 Override protected void configure(HttpSecurity http) throws Exception {http..anyRequest().aut…...
微信小程序实现聊天界面,发送功能
.wxml <scroll-view scroll-y"true" style"height: {{windowHeight}}px;"><view wx:for"{{chatList}}" wx:for-index"index" wx:for-item"item" style"padding-top:{{index0?30:0}}rpx"><!-- 左…...
【强化学习的数学原理】课程笔记--5(值函数近似,策略梯度方法)
目录 值函数近似一个例子TD 算法的值函数近似形式Sarsa, Q-learning 的值函数近似形式Deep Q-learningexperience replay 策略梯度方法(Policy Gradient)Policy Gradient 的目标函数目标函数 1目标函数 2两种目标函数的同一性 Policy Gradient 目标函数的…...
前端Long类型精度丢失:后端处理策略
文章目录 精度丢失的具体原因解决方法1. 使用 JsonSerialize 和 ToStringSerializer2. 使用 JsonFormat 注解3. 全局配置解决方案 结论 开发商城管理系统的品牌管理界面时,发现一个问题,接口返回品牌Id和页面展示的品牌Id不一致,如接口返回的…...
C++ | Leetcode C++题解之第300题最长递增子序列
题目: 题解: class Solution { public:int lengthOfLIS(vector<int>& nums) {int len 1, n (int)nums.size();if (n 0) {return 0;}vector<int> d(n 1, 0);d[len] nums[0];for (int i 1; i < n; i) {if (nums[i] > d[len])…...
springboo 整合 redis
springBoot 整合 redis starter启动依赖。—包含自动装配类—完成相应的装配功能。 引入依赖 <!--引入了redis整合springboot 的依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis&…...
dpdk编译安装以及接收udp报文(基于ubuntu)
目录 1、编译 2、设置运行环境 3、使用dpdk接收udp报文 3.1、设置发送端arp信息 3.2、测试 3.3、代码 4、其他 1、编译 代码下载: DPDK 下载版本:DPDK 19.08.2 export RTE_SDK/root/dpdk-stable-19.08.2/ export RTE_TARGETx86_64-native-li…...
【计算机网络】OSPF单区域实验
一:实验目的 1:掌握在路由器上配置OSPF单区域。 2:学习OSPF协议的原理,及其网络拓扑结构改变后的变化。 二:实验仪器设备及软件 硬件:RCMS交换机、网线、内网网卡接口、Windows 2019操作系统的计算机等。…...
Java聚合快递小程序对接云洋系统程序app源码
一场物流效率的革命 引言:物流新时代的序章 在数字化浪潮席卷各行各业的今天,物流行业也迎来了前所未有的变革。为了进一步提升物流效率,优化用户体验,聚合快递系统与云洋系统小程序的对接成为了行业内外关注的焦点。这一创新…...
【React】详解组件通信:从基础到进阶的全面指南
文章目录 一、父组件向子组件传递数据1. 基本概念2. 示例代码3. 详解定义子组件 Son定义父组件 App导出父组件 App数据流props 的内容 二、子组件向父组件传递数据1. 基本概念2. 示例代码3. 详解引入React库和useState钩子定义子组件 Son定义父组件 App导出父组件 App数据流 三…...
【vluhub】zabbix漏洞
介绍: zabbix是对服务器资源状态例如、内存空间、CPU、程序运行状态进行检测、设置预警值、短信设置等功能等一款开源工具。配置不当存在未授权,SQL注入漏洞 弱口令 nameadmin&passwordzabbix nameguest&password POST /index.php HTTP/1.1 Host: 192.1…...
openGauss触发器详解
openGauss 是一款开源关系型数据库管理系统,广泛应用于企业级应用中。随着数据量的增长和业务逻辑的复杂化,数据库管理和操作的自动化需求越来越高。触发器(Triggers)作为数据库中重要的编程工具,能够极大地简化复杂操…...
抄作业-跟着《React通关秘籍》捣鼓React-playground-上集
文章目录 前言1. 搭建react 开发环境2、react hooks 知识3. 目标:跟着小册实现 react-playground3.1 整体布局初始化项目使用Alloment 来实现左右分屏的拖拉功能 3.2 代码编辑器Monaco Editor 3.3 实现了多文件的切换用 useContext 来共享数据。优化 tab的样式&…...
80后最后的书信 年代
当时11亿人口只有1.8万部固定电话 中国几千年来 鱼传尺素 雁寄鸿书 写信最后要写 亲啓 如有照片,封面要写内有照片,请勿折叠 信的开头应该是 见字如面,展信舒颜 如果拜托别人做事情,最后要写为盼 最后要写 某某草 书未尽…...
软考-软件设计师(4)-计算机网络与安全:OSI七层、子网划分、网络安全控制技术、网络安全协议、网络安全威胁、对称与非对称加密等高频考点
场景 软考-软件设计师-计算机网络与信息安全模块高频考点整理。 以下为高频考点、知识点汇总,不代表该模块所有知识点覆盖,请以官方教程提纲为准。 注: 博客:霸道流氓气质-CSDN博客 实现 知识点 OSI/RM七层模型 注意各层的主要功能,特别是表示层负责数据的加密、压…...
Unity横板动作游戏 -为什么我又开始学习Unity,而不是Godot。
Readme 最近开始学习Unity制作2D动作游戏,由于一些操作第一次接触,为了加深印象,准备写这样一篇同步教程的笔记。 之前也接触过Unity,用 Unity 制作过一个非常简单的小游戏 Flappy Bird,并且魔改成了泰拉瑞亚的版本。…...
什么是NIO
NIO(New Input/Output),也称为Java非阻塞IO,是从Java 1.4版本开始引入的一个新的IO API,旨在提供一种比传统的阻塞IO更高效、更灵活的IO操作方式。 一 NIO用法的详细介绍 NIO支持面向缓冲区的、基于通道的IO操作&…...
PHP switch 替代品 match
match 是 PHP 8 中引入的新特性。在 PHP 8 中,match 用作新的类型安全的替代 switch 语句。它提供了更清晰、更简洁的语法,同时还支持表达式作为条件,可以更轻松地处理复杂的条件逻辑。 在 match 表达式中,每个分支都是一个条件和…...
FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 删除留言
源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 之前文章FastAPI(七十三)实战开发《在线课程学习系统》接口开发-- 回复留言,那么我们这次分享删除留言接口的开发…...
面试重点---快速排序
快排单趟 快速排序是我们面试中的重点,这个知识点也很抽象,需要我们很好的掌握,而且快速排序的代码也是非常重要,需要我们懂了还不行,必须要手撕代码,学的透彻。 在研究快速排序之前,我们首先…...
[MIT6.5840]MapReduce
MapReduce Lab 地址 https://pdos.csail.mit.edu/6.824/labs/lab-mr.html 论文地址 https://static.googleusercontent.com/media/research.google.com/zh-CN//archive/mapreduce-osdi04.pdf 工作原理 简单来讲,MapReduce是一种分布式框架,可以用来处理…...
【系统架构设计师】计算机组成与体系结构 ⑯ ( 奇偶校验码 | CRC 循环冗余码 | 海明码 | 模 2 除法 )
文章目录 一、校验码1、校验码由来2、奇偶校验码3、CRC 循环冗余码 ( 重点考点 )4、海明码校验 ( 软考不经常考到 ) 二、CRC 循环冗余码 ( 重点考点 )1、模 2 除法概念2、模 2 除法步骤3、模 2 除法示例4、CRC 循环冗余码示例 15、CRC 循环冗余码示例 2 参考之前的博客 : 【计…...
springboot,service 层统一异常抛出时,throws Exception写在接口上还是实现类上
springboot,service 层统一异常抛出时,throws Exception写在实现接口上,不是直接写在实现类上...
深度学习高效性网络
为了减轻Transformer笨重的计算成本,一系列工作重点开发了高效的Vision Transformer,如Swin Transformer、PVT、Twins、CoAtNet和MobileViT。 1、字节TRT-ViT 兼具CNN的速度、Transformer精度的模型 TRT-ViT(Transformer-based Vision Tra…...
PyQt ERROR:ModuleNotFoundError: No module named ‘matplotlib‘
Solution:打开cmd输入指令下载malplotlib pip install matplotlib...
Flutter Geolocator插件使用指南:获取和监听地理位置
Flutter Geolocator插件使用指南:获取和监听地理位置 简介 geolocator 是一个Flutter插件,提供了一个简单易用的API来访问特定平台的地理位置服务。它支持获取设备的最后已知位置、当前位置、连续位置更新、检查设备上是否启用了位置服务,以…...
网站基本布局CSS
代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title></title><style type"text/css">body {margi…...
ssm框架整合,异常处理器和拦截器(纯注解开发)
目录 ssm框架整合 第一步:指定打包方式和导入所需要的依赖 打包方法:war springMVC所需依赖 解析json依赖 mybatis依赖 数据库驱动依赖 druid数据源依赖 junit依赖 第二步:导入tomcat插件 第三步:编写配置类 SpringCon…...
古籍双层PDF制作教程:保姆级古籍数字化教程
在智慧古籍数字化项目中,很多图书馆要求将古籍导出为双层PDF,并且确保输出双层PDF底层文本与上层图片偏移量控制在1毫米以内。那么本教程带你使用古籍数字化平台,3分钟把一个古籍书籍转化为双侧PDF。 第1步:上传古籍 点批量上传…...
Git 删除 远端的分支
要删除 Git 远端的分支(例如: V3.2.1.13): 可以执行以下命令 git push origin --delete V3.2.1.13这条命令会向远端的仓库删除名为 V3.2.1.13 的分支。如果这个分支只在远端仓库存在而没有对应的本地分支,那么删除后这…...
PrgogressBar实现原理分析
ProgressBar 是 Android 中用于显示进度条的控件,它可以用来表示任务的完成程度或者加载进度等信息。ProgressBar 有两种主要类型:一种是确定性的(determinate),另一种是不确定性的(indeterminateÿ…...
【HarmonyOS】HarmonyOS NEXT学习日记:七、页面与组件的生命周期
【HarmonyOS】HarmonyOS NEXT学习日记:七、页面与组件的生命周期 页面和组件 组件:用Component装饰的代码称为自定义组件页面:Entry装饰的组件即页面的根节点 组件生命周期 aboutToAppear:在创建自定义组件的新实例后…...
【iOS】——Block循环引用
循环引用原因 如果在Block中使用附有_ _strong修饰符的对象类型自动变量,那么当Block从栈复制到堆时,该对象为Block所持有,这样容易引起循环引用。 HPPerson *person [[HPPerson alloc] init];person.block ^{NSLog("person.age--- …...
shell脚本自动化安装启动各种服务
1、自动化配置dns服务器 A主机:vim dns.sh #!/bin/bash# 自动化部署dns# 1、下载bind# 2、修改配置文件# vim /etc/named.conf # listen-on port 53 { 127.0.0.1;any; }; 修改(定位替换)# allow-query { localhost;any; }; 修改&am…...
Python - 开源库 ReportLab 库合并 CVS 和图像生成 PDF 文档
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/140281680 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Report…...
Java编写SIP协议
1、编写Server代码 package com.genersoft.iot.vmp.sip; import javax.sip.*; import javax.sip.message.*; import javax.sip.header.*; import java.util.*;public class SimpleSipServer implements SipListener {private SipFactory sipFactory;private SipStack sipStack…...
大型语言模型LLM的核心概念
本文主要介绍了目前主流的,几个大型语言模型LLM的整个训练过程 通常分为下面的几个阶段 1. 预训练 采用互联网上的大量数据进行训练,这一阶段大模型LLM的主体已定,找出共性并且压缩成一个模型。模型的参数量不是越大越好,遵循合理…...
软件测试---网络基础、HTTP
一、网络基础 (1)Web和网络知识 网络基础TCP/IP 使用HTTP协议访问Web WWW万维网的诞生 WWW万维网的构成 (2)IP协议 (3)可靠传输的TCP和三次握手策略 (4)域名解析服务DNS ࿰…...