数据结构与算法-数学-容斥原理,高斯消元解线性方程组
容斥原理
容斥原理用于计算多个集合的并集元素个数,公式为 ∣A1∪A2∪⋯∪An∣=∑i=1n∣Ai∣−∑1≤i<j≤n∣Ai∩Aj∣+∑1≤i<j<k≤n∣Ai∩Aj∩Ak∣−⋯+(−1)n−1∣A1∩A2∩⋯∩An∣
举一个例题:
给定一个整数 nn 和 mm 个不同的质数 p1,p2,…,pm。
请你求出1∼n 中能被 p1,p2,…,pm 中的至少一个数整除的整数有多少个。
1~n中能被pi整除的数的个数记作numi
ans=num1+num2.....+numm -(num(12)+num(13).....+num(1m)....num (m-1m) )+.....
简单的看1~n中可以被2整除的数 n/2个,能被2,3同时整除的数的个数n/6.
这样看是不是就很简单了
m*2^m:枚举1~m,表示几个数,然后再去1~m中选择这些数的组合
代码;
#include <bits/stdc++.h>
using namespace std;
const long long N=20;
long long a[N];
long long n,m;
long long p;
long long res=0;
void dfs(long long len,long long cur,long long mul,long long limit){
if(mul>n)return;
if(len==limit){
res+=p*(n/mul);
return;
}
if(cur>m)return;
dfs(len+1,cur+1,mul*a[cur],limit);
dfs(len,cur+1,mul,limit);
}
signed main(){
scanf("%lld%lld",&n,&m);
p=-1;
for(long long i=1;i<=m;i++)scanf("%lld",&a[i]);
for(long long i=1;i<=m;i++){
p=(-p);
dfs(0,1,1,i);
}
cout<<res;
}
高斯消元
高斯消元解线性方程组
原理:通过一系列的初等行变换将线性方程组的增广矩阵化为行阶梯形矩阵或行最简形矩阵,从而求解方程组。初等行变换包括交换两行、某一行乘以非零常数、某一行加上另一行的倍数。
简述一下高斯消元求解线性方程组的思路:
第一步:找到每一列的绝对值最大的数的行号
在当前处理的列中,遍历该列中所有尚未处理的行,找出绝对值最大的那个数所在的行号。这一步的目的是为了在进行消元操作时,选择一个相对较大的主元(即当前列的首非零元素),这样可以减少计算过程中的误差积累,提高计算的稳定性。
第二步:将这行交换到最上面一行
将找到的绝对值最大的那一行与当前处理的最上面一行进行交换。通过交换行的操作,将主元放到一个更便于进行后续计算的位置,即当前处理部分的第一行。
第三步:把第一行的最前面的非 0 的数变为 1(整体除以这个数)
用第一行的每个元素除以主元(即最前面的非零数),使得主元变为 1。这样做是为了后续能够方便地对其他行进行消元操作,将其他行中对应列的元素消为 0。
第四步:将下面的所有行中该列非 0 的行全部消去成为 0
对于当前列下面的每一行,如果该行在该列的元素不为 0,就将该行的所有元素减去第一行对应元素乘以一个适当的倍数,使得该行在该列的元素变为 0。这个倍数就是该行在该列的元素除以第一行主元的值。通过这一步操作,实现了对当前列的消元,使得该列除了主元所在的行之外,其他行的元素都变为 0。
第五步:看下一列,回到第一步
处理完当前列后,将注意力转移到下一列,重复上述第一步到第四步的操作,直到所有列都处理完毕。经过这样的反复操作,原线性方程组的增广矩阵就会被化为一个上三角矩阵(倒置梯形),此时方程组的形式变得更容易求解。
回代求解
在得到上三角矩阵后,从最后一行开始,依次求解每个未知数。由于最后一行只有一个未知数,很容易直接求出其值。然后将求出的未知数的值代入上一行方程,求解上一行的未知数,以此类推,从下往上逐步求出所有未知数的值。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 110;
const double eps = 1e-6;
int n;
double a[N][N];
int gauss()
{
int c, r;
for (c = 0, r = 0; c < n; c ++ )
{
int t = r;
for (int i = r; i < n; i ++ )
if (fabs(a[i][c]) > fabs(a[t][c]))
t = i;
if (fabs(a[t][c]) < eps) continue;
for (int i = c; i < n + 1; i ++ ) swap(a[t][i], a[r][i]);
for (int i = n; i >= c; i -- ) a[r][i] /= a[r][c];
for (int i = r + 1; i < n; i ++ )
if (fabs(a[i][c]) > eps)
for (int j = n; j >= c; j -- )
a[i][j] -= a[r][j] * a[i][c];
r ++ ;
}
if (r < n)
{ for (int i = r; i < n; i ++ )//
if (fabs(a[i][n]) > eps)
return 2;
return 1;
}
for (int i = n - 1; i >= 0; i -- )
for (int j = i + 1; j < n; j ++ )
a[i][n] -= a[j][n] * a[i][j];
return 0;
}
int main()
{
cin >> n;
for (int i = 0; i < n; i ++ )
for (int j = 0; j < n + 1; j ++ )
cin >> a[i][j];
int t = gauss();
if (t == 0)
{
for (int i = 0; i < n; i ++ ) printf("%.2lf\n", a[i][n]);
}
else puts("No Solution");
return 0;
}
高斯消元解异或线性方程组
原理:与普通高斯消元类似,但运算规则基于异或运算。异或运算满足交换律、结合律,且a⊕a=0,a⊕0=a。
算法设计思路:同样是通过初等行变换将异或线性方程组的系数矩阵化为行最简形矩阵。在进行行变换时,使用异或运算来消除某一列的非零元素。最后根据化简后的矩阵求解未知数,由于异或运算的特殊性,求解过程相对简单直接,可直接根据矩阵中的1来确定未知数的值。
first: 从第一列开始,遍历该列中所有尚未处理的行,找到第一个该列元素为 1 的行号。这是因为在异或运算中,1 可以作为有效的 “主元” 来进行后续的消元操作,而异或运算的特点也决定了我们需要寻找值为 1 的元素来开启消元过程。
second: 将找到的这一行交换到最上面一行。这样做的目的是把当前列中值为 1 的行放到一个便于对下面行进行消元操作的位置,就如同普通高斯消元中交换主元所在行的作用一样。
third: 对于下面的所有行,如果某行在该列的元素为 1,就将这行与最上面一行进行异或操作。由于异或运算的特性(相同为 0,不同为 1),当这两行进行异或时,该列的元素就会变为 0,同时其他列的元素也会根据异或规则相应改变,从而达到消去该列非零元素的目的。
fourth: 完成对当前列的消元后,看下一列,回到 first。不断重复上述的 first 到 third 步骤,对每一列进行处理,直到所有列都处理完毕。通过这样的操作,原异或线性方程组的系数矩阵会逐渐被化为一个上三角形式(类似倒置梯形),但这里是基于异或运算的特殊形式。
消去完成后,得到一个上三角形式的方程组。此时,从最后一行开始,因为最后一行只有一个未知数(其系数为 1),可以直接根据该行等式右边的值确定该未知数的值。然后将这个已求出的未知数的值代入上一行方程,由于上一行方程中除了已求解的未知数外,其他未知数的系数在消元过程中也有相应的形式,再结合异或运算的规则,就可以求解出上一行的未知数。以此类推,依次从下向上求解每个未知数,最终得到整个异或线性方程组的解。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 210;
int n;
int a[N][N];
void print(){
for(int i=0;i<n;i++){
for(int j=0;j<=n;j++)cout<<a[i][j]<<' ';
cout<<endl;
}
}
int g(){
int r,c;
for(c=0,r=0;c<n;c++){
int t=n;
for(int i=r;i<n;i++){
if(a[i][c]){
t=i;
break;
}
}
if(t>=n)continue;
if(t!=r)
for(int i=c;i<=n;i++)swap(a[r][i],a[t][i]);
for(int i=r+1;i<n;i++){
if(a[i][c]){
for(int j=c;j<=n;j++){
int w=a[i][j]^a[r][j];
a[i][j]=w;//为什么把w赋值给a[i][j]就会超时
}
}
}
r++;
}
if(r<n){//不止有一组解
for(int i=r;i<n;i++)if(a[i][n])return 2;//无解
return 1;//有解
}
for(int i=n-2;i>=0;i--){
for(int j=n-1;j>i;j--)
if(a[i][j])
a[i][n]=a[i][n]^a[j][n];
}
return 0;//唯一解
}
void read(){
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<=n;j++)
scanf("%d",&a[i][j]);
}
int main(){
read();
int t=g();
if(t==2){
cout<<"No solution";
}else if(t==1){
cout<<"Multiple sets of solutions";
}else for(int i=0;i<n;i++)cout<<a[i][n]<<endl;
}
容斥原理
容斥原理用于计算多个集合的并集元素个数,公式为 ∣A1∪A2∪⋯∪An∣=∑i=1n∣Ai∣−∑1≤i<j≤n∣Ai∩Aj∣+∑1≤i<j<k≤n∣Ai∩Aj∩Ak∣−⋯+(−1)n−1∣A1∩A2∩⋯∩An∣
举一个例题:
给定一个整数 nn 和 mm 个不同的质数 p1,p2,…,pm。
请你求出1∼n 中能被 p1,p2,…,pm 中的至少一个数整除的整数有多少个。
1~n中能被pi整除的数的个数记作numi
ans=num1+num2.....+numm -(num(12)+num(13).....+num(1m)....num (m-1m) )+.....
简单的看1~n中可以被2整除的数 n/2个,能被2,3同时整除的数的个数n/6.
这样看是不是就很简单了
m*2^m:枚举1~m,表示几个数,然后再去1~m中选择这些数的组合
代码;
#include <bits/stdc++.h>
using namespace std;
const long long N=20;
long long a[N];
long long n,m;
long long p;
long long res=0;
void dfs(long long len,long long cur,long long mul,long long limit){
if(mul>n)return;
if(len==limit){
res+=p*(n/mul);
return;
}
if(cur>m)return;
dfs(len+1,cur+1,mul*a[cur],limit);
dfs(len,cur+1,mul,limit);
}
signed main(){
scanf("%lld%lld",&n,&m);
p=-1;
for(long long i=1;i<=m;i++)scanf("%lld",&a[i]);
for(long long i=1;i<=m;i++){
p=(-p);
dfs(0,1,1,i);
}
cout<<res;
}
高斯消元
高斯消元解线性方程组
原理:通过一系列的初等行变换将线性方程组的增广矩阵化为行阶梯形矩阵或行最简形矩阵,从而求解方程组。初等行变换包括交换两行、某一行乘以非零常数、某一行加上另一行的倍数。
简述一下高斯消元求解线性方程组的思路:
第一步:找到每一列的绝对值最大的数的行号
在当前处理的列中,遍历该列中所有尚未处理的行,找出绝对值最大的那个数所在的行号。这一步的目的是为了在进行消元操作时,选择一个相对较大的主元(即当前列的首非零元素),这样可以减少计算过程中的误差积累,提高计算的稳定性。
第二步:将这行交换到最上面一行
将找到的绝对值最大的那一行与当前处理的最上面一行进行交换。通过交换行的操作,将主元放到一个更便于进行后续计算的位置,即当前处理部分的第一行。
第三步:把第一行的最前面的非 0 的数变为 1(整体除以这个数)
用第一行的每个元素除以主元(即最前面的非零数),使得主元变为 1。这样做是为了后续能够方便地对其他行进行消元操作,将其他行中对应列的元素消为 0。
第四步:将下面的所有行中该列非 0 的行全部消去成为 0
对于当前列下面的每一行,如果该行在该列的元素不为 0,就将该行的所有元素减去第一行对应元素乘以一个适当的倍数,使得该行在该列的元素变为 0。这个倍数就是该行在该列的元素除以第一行主元的值。通过这一步操作,实现了对当前列的消元,使得该列除了主元所在的行之外,其他行的元素都变为 0。
第五步:看下一列,回到第一步
处理完当前列后,将注意力转移到下一列,重复上述第一步到第四步的操作,直到所有列都处理完毕。经过这样的反复操作,原线性方程组的增广矩阵就会被化为一个上三角矩阵(倒置梯形),此时方程组的形式变得更容易求解。
回代求解
在得到上三角矩阵后,从最后一行开始,依次求解每个未知数。由于最后一行只有一个未知数,很容易直接求出其值。然后将求出的未知数的值代入上一行方程,求解上一行的未知数,以此类推,从下往上逐步求出所有未知数的值。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 110;
const double eps = 1e-6;
int n;
double a[N][N];
int gauss()
{
int c, r;
for (c = 0, r = 0; c < n; c ++ )
{
int t = r;
for (int i = r; i < n; i ++ )
if (fabs(a[i][c]) > fabs(a[t][c]))
t = i;
if (fabs(a[t][c]) < eps) continue;
for (int i = c; i < n + 1; i ++ ) swap(a[t][i], a[r][i]);
for (int i = n; i >= c; i -- ) a[r][i] /= a[r][c];
for (int i = r + 1; i < n; i ++ )
if (fabs(a[i][c]) > eps)
for (int j = n; j >= c; j -- )
a[i][j] -= a[r][j] * a[i][c];
r ++ ;
}
if (r < n)
{ for (int i = r; i < n; i ++ )//
if (fabs(a[i][n]) > eps)
return 2;
return 1;
}
for (int i = n - 1; i >= 0; i -- )
for (int j = i + 1; j < n; j ++ )
a[i][n] -= a[j][n] * a[i][j];
return 0;
}
int main()
{
cin >> n;
for (int i = 0; i < n; i ++ )
for (int j = 0; j < n + 1; j ++ )
cin >> a[i][j];
int t = gauss();
if (t == 0)
{
for (int i = 0; i < n; i ++ ) printf("%.2lf\n", a[i][n]);
}
else puts("No Solution");
return 0;
}
高斯消元解异或线性方程组
原理:与普通高斯消元类似,但运算规则基于异或运算。异或运算满足交换律、结合律,且a⊕a=0,a⊕0=a。
算法设计思路:同样是通过初等行变换将异或线性方程组的系数矩阵化为行最简形矩阵。在进行行变换时,使用异或运算来消除某一列的非零元素。最后根据化简后的矩阵求解未知数,由于异或运算的特殊性,求解过程相对简单直接,可直接根据矩阵中的1来确定未知数的值。
first: 从第一列开始,遍历该列中所有尚未处理的行,找到第一个该列元素为 1 的行号。这是因为在异或运算中,1 可以作为有效的 “主元” 来进行后续的消元操作,而异或运算的特点也决定了我们需要寻找值为 1 的元素来开启消元过程。
second: 将找到的这一行交换到最上面一行。这样做的目的是把当前列中值为 1 的行放到一个便于对下面行进行消元操作的位置,就如同普通高斯消元中交换主元所在行的作用一样。
third: 对于下面的所有行,如果某行在该列的元素为 1,就将这行与最上面一行进行异或操作。由于异或运算的特性(相同为 0,不同为 1),当这两行进行异或时,该列的元素就会变为 0,同时其他列的元素也会根据异或规则相应改变,从而达到消去该列非零元素的目的。
fourth: 完成对当前列的消元后,看下一列,回到 first。不断重复上述的 first 到 third 步骤,对每一列进行处理,直到所有列都处理完毕。通过这样的操作,原异或线性方程组的系数矩阵会逐渐被化为一个上三角形式(类似倒置梯形),但这里是基于异或运算的特殊形式。
消去完成后,得到一个上三角形式的方程组。此时,从最后一行开始,因为最后一行只有一个未知数(其系数为 1),可以直接根据该行等式右边的值确定该未知数的值。然后将这个已求出的未知数的值代入上一行方程,由于上一行方程中除了已求解的未知数外,其他未知数的系数在消元过程中也有相应的形式,再结合异或运算的规则,就可以求解出上一行的未知数。以此类推,依次从下向上求解每个未知数,最终得到整个异或线性方程组的解。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 210;
int n;
int a[N][N];
void print(){
for(int i=0;i<n;i++){
for(int j=0;j<=n;j++)cout<<a[i][j]<<' ';
cout<<endl;
}
}
int g(){
int r,c;
for(c=0,r=0;c<n;c++){
int t=n;
for(int i=r;i<n;i++){
if(a[i][c]){
t=i;
break;
}
}
if(t>=n)continue;
if(t!=r)
for(int i=c;i<=n;i++)swap(a[r][i],a[t][i]);
for(int i=r+1;i<n;i++){
if(a[i][c]){
for(int j=c;j<=n;j++){
int w=a[i][j]^a[r][j];
a[i][j]=w;//为什么把w赋值给a[i][j]就会超时
}
}
}
r++;
}
if(r<n){//不止有一组解
for(int i=r;i<n;i++)if(a[i][n])return 2;//无解
return 1;//有解
}
for(int i=n-2;i>=0;i--){
for(int j=n-1;j>i;j--)
if(a[i][j])
a[i][n]=a[i][n]^a[j][n];
}
return 0;//唯一解
}
void read(){
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<=n;j++)
scanf("%d",&a[i][j]);
}
int main(){
read();
int t=g();
if(t==2){
cout<<"No solution";
}else if(t==1){
cout<<"Multiple sets of solutions";
}else for(int i=0;i<n;i++)cout<<a[i][n]<<endl;
}
相关文章:
数据结构与算法-数学-容斥原理,高斯消元解线性方程组
容斥原理 容斥原理用于计算多个集合的并集元素个数,公式为 ∣A1∪A2∪⋯∪An∣∑i1n∣Ai∣−∑1≤i<j≤n∣Ai∩Aj∣∑1≤i<j<k≤n∣Ai∩Aj∩Ak∣−⋯(−1)n−1∣A1∩A2∩⋯∩An∣ 举一个例题: 给定一个整数 nn 和 mm 个不同的质数 p1,p2,…,p…...
告别运动控制不同步:某车企用异构PLC实现99.98%焊接合格率
在长三角某新能源汽车电池工厂,工程师们正面临棘手的生产难题:随着产线速度提升到每分钟12个电芯,原有PLC系统开始频繁出现运动控制不同步现象。这直接导致极片焊接合格率从99.2%骤降至94.7%,每条产线日均损失超23万元。这个场景折…...
BetaFlight参数配置解读
BetaFlight参数配置解读 📌相关篇《Betaflight固件编译和烧录说明》🥕各型号已编译好的配置文件资源(.config):https://github.com/betaflight/unified-targets/tree/master/configs/default🌿各型号配置头…...
PowerBI累计分析
累计分析 累计分析主要有三种:年初至今(YTD)、季初至今(QTD)、月初至今(MTD)。DAX中计算累计的函数有两类:一类是datesytd、datesqtd、datesmtd,该类返回一个单列日期表…...
最新 OpenHarmony 系统一二级目录整理
我们在学习 OpenHarmony 的时候,如果对系统的目录结构了解,那么无疑会提升自己对 OpenHarmony 更深层次的认识。 于是就有了今天的整理。 首先在此之前,我们要获取源码 获取源码的方式 OpenHarmony 主干代码获取 方式一(推荐&am…...
多模态大语言模型arxiv论文略读(七)
MLLM-DataEngine: An Iterative Refinement Approach for MLLM ➡️ 论文标题:MLLM-DataEngine: An Iterative Refinement Approach for MLLM ➡️ 论文作者:Zhiyuan Zhao, Linke Ouyang, Bin Wang, Siyuan Huang, Pan Zhang, Xiaoyi Dong, Jiaqi Wang,…...
STM32单片机入门学习——第27节: [9-3] USART串口发送串口发送+接收
写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.08 STM32开发板学习——第27节: [9-3] USART串口发送&串口发送接收 前言开发板说…...
【元表 vs 元方法】
元表 vs 元方法 —— 就像“魔法书”和“咒语”的关系 1. 元表(Metatable):魔法书 是什么? 元表是一本**“规则说明书”**,它本身是一个普通的 Lua 表,但可以绑定到其他表上,用来定义这个表应该…...
小型园区网实验
划分VLAN SW3 [sw3]vlan batch 2 3 20 30 [sw3]interface GigabitEthernet 0/0/1 [sw3-GigabitEthernet0/0/1]port link-type access [sw3-GigabitEthernet0/0/1]port default vlan 2 [sw3-GigabitEthernet0/0/1]int g0/0/2 [sw3-GigabitEthernet0/0/2]port link-type acces…...
python 数组append数组
在Python中,可以通过多种方式将一个数组(列表)添加到另一个数组(列表)中。以下是几种常见的方法: 1. 使用 append() 方法 append() 方法将一个数组作为整体添加到另一个数组的末尾。 list1 [1, 2, 3] l…...
从0到1:STM32 RTC定时器配置全流程
1. 什么是RTC? RTC(Real-Time Clock) 是嵌入式系统中用于提供独立计时功能的硬件模块,具有以下特点: 独立于主系统时钟(即使MCU进入低功耗模式仍可运行)提供日历功能(年/月/日/时/…...
(学习总结33)Linux Ext2 文件系统与软硬链接
Linux Ext2 文件系统与软硬链接 理解硬件磁盘、服务器、机柜、机房磁盘物理结构磁盘的逻辑结构实际过程 CHS 与 LBA 地址转换 引入文件系统引入 " 块 " 概念引入 " 分区 " 概念引入 " inode " 概念 ext2 文件系统宏观认识Block Group 块组与其内…...
LeetCode算法题(Go语言实现)_36
题目 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点…...
牛客华为机试--HJ48 从单向链表中删除指定值的节点C++
题目描述 示例1 示例2 该题的核心是每来一组数据,都要从头开始找,找到数据后再插入。而不是直接在尾部插入数据。 上代码 #include <iostream> using namespace std;struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(nu…...
Jmeter 插件【性能测试监控搭建】
1. 安装Plugins Manager 1.1 下载路径: Install :: JMeter-Plugins.org 1.2 放在lib/ext目录下 1.3 重启Jmeter,会在菜单-选项下多一个 Plugins Manager菜单,打开即可对插件进行安装、升级。 2. 客户端(Jmeter端) 2.1 安装plugins manager…...
从攻防演练到AI防护:网络安全服务厂商F5的全方位安全策略
随着AI和云原生技术的蓬勃兴起,多云架构的广泛采用,企业内部IT系统正经历着翻天覆地的变化。在这个转型期,传统的攻击手段和防守策略正面临着巨大的挑战。基于此,用户需要跳出传统的思维模式,采取新的视角,…...
【Introduction to Reinforcement Learning】翻译解读5
4 核心算法 我们将算法分为三类:基于价值的方法、基于策略的方法和混合算法。 4.1 基于价值的方法Value-based 一个重要的突破是Q-learning的引入,它是一种无模型算法,被视为off-policy时间差分(TD)学习。TD学习无疑…...
Jmeter中的bzm-concurrency thread group 与普通线程组的区别
在 JMeter 中,bzm - Concurrency Thread Group(由 BlazeMeter 提供)和标准的 Thread Group 是两种不同的线程组实现,主要区别在于 并发控制模型 和 负载调节方式。以下是详细对比: 1. 核心区别 特性bzm - Concurrency Thread Group标准 Thread Group负载模型基于并发数(C…...
VBA将Word文档内容逐行写入Excel
如果你需要将Word文档的内容导入Excel工作表来进行数据加工,使用下面的代码可以实现: Sub ImportWordToExcel()Dim wordApp As Word.ApplicationDim wordDoc As Word.DocumentDim excelSheet As WorksheetDim filePath As VariantDim i As LongDim para…...
ubuntu22部署 3d-tiles-tools
安装fnm curl -fsSL https://fnm.vercel.app/install | bash安装nodejs 20.17.0LTS版本 https://nodejs.org/zh-cn/download/package-manager安装依赖包 # Download and install nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash# in…...
WebStrom关闭模板字符串自动转换
WebStrom关闭模板字符串自动转换 Editor > General > smart Keys > JavaScript > Automatically replace string literal with template string on typing "${"...
【零基础入门unity游戏开发——动画篇】新动画Animator的使用 —— AnimatorController和Animator的使用
考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、…...
npx vite 可以成功运行,但 npm run dev 仍然报错 Missing script: “dev“
npx vite 可以成功运行,但 npm run dev 仍然报错 Missing script: "dev",说明问题可能出在 npm 的脚本解析 或 项目配置 上。以下是具体解决方案: 1. 检查 package.json 的物理位置 可能原因: 你当前运行的目录下可能有一个 无效的 package.json,而真正的 packa…...
Java 泛型的逆变与协变:深入理解类型安全与灵活性
泛型是 Java 中强大的特性之一,它提供了类型安全的集合操作。然而,泛型的类型关系(如逆变与协变)常常让人感到困惑。 本文将深入探讨 Java 泛型中的逆变与协变,帮助你更好地理解其原理和应用场景。 一、什么是协变与…...
C语言核心知识点整理:结构体对齐、预处理、文件操作与Makefile
目录 结构体的字节对齐预处理指令详解文件操作基础Makefile自动化构建总结 1. 结构体的字节对齐 字节对齐原理 内存对齐:CPU访问内存时,对齐的地址能提高效率。操作系统要求变量按类型大小对齐。对齐规则: 每个成员的起始地址必须是min(成…...
深度学习|注意力机制
一、注意力提示 随意:跟随主观意识,也就是指有意识。 注意力机制:考虑“随意线索”,有一个注意力池化层,将会最终选择考虑到“随意线索”的那个值 二、注意力汇聚 这一部分也就是讲第一大点中“注意力汇聚”那个池化…...
特权FPGA之乘法器
完整代码如下: timescale 1ns / 1ps// Company: // Engineer: // // Create Date: 23:08:36 04/21/08 // Design Name: // Module Name: mux_16bit // Project Name: // Target Device: // Tool versions: // Description: // // Dependencies: …...
安全的企业局域网聊天工具哪个好用?
在当今数字化时代,企业对于局域网聊天工具的需求日益增长,尤其是在对数据安全和定制化服务有较高要求的大中型政企单位中。安全的企业局域网聊天工具哪个好用?虽然市面上有很多即时通讯软件,今天来介绍一下已经拥有十年行业经验的…...
如何应对客户频繁变更需求
如何应对客户频繁变更需求?要点包括: 快速响应、深入沟通、灵活规划、过程记录、风险管控。这些策略既能降低项目失控风险,也能帮助团队在变动环境中保持高效率。其中深入沟通尤为关键,它不仅能够让团队第一时间了解客户意图&…...
R语言进行聚类分析
目录 简述6种系统聚类法 实验实例和数据资料: 上机实验步骤: 进行最短距离聚类: 进行最长距离聚类: 进行中间距离聚类: 进行类平均法聚类: 进行重心法聚类: 进行ward.D聚类:…...
1.6-抓包技术(Burp Suite\Yakit抓包\Web、APP、小程序)
1.6-抓包技术(Burp Suite\Yakit抓包\Web、APP、小程序) 如果要使用抓包软件,基本上第一步都是要安装证书的。原因如下: 客户端(浏览器或应用)会检测到证书不受信任,并弹出 证书错误࿰…...
DAPP实战篇:使用web3.js连接合约
说明 本系列内容目录:专栏:区块链入门到放弃查看目录 如果你还没有创建好项目请先查看:《DApp实战篇:先用前端起个项目》,如果你还不知道web3.js是什么请先查看:《DApp实战篇:前端技术栈一览》。 安装 点此查看web3.js官方文档 打开项目根目录,并唤起终端: 键入w…...
用 Python 构建一个简单的本地视频流媒体服务器
你是否曾经想过在本地网络上轻松地将电脑上的视频分享给手机或平板电脑观看?也许你下载了一部电影,想在客厅的智能电视上播放,却不想费力地拷贝文件。今天,我们将深入分析一个 Python 脚本,它使用 wxPython 创建图形用…...
汇丰xxx
1. Spring Boot 的了解,解决什么问题? 我的理解: Spring Boot 是一个基于 Spring 框架的快速开发脚手架,它简化了 Spring 应用的初始搭建和开发过程。解决的问题: 简化配置: 传统的 Spring 应用需要大量的…...
ruby基础语法
以下是 Ruby 基础语法的简明总结,适合快速入门: 一、变量与常量 局部变量 小写字母或下划线开头,作用域为当前代码块。 name "Alice" _age 20实例变量 以 开头,属于对象实例。 name "Bob"类变量 以 开头…...
智体OS-V3.1版:新增了rt-datalink底层数据链通讯,实现【无网络】本机使用
##智体OS-V3.1版本发布 更新简介 dtns.os智体OS-V3.1版:新增了rt-datalink底层数据链通讯(使用本地局域网的websocket端口通讯),解决了本机【无网络】正常使用的问题。 更新内容 dtns.connector支持使用新的rt-datalink与智体…...
Windows系统安装Git以及Git常用命令介绍
本文主要介绍Windows系统安装Git的方法,以及Git常用命令介绍。 一、下载Git 官网: Git - Downloads (git-scm.com) 根据自己的系统选择 我的是64位的Windows系统,选择对应的安装包,点击后开始下载 等待下载完成 二、安装Git 双…...
HTML 开发者的智能助手:通义灵码在 VSCode 中的应用
引言 在 HTML 开发领域,提高编码效率和质量是每位开发者追求的目标。通义灵码,作为一款由阿里云技术团队开发的智能编码助手,能够通过其强大的 AI 能力,为 HTML 开发者提供包括代码自动补全、智能注释、代码优化等多方面的支持。…...
MySQL随机获取记录之方法(The Method of Randomly Obtaining Records in MySQL)
MySQL中如何随机获取一条记录 随机获取一条记录是在数据库查询中常见的需求,特别在需要展示随机内容或者随机推荐的场景下。在 MySQL 中,有多种方法可以实现随机获取一条记录,每种方法都有其适用的情况和性能特点。在本文中,我们将…...
ngx_core_module 的 create_conf
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_core_module-CSDN博客 定义在 src\core\nginx.c ngx_module_t ngx_core_module {NGX_MODULE_V1,&ngx_core_module_ctx, /* module context */ngx_core_commands, /* module directives */…...
41--华为IPSec主备链路实验:当加密隧道遇上“双保险“
🚦 华为IPSec主备链路实验:当加密隧道遇上"双保险" “如果你的IPSec隧道只有一条路,那就像走钢丝不系安全带——刺激但危险!” —— 本文将用华为设备打造主备双加密通道,结合IP-link智能检测,让…...
Reactive编程框架与工具
文章目录 6.2 后端 Reactive 框架6.2.1 Spring WebFlux核心架构核心组件实际应用高级特性性能优化适用场景与限制 6.2.2 Akka(Actor模型)Actor模型基础基本用法高级特性响应式特性实现性能优化实际应用场景优势与挑战 6.2.3 Vert.x(事件驱动&…...
vi/vim常用快捷键
那么今天我们继续昨天没有介绍完的vi编辑器,来看看常用的一些快捷键,方便我们对文件的编辑. 1.拷贝当前行yy,拷贝当前行向下的5行5yy,并粘贴(输入p) 2.删除当前行dd,删除当前行向下的5行5d 3.在文件中查找某个单词[命令模式/关键字,回车查找,输入n就是查找下一个] ⭐️&…...
初始JavaEE篇 —— SpringBoot 统一功能处理
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏:JavaEE 目录 前言 拦截器 基本使用 拦截器的路径配置 统一数据返回格式 统一异常处理 前言 在实际开发中,某些功能需要强…...
Spring AI Alibaba 文档检索使用
一、文档检索 (Document Retriever)简介 1、核心概念 文档检索(DocumentRetriever)是一种信息检索技术,旨在从大量未结构化或半结构化文档中快速找到与特定查询相关的文档或信息。文档检索通常以在线(online)方式运行。 DocumentRetriever通…...
遍历算法及其应用详解
李升伟 整理 什么是遍历? 遍历是指按照某种规则或顺序,系统地访问数据结构(如树、图等)中的每个节点一次且仅一次的过程。遍历是算法设计中的基本操作,用于访问、检查或修改数据结构中的所有元素。 主要遍历算法 1…...
.NET-EFCore基础知识
.NET EF Core(Entity Framework Core)是微软开发的一款开源的对象关系映射(ORM)框架,用于在.NET 应用程序中与数据库进行交互。以下是一些.NET EF Core 的基础知识: 1. 什么是 EF Core EF Core 是.NET 平…...
R语言基础包可视化(一:axis函数)
R语言基础包可视化(一:axis函数) 背景axis函数(坐标轴函数)各参数的图片示例hadj和padjline和poslty,lwd,lwd.ticksgap.axis总结背景 之前在介绍正态Q-Q图的过程中,画过标准正态分布的随机数、分数数、分布函数、密度函数的图像,相关的文章连接参考此处:R语言正态Q-Q图…...
Axure疑难杂症:垂直菜单折叠与展开(玩转垂直菜单)
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:垂直菜单折叠与展开 主要内容:折叠与展开效果 应用场景:PC后台菜单、动态下拉菜单、商品分类选择等折叠与展开场景 案例展示: 案例视频: 垂直菜单折叠与展开效果 正文内容: 关于垂直菜单的折叠与…...
docker 中跑faster-whisper 教程(1050显卡)
之前我本地机器运行faster-whisper 会报错类似 Could not load library libcudnn_ops_infer.so.8github 上也有类似的情况 :https://github.com/SYSTRAN/faster-whisper/issues/516#issuecomment-2785038635 缺少.so.8 文件,我通过以下方式,…...