结营考试- 算法进阶营地 - DAY11
结营考试 - 算法进阶营地 - DAY11
- 测评链接;
A - 打卡题
考点:枚举
;
分析
- 枚举
a _①_ b _②_ c = d
,中两个运算符的 3 3 3 种可能性,尝试寻找一种符合要求的答案。
参考代码
#include <bits/stdc++.h>
using namespace std;int a, b, c, d;
int solve(int u, int v, int flag)
{if (flag == 1)return u + v;else if (flag == 2)return u - v;else if (flag == 3)return u * v;
}int main()
{cin >> a >> b >> c >> d;for (int i = 1; i <= 3; i++)for (int j = 1; j <= 3; j++)if (solve(solve(a, b, i), c, j) == d){cout << "Yes" << endl;exit(0);}cout << "No" << endl;// system("pause");sreturn 0;
}
B - 溢出处理
分析
题目大意
新型病毒 91-DIVOC 正在广泛传播。
第一天有 a a a 个人被感染,在接下来的每天中,每个感染者都会传染给另外的 q q q 个人。定义传染系数为每天被感染的的人数的乘积,求 k k k 天内的传染系数 对 722733748 取模 的结果。
题目分析
根据题意:
- 第一天有 a a a 个人被感染。
- 在第二天时,这 a a a 个人中每个人都会传染给另外的 q q q 个人,因此第二天就有了 a × q a×q a×q 个人被感染。
- 第三天时,这 a × q a×q a×q 个人中每个人又会传染给另外的 q q q 个人,因此第三天就有 a × q × q a×q×q a×q×q 个人被感染。
以此类推,我们可以发现到第 k 天时,被感染的人数为 a × q × ⋯ × q ⏟ k − 1 a×\underbrace{q×⋯×q}_{k−1} a×k−1 q×⋯×q 。
求出了每天被感染的人数,只需要将它们乘起来就可以得到 k k k 天内的传染系数。由于答案可能很大,因此我们需要边乘边取模。
参考代码
#include <bits/stdc++.h>
using namespace std;#define ll long long
const int mod = 722733748;
int k, a, q;
ll ans = 1, pre; // pre 前一项int main()
{cin >> k >> a >> q;pre = a;for (int i = 1; i <= k; i++){ans = (ans * pre) % mod;pre = (pre * q) % mod;}cout << ans << endl;// system("pause");return 0;
}
C - 进制、推理
考点:进制、贪心
;
题意:
T T T 组数据,每组数据给定两个数 n n n 和 m m m,可以将 n n n 和其他任何数进行与操作和或操作,问至少要进行多少次操作才能使 n = m n=m n=m。
分析
30分
- 爆搜。
正解
考虑将 n n n 和 m m m 都变成二进制数。
接下来,逐位比较 n n n 和 m m m。
如果有一位上 n n n 是 1 1 1,而 m m m 是 0 0 0,就说明需要进行与操作,把 n n n 的这一位变成 0 0 0。
同样,如果有一位 n n n 是 0 0 0,而 m m m 是 1 1 1,就说明需要进行或操作,把 n n n 的这一位变成 1 1 1。
并且,同种操作可以同时完成。
所以,我们可以用两个布尔数组记录有没有出现以上两种情况。可证明,任意数据下,答案都 ≤ 2 ≤2 ≤2。
参考代码
#include <bits/stdc++.h>
using namespace std;#define ll long long
bool f1, f2;
ll T, a, b;int main()
{cin >> T;while (T--){cin >> a >> b;f1 = false, f2 = false;for (ll i = 2; i <= max(a, b) * 2; i <<= 1){ll x = a % i;ll y = b % i;if (x > y)f1 = true;if (x < y)f2 = true;}cout << f1 + f2 << endl;}// system("pause");return 0;
}
D - 贪心
考点:贪心、策略
;
分析
题目大意
n n n 个牛棚,编号为 1 ∼ n 1∼n 1∼n。初始时防御值分别为 a 1 , a 2 , ⋯ , a n a_1,a_2,⋯ ,a_n a1,a2,⋯ ,an。有 t t t 份补给,每份每份补给可以为某一个牛棚提供额外的 1 1 1 点防御值。一个牛棚可以接受多份补给。
补给完成后,有 m m m 块陨石分别撞击 x 1 , x 2 , ⋯ , x n x_1,x_2,⋯ ,x_n x1,x2,⋯ ,xn 号牛棚,每次撞击会令对应牛棚防御值减少 2 点。当一间牛棚的防御值 ≤ 0 ≤0 ≤0 时,牛棚会被破坏。
目前想要让被破坏的牛棚尽可能少。求在最优的补给策略下,被破坏的牛棚的最少的数量。
题目分析
不妨换一个角度来考虑。我们先让陨石撞击牛棚,计算出撞击后的牛棚的原始防御值,之后计算需要多少补给才能让某个牛棚不被破坏。即,我们计算每个牛棚的 a i − d i a_i−d_i ai−di,并与 1 1 1( 1 1 1 是牛棚不被破坏的最少防御值)做比较。其中 d i d_i di 代表每个牛棚因陨石而损失的防御值。
在计算时,可以直接枚举陨石,并直接在 a a a 数组中做操作。核心代码如下:
for (int i = 1; i <= m; ++i) {int x;cin >> x;a[x] -= 2;
}
可以很显然地考虑到,当 a i − d i < 1 a_i−d_i<1 ai−di<1 时,我们需要补给这个牛棚,补给的数量是 1 − ( a i − d i ) 1−(a_i−d_i) 1−(ai−di)。在补给有限的情况下,如果想要让尽可能多的牛棚存活,那显然需要优先补给 1 − ( a i − d i ) 1−(a_i−d_i) 1−(ai−di) 更小的牛棚。
因此,可以使用冒泡排序等方法,将 1 − ( a i − d i ) 1−(a_i−d_i) 1−(ai−di) 由小到大排序(或将 ( a i − d i ) (a_i−d_i) (ai−di) 由大到小排序也可,核心思路是一致的)。
for (int i = 1; i <= n; ++i) {a[i] = 1 - a[i]; // 此处 a[i] 已经减去了损失值,直接覆写// 代表需要的补给数量
}// 冒泡排序
for (int i = 1; i <= n; ++i) {for (int j = 1; j < n; ++j) {if (a[j] > a[j + 1])swap(a[j], a[j + 1]);}
}
排序后,开始分配补给。从前往后枚举 i i i ,判断每个牛棚的 1 − ( a i − d i ) 1−(a_i−d_i) 1−(ai−di) 是否大于 0 0 0(即需要补给)。如果小于等于 0 0 0,代表不需要补给,直接跳过;如果大于 0 0 0,判断当前剩余的补给是否够填补上 1 − ( a i − d i ) 1−(a_i−d_i) 1−(ai−di),如果足够则直接减去,否则中止补给。
在过程中,遇到「不需要补给」和「补给成功」的牛棚,同时计数即可。
int ans = 0;
for (int i = 1; i <= n; ++i) {// a[i] 代表需要的补给数量,上方已经覆写if (a[i] <= 0) { // 不需要补给ans++;} else {if (t >= a[i]) { // 剩余的 t 足够补给该牛棚t -= a[i]; // 减去补给该牛棚的消耗ans++;} else break; // 否则直接中断循环,因为后面的补给量只会越来越大,一定无法补给成功}
}
cout << ans << endl;
参考代码
#include <bits/stdc++.h>
using namespace std;const int N = 5e3 + 10;
int T, n, m, t;
int a[N];int main()
{cin >> T;while (T--){cin >> n >> t >> m;for (int i = 1; i <= n; i++)cin >> a[i];// 反过来先处理损失被砸下去后总修复的能量值for (int i = 1, x; i <= m; i++)cin >> x, a[x] -= 2;for (int i = 1; i <= n; i++)// 距离补给 1 防御值最近的牛棚做数值处理a[i] = 1 - a[i];int ans = 0;// 将需要修复的能量值 “贪心” 的从小到大排序,优先修复值小的牛棚sort(a + 1, a + 1 + n);for (int i = 1; i <= n; i++){if (a[i] <= 0)ans++; // 不需要补给else // 补给{if (t >= a[i]) // 还够时间补给{t -= a[i];ans++;}else // 不够时间补给,则退出break;}}cout << ans << endl;}// system("pause");return 0;
}
E - 数学、找规律
考点:数学、枚举
;
分析
题目大意
小 A 的地图可看作是一个 n n n 行 m m m 列的表格,其中每个格子可以看作一个城市。可是,地图上每个城市的粮食数不是它本身的粮食数,而是它与它相邻的所有的城市的粮食数之和。求所有城市的实际粮食数之和。(保证 n , m n,m n,m 均为 3 3 3 的倍数)
题目分析
因为每个城市在小 A 地图上的粮食数都是它与它相邻的所有的城市的粮食数之和,所以我们可以通过它得到它所在的 3 × 3 3×3 3×3 矩阵的实际粮食数。
又因为数据保证 n , m n,m n,m 均为 3 3 3 的倍数,所以我们可以将地图分割为若干个 3 × 3 3×3 3×3 矩阵。
故枚举所有在 3 × 3 3×3 3×3 矩阵的中心的城市并将其在地图上显示的粮食数相加即可得到实际粮食数的总和。
核心代码
for(int i=2;i<=n;i+=3){for(int j=2;j<=m;j+=3){sum+=a[i][j];}
}
[!WARNING]
最多 110 110 110 个 9 ∗ 9 9*9 9∗9 方格, 110 ∗ 1 0 9 = 1.1 ∗ 1 0 11 110 * 10^9 = 1.1*10^{11} 110∗109=1.1∗1011 会超出 int 类型范围,sum 要开
long long
。
参考代码
#include <bits/stdc++.h>
using namespace std;#define ll long long
const int N = 1001;
int n, m;
int a[N][N];
ll sum;int main()
{cin >> n >> m;for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++)cin >> a[i][j];for (int i = 2; i <= n; i += 3)for (int j = 2; j <= m; j += 3)sum += a[i][j];cout << sum << endl;// system("pause");return 0;
}
F - DP / 记忆化搜索
考点:记忆化搜索 / DP
;
分析
题意:略过。1
[!WARNING]
- 最开始站在树 1 1 1。
状态分析:
- d p [ i ] [ j ] dp[i][j] dp[i][j]:表示奶牛在第 i i i 分钟内转移了 j j j 次能够接到的最多苹果。
那么显而易见,对于每一分钟来说,枚举转移次数从而得到解
-
d p [ i ] [ j ] = m a x ( d p [ i − 1 ] [ j ] , d p [ i − 1 ] [ j − 1 ] ) dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]) dp[i][j]=max(dp[i−1][j],dp[i−1][j−1]),要么上一时刻 ( t − 1 ) (t-1) (t−1),移动 / 不移动。
-
同时如果 a [ i ] = j % 2 + 1 a[i]=j \% 2+1 a[i]=j%2+1 ,奶牛一开始在树 1 1 1,移动次数 如果为奇数时候一定在树 2 2 2,偶数次数的时候一定在树 1 1 1,注意要让次数加一。
初始化是数组一开始都是 0 0 0。
最终的答案是到第 T T T 分钟时奶牛走 1 ∼ w 1 \sim w 1∼w 步能够取得的最多苹果。
参考代码
#include <bits/stdc++.h>
using namespace std;const int N = 1005, M = 35;
int n, m;
int f[N][M], a[N], ans;int main()
{cin >> n >> m;for (int i = 1; i <= n; i++)cin >> a[i]; // 第 i 时刻,所在树的编号for (int i = 1; i <= n; i++) // 枚举时间for (int j = 0; j <= n && j <= m; j++) // 移动的次数{if (j == 0) // 没有移动次数,直接继承f[i][j] = f[i - 1][j];elsef[i][j] = max(f[i - 1][j], f[i - 1][j - 1]); // 不移动、移动if (a[i] == j % 2 + 1) // 一开始站在树 1,移动次数如果为奇数时候一定在树 2,偶数次数的时候一定在树 1,二者不能同时被修改f[i][j]++;}// 在 0 ~ n 时刻下找答案for (int i = 0; i <= m; i++)ans = max(ans, f[n][i]);cout << ans << endl;// system("pause");return 0;
}
G - DP / topo
考点:DP、topo
;
分析
为什么要拓扑排序?
小杨有个包含 n n n 个节点 m m m 条边的有向无环图。
根据路径上的经过节点的先后顺序可以得到一个节点权值的序列。
DP 开始
定义
第一种
直接套, f i fi fi 表示从某个点到点 i i i,最长不下降子序列的最大长度。然后每遇到一条边就更新一次。
时间复杂度:一共 m m m 条边,每条边转移时间复杂度为 O ( n ) O(n) O(n),总时间复杂度为 O ( n m ) O(nm) O(nm),毫无疑问会 TLE
。看来不行。
第二种
抓住题目的“弱点”,发现一个很奇怪的条件, 1 ≤ A i ≤ 10 1≤Ai≤10 1≤Ai≤10,也就是点权大小不超过 10 10 10。
所以可以成为 f f f 的第二维:
f i , j f_{i,j} fi,j 代表从某个点开始,到点 i i i,满足最后一个数字为 j j j 的最长不下降子序列的最大长度。
初始状态
所有 f i , A i = 1 f_{i,A_i}=1 fi,Ai=1:只有当前点。
转移顺序
拓扑序,如果不是,在转移当前点时可能某个前驱节点还没转移到,如果从那个节点转移到这个节点刚好是最优解(或者最优解的一部分),答案就会出错。
状态转移方程
重点来了!
对于点 v v v 的某一个前驱结点 u u u(或者对于点 u u u 的某个后继结点 v v v),有两种转移:
第一种
一种是将点 v v v 加入到点 u u u 的最长不下降子序列中,比如:
此时点 u u u 的最长不下降子序列为 1 , 2 , 3 1,2,3 1,2,3(即 f u , 3 = 3 f_{u,3}=3 fu,3=3),而 A v ≥ 3 A_v \ge 3 Av≥3,则这种转移会使 f v , A v = f u , 3 + 1 = 4 f_{v,Av}=f_{u,3}+1=4 fv,Av=fu,3+1=4,前提是原 f v , A v < 4 f_{v,Av}<4 fv,Av<4(不然得到更劣的解)。
不难知道:
∀ 1 ≤ i ≤ A v : f v , A i = m a x ( f v , A i , f u , i + 1 ) ; ∀1≤i≤A_v:f_v,A_i=max(f_{v,A_i},f_{u,i+1}); ∀1≤i≤Av:fv,Ai=max(fv,Ai,fu,i+1);
右边很好理解。左边为什么是 1 ≤ i ≤ A v 1≤i≤A_v 1≤i≤Av 呢?不可以大于 A v A_v Av 吗?
不可以。
因为在 不下降序列的末尾 增加一个 比原来的末尾更小的元素,增加后就 不是不下降序列了。
比如你在不下降序列 1,2,3 最后加入一个 2,最后还满足不下降吗?显然不满足。
第二种
第二种就是不算上元素 v v v,本来是 1,2,3 现在还是 1,2,3,子序列嘛,可以去除某些元素(这里是去除元素 v v v)。
∀ 1 ≤ i ≤ 10 : f v , i = m a x ( f v , i , f u , i ) ∀1 \le i \le 10:f_{v,i}=max(f_{v,i},f_{u,i}) ∀1≤i≤10:fv,i=max(fv,i,fu,i)
答案
所有有意义的 f i , j f_{i,j} fi,j 的最大值(有意义: 1 ≤ i ≤ n , 1 ≤ j ≤ 10 1≤i≤n,1≤j≤10 1≤i≤n,1≤j≤10);
参考代码
#include <bits/stdc++.h>
using namespace std;const int N = 1e5 + 10;
vector<int> e[N];
int n, m, w[N], ind[N];
int f[N][12]; // f[i][j]:表示到达点 i 最后一个数字为 j 的最长不下降子序列长度
queue<int> q;void topo()
{for (int i = 1; i <= n; i++){if (ind[i] == 0)q.push(i);f[i][w[i]] = 1; // 到达点 i 用时为 w[i] 的长度至少为本身 1}while (q.size()){int u = q.front();q.pop();for (auto v : e[u]){if (--ind[v] == 0) // 松弛q.push(v);// 转移1:枚举 u 点到达 v 点的上一个状态, f[u][j], 1 <= j <= w[v],是否加入 w[v] 后会更长for (int j = 1; j <= w[v]; j++)f[v][w[v]] = max(f[v][w[v]], f[u][j] + 1);// 转移2:不加上当前点 v 的点权会更优的情况for (int j = 1; j <= 10; j++)f[v][j] = max(f[v][j], f[u][j]);}}
}int main()
{cin >> n >> m;for (int i = 1; i <= n; i++)cin >> w[i];for (int i = 1, u, v; i <= m; i++){cin >> u >> v;e[u].push_back(v); // 加边ind[v]++;}// topotopo();// 在 n 个点 1~10 的点权上找最大不下降子序列长度int res = 0;for (int i = 1; i <= n; i++)for (int j = 1; j <= 10; j++)res = max(res, f[i][j]);cout << res << endl;// system("pause");return 0;
}
H - 贪心、位运算
考点:贪心、位运算
;
分析
显然的,答案在二进制下的第 i i i 位为 1 1 1 一定比该位为 0 0 0 更优。
故贪心的策略:考虑 从高到低枚举答案 的二进制位,若该位可取 1 则必定贪心取 1(优先取位权大的),而根据这个结果再去检查后面更低位能否取。
下面问题在于如何检验第 i i i 位是否可行。由于只能合并相邻两项,故合并 k k k 次相当于将原序列分为 n − k n−k n−k 段,每一段内按位或。因此,考虑用 p p p 维护当前段内的按位或值,若某一时刻 p p p 二进制下第 i i i 位为 1,且与已得出的更高位部分的答案不矛盾,则可以贪心的开启新的一段。最后仅需判断段数是否不小于 n − k n−k n−k 即可。
时间复杂度 O ( n l o g V ) O(nlogV) O(nlogV)。
参考代码
#include <bits/stdc++.h>
using namespace std;#define ll long longconst int N = 2e5 + 10, V = 30;
int n, k, a[N], ans;bool check(int d)
{int res = 0, p = 0;for (int i = 1; i <= n + 1; i++){p |= a[i]; // 或 1~n+1if ((p & d) == d) // 当前数 a[i] 与目标 d 位相同,则另起一段新的合并序列res++, p = 0;}return res >= k; // true 尝试更小的 d 是否也可以行
}int main()
{cin >> n >> k;k = n - k; // 合并的次数for (int i = 1; i <= n; i++)cin >> a[i];for (int i = V; i >= 0; i--) // 从高位到低位枚举 “贪心的策略” 使得结果尽可能大if (check(ans + (1 << i)))ans += (1 << i);cout << ans << endl;// system("pause");return 0;
}
相关文章:
结营考试- 算法进阶营地 - DAY11
结营考试 - 算法进阶营地 - DAY11 测评链接; A - 打卡题 考点:枚举; 分析 枚举 a _①_ b _②_ c d,中两个运算符的 3 3 3 种可能性,尝试寻找一种符合要求的答案。 参考代码 #include <bits/stdc.h> usi…...
设计模式: 访问者模式
文章目录 一、介绍二、模式结构三、优缺点1、优点2、缺点 四、应用场景 一、介绍 Visitor 模式(访问者模式)是一种行为设计模式,它允许在不修改对象结构的前提下,增加作用于一组对象上新的操作。就增加新的操作而言,V…...
selenium底层原理详解
目录 1、selenium版本的演变 1.1、Selenium 1.x(Selenium RC时代) 1.2、Selenium 2.x(WebDriver整合时代) 1.3、Selenium 3.x 2、selenium原理说明 3、源码说明 3.1、启动webdriver服务建立连接 3.2、发送操作 1、seleni…...
【Solidity】继承
继承 Solidity 中使用 is 关键字实现继承: contract Father {function getNumber() public pure returns (uint) {return 10;}function getNumber2() public pure virtual returns (uint) {return 20;} }contract Son is Father {}现在 Son 就可以调用 Father 的 …...
docker 安装mino服务,启动报错: Fatal glibc error: CPU does not support x86-64-v2
背景 docker 安装mino服务,启动报错: Fatal glibc error: CPU does not support x86-64-v2 原因 Docker 镜像中的 glibc 版本要求 CPU 支持 x86-64-v2 指令集,而你的硬件不支持。 解决办法 降低minio对应的镜像版本 经过验证:qu…...
地图相册系统的设计与实现
摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…...
使用vh和rem实现元素响应式布局
示例代码 height: calc(100vh 30rem) vh(Viewport Height):vh是一个相对单位,代表浏览器窗口高度的百分比,例如20vh就是浏览器窗口高度的20%。 rem(root em):rem是通过html根元素…...
螺旋矩阵 II(LeetCode)
题目 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 解题 def generateMatrix(n):matrix [[0] * n for _ in range(n)]top, bottom 0, n - 1left, right 0, n - 1num 1while top <…...
如何快速掌握一款MCU
了解MCU特点 rom ,ramgpiotimerpower 明确哪些资源是项目开发需要的 认真理解相关资料模块 开始编程 编写特别的验证程序(项目不紧)按照自己的理解编写(老司机,时间紧张) 掌握MCU基本功能 定时器 固…...
XSS-DOM
文章目录 源码SVG标签Dom-Clobbringtostring 源码 <script>const data decodeURIComponent(location.hash.substr(1));;const root document.createElement(div);root.innerHTML data;// 这里模拟了XSS过滤的过程,方法是移除所有属性,sanitize…...
uniapp去掉页面导航条
在pages.json文件中,globalStyle中添加 ”app-plus“:{"titleNView":false }...
MySQL数据库专栏(三)数据库服务维护操作
1、界面维护,打开服务窗口找到MySQL服务,右键单击可对服务进行启动、停止、重启等操作。 选择属性,还可以设置启动类型为自动、手动、禁用。 2、指令维护 卸载服务:sc delete [服务名称] 例如:sc delete MySQL 启动服…...
【QT】基于UDP/TCP/串口 的Ymodom通讯协议客户端
【QT】基于UDP/TCP/串口的Ymodom通讯协议客户端 前言Ymodom实现QT实现开源库的二次开发-1开源库的二次开发-2 串口方式实现TCP方式实现UDP方式实现补充:文件读取补充:QT 封装成EXE 前言 Qt 运行环境 Desktop_Qt_5_11_2_MSVC2015_64bit ,基于…...
超详细!!!electron-vite-vue开发桌面应用之引入UI组件库element-plus(四)
云风网 云风笔记 云风知识库 一、安装element-plus以及图标库依赖 npm install element-plus --save npm install element-plus/icons-vue npm i -D unplugin-icons二、vite按需引入插件 npm install -D unplugin-vue-components unplugin-auto-importunplugin-vue-componen…...
【排序篇】实现快速排序的三种方法
🌈个人主页:Yui_ 🌈Linux专栏:Linux 🌈C语言笔记专栏:C语言笔记 🌈数据结构专栏:数据结构 文章目录 1 交换排序1.1 冒泡排序1.2 快速排序1.2.1 hoare版本1.2.2 挖坑法1.2.3 前后指针…...
Java 标识符(详解)
文章目录 一、简介二、命名规则三、命名规范 一、简介 在 Java 中,用于给变量、类、方法等命名的符号组合,我们称之为Java标识符,它就像是给这些编程元素贴上的独特标签,以便在程序中能够准确地引用和操作它们。 二、命名规则 标…...
2024年,有哪些优质的计算机书籍推荐?
在2024年,计算机领域的新书层出不穷,涵盖了从基础理论到前沿技术的多个方面。以下是今年出版的几本备受关注的计算机新书。 1. AI与机器学习类 1、深度学习详解 1.李宏毅老师亲笔推荐,杨小康、周明、叶杰平、邱锡鹏鼎力推荐! 2.数百万次播…...
Python基础知识点--总结
1. 注释 注释用于提高代码的可读性,在代码中添加说明文字,使代码更容易理解。 单行注释:使用 # 符号开头,注释内容在符号之后的行内。多行注释:使用三引号( 或 """)包裹注释内…...
高效记录与笔记整理的策略:工具选择、结构设计与复习方法
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
Request重复读的问题
换了新工作都有时间写文章,每天也是加班到很晚,也不是工作内容多,主要是还是效率低,要考虑多干的很心累。 一、关于request重复读的问题,从源码的角度来分析 为什么他不能重复读 跳转 再看源码前可能需要一些基础的…...
Linux学习第60天:Linux驱动开发的一些总结
今天是Linux驱动开发的最后一个章节,题目中标明是60天完成的,其实在实际学习及笔记的整理中不止是60天。中间有过断更,有时断更的时间还是挺长的。这是在整个Linux驱动开发学习中最不满意的地方。 题目为Linux学习,其实这个题目有…...
OPP || 继承和抽象类 || 访问控制
OPP面向对象程序设计 数据抽象:类的接口声明和定义实现分离继承:类构成的(树型)层次关系动态绑定:忽略相似类型区别,用统一的方式使用 基类派生类: 继承:类名 冒号 访问说明符 …...
蓝牙音视频远程控制协议(AVRCP) command跟response介绍
零.声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍。 第二篇:Trans…...
MySQL的InnoDB存储引擎中的Buffer Pool机制
目录 Buffer Pool 简介 定义 为什么需要Buffer Pool 图解重点知识 Buffer Pool 的组成 数据页(Data Pages) 索引页(Index Pages) 插入缓冲页(Insert Buffer Pages) undo页(Undo Pages&a…...
5. MongoDB 文档插入、更新、删除、查询
1. 插入文档 文档的数据结构和JSON基本一样。所有存储在集合中的数据都是BSON格式。 BSON是一种类似JSON的二进制形式的存储格式,是Binary JSON的简称。常用的插入文档方法包括: db.collection.insertOne():插入单个文档db.collection.inse…...
⌈ 传知代码 ⌋ DETR[端到端目标检测]
💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…...
Oracle之触发器
简介 触发器在数据库里以独立的对象存储,他与存储过程不同的是,存储过程通过其他程序来启动运行或直接启动运行而触发器是由一个事件来启动运行,即触发器是当某个事件发生时自动式运行。并企,触发器不能接收参数。所以运行触发器…...
从零搭建微前端架构:解耦大型项目的终极方案
随着前端应用的复杂度不断提升,单体前端应用(Monolithic Frontend)的维护和扩展难度也日益增加。微前端(Micro-Frontend)作为一种新兴架构理念,旨在将大型前端项目拆分为多个独立、可独立部署的微应用,从而提升项目的可维护性和灵活性。这篇文章将带你从零开始搭建一个微…...
24/8/17算法笔记 MPC算法
MPC算法,在行动前推演一下 MPC(Model Predictive Control,模型预测控制)是一种先进的控制策略,它利用未来预测模型来优化当前的控制动作。MPC的核心思想是,在每一个控制步骤中,都基于当前系统状…...
GROUP_CONCAT 用法详解(Mysql)
GROUP_CONCAT GROUP_CONCAT 是 MySQL 中的一个聚合函数,用于将分组后的多行数据连接成一个单一的字符串。 通常用于将某个列的多个值合并到一个字符串中,以便更方便地显示或处理数据。 GROUP_CONCAT([DISTINCT] column_name[ORDER BY column_name [ASC…...
Golang httputil 包深度解析:HTTP请求与响应的操控艺术
标题:Golang httputil 包深度解析:HTTP请求与响应的操控艺术 引言 在Go语言的丰富标准库中,net/http/httputil包是一个强大的工具集,它提供了操作HTTP请求和响应的高级功能。从创建自定义的HTTP代理到调试HTTP流量,h…...
SQLALchemy 分页
SQLALchemy 分页 1. 使用SQLAlchemy的`slice`和`offset`/`limit`SQLAlchemy 1.4及更新版本SQLAlchemy 1.3及更早版本使用第三方库注意事项在Web开发中,分页是处理大量数据时一个非常重要的功能。SQLAlchemy是一个流行的Python SQL工具包和对象关系映射(ORM)库,它允许开发者…...
快速上手体验MyPerf4J监控springboot应用(docker版快速开始-本地版)
使用MyPerf4J监控springboot应用 快速启动influxdb时序数据库日志收集器telegrafgrafana可视化界面安装最终效果 项目地址 项目简介: 一个针对高并发、低延迟应用设计的高性能 Java 性能监控和统计工具。 价值 快速定位性能瓶颈快速定位故障原因 快速启动 监控本地应用 idea配…...
C语言 之 strlen、strcpy、strcat、strcmp字符串函数的使用和模拟实现
文章目录 strlen的使用和模拟实现函数的原型strlen模拟实现:方法1方法2方法3 strcpy的使用和模拟实现函数的原型strcpy的模拟实现: strcat的使用和模拟实现函数的原型strcat的模拟实现: strcmp的使用和模拟实现函数的原型strcmp的模拟实现 本…...
CAPL使用结构体的方式组装一条DoIP车辆识别请求报文(payload type 0x0002)
DoIP车辆识别请求(payload type 0x0002)报文的格式为: /******************************************************** +--------+--------+--------+--------+ |version | inVer | type | +--------+--------+--------+--------+ | length …...
数据接入教学
数据接入教学 1、开通外部网络策略2、检查本地防火墙策略3、测试网络连通性4、工具抓包命令5、本地测试发送与监听 1、开通外部网络策略 保证外部网络联通、保证内部防火墙开通策略(可以关闭进行测试) 2、检查本地防火墙策略 关闭进行测试 停止firewa…...
炒作将引发人工智能寒冬
我们似乎经常看到人工智能的进步被吹捧为机器真正变得智能的一大飞跃。我将在这里挑选其中的一个例子,并确切解释为什么这种态度会为人工智能的未来埋下隐患。 这很酷,这是一个非常困难且非常具体的问题,这个团队花了3 年时间才解决。他们一定…...
clamp靶机复现
靶机设置 设置靶机为NAT模式 靶机IP发现 nmap 192.168.112.0/24 靶机IP为192.168.112.143 目录扫描 dirsearch 192.168.112.143 访问浏览器 提示让我们扫描更多的目录 换个更大的字典,扫出来一个 /nt4stopc/ 目录 目录拼接 拼接 /nt4stopc/ 发现页面中有很多…...
mfc100u.dll丢失问题分析,详细讲解mfc100u.dll丢失解决方法
面对mfc100u.dll文件丢失带来的挑战时,许多用户都可能感到有些无助,尤其是当这一问题影响到他们日常使用的软件时。但实际上,存在几种有效方法可以帮助您快速恢复该关键的系统文件。为了方便不同水平的用户,本文将详细解析各种处理…...
【C++】什么是内存管理?
如果有不懂的地方,可以看我以往文章哦! 个人主页:CSDN_小八哥向前冲 所属专栏:C入门 目录 C/C内存分布 C内存管理方式 new/delete操作内置类型 new/delete操作自定义类型 operator new与operator delete函数 new和delete实现…...
产业经济大脑建设方案(五)
为了提升产业经济的智能化水平,我们提出建设一个综合产业经济大脑系统,该系统通过整合大数据分析、人工智能和云计算技术,构建全方位的数据采集、处理和决策支持平台。该平台能够实时监测产业链各环节的数据,运用智能算法进行深度…...
如何在 Odoo 16 中覆盖创建、写入和取消链接方法
Odoo 是一款强大的开源业务应用程序套件,可为各种业务运营提供广泛的功能。其主要功能之一是能够自定义和扩展其功能以满足特定的业务需求。在本博客中,我们将探讨如何覆盖Odoo 16中的创建、写入和取消链接方法,从而使您无需修改核心代码…...
pip离线安装accelerate
一、离线下载到当前文件夹 pip download accelerate -d ./anzhuangbao# 制定版本使用以下命令pip download accelerate0.32.0 -d ./anzhuangbao二、离线安装 cd anzhuangbaipip install --no-index --find-links. accelerate三、验证是否安装 pip show accelerateAccelerate: …...
VUE3请求意外报跨越错误或者500错误问题
1.有可能是请求传参和传参类型写错了 首先要确保该请求接口是支持跨域的(不支持叫后端改) access-control-allow-headers:Content-Type, Accept, Access-Control-Allow-Origin, api_key, Authorization access-control-allow-methods:GET, POST, OPTIO…...
vue 关于两个if条件中的promise
一、案例效果 期望if判断条件里的两个promise 都同时执行完成 二、 初始代码案例 const formatDetail async (fnArgsJsonParams: MapLogicType) > {if (fnArgsJsonParams?.targetFeatureName) {const resDetailData await formatFeatureInfo(fnArgsJsonParams.targetF…...
C/C++移位运算问题
目录 上期答案揭晓: 回忆: 问题1展现: 问题2展现: 改进方案: 下期预告:C语言类型转换的问题。 上期答案揭晓: 上期的问题大家是否都有了想法,下面说说我的思路。 上次我们提到…...
录屏工具 Icecream Screen Recorder PRO v7.41
Icecream Screen Recorder的免费屏幕录制工具,具备捕捉视频、音频、图片和游戏等多种功能。以前推荐过的icecreamPDF也是他家的非常好用! 下载链接:「录屏」来自UC网盘分享https://drive.uc.cn/s/b474616b91534...
解决连接不上Linux和服务器中的Nacos(Windows中能连接但是Linux中却不行)
报错 com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException: UNKNOWN: Uncaught exception in the SynchronizationContext. Re-thrown. at com.alibaba.nacos.shaded.io.grpc.Status.asRuntimeException(Status.jav 2024-08-13T10:21:52.93708:00 ERROR 27764 --- …...
【LLM大语言模型-开篇】LLM入门实践指南
"LLM入门实践指南"是一个通过代码实践,为大模型入门读者提供全面且较为深入的大模型技术视角的教程。 为何关注LLM? 创新与变革:LLM不仅推动了自然语言处理(NLP)领域的进步,还在诸多行业中催生了…...
实时视频换脸、8 万家 AI 公司消失、论文天价售卖、新的 scaling law、爆火毒舌 AI | AI 掘金视界周刊第 5 期
AI 视界周刊由战场小包维护,每周一更新,包含热点聚焦、应用破局、学术前沿、社区热议、智见交锋、跨界 AI、企业动态和争议 AI 八大板块,后续板块划分和内容撰写在周刊迭代过程中持续优化,欢迎大家提出建议。 欢迎大家来到《AI 视…...