(1)字符串拷贝strcpy() #include
char*strcpy(char*dest,const char*src);【前面不能加const】
功能:把src所指向的字符串复制到dest所指向的空间中,’\0’也会拷贝过去。
参数: dest——目的字符串首地址
src——源字符首地址
返回值: 成功——返回dest字符串首地址
失败——NULL
*注意:如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况。
(2)字符串有限拷贝strncpy() #include
char*strncpy(char*dest,char*src,size_t n);
功能:把src指向字符串的前n个字符复制到dest所指向的空间中,是否拷贝结束符看指定的长度是否包含’\0’。
参数:dest——目的字符串首地址 (n>0)
src——源字符首地址 n——指定需要拷贝字符串个数
返回值: 成功——返回dest字符串首地址
失败——NULL
自定义:1)数组版
3)指针进阶版
4)
(3).字符串追加strcat() #include
char*strcat(char*dest,const char*src);
功能:将src字符串连接到dest尾部,’\0’也会追加过去。
参数: dest——目的字符串首地址
src——源字符首地址
返回值: 成功——返回dest字符串首地址 失败——NULL
自定义:
(4)字符串有限追加strncat() #include
char*strncat(char*dest,const char*src,size_t n);
功能:将src字符串前n个字符连接到dest尾部,’\0’也会追加过去。
参数:dest——目的字符串首地址
src——源字符首地址 n——指定需要追加字符串个数
返回值:成功——返回dest字符串首地址
失败——NULL
自定义:
(5)字符串比较strcmp() #include
int strcmp(const char*s1,const char*s2);
功能:比较s1和s2的大小(字符ASCII码大小)
参数:s1——字符串1首地址 s2——字符串2首地址
返回值:相等——0 小于——<0
大于——>0在不同操作系统结果会不同,返回ASCII差值
自定义:
(6)字符串有限比较strncmp() #include
int strncmp(const char*s1,const char*s2,size_t n);
功能:比较s1和s2前n个字符的大小(字符ASCII码大小)
参数:s1——字符串1首地址 s2——字符串2首地址
n——指定比较字符串个数
返回值:相等——0 小于——<0 大于——>0
ping命令的工作原理
(1)功能:确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等。
(2)ICMP 报文封装在 IP 包里,工作在网络层,是 IP 协议的助手。
ICMP 包头的类型字段:诊断的查询消息「查询报文类型」/
和通知出错原因的错误消息「差错报文类型」
(3)回送消息:用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的,ping 命令就是利用这个消息实现的。
可以向对端主机发送回送请求的消息(ICMP Echo Request Message,类型 8),也可以接收对端主机发回来的回送应答消息(ICMP Echo Reply Message,类型 0)。
相比原生的 ICMP,这里多了两个字段:
标识符:用以区分是哪个应用程序发 ICMP 包,比如用进程 PID 作为标识符;
序号:序列号从 0 开始,每发送一次新的回送请求就会加 1, 可以用来确认网络包是否有丢失。
*在选项数据中,ping 还会存放发送请求的时间值,来计算往返时间,说明路程的长短。
(4)ICMP 差错报文的例子:
目标不可达消息 —— 类型 3
6种:网络不可达代码为 0、主机不可达代码为 1、协议不可达代码为 2、端口不可达代码为 3、需要进行分片但设置了不分片位代码为 4
原点抑制消息 —— 类型 4
路由器向 IP 包的源地址发送一个 ICMP 原点抑制消息,从而缓和在使用低速广域线路的情况下,连接 WAN 的路由器可能会遇到网络拥堵的问题。(由于这种可能会引起不公平的网络通信,一般不被使用。)
重定向消息 —— 类型 5
如果路由器发现发送端主机使用了「不是最优」的路径发送数据,那么它会返回一个 ICMP 重定向消息给这个主机,包含了最合适的路由信息和源数据。(路由器持有更好的路由信息的情况下)
超时消息 —— 类型 11
P 包中有一个字段叫做 TTL (Time To Live,生存周期),它的值随着每经过一次路由器就会减 1,直到减到 0 时该 IP 包会被丢弃。
此时,IP 路由器将会发送一个 ICMP 超时消息给发送端主机,并通知该包已被丢弃。
设置 IP 包生存周期的主要目的,是为了在路由控制遇到问题发生循环状况时,避免 IP 包无休止地在网络上被转发。
ping 命令执行的时候,源主机首先会构建一个 ICMP 回送请求消息数据包。
ICMP 数据包内包含多个字段,最重要的是类型+序号。
ICMP 协议将这个数据包连同地址 192.168.1.2 一起交给 IP 层。IP 层将以 192.168.1.2 作为目的地址,本机 IP 地址作为源地址,协议字段设置为 1 表示是 ICMP 协议,加上一些其他控制信息,构建一个 IP 数据包。
接下来加入 MAC 头。在本地 ARP 映射表中找出192.168.1.2对应的 MAC 地址——可以直接使用/发送 ARP 协议查询 MAC 地址。
获得MAC 地址后,由数据链路层构建一个数据帧,目的地址是 IP 层传过来的 MAC 地址,源地址则是本机的 MAC 地址;还要附加上一些控制信息,依据以太网的介质访问规则,将它们传送出去。
主机B收到数据帧后:
检查目的MAC地址,和本机的MAC地址对比,符合接受/不符合丢弃——检查数据帧,提取IP数据包,交给本机IP层——IP层检查后,将有用的信息提取并交给ICMP协议——主机B构建ICMP 回送响应消息数据包(回送响应数据包的类型字段为 0,序号为接收到的请求数据包中的序号)——再发送出去给主机 A。
规定的时间内:源主机没有接到 ICMP 的应答包——目标主机不可达/接收到了 ICMP 回送响应消息——目标主机可达。
此时,源主机会检查,用当前时刻减去该数据包最初从源主机上发出的时刻,就是 ICMP 数据包的时间延迟。
1.分类
模型训练服务、模型部署服务和模型调用服务。
(1)模型训练服务提供了一种可扩展的方式来训练机器学习模型,允许用户通过上传数据和配置参数来训练自己的机器学习模型。
(2)模型部署服务允许用户将训练好的模型部署到云端或本地设备上,以便进行测试和生产环境中的应用。
(3)模型调用服务允许用户通过 API接口调用已部署的模型,以便进行实时预测或批处理处理。
2.优点
(1)简化了机器学习模型的开发和部署,提高了产品上线的速度和效率;
(2)降低了机器学习模型开发和部署的成本,因为用户无需拥有自己的硬件设备或专业技能允许用户专注于业务逻辑,而不必关注底层的技术细节。
(3)Maas已经成为了人工智能和机器学习领域的热门趋势之一,它将对多个行业产生广泛的影响,如医疗保健、金融、零售、自动驾驶等。
c语言知识来源:黑马程序员
图解网络来源:小林coding
行业信息来源:知乎