Arduino相关语法和函数

1.设置中断函数

  1. attachInterrupt() //设置中断函数,并启用中断
    函数原型:
attachInterrupt(interrupt, function, mode)
  1. detachInterrupt() //关闭中断
    函数原型:
detachInterrupt(interrupt)

2.开关中断

interrupts()  //启用中断
noInterrupts()  //禁用中断

3.通讯

Serial
Arduino Mega 除了有Serial外,还有三个额外的串口:Serial 1 使用 19(RX)和 18(TX),Serial 2 使用 17(RX)和
16(TX),Serial3 使用 15(RX)和 14(TX)。

4.数字 I/O

1.pinMode()

描述
将指定的引脚配置成输出或输入。详情请见digital pins。
语法

pinMode(pin, mode)

参数
pin:要设置模式的引脚
mode:INPUT或OUTPUT
返回

例子

ledPin = 13 // LED连接到数字脚13
void setup()
{ pinMode(ledPin,OUTPUT);//设置数字脚为输出
}
void loop()
{digitalWrite(ledPin,HIGH); //点亮LEDdelay(1000); // 等待一秒 digitalWrite(ledPin, LOW);// 灭掉LED 延迟(1000); //等待第二个
}

注意
模拟输入脚也能当做数字脚使用,参加A0,A1,等

2.digitalWrite()

描述
给一个数字引脚写入HIGH或者LOW。
如果一个引脚已经使用pinMode()配置为OUTPUT模式,其电压将被设置为相应的值,HIGH为5V(3.3V控制板上为3.3V),LOW为0V。
如果引脚配置为INPUT模式,使用digitalWrite()写入HIGH值,将使内部20K上拉电阻(详见数字引脚教程)。写入LOW将会禁用上拉。上拉电阻可以点亮一个LED让其微微亮,如果LED工作,但是亮度很低,可能是因为这个原因引起的。补救的办法是 使用pinMode()函数设置为输出引脚。
注意:
数字13号引脚难以作为数字输入使用,因为大部分的控制板上使用了一颗LED与一个电阻连接到他。如果启动了内部的20K上拉电阻,他的电压将在1.7V左右,而不是正常的5V,因为板载LED串联的电阻把他使他降了下来,这意味着他返回的值总是LOW。如果必须使用数字13号引脚的输入模式,需要使用外部上拉下拉电阻。
语法

digitalWrite(pin, value)

参数
pin: 引脚编号(如1,5,10,A0,A3)
value: HIGH or LOW
返回

例子

int ledPin = 13; // LED连接到数字13号端口
void setup()
{pinMode(ledPin, OUTPUT); // 设置数字端口为输入模式 } void loop() {digitalWrite(ledPin, HIGH); // 使LED亮 delay(1000);// 延迟一秒 digitalWrite(ledPin, LOW); // 使LED灭 delay(1000);// 延迟一秒
}

13号端口设置为高电平,延迟一秒,然后设置为低电平。
注释
模拟引脚也可以当做数字引脚使用,使用方法是输入端口A0,A1,A2等。

3.digitalRead()

描述
读取指定引脚的值,HIGH或LOW。
语法

digitalRead(PIN)

参数
pin:你想读取的引脚号(int)
返回
HIGH 或 LOW
例子

ledPin = 13 // LED连接到13脚
int inPin = 7; // 按钮连接到数字引脚7
int val = 0;//定义变量以存储读值
void setup()
{ pinMode(ledPin, OUTPUT); //将13脚设置为输出 pinMode(inPin, INPUT); // 将7脚设置为输入
} void loop()
{val = digitalRead(inPin); // 读取输入脚 digitalWrite(ledPin, val);//将LED值设置为按钮的值
}

将13脚设置为输入脚7脚的值。
注意
如果引脚悬空,digitalRead()会返回HIGH或LOW(随机变化)。
模拟输入脚能当做数字脚使用,参见A0,A1等。

5.模拟 I/O

1.analogReference()

描述
配置用于模拟输入的基准电压(即输入范围的最大值)。选项​​有:
DEFAULT:默认5V(Arduino板为5V)或3.3伏特(Arduino板为3.3V)为基准电压。
INTERNAL:在ATmega168和ATmega328上以1.1V为基准电压,以及在ATmega8上以2.56V为基准电压(Arduino Mega无此选项)
INTERNAL1V1:以1.1V为基准电压(此选项仅针对Arduino Mega)
INTERNAL2V56:以2.56V为基准电压(此选项仅针对Arduino Mega)
EXTERNAL:以AREF引脚(0至5V)的电压作为基准电压。
参数
type:使用哪种参考类型(DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, 或者 EXTERNAL)。
返回

注意事项
改变基准电压后,之前从analogRead()读取的数据可能不准确。
警告
不要在AREF引脚上使用使用任何小于0V或超过5V的外部电压。如果你使用AREF引脚上的电压作为基准电压,你在调用analogRead()前必须设置参考类型为EXTERNAL。否则,你将会削短有效的基准电压(内部产生)和AREF引脚,这可能会损坏您Arduino板上的单片机。
另外,您可以在外部基准电压和AREF引脚之间连接一个5K电阻,使你可以在外部和内部基准电压之间切换。请注意,总阻值将会发生改变,因为AREF引脚内部有一个32K电阻。这两个电阻都有分压作用。所以,例如,如果输入2.5V的电压,最终在在AREF引脚上的电压将为2.5 * 32 /(32 + 5)= 2.2V。

2.analogRead()

描述
从指定的模拟引脚读取数据值。 Arduino板包含一个6通道(Mini和Nano有8个通道,Mega有16个通道),10位模拟数字转换器。这意味着它将0至5伏特之间的输入电压映射到0至1023之间的整数值。这将产生读数之间的关系:5伏特/ 1024单位,或0.0049伏特(4.9 mV)每单位。输入范围和精度可以使用analogReference()改变。它需要大约100微秒(0.0001)来读取模拟输入,所以最大的阅读速度是每秒10000次。
语法

analogRead(PIN)

数值的读取
引脚:从输入引脚(大部分板子从0到5,Mini和Nano从0到7,Mega从0到15)读取数值
返回
从0到1023的整数值
注意事项
如果模拟输入引脚没有连入电路,由analogRead()返回的值将根据多项因素(例如其他模拟输入引脚,你的手靠近板子等)产生波动。
例子

int analogPin = 3; //电位器(中间的引脚)连接到模拟输入引脚3
//另外两个引脚分别接地和+5 V
int val = 0; //定义变量来存储读取的数值
void setup()
{serial.begin(9600); //设置波特率(9600)
}
void loop()
{val = analogRead(analogPin); //从输入引脚读取数值
serial.println(val);//显示读取的数值
}

返回主菜单

3.analogWrite() - PWM

描述
从一个引脚输出模拟值(PWM)。可用于让LED以不同的亮度点亮或驱动电机以不同的速度旋转。analogWrite()输出结束后,该引脚将产生一个稳定的特殊占空比方波,直到下次调用analogWrite()(或在同一引脚调用digitalRead()或digitalWrite())。PWM信号的频率大约是490赫兹。
在大多数arduino板(ATmega168或ATmega328),只有引脚3,5,6,9,10和11可以实现该功能。在aduino Mega上,引脚2到13可以实现该功能。老的Arduino板(ATmega8)的只有引脚9、10、11可以使用analogWrite()。在使用analogWrite()前,你不需要调用pinMode()来设置引脚为输出引脚。
analogWrite函数与模拟引脚、analogRead函数没有直接关系。
语法

analogWrite(pin,value)

参数
pin:用于输入数值的引脚。
value:占空比:0(完全关闭)到255(完全打开)之间。
返回

说明和已知问题
引脚5和6的PWM输出将高于预期的占空比(输出的数值偏高)。这是因为millis()和delay()功能,和PWM输出共享相同的内部定时器。这将导致大多时候处于低占空比状态(如:0 - 10),并可能导致在数值为0时,没有完全关闭引脚5和6。
例子
通过读取电位器的阻值控制LED的亮度

int ledPin = 9; // LED连接到数字引脚9
int analogPin = 3; //电位器连接到模拟引脚3
intval = 0; //定义变量存以储读值
void setup()
{pinMode(ledPin,OUTPUT);//设置引脚为输出引脚
}
void loop()
{val = analogRead(analogPin);//从输入引脚读取数值 analogWrite(ledPin,val / 4); // 以val /4的数值点亮LED(因为analogRead读取的数值从0到1023,而analogWrite输出的数值从0到255)
}

6.高级 I/O

1. tone()

描述
在一个引脚上产生一个特定频率的方波(50%占空比)。持续时间可以设定,否则波形会一直产生直到调用noTone()函数。该引脚可以连接压电蜂鸣器或其他喇叭播放声音。
在同一时刻只能产生一个声音。如果一个引脚已经在播放音乐,那调用tone()将不会有任何效果。如果音乐在同一个引脚上播放,它会自动调整频率。
使用tone()函数会与3脚和11脚的PWM产生干扰(Mega板除外)。
注意:如果你要在多个引脚上产生不同的音调,你要在对下一个引脚使用tone()函数前对此引脚调用noTone()函数。
语法

tone(pin, frequency)
tone(pin, frequency, duration)

参数
pin:要产生声音的引脚
frequency: 产生声音的频率,单位Hz,类型unsigned int
duration:声音持续的时间,单位毫秒(可选),类型unsigned long
返回

2.noTone()

描述
停止由tone()产生的方波。如果没有使用tone()将不会有效果。
注意:如果你想在多个引脚上产生不同的声音,你要在对下个引脚使用tone()前对刚才的引脚调用noTone().
语法

noTone(pin)

参数
pin: 所要停止产生声音的引脚
返回

3.shiftOut()

描述
将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。
注意:如果你所连接的设备时钟类型为上升沿,你要确定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin, LOW)。
注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。
语法

shiftOut(dataPin, clockPin, bitOrder, value)

参数
dataPin:输出每一位数据的引脚(int)
clockPin:时钟脚,当dataPin有值时此引脚电平变化(int)
bitOrder:输出位的顺序,最高位优先或最低位优先
value: 要移位输出的数据(byte)
返回

4.shiftIn()

描述
将一个数据的一个字节一位一位的移入。从最高有效位(最左边)或最低有效位(最右边)开始。对于每个位,先拉高时钟电平,再从数据传输线中读取一位,再将时钟线拉低。
注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。
语法

shiftIn(dataPin,clockPin,bitOrder)

参数
dataPin:输出每一位数据的引脚(int)
clockPin:时钟脚,当dataPin有值时此引脚电平变化(int)
bitOrder:输出位的顺序,最高位优先或最低位优先
返回
读取的值(byte)

5.pulseIn()

描述
读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。返回脉冲的长度,单位微秒。如果在指定的时间内无脉冲函数返回。
此函数的计时功能由经验决定,长时间的脉冲计时可能会出错。计时范围从10微秒至3分钟。(1秒=1000毫秒=1000000微秒)
语法

pulseIn(pin, value)
pulseIn(pin, value, timeout)

参数
pin:你要进行脉冲计时的引脚号(int)。
value:要读取的脉冲类型,HIGH或LOW(int)。
timeout (可选):指定脉冲计数的等待时间,单位为微秒,默认值是1秒(unsigned long)
返回
脉冲长度(微秒),如果等待超时返回0(unsigned long)
例子

int pin = 7;
unsigned long duration;
void setup()
{ pinMode(pin,INPUT);
}
void loop()
{ duration = pulseIn(pin, HIGH);
}

6.millis()

语法

millis()

描述
返回Arduino开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。
参数

返回
返回从运行当前程序开始的毫秒数(无符号长整数)。

例子

unsigned long time; void setup()
{Serial.begin(9600);
}
void loop()
{ serial.print(“Time:”); time = millis();//打印从程序开始到现在的时间 serial.println(time); //等待一秒钟,以免发送大量的数据delay(1000);
}

提示
注意,参数 millis 是一个无符号长整数,试图和其他数据类型(如整型数)做数学运算可能会产生错误。
当中断函数发生时,millis()的数值将不会继续变化。

7.micros()

语法

micros()

描述
返回 Arduino 开发板从运行当前程序开始的微秒数。这个数字将在约70分钟后溢出(归零)。在 16MHz 的 Arduino 开发板上(比如 Duemilanove 和 Nano),这个函数的分辨率为四微秒(即返回值总是四的倍数)。在 8MHz 的 Arduino 开发板上(比如 LilyPad),这个函数的分辨率为八微秒。
注意 :每毫秒是1,000微秒,每秒是1,000,000微秒。
参数

返回
返回从运行当前程序开始的微秒数(无符号长整数)。
例子

unsigned long time;
void setup()
{Serial.begin(9600);
}
void loop()
{ Serial.print(“Time:”;time = micros(); //打印从程序开始的时间 Serial.println(time); //等待一秒钟,以免发送大量的数据delay(1000);
}

8.delay()

描述
使程序暂定设定的时间(单位毫秒)。(一秒等于1000毫秒)
语法

delay(ms)

参数
ms:暂停的毫秒数(unsigned long)
返回

例子

ledPin = 13 / / LED连接到数字13脚
void setup()
{ pinMode(ledPin,OUTPUT); // 设置引脚为输出
}
void loop()
{ digitalWrite(ledPin,HIGH); // 点亮LED delay(1000); // 等待1秒digitalWrite(ledPin, LOW); // 灭掉LED delay(1000); // 等待一秒
}

警告
虽然创建一个使用delay()的闪烁LED很简单,并且许多例子将很短的delay用于消除开关抖动,delay()确实拥有很多显著的缺点。在delay函数使用的过程中,读取传感器值、计算、引脚操作均无法执行,因此,它所带来的后果就是使其他大多数活动暂停。其他操作定时的方法请参加millis()函数和它下面的例子。大多数熟练的程序员通常避免超过10毫秒的delay(),除非arduino程序非常简单。
但某些操作在delay()执行时任然能够运行,因为delay函数不会使中断失效。通信端口RX接收到得数据会被记录,PWM(analogWrite)值和引脚状态会保持,中断也会按设定的执行。

9.delayMicroseconds()

描述
使程序暂停指定的一段时间(单位:微秒)。一秒等于1000000微秒。目前,能够产生的最大的延时准确值是16383。这可能会在未来的Arduino版本中改变。对于超过几千微秒的延迟,你应该使用delay()代替。
语法

delayMicroseconds()

10.delayMicroseconds(us)

参数
us:暂停的时间,单位微秒(unsigned int)
返回

例子

int outPin = 8; // digital pin 8
void setup()
{pinMode(outPin,OUTPUT); //设置为输出的数字管脚 } void loop() {digitalWrite(outPin,HIGH); //设置引脚高电平 delayMicroseconds(50);// 暂停50微秒 digitalWrite(outPin, LOW); // 设置引脚低电平delayMicroseconds(50); // 暂停50微秒
}

将8号引脚配置为输出脚。它会发出一系列周期100微秒的方波。
警告和已知问题
此函数在3微秒以上工作的非常准确。我们不能保证,delayMicroseconds在更小的时间内延时准确。
Arduino0018版本后,delayMicroseconds()不再会使中断失效。

7.位操作

1.lowByte()

描述
语法
参数
返回

lowByte()
描述
提取一个变量(例如一个字)的低位(最右边)字节。
语法

lowByte(x)

参数
x:任何类型的值
返回
字节

2.highByte()

描述
提取一个字节的高位(最左边的),或一个更长的字节的第二低位。
语法

highByte(x)

参数
x:任何类型的值
返回

byte

3.bitRead()

描述
读取一个数的位。
语法

bitRead(x, n)

参数
X:想要被读取的数 N:被读取的位,0是最低有效位(最右边)
返回
该位的值(0或1)。

4.bitWrite()

描述
在位上写入数字变量。
语法

bitWrite(x, n, b)

参数
X:要写入的数值变量
N:要写入的数值变量的位,从0开始是最低(最右边)的位
B:写入位的数值(0或1)
返回

bitSet()

描述
为一个数字变量设置一个位。
语句

bitSet(x, n)

语法
X:想要设置的数字变量
N:想要设置的位,0是最重要(最右边)的位
返回

bitClear()

描述
清除一个数值型数值的指定位(将此位设置成 0)
语法

bitClear(x, n)

参数
X:指定要清除位的数值 N:指定要清除位的位置,从0开始,0 表示最右端位
返回值

bit()

描述
计算指定位的值(0位是1,1位是2,2位4,以此类推)。
语法

bit(n)

参数
n:需要计算的位
返回值
位值

8.三角函数

1.sin()

描述
计算角度的正弦(弧度)。其结果在-1和1之间。
参数
rad: 弧度制的角度(float)
返回
角度的正弦值(double)

2.cos()

描述
计算一个角度的余弦值(用弧度表示)。返回值在 -1 和 1 之间。
参数
rad:用弧度表示的角度 (浮点数)
返回
角度的余弦值 (双精度浮点数)

3.tan()

描述
计算角度的正切(弧度)。结果在负无穷大和无穷大之间。
参数
rad:弧度制的角度(float)
返回
角度的正切值

4.其它三角函数

acos()–
asin()–
atan()–
atan2()–
cosh()–
degrees()–
hypot()–
radians()–
sinh()–
tanh()–

9.数学运算

1.min()

min(x, y)

描述
计算两个数字中的最小值。
参数
X:第一个数字,任何数据类型
Y:第二个数字,任何数据类型
返回
两个数字中的较小者。
举例
sensVal = min(sensVal,100); //将 sensVal 或 100 中较小者赋值给 sensVal
//确保它永远不会大于 100。
注释
直观的比较,max() 方法常被用来约束变量的下限,而 min() 常被用来约束变量的上限。
警告
由于 min() 函数的实现方式,应避免在括号内出现其他函数,这将导致不正确的结果。
min(a++, 100); //避免这种情况 - 会产生不正确的结果
a++;
min(a, 100); //使用这种形式替代 - 将其他数学运算放在函数之外

2.max()

max(x,y)

描述
计算两个数的最大值。
参数
X:第一个数字,任何数据类型
Y:第二个数字,任何数据类型
返回
两个参数中较大的一个。
例子

sensVal = max(senVal, 20); // 将20或更大值赋给sensVal
//(有效保障它的值至少为20)

注意
和直观相反,max()通常用来约束变量最小值,而min()通常用来约束变量的最大值。
警告
由于max()函数的实现方法,要避免在括号内嵌套其他函数,这可能会导致不正确的结果。
max(a–, 0); //避免此用法,这会导致不正确结果

a–; // 用此方法代替
max(a, 0); // 将其他计算放在函数外

3.abs()

描述
计算一个数的绝对值。
参数
X:一个数
返回
如果x大于或等于0,则返回它本身。如果x小于0,则返回它的相反数。
警告
由于实现ABS()函数的方法,避免在括号内使用任何函数(括号内只能是数字),否则将导致不正确的结果。
ABS(a+ +); //避免这种情况,否则它将产生不正确的结果
a + +; //使用这段代码代替上述的错误代码
ABS(a); //保证其他函数放在括号的外部

4.constrain()

描述
将一个数约束在一个范围内
参数
x:要被约束的数字,所有的数据类型适用。
a:该范围的最小值,所有的数据类型适用。
b:该范围的最大值,所有的数据类型适用。
返回值
x:如果 x是介于 a 和 b之间
a:如果 x小于a
b:如果 x大于b
例子

sensVal = constrain(sensVal, 10, 150);
//传感器返回值的范围限制在10到150之间

5.map()

描述
将一个数从一个范围映射到另外一个范围。也就是说,会将 fromLow 到 fromHigh 之间的值映射到 toLow 在 toHigh 之间的值。
不限制值的范围,因为范围外的值有时是刻意的和有用的。如果需要限制的范围, constrain() 函数可以用于此函数之前或之后。
注意
两个范围中的“下限”可以比“上限”更大或者更小,因此 map() 函数可以用来翻转数值的范围,例如:

y = map(x, 1, 50, 50, 1);

这个函数同样可以处理负数,请看下面这个例子:

y = map(x, 1, 50, 50, -100);

是有效的并且可以很好的运行。
map() 函数使用整型数进行运算因此不会产生分数,这时运算应该表明它需要这样做。小数的余数部分会被舍去,不会四舍五入或者平均。
参数
value:需要映射的值
fromLow:当前范围值的下限
fromHigh:当前范围值的上限
toLow:目标范围值的下限
toHigh:目标范围值的上限
返回
被映射的值。
例子
//映射一个模拟值到8位(0到255)

void setup()
{} void loop()
{ int val =analogRead(0); val = map(val, 0, 1023, 0, 255); analogWrite(9, val);
}

附录 关于数学的实现,这里是完整函数 long map(long x, long in_min, long in_max, long
out_min, long out_max) { return (x - in_min) * (out_max - out_min) /
(in_max - in_min) + out_min; }

6.pow()

描述
计算一个数的幂次方。Pow()可以用来计算一个数的分数幂。这用来产生指数幂的数或曲线非常方便。
参数
base:底数(float)
exponent:幂(float)
返回
一个数的幂次方值(double)
例子
详情见 库代码中的fscale函数。

7.sqrt()

描述
计算一个数的平方根。
参数
x:被开方数,任何类型
返回
此数的平方根,类型double

8.其他不常用函数:

ceil()–
exp()–
fabs()–
floor()–
fma()–
fmax()–
fmin()–
fmod()–
ldexp()–
log()–
log10()–
round()–
signbit()–
sq()–
square()–
trunc()–

Arduino相关语法和函数相关推荐

  1. python实用的语法和函数

    本文介绍了python中实用的一些语法和函数 持续更新 代码较长 1215行 建议保存源码 遇到有困惑的时候 在代码中Ctrl+F寻找答案 Gitee源码 Github源码 目录: 版本查看 pip ...

  2. 使用Arduino Tone()函数演奏旋律

    原文:https://circuitdigest.com/microcontroller-projects/playing-melodies-on-piezo-buzzer-using-arduino ...

  3. Python数据处理相关语法整理

    Python数据处理相关语法整理 简介 Python自身特性总结 编程Tips 拿到新电脑配环境时做的事: 一些加速python代码的技巧 Python项目代码结构 量化策略指标计算 绝对收益率 最大 ...

  4. (二)turtle库的使用及其相关语法元素分析

    一,turtle库的使用 1,turtle库基本介绍 (1)turtle(海龟)库:turtle绘图体系的python实现. --turtle绘图体系,1969年诞生,主要用于程序设计入门 --海龟库 ...

  5. 41.从入门到精通:格式化日期 获取某月日历 Time 模块 日历(Calendar)模块 其他相关模块和函数

    41.从入门到精通:格式化日期 获取某月日历 Time 模块 日历(Calendar)模块 其他相关模块和函数 格式化日期 获取某月日历 Time 模块 日历(Calendar)模块 其他相关模块和函 ...

  6. 2021年大数据常用语言Scala(十三):基础语法学习 函数 重点掌握

    目录 函数 重点掌握 定义函数 方法和函数的区别 方法转换为函数 完全体函数 函数 重点掌握 scala支持函数式编程,将来编写Spark/Flink程序中,会大量使用到函数 函数和我们的对象一样, ...

  7. thymeleaf模板的使用——1,thymeleaf概述|| thymeleaf 的使用方法|| 如何修改Thymeleaf的默认存放地址||Thymeleaf的相关语法

    thymeleaf模板的使用 1,thymeleaf概述 简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎 ...

  8. 玩转Mixly – 9、Arduino AVR编程 之 函数

    以下内容源自Mixly官方技术文档: https://mixly.readthedocs.io/zh_CN/latest/Arduino/AVR/08Functions.html 函数 在函数部分,主 ...

  9. openresty开发系列14--lua基础语法3函数

    openresty开发系列14--lua基础语法3函数 一)function (函数) 有名函数: optional_function_scope function function_name( ar ...

  10. MySQL 储存过程-原理、语法、函数详细说明

    2019独角兽企业重金招聘Python工程师标准>>> Mysql储存过程是一组为了完成特定功能的SQL语句集,经过编译之后存储在数据库中,当需要使用该组SQL语句时用户只需要通过指 ...

最新文章

  1. 设计模式的理解: 适配器模式 Adapter
  2. 走出舒适圈,从来都不简单
  3. php cdi_CDI中的事务异常处理
  4. 【转】VS编译环境命令窗口中的命令
  5. python 数据分析 实际案例_python在实际工作中运用的案例
  6. Blender Reference Manual 欢迎使用Blender手册!
  7. 深度学习之神经网络(二)
  8. 我亦云云——也谈云计算(3)
  9. [Java] 使用HttpClient实现文件下载
  10. 前端技术规划与战略:2022
  11. mysql修改字段默认值_Mysql 修改字段默认值
  12. 分享学JavaScript的第十天
  13. 基于DES加密的TCP聊天程序
  14. Docker学习十:网络
  15. elasticsearch 性能优化
  16. Excel和Python实现梯度下降法
  17. Ping计算机名和Ping网站域名都是由DNS解析吗?
  18. 【5GC】什么是5G切片?5G切片如何工作?
  19. 用python计算符号函数一元定积分和不定积分
  20. java实现基于管程法的消费者生产者模式(两个消费者一个生产者)

热门文章

  1. 如何将一个长URL转换为一个短URL?
  2. 入职美团定级P7,总结2022年最新最全180道高级岗面试题及答案
  3. 串口仪器控制(下篇)——利用虚拟串口模拟仪器
  4. Redmine使用介绍
  5. FOI 冬令营 Day6
  6. OpenCV的图像分类基础知识
  7. 华为手机鸿蒙系统官方下载入口,华为鸿蒙系统升级入口
  8. solidworks 文件服务器,solidworks配置服务器
  9. php居中显示代码,css居中代码是什么
  10. Maya2018生成pyd文件