From 444330fe2c34e2caf3aae1112a613f11d51f815c Mon Sep 17 00:00:00 2001 From: ninglang Date: Sun, 12 May 2024 10:53:18 +0800 Subject: [PATCH] Site updated: 2024-05-12 10:53:16 --- search.xml | 994 ++++++++++++++++++++++++++--------------------------- 1 file changed, 497 insertions(+), 497 deletions(-) diff --git a/search.xml b/search.xml index ccb190b30..3ecea38f3 100644 --- a/search.xml +++ b/search.xml @@ -97,6 +97,160 @@ href="">ipforbidden模块,刷入,即可 Android + + C&&C++问题总汇(1) + /2021/09/20/C&&C++%E9%97%AE%E9%A2%98%E6%80%BB%E6%B1%87(1)/ + C&&C++问题总汇🙄

+ +

二维数组

+

定义一个二维数组如下:

+
int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} };
+

如果采用一个指针去指向这个数组,可以这么做:

+
int (*p)[4]=a; //4代表了一行有多少个元素
+

其中*p要加括号,因为不加括号就是指针数组,而且但是,这时候的*p(p指针指向的数据不在是一个int的数,而是一个数组,代表的是第i行的所有元素)

+
sizeof(*p);
Output: 16
+

那么访问这个二维数组的指针方法是:

+
a[i][j]=*(*(p+i)+j);
+

当然,下面这种方式也对(和一维数组的指针一样)

+
a[i][j]=p[i][j];
+

Y7D20b8621AY6CYryYagUED1

+
    +
  • 指针数组是这样子的吗?
  • +
+
char *strs[3] ={"chinese","zhonguo" } ;//3代表两个string元素,一个'\0'
+

这里使用的就是指针数组,所以这里是3(数组中元素的个数+1),而上面的那个是4数组个每个元素的下一级个数。

+

二维数组赋值的问题

+
    +
  • 二维数组有两个维度,当然可以按照一个一个去赋值,但那样毕竟太慢,所以有没有更好的赋值方法呢?
  • +
+
int q[4];
for(int i = 0;i<4;i++){

cin>>q[i];
}
int b1[][2]={{q[0],q[1]},{q[3],q[4]}};
+

这是我现在使用的方法,并不是十分的好,希望有所改进

+
    +
  • 友元函数访问私有成员问题
  • +
+
//习题5-18

//报错,a[2][2]是私有成员,不可在operator中访问
#include<iostream>
using namespace std;
class List{
public:
List(int i,int j,int k ,int m){
a[0][0]=i,a[0][1]=j,a[1][0]=k,a[1][1]=m;
}
List(int (*p)[2]){
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
a[i][j]=p[i][j];
}
}
}
List(){
}
friend operator+(List &a,List &b);
friend operator-(List &a,List &b);
void disp(){
cout<<a[0][0]<<" "<<a[0][1]<<endl;
cout<<a[1][0]<<" "<<a[1][1]<<endl;

}
private:
int a[2][2];
};
List operator+(List a,List b){
int c[2][2];
for(int i=0;i<2; i++){
for(int j=0;j<2;j++){
c[i][j]=a.a[i][j]+b.a[i][j];
}
}
return List(c);
}
List operator-(List &a,List &b){
int c[2][2];
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
c[i][j]=a.a[i][j]-b.a[i][j];
}
}
return List(c);
}
int main(){
List a(1,2,3,4);

int q[4];
for(int i = 0;i<4;i++){

cin>>q[i];
}
int b1[][2]={{q[0],q[1]},{q[3],q[4]}};
List b(b1);
List c;
c = a+b;
c.disp();
return 0;
}
+

指针的指针

+
int **p;
//使用方法
int **p; //定义一个指针的指针
int *q; //定义一个int型的指针
int a[3]={1,2,3};
q = a; //q指向a
p =&q; //p指向q
printf("%d",*(*p+1)); //所以*p展现了q,*(*p)为q展现自己储存的地址的内容
return 0;
+
    +
  • 所以说,这个int有用吗?
  • +
+
*((int *)a+n*i+j);  
+
    +
  • 函数的分号问题
  • +
+
T sum(){
.....
}

T sum(){
.....
}; //这个分号是否有必要?
+
    +
  • 答:
  • +
+
//为什么Base和Derived的虚函数地址一样呢 
#include<iostream>
using namespace std;
class Base{
public:
virtual void func(){
};
virtual void func1(){
}
};
class Derived: public Base{
public:
virtual void fun(){
};
virtual void func1(){
};
};

int main(){
Derived d;
if (d.Base::_vptr==d._vptr){
cout<<"yes"<<endl; //显示yes
}
return 0;
}
+
    +
  • 问:Base中的虚函数和Derived的虚函数的地址为什么是一样的呢

  • +
  • 答:

  • +
+

虚表指针指向了一个虚表,虚表中存放着类中的虚函数。如果类中存在虚函数,那么构造对象的时候,就会生一个虚表指针指向虚表,虚表中存放虚函数。所以,要注意的一-点, +在类的构造函数中不要调用虚函数,这是一一个危险的动作,因为很可能它还未 +初始化完毕。

+
    +
  • 问:动态联编和静态联编,可以访问派生类函数
  • +
  • 答:
  • +
+
#include<iostream>
using namespace std;
class A{
public:
void print(){
cout<<"1,2,3";
}
};
class B:public A{
public:
void print1(){
cout<<"4,5,6";
}
};
int main(){
A *ptr;
B a1;
ptr =&a1;
ptr->print1(); //can't called
return 0;
}
+
    +
  • 问:不能调用派生类函数
  • +
  • 答:
  • +
+
#include<iostream>
using namespace std;
class Base{
public:
void func4(){
cout<<"nihao";
}
};
class Derived:public Base{
public:
void func4(){
cout<<" nihao!";
}
};
int main(){
Base d1, *bp;
Derived d2;
bp=&d2;
bp->func4(); //这里直接调用了Base里面的func4(),这个算重载吗?
}
+
    +
  • 问:这个可以算重载嘛?,结果值为第一个
  • +
  • 答:
  • +
+
#include<iostream>
using namespace std;
class Length{
int meter;
public:
Length(int m){
meter = m;
}
operator double(){
return (1*meter/1000); //这个地方一定要使用1.0,否者强制转化会导致结果出错
}
};
int main(){
Length a(1500);
double m =float(a);
cout<<"m="<<m<<"km"<<endl;
return 0;
}
+

注意:这里Length返回值只能是1.0,不能是1,否者将会不准确。

+]]>
+ + coding + +
+ + 通信原理笔记 + /2023/05/23/Communication%20principle/ + 通信原理理解性笔记

+ +

信道

+
+

将发送端数字脉冲信号转换成模拟信号的过程称为调制(Modulation);将接收端模拟信号还原成数字脉冲信号的过程称为解调(Demodulation)。将调制和解调两种功能结合在一起的设备称为调制解调器(Modem)

+

模拟信号和数字信号之间可以相互转换:模拟信号一般通过PCM脉码调制(Pulse +Code +Modulation)方法量化为数字信号,即让模拟信号的不同幅度分别对应不同的二进制值,例如采用8位编码可将模拟信号量化为2^8=256个量级,实用中常采取24位或30位编码;数字信号一般通过对载波进行移相(Phase +Shift)的方法转换为模拟信号。

+

数字信道占用信道频带较宽。一路模拟电话的频带为4kHz带宽,一路数字电话约占64kHz,这是模拟通信目前仍有生命力的主要原因。

+
+

数字信道与模拟信道_模拟信道和数字信道_偷轮子的博客-CSDN博客

+

波形成型

+
+

从上图可以看出,相关时延大于符号持续时间,因此,当两个信号在接收侧相加时,来自于时延为的符号将会和来自于时延为的符号相加。

+

不同的符号相加,或者说,不同的符号相互干扰,即为符号间干扰(ISI)

+

一般将多径信号最大时延的倒数定义为多径信道的相关带宽。

+
+

频率选择性失真ISI一体两面,其中,频率选择性失真发生在频域,对应的时域结果ISI

+
+
+

衰落(2)-- +时延扩展,相关带宽,ISI - 知乎

+
+

脉冲整形

+

一、矩形脉冲

+

实际上矩形脉冲无失真传输是不可能的,因为由傅里叶变换可知,时域矩形脉冲,频域是sinc函数,带宽无限,而信道带宽总是有限的。 +失真严重导致采样判决出错,无法正确恢复数字信号。 +显然矩形脉冲信号不合适,sinc脉冲信号合适

+

二、sinc脉冲频谱有限,一个码元达到最大幅值时其他所有码元幅值刚好为零,码元之间不会相互影响,实现了无码间串扰。

+

基带滤波器

+

一般使用基带滤波器来实现脉冲整形

+

假设发送序列{1 1 1 -1 1 -1 -1 1} +发送序列、输入滤波器的冲激信号、每个冲激信号的冲激响应,和输出信号如图所示 +例子

+
+

基带信号的发送和接收的有效理解和掌握_滚降因子为0的系统可以算是理想低通系统吗_BIT小小书童的博客-CSDN博客

+
+

最初,信号是以矩形脉冲通过带限信道,必然会出现脉冲时延扩展引起S1,频域上看是Sa函数的旁瓣千扰。

+
+

简单概述:脉冲成形 +基带成形 (脉冲成型 基带成型) - HQU小西西 - 博客园

+

有点难,待会看

+

为什么要对基带信号进行脉冲成型【转载】 +- Riden - 博客园

+
+

为什么对基带信号要成形滤波?

+

基带信号带宽无限,需要限制带宽。成形滤波器也叫限带滤波器

+

实际中通信传输的信号大都是带通信号,也就是中心频带远大于频带宽度的信号。而这些带通信号的频谱结构只取决于等效低通信号的频谱结构。这里的等效低通信号就是你这里所指的基带数字信号。而基带数字信号的频率特性又取决于两个因素,一个是基带信号中构成每个脉冲符号的基本信号的频谱,另一个就是脉冲信号之间的相关性。换句话说可以通过设计不同的基本脉冲信号的波形和符号之间的相关性,达到改变基带信号频谱结构的目的,从而改变调制后带通信号的频谱特性。 +理解了这一点,你就可以理解为什么要对基带信号进行不同的滤波生成符号脉冲了。

+
+

基带传输与成形滤波_基带成型滤波器_长弓的坚持的博客-CSDN博客

+
+

为什么要->这里有直接结论:

+

(个人简单理解,脉冲成型(形),就是将脉冲变成其他的传输波形,理由就是压缩频谱来降低ISI) +!

+
+

简单概述:脉冲成形 +基带成形 (脉冲成型 基带成型) - 1024搜-程序员专属的搜索引擎

+
+

数字信号想要在信道中传输,必须在发射机的基带部分进行脉冲成形,将数字信号转换成脉冲信号,脉冲信号到达接收机后,在基带部分进行采样判决,将数字信号恢复出来。

+

如下图所示,脉冲成形需要用到脉冲波形,实现脉冲成形要用到基带滤波器,评估基带滤波器要用到眼图。【深入浅出通信原理-学习笔记】基带信号的发送和接收_脉冲怎么发送和接受_DUANDAUNNN的博客-CSDN博客

+
+]]>
+ + 电路 + +
C && C++ (1) /2021/09/03/C_C++/ @@ -226,80 +380,6 @@ transfer,but it seem that we have really passed a,b into the function "swap"

#include<iostream>
using namespace std;
int a[] = {1,3,5,6,7,3};
int &index(int);
int main(){
index(1)=100; //in fact ,because the return of funciton is not a number ,but a[i]
cout<<"a[1]="<<a[1]<<endl;
return 0;

}
int &index(int i){
return a[i];
}
-]]> - - coding - -
- - C&&C++问题总汇(1) - /2021/09/20/C&&C++%E9%97%AE%E9%A2%98%E6%80%BB%E6%B1%87(1)/ - C&&C++问题总汇🙄

- -

二维数组

-

定义一个二维数组如下:

-
int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} };
-

如果采用一个指针去指向这个数组,可以这么做:

-
int (*p)[4]=a; //4代表了一行有多少个元素
-

其中*p要加括号,因为不加括号就是指针数组,而且但是,这时候的*p(p指针指向的数据不在是一个int的数,而是一个数组,代表的是第i行的所有元素)

-
sizeof(*p);
Output: 16
-

那么访问这个二维数组的指针方法是:

-
a[i][j]=*(*(p+i)+j);
-

当然,下面这种方式也对(和一维数组的指针一样)

-
a[i][j]=p[i][j];
-

Y7D20b8621AY6CYryYagUED1

-
    -
  • 指针数组是这样子的吗?
  • -
-
char *strs[3] ={"chinese","zhonguo" } ;//3代表两个string元素,一个'\0'
-

这里使用的就是指针数组,所以这里是3(数组中元素的个数+1),而上面的那个是4数组个每个元素的下一级个数。

-

二维数组赋值的问题

-
    -
  • 二维数组有两个维度,当然可以按照一个一个去赋值,但那样毕竟太慢,所以有没有更好的赋值方法呢?
  • -
-
int q[4];
for(int i = 0;i<4;i++){

cin>>q[i];
}
int b1[][2]={{q[0],q[1]},{q[3],q[4]}};
-

这是我现在使用的方法,并不是十分的好,希望有所改进

-
    -
  • 友元函数访问私有成员问题
  • -
-
//习题5-18

//报错,a[2][2]是私有成员,不可在operator中访问
#include<iostream>
using namespace std;
class List{
public:
List(int i,int j,int k ,int m){
a[0][0]=i,a[0][1]=j,a[1][0]=k,a[1][1]=m;
}
List(int (*p)[2]){
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
a[i][j]=p[i][j];
}
}
}
List(){
}
friend operator+(List &a,List &b);
friend operator-(List &a,List &b);
void disp(){
cout<<a[0][0]<<" "<<a[0][1]<<endl;
cout<<a[1][0]<<" "<<a[1][1]<<endl;

}
private:
int a[2][2];
};
List operator+(List a,List b){
int c[2][2];
for(int i=0;i<2; i++){
for(int j=0;j<2;j++){
c[i][j]=a.a[i][j]+b.a[i][j];
}
}
return List(c);
}
List operator-(List &a,List &b){
int c[2][2];
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
c[i][j]=a.a[i][j]-b.a[i][j];
}
}
return List(c);
}
int main(){
List a(1,2,3,4);

int q[4];
for(int i = 0;i<4;i++){

cin>>q[i];
}
int b1[][2]={{q[0],q[1]},{q[3],q[4]}};
List b(b1);
List c;
c = a+b;
c.disp();
return 0;
}
-

指针的指针

-
int **p;
//使用方法
int **p; //定义一个指针的指针
int *q; //定义一个int型的指针
int a[3]={1,2,3};
q = a; //q指向a
p =&q; //p指向q
printf("%d",*(*p+1)); //所以*p展现了q,*(*p)为q展现自己储存的地址的内容
return 0;
-
    -
  • 所以说,这个int有用吗?
  • -
-
*((int *)a+n*i+j);  
-
    -
  • 函数的分号问题
  • -
-
T sum(){
.....
}

T sum(){
.....
}; //这个分号是否有必要?
-
    -
  • 答:
  • -
-
//为什么Base和Derived的虚函数地址一样呢 
#include<iostream>
using namespace std;
class Base{
public:
virtual void func(){
};
virtual void func1(){
}
};
class Derived: public Base{
public:
virtual void fun(){
};
virtual void func1(){
};
};

int main(){
Derived d;
if (d.Base::_vptr==d._vptr){
cout<<"yes"<<endl; //显示yes
}
return 0;
}
-
    -
  • 问:Base中的虚函数和Derived的虚函数的地址为什么是一样的呢

  • -
  • 答:

  • -
-

虚表指针指向了一个虚表,虚表中存放着类中的虚函数。如果类中存在虚函数,那么构造对象的时候,就会生一个虚表指针指向虚表,虚表中存放虚函数。所以,要注意的一-点, -在类的构造函数中不要调用虚函数,这是一一个危险的动作,因为很可能它还未 -初始化完毕。

-
    -
  • 问:动态联编和静态联编,可以访问派生类函数
  • -
  • 答:
  • -
-
#include<iostream>
using namespace std;
class A{
public:
void print(){
cout<<"1,2,3";
}
};
class B:public A{
public:
void print1(){
cout<<"4,5,6";
}
};
int main(){
A *ptr;
B a1;
ptr =&a1;
ptr->print1(); //can't called
return 0;
}
-
    -
  • 问:不能调用派生类函数
  • -
  • 答:
  • -
-
#include<iostream>
using namespace std;
class Base{
public:
void func4(){
cout<<"nihao";
}
};
class Derived:public Base{
public:
void func4(){
cout<<" nihao!";
}
};
int main(){
Base d1, *bp;
Derived d2;
bp=&d2;
bp->func4(); //这里直接调用了Base里面的func4(),这个算重载吗?
}
-
    -
  • 问:这个可以算重载嘛?,结果值为第一个
  • -
  • 答:
  • -
-
#include<iostream>
using namespace std;
class Length{
int meter;
public:
Length(int m){
meter = m;
}
operator double(){
return (1*meter/1000); //这个地方一定要使用1.0,否者强制转化会导致结果出错
}
};
int main(){
Length a(1500);
double m =float(a);
cout<<"m="<<m<<"km"<<endl;
return 0;
}
-

注意:这里Length返回值只能是1.0,不能是1,否者将会不准确。

]]>
coding @@ -421,83 +501,58 @@ max(dp[i-1][j],dp[i-1][j-weight[i]]+value[i])
- 通信原理笔记 - /2023/05/23/Communication%20principle/ - 通信原理理解性笔记

+ 数字电子基础 + /2022/03/14/Digital%20Electronics%20Fundamentals/ + 一些数电不太能理解的地方

-

信道

-
-

将发送端数字脉冲信号转换成模拟信号的过程称为调制(Modulation);将接收端模拟信号还原成数字脉冲信号的过程称为解调(Demodulation)。将调制和解调两种功能结合在一起的设备称为调制解调器(Modem)

-

模拟信号和数字信号之间可以相互转换:模拟信号一般通过PCM脉码调制(Pulse -Code -Modulation)方法量化为数字信号,即让模拟信号的不同幅度分别对应不同的二进制值,例如采用8位编码可将模拟信号量化为2^8=256个量级,实用中常采取24位或30位编码;数字信号一般通过对载波进行移相(Phase -Shift)的方法转换为模拟信号。

-

数字信道占用信道频带较宽。一路模拟电话的频带为4kHz带宽,一路数字电话约占64kHz,这是模拟通信目前仍有生命力的主要原因。

-
-

数字信道与模拟信道_模拟信道和数字信道_偷轮子的博客-CSDN博客

-

波形成型

-
-

从上图可以看出,相关时延大于符号持续时间,因此,当两个信号在接收侧相加时,来自于时延为的符号将会和来自于时延为的符号相加。

-

不同的符号相加,或者说,不同的符号相互干扰,即为符号间干扰(ISI)

-

一般将多径信号最大时延的倒数定义为多径信道的相关带宽。

-
-

频率选择性失真ISI一体两面,其中,频率选择性失真发生在频域,对应的时域结果ISI

-
-
-

衰落(2)-- -时延扩展,相关带宽,ISI - 知乎

-
-

脉冲整形

-

一、矩形脉冲

-

实际上矩形脉冲无失真传输是不可能的,因为由傅里叶变换可知,时域矩形脉冲,频域是sinc函数,带宽无限,而信道带宽总是有限的。 -失真严重导致采样判决出错,无法正确恢复数字信号。 -显然矩形脉冲信号不合适,sinc脉冲信号合适

-

二、sinc脉冲频谱有限,一个码元达到最大幅值时其他所有码元幅值刚好为零,码元之间不会相互影响,实现了无码间串扰。

-

基带滤波器

-

一般使用基带滤波器来实现脉冲整形

-

假设发送序列{1 1 1 -1 1 -1 -1 1} -发送序列、输入滤波器的冲激信号、每个冲激信号的冲激响应,和输出信号如图所示 -例子

-
-

基带信号的发送和接收的有效理解和掌握_滚降因子为0的系统可以算是理想低通系统吗_BIT小小书童的博客-CSDN博客

-
-

最初,信号是以矩形脉冲通过带限信道,必然会出现脉冲时延扩展引起S1,频域上看是Sa函数的旁瓣千扰。

-
-

简单概述:脉冲成形 -基带成形 (脉冲成型 基带成型) - HQU小西西 - 博客园

-

有点难,待会看

-

为什么要对基带信号进行脉冲成型【转载】 -- Riden - 博客园

-
-

为什么对基带信号要成形滤波?

-

基带信号带宽无限,需要限制带宽。成形滤波器也叫限带滤波器

-

实际中通信传输的信号大都是带通信号,也就是中心频带远大于频带宽度的信号。而这些带通信号的频谱结构只取决于等效低通信号的频谱结构。这里的等效低通信号就是你这里所指的基带数字信号。而基带数字信号的频率特性又取决于两个因素,一个是基带信号中构成每个脉冲符号的基本信号的频谱,另一个就是脉冲信号之间的相关性。换句话说可以通过设计不同的基本脉冲信号的波形和符号之间的相关性,达到改变基带信号频谱结构的目的,从而改变调制后带通信号的频谱特性。 -理解了这一点,你就可以理解为什么要对基带信号进行不同的滤波生成符号脉冲了。

-
-

基带传输与成形滤波_基带成型滤波器_长弓的坚持的博客-CSDN博客

-
-

为什么要->这里有直接结论:

-

(个人简单理解,脉冲成型(形),就是将脉冲变成其他的传输波形,理由就是压缩频谱来降低ISI) -!

-
-

简单概述:脉冲成形 -基带成形 (脉冲成型 基带成型) - 1024搜-程序员专属的搜索引擎

-
-

数字信号想要在信道中传输,必须在发射机的基带部分进行脉冲成形,将数字信号转换成脉冲信号,脉冲信号到达接收机后,在基带部分进行采样判决,将数字信号恢复出来。

-

如下图所示,脉冲成形需要用到脉冲波形,实现脉冲成形要用到基带滤波器,评估基带滤波器要用到眼图。【深入浅出通信原理-学习笔记】基带信号的发送和接收_脉冲怎么发送和接受_DUANDAUNNN的博客-CSDN博客

-
+

反相器

+

COMS电路

+
    +
  • CMOS的输出特性,CMOS受负载的输出高低电平变化
  • +
  • \(V_{OH}\quad V_{OL}...\)的取法(噪声容限)
  • +
  • CMOS门不允许悬空,和地面的电阻相接不影响
  • +
  • CMOS电路的输入端不允许悬空,因为悬空会使电位不定,破坏正常的逻辑关系。另外,悬空时输入阻抗高,易受外界噪声干扰,使电路产生误动作,而且也极易造成栅极感应静电而击穿。
  • +
+

TTL电路

+
    +
  • 扇出系数的概念,计算

  • +
  • 漏电流

  • +
  • \(T_{cd}和T_{pd}\),为什么\(T_{cd}=0\)的时候,将无法信任电平

    +

    因为\(T_{cd}=0\),表面一旦高电平降低,那么电路进入无效区,这时候就需要重新,\(T_{cd}可以变大点\)

  • +
  • 交流噪声容限(是指噪声信号是高频吗?)

  • +
  • TTL电源不允许大幅调整,不允许超过10%

  • +
  • TTL电路输入端通过电阻接地,电阻值R的大小直接影响电路所处的状态。

  • +
+
+ + +
+
    +
  • OC门上拉电阻的选择,不能太大,是担心输出高电平的时候不能输出高电平,不能太小,是因为担心输出低电平的时候电流太大损坏管子(最坏的情况,只有一个管子接地),高电平的时候内阻近视为上拉电阻,而低电平的时候内阻相当于管子的阻抗,这时要求内阻较小
  • +
+
+ + +
+
    +
  • OC门和OD的优势:电平偏移,也就是说,输出的电平可以通过上拉电阻来调整
  • +
]]>
- 电路 + 电子
@@ -586,61 +641,6 @@ means:“我们还与以前依赖于手动定义的样式和内容分解或共 code - - 数字电子基础 - /2022/03/14/Digital%20Electronics%20Fundamentals/ - 一些数电不太能理解的地方

- -

反相器

-

COMS电路

-
    -
  • CMOS的输出特性,CMOS受负载的输出高低电平变化
  • -
  • \(V_{OH}\quad V_{OL}...\)的取法(噪声容限)
  • -
  • CMOS门不允许悬空,和地面的电阻相接不影响
  • -
  • CMOS电路的输入端不允许悬空,因为悬空会使电位不定,破坏正常的逻辑关系。另外,悬空时输入阻抗高,易受外界噪声干扰,使电路产生误动作,而且也极易造成栅极感应静电而击穿。
  • -
-

TTL电路

-
    -
  • 扇出系数的概念,计算

  • -
  • 漏电流

  • -
  • \(T_{cd}和T_{pd}\),为什么\(T_{cd}=0\)的时候,将无法信任电平

    -

    因为\(T_{cd}=0\),表面一旦高电平降低,那么电路进入无效区,这时候就需要重新,\(T_{cd}可以变大点\)

  • -
  • 交流噪声容限(是指噪声信号是高频吗?)

  • -
  • TTL电源不允许大幅调整,不允许超过10%

  • -
  • TTL电路输入端通过电阻接地,电阻值R的大小直接影响电路所处的状态。

  • -
-
- - -
-
    -
  • OC门上拉电阻的选择,不能太大,是担心输出高电平的时候不能输出高电平,不能太小,是因为担心输出低电平的时候电流太大损坏管子(最坏的情况,只有一个管子接地),高电平的时候内阻近视为上拉电阻,而低电平的时候内阻相当于管子的阻抗,这时要求内阻较小
  • -
-
- - -
-
    -
  • OC门和OD的优势:电平偏移,也就是说,输出的电平可以通过上拉电阻来调整
  • -
-]]>
- - 电子 - -
GANs /2023/06/03/GANs/ @@ -937,6 +937,38 @@ figure,see whether it is overfit or not ? Neural Network + + 保研注意事项 + /2023/06/13/Postgraduate/ + 保研注意事项

+ +
    +
  • 浙江大学(6月15日结束
  • +
+

浙江大学信息与电子工程学院2023年暑期学术夏令营 +- 浙江大学 - 保研论坛-保研经验分享 - Powered by Discuz!

+

浙江大学信息与电子工程学院2023年全国优秀大学生暑期学术夏令营活动通知

+

+
    +
  • 南京大学(6月15日结束
  • +
+

2023年南京大学电子科学与工程学院优秀大学生夏令营 +- 南京大学 - 保研论坛-保研经验分享 - Powered by Discuz!

+

2023年南京大学电子科学与工程学院优秀大学生夏令营报名通知

+

2023年南京大学电子科学与工程学院夏令营报名

+

+]]>
+ + 生活 + +
Pointer /2021/09/03/Point/ @@ -999,53 +1031,21 @@ pointer to int ,This is an address

fun = &function;
fun = function;

There are also two ways to call pointer to function

x=(*fun)();
x=fun();
-

Example:

-
#include<stdio.h>
#include<iostream>
using namespace std;
int add(int x,int y){
return x+y;
}

int sub(int x,int y){
return x-y;
}

int (*fun)(int x,int y);
int main(){
//first kind
fun = add;
cout<<"(*fun)(1,2)="<<(*fun)(1,2)<<endl;
//second kind
fun = &sub;
cout<<"(*fun)(5,3)="<<(*fun)(5,3)<<" "<<fun(5,3);


return 0;

}
-

New and Delete

-

operation new can get a space from heap and return the -pointer to point the first address of the memory,and delete -can free the space

-
int *p;
p = new int ; //new dynamically allocate an integer memory space,assign the first address to pointer variable


delete p; //free the space allocated by new
-

new assign space for multidimensional array:

-
int i = 3;
int *pi = new int[3][4];
-

new assign space with initial value:

-
#include<iostream>
using namespace std;
int main(){
int *p;
p = new int(99); //initial value
cout<<*p;
delete p;
return 0;
}
-

Malloc && Free get space

-]]> - - coding - -
- - 保研注意事项 - /2023/06/13/Postgraduate/ - 保研注意事项

- -
    -
  • 浙江大学(6月15日结束
  • -
-

浙江大学信息与电子工程学院2023年暑期学术夏令营 -- 浙江大学 - 保研论坛-保研经验分享 - Powered by Discuz!

-

浙江大学信息与电子工程学院2023年全国优秀大学生暑期学术夏令营活动通知

-

-
    -
  • 南京大学(6月15日结束
  • -
-

2023年南京大学电子科学与工程学院优秀大学生夏令营 -- 南京大学 - 保研论坛-保研经验分享 - Powered by Discuz!

-

2023年南京大学电子科学与工程学院优秀大学生夏令营报名通知

-

2023年南京大学电子科学与工程学院夏令营报名

-

+

Example:

+
#include<stdio.h>
#include<iostream>
using namespace std;
int add(int x,int y){
return x+y;
}

int sub(int x,int y){
return x-y;
}

int (*fun)(int x,int y);
int main(){
//first kind
fun = add;
cout<<"(*fun)(1,2)="<<(*fun)(1,2)<<endl;
//second kind
fun = &sub;
cout<<"(*fun)(5,3)="<<(*fun)(5,3)<<" "<<fun(5,3);


return 0;

}
+

New and Delete

+

operation new can get a space from heap and return the +pointer to point the first address of the memory,and delete +can free the space

+
int *p;
p = new int ; //new dynamically allocate an integer memory space,assign the first address to pointer variable


delete p; //free the space allocated by new
+

new assign space for multidimensional array:

+
int i = 3;
int *pi = new int[3][4];
+

new assign space with initial value:

+
#include<iostream>
using namespace std;
int main(){
int *p;
p = new int(99); //initial value
cout<<*p;
delete p;
return 0;
}
+

Malloc && Free get space

]]>
- 生活 + coding
@@ -1307,6 +1307,16 @@ href="https://pypi.org/project/torch/1.8.0/#modal-close">torch-wheel下载 电子 + + 学业生涯规划指导经验交流贴 + /2023/10/31/Study%20exchange%20meeting/ + 欢迎交流

+ +]]>
+ + 学习 + +
出租车载客模型 /2021/08/15/Taxi%20passenger%20model/ @@ -1548,241 +1558,78 @@ W_{\text {long }}=\frac{2 W_{L}+W_{\text {city }}(T)}{2 L / v_{\text

前言

​ 在刚开始学python的时候就对这一方面非常感兴趣,但是奈何当时实力太水,跟着mooc学了很久,也才刚刚把基础学完,连数据处理都不太会,而且在这次之前又学了一下c,三斤八两,啥都不会,刚开始在中国慕课mooc上跟着嵩天老师学习,发现他好多的例子都已经过时,很多之前能够爬取的网站现在已经无法爬取,当然也不是没有办法,只是我太水了,BeautifulSoup库也一直没有搞懂,因为我对html并不是很了解,于是乎chrome的审查工具用得也不是太好,刚好上次尝试了今日校园自动签到后,在优化那位大佬的程序时,我突然意识到里面很多的语法其实很有逻辑和体系,而他之所以能写出300多行的代码来造福广大学子,在于他强调的:“我模拟的整个今日校园的过程”,而这个过程,就是抓包,于是我在突然想起了点什么,我的fiddle,好像躺在我的电脑中睡了很久😂,后来在这个过程我想起的很多去年CTF教我的一些知识(但是我没学会),还有那个可爱的nmap

-

爬虫

-

有道翻译

-

​ 打开开发者工具后,我们对我们输入的字符“are you -ok”,进行抓包,马上我们可以看到,其他的数据都是以图片的形式,而这里是一个多次出现,但是咋们不清楚的包,于是我们查看一下headers,发现是post方法,

-
- - -
-

观察Response -,发现里面刚好有我们想要的翻译结果,于是我们只要模拟浏览器去post,然后接受相应的json数据格式,即可!

-

-

我们首先还是要去看看这个post到底上传了什么form,然后这个header到底有什么要求,首先我们观察到了这个post的地址,但这里还是有坑,这是我后面的才发现的

-

-

观察webform,把它复制粘贴到代码就可以了

-

-

​ -但是,这里有问题了:返回值有问题,百度一下,原来那个网址有问题,只能是http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule -,_o必须要被去掉 (这里是因为有道翻译的反爬虫机制)

-

-

把url改回来,再使用json的loads函数将数据转化为字典,提取出翻译就可以了,把它改的更人性化一点,例如接受输入可以多次输入,ok,这样咋们就实现了在cmd里翻译啦!

-

-

-

百度图片

-

如图,爬取百度图片结果的所有图片,打开开发者工具,找出图片的实际地址,多观察几张,发现这个图片都在<li>标签下

-

-

-

这时候我们可以选择BeautifulSoup或者re正则表达式,我使用了正则表达式,提取了所有的图片url,然后把这些链接全部get即可

-

-

这样就把一页的图片全部爬取下来啦,至于为什么只有把29张,是因为百度的图片加载使用了一种叫做Ajax技术,这样的话只能采取别的方法去爬取了,我现在还不知道如何突破😂

-

-

B站视频

-

​ -刚好看到B站也有相关的学习视频,方法和上面的第一个第二一样,算是两者的综合吧,需要用到re(或者BeautifulSoup),设置好请求头,我自己做这个的时候,并没有添加很多对用户界面很友好的东西,但是还是去借鉴了一下前辈的经验,弄了个进度条

-

先下载这个压缩包

-

整体来说网速还是不是错的,我家是100兆的光纤,由于我的电脑离路由器比较远,网速只有这个效果,但是这个这个爬虫还是能够把我家的网爬满。

-

-

-

先把压缩包解压,一个放在D盘,一个放在桌面,第二,配置环境变量,再上方的用户变量的PATH中双击然后打开

-

-

-

找到D盘里的刚刚放进去的ffmpeg 打开bin -目录,把那个文件夹地址复制,例如我的是D:\ffmpeg-N-100892-g44e27d937d-win64-lgpl-shared-vulkan\bin粘贴到新增的Path中,然后一路ok,添加完用户变量,就可以使用软件了

-

-

-

软件的使用很简单,它的界面只是一个终端界面,你只要将B站视频网址粘贴,回车即可,默认视频的最高画质(不开会员的情况下)😂

-

-

为什么要把它添加到环境变量呢,因为B站爬取的视频其实是分音频和视频的,而ffmpeg是一个音视频处理软件,我是先将音频(1.mp3)和视频(2.mp4)分别爬取,然后用ffmpeg把它们拼接在一起(自动删除1.mp3和1.mp4),我找了很多教程,实在不会把ffmpeg源代码整合到我的代码中,于是就需要它的存在,并且要把它配置为用户变量,否则

-

抓包

-]]> - - coding - -
- - Windows常用指令和工具 - /2022/01/05/Windows_command/ - 电脑常用的一些操作

- -

创建软链接(用来移动文件)

-

现在我的F盘里面有一个文件夹blog

-

-

然后这时我需要给它在C盘的user的ninglang目录下面创建一个软链接,方便我访问

-

指令如下

-

mklink /j 链接的地址 链接所指的地方

-
mklink /j 
-
mklink /j "C:\Users\ninglang\Blog" "F:\Blog"
-

-

-

关闭Windows更新

-

安装wu10man,点击该处访问其github.

-

-

安装打开wu10man,选择即可

-

右键菜单规定

-

下载ccleaner

-

-

对其相应的进行调整即可

-

C盘清理

-

清理Pagefile

-

-

-

-

这样,你就可以看到c盘的系统文件,其中有两个文件比较大,共占据了20G

-

-

然后打开环境变量的设置

-

-

就可以看到这个pagefile,点击更改。

-

-

通过操作这几个按钮,将其他盘设置为system managed,将C设置为None点击OK,重启电脑

-

-

清理hiberfil

-

hiberfil占用的储存也挺大,我的电脑高达6G,只需要管理员运行cmd,然后运行

-
powercfg.exe /hibernate off
-

即可,这个选项会关闭休眠,C盘文件将会自动删除,具体好坏自行取舍,如需恢复,请输入

-
powercfg.exe /hibernate on
-

磁盘分析软件

-

这里,推荐一个磁盘分析软件,SpaceSniffer,需要管理员运行程序

-

-

选择一个自己需要分析的盘符,即可,随后令其分析即可

-

C盘扩容

-

首先,下载Mini -Partition Wizrd Free

-

如果电脑显示Bitlocker,如下图

-

-

那么,你需要打开windows设置,安全与更新,然后选择设备加密,关闭加密

-

-

关闭加密完成之后, 管理员身份 打开上面的软件,应该可以分区了

-

-

选择有多余空间的盘D,右键,move/resize,然后输入你想要的d盘的大小,一定要大于里面已用空间!!!

-

右键C盘,选择分给的区扩容

-

-

将进度条拉到最大,点击OK,点击左下角apply,如果出现报错,请在三个选项中点击restart

-

-

重启期间可能会出现代码,你无需理会,让它自动跑完即可。

-

Latex语法

-

word中输入公式十分重要,但是部分语法和原生latex不太一致,下面介绍一种很重要的公式 -\[ -f(x,y,z)=\begin{cases}x&=&\cos(t)\\y&=&\sin(t)\\z&=&\tan(t)\end{cases} -\] 这时,你需要在word里面输入下面的代码

-
f(x)={\matrix{x&=&cos(t)\\y&=&sin(t)\\z&=&tan(t)}\close 
-

重装系统

-

这里使用这个超星的资源点击即可跳转

-

FFmpeg加速压缩

-
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i input.mp4 -c:v h264_nvenc -r 18  -y ouput.mp4
-

其中18表示目标帧率

-

gitgnore的编写

-

首先,在目标文件夹里新建一个.gitgnore。然后打开写入

-
- - -
-
#Exclude all
#########
*
!*/
!.gitignore

#写入想要git的后缀
#VHDL && Verilog
!*.vhd
!*.v
!*.bd
!*.edif
#xilinx
!*.xpr
!*.xdc

#Python文件
!*.py
-

windows设置cmd的字体

-

输入win+r,输入regedit。然后复制如下地址进入导航栏

-
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
-

新建字符串值Autorun

-

里面输入chcp 437,即可修改为Consolas

-

可能会导致部分的应用无法正常工作:特别是破解软件“净化时”,这时候需要更改回来,将AutoRun留空就行

-

window设置edge不自动更新

-

打开C:\Program Files (x86)\Microsoft\EdgeUpdate

-

修改MicrosoftEdgeUpdate.exe123MicrosoftEdgeUpdate.exe即可

-

typora破解版教程

-

参考Typora破解版安装教程(仅供学习) - -知乎https://zhuanlan.zhihu.com/p/648915268

-

用app.asar.txt D:中的app.asar,输入注册码即可,安装包网址为(typora破解激活.7z)

-

wls2子系统安装教程

-

打开虚拟机功能(Powershell管理员启动)

-
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
-
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
-

下载wsl内核 WSL 2 Linux -内核

-

最后在ms store中下载ubuntu20.04

-

Wls安装cuda

-

进入CUDA -Toolkit Archive | NVIDIA Developer,选择合适的cuda,选择的版本按照PyTorch的版本来决定

-
- - -
-

以GTX1650,torch版本如下:

-
torch              2.2.1
torchaudio 2.2.1
torchvision 0.17.1
-

选择CUDA -Toolkit 11.8 Downloads | NVIDIA -Developer,选择如图所示的命令即可

-
- - -
-

执行如下命令即可

-
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin

sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb

sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb

sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/

sudo apt-get update

sudo apt-get -y install cuda
-]]>
- - Windows - -
- - 学业生涯规划指导经验交流贴 - /2023/10/31/Study%20exchange%20meeting/ - 欢迎交流

- +

爬虫

+

有道翻译

+

​ 打开开发者工具后,我们对我们输入的字符“are you +ok”,进行抓包,马上我们可以看到,其他的数据都是以图片的形式,而这里是一个多次出现,但是咋们不清楚的包,于是我们查看一下headers,发现是post方法,

+
+ + +
+

观察Response +,发现里面刚好有我们想要的翻译结果,于是我们只要模拟浏览器去post,然后接受相应的json数据格式,即可!

+

+

我们首先还是要去看看这个post到底上传了什么form,然后这个header到底有什么要求,首先我们观察到了这个post的地址,但这里还是有坑,这是我后面的才发现的

+

+

观察webform,把它复制粘贴到代码就可以了

+

+

​ +但是,这里有问题了:返回值有问题,百度一下,原来那个网址有问题,只能是http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule +,_o必须要被去掉 (这里是因为有道翻译的反爬虫机制)

+

+

把url改回来,再使用json的loads函数将数据转化为字典,提取出翻译就可以了,把它改的更人性化一点,例如接受输入可以多次输入,ok,这样咋们就实现了在cmd里翻译啦!

+

+

+

百度图片

+

如图,爬取百度图片结果的所有图片,打开开发者工具,找出图片的实际地址,多观察几张,发现这个图片都在<li>标签下

+

+

+

这时候我们可以选择BeautifulSoup或者re正则表达式,我使用了正则表达式,提取了所有的图片url,然后把这些链接全部get即可

+

+

这样就把一页的图片全部爬取下来啦,至于为什么只有把29张,是因为百度的图片加载使用了一种叫做Ajax技术,这样的话只能采取别的方法去爬取了,我现在还不知道如何突破😂

+

+

B站视频

+

​ +刚好看到B站也有相关的学习视频,方法和上面的第一个第二一样,算是两者的综合吧,需要用到re(或者BeautifulSoup),设置好请求头,我自己做这个的时候,并没有添加很多对用户界面很友好的东西,但是还是去借鉴了一下前辈的经验,弄了个进度条

+

先下载这个压缩包

+

整体来说网速还是不是错的,我家是100兆的光纤,由于我的电脑离路由器比较远,网速只有这个效果,但是这个这个爬虫还是能够把我家的网爬满。

+

+

+

先把压缩包解压,一个放在D盘,一个放在桌面,第二,配置环境变量,再上方的用户变量的PATH中双击然后打开

+

+

+

找到D盘里的刚刚放进去的ffmpeg 打开bin +目录,把那个文件夹地址复制,例如我的是D:\ffmpeg-N-100892-g44e27d937d-win64-lgpl-shared-vulkan\bin粘贴到新增的Path中,然后一路ok,添加完用户变量,就可以使用软件了

+

+

+

软件的使用很简单,它的界面只是一个终端界面,你只要将B站视频网址粘贴,回车即可,默认视频的最高画质(不开会员的情况下)😂

+

+

为什么要把它添加到环境变量呢,因为B站爬取的视频其实是分音频和视频的,而ffmpeg是一个音视频处理软件,我是先将音频(1.mp3)和视频(2.mp4)分别爬取,然后用ffmpeg把它们拼接在一起(自动删除1.mp3和1.mp4),我找了很多教程,实在不会把ffmpeg源代码整合到我的代码中,于是就需要它的存在,并且要把它配置为用户变量,否则

+

抓包

]]>
- 学习 + coding
@@ -2354,6 +2201,159 @@ verbose详细显示,-f file文件属性)

Code
+ + Windows常用指令和工具 + /2022/01/05/Windows_command/ + 电脑常用的一些操作

+ +

创建软链接(用来移动文件)

+

现在我的F盘里面有一个文件夹blog

+

+

然后这时我需要给它在C盘的user的ninglang目录下面创建一个软链接,方便我访问

+

指令如下

+

mklink /j 链接的地址 链接所指的地方

+
mklink /j 
+
mklink /j "C:\Users\ninglang\Blog" "F:\Blog"
+

+

+

关闭Windows更新

+

安装wu10man,点击该处访问其github.

+

+

安装打开wu10man,选择即可

+

右键菜单规定

+

下载ccleaner

+

+

对其相应的进行调整即可

+

C盘清理

+

清理Pagefile

+

+

+

+

这样,你就可以看到c盘的系统文件,其中有两个文件比较大,共占据了20G

+

+

然后打开环境变量的设置

+

+

就可以看到这个pagefile,点击更改。

+

+

通过操作这几个按钮,将其他盘设置为system managed,将C设置为None点击OK,重启电脑

+

+

清理hiberfil

+

hiberfil占用的储存也挺大,我的电脑高达6G,只需要管理员运行cmd,然后运行

+
powercfg.exe /hibernate off
+

即可,这个选项会关闭休眠,C盘文件将会自动删除,具体好坏自行取舍,如需恢复,请输入

+
powercfg.exe /hibernate on
+

磁盘分析软件

+

这里,推荐一个磁盘分析软件,SpaceSniffer,需要管理员运行程序

+

+

选择一个自己需要分析的盘符,即可,随后令其分析即可

+

C盘扩容

+

首先,下载Mini +Partition Wizrd Free

+

如果电脑显示Bitlocker,如下图

+

+

那么,你需要打开windows设置,安全与更新,然后选择设备加密,关闭加密

+

+

关闭加密完成之后, 管理员身份 打开上面的软件,应该可以分区了

+

+

选择有多余空间的盘D,右键,move/resize,然后输入你想要的d盘的大小,一定要大于里面已用空间!!!

+

右键C盘,选择分给的区扩容

+

+

将进度条拉到最大,点击OK,点击左下角apply,如果出现报错,请在三个选项中点击restart

+

+

重启期间可能会出现代码,你无需理会,让它自动跑完即可。

+

Latex语法

+

word中输入公式十分重要,但是部分语法和原生latex不太一致,下面介绍一种很重要的公式 +\[ +f(x,y,z)=\begin{cases}x&=&\cos(t)\\y&=&\sin(t)\\z&=&\tan(t)\end{cases} +\] 这时,你需要在word里面输入下面的代码

+
f(x)={\matrix{x&=&cos(t)\\y&=&sin(t)\\z&=&tan(t)}\close 
+

重装系统

+

这里使用这个超星的资源点击即可跳转

+

FFmpeg加速压缩

+
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i input.mp4 -c:v h264_nvenc -r 18  -y ouput.mp4
+

其中18表示目标帧率

+

gitgnore的编写

+

首先,在目标文件夹里新建一个.gitgnore。然后打开写入

+
+ + +
+
#Exclude all
#########
*
!*/
!.gitignore

#写入想要git的后缀
#VHDL && Verilog
!*.vhd
!*.v
!*.bd
!*.edif
#xilinx
!*.xpr
!*.xdc

#Python文件
!*.py
+

windows设置cmd的字体

+

输入win+r,输入regedit。然后复制如下地址进入导航栏

+
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
+

新建字符串值Autorun

+

里面输入chcp 437,即可修改为Consolas

+

可能会导致部分的应用无法正常工作:特别是破解软件“净化时”,这时候需要更改回来,将AutoRun留空就行

+

window设置edge不自动更新

+

打开C:\Program Files (x86)\Microsoft\EdgeUpdate

+

修改MicrosoftEdgeUpdate.exe123MicrosoftEdgeUpdate.exe即可

+

typora破解版教程

+

参考Typora破解版安装教程(仅供学习) - +知乎https://zhuanlan.zhihu.com/p/648915268

+

用app.asar.txt D:中的app.asar,输入注册码即可,安装包网址为(typora破解激活.7z)

+

wls2子系统安装教程

+

打开虚拟机功能(Powershell管理员启动)

+
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
+
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
+

下载wsl内核 WSL 2 Linux +内核

+

最后在ms store中下载ubuntu20.04

+

Wls安装cuda

+

进入CUDA +Toolkit Archive | NVIDIA Developer,选择合适的cuda,选择的版本按照PyTorch的版本来决定

+
+ + +
+

以GTX1650,torch版本如下:

+
torch              2.2.1
torchaudio 2.2.1
torchvision 0.17.1
+

选择CUDA +Toolkit 11.8 Downloads | NVIDIA +Developer,选择如图所示的命令即可

+
+ + +
+

执行如下命令即可

+
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin

sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb

sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb

sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/

sudo apt-get update

sudo apt-get -y install cuda
+]]>
+ + Windows + +
移动通信三级项目 /2023/06/06/mobile/ @@ -2647,6 +2647,22 @@ class="math display">\[ Math Model + + 卷积神经网络 + /2023/06/25/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/ + 移动通信重点总结

+ +

CNN可视化:CNN +Explainer

+

SWim Transform

+

Swin +Transformer迎来30亿参数的v2.0,我们应该拥抱视觉大模型吗?.

+]]>
+ + Code + +
近代史实践总结 /2022/01/03/%E8%BF%91%E4%BB%A3%E5%8F%B2%E5%AE%9E%E8%B7%B5%E6%80%BB%E7%BB%93/ @@ -2748,22 +2764,6 @@ Equipment,UE)之间更大规模的协同、通信感 术创新还可以进一步提升感知数据的处理能力。

ISAC的作用:在增强定位能力和毫米级

-]]> - - Code - -
- - 卷积神经网络 - /2023/06/25/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/ - 移动通信重点总结

- -

CNN可视化:CNN -Explainer

-

SWim Transform

-

Swin -Transformer迎来30亿参数的v2.0,我们应该拥抱视觉大模型吗?.

]]>
Code