当前位置: 首页 > news >正文

clang:在 Win10 上编译 MIDI 音乐程序(二)

先从 Microsoft C++ Build Tools - Visual Studio

下载 1.73GB 安装 "Microsoft C++ Build Tools“

访问 Swift.org - Download Swift
找到 Windows 10:x86_64
下载 swift-5.10-RELEASE-windows10.exe  大约490MB
建议安装在 D:\Swift\ ,安装后大约占2.56GB

简单来说,Clang是一个编译器,目前用来编译C、C++、Objective-C语言。

where clang
D:\Swift\Toolchains\5.10.0+Asserts\usr\bin\clang.exe

cd D:\Swift\testc

短笛伴奏《祝你生日快乐》,编辑  happy_birthday_2u.cpp  如下

#include <iostream>
#include <windows.h>  
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
using namespace std;enum Scale  // 音阶参数
{Rest = 0, C8 = 108, B7 = 107, A7s = 106, A7 = 105, G7s = 104, G7 = 103, F7s = 102, F7 = 101, E7 = 100,D7s = 99, D7 = 98, C7s = 97, C7 = 96, B6 = 95, A6s = 94, A6 = 93, G6s = 92, G6 = 91, F6s = 90, F6 = 89,E6 = 88, D6s = 87, D6 = 86, C6s = 85, C6 = 84, B5 = 83, A5s = 82, A5 = 81, G5s = 80, G5 = 79, F5s = 78,F5 = 77, E5 = 76, D5s = 75, D5 = 74, C5s = 73, C5 = 72, B4 = 71, A4s = 70, A4 = 69, G4s = 68, G4 = 67,F4s = 66, F4 = 65, E4 = 64, D4s = 63, D4 = 62, C4s = 61, C4 = 60, B3 = 59, A3s = 58, A3 = 57, G3s = 56,G3 = 55, F3s = 54, F3 = 53, E3 = 52, D3s = 51, D3 = 50, C3s = 49, C3 = 48, B2 = 47, A2s = 46, A2 = 45,G2s = 44, G2 = 43, F2s = 42, F2 = 41, E2 = 40, D2s = 39, D2 = 38, C2s = 37, C2 = 36, B1 = 35, A1s = 34,A1 = 33, G1s = 32, G1 = 31, F1s = 30, F1 = 29, E1 = 28, D1s = 27, D1 = 26, C1s = 25, C1 = 24, B0 = 23,A0s = 22, A0 = 21
};
enum Voice // F大调
{H1 = F2, H2 = G2, H3 = A2, H4 = B2, H5 = C3, H6 = D3, H7 = E3,J1 = F3, J2 = G3, J3 = A3, J4 = B3, J5 = C4, J6 = D4, J7 = E4,K1 = F4, K2 = G4, K3 = A4, K4 = B4, K5 = C5, K6 = D5, K7 = E5,L1 = F5, L2 = G5, L3 = A5, L4 = B5, L5 = C6, L6 = D6, L7 = E6,LOW_SPEED = 500, MIDDLE_SPEED = 400, HIGH_SPEED = 300,_ = 0xFF
};
// score: Happy birthday to you
int hb2u[] = {J5,J5,J6,J5,K1,J7,J5,J5,J6,J5,K2,K1,J5,J5,K5,K3,K1,J7,J6,K4,K4,K3,K1,K2,K1,
};
// 时长数组 MIDDLE_SPEED
int shichang[] = {400,400,800,800,800,1600,400,400,800,800,800,1600,400,400,800,800,800,800,800,600,200,800,800,800,2000,
};
// 力度
int lidu[] = {1,0,0,2,0,0,1,0,0,2,0,0,1,0,0,2,1,0,0,2,2,0,0,2,1,
};
// 演奏歌曲《祝你生日快乐》
void happy_birthday()
{HMIDIOUT handle;midiOutOpen(&handle, 0, 0, 0, CALLBACK_NULL); // 打开midi设备midiOutShortMsg(handle, 72 << 8 | 0xC2); // 设置通道2的乐器为 72:短笛unsigned char sd = 0x90 | (2 & 0x0F); // statusByte: 0为声道unsigned short note = 0;    //音符编号unsigned short v = 120; // velocity 力度值,范围通常在0-127int n = sizeof(lidu) / sizeof(lidu[0]); cout <<"n= " << n << endl;for (int i=0; i < n; i++) {note = hb2u[i];if (lidu[i] ==0) v = 40;else if(lidu[i] ==1) v = 80;else if (lidu[i] ==2) v = 120;unsigned long noteOnMsg = (((unsigned long)v <<16) | (((unsigned long)note) <<8) | (unsigned long)sd);midiOutShortMsg(handle, noteOnMsg); // 发送MIDI消息Sleep(shichang[i]); // 停顿,给音节演奏的时间midiOutShortMsg(handle, 0x7BB2); // 停止通道2上的演奏}midiOutShortMsg(handle, 0x7BB2); // 停止通道2上的演奏midiOutClose(handle); // 关闭midi设备
}int main()
{happy_birthday();return 0;
}

编译  clang happy_birthday_2u.cpp -o happy_birthday_2u.exe

运行  happy_birthday_2u.exe


钢琴伴奏《祝你生日快乐》,编辑  happy_birthday_2y.cpp  如下

#include <iostream>
#include <windows.h>  
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
using namespace std;enum Scale  // 音阶参数
{Rest = 0, C8 = 108, B7 = 107, A7s = 106, A7 = 105, G7s = 104, G7 = 103, F7s = 102, F7 = 101, E7 = 100,D7s = 99, D7 = 98, C7s = 97, C7 = 96, B6 = 95, A6s = 94, A6 = 93, G6s = 92, G6 = 91, F6s = 90, F6 = 89,E6 = 88, D6s = 87, D6 = 86, C6s = 85, C6 = 84, B5 = 83, A5s = 82, A5 = 81, G5s = 80, G5 = 79, F5s = 78,F5 = 77, E5 = 76, D5s = 75, D5 = 74, C5s = 73, C5 = 72, B4 = 71, A4s = 70, A4 = 69, G4s = 68, G4 = 67,F4s = 66, F4 = 65, E4 = 64, D4s = 63, D4 = 62, C4s = 61, C4 = 60, B3 = 59, A3s = 58, A3 = 57, G3s = 56,G3 = 55, F3s = 54, F3 = 53, E3 = 52, D3s = 51, D3 = 50, C3s = 49, C3 = 48, B2 = 47, A2s = 46, A2 = 45,G2s = 44, G2 = 43, F2s = 42, F2 = 41, E2 = 40, D2s = 39, D2 = 38, C2s = 37, C2 = 36, B1 = 35, A1s = 34,A1 = 33, G1s = 32, G1 = 31, F1s = 30, F1 = 29, E1 = 28, D1s = 27, D1 = 26, C1s = 25, C1 = 24, B0 = 23,A0s = 22, A0 = 21
};
enum Voice // F大调
{H1 = F2, H2 = G2, H3 = A2, H4 = B2, H5 = C3, H6 = D3, H7 = E3,J1 = F3, J2 = G3, J3 = A3, J4 = B3, J5 = C4, J6 = D4, J7 = E4,K1 = F4, K2 = G4, K3 = A4, K4 = B4, K5 = C5, K6 = D5, K7 = E5,L1 = F5, L2 = G5, L3 = A5, L4 = B5, L5 = C6, L6 = D6, L7 = E6,LOW_SPEED = 500, MIDDLE_SPEED = 400, HIGH_SPEED = 300,_ = 0xFF
};
// score: Happy birthday to you
int hb2u[] = {J5,J5,J6,J5,K1,J7,J5,J5,J6,J5,K2,K1,J5,J5,K5,K3,K1,J7,J6,K4,K4,K3,K1,K2,K1,
};
// 时长数组 MIDDLE_SPEED
int shichang[] = {400,400,800,800,800,1600,400,400,800,800,800,1600,400,400,800,800,800,800,800,600,200,800,800,800,2000,
};
// 力度
int lidu[] = {1,0,0,2,0,0,1,0,0,2,0,0,1,0,0,2,1,0,0,2,2,0,0,2,1,
};
// 演奏歌曲《祝你生日快乐》
void happy_birthday()
{HMIDIOUT handle;midiOutOpen(&handle, 0, 0, 0, CALLBACK_NULL);midiOutShortMsg(handle, 0 << 8 | 0xC0); // 设置通道0的乐器为 大钢琴unsigned short note = 0;    // 音符编号unsigned short v = 100; // velocity 力度值,范围通常在0-127unsigned char sd = 0x90 | (0 & 0x0F);// statusByte: 0为声道int n = sizeof(lidu) / sizeof(lidu[0]); cout <<"n= " << n << endl;for (int i=0; i < n; i++) {note = hb2u[i];if (lidu[i] ==0) v = 50;else if(lidu[i] ==1) v = 80;else if (lidu[i] ==2) v = 127;// 组合3个字节的消息到一个DWORD值unsigned long noteOnMsg = (((unsigned long)v <<16) | (((unsigned long)note) <<8) | (unsigned long)sd);// 发送MIDI消息midiOutShortMsg(handle, noteOnMsg);Sleep(shichang[i]); // 停顿,给音节演奏的时间midiOutShortMsg(handle, 0x7BB0); // 停止通道0上的演奏}midiOutClose(handle);
}int main()
{happy_birthday();return 0;
}

编译  clang happy_birthday_2y.cpp -o happy_birthday_2y.exe

运行  happy_birthday_2y.exe


命令行参数化 乐器伴奏《祝你生日快乐》,编辑  happy_birthday_to.cpp  如下

#include <iostream>
#include <windows.h>  
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
using namespace std;enum Scale  // 音阶参数
{Rest = 0, C8 = 108, B7 = 107, A7s = 106, A7 = 105, G7s = 104, G7 = 103, F7s = 102, F7 = 101, E7 = 100,D7s = 99, D7 = 98, C7s = 97, C7 = 96, B6 = 95, A6s = 94, A6 = 93, G6s = 92, G6 = 91, F6s = 90, F6 = 89,E6 = 88, D6s = 87, D6 = 86, C6s = 85, C6 = 84, B5 = 83, A5s = 82, A5 = 81, G5s = 80, G5 = 79, F5s = 78,F5 = 77, E5 = 76, D5s = 75, D5 = 74, C5s = 73, C5 = 72, B4 = 71, A4s = 70, A4 = 69, G4s = 68, G4 = 67,F4s = 66, F4 = 65, E4 = 64, D4s = 63, D4 = 62, C4s = 61, C4 = 60, B3 = 59, A3s = 58, A3 = 57, G3s = 56,G3 = 55, F3s = 54, F3 = 53, E3 = 52, D3s = 51, D3 = 50, C3s = 49, C3 = 48, B2 = 47, A2s = 46, A2 = 45,G2s = 44, G2 = 43, F2s = 42, F2 = 41, E2 = 40, D2s = 39, D2 = 38, C2s = 37, C2 = 36, B1 = 35, A1s = 34,A1 = 33, G1s = 32, G1 = 31, F1s = 30, F1 = 29, E1 = 28, D1s = 27, D1 = 26, C1s = 25, C1 = 24, B0 = 23,A0s = 22, A0 = 21
};
enum Voice // F大调
{H1 = F2, H2 = G2, H3 = A2, H4 = B2, H5 = C3, H6 = D3, H7 = E3,J1 = F3, J2 = G3, J3 = A3, J4 = B3, J5 = C4, J6 = D4, J7 = E4,K1 = F4, K2 = G4, K3 = A4, K4 = B4, K5 = C5, K6 = D5, K7 = E5,L1 = F5, L2 = G5, L3 = A5, L4 = B5, L5 = C6, L6 = D6, L7 = E6,LOW_SPEED = 500, MIDDLE_SPEED = 400, HIGH_SPEED = 300,_ = 0xFF
};
// score: Happy birthday to you
int hb2u[] = {J5,J5,J6,J5,K1,J7,J5,J5,J6,J5,K2,K1,J5,J5,K5,K3,K1,J7,J6,K4,K4,K3,K1,K2,K1,
};
// 时长数组 MIDDLE_SPEED
int shichang[] = {400,400,800,800,800,1600,400,400,800,800,800,1600,400,400,800,800,800,800,800,600,200,800,800,800,2000,
};
// 力度
int lidu[] = {1,0,0,2,0,0,1,0,0,2,0,0,1,0,0,2,1,0,0,2,2,0,0,2,1,
};
// 演奏歌曲《祝你生日快乐》
void happy_birthday(int yinse)
{HMIDIOUT handle;midiOutOpen(&handle, 0, 0, 0, CALLBACK_NULL);midiOutShortMsg(handle, yinse << 8 | 0xC1); // 设置通道1的乐器unsigned short note = 0;    // 音符编号unsigned short v = 100; // velocity 力度值,范围通常在0-127unsigned char sd = 0x90 | (1 & 0x0F);// statusByte: 0为声道int n = sizeof(lidu) / sizeof(lidu[0]); cout <<"n= " << n << endl;for (int i=0; i < n; i++) {note = hb2u[i];if (lidu[i] ==0) v = 50;else if(lidu[i] ==1) v = 80;else if (lidu[i] ==2) v = 127;// 组合3个字节的消息到一个DWORD值unsigned long noteOnMsg = (((unsigned long)v <<16) | (((unsigned long)note) <<8) | (unsigned long)sd);// 发送MIDI消息midiOutShortMsg(handle, noteOnMsg);Sleep(shichang[i]); // 停顿,给音节演奏的时间midiOutShortMsg(handle, 0x7BB1); // 停止通道1上的演奏}midiOutClose(handle);
}int main(int argc,char *argv[])
{if (argc > 1){int n = atoi(argv[1]);if (0<=n && n<128) happy_birthday(n);else cout << " 0<=n and n<128 ";} else {cout << " usage: happy_birthday_to n ";}return 0;
}

编译  clang happy_birthday_to.cpp -o happy_birthday_to.exe

# 乐器 26:电吉他 爵士
运行  happy_birthday_to.exe 26
# 乐器  40:小提琴
运行  happy_birthday_to  40
# 乐器  42:大提琴
运行  happy_birthday_to  42
# 乐器 65:中音萨克斯风
运行  happy_birthday_to 65


参阅:C语言midi编程钢琴演奏

音色表

/*General MIDI Level 1 旋律乐器对照表Note: 只向某个MIDI通道发送Program Change命令设置乐器,是不能发音的, 想要发音,还必须发出On开音符指令;有些乐器(笛)开始播放后,如果不发Off关音符指令,会持续发音很长时间.
*/
//Piano        1-8              键盘乐器             define = MIDI GM1列表序号 - 1
#define Acoustic_Grand_Piano    0       //平台钢琴
#define Bright_Acoustic_Piano   1       //亮音钢琴
#define Electric_Grand_Piano    2       //电钢琴
#define Honky_tonk_Piano        3       //酒吧钢琴
#define Electric_Piano_1        4       //电钢琴1
#define Electric_Piano_2        5       //电钢琴2
#define Harpsichord             6       //羽管键琴
#define Clavi                   7       //电翼琴
//Chromatic Percussion   9-16	固定音高敲击乐器     
#define Celesta                 8       //钢片琴
#define Glockenspiel            9       //钟琴
#define Music_Box               10      //音乐盒
#define Vibraphone              11      //颤音琴
#define Marimba                 12      //马林巴琴
#define Xylophone               13      //木琴
#define Tubular_Bells           14      //管钟
#define Dulcimer                15      //洋琴
//Organ         17-24	        风琴
#define Drawbar_Organ           16      //音栓风琴
#define Percussive_Organ        17      //敲击风琴
#define Rock_Organ              18      //摇滚风琴
#define Church_Organ            19      //教堂管风琴
#define Reed_Organ              20      //簧风琴
#define Accordion               21      //手风琴
#define Harmonica               22      //口琴
#define Tango_Accordion         23      //探戈手风琴
//Guitar        25-32	        吉他
#define Acoustic_Guitar_nylon   24      //木吉他 尼龙弦
#define Acoustic_Guitar_steel   25      //木吉他 钢弦
#define Electric_Guitar_jazz    26      //电吉他 爵士
#define Electric_Guitar_clean   27      //电吉他 原音
#define Electric_Guitar_muted   28      //电吉他 闷音
#define Overdriven_Guitar       29      //电吉他 破音
#define Distortion_Guitar       30      //电吉他 失真
#define Guitar_harmonics        31      //吉他泛音
//Bass          33-40	        贝斯
#define Acoustic_Bass           32      //民谣贝司
#define Electric_Bass_finger    33      //电贝司 指奏
#define Electric_Bass_pick      34      //电贝司 拨奏
#define Fretless_Bass           35      //无格贝斯
#define Slap_Bass_1             36      //捶钩贝斯1
#define Slap_Bass_2             37      //捶钩贝斯2
#define Synth_Bass_1            38      //合成贝司1
#define Synth_Bass_2            39      //合成贝司2
//Strings       41-48	        弦乐器
#define Violin                  40      //小提琴
#define Viola                   41      //中提琴
#define Cello                   42      //大提琴
#define Contrabass              43      //低音大提琴
#define Tremolo_Strings         44      //颤弓弦乐
#define Pizzicato_Strings       45      //弹拨弦乐
#define Orchestral_Harp         46      //竖琴
#define Timpani                 47      //定音鼓
//Ensemble      49-56	        合奏
#define String_Ensemble_1       48      //弦乐合奏1
#define String_Ensemble_2       49      //弦乐合奏2
#define SynthStrings_1          50      //合成弦乐1
#define SynthStrings_2          51      //合成弦乐2
#define Choir_Aahs              52      //人声“啊”
#define Voice_Oohs              53      //人声“喔”
#define Synth_Voice             54      //合成人声
#define Orchestra_Hit           55      //交响打击乐
//Brass         57-64	        铜管乐器
#define Trumpet                 56      //小号
#define Trombone                57      //长号
#define Tuba                    58      //大号
#define Muted_Trumpet           59      //闷音小号
#define French_Horn             60      //圆号/法国号
#define Brass_Section           61      //铜管乐
#define SynthBrass_1            62      //合成铜管1
#define SynthBrass_2            63      //合成铜管2
Reed          65-72	        簧乐器
#define Soprano_Sax             64      //高音萨克斯风
#define Alto_Sax                65      //中音萨克斯风
#define Tenor_Sax               66      //次中音萨克斯风
#define Baritone_Sax            67      //上低音萨克斯风
#define Oboe                    68      //双簧管
#define English_Horn            69      //英国管
#define Bassoon                 70      //低音管
#define Clarinet                71      //单簧管
//Pipe          73-80	        吹管乐器
#define Piccolo                 72      //短笛
#define Flute                   73      //长笛
#define Recorder                74      //直笛
#define Pan_Flute               75      //排笛
#define Blown_Bottle            76      //瓶笛
#define Shakuhachi              77      //尺八
#define Whistle                 78      //哨子
#define Ocarina                 79      //陶笛
//Synth Lead    81-88	        合成音主旋律
#define Lead_1_square           80      //方波
#define Lead_2_sawtooth         81      //锯齿波
#define Lead_3_calliope         82      //汽笛风琴
#define Lead_4_chiff            83      //合成吹管
#define Lead_5_charang          84      //合成电吉他
#define Lead_6_voice            85      //人生键盘
#define Lead_7_fifths           86      //五度音
#define Lead_8_bass_lead        87      //贝司吉他合奏
//Synth Pad     89-96	        合成音和弦衬底
#define Pad_1_new age           88      //新世纪
#define Pad_2_warm              89      //温暖
#define Pad_3_polysynth         90      //多重和音
#define Pad_4_choir             91      //人生合唱
#define Pad_5_bowed             92      //玻璃
#define Pad_6_metallic          93      //金属
#define Pad_7_halo              94      //光华
#define Pad_8_sweep             95      //扫掠
//Synth Effects 97-104	        合成音效果
#define FX_1_rain               96      //雨
#define FX_2_soundtrack         97      //电影音效
#define FX_3_crystal            98      //水晶
#define FX_4_atmosphere         99      //气氛
#define FX_5_brightness         100     //明亮
#define FX_6_goblins            101     //魅影
#define FX_7_echoes             102     //回音
#define FX_8_sci_fi             103     //科幻
//Ethnic        105-112	        民族乐器
#define Sitar                   104     //西塔琴
#define Banjo                   105     //五弦琴/斑鸠琴
#define Shamisen                106     //三味线
#define Koto                    107     //十三弦琴/古筝
#define Kalimba                 108     //卡林巴铁片琴
#define Bag_pipe                109     //苏格兰风琴
#define Fiddle                  110     //古提琴
#define Shanai                  111     //獸笛,类似唢呐
//Percussive    113-120	        打击乐器
#define Tinkle_Bell             112     //叮铛铃
#define Agogo                   113     //阿哥哥鼓
#define Steel_Drums             114     //钢鼓
#define Woodblock               115     //木鱼
#define Taiko_Drum              116     //太鼓
#define Melodic_Tom             117     //定音铜鼓
#define Synth_Drum              118     //合成股
#define Reverse_Cymbal          119     //逆转钹声
//Sound Effects 121-128	        特殊音效
#define Guitar_Fret_Noise       120     //吉他滑弦杂声
#define Breath_Noise            121     //呼吸杂声
#define Seashore                122     //海岸
#define Bird_Tweet              123     //鸟鸣
#define Telephone_Ring          124     //电话铃声
#define Helicopter              125     //直升机
#define Applause                126     //拍手
#define Gunshot                 127     //枪声

音码表

相关文章:

clang:在 Win10 上编译 MIDI 音乐程序(二)

先从 Microsoft C Build Tools - Visual Studio 下载 1.73GB 安装 "Microsoft C Build Tools“ 访问 Swift.org - Download Swift 找到 Windows 10&#xff1a;x86_64 下载 swift-5.10-RELEASE-windows10.exe 大约490MB 建议安装在 D:\Swift\ &#xff0c;安装后大约占…...

【redis】Redis数据类型(三)List类型

目录 List类型介绍特点 List数据结构附&#xff1a;3.2以前的版本(介绍一下压缩列表和双向链表)压缩列表ZipList双向链表LinkedList 常用命令lpush示例 lpushx示例 rpush示例 rpushx示例 LPOP示例 RPOP示例 BLPOP非阻塞行为阻塞行为相同的 key 被多个客户端同时阻塞在 MULTI/EX…...

Java面试题:多线程2

如何停止正在运行的线程 1,使用退出标志,使线程正常退出(run方法中循环对退出标志进行判断) 2,使用stop()方法强行终止(不推荐) 3,调用interrupt()方法中断线程 打断阻塞线程(sleep,wait,join),线程会抛出InterruptedException异常 打断正常的线程,可以根据打断状态来标记…...

T型槽地轨承载力是如何连接整个制造过程的强力桥梁(北重公司设计)

T型槽地轨承载力的定义和计算 T型槽地轨是一种用于工业设备运输和装配的关键组件。它由世界上各行各业的生产商广泛采用&#xff0c;其有效的承载力使其成为连接整个制造过程的强力桥梁。本文将介绍T型槽地轨的承载力以及相关的设计要点和应用。 承载力的定义和计算 承载力是…...

【Numpy】一文向您详细介绍 np.linspace()

【Numpy】一文向您详细介绍 np.linspace() &#x1f308; 欢迎莅临我的个人主页&#x1f448; 这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的计算机专业人士&#xff0c;热衷于分享技术见…...

VMware虚拟网卡网络适配器出现黄色感叹号

问题发生&#xff1a;VMware在使用Ubuntu的过程中突然卡死&#xff0c;强制关闭开启后就发生了网络无法连接 找到电脑的设备管理发现VMware的适配器出现黄色感叹号 解决方法&#xff1a; 下载软件ccleaner 扫描问题&#xff0c;懒得去找就修复了所有的问题 最后发现适配器…...

论生命价值

我们该如何定义一个人的生命价值&#xff0c;这是一个十分值得我们深思的问题&#xff0c;而谈论到生命的价值&#xff0c;我们先从非人的东西去谈论它的价值&#xff0c;从我们作为人的角度去思考价值&#xff0c;一个东西对我们有用&#xff0c;这个东西能够让我们的主观上的…...

基于Springboot的民航网上订票系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的民航网上订票系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…...

ubuntu开启message文件

环境&#xff1a;ubuntu 20.04 1、首先需要修改 /etc/rsyslog.d/50-default.conf 文件&#xff1b;源文件中message被注释&#xff0c;如下图&#xff1a; 2、打开注释&#xff1a; 3、重启服务 systemctl restart rsyslog.service 如此即可&#xff01;...

ISIS的基本概念

1.ISIS概述 IS-IS是一种链路状态路由协议&#xff0c;IS-IS与OSPF在许多方面非常相似&#xff0c; 例如运行IS-IS协议的直连设备之间通过发送Hello报文发现彼此&#xff0c;然后建立邻接关系&#xff0c;并交互链路状态信息。 CLNS由以下三个部分组成&#xff1a; CLNP&#xf…...

Vue 工程化开发入门

Vue开发的两种方式&#xff1a; 核心包传统开发模式&#xff1a;基于html/css/js文件&#xff0c;直接引入核心包&#xff0c;开发Vue工程化开发模式&#xff1a;基于构建工具的环境中开发Vue 这里选择Vue cli脚手架 进行开发&#xff0c;搜索教程自行下载。 组件化开发 一个页…...

车牌号识别系统:PyQT5+QT Designe+crnn/PaddleOCR+YOLO+OpenCV矫正算法。

PyQT5&QT Designecrnn/PaddleOCRYOLO传统OpenCV矫正算法。可视化的车牌识别系统项目。 车牌号识别系统 项目绪论1.项目展示2.视频展示3.整体思路 一、PyQT5 和 QT Designer1.简介2.安装3.使用 二、YOLO检测算法三、OpenCV矫正算法四、crnn/PaddleOCR字符识别算法五、QT界面…...

【基于MAX98357的Minimax(百度)长文本语音合成TTS 接入教程】

【基于MAX98357的Minimax&#xff08;百度&#xff09;长文本语音合成TTS 接入教程】 1. 前言2. 先决条件2.1 硬件准备2.2 软件准备2.3 接线 3. 核心代码3.1 驱动实现3.2 代码解析 4. 播放文本5. 结论 视频地址&#xff1a; SeeedXIAO ESP32S3 Sense【基于MAX98357的Minimax&am…...

秋招后端开发面试题 - JVM底层原理

目录 JVM底层原理前言面试题Java 对象的创建过程&#xff1f;什么是指针碰撞&#xff1f;什么是空闲列表&#xff1f;/ 内存分配的两种方式&#xff1f;JVM 里 new 对象时&#xff0c;堆会发生抢占吗&#xff1f;JVM 是怎么设计来保证线程安全的&#xff1f;/ 内存分配并发问题…...

VUE2从入门到精通(一)

**************************************************************************************************************************************************************************** 1、课程概述 【1】前置储备&#xff1a;HTMLCSSJS、WebAPI、Ajax、Node.js 【2】1天&…...

cmake进阶:文件操作之写文件

一. 简介 cmake 提供了 file() 命令可对文件进行一系列操作&#xff0c;譬如读写文件、删除文件、文件重命名、拷贝文件、创建目录等等。 接下来 学习这个功能强大的 file() 命令。 本文学习 CMakeLists.txt语法中写文件操作。 二. cmake进阶&#xff1a;文件操作之写文件…...

ubuntu 安装单节点HBase

下载HBase mkdir -p /home/ellis/HBase/ cd /home/ellis/HBase/ wget https://downloads.apache.org/hbase/2.5.8/hbase-2.5.8-bin.tar.gz tar -xvf hbase-2.5.8-bin.tar.gz安装java jdk sudo apt install openjdk-11-jdksudo vim /etc/profileexport JAVA_HOME/usr/lib/jvm/…...

HTTP 多个版本

了解一下各个版本的HTTP。 上个世纪90年代初期&#xff0c;蒂姆伯纳斯-李&#xff08;Tim Berners-Lee&#xff09;及其 CERN的团队共同努力&#xff0c;制定了互联网的基础&#xff0c;定义了互联网的四个构建模块&#xff1a; 超文本文档格式&#xff08;HTML&#xff09; …...

【DevOps】探索Linux命令行世界:深入了解Shell的力量

目录 一、Linux Shell 详细介绍 1. Shell基础概念 2. Shell的功能特性 3. 常用Shell命令与技巧 4. 高级Shell特性与实践 二、常见的Shell及其比较 1. Bash (Bourne Again SHell) 2. Zsh (Z Shell) 3. Fish (Friendly Interactive SHell) 4. Ksh (Korn SHell) 5. Csh …...

互斥量的使用

文章目录 前言一、互斥量与二进制信号量二、优先级反转与优先级继承三、递归锁 前言 通过学习上一章互斥量理论基础&#xff0c;这一章我们来做一些实验进行验证。 一、互斥量与二进制信号量 互斥量使用和二进制信号量类似 互斥量有优先级继承功能&#xff0c;二进制信号量没有…...

关于面试真题的压迫

1.请描述一下您在使用JavaScript进行DOM操作时&#xff0c;如何提高页面性能和用户体验&#xff1f; 使用事件委托&#xff1a;在父元素上监听事件&#xff0c;而不是为每个子元素都添加事件监听器。这样可以减少事件处理程序的数量&#xff0c;提高性能。 缓存DOM查询&#x…...

1700java进销存管理系统Myeclipse开发sqlserver数据库web结构java编程计算机网页项目

一、源码特点 java web进销存管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为sqlser…...

mysql数据库(排序与分页)

目录 一. 排序数据 1.1 排序规则 1.2 单列排序 1.我们也可以使用列的别名&#xff0c;给别名进行排序 2.列的别名只能在 ODER BY 中使用&#xff0c; 不能在WHERE中使用。 3.强调格式&#xff1a;WHERE 需要在 FROM 后&#xff0c; ORDER BY 之前 1.3 二级排序&…...

Android 实时监听Activity堆栈变化(系统应用)

private val mIActivityManager: IActivityManager ActivityManagerNative.asInterface(ServiceManager.getService(Context.ACTIVITY_SERVICE)) 方式一&#xff08;registerProcessObserver&#xff09; &#xff1a; mIActivityManager.registerProcessObserver(mIProcess…...

双目深度估计原理立体视觉

双目深度估计原理&立体视觉 0. 写在前面1. 双目估计的大致步骤2. 理想双目系统的深度估计公式推导3. 双目标定公式推导4. 极线校正理论推导 0. 写在前面 双目深度估计是通过两个相机的对同一个点的视差来得到给该点的深度。 标准系统的双目深度估计的公式推导需要满足:1)两…...

Redis探索之旅(基础)

目录 今日良言&#xff1a;满怀憧憬&#xff0c;阔步向前 一、基础命令 1.1 通用命令 1.2 五大基本类型的命令 1.2.1 String 1.2.2 Hash 1.2.3 List 1.2.4 Set 1.2.5 Zset 二、过期策略以及单线程模型 2.1 过期策略 2.2 单线程模型 2.3 Redis 效率为什么这么高 三…...

C语言/数据结构——每日一题(链表的中间节点)

一.前言 今天我在LeetCode刷到了一道单链表题&#xff0c;想着和大家分享一下这道题&#xff1a;https://leetcode.cn/problems/middle-of-the-linked-list。废话不多说让我们开始今天的知识分享吧。 二.正文 1.1题目描述 1.2题目分析 这道题有一个非常简便的方法——快慢指…...

这是用VS写的一个tcp客户端和服务端的demo

服务端&#xff1a; 客户端&#xff1a; 其实这里面的核心代码就两行。 客户端的核心代码&#xff1a; //套接字连接服务端 m_tcpSocket->connectToHost(_ip,_port);//通过套接字发送数据m_tcpSocket->write(ui.textEditSend->toPlainText().toUtf8());//如果收到信…...

代码随想录算法训练营day18 | 102.二叉树的层序遍历、226.翻转二叉树、101. 对称二叉树

102.二叉树的层序遍历 迭代法 层序遍历使用队列&#xff0c;同时记录每层的个数 class Solution:def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:res []if not root:return resqueue collections.deque()queue.append(root)while queue:size len…...

工厂自动化升级改造参考(01)--设备通信协议详解及选型

以下是整合了通信协议的特点、应用场景、优缺点以及常用接口方式的描述: 以太网/IP: 来历: 以太网是一种局域网技术,由罗伯特梅特卡夫和大卫博格在1973年开发。IP是网络层协议,负责在网络中的设备间传输数据。特点:基于标准的以太网技术,使用TCP/IP协议栈,支持高速数据传…...

想学网站制作/小程序制作费用一览表

一、Array数组对象1、Array对象&#xff1a;使用单独的变量名来存储一系列的值。2、数组的创建&#xff1a;例&#xff1a;var myArray["Hello","yeleven","yeleven2"];3、数组的访问&#xff1a;通过指定数组名以及索引号码&#xff0c;你可以访…...

icp网站域名怎么填写/百度搜索历史记录

如果我们有多个通知想要在同一连接点执行&#xff0c;那执行顺序如何确定呢&#xff1f;Spring AOP使用AspectJ的优先级规则来确定通知执行顺序。总共有两种情况&#xff1a;同一切面中通知执行顺序、不同切面中的通知执行顺序。 首先让我们看下 1&#xff09; 同一切面中通知执…...

网站的访问速度/河南做网站的

装饰者模式&#xff08;Decorator&#xff09;&#xff1a;动态地给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰者模式比生成子类更为灵活。 1.定义接口&#xff0c;可以动态的给对象添加职责。 1 package com.lujie; 2 3 public interface SuperP…...

浙江省网站重点学科建设/网站开发用什么语言

我保证这篇文章会给你一些不一样的东西&#xff0c;I promise. Docker大红大紫之时&#xff0c;我错过了什么&#xff0c;可能是因为我并没有必须使用Docker的动机&#xff0c;毕竟我不是编程者&#xff0c;我也不需要发布什么配置复杂的系统&#xff0c;我是一个典型的实用主义…...

江西工厂网站建设/长沙靠谱seo优化价格

__ROOT__: 网站根目录&#xff0c;不带/; __WEB_ROOT__: 网站资源根目录,不带/,如果以前版本用__ROOT__来定位网站资源,方便以后cdn切换 __TMPL__: 当前模板根目录&#xff08;往常查找两级&#xff09;&#xff0c;不带/; 如:1&#xff09;前台 simpleboot3模板根目录是 pub…...

dedecms网站地图怎么做/新郑网络推广

转自&#xff1a; http://blog.sina.com.cn/s/blog_6de300570102uxod.html 7月15日可以查成绩时看到自己幸运的过了这次的高项考试&#xff08;53/51/48&#xff09;&#xff0c;很开心同时也很庆幸&#xff0c;也为身边很多努力奋战的朋友未能通过感到遗憾&#xff0c;也在为他…...