C Primer Plus第十五章编程练习,仅供参考

news2024/9/22 1:13:51

第十五章编程练习

本章第一个编程练习的内容是让我们将二进制字符串转换为一个数值,传递字符串指针,逻辑并不复杂,完整程序代码以及运行结果如下:

#include<stdio.h>
#include<string.h>
#include<math.h>
int nfun(char * ptr);
int main(void){
    char * pbin = "01001001";
    int number;
    number = nfun(pbin);
    printf("01001001转换为十进制的值为:%d\n",number);
    printf("Done!!!");
    return 0;
}
int nfun(char * ptr){
    int r = 0;
    int count = strlen(ptr);
    int m = 0;
    for (int i = count -1; i >= 0; i--){
        if (*(ptr + i) == '0'){
            r += 0 * pow(2,m);
        }else if (*(ptr + i) == '1'){
            r += 1 * pow(2,m);
        }
        m++;
    }
    return r;
}

在这里插入图片描述

第二题要求我们通过命令行获取两个二进制字符串,对这两个二进制数使用四种位运算符,以二进制字符串形式打印结果。嘶,我们借用书中编程样例中的几个函数来展示二进制数字。完整程序代码以及运行结果如下:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<limits.h>
#include<stdlib.h>
char * itobs(int n, char * ps);
void show_bstr(const char * str);
int bstoi(char * ptr);

int main(int argc, char * argv[]){
    char bin_str[CHAR_BIT * sizeof(int) + 1];
    char jg_str[CHAR_BIT * sizeof(int) + 1];
    if (argc != 3){
        fprintf(stderr,"参数程序有误,请检查\n");
        exit(EXIT_FAILURE);
    }
    int a, b;
    a = bstoi(argv[1]);
    b = bstoi(argv[2]);
    char * jg = jg_str;
    printf("使用~运算符\n");
    itobs(~a,jg_str);
    printf("%s 的~计算结果为:%s\n",argv[1],jg_str);
    itobs(~b,jg_str);
    printf("%s 的~计算结果为:%s\n",argv[2],jg_str);
    printf("使用&运算符\n");
    itobs(a&b,jg_str);
    printf("%s & %s 的计算结果为:%s\n",argv[1],argv[2],jg_str);
    printf("使用|运算符\n");
    itobs(a|b,jg_str);
    printf("%s | %s 的计算结果为:%s\n",argv[1],argv[2],jg_str);
    printf("使用^运算符\n");
    itobs(a^b,jg_str);
    printf("%s ^ %s 的计算结果为:%s\n",argv[1],argv[2],jg_str);
    printf("Done!!!");
    return 0;
}
char * itobs(int n, char * ps){
    int i;
    const static int size = CHAR_BIT * sizeof(int);
    for ( i = size - 1; i >= 0; i--,n>>=1){
        ps[i] = (01 & n) + '0';
    }
    ps[size] = '\0';
    return ps;
}
void show_bstr(const char * str){
    int i = 0;
    while (str[i]){
        putchar(str[i]);
        if (++i % 4 == 0 && str[i]){
            putchar(' ');
        }
        
    }
    
}
int bstoi(char * ptr){
    int r = 0;
    int count = strlen(ptr);
    int m = 0;
    for (int i = count -1; i >= 0; i--){
        if (*(ptr + i) == '0'){
            r += 0 * pow(2,m);
        }else if (*(ptr + i) == '1'){
            r += 1 * pow(2,m);
        }
        m++;
    }
    return r;
}

在这里插入图片描述

接着,我们来看一下第三题的题目要求,要我们计算展示一个int类型的数据中打开位的数量为多少,完整程序代码以及运行结果如下:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<limits.h>
#include<stdlib.h>
char * itobs(int n, char * ps);
void show_bstr(const char * str);
int bstoi(char * ptr);

int main(void){
    char bin_str[CHAR_BIT * sizeof(int) + 1];
    int input;
    int number = 0;
    scanf("%d",&input);
    itobs(input,bin_str);
    for (int i = 0; i < strlen(bin_str); i++){
        if (*(bin_str + i) == '1'){
            number++;
        }
    }
    printf("%d中打开的位数量为%d\n",input,number);
    printf("Done!!!");
    return 0;
}
char * itobs(int n, char * ps){
    int i;
    const static int size = CHAR_BIT * sizeof(int);
    for ( i = size - 1; i >= 0; i--,n>>=1){
        ps[i] = (01 & n) + '0';
    }
    ps[size] = '\0';
    return ps;
}
void show_bstr(const char * str){
    int i = 0;
    while (str[i]){
        putchar(str[i]);
        if (++i % 4 == 0 && str[i]){
            putchar(' ');
        }
        
    }
    
}
int bstoi(char * ptr){
    int r = 0;
    int count = strlen(ptr);
    int m = 0;
    for (int i = count -1; i >= 0; i--){
        if (*(ptr + i) == '0'){
            r += 0 * pow(2,m);
        }else if (*(ptr + i) == '1'){
            r += 1 * pow(2,m);
        }
        m++;
    }
    return r;
}

在这里插入图片描述

接着,我们看一下第四题的要求,要我们接受两个int类型的值,一个为值,一个为位置,去看一下指定位置上的数据是否为开。完整程序代码以及运行结果如下:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<limits.h>
#include<stdlib.h>
char * itobs(int n, char * ps);
void show_bstr(const char * str);
int bstoi(char * ptr);

int main(){
    char bin_str[CHAR_BIT * sizeof(int) + 1];
    int input,wei;
    int number = 0;
    printf("请输入两个int类型的参数:\n");
    scanf("%d %d",&input,&wei);
    itobs(input,bin_str);
    int w = 0;
    for (int i = strlen(bin_str)-1; i >= 0 ; i--){
        if (*(bin_str + i) == '1' && w == wei){
            number = 1;
        }
        w++;
    }
    printf("%d中二进制第%d位,为%d\n",input,wei,number);
    printf("Done!!!");
    return 0;
}
char * itobs(int n, char * ps){
    int i;
    const static int size = CHAR_BIT * sizeof(int);
    for ( i = size - 1; i >= 0; i--,n>>=1){
        ps[i] = (01 & n) + '0';
    }
    ps[size] = '\0';
    return ps;
}
void show_bstr(const char * str){
    int i = 0;
    while (str[i]){
        putchar(str[i]);
        if (++i % 4 == 0 && str[i]){
            putchar(' ');
        }
        
    }
    
}
int bstoi(char * ptr){
    int r = 0;
    int count = strlen(ptr);
    int m = 0;
    for (int i = count -1; i >= 0; i--){
        if (*(ptr + i) == '0'){
            r += 0 * pow(2,m);
        }else if (*(ptr + i) == '1'){
            r += 1 * pow(2,m);
        }
        m++;
    }
    return r;
}

在这里插入图片描述

上面的实现,如果想放到单独的函数之中的话,将main()函数之中有用的部分抽离出来,然后做好合适的参数传递即可。下面,我们来看一下第五题的题目要求。要我们写一个函数实现,无符号整数值左移指定位,然后将左侧移出的高价位数据再次放到低阶位,完整程序代码以及运行结果如下:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<limits.h>
#include<stdlib.h>
char * itobs(int n, char * ps);
void show_bstr(const char * str);
int bstoi(char * ptr);
unsigned int rotate_l(unsigned int n, unsigned int w);

int main(){
    char bin_str[CHAR_BIT * sizeof(int) + 1];
    char jg_str[CHAR_BIT * sizeof(int) + 1];
    unsigned int input,wei,jgz;
    int number = 0;
    printf("请输入两个int类型的正数作为参数:\n");
    scanf("%d %d",&input,&wei);
    itobs(input,bin_str);
    jgz = rotate_l(input,wei);
    itobs(input,bin_str);
    itobs(jgz,jg_str);
    printf("%u也就是(%s)向左旋转%u位之后,得到%u,即(%s)\n",input,bin_str,wei,jgz,jg_str);
    printf("Done!!!");
    return 0;
}
unsigned int rotate_l(unsigned int n, unsigned int w){
    const static int size = CHAR_BIT * sizeof(int);
    char jg_s[CHAR_BIT * sizeof(int) + 1];
    w %= size;
    itobs(n,jg_s);
    char z;
    for (int i = 0; i < w; i++){
        z = jg_s[0];
        n<<=1;
        itobs(n,jg_s);
        jg_s[strlen(jg_s)-1] = z;
        n = bstoi(jg_s);
    }
    return n;
}
char * itobs(int n, char * ps){
    int i;
    const static int size = CHAR_BIT * sizeof(int);
    for ( i = size - 1; i >= 0; i--,n>>=1){
        ps[i] = (01 & n) + '0';
    }
    ps[size] = '\0';
    return ps;
}
void show_bstr(const char * str){
    int i = 0;
    while (str[i]){
        putchar(str[i]);
        if (++i % 4 == 0 && str[i]){
            putchar(' ');
        }
        
    }
    
}
int bstoi(char * ptr){
    int r = 0;
    int count = strlen(ptr);
    int m = 0;
    for (int i = count -1; i >= 0; i--){
        if (*(ptr + i) == '0'){
            r += 0 * pow(2,m);
        }else if (*(ptr + i) == '1'){
            r += 1 * pow(2,m);
        }
        m++;
    }
    return r;
}

在这里插入图片描述

下面,我们来看一下第六题的题目要求,

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(⊙o⊙)…,这一题的题目还蛮长的,细看一下,让我们去记录数据,有关于文字字体的数据,可以修改的那种数据。给了一个输出样例展示,我们就先按照这个样子去实现一下。完整程序代码以及运行结果如下:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<limits.h>
#include<stdlib.h>
char * itobs(int n, char * ps);
void show_bstr(const char * str);
int bstoi(char * ptr);

struct{
    unsigned int id          : 8 ;
    unsigned int size        : 8 ;
    unsigned int alignment   : 2 ;
    unsigned int bn          : 1 ;
    unsigned int in          : 1 ;
    unsigned int un          : 1 ;
} font = {0,0,0,0,0,0};
void showMenu(void);
char getCz(void);
void showFont(void);
void functionF(void);
void functionS(void);
void functionA(void);

int main(){
    char bin_str[CHAR_BIT * sizeof(int) + 1];
    char jg_str[CHAR_BIT * sizeof(int) + 1];
    char ch;
    showFont();
    showMenu();
    ch = getCz();
    while (getchar() != '\n')
          continue;
    while (ch != 'q'){
        switch (ch)
        {
        case 'f':
            functionF();
            break;
        case 's':
            functionS();
            break;
        case 'a':
            functionA();
            break;
        case 'b':
            if (font.bn == 0){
                font.bn = 1;
            }else if (font.bn == 1){
                font.bn = 0;
            }
            break;
        case 'i':
            if (font.in == 0){
                font.in = 1;
            }else if (font.in == 1){
                font.in = 0;
            }
            break;
        case 'u':
            if (font.un == 0){
                font.un = 1;
            }else if (font.un == 1){
                font.un = 0;
            }
            break;

        default:
            break;
        }
        showFont();
        showMenu();
        ch = getCz();
        while (getchar() != '\n')
          continue;
    }
    printf("Done!!!Bye!!!");
    return 0;
}
void functionF(void){
    unsigned int input;
    printf("请输入新的字体号码:(0~255)\n");
    while (scanf("%u",&input)!=1||input<0||input>255){
        printf("您输入的值不合法,请重新输入!!\n");
        while (getchar() != '\n')
          continue;
    }
    while (getchar() != '\n')
          continue;
    font.id = input;
}
void functionS(void){
    unsigned int input;
    printf("请输入新的字体大小:(0~127)\n");
    while (scanf("%u",&input)!=1||input<0||input>127){
        printf("您输入的值不合法,请重新输入!!\n");
        while (getchar() != '\n')
          continue;
    }
    while (getchar() != '\n')
          continue;
    font.size = input;
}
void functionA(void){
    char input;
    printf("请选择新的对齐方式:\n");
    printf("l)left    c)center    r)right\n");
    while (scanf("%c",&input)!=1||!(input == 'l'||input == 'c'||input == 'r')){
        printf("您输入的值不合法,请重新输入!!\n");
        while (getchar() != '\n')
          continue;
    }
    while (getchar() != '\n')
          continue;
    if (input == 'l'){
        font.alignment = 0;
    }else if (input == 'c'){
        font.alignment = 1;
    }else if (input == 'r'){
        font.alignment = 2;
    }
}
void showMenu(void){    
    printf("---------------------------菜单--------------------------\n");
    printf("f)change font      s)change size      a)change alignment\n");
    printf("b)toggle bold      i)toggle italic    u)toggle underline\n");
    printf("q)quit\n");
}
char getCz(void){
    char input;
    while (scanf("%c",&input)!=1 || !(input == 'f'||input == 's'||input == 'a'
        ||input == 'b'||input == 'i'||input == 'u'||input == 'q') ){
        printf("您输入的值不合法,请重新输入!!\n");
        while (getchar() != '\n')
          continue;
    }
    return input;
}
void showFont(void){
    putchar('\n');
    printf("ID  SIZE  ALIGNMENT    B    I    U\n");
    printf("%2u %4u ",font.id,font.size);
    if (font.alignment == 0){
        printf("    left    ");
    }else if (font.alignment == 1){
        printf("    center    ");
    }else if (font.alignment == 2){
        printf("    right    ");
    }
    if (font.bn == 0){
        printf(" off ");
    }else if(font.bn == 1){
        printf(" on ");
    }
    if (font.in == 0){
        printf(" off ");
    }else if(font.in == 1){
        printf(" on ");
    }
    if (font.un == 0){
        printf(" off ");
    }else if(font.un == 1){
        printf(" on ");
    }
    putchar('\n');
    putchar('\n');
    putchar('\n');
}
char * itobs(int n, char * ps){
    int i;
    const static int size = CHAR_BIT * sizeof(int);
    for ( i = size - 1; i >= 0; i--,n>>=1){
        ps[i] = (01 & n) + '0';
    }
    ps[size] = '\0';
    return ps;
}
void show_bstr(const char * str){
    int i = 0;
    while (str[i]){
        putchar(str[i]);
        if (++i % 4 == 0 && str[i]){
            putchar(' ');
        }
        
    }
    
}
int bstoi(char * ptr){
    int r = 0;
    int count = strlen(ptr);
    int m = 0;
    for (int i = count -1; i >= 0; i--){
        if (*(ptr + i) == '0'){
            r += 0 * pow(2,m);
        }else if (*(ptr + i) == '1'){
            r += 1 * pow(2,m);
        }
        m++;
    }
    return r;
}

在这里插入图片描述

第七题要求我们搞一个和练习6功能一样的程序,但是要用unsigned long类型的变量存储字体信息,而且使用按位运算符管理字体信息。(⊙o⊙)…首先我们先去看一下unsigned long的位数是多少。其实,作为起码32位的系统,应该是满足的。我们需要21位来存储信息,完整程序代码以及运行结果如下:

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<limits.h>
#include<stdlib.h>
#define IDMA 0x000
char * itobs(int n, char * ps);
void show_bstr(const char * str);
int bstoi(char * ptr);
static unsigned int fonts = 0x000000;

void showMenu(void);
char getCz(void);
void showFont(void);
void functionF(void);
void functionS(void);
void functionA(void);
unsigned int get_id();
unsigned int get_size();
unsigned int get_alignment();
unsigned int get_biu();
int main(){
    char bin_str[CHAR_BIT * sizeof(int) + 1];
    itobs(fonts,bin_str);
    unsigned int fbn = get_biu(29);
    unsigned int fin = get_biu(30);
    unsigned int fun = get_biu(31);
    char ch;
    showFont();
    showMenu();
    ch = getCz();
    while (getchar() != '\n')
          continue;
    while (ch != 'q'){
        switch (ch)
        {
        case 'f':
            functionF();
            break;
        case 's':
            functionS();
            break;
        case 'a':
            functionA();
            break;
        case 'b':
            if (fbn == 0){
                bin_str[29] = '1';
                fonts = bstoi(bin_str);
            }else if (fbn == 1){
                bin_str[29] = '0';
                fonts = bstoi(bin_str);
            }
            break;
        case 'i':
            if (fin == 0){
                bin_str[30] = '1';
                fonts = bstoi(bin_str);
            }else if (fin == 1){
                bin_str[30] = '0';
                fonts = bstoi(bin_str);
            }
            break;
        case 'u':
            if (fun == 0){
                bin_str[31] = '1';
                fonts = bstoi(bin_str);
            }else if (fun == 1){
                bin_str[31] = '0';
                fonts = bstoi(bin_str);
            }
            break;

        default:
            break;
        }
        showFont();
        showMenu();
        ch = getCz();
        while (getchar() != '\n')
          continue;
    }
    printf("Done!!!Bye!!!");
    return 0;
}
void functionF(void){
    unsigned int input;
    char id[CHAR_BIT * sizeof(int) + 1];
    char str[CHAR_BIT * sizeof(int) + 1];
    printf("请输入新的字体号码:(0~255)\n");
    while (scanf("%u",&input)!=1||input<0||input>255){
        printf("您输入的值不合法,请重新输入!!\n");
        while (getchar() != '\n')
          continue;
    }
    while (getchar() != '\n')
          continue;
    itobs(input,id);
    itobs(fonts,str);
    int j = 24;
    for (int i = 11; i <= 18; i++){
        str[i] = id[j];
        j++;
    }
    fonts = bstoi(str);
}
void functionS(void){
    unsigned int input;
    char id[CHAR_BIT * sizeof(int) + 1];
    char str[CHAR_BIT * sizeof(int) + 1];
    printf("请输入新的字体大小:(0~127)\n");
    while (scanf("%u",&input)!=1||input<0||input>127){
        printf("您输入的值不合法,请重新输入!!\n");
        while (getchar() != '\n')
          continue;
    }
    while (getchar() != '\n')
          continue;
    itobs(input,id);
    itobs(fonts,str);
    int j = 24;
    for (int i = 19; i <= 26; i++){
        str[i] = id[j];
        j++;
    }
    fonts = bstoi(str);
}
void functionA(void){
    char input;
    char str[CHAR_BIT * sizeof(int) + 1];
    printf("请选择新的对齐方式:\n");
    printf("l)left    c)center    r)right\n");
    while (scanf("%c",&input)!=1||!(input == 'l'||input == 'c'||input == 'r')){
        printf("您输入的值不合法,请重新输入!!\n");
        while (getchar() != '\n')
          continue;
    }
    while (getchar() != '\n')
          continue;
    itobs(fonts,str);
    if (input == 'l'){
        str[27] = '0';
        str[28] = '0';
    }else if (input == 'c'){
        str[27] = '0';
        str[28] = '1';
    }else if (input == 'r'){
        str[27] = '1';
        str[28] = '0';
    }
    fonts = bstoi(str);
}
void showMenu(void){    
    printf("---------------------------菜单--------------------------\n");
    printf("f)change font      s)change size      a)change alignment\n");
    printf("b)toggle bold      i)toggle italic    u)toggle underline\n");
    printf("q)quit\n");
}
char getCz(void){
    char input;
    while (scanf("%c",&input)!=1 || !(input == 'f'||input == 's'||input == 'a'
        ||input == 'b'||input == 'i'||input == 'u'||input == 'q') ){
        printf("您输入的值不合法,请重新输入!!\n");
        while (getchar() != '\n')
          continue;
    }
    return input;
}
unsigned int get_id(){
    char id[9];
    char str[CHAR_BIT * sizeof(int) + 1];
    itobs(fonts,str);
    int j = 0;
    for (int i = 11; i <= 18 ; i++){
        id[j] = str[i];
        j++;
    }
    id[8] = '\0';
    unsigned int r = bstoi(id);
    return r;
} 
unsigned int get_size(){
    char id[9];
    char str[CHAR_BIT * sizeof(int) + 1];
    itobs(fonts,str);
    int j = 0;
    for (int i = 19; i <= 26 ; i++){
        id[j] = str[i];
        j++;
    }
    id[8] = '\0';
    unsigned int r = bstoi(id);
    return r;
} 
unsigned int get_alignment(){
    char id[9];
    char str[CHAR_BIT * sizeof(int) + 1];
    itobs(fonts,str);
    int j = 0;
    for (int i = 27; i <= 28 ; i++){
        id[j] = str[i];
        j++;
    }
    id[2] = '\0';
    unsigned int r = bstoi(id);
    return r;
}
unsigned int get_biu(int w){
    char id[9];
    char str[CHAR_BIT * sizeof(int) + 1];
    itobs(fonts,str);
    id[0] = str[w];
    id[1] = '\0';
    unsigned int r = bstoi(id);
    return r;
}
void showFont(void){
    putchar('\n');
    printf("ID  SIZE  ALIGNMENT    B    I    U\n");
    unsigned int fid = get_id();
    unsigned int fsize = get_size();
    unsigned int falignment = get_alignment();
    unsigned int fbn = get_biu(29);
    unsigned int fin = get_biu(30);
    unsigned int fun = get_biu(31);

    printf("%2u %4u ",fid,fsize);
    if (falignment == 0){
        printf("    left    ");
    }else if (falignment == 1){
        printf("    center    ");
    }else if (falignment == 2){
        printf("    right    ");
    }
    if (fbn == 0){
        printf(" off ");
    }else if(fbn == 1){
        printf(" on ");
    }
    if (fin == 0){
        printf(" off ");
    }else if(fin == 1){
        printf(" on ");
    }
    if (fun == 0){
        printf(" off ");
    }else if(fun == 1){
        printf(" on ");
    }
    putchar('\n');
    putchar('\n');
    putchar('\n');
}
char * itobs(int n, char * ps){
    int i;
    const static int size = CHAR_BIT * sizeof(int);
    for ( i = size - 1; i >= 0; i--,n>>=1){
        ps[i] = (01 & n) + '0';
    }
    ps[size] = '\0';
    return ps;
}
void show_bstr(const char * str){
    int i = 0;
    while (str[i]){
        putchar(str[i]);
        if (++i % 4 == 0 && str[i]){
            putchar(' ');
        }
        
    }
    
}
int bstoi(char * ptr){
    int r = 0;
    int count = strlen(ptr);
    int m = 0;
    for (int i = count -1; i >= 0; i--){
        if (*(ptr + i) == '0'){
            r += 0 * pow(2,m);
        }else if (*(ptr + i) == '1'){
            r += 1 * pow(2,m);
        }
        m++;
    }
    return r;
}

在这里插入图片描述

说实话,这按位运算符我着实弄不明白如何去运用,所以我用的方法比较笨,直接修改参数对应位上的值,是可以实现的,其实按位操作实际上也是单独修改某个位或者某几个位上面的值,可以说是大差不差,所以暂时用这个版本吧,因为比较赶时间嘛,等日后对位操作理解更深之后再回看这部分的内容。那么,接下来,要开始十六章喽。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2085238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从C向C++28——设计模式

一.设计模式 1.设计模式理解 ​ C程序设计模式是针对在C编程中常见问题的通用、可重用的解决方案。设计模式主要是在软件工程领域&#xff0c;特别是在面向对象编程中发展起来的&#xff0c;它们提供了一种标准的术语和解决方案&#xff0c;可以帮助程序员更好地设计软件架构…

豆包 MarsCode试用体验

1.前言 豆包 MarsCode 是一款为你提供了AI编程助手和云端集成开发环境来协助你完成编程任务的产品。 2.功能介绍 2.1.豆包 MarsCode 编程助手 豆包 MarsCode 编程助手是豆包旗下的 AI 编程助手&#xff0c;提供以智能代码补全为代表的 AI 功能。它支持主流的编程语言和 IDE…

Luma AI,让你的视频像电影一样精彩!附带使用教程

Luma 视频生成 API 对接说明 随着 AI 的应用变广&#xff0c;各类 AI 程序已逐渐普及。AI 已逐渐深入到人们的工作生活方方面面。而 AI 涉及的行业也越来越多&#xff0c;从最初的写作&#xff0c;到医疗教育&#xff0c;再到现在的视频。 Luma 是一个专业高质量的视频生成平…

tomcat实验

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;Tomcat 具有处理HTML页面的功能&#xff0c;它还是一个Servlet和JSP容器。 下载文件 安装javajdk 解压 …

ComfyUI基础操作教学!小白入门必看!

在我们打开comfyui后会面对一堆节点&#xff0c;那么这些节点都是什么意思呢&#xff1f;今天跟着小元老师来学习一下吧&#xff5e; 一、拆解文生图基本工作流 这个是Comfyui默认的文生图工作流它的基本逻辑是&#xff1a; 条件输入板块——潜空间——像素空间 01 条件输入模…

AiThinkerIDE_V1.5.2工程随意移动地方,路径不能有空格

路径不能有空格&#xff0c;例如usr_sdk不能改为usr sdk IDF_PATH&#xff1a; ${workspace_loc:/AiThinkerProjectForESP}${workspace_loc:/AiThinkerProjectForESP}/examples/get-started/hello_world

2024年入职_转行网络安全,该如何规划呢?

前言 前段时间&#xff0c;知名机构麦可思研究院发布了 《2023年中国本科生就业报告》&#xff0c;其中详细列出近五年的本科绿牌专业&#xff0c;其中&#xff0c;信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景&#xff0c;想必无需我多言&#xff0c;作为…

C#中的批量引用已有的NuGet包

引言 小伙伴们有没有遇到过一个问题&#xff0c;就是我有一个类库A引用了很多NuGet包&#xff0c;但是到B类库中也需要使用&#xff0c;但是不想一个一个引用&#xff0c;很麻烦&#xff0c;所以我教大家一招&#xff0c;直接复制NuGet包&#xff1a; 第一步&#xff1a; 找…

【开发实战】QT5 + 深度学习六大应用案例

点击这里&#xff0c;即可一键获取六大案例源码与相关资料 QT5 OpenCV4.8 QT5 OpenCV4.8 开发与配置环境搭建&#xff0c;请看博客文章 QT5 OpenCV4 开发环境配置应用演示 深度学习模型部署 深度学习模型部署有很多成熟的框架&#xff0c;当前经常使用的深度学习模型推理…

linux 上传文件报错 -bash: rz:command not found

linux 上传文件报错 -bash: rz:command not found 新创建的纯净虚拟机无法上传文件安装lrzsz 新创建的纯净虚拟机无法上传文件 这个错误表明系统中没有安装 rz&#xff08;上传文件工具&#xff09;命令。 如果是在 CentOS 或 Red Hat 等基于 RPM 的系统上&#xff0c;可以使用…

基于RFID光触发标签的光交箱哑资源管理优化方案

当今数字化高速发展的时代&#xff0c;政企单位对通信服务的质量和可靠性提出了越来越高的要求。光交箱作为通信网络中的关键节点&#xff0c;其哑资源的有效管理对于保障通信的顺畅至关重要。然而&#xff0c;传统的管理方式在面对日益复杂的通信需求时&#xff0c;逐渐暴露出…

PHP多功能投票系统小程序源码社群决策与趣味互动新潮流

&#x1f31f;【引领社群新风尚&#xff0c;一键决策更轻松】&#x1f31f; 你还在为社群活动意见不合而烦恼吗&#xff1f;多功能投票小程序来拯救你的选择困难症&#xff01;无论是团队项目方案、周末出游地点&#xff0c;还是晚餐吃什么的小纠结&#xff0c;只需轻轻一点&a…

蓝牙语音遥控器方案

在智能家居的时代&#xff0c;科技正在改变我们的生活方式。蓝牙语音遥控器&#xff0c;作为智能家居的关键组成部分&#xff0c;正在重新定义用户与设备之间的互动方式。用户对着蓝牙语音遥控器&#xff0c;只要轻说一句话就可以搞定很多复杂的遥控操作&#xff0c;使用非常方…

Flask+LayUI开发手记(五):树型表格实现数据展示与编辑

说起来&#xff0c;树型表格treeTable绝对是后端程序员的巨大福利。要知道&#xff0c;在系统编程中&#xff0c;有父子节点关系的数据真是太多了&#xff0c;随便想一下就可以举出很多例子&#xff0c;比如权限、栏目、机构、产品、科目、货币、行业诸般等等&#xff0c;其实只…

国密起步4:GmSSL3生成证书并使用tls(SM2、SSL)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 此文介绍如何使用gmssl的tls示…

RCS plot 包内置数据集使用时报错,如何解决?

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

【爬虫软件】YouTube评论采集工具

我用Python开发的油管评论批量采集软件。 软件界面&#xff1a; 采集结果&#xff1a; 演示视频&#xff1a; https://www.bilibili.com/video/BV1Ny411z7Wk 完整讲解&#xff1a; https://www.bilibili.com/read/cv35334276

Python进阶01-面向对象基础

零、文章目录 Python进阶01-面向对象基础 1、面向对象编程思想 &#xff08;1&#xff09;编程思想是什么 所谓的编程思想&#xff0c;就是人们利用计算机来解决实际问题的一种思维方式。常见的编程思想有面向过程和面向对象&#xff0c;很多计算机语言的语法各不相同&…

OpenHarmony南向开发:分布式软总线-softbus_tool使用规范

oftbus_tool 是 OpenHarmony 分布式软总线 API 调用测试工具&#xff0c;文件结构如下图所示。 softbus_tool 能够将软总线 interfaces 目录下的一些常用接口集中起来&#xff0c;供设备间搭建一些场景时使用&#xff08;比如设备绑定、BR 组网&#xff0c;BLE 组网&#xff0…

oracle的BITAND()函数用法

BITAND函数是计算两个数据的按位与 如下&#xff1a; 0010 0101 的按位与结果是0000 转为2进制就是0 0010 0011 的按位与结果是0010 转为2进制就是2