HR看好的字符函数和字符串处理函数!!!

  • 本篇会加入个人的所谓‘鱼式疯言’
  • ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言,而是理解过并总结出来通俗易懂的大白话,我会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的,可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念
    在这里插入图片描述

前言

在本篇文章中小编主要讲解以下内容
💕1.字符分类函数和字符转化函数
2. strlen 函数
3. strcpy 函数和 strncpy 函数
4. strcat 函数和 strncat 函数
5.strcmp 和 strncmp 函数
6. strstr 函数
7. strtok 函数💕
是不是感觉像高中背英语单词一样,怎么那么多哇,没关系,接下来让小编一一介绍,让大家能够在理解的基础上进行记忆。
💖💖💖下面,开始吧!!!

一.字符分类函数和字符转化函数

1.字符分类函数

C语⾔中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的?
这下我们就需要用到字符分类函数:
在这里插入图片描述
这些函数的使⽤都需要包含⼀个头⽂件是 ctype.h
下面小编就举例一部分相关函数给友友们示范一下
//各种字符函数_test

#include<stdio.h>
#include<ctype.h>
int main()
{char ar = getchar();printf("%d\n",isalnum(ar));if (isalnum(ar))//判断成立,返回非零,否则为0.{printf("小写字母,大写字母,或数字\n");}if (islower(ar)){printf("小写字母\n");}else if (isupper(ar)){printf("大写字母\n");}else if (isdigit(ar)){printf("数字\n");}else if (isspace(ar)){printf("各种换行,空格,制表符\n");}else if (ispunct(ar)){printf("标点\n");}else{printf("啥都不是\n");}return 0;
}

在这里插入图片描述
通过上面示范我们看到了字符分类函数的使用很简单
只需要把字符或字符变量放在函数的参数部分
如果该字符满足判断条件就返回非0,否则就返回0.

2.字符转化函数

//大小写转化_test
#include<stdio.h>
#include<ctype.h>
int main()
{char a[20] = "HeLLo MYstrl";char* p=a;while (*p){if (isupper(*p)){*p=tolower(*p);}putchar(*p);p++;}return 0;
}

在这里插入图片描述
字符串转化函数的要义:
以大写字母转小写字母为例,我们可以看到,当字母为小写时,我们无须转化,当字母为大写时就会自动转化

鱼式疯言

这里要注意字符转化函数是有返回值的,所以当我们要用时,我们用的函数的返回值。

二.strlen函数

1. strlen 函数基本形式

size_t strlen ( const char * str )

返回类型:size_t <=> unsigned(无符号整型)
参数:const 修饰的字符类型指针

2.使用范例

#include<stdio.h>
#include<string.h>
int main()
{char arr1[20] = "abcde";printf("%zd", strlen(arr1));//返回类型是size_t,要用%zd打印return 0;
}

在这里插入图片描述

3.错误示范

#include <stdio.h>
#include <string.h>
int main()
{const char* str1 = "abcdef";const char* str2 = "bbb";if (strlen(str2) - strlen(str1) > 0){printf("str2>str1\n");}else{printf("srt1>str2\n");}return 0;
}

在这里插入图片描述
看到这里的小伙伴是不是很费解啊,是不是想连发连发3个 why
😲😲😲why why why???
有没有小伙伴想到呢?
怎么都不说,都那么低调么?
不说的话,那只能小编来说啦!💖💖💖
先说说函数实现原理和细节吧

• 字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前⾯出现的字符个数(不包含
‘\0’ )。
• 参数指向的字符串必须要以 ‘\0’ 结束。
• 注意函数的返回值为size_t,是⽆符号的 ( 易错 )
strlen 的使⽤需要包含头⽂件

所以聪明的你
也就知道小编的要说的是哪一点了
没错,我们要注意他的返回类型是size_t是无符号整型
两个无符号整型相减必然还是无符号整型,所以就一定不可以出现负数哦!
那怎么比较呢,请往下 look

#include <stdio.h>
#include <string.h>
int main()
{const char* str1 = "abcdef";const char* str2 = "bbb";if ((int)strlen(str2) - (int)strlen(str1) > 0){printf("str2>str1\n");}else{printf("srt1>str2\n");}return 0;
}

在这里插入图片描述
我们只需要强制转化成 有符号整型 int 就可以比较啦😁

这里是不是还想到还有一种类型自动转化的含义呢?
什么意思呢?就是说现在是两个无符号整型是这样子,如果一边是 无符号 一边是 有符号 那是怎么样的呢?

#include<stdio.h>
#include<string.h>
int main()
{if (strlen("abc")>-1){printf("该字符串个数>-1\n");}else{printf("该字符串个数<=-1");}return 0;
}

在这里插入图片描述

鱼式疯言

我们就可以得出结论啦,不等号左边是无符号整型,而不等号右边是有符号整型。
当两者相遇时,都会转化为无符号整型,而-1的无符号整数是一个很大的数(记住就好的),就会出现上面这种结果。

4.模拟strlen函数实现

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
//模拟strlen函数的三钟方法
int my_strlen1(const char* st)
//方法一:指针加减常数法
//用const 锁定 st的数据
//我们只传参,不改变
{int count = 0;assert(st);//判断st是否是NULL,再执行.while (*st){count++;st++;}return count;
}
int my_strlen2(const char* st)
//方法二:指针减指针法
{const char* begin = st;assert(st && begin);while (*st){st++;}return (int)(st - begin);
}
//方法三:用函数递归实现不创建临时变量计算字符串长度.
int my_strlen3( char* str)
{if (*str=='\0'){return 0;}else{return 1 + my_strlen3(++str);//此处用++str或 str+1,不可用str++,为什么呢?//因为我们要明白的是当str进入时就要递归地址就要向右走//str++还是用的是str.}
}
int main()
{char arr1[] = "abcdef";//int sz=my_strlen1(arr1);//int sz=my_strlen2(arr1);int sz=my_strlen3(arr1);printf("%d", sz);return 0;
}

在这里插入图片描述

这里小编提供了三种方法来实现我们的 strlen 函数,有兴趣的小伙伴可以尝试跟着小编的方法来模拟一下哦💕💕💕

三.strcpy函数和strncpy函数

1.styrcpy函数基本形式

char* strcpy(char * destination, const char * source )
返回类型:char* 指针类型
参数:char* 指针的目标字符,char* 指针的源字符。

2.strcpy使用范例

#include<stdio.h>
#include<string.h>
int main()
{char arr1[30] = "abcde";char arr2[] = "my_boy";printf("%s", strcpy(arr1, arr2));return 0;
}

在这里插入图片描述
小小的说明一下,想必友子们都看到了,strcpy 的作用就是把 arr1 的字符串完完整整的拷贝到arr2 中,而在这里能直接打印的原因是因为 strcpy 返回到 arr1 的首元素的地址。

3.strcpy的模拟实现

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
char* my_strcpy1(char* ar1, const char* ar2)
//普通版本_传字符同时向右走
{assert(ar1 && ar2);char* retn = ar1;while (*ar2){*ar1 = *ar2;ar1++;ar2++;}//跳出时还要把\0赋上去.*ar1 = *ar2;return retn;
}
char* my_strcpy2(char* ar1, const char* ar2)
//高端版本_test
{char* retn=ar1;while ( *ar1++ = *ar2++)//ar2先赋值后++,arr1在得到值++.//当我们ar2到达\0时,我们就可先赋值再判断.{;}return retn;
}
int main()
{char arr1[30] = "abcde";char arr2[] = "my_boy";printf("%s", my_strcpy2(arr1, arr2));return 0;
}

在这里插入图片描述

鱼式疯言

当我们需要打印字符串时,我们只需要知道字符串的首个字符的地址,就可以用 %s 输出整个字符串啦!!!😊😊😊

4.strncpy使用范例

#include<stdio.h>
#include<string.h>
int main()
{char arr1[] = "**************";char arr2[] = "hello bit";printf("%s\n", strncpy(arr1, arr2, 3));printf("%s\n", strncpy(arr1, arr2, 5));printf("%s\n", strncpy(arr1, arr2, 10));printf("%s\n", strncpy(arr1, arr2, 12));//这里充分证明了用strncpy是代入\0的.return 0;
}

在这里插入图片描述

5.模拟strncpy实现

#define _CRT_SECURE_NO_WARNINGS
//strncpy_test
#include<stdio.h>
#include<string.h>
int main()
{char arr1[] = "**************";char arr2[] = "hello bit";printf("%s\n", strncpy(arr1, arr2, 3));printf("%s\n", strncpy(arr1, arr2, 5));printf("%s\n", strncpy(arr1, arr2, 10));printf("%s\n", strncpy(arr1, arr2, 12));//这里充分证明了用strncpy是不代入\0的.return 0;
}

在这里插入图片描述

这里的strncpy和strcpy的唯一区别就是能够在arr1内部指定拷贝多少字符
达到便利的效果。
能保证拷贝字符的安全性,不至于因为arr2字符长度过大导致非法访问。
什么???
居然有宝子问,什么是非法访问,请不懂宝子们移步我们下面的鱼式疯言了解了解。

鱼式疯言

非法访问:
当一个数组长度已经确定好了,如果超出这个数组长度去访问,我们就会形成非法访问
😵😵😵简而言之就是占别人的地盘了!!!

四.strcat函数和strncat函数

1.strcat函数基本形式

char strcat(char dest, const charsrc)
返回类型: char
指针类型
参数:char* 类型目标字符和 const 修饰的 char* 类型的源字符。

2.strcat使用范例

#include<stdio.h>
#include<string.h>
int main()
{char arr1 [10] = "abcde";char arr2 [10] = "fegh";//先覆盖arr1的\0,再用arr2追加。printf("%s", strcat(arr1, arr2));return 0;
}

在这里插入图片描述
诸位仁兄都看到了吧!!!
这个strcat函数主要是把arr2的字符追加arr1后面,从而达到补字符串的效果。

3.strcat模拟实现

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
//模拟实现strcat函数的拉长
char* my_strcat(char* atr1,const char*atr2)
//atr1为目标字符串。此处不需要加const锁定。
{assert(atr1 && atr2);char* p = atr1;while (*atr1){atr1++;}//先让目标字符串到达\0.while (*atr1++=*atr2++){;//最好这里用空语句.代表这里不需要加语句}//再赋值即可return p;
}
int main()
{char arr1[40] = "hello ";char arr2[] = "bit";printf("%s", my_strcat(arr1, arr2));return 0;
}

在这里插入图片描述

4.strncat范例

#include<stdio.h>
#include<string.h>
int main()
{char arr1 [10] = "abcde**";char arr2 [10] = "fegh";//先覆盖arr1的\0,再用arr2中选定的部分字符追加。//并带上\0.printf("%s", strncat(arr1, arr2,2));return 0;
}

在这里插入图片描述
• 源字符串必须以 ‘\0’ 结束。
• ⽬标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始。
• ⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。
• ⽬标空间必须可修改。

5.模拟strncat实现

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
//模拟实现strncat字符追加
char* my_strncat(char* p1, const char* p2, int count)
{
assert(p1 && p2);
char* stu = p1;
while (p1)
{
p1++;
}
//注意这里跳到\0后的\0就打印不出来啦.
while (count–)
{
p1 = p2;
p1++;
p2++;
}
return stu;
}
int main()
{
char arr1[15] = “abcdef”;
char arr2[10] = "
“;
printf(”%s", my_strncat(arr1, arr2, 7));
return 0;
}
在这里插入图片描述

鱼式疯言

追加后面是一定要带 **\0** 的
不然我们是无法打印出正确的追加后的字符的

五. strcmp 和 strncmp 函数

1. strcmp 的基本形式

int my_strcmp (const char * str1, const char * str2)
返回类型: int
参数:两个都是 const 修饰的 char* 的指针

2. strcmp 范例

#include<stdio.h>
#include<string.h>
int main()
{char arr1[40] = "abcdefghi";char arr2[40] = "abcdeu";if (strcmp(arr1, arr2) == 1){printf("arr1>arr2");}else if(strcmp(arr1, arr2) == 0){printf("arr1=arr2");}else{printf("arr1<arr2");}return 0;
}

在这里插入图片描述

  • 第⼀个字符串⼤于第⼆个字符串,则返回 ⼤于0 的数字
  • 第⼀个字符串等于第⼆个字符串,则返回 0
  • 第⼀个字符串⼩于第⼆个字符串,则返回 ⼩于0 的数字

那么如何判断两个字符串?

⽐较两个字符串中对应位置上字符 ASCII码值 的⼤⼩。
注意这里一定是对应位置哦,以上面的代码为例, arr1 的 a 和 arr2 的 a 进行对比,然后一直对应比下去,直到 arr1 的f的 ASCII 值比 arr2 的 ASCII 小,得出 arr1 比 arr2 小,返回 -1

3. strcmp 的模拟实现

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
// 模拟实现一个strcmp_test
int my_strcmp(const char*p1,const char*p2)
{assert(p1 && p2);while (*p1 == *p2)//先循环判断{p1++;p2++;if (*p1 > *p2){return 1;}//一定要在循环内,一旦判断成立就会跳出函数.if (*p1 == '\0'){return 0;}if (*p1 < *p2){return -1;}}}
int main()
{char arr1[30] = "abrbcd";char arr2[30] = "abbcd";int sz=my_strcmp(arr1, arr2);if (sz>0){printf("大于\n");}else if (sz < 0){printf("小于\n");}else{printf("等于\n");}return 0;
}

在这里插入图片描述
有兴趣的宝子们可以康康哦😊😊😊

4. strncmp 示范

 #include<stdio.h>
#include<string.h>
int main()
{char arr1[20] = "abceg";char arr2[20] = "abcfg";if (strncmp(arr1, arr2,3) == 1){printf("arr1>arr2\n");}else if (strncmp(arr1, arr2,3) == 0){printf("arr1=arr2\n");}else{printf("arr1<arr2\n");}if (strncmp(arr1, arr2, 5) == 1){printf("arr1>arr2\n");}else if (strncmp(arr1, arr2, 5) == 0){printf("arr1=arr2\n");}else{printf("arr1<arr2\n");}return 0;
}

在这里插入图片描述
strcmp是全体比较,那么strncmp就选择性比较,比较的原理还是一样的哦.😊😊😊
在这里小编就不带着大家实现咯,和上面实现的原理差不多哦。

六. strstr 函数

1.strstr 函数的基本形式

char * strstr ( const char * str1, const char * str2);
返回类型: char*
函数返回字符串 str2 在字符串 str1 中第⼀次出现的位置
参数:两个都是 const 修饰的 char* 的指针

2. strstr 的范例

//strstr_test
#include<stdio.h>
#include<string.h>
int main()
{char arr1[40] = "abcdef";char arr2[40] = "cd";printf("%s", strstr(arr1, arr2));
}

在这里插入图片描述

3.模拟 strstr 的实现

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
//模拟实现 my_strstr 的实现
char* my_strstr(const char* str1, const char* str2)
{char* p1 = (char*)str1;char* p2 = (char*)str2;//这里是需要两个参数和两个临时变量的//一个记住起始位置,一个进行移动判断是否相等assert(str1);if (str2 == '\0'){return (char*)str1;}while (*str1)//这里是目标字符遇到\0//就意味着我们我们目标字符就遍历完了//再也找不到了{p1 = (char*)str1;p2 = (char*)str2;while (*p1 == *p2){p1++;p2++;if (*p2 == '\0')//只要源字符一遇到\0我们就意味着判断结束//找到了{return(char*) str1;}}str1++;//如果源字符再遇到\0之前,还未一直==,//目标字符也要跟着移动}return NULL;//str1跳出循环后,就会已NULL空指针的方式返回
}
int main()
{char arr1[40] = "abcccdef";char arr2[50] = "c";char* ch = my_strstr(arr1, arr2);if (ch == NULL){printf("找不到了\n");}else{printf("%s", ch);}
}

在这里插入图片描述

如果有小伙伴没有看懂的话?💕💕💕
这里小编就在这里小小说明一下
我们 strstr 函数呢,主要是找子字符串 arr2 ,然后从找到子字符串开始一直往后输出 arr1.

七. strtok 函数

1. strtok 基本形式

char * strtok ( char * str, const char * sep);
返回类型: char* 指针类型
参数: char* 指针和 const 修饰的 char*
• sep参数指向⼀个字符串,定义了⽤作分隔符的字符集合
• 第⼀个参数指定⼀个字符串,它包含了 0个 或者多个由 sep字符串中⼀个 或者多个分隔符分割的标
记。
• strtok函数找到str中的下⼀个标记,并将其⽤ \0 结尾,返回⼀个指向这个标记的指针。(注:
strtok函数会改变被操作的字符串,所以在使⽤strtok函数切分的字符串⼀般都是临时拷⻉的内容
并且可修改。

2.strtok 示例

#include<stdio.h>
#include<string.h>
//strtok_test
int main()
{char arr[] = "abcef@12345...zho11111";char* p = "@.";char*ps1=strtok(arr, p);printf("%s\n", ps1);char*ps2=strtok(NULL, p);printf("%s\n", ps2);char* ps3 = strtok(NULL, p);printf("%s\n", ps3);return 0;
}

在这里插入图片描述
因为这个函数自身比较复杂,实现起来很难让大家接受,所以感兴趣的小伙伴可以自己尝试尝试哦💖💖💖

鱼式疯言

简而言之,言而总之,就要这个strtok函数就是把分隔的各种标点分隔开,唯一使用的细节是先使用原指针arr,还有标点指针,然后在第一个参数一直传空指针就 OK 啦.以上小编介绍的这些字符串实现函数都有一个共同的头文件 string.h

总结

在本章内容我们主要讲解了

💕💕💕- 字符分类函数和字符转化函数

  • 各种字符串函数的功能并带着大家去实现
    有:
  1. strlen 函数来测量字符串长度的。
  2. strcpy 函数和 strncpy 函数来拷贝字符的。
  3. strcat 函数和 strncat 函数来追加字符的。
    5.strcmp 和 strncmp 函数比较字符大小的。
  4. strstr 函数寻找部分字符的。
  5. strtok 函数分段字符的。
    可谓是收获颇多…💖💖💖

💖💖💖本次博文就到这里了,感觉各位小伙伴的赏脸品读小编写的拙作哦,如果觉得小编写的还不错的咱可支持三关下,不妥当的咱评论区指正,希望我的文章能给各位家人们带来哪怕一点点的收获就是小编创作的最大动力💖💖💖
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能监控平台/视频共享融合系统EasyCVR接入RTSP协议视频流无法播放原因是什么?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…

深入理解Go语言GC机制

1、Go 1.3之前的标记-清除&#xff08;mark and sweep&#xff09;算法 Go 1.3之前的时候主要用的是普通的标记-清除算法&#xff0c;此算法主要由两个主要的步骤&#xff1a; 标记&#xff08;Mark phase&#xff09;清除&#xff08;Sweep phase&#xff09; 1&#xff09…

Spring Boot整合RabbitMQ

一、简介 在Spring项目中&#xff0c;可以使用Spring-Rabbit去操作RabbitMQ 尤其是在spring boot项目中只需要引入对应的amqp启动器依赖即可&#xff0c;方便的使用RabbitTemplate发送消息&#xff0c;使用注解接收消息。 一般在开发过程中&#xff1a; 生产者工程&#xf…

文心一言 VS 讯飞星火 VS chatgpt (148)-- 算法导论12.2 3题

三、用go语言&#xff0c;写出过程 TREE-PREDECESSOR 的伪代码。 文心一言&#xff1a; 以下是使用Go语言编写的TREE-PREDECESSOR函数的伪代码&#xff1a; func TREE-PREDECESSOR(node) { if node.parent ! nil { return node.parent } // 如果节点是根节点&#xff0c…

TDA4VM EVM开发板调试笔记

文章目录 1. 前言2. 官网资料导读3. 安装 Linux SDK4. 制作SD 启动卡5. 验证启动1. 前言 TDA4作为一般经典的车规级SOC芯片,基于它的低阶智驾方案目前成为各家智驾方案公司的量产首选,这也使得基于TDA4的开发需求陡增,开发和使用TDA4既要熟悉Linux驱应用开发,还要熟悉传统…

「计算机网络」Cisco Packet Tracker计算机网络仿真器的使用

介绍 Cisco Packet Tracker&#xff1a;网络仿真工具&#xff0c;用于模拟网络配置。 &#xff08;一&#xff09; 配置交换机&#xff08;Switch&#xff09;&#xff08;通过 带外管理&#xff09; 带外&#xff1a;Out-of-Band, OOB写在前面&#xff1a;如何打开Console页…

数据结构与算法-动态查找表

查找 &#x1f388;3动态查找表&#x1f52d;3.1二叉排序树&#x1f3c6;3.1.1二叉排序树的类定义&#x1f3c6;3.1.2二叉排序树的插入和生成&#x1f3c6;3.1.3二叉树的查找&#x1f3c6;3.1.4二叉排序树的删除 &#x1f52d;3.2平衡二叉树&#x1f3c6;3.2.1平衡二叉树的调整…

YOLOv8 区域计数 | 入侵检测 | 人员闯入

大家好,昨天的 YOLOv8 新增加了一个功能,区域计数,用这个功能我们能实现很多的任务, 比如入侵检测,流量统计,人员闯入等,使用方式也非常的方便,但是一定要使用最新版的 YOLOv8 代码(2023/12/03更新的代码)。 低版本是不具备这个功能的,上面是演示效果。 使用非常的方…

分享74个节日PPT,总有一款适合您

分享74个节日PPT&#xff0c;总有一款适合您 74个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/18YHKkyJsplx-Gjj7ofpFrg?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

如何赚钱?聊聊程序员的副业与生意

说到副业和赚钱一直都是大家非常关心的话题&#xff0c;特别是在今年大环境不好&#xff0c;各大公司频繁裁员的行情之下。单一的收入结构会导致家庭抗风险能力特别差。最近特别火的【中产陷阱话题】说的就是这个道理。 所以&#xff0c;获得除目前工资之外的其他收入&#xf…

C++ string类(1)—初始化、容量操作、迭代器

目录 前言 一、string类 二、初始化 1、无参或带参 2、用字符串变量初始化 3、用字符串初始化 4、指定数量字符 三、容量操作 1、size 2、push_back 3、append​编辑 4、运算符 5、reserve 6、resize 四、迭代器 1、正向迭代器 2、反向迭代器 3、const迭代器…

c++面试题

1.static的使用 1&#xff09;修饰局部变量&#xff1a;在函数内部使用static修饰局部变量&#xff0c;会使它成为静态局部变量。静态局部变量只会被初始化一次&#xff0c;且只有在第一次调用该函数时才会被初始化&#xff0c;之后每次调用该函数时都会保留上一次的值.从原来…

quickapp_快应用_父子组件传值

目录 页面级组件自定义组件(子组件)引入自定义组件(子组件)父组件给子组件传值子组件给父组件进行传值父组件调用子组件的方法 页面级组件 在pages中定义的组件被称为页面级组件。 页面级组件(等同于Vue页面)&#xff0c;通过路由配置可以进行页面跳转。 自定义组件(子组件)…

ESP32-Web-Server编程-简单的照片浏览器

ESP32-Web-Server编程-简单的照片浏览器 概述 从本节开始我们开始制作一些有趣的多媒体 Web 的示例。 当你希望在网页上展示一些广告、照片&#xff0c;或者你的开发板带摄像头&#xff0c;能够采集一些图片&#xff0c;这时你希望可以通过手头的浏览器查看图片&#xff0c;…

Node.js【文件系统模块、路径模块 、连接 MySQL、nodemon、操作 MySQL】(三)-全面详解(学习总结---从入门到深化)

目录 Node.js 文件系统模块&#xff08;二&#xff09; Node.js 文件系统模块&#xff08;三&#xff09; Node.js 文件系统模块&#xff08;四&#xff09; Node.js 路径模块 Node.js 连接 MySQL Node.js nodemon Node.js 操作 MySQL Node.js 应用 Node.js 文件系统模块…

Python----练习:使用面向对象实现报名系统开发

第一步&#xff1a;分析哪些动作是由哪些实体发出的 学生提出报名 学生提供相关资料 学生缴费 机构收费 教师分配教室 班级增加学生信息 于是&#xff0c;在整个过程中&#xff0c;一共有四个实体&#xff1a;学生、机构、教师、班级&#xff01;在现实中的一个具体的实…

如何进行卷积特征可视化

大家好啊&#xff0c;我是董董灿。 之前写过很多关于卷积算法的文章&#xff1a;5分钟理解什么是卷积的特征提取。总的来说&#xff0c;卷积算法的本质是一个特征提取器。 那么既然卷积神经网络在图像分类、图像检测、图像分割以及其他领域有这么好的表现&#xff0c;卷积到底…

Java 不要在父类的构造方法里面调用可以被子类重写的方法

不要在父类的构造方法(代码块)里面调用可以被子类重写的方法 我们从第一天学习Java开始&#xff0c;就对Java的类初始化顺序牢记于心。但是在实际开发过程中&#xff0c;似乎很难能接触这一部分的应用。在这之前&#xff0c;我也认为它只是面试中八股文而已&#xff0c;直到最…

聊一聊大模型 | 京东云技术团队

事情还得从ChatGPT说起。 2022年12月OpenAI发布了自然语言生成模型ChatGPT&#xff0c;一个可以基于用户输入文本自动生成回答的人工智能体。它有着赶超人类的自然对话程度以及逆天的学识。一时间引爆了整个人工智能界&#xff0c;各大巨头也纷纷跟进发布了自家的大模型&#…

Python 潮流周刊#29:Rust 会比 Python 慢?!

△请给“Python猫”加星标 &#xff0c;以免错过文章推送 你好&#xff0c;我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容&#xff0c;大部分为英文。本周刊开源&#xff0c;欢迎投稿[1]。另有电报频道[2]作为副刊&#xff0c;补充发布更加丰富的资讯。 &#x1f43…