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

c_character_string 字符串----我认真的弄明白了,也希望你们也是。

字符串

1. 字符串长度strlen

1.1strlen 函数介绍
size_t strlen ( const char * str );
strlen ——string length
strlen 的头文件是 #include <string.h>
参数指向的字符串必须要以 ‘\0’ 结束。
strlen 是求字符串长度的函数,统计的是字符串中\0之前出现的字符个数(不包含 ‘\0’ )。
注意函数的返回值为size_t,是无符号的。

示例1:

#include <stdio.h>
#include <string.h>
int main()
{char arr1[] = "abcdef";char arr2[] = { 'a','b','c','d','e','f' };char arr3[9] = { 'a','b','c','d','e','f' };printf("%d\n", strlen(arr1));printf("%d\n", strlen(arr2));printf("%d\n", strlen(arr3));return 0;
}打印:
6
12
6
arr1 是字符串,字符串的结束标志是 \0,所以 strlen 计算的是 \0之前出现的字符个数,所以是6。
arr2 是字符,arr2 里面没有 \0, 所以 strlen 计算的时候会一直往下计算直到遇到 \0 才会停下,是个随机值。
arr3 是字符串数组,数组数量为6个,所以才会打印6。

示例2:

#include <stdio.h>
#include <string.h>
int main()
{char arr1[] = "abc";char arr2[] = "abcdef";if (strlen(arr1) - strlen(arr2) > 0)printf(">\n");elseprintf("<\n");return 0;
}
运行结果:
大于strlen 计算出 arr1 的值是3,arr2 的值是6,arr1 - arr2 = -3 <0; 怎么会打印 > 呢?
因为函数的返回值为size_t,是无符号的。arr1 和 arr2 的返回值是无符号的,两个无符号的值相减的结果也是无符号的,即使结果是-3 也会被当成无符号数处理,一定会大于0,打印的结果就是 > 。
1.2 strlen 函数的模拟实现

方法一:计数器方式

#include <stdio.h>
#include <string.h>
size_t my_strlen(const char* str)
{int count = 0;while (*str){count++;str++;}return count;
}
int main()
{char arr[] = "abcdef";int len = my_strlen(arr);printf("%d\n", len);return 0;
}

方法二:指针-指针的方式

#include <stdio.h>
#include <string.h>
#include <assert.h>
size_t my_strlen(const char* str)
{assert(str);//确保str不为空指针const char* start = str;const char* end = str;while (*end != '\0'){end++;}return end - start;
}
int main()
{char arr[] = "abcdef";int len = my_strlen(arr);printf("%d\n", len);return 0;
}

方法三:不能创建临时变量计数器(递归求解)

#include <stdio.h>
#include <string.h>
size_t my_strlen(const char* str)
{if (*str == '\0')return 0;elsereturn 1 + my_strlen(str + 1);
}
int main()
{char arr[] = "abcdef";int len = my_strlen(arr);printf("%d\n", len);return 0;
}

2. 长度不受限制的字符串函数

长度不受限制的字符串和字符串长度没有关系,只关心\0

2.1 strcpy
2.1.1 strcpy 函数介绍
char *strcpy(char *dest, const char *src);
strcpy 的头文件是 #include <string.h>
源字符串必须以 ‘\0’ 结束。
strcpy 会将源字符串中的 ‘\0’ 拷贝到目标空间。
目标空间必须足够大,以确保能存放源字符串。
目标空间必须可变。注意:常量字符串不可以修改不可以放到目标空间里。

示例:

#include <stdio.h>
#include <string.h>
int main()
{char arr1[20] = { 0 };char arr2[] = "hello";strcpy(arr1, arr2);printf("%s\n", arr1);printf("%d\n", strlen(arr1));printf("%d\n",  strlen(arr2));return 0;
}运行结果:
hello
5
5  //strcpy 会将源字符串中的 ‘\0’ 拷贝到目标空间。
2.1.2 strcpy 函数模拟实现
#include <stdio.h>
#include <string.h>
#include <assert.h>
char* my_strcpy(char* dest, const char* str)//str加const确保str不被修改
{assert(dest);assert(str);char* ret = dest;while (*dest++ = *str++){;}return ret;
}
int main()
{char arr1[20] = "abc";char arr2[] = "hello word";printf("%s\n", my_strcpy(arr1, arr2));return 0;
}运行结果:hello word
2.2 strcat
2.2.1 strcat 函数介绍
char *strcat(char *dest, const char *src)
strcat 字符串追加函数,头文件是 #include <string.h>,把源字符串追加到目标字符串,在目标字符串的\0后处开始追加,遇到源字符串的\0停止追加。追加的时候会把源字符串的\0一起追加到目标字符串。
源字符串必须以 ‘\0’ 结束。
目标空间必须有足够的大,能容纳下源字符串的内容。
目标空间必须可修改。
strcat 不可以自己追加自己,容易出现死循环。

示例:

#include <stdio.h>
#include <string.h>
int main()
{char arr1[20] = "hello \0xxxxxxxx";char arr2[] = "word";strcat(arr1, arr2);printf("%s\n", arr1);return 0;
}运行结果: hello word
2.2.2 strcat 函数模拟
#include <stdio.h>
#include <string.h>
char* my_strcat(char* dest, const char* str)
{//1.找目标空间中的\0char* cur = dest;while (*cur != '\0'){cur++;}//2.拷贝源头数据到\0之后的空间while (*cur++ = *str++)  //*str++ 优先级都是一样的情况下,先右到左{;}return dest;
}
int main()
{char arr1[20] = "hello \0xxxxxxxx";char arr2[] = "word";printf("%s\n", my_strcat(arr1, arr2));return 0;
}运行结果:hello word 
2.3 strcmp
2.3.1 strcmp 函数介绍
extern int strcmp(const char *s1,const char *s2);
strcmp 是比较字符串的库函数,头文件是 #include <string.h>,比较的是对应位置上字符的大小(ASCII码值的大小)而非长度
标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字

示例:

#include <stdio.h>
#include <string.h>
int main()
{/*char arr1[] = "abcdef";char arr2[] = "abc";*//*char arr1[] = "abc";char arr2[] = "abcd";*/char arr1[] = "abc";char arr2[] = "abc";int ret = strcmp(arr1, arr2);if (ret > 0)printf("arr1>arr2\n");else if (ret < 0)printf("arr1<arr2\n");elseprintf("arr1==arr2\n");printf("%d\n", ret);return 0;
}//运行结束://等于 ret = 0 
2.3.2 strcmp 函数模拟实现
#include <stdio.h>
#include <string.h>
#include <assert.h>
//方法一
/*int my_strcmp(const char* s1, const char* s2)
{assert(s1 && s2);while (*s1 == s2){if (*s1 == '\0'){return 0;}*s1++;*s2++;}if (*s1 > *s2)return 1;elsereturn -1;
}*///方法二
int my_strcmp(const char* s1, const char* s2)
{assert(s1 && s2);while (*s1 == *s2){if (*s1 == '\0'){return 0;}s1++;s2++;}return *s1 - *s2;//返回两个字符ASCII相减的值
}int main()
{/*char arr1[] = "abcdef";char arr2[] = "abc";*/char arr1[] = "ad";char arr2[] = "aa";/*char arr1[] = "abc";char arr2[] = "abc";*/int ret = my_strcmp(arr1, arr2);if (ret > 0)printf("arr1>arr2\n");else if (ret < 0)printf("arr1<arr2\n");elseprintf("arr1==arr2\n");printf("%d\n", ret);return 0;
}//运行结果:arr1>arr23

3. 长度受限制的字符串函数介绍

3.1 strncpy 函数介绍
char *strncpy(char *destinin, char *source, int maxlen);
strncpy 的头文件是 #include <string.h>
拷贝num个字符从源字符串到目标空间。
如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加NULL,直到num个

示例:

#include <stdio.h>
#include <string.h>
int main()
{char arr1[20] = "abcdefrtjujghbv";char arr2[] = "xxxx12";char arr3[] = "qwertyuio";strncpy(arr1, arr2, 7);printf("%s\n", arr1);strncpy(arr1, arr3, 3);printf("%s\n", arr1);return 0;
}//运行结果:xxxx12qwex12
3.2 strncat 函数介绍
char * strncat(char *dest, const char *src, size_t n);
strncat 的头文件是 #include <string.h>
strncat 和 strncpy 的使用非常相似,strncat是追加num个字符从源字符串到目标空间。
strncat 追加完成后会自己添加\0。
strncat 可以自己追加自己

示例:

#include <stdio.h>
#include <string.h>
int main()
{char arr1[20] = "abcdef";char arr2[] = "xyz";strncat(arr1, arr2, 2);printf("%s\n", arr1);strncat(arr2, arr2, 5);printf("%s\n", arr2);return 0;
}//运行结果:abcdefxyxyzxyz
3.3 strncmp 函数介绍
int strncmp(const char *str1, const char *str2, size_t n)
strmcpy 的头文件是 #include <string.h>
strncmp 比较到出现另个字符不一样或者一个字符串结束或者num个字符全部比较完。
如果返回值 < 0,则表示 str1 小于 str2。
如果返回值 > 0,则表示 str2 小于 str1。
如果返回值 = 0,则表示 str1 等于 str2。

示例:

#include <stdio.h>
#include <string.h>
int main()
{char arr1[20] = "abcdef";char arr2[] = "abd";int ret = strcmp(arr1, arr2, 3);printf("%d\n", ret);return 0;
}//运行结果:
-1

4. 字符串查找

4.1 strstr
4.1.1 strstr 函数介绍
char * strstr ( const char *str1, const char * str2);
strstr 字符串查找函数,头文件是 #include <string.h>,在一个字符串中查找另外一个字符串是否存在,如果存在,则返回子串第一次出现的位置;不存在,则返回NULL。
如果找到了该子串,会从找到的地方开始输出

示例:

#include <stdio.h>
#include <string.h>
int main()
{char arr1[] = "abcdefabcdef";char arr2[] = "def";char* p = strstr(arr1, arr2);if (p == NULL){printf("不存在\n");}else{printf("%s\n", p);}return 0;
}//运行结果:defabcdef
4.1.2 strstr函数模拟实现
#include <stdio.h>
#include <string.h>
char* my_strstr(const char* str1, const char* str2)
{const char* s1 = str1;const char* s2 = str2;const char* p = str1;while (*p){s1 = p;s2 = str2;while ((*s1 != '\0') && (*s2 != '\0') && (*s1 == *s2)){s1++;s2++;}if (*s2 == '\0'){return (char*)p;//找到了}p++;}return NULL;//找不到子串
}
int main()
{char arr1[] = "abcdefabcdef";char arr2[] = "fab";char* p = my_strstr(arr1, arr2);if (p == NULL){printf("不存在\n");}else{printf("%s\n", p);}return 0;
}//运行结果:fabcdef	
4.2 strtok 函数介绍
char *strtok(char s[], const char *delim);
strtok 的头文件是 #include <string.h>
sep参数是个字符串,定义了用作分隔符的字符集合
第一个参数指定一个字符串,它包含了0个或者多个由sep字符串中一个或者多个分隔符分割的标记。
strtok函数找到str中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。(注:strtok函数会改变被操作的字符串,所以在使用strtok函数切分的字符串一般都是临时拷贝的内容并且可修改。)
strtok函数的第一个参数不为 NULL ,函数将找到str中第一个标记,strtok函数将保存它在字符串中的位置。
strtok函数的第一个参数为 NULL ,函数将在同一个字符串中被保存的位置开始,查找下一个标记。
如果字符串中不存在更多的标记,则返回 NULL 指针。

示例:

#include <stdio.h>
#include <string.h>
int main()
{char arr[] = "zhangsan@qq.com";char buf[100] = { 0 };strcpy(buf, arr);//将数据拷贝一份,处理buf中arr数组的内容const char* sep = "@.o";//sep定义了用作分隔符的字符集合char* str = NULL;for (str = strtok(buf, sep); str != NULL; str = strtok(NULL, sep)){printf("%s\n", str);}return 0;
}//运行结果:zhangsanqqcm

5. 字符分类函数

后续添加

6. 字符串转换函数

int tolower ( int c );
int toupper ( int c );转换函数把字母大写转换成字母小写;或者把字母小写转换成字母大写。
tolower 函数返回其参数对应的小写形式
toupper 函数返回其参数对应的大写形式
如果函数的参数并不是处于适当大小写状态的字符(即 toupper 的参数不是小写字母或者 tolower 的参数不是大写字母),函数将不修改参数直接返回。

示例:

后续添加

7. 内存操作函数

7.1 memcpy
7.1.1 memcpy函数介绍
void * memcpy ( void * destination, const void * source, size_t num );memcpy 是内存拷贝函数,头文件是 #include <string.h>;num的单位是字节。
函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。
这个函数在遇到 ‘\0’ 的时候并不会停下来。
如果source和destination有任何的重叠,复制的结果都是未定义的。
memcpy 的参数类型是void*可以接收任意类型的数据。

示例:

#include <stdio.h>
#include <string.h>
int main()
{int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };int arr2[10] = { 0};memcpy(arr2, arr1, 20);//把arr1的前20个字节的数拷贝到arr2里面去,一个int是4字节int i = 0;for (i = 0; i < 10; i++){printf("%d ", arr2[i]);}return 0;
}//运行结果:1 2 3 4 5 0 0 0 0 0
7.1.2 memcpy 函数模拟实现
#include <stdio.h>
#include <string.h>
#include <assert.h>
void* my_memcpy(void* dest, void* src, size_t num)
{void* ret = dest;assert(dest);assert(src);//断言,让dest和src不为空指针while (num--){*(char*)dest = *(char*)src;//一个字节一个字节的处理dest = (char*)dest + 1;src = (char*)src + 1;}return ret;
}
int main()
{int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };int arr2[10] = { 0};my_memcpy(arr2, arr1, 20);//把arr1的前20个字节的数拷贝到arr2里面去int i = 0;for (i = 0; i < 10; i++){printf("%d ", arr2[i]);}return 0;
}//运行结果:1 2 3 4 5 0 0 0 0 0
7.2 memmove
7.2.1 memmove 函数介绍
void * memmove ( void * destination, const void * source, size_t num );memmove和memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的。
memcpy 只需要实现不重叠的拷贝就可以了。
memmove 是需要实现重叠内存的拷贝。
如果源空间和目标空间出现重叠,就得使用memmove函数处理。

示例:

#include <stdio.h>
#include <string.h>
int main()
{int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };memmove(arr1+2, arr1, 20);int i = 0;for (i = 0; i < 10; i++){printf("%d ", arr1[i]);}return 0;
}//运行结束:1 2 1 2 3 4 5 8 9 10
7.2.2 函数模拟实现
#include <stdio.h>
#include <string.h>
#include <assert.h>
void* my_memmove(void* dest, void* src, size_t num)
{void* ret = dest;assert(dest);assert(src);//断言,让dest和src不为空指针if (dest < src)//1 前->后{while (num--){*(char*)dest = *(char*)src;//一个字节一个字节的处理dest = (char*)dest + 1;src = (char*)src + 1;}}else //2 3 后->前{while (num--){*((char*)dest + num) = *((char*)src + num);}}return ret;
}
int main()
{int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };my_memmove(arr1+2, arr1, 20);int i = 0;for (i = 0; i < 10; i++){printf("%d ", arr1[i]);}return 0;
}
7.3 memcmp 函数介绍
int memcmp(const void *str1, const void *str2, size_t n);memcmp 的头文件是 #include <string.h>
memcmp 比较从ptr1和ptr2指针开始的num个字节。一个字节一个字节比较。
str1-- 指向内存块的指针。
str2-- 指向内存块的指针。
n-- 要被比较的字节数。 
strcmp是比较字符大小,这个是比较字节大小。

示例:

#include <stdio.h>
#include <string.h>
int main()
{int arr1[] = { 1,2,3,4,5 };//01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00...int arr2[] = { 1,2,3,0,0 };//01 00 00 00 02 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00...int ret = memcmp(arr1, arr2, 13);printf("%d\n", ret);return 0;
}//运行结果:1
7.4 memset 函数介绍
void *memset(void *s, int ch, size_t n);memset 内存设置函数,头文件 #include <stdio.h>
将 ptr 设置为 value 值,num个字节。以字节为单位修改内存。
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法 [1]  。
memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度.

示例:

#include <stdio.h>
#include <string.h>
int main()
{int arr[5] = { 1,2,3,4,5 };memset(arr, 0, 9);int i = 0;for (i = 0; i < 5; i++){printf("%d ", arr[i]);}return 0;
}
7.4 memset 函数介绍
void *memset(void *s, int ch, size_t n);memset 内存设置函数,头文件 #include <stdio.h>
将 ptr 设置为 value 值,num个字节。以字节为单位修改内存。
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法 [1]  。
memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度.

示例:

#include <stdio.h>
#include <string.h>
int main()
{int arr[5] = { 1,2,3,4,5 };memset(arr, 0, 9);int i = 0;for (i = 0; i < 5; i++){printf("%d ", arr[i]);}return 0;
}

相关文章:

c_character_string 字符串----我认真的弄明白了,也希望你们也是。

字符串 1. 字符串长度strlen 1.1strlen 函数介绍 size_t strlen ( const char * str );strlen ——string length strlen 的头文件是 #include <string.h> 参数指向的字符串必须要以 ‘\0’ 结束。 strlen 是求字符串长度的函数&#xff0c;统计的是字符串中\0之前出现…...

spring面试题 一

一、为了降低Java开发的复杂性&#xff0c;Spring采取了那4种关键策略 基于POJO的轻量级和最小侵入性编程&#xff1b; 通过依赖注入和面向接口实现松耦合&#xff1b; 基于切面和惯例进行声明式编程&#xff1b; 通过切面和模板减少样板式代码。 二、Spring框架的核心&am…...

C++中char *,char a[ ]的特殊应用

1.数组的本质 数组是多个元素的集合&#xff0c;在内存中分布在地址相连的单元中&#xff0c;所以可以通过其下标访问不同单元的元素。 2.指针 指针也是一种变量&#xff0c;只不过它的内存单元中保存的是一个标识其他位置的地址。 3.字符串常量的本质是它的第一个字符的地…...

【Windows10】电脑副屏无法调节屏幕亮度?解决方法

先说下情况&#xff0c;本人对显示器不太懂&#xff0c;属于小白 这个副屏无法调节的问题出现也已经很久了&#xff0c;但是之前亮度适合就无所谓&#xff0c;今天突然按了之后很亮&#xff0c;于是就找问题。 第一步&#xff0c;我直接百度&#xff0c;遇事不决&#xff0c;百…...

Paper简读 - ProGen2: Exploring the Boundaries of Protein Language Models

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/128976102 ProGen2: Exploring the Boundaries of Protein Language Models ProGen2:探索蛋白质语言模型的边界Cumulative density:累积密度 Ligand:在生…...

leaflet 加载WKT数据(示例代码050)

第050个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载WKT文件,将图形显示在地图上。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其他来练习 文章目录 示例效果配置方式示例源代码(共67行…...

设计模式-组合模式和建筑者模式详解

一. 组合模式 1. 背景 在现实生活中&#xff0c;存在很多“部分-整体”的关系&#xff0c;例如&#xff0c;大学中的部门与学院、总公司中的部门与分公司、学习用品中的书与书包、生活用品中的衣月艮与衣柜以及厨房中的锅碗瓢盆等。在软件开发中也是这样&#xff0c;例如&…...

Pcap文件的magic_number

1. 简述 pcap文件头中的magicNum是来标识pcap文件文件头和包头字节序和应用是否一致的。 在标准情况下为0xa1b2c3d4。如果相反则说明需要调换字节序。 一般格式 Global Header Packet Header Packet Data Packet Header Packet Data ....pcap文件头格式 typedef struct pca…...

MDS75-16-ASEMI三相整流模块MDS75-16

编辑-Z MDS75-16在MDS封装里采用的6个芯片&#xff0c;是一款工业焊机专用大功率整流模块。MDS75-16的浪涌电流Ifsm为920A&#xff0c;漏电流(Ir)为5mA&#xff0c;其工作时耐温度范围为-40~150摄氏度。MDS75-16采用GPP硅芯片材质&#xff0c;里面有6颗芯片组成。MDS75-16的电…...

基本TCP编程

1. 基本概念 TCP (即传输控制协议) 是一种面向连接的传输层协议,它能提供高可靠性通信 (即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。 2. 通信流程解析 TCP 通信的流程与打电话的过程相似,以下以一对情侣打电话的过程来展示TCP的通信流程: 其中服务端 …...

【沁恒WCH CH32V307V-R1开发板读取板载温度实验】

【沁恒WCH CH32V307V-R1开发板读取板载温度实验】1. 前言2. 软件配置2.1 安装MounRiver Studio3. ADC项目测试3.1 打开ADC工程3.2 编译项目4. 下载验证4.1 接线4.2 演示效果5. 小结1. 前言 ADC 模块包含 2 个 12 位的逐次逼近型的模拟数字转换器&#xff0c;最高 14MHz 的输入时…...

学习SpringCloudAlibaba(二)微服务的拆分与编写

目录 一、单体架构VS微服务架构 1.单体架构 ​&#xff08;1&#xff09;.单体架构的优点 &#xff08;2&#xff09;.单体架构的缺点 2.微服务架构 &#xff08;1&#xff09;微服务的特性 &#xff08;2&#xff09;微服务架构图 &#xff08;3&#xff09;微服务的优点 …...

通过对HashMap的源码分析解决部分关于HashMap的问题

HashMap第一次分配多大的空间我们查看resize&#xff08;)中的源码所以当我们没有传入默认容量的参数的时候&#xff0c;默认容量是16当传进一个20的初始参数时&#xff0c;数组的容量是多大所以当我们传入20的参数&#xff0c;这时创建的容量是32&#xff08;2^5&#xff09;对…...

【无标题】

Windeployqt 打包,缺少DLL 的原因分析,解决方法 很多同学使用工具windeployqt进行打包发布后,运行exe文件时,还是会出现下图所示的系统错误提示,这种情况就表示相关的DLL 库文件没有被正确打包。可是windeployqt明确显示运行正常啊,难道是QT自家的windeployqt这个工具有…...

渗透测试 -- 网站信息收集

数据来源 01 网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件(web容器)、脚本语言&#xff08;php、java、...&#xff09;、数据库&#xff08;Mysql、...&#xff09;为什么要了解这些&#xff1f; 举个例子&#xff1a;发现了一…...

Windows 搭建ARM虚拟机 UOS系统

搭建环境安装虚拟机下载虚拟机QEMU&#xff0c;https://www.qemu.org/download/&#xff0c;目前最新版本是7.2.0。安装完成后&#xff0c;需要将qemu的安装路径设置到环境变量完成后运行cmd&#xff0c;测试环境变量配置完成。qemu-system-aarch64 --version如上截图所示&…...

day58每日温度_下一个更大元素1

力扣739.每日温度 题目链接&#xff1a;https://leetcode.cn/problems/daily-temperatures/ 思路 什么时候用单调栈呢&#xff1f; 通常是一维数组&#xff0c;要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置&#xff0c;此时我们就要想到可以用单调栈了…...

超清遥感影像语义分割处理

分割出城市中的垃圾堆场,遂寻找到了 UrbanAtlas 2012 database 这个数据集和对应的 baseline baseline IoU for class 1: 0.5667 IoU for class 2: 0.3504 IoU for class 3: 0.0001 IoU for class 4: 0.0002 IoU for class 5: 0.4121 IoU for class 6: 0.0204 IoU for cla…...

RabbitMQ安装及配置

目录1.下载和安装1.1 下载1.2. 安装1.3 测试1.4 卸载管理界面2.1 添加用户2.2 创建Virtual Hosts2.3. 设置权限1.下载和安装 1.1 下载 1.下载Erlang的rpm包 RabbitMQ是Erlang语言编写&#xff0c;所以Erang环境必须要有&#xff0c;注&#xff1a;Erlang环境一定要与RabbitMQ…...

网络协议(四):网络互联模型、物理层、数据链路层

网络协议系列文章 网络协议(一)&#xff1a;基本概念、计算机之间的连接方式 网络协议(二)&#xff1a;MAC地址、IP地址、子网掩码、子网和超网 网络协议(三)&#xff1a;路由器原理及数据包传输过程 网络协议(四)&#xff1a;网络互联模型、物理层、数据链路层 目录一、网…...

请问有没有关于数据预测的方法?

利用数据对未来进行预测分析&#xff0c;虽然不能百分百的准确预测&#xff0c;但是有数据理论支撑的趋势预测是客观可靠的。当数据分析的目的涉及未来决策时&#xff0c;就可以大胆使用预测的思路和方法&#xff0c;如企业明年的战略计划、销售计划等&#xff0c;这对企业而言…...

[CVPR 2021] Your “Flamingo“ is My “Bird“: Fine-Grained, or Not

Contents Your "Flamingo" is My "Bird"MethodCooperation or Confrontation?Disentanglement and ReinforcementExperimentDiscussionsReferencesYour “Flamingo” is My “Bird” 对于如下图片,FGVC 的目标是让模型识别出 “flamingo”,但对于大部分…...

clickHouse笔记

1、介绍 clickHouse将数据进行分成多个partition&#xff0c;多个CUP进行进行单条的Query&#xff0c;不适合qps特别高的查询场景&#xff1b;适应场景&#xff1a;处理过的&#xff0c;字段特别大的宽表&#xff0c;进行统计&#xff0c;查询&#xff0c;聚合等数据分析场景 …...

10.jQuery中请求预处理 $.ajaxPrefilter()

在使用jQuery发起请求的时候($.get(),$.post().$ajax()都可以)会默认在请求前调用$.ajaxPrefilter()这个函数&#xff0c;我们可以利用这个来做一些事情 目录 1 定义API根路径 2 添加请求头 3 添加请求结束的回调函数 1 定义API根路径 这样后面每次请求就不用再写根路…...

【黄啊码】浅谈PHP入门|如何学习PHP

大家好&#xff0c;我是黄啊码&#xff0c;很多小白问我&#xff0c;怎么入门PHP&#xff0c;甚至连PHP能干嘛都不知道&#xff0c;今天啊码就具体来讲讲。 什么是PHP PHP是一种开源的通用脚本语言&#xff0c;用于创建动态网页和应用程序。它可以运行在服务器端&#xff0c;…...

人大金仓数据库的归档日志

归档日志 归档日志是非活动的WAL日志备份。通过使用归档日志&#xff0c;可以保留所有WAL日志的历史记录&#xff0c;当数据库处于ARCHIVELOG模式并进行日志切换时&#xff0c;后台进程archiver process会将WAL日志的内容保存到归档日志中&#xff0c;当数据库出现介质失败时&…...

C++:类和对象(上)

文章目录1 面向过程与面向对象的初步认识2 类的引入3 类的定义4 类的访问限定符及封装4.1 访问限定符4.2 封装5 类的实例化6 类对象模型6.1 如何计算类的大小6.2 类对象的存储方式猜测7 this指针7.1 this指针的引出7.2 this指针的特性8 C语言和C栈&#xff08;Stack&#xff09…...

数据库 与 数据仓库的本质区别是什么?

当用计算机来处理数据的时候, 数据就需要存储和管理了。早期的数据, 就是用一个文件来实现的, 即是文件系统。随着处理的数据量增大, 发展到用数据库来管理和存储数据了。 数据库包括多媒体数据库、对象关系数据库和关系数据库。关系数据库管理系统,已经成为了事实上通用的数据…...

数据库实践LAB大纲 05 JDBC 连接

概述 Java DataBase Connectivity&#xff0c;Java 数据库连接 执行SQL的Java API 为多种关系型数据提供统一访问 FUNCTION 建立与数据库的连接向数据库发送 SQL 语句处理从数据库返回的结果 四种常见JDBC驱动程序 JDBC-ODBC Bridge drivernative-API, partly Java driver…...

Linux部署nuxt3

最近写了一个项目&#xff0c;需要打包部署&#xff0c;过程还是比较繁琐的&#xff0c;因为需要先配置运行环境。准备采用 pm2 管理项目运行&#xff0c;需要在服务器安装 pm2&#xff0c;而安装 pm2 的话用 npm 命令最方便&#xff0c;所以还要下载 node 环境。那么&#xff…...

做网站预付款是多少/怎么有自己的网站

紧接上一博客&#xff1a;https://blog.csdn.net/m0_37607945/article/details/106437625 从客户端日志中可以看到nacos注册成功&#xff0c;并且从日志可以看出相关类是&#xff1a; com.alibaba.cloud.nacos.registry.NacosServiceRegistry 并搜索日志&#xff0c;在对应行打…...

做品牌网站哪个好用/深圳百度seo培训

1、Windows平台 在windows命令行窗口下执行&#xff1a; C:/>netstat -ano 我们可以知道某一端口被那个进程&#xff08;对应PID&#xff09;占用&#xff1b; 然后我们可以打开任务管理器&#xff1b;查看某一PID对应的进程名&#xff1b; 如果PID没有显示&#xff0c;菜单…...

做网站较好的框架/长沙网站seo诊断

phpStudy在windows上配置php运行环境非常方便&#xff0c;使用简单省心。在本地调试wordpress网站&#xff0c;我就是用phpStudy来配置环境的&#xff0c;可是最近遇到一个烦心的事情&#xff0c;就是phpStudy一直运行良好&#xff0c;突然Apache和MySQL服务就启动不了。故障的…...

开原 铁岭网站建设/网络营销策划书包括哪些内容

原文地址&#xff1a;你必须知道的地理坐标系和投影坐标系 文章条理清晰&#xff0c;内容通俗易懂 还可以参考另一篇文章&#xff1a;GISer梳理的我国常用的坐标系及相关知识 1、基本概念 地理坐标系&#xff1a;为球面坐标。 参考平面地是椭球面&#xff0c;坐标单位&#xff…...

素材网站/搜索优化师

///代码还存在问题&#xff0c;稍后想一下/ 题目描述&#xff1a; * 小C在做一种特殊的服务器负载测试&#xff0c;对于一个请求队列中的请求&#xff0c; * 每一个请求都有一个负荷值&#xff0c;为了保证服务器稳定&#xff0c;请求队列 * 中的请求负荷必须按照先递增后递…...

网站的后台怎么做调查问卷/中山口碑seo推广

鉴于有些朋友会遇到Allegro17.2在allegro网标导入后&#xff0c;不能与原理图同步的情况&#xff0c;我们电子布局网在这里给出相关解决办法&#xff0c;希望对各位小伙伴有所帮助。 一、首先打开orcad cis&#xff0c;单击菜单栏 “Options”&#xff0c;在弹出的下拉菜单中单…...