C语言函数大全-- x 开头的函数(3)
C语言函数大全
本篇介绍C语言函数大全-- x 开头的函数
1. xdr_opaque
1.1 函数说明
| 函数声明 | 函数功能 |
|---|---|
bool_t xdr_opaque(XDR *xdrs, char *buf, u_int len); | 用于编码或解码任意长度的二进制数据 |
参数:
- xdrs : 指向
XDR数据结构的指针,表示要进行编码或解码的数据流- buf : 指向待编码或解码的二进制数据的指针
- len : 待编码或解码的二进制数据的长度(以字节为单位)
返回值:
- 如果编码或解码成功,则返回值为
TRUE;- 否则返回值为
FALSE。
1.2 演示示例
#include <stdio.h>
#include <stdlib.h>
#include <rpc/xdr.h>int main()
{// 编码数据char data[] = "hello, world!";XDR xdr;xdrmem_create(&xdr, NULL, 0, XDR_ENCODE);if (!xdr_opaque(&xdr, data, sizeof(data))) {printf("Error: failed to encode data.\n");exit(EXIT_FAILURE);}// 获取编码后的数据并打印char *encoded_data = malloc(xdr_getpos(&xdr));xdrmem_create(&xdr, encoded_data, xdr_getpos(&xdr), XDR_DECODE);printf("Encoded data: ");for (int i = 0; i < xdr_getpos(&xdr); ++i) {printf("%02x ", encoded_data[i]);}printf("\n");// 解码数据char decoded_data[sizeof(data)];if (!xdr_opaque(&xdr, decoded_data, sizeof(decoded_data))) {printf("Error: failed to decode data.\n");exit(EXIT_FAILURE);}printf("Decoded data: %s\n", decoded_data);return 0;
}
在上面的示例代码中,
- 首先,我们定义了一个字符串
"hello, world!"作为将要编码的数据,并创建了一个XDR结构体; - 然后,调用
xdrmem_create()函数初始化XDR结构体,使其可以从内存中读取和写入数据; - 接着,使用
xdr_opaque()函数对字符串进行编码,将其转换为 XDR 格式; - 再然后,获取编码后的数据并打印;其中,
- 我们先使用
xdr_getpos()函数获取已编码数据的长度; - 然后再使用
xdrmem_create()函数创建一个新的XDR结构体来解码它; - 最后,利用循环遍历编码后的数据并以十六进制形式打印出来。
- 我们先使用
- 再接着,使用
xdr_opaque()函数对编码后的数据进行解码; - 最后,打印解码后的数据。
2. xdr_opaque_auth
2.1 函数说明
| 函数声明 | 函数功能 |
|---|---|
bool_t xdr_opaque_auth(XDR *xdrs, struct opaque_auth *ap); | 用于编码或解码 认证信息 |
参数:
- xdrs : 指向
XDR结构体的指针,用于指定编解码的上下文- ap : 指向
opaque_auth结构体的指针,用于指定认证信息
返回值:
- 如果编码或解码成功,则返回值为
TRUE;- 否则返回值为
FALSE。
2.2 演示示例
2.2.1 opaque_auth
// 定义在 <rpc/auth.h>
struct opaque_auth {int oa_flavor; // 认证方式(authentication flavor)caddr_t oa_base; // 不透明数据u_int oa_length; // 数据长度
};
2.2.2 test.c
#include <stdio.h>
#include <stdlib.h>
#include <rpc/xdr.h>
#include <rpc/auth.h>int main()
{// 编码数据struct opaque_auth auth;auth.oa_flavor = AUTH_NONE;auth.oa_base = NULL;auth.oa_length = 0;XDR xdr;xdrmem_create(&xdr, NULL, 0, XDR_ENCODE);if (!xdr_opaque_auth(&xdr, &auth)) {printf("Error: failed to encode authentication information.\n");exit(EXIT_FAILURE);}// 获取编码后的数据并打印char *encoded_data = malloc(xdr_getpos(&xdr));xdrmem_create(&xdr, encoded_data, xdr_getpos(&xdr), XDR_DECODE);printf("Encoded data: ");for (int i = 0; i < xdr_getpos(&xdr); ++i) {printf("%02x ", encoded_data[i]);}printf("\n");// 解码认证信息struct opaque_auth decoded_auth;xdrmem_create(&xdr, encoded_data, xdr_getpos(&xdr), XDR_DECODE);if (!xdr_opaque_auth(&xdr, &decoded_auth)) {printf("Error: failed to decode authentication information.\n");exit(EXIT_FAILURE);}// 打印解码后的认证信息printf("Decoded authentication information:\n");printf("oa_flavor = %d\n", decoded_auth.oa_flavor);printf("oa_length = %u\n", decoded_auth.oa_length);return 0;
}
在上面的这个示例中,
- 首先,我们创建一个
opaque_auth结构体,并将其中的成员变量初始化。
注意: 由于使用的认证方式是
AUTH_NONE,也就是不需要任何认证信息;所以,oa_length成员变量被设置为0。在实际开发中,我们可能需要使用其他的认证方式,并相应地设置opaque_auth结构体的成员变量。】
-
然后,使用
xdrmem_create()函数创建一个XDR结构体,并将其指定为编码模式。 -
接着,调用
xdr_opaque_auth()函数对认证信息进行编码,并获取编码后的数据并打印出来【这里同 1.2 中,不再赘述】。 -
再然后,使用
xdrmem_create()函数创建一个新的XDR结构体,并将其指定为解码模式。 -
再接着,调用
xdr_opaque_auth()函数对编码后的认证信息进行解码,并通过访问opaque_auth结构体的成员变量来获取解码后的认证信息。 -
最后,打印解码后的认证信息。
3. xdr_pointer
3.1 函数说明
| 函数声明 | 函数功能 |
|---|---|
bool_t xdr_pointer(XDR *xdrs, char **objpp, u_int obj_size, xdrproc_t xdr_obj) | 用于编码和解码指针类型的数据 |
参数:
- xdrs : 指向要编码或解码数据的
XDR结构体的指针- objpp : 要编码或解码的数据的地址
- obj_size : 要编码或解码的数据的大小(以字节为单位)
- xdr_obj : 用于编码或解码指针所指向的数据
返回值:
- 如果编码或解码成功,则返回值为
TRUE;- 否则返回值为
FALSE。
关于 xdr_pointer() 函数的使用,参考如下:
-
对于编码操作,
xdr_pointer()函数将指针objpp所指向的数据编码到XDR流中。如果objpp为 NULL,则写入一个特殊的标志来表示空指针。如果objpp不为NULL,则先写入一个非零值来表示非空指针,然后调用指定的XDR编码程序对数据进行编码。 -
对于解码操作,
xdr_pointer()函数从XDR流中读取一些字节,并根据这些字节创建一个新的数据对象。如果读取的字节表示一个空指针,则将objpp设置为NULL。否则,将objpp设置为一个指向新对象的指针,并调用指定的XDR编码程序对数据进行解码。
3.2 演示示例
#include <stdio.h>
#include <rpc/xdr.h>int main()
{char buffer[1024];XDR xdrs;xdrmem_create(&xdr, buffer, sizeof(buffer), XDR_ENCODE); // 创建 XDR 流// 将指针编码为 XDR 流中的整数int pointer_value = 42;xdr_pointer(&xdrs, (char **)&pointer_value, sizeof(int), (xdrproc_t)xdr_int);// 打印编码后的值printf("Encoded value: %d\n", pointer_value);// 解码整数,还原指针xdr_setpos(&xdrs, 0);xdr_pointer(&xdrs, (char **)&pointer_value, sizeof(int), (xdrproc_t)xdr_int);// 打印解码后的指针值printf("Decoded value: %d\n", pointer_value);// 关闭流xdr_destroy(&xdrs);return 0;
}
在上面的示例代码中,
- 首先,我们创建了一个
XDR流对象xdrs,并将其绑定到buffer数组上; - 然后,使用
xdr_pointer()函数将 整数指针pointer_value写入流中;并输出pointer_value的值,这是编码后的整数; - 再接着,使用
xdr_setpos()函数将XDR流的位置设置为0; - 再然后,使用
xdr_pointer()函数从XDR流中解码整数值,并将其存储回pointer_value变量中;并输出pointer_value的值,这是解码后的整数指针; - 最后,使用
xdr_destroy()函数关闭并释放XDR流对象,并结束程序。
4. xdr_replymsg
4.1 函数说明
| 函数声明 | 函数功能 |
|---|---|
bool_t xdr_replymsg(XDR *xdrs, struct rpc_msg *msg); | 用于编码或解码应答消息 |
参数:
- xdrs : 指向要编码或解码数据的
XDR结构体的指针- msg : 指向要编码或解码的枚举类型数据的指针
返回值:
- 如果编码或解码成功,则返回值为
TRUE;- 否则返回值为
FALSE。
在使用 xdr_replymsg() 函数之前,需要设置好 rpc_msg 结构体中的各个字段。rpc_msg 结构体用于表示 RPC 消息,其中包括以下字段:
uint32_t xid:表示此消息的标识符。enum msg_type msg_type:表示消息类型,可以是CALL或REPLY。union rpc_body:表示RPC的主体部分,包括:call_body:表示CALL消息的主体部分,包括RPC的程序号、版本号和过程号,以及传递给该过程的参数。reply_body:表示REPLY消息的主体部分,包括返回值和可能的错误信息。
4.2 演示示例
#include <stdio.h>
#include <stdlib.h>
#include <rpc/xdr.h>int main()
{// 创建 XDR 流对象char buffer[1024];XDR xdrs;xdrmem_create(&xdrs, buffer, sizeof(buffer), XDR_ENCODE);// 设置 rpc_msg 结构体struct rpc_msg msg = {.xid = 12345, .msg_type = REPLY};msg.acpted_rply.ar_verf = AUTH_NULL;msg.acpted_rply.ar_results.where = (char *)"Success";msg.acpted_rply.ar_results.proc = (xdrproc_t)xdr_string;// 编码应答消息if (!xdr_replymsg(&xdrs, &msg)) {fprintf(stderr, "Failed to encode reply message\n");return 1;}// 打印编码后的结果printf("Encoded message: ");for (int i = 0; i < xdr_getpos(&xdrs); i++) {printf("%02x", buffer[i] & 0xff);}printf("\n");// 解码应答消息struct rpc_msg decoded_msg;if (!xdr_replymsg(&xdrs, &decoded_msg)) {fprintf(stderr, "Failed to decode reply message\n");return 1;}// 打印解码后的结果printf("Decoded message:\n");printf("XID: %d\n", decoded_msg.xid);printf("Message Type: %d\n", decoded_msg.msg_type);printf("Verf Flavor: %d\n", decoded_msg.acpted_rply.ar_verf.oa_flavor);printf("Verf Length: %d\n", decoded_msg.acpted_rply.ar_verf.oa_length);printf("Result:\n");char *result;if (!xdr_string(&xdrs, &result, sizeof(result))) {fprintf(stderr, "Failed to decode result string\n");return 1;}printf("%s\n", result);return 0;
}
在上面的这个示例程序中,
- 首先,创建一个
XDR流对象,并设置一个包含所需信息的rpc_msg结构体。 - 接着,使用
xdr_replymsg()函数将rpc_msg结构体编码为XDR格式。如果编码失败,则输出错误并退出程序。 - 然后,打印编码后的结果,以便查看序列化的数据。
- 再接着,使用
xdr_replymsg()函数将编码后的数据解码回rpc_msg结构体。如果解码失败,则输出错误并退出程序。 - 再然后,打印解码后的结果,包括事务
ID、消息类型、验证标志、结果等信息; - 最后,程序正常退出。
5. xdr_reference
5.1 函数说明
| 函数声明 | 函数功能 |
|---|---|
bool_t xdr_reference(XDR *xdrs, char **objp, u_int obj_size, xdrproc_t xdr_func); | 用于编码或解码一个指向某个对象的引用 |
参数:
- xdrs : 指向要编码或解码数据的
XDR结构体的指针- objp : 指向要编码或解码的某个指针对象的引用
- obj_size : 引用的指针对象的大小
- xdr_func : 指向 XDR 函数的指针,用于编码或解码 objp 所指向的数据对象
返回值:
- 如果编码或解码成功,则返回值为
TRUE;- 否则返回值为
FALSE。
5.2 演示示例
#include <stdio.h>
#include <stdlib.h>
#include <rpc/xdr.h>int main()
{// 创建 XDR 流对象char buffer[1024];XDR xdrs;xdrmem_create(&xdrs, buffer, sizeof(buffer), XDR_ENCODE);// 设置字符串指针char *str = "Hello, world!";// 编码字符串指针if (!xdr_reference(&xdrs, &str, strlen(str) + 1, (xdrproc_t)xdr_string)) {fprintf(stderr, "Failed to encode string reference\n");return EXIT_FAILURE;}// 打印编码后的结果printf("Encoded message: ");for (int i = 0; i < xdr_getpos(&xdrs); i++) {printf("%02x", buffer[i] & 0xff);}printf("\n");// 创建一个新的 XDR 流对象,并反序列化字符串指针XDR new_xdrs;xdrmem_create(&new_xdrs, buffer, sizeof(buffer), XDR_DECODE);char *decoded_str = NULL;if (!xdr_reference(&new_xdrs, &decoded_str, strlen(str) + 1, (xdrproc_t)xdr_string)) {fprintf(stderr, "Failed to decode string reference\n");return EXIT_FAILURE;}// 打印解码后的结果printf("Decoded message: %s\n", decoded_str);return EXIT_SUCCESS;
}
在上面的示例代码中,
- 首先,我们调用
xdrmem_create()函数创建了一个XDR流对象xdrs,并和buffer绑定; - 然后,定义了一个字符串指针
str并初始化为"Hello, world!"; - 接着,调用
xdr_reference()函数对str进行编码,并将结果存储到buffer中。如果编码成功,则打印出编码后的消息; - 再接着,调用
xdrmem_create()函数创建了一个新的XDR流对象new_xdrs,并和buffer绑定; - 再然后,调用
xdr_reference()函数解码decoded_str,并从new_xdrs对象中读取编码数据。如果解码成功,则打印出解码后的消息。 - 最后,程序正常退出。
6. xdr_rpc_gss_data
6.1 函数说明
| 函数声明 | 函数功能 |
|---|---|
bool_t xdr_rpc_gss_data(XDR * xdrs, rpc_gss_data * gd); | 用于编码或解码 RPC GSS 数据 |
参数:
- xdrs : 指向要编码或解码数据的
XDR结构体的指针- gd : 指向 rpc_gss_data 结构体的指针
返回值:
- 如果编码或解码成功,则返回值为
TRUE;- 否则返回值为
FALSE。
6.2 演示示例
#include <stdio.h>
#include <stdlib.h>
#include <rpc/rpc.h>
#include <rpc/auth_gss.h>int main()
{rpc_gss_data gd;XDR xdr;char buffer[1024];bool_t status;memset(&gd, 0, sizeof(gd));memset(&xdr, 0, sizeof(xdr));xdrmem_create(&xdr, buffer, sizeof(buffer), XDR_ENCODE);status = xdr_rpc_gss_data(&xdr, &gd);if (!status) {fprintf(stderr, "Serialization failed.\n");exit(1);}xdrmem_create(&xdr, buffer, sizeof(buffer), XDR_DECODE);status = xdr_rpc_gss_data(&xdr, &gd);if (!status) {fprintf(stderr, "Deserialization failed.\n");exit(1);}return 0;
}
7. xdr_rpcb
7.1 函数说明
| 函数声明 | 函数功能 |
|---|---|
bool_t xdr_rpcb(XDR *xdrs, struct rpcb *objp); | 用于编码和解码 RPCBIND 程序号和版本号,以及程序地址信息 |
参数:
- xdrs : 指向要编码或解码数据的
XDR结构体的指针- objp : 指向 rpcb 结构体的指针
返回值:
- 如果编码或解码成功,则返回值为
TRUE;- 否则返回值为
FALSE。
7.2 演示示例
// RPCBIND 程序号和版本号,以及程序地址
struct rpcb {char *r_progname;u_long r_progvers;struct netbuf r_addr;char *r_netid;
};
// 网络地址信息
struct netbuf {u_int maxlen;u_int len;char *buf;
};
#include <stdio.h>
#include <rpc/rpc.h>int main()
{struct rpcb rpcb_obj = {"my_program", 1, {0, 0, NULL}, "tcp"};XDR xdr;char buffer[1024];xdrmem_create(&xdr, buffer, sizeof(buffer), XDR_ENCODE);if (xdr_rpcb(&xdr, &rpcb_obj)) {printf("Serialization success!\n");} else {printf("Serialization failed!\n");}return 0;
}
8. xdr_short
8.1 函数说明
| 函数声明 | 函数功能 |
|---|---|
bool_t xdr_short(XDR *xdrs, short *sp); | 用于编码或解码短整型数据 |
参数:
参数:
- xdrs : 指向要编码或解码数据的
XDR结构体的指针- sp : 指向要编码或解码的
short类型数据的指针
返回值:
- 如果编码或解码成功,则返回值为
TRUE;- 否则返回值为
FALSE。
8.2 演示示例
#include <rpc/xdr.h>
#include <stdio.h>int main()
{XDR xdr;char buf[256];short num = 42;// 初始化 XDR 流结构体xdrmem_create(&xdr, buf, sizeof(buf), XDR_ENCODE);// 编组 short 类型变量if (!xdr_short(&xdr, &num)) {fprintf(stderr, "编组失败!\n");return 1;}// 重置流位置xdr_setpos(&xdr, 0);// 解组 short 类型变量short decoded_num;if (!xdr_short(&xdr, &decoded_num)) {fprintf(stderr, "解组失败!\n");return 1;}printf("编组的值:%d,解组的值:%d\n", num, decoded_num);return 0;
}
9. xdr_string
9.1 函数说明
| 函数声明 | 函数功能 |
|---|---|
bool_t xdr_string(XDR *xdrs, char **cpp, u_int maxsize); | 用于编码或解码字符串数据 |
参数:
- xdrs : 指向要编码或解码数据的
XDR结构体的指针- cpp : 指向要编码或解码的字符串数据的指针
- maxsize : 最大允许的字符串长度
返回值:
- 如果编码或解码成功,则返回值为
TRUE;- 否则返回值为
FALSE。
9.2 演示示例
#include <stdio.h>
#include <rpc/xdr.h>int main()
{char *str = "hello world!";char buf[1024];XDR xdrs;xdrmem_create(&xdrs, buf, sizeof(buf), XDR_ENCODE);if (!xdr_string(&xdrs, &str, strlen(str))) {printf("Serialization failed.\n");} else {printf("Serialized data:\n");for (int i = 0; i < xdr_getpos(&xdrs); i++) {printf("%02x ", buf[i]);}printf("\n");}return 0;
}
10. xdr_string_ptr
10.1 函数说明
| 函数声明 | 函数功能 |
|---|---|
bool_t xdr_string_ptr(XDR *xdrs, char **cpp, const uint_t maxsize); | 用于编码或解码指向字符串的指针 |
参数:
- xdrs : 指向要编码或解码数据的
XDR结构体的指针- cpp : 指向要编码或解码的字符串数据的指针
- maxsize : 最大允许的字符串长度
返回值:
- 如果编码或解码成功,则返回值为
TRUE;- 否则返回值为
FALSE。
10.2 演示示例
#include <stdio.h>
#include <rpc/xdr.h>int main()
{char str[50] = "Hello, world!";XDR xdrs;xdrmem_create(&xdrs, str, sizeof(str), XDR_ENCODE);xdr_string_ptr(&xdrs, &str, sizeof(str));printf("Encoded string: %s\n", str);char decoded_str[50];xdrmem_create(&xdrs, str, sizeof(str), XDR_DECODE);xdr_string_ptr(&xdrs, &decoded_str, sizeof(decoded_str));printf("Decoded string: %s\n", decoded_str);return 0;
}
相关文章:
C语言函数大全-- x 开头的函数(3)
C语言函数大全 本篇介绍C语言函数大全-- x 开头的函数 1. xdr_opaque 1.1 函数说明 函数声明函数功能bool_t xdr_opaque(XDR *xdrs, char *buf, u_int len);用于编码或解码任意长度的二进制数据 参数: xdrs : 指向 XDR 数据结构的指针,表…...
计算机图形学-GAMES101-12阴影
Shadow mapping 问题的提出 我们之前在进行着色时,对于每个物体仅考虑自己,而不考虑其他物体对它的影响。限定在光栅化中,如何解决阴影问题呢?阴影能被摄像机看到,但不能被光源所照亮。经典的Shadow mapping只能处理…...
iOS_Swift高阶函数
iOS_Swift高阶函数 #mermaid-svg-NxX1czIESDq47OQw {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NxX1czIESDq47OQw .error-icon{fill:#552222;}#mermaid-svg-NxX1czIESDq47OQw .error-text{fill:#552222;stroke:#…...
探索Vue的组件世界-组件复用
目录 Mixin【混入】 缺陷 HOC(higher order component)【高阶组件】 相比较Mixin的优点: 不足: Renderless组件【函数式组件,无渲染组件,Vue社区使用比较多的一种业务复用模式】 优点: M…...
OMA通道-2
1 简介 本文档中指定的 API 使移动应用程序能够访问移动设备中的不同 SE,例如 SIM 或嵌入式 SE。 本规范提供了接口定义和 UML 图,以允许在各种移动平台和不同的编程语言中实现。 如果编程语言支持命名空间,则它应为 org.simalliance.openmob…...
SAP 用CO13冲销工序报工,但是没有产生货物移动(TCODE:CO1P 、 SE38 :CORUPROC,CORUAFWP)
前言 通常情况下,对PPO做GI或GR的时候,出现的异常可以在COGI中间被列出;在这些数据进入COGI之前,系统会把这些数据记录在CO1P中;换句话说,系统有时会出现DB的更新延时,当延时发生的时候…...
信息收集-服务器信息
服务器上面可以运行大量的系统服务和第三方应用服务,如果操作系统或者第三方软件没有及时升级打补丁,攻击者就有可能直接通过服务器上运行的服务进行攻击。 服务器需要收集的信息包含三个方面: 操作系统信息等识别waf(Web应用程…...
连续签到积分兑换试用流量主小程序开发
每日签到积分兑换试用流量主小程序开发 打卡兑奖小程序。用户签到活得积分。积分可以兑换商品。观看激励视频广告可以积分翻倍。 用户可以参加试用商品活动参加试用需要提交信息。可以通过分享方式直接获取试用资格。 以下是流量主小程序的功能列表: 广告位管理&a…...
C语言—自定义类型(结构体、枚举、联合)
自定义类型 结构体结构体的声明特殊的声明结构的自引用结构体变量的定义和初始化结构体内存对齐修改默认对齐数offsetof宏 结构体传参 位段位段的定义(声明)位段的内存分配位段的跨平台问题位段的应用 枚举枚举类型的定义及使用枚举的优点 联合ÿ…...
Node.js博客项目开发思路笔记
博客项目介绍 1. 目标 开发一个博客系统,具备博客基本功能只开发 server 端,不关心前端 2. 需求 首页、作者页、博客详情页登陆页管理中心、新建页、编辑页 3. 技术方案 数据如何存储 博客 idtitlecontentcreatetimeauthor1标题 1内容 11111112z…...
python 之 shutil 文件的复制、删除、移动文件以及目录,并支持文件的归档、压缩和解压
一、shutil shutil 模块于文件和文件集合的高级操作,包括:复制、删除、移动文件以及目录,并支持文件的归档、压缩和解压等 二、使用例子 复制文件及权限 shutil.copy(src, dst)复制文件及权限;src 和 dst 文件路径。dst 文件名或…...
jface
JFace 是建立在 SWT 之上的 UI 部件,它是 SWT 的扩展并能和SWT交互。 ApplicationWindow和Action org.eclipse.jface.window.ApplicationWindow; JFace为了简化窗口的设计特别设计了类,比如ApplicationWindow这一个类,它里面包含了六个默认…...
六级备考28天|CET-6|听力第一讲|基本做题步骤与方法|13:30~14:30
目录 1. 重点词汇 proofread / ˈpruːfriːd / v.校对,校阅 autonomous adj.独立的 obsession n. 喜好 ample …...
系统设计 - 设计一个速率限制器
实施速率限制器的位置主要取决于我们的应用程序、技术栈、技术团队等因素。通常有三个位置可供选择:客户端、服务器端或中间件。 客户端是不可靠的地方来执行速率限制,因为恶意行为者可以轻易伪造客户端请求。 比将速率限制器放在服务器端更好的方法是使…...
[技术分享]Android平台实时音视频录像模块设计之道
实现背景 录像有什么难的?无非就是数据过来,编码保存mp4而已,这可能是好多开发者在做录像模块的时候的思考输出。是的,确实不难,但是做好,或者和其他模块有非常好的逻辑配合,确实不容易。 好多…...
JDKMissionControl官方用户指南--人工翻译
1. JMC8新增功能 暂时用不到,暂略 2. JDK Mission Control是什么 JMC是一组高级工具,用于管理、监视、分析Java应用程序并排除其故障。JMC能够对代码性能、内存和延迟等领域进行高效而详细的数据分析,而不会引入通常与分析和监控工具相关的…...
MySql-高级(分库分表问题简析) 学习笔记
文章目录 1. 为什么要分库分表?2. 用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?3. 你们具体是如何对数据库如何进行垂直拆分或水平拆分的?4. 分库分表时,数据迁移方案5. 如何设计可以动态扩容缩容…...
【5.20】五、安全测试——安全测试工具
目录 5.4 常见的安全测试工具 1. Web漏洞扫描工具——AppScan 2. 端口扫描工具——Nmap 3. 抓包工具——Fiddler 4. Web渗透测试工具——Metasploit 小提示:Kali Linux 5.4 常见的安全测试工具 安全测试是一个非常复杂的过程,测试所使用到的工具也…...
【13900k】i9 核显升级驱动
这里写自定义目录标题 官方的助手不能用显卡控制中心提示最新的更新搜索显卡 intel uhd graphics 770 手动下载安装自定义音频为啥也要卸载?新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片…...
使用Python将绿色转换为红色、红色转换为蓝色的图像处理
使用Python将绿色转换为红色、红色转换为蓝色的图像处理 在图像处理中,我们经常需要对图像进行颜色转换和修改。本篇博客介绍了如何使用Python的Pillow库来读取一个文件夹中的所有图像,并将其中的绿色转换为红色,红色转换为蓝色。我们还展示…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
