news 2026/5/10 2:01:39

CANN/hixl HIXL CS接口说明

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/hixl HIXL CS接口说明

HIXL CS 接口说明

【免费下载链接】hixlHIXL(Huawei Xfer Library)是一个灵活、高效的昇腾单边通信库,面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品x
Atlas A2 训练系列产品/Atlas A2 推理系列产品x

HixlStatus与返回码

接口返回码类型与常量。

typedef uint32_t HixlStatus; static const uint32_t HIXL_SUCCESS = 0U; static const uint32_t HIXL_PARAM_INVALID = 103900U; static const uint32_t HIXL_TIMEOUT = 103901U; static const uint32_t HIXL_FAILED = 503900U;

具体错误码含义如下。

枚举值含义是否可恢复解决办法
HIXL_SUCCESS成功不涉及。
HIXL_PARAM_INVALID参数错误基于日志排查错误原因。
HIXL_TIMEOUT处理超时保留现场,获取Host/Device日志,并备份。
HIXL_FAILED通用失败保留现场,获取Host/Device日志,并备份。

句柄类型

句柄类型定义。

typedef void *HixlServerHandle; typedef void *HixlClientHandle; typedef void *CompleteHandle; typedef void *MemHandle;

结构体说明

以下是CS API中使用到的结构体定义。

HixlServerConfig

Server配置保留字段,用于未来扩展。

struct HixlServerConfig { uint8_t reserved[128] = {}; };

HixlClientConfig

Client配置保留字段,用于未来扩展。

struct HixlClientConfig { uint8_t reserved[128] = {}; };

HixlClientDesc

Client描述信息。

struct HixlClientDesc { const EndpointDesc *local_endpoint; const EndpointDesc *remote_endpoint; const char *server_ip; uint32_t server_port; uint8_t tc; uint8_t sl; uint8_t reserved[98] = {}; };

字段说明:

字段类型描述
local_endpointconst EndpointDesc*本端Endpoint描述(定义见 https://gitcode.com/cann/hcomm/blob/master/include/hcomm_res_defs.h )。
remote_endpointconst EndpointDesc*远端Endpoint描述(定义见 https://gitcode.com/cann/hcomm/blob/master/include/hcomm_res_defs.h )。
server_ipconst char*目标 server Host IP。
server_portuint32_t目标 server Host 端口。
tcuint8_tRDMA网卡的traffic class。
sluint8_tRDMA网卡的service level。
reserveduint8_t[98]HixlClientDesc配置保留字段,用于未来扩展,结构体总大小保持为128字节。

HixlServerDesc

Server 描述信息。

struct HixlServerDesc { const EndpointDesc *endpoint_list; const char *server_ip; uint32_t server_port; uint32_t endpoint_list_num; uint8_t reserved[104] = {}; };

字段说明:

字段类型描述
server_ipconst char*侦听 IP。
server_portuint32_t侦听端口。
endpoint_listconst EndpointDesc*Endpoint描述数组指针。Endpoint描述定义见 https://gitcode.com/cann/hcomm/blob/master/include/hcomm_res_defs.h
endpoint_list_numuint32_tEndpoint数量。
reserveduint8_t[104]HixlServerDesc配置保留字段,用于未来扩展,结构体总大小保持为128字节。

HixlOneSideOpDesc

单向操作描述(用于批量put/get)。

struct HixlOneSideOpDesc { void *remote_buf; void *local_buf; uint64_t len; };

字段说明:

字段类型描述
remote_bufvoid*远端(server)数据地址。
local_bufvoid*本端(client)数据地址。
lenuint64_t传输长度(字节)。

Put 与 Get 对HixlOneSideOpDesc的语义:

  • BatchPut(同步/异步):数据从local_buf拷贝到remote_buf,长度为len
  • BatchGet(同步/异步):数据从remote_buf拷贝到local_buf,长度为len

枚举

异步任务完成状态定义:

enum HixlCompleteStatus { HIXL_COMPLETE_STATUS_WAITING, HIXL_COMPLETE_STATUS_COMPLETED, HIXL_COMPLETE_STATUS_TIMEOUT, HIXL_COMPLETE_STATUS_FAILED }; 说明: 其中HIXL_COMPLETE_STATUS_TIMEOUT和HIXL_COMPLETE_STATUS_FAILED当前为预留字段。

接口说明

每个接口包含:函数功能、函数原型、参数说明、返回值、调用示例与约束说明。

HixlCSServerCreate

函数功能

创建并初始化Server实例。

函数原型

HixlStatus HixlCSServerCreate(const HixlServerDesc *server_desc, const HixlServerConfig *config, HixlServerHandle *server_handle);

参数说明

参数名输入/输出描述
server_desc输入Server 描述信息,包含侦听 IP/端口与端点列表。
config输入server配置,预留配置,暂未使用。
server_handle输出返回创建的 HixlServerHandle。

返回值

  • HIXL_SUCCESS:成功
  • HIXL_PARAM_INVALID:参数错误
  • 其他:失败或错误码(见常量)。

约束说明

  • 如果使用本地device的Endpoint,调用该接口前需要先调用“aclrtSetDevice”。
  • 调用失败时server_handle不保证有效。

HixlCSServerRegMem

函数功能

Server注册共享内存供Client访问。

函数原型

HixlStatus HixlCSServerRegMem(HixlServerHandle server_handle, const char *mem_tag, const CommMem *mem, MemHandle *mem_handle);

参数说明

参数名输入/输出描述
server_handle输入Server 实例句柄。
mem_tag输入内存标签字符串,用于标识此内存,可选,可传入为NULL。
mem输入指向 CommMem,描述内存位置与大小(定义见 https://gitcode.com/cann/hcomm/blob/master/include/hcomm_res_defs.h )。
mem_handle输出返回的内存句柄,用于后续注销。

返回值

  • HIXL_SUCCESS:注册成功
  • HIXL_PARAM_INVALID:参数错误
  • 其他:失败

约束说明

  • 在client调用HixlCSClientConnect与本端建链之前需要完成所有本地内存的注册。
  • 使用host RoCE网卡当前不支持注册“aclrtMallocHost”申请出来的内存,可使用malloc等方式。
  • 注册Device内存使用“aclrtMalloc”进行申请。

HixlCSServerListen

函数功能

启动 Server 侦听,接受来自 Client 的连接。

函数原型

HixlStatus HixlCSServerListen(HixlServerHandle server_handle, uint32_t backlog);

参数说明

参数名输入/输出描述
server_handle输入Server 实例句柄。
backlog输入连接队列最大长度。

返回值

  • HIXL_SUCCESS:成功
  • HIXL_PARAM_INVALID:参数错误
  • 其他:失败

约束说明

在client调用HixlCSClientConnect与本端建链之前需要完成侦听。

HixlCSServerUnregMem

函数功能

注销之前注册的内存。

函数原型

HixlStatus HixlCSServerUnregMem(HixlServerHandle server_handle, MemHandle mem_handle);

参数说明

参数名输入/输出描述
server_handle输入Server 实例句柄。
mem_handle输入需注销的内存句柄(HixlCSServerRegMem 返回)。

返回值

  • HIXL_SUCCESS:成功
  • HIXL_PARAM_INVALID:参数错误
  • 其他:失败

约束说明

确保远端不再访问该内存后,且与当前server建链的client均断链以后再注销。

HixlCSServerDestroy

函数功能

销毁 Server 实例并释放相关资源。

函数原型

HixlStatus HixlCSServerDestroy(HixlServerHandle server_handle);

参数说明

参数名输入/输出描述
server_handle输入Server 实例句柄。

返回值

  • HIXL_SUCCESS:成功
  • HIXL_PARAM_INVALID:参数错误
  • 其他:失败

约束说明

  • 需要和HixlCSServerCreate配对使用。
  • 建议在调用HixlCSServerDestroy前,链路进行断链以及对注册的内存进行解注册。
  • Server需要等所有Client完成断链后调用该接口,如果Server提前退出,Client断链以及数据传输过程会发生报错。
  • 当Client需要操作Server端地址进行远端读写,Server端需要等Client完成远端读写之后才调用该接口;否则会出现失败。
  • 该接口不能和其他接口并发调用。

HixlCSClientCreate

函数功能

创建 Client 实例并初始化本端资源。

函数原型

HixlStatus HixlCSClientCreate(const HixlClientDesc *client_desc, const HixlClientConfig *config, HixlClientHandle *client_handle);

参数说明

参数名输入/输出描述
client_desc输入Client 描述,包含 server IP/port 与端点。
config输入client配置,预留配置,暂未使用。
client_handle输出返回创建的客户端句柄。

返回值

  • HIXL_SUCCESS:成功
  • HIXL_PARAM_INVALID:参数错误
  • 其他:失败

约束说明

  • 如果使用本地device的Endpoint,调用该接口前需要先调用“aclrtSetDevice”。
  • 调用失败时client_handle不保证有效。

HixlCSClientConnect

函数功能

发起与 Server 的同步建链(阻塞直到成功或超时)。

函数原型

HixlStatus HixlCSClientConnect(HixlClientHandle client_handle, uint32_t timeout_ms);

参数说明

参数名输入/输出描述
client_handle输入客户端句柄。
timeout_ms输入连接超时时间(毫秒)。

返回值

  • HIXL_SUCCESS:连接成功
  • HIXL_PARAM_INVALID:参数错误
  • HIXL_TIMEOUT:连接超时
  • 其他:失败

约束说明

  • 调用当前接口与server建链前,需要完成所有本地内存的注册。
  • 调用当前接口与server建链前,需要确保server已经处于侦听状态。
  • 调用当前接口建链后,需要调用HixlCSClientGetRemoteMem接口,确保远端内存描述信息交换至本地。

HixlCSClientGetRemoteMem

函数功能

获取 Server 已注册的内存信息。

函数原型

HixlStatus HixlCSClientGetRemoteMem(HixlClientHandle client_handle, CommMem **remote_mem_list, char ***mem_tag_list, uint32_t *list_num, uint32_t timeout_ms);

参数说明

参数名输入/输出描述
client_handle输入客户端句柄。
remote_mem_list输出返回的CommMem数组指针,内存生命周期由接口内部管理。重复调用该接口,将释放上一次申请的内存,如有需要按需拷贝至本地内存(定义见 https://gitcode.com/cann/hcomm/blob/master/include/hcomm_res_defs.h)。
mem_tag_list输出字符串数组,对应每个CommMem的标签,内存生命周期由接口内部管理。重复调用该接口,将释放上一次申请的内存,如有需要按需拷贝至本地内存。
list_num输出返回的列表长度,内存生命周期由接口内部管理。重复调用该接口,将释放上一次申请的内存,如有需要按需拷贝至本地内存。
timeout_ms输入请求超时时间(毫秒)。

返回值

  • HIXL_SUCCESS:成功
  • HIXL_PARAM_INVALID:参数错误
  • 其他:失败或超时

约束说明

  • 输出参数内存生命周期由接口内部管理。重复调用该接口,将释放上一次申请的内存,如有需要按需拷贝至本地内存。
  • 调用HixlCSClientConnect接口后,需要调用当前接口,确保远端内存描述信息交换至本地。

HixlCSClientRegMem

函数功能

Client 注册本地内存。

函数原型

HixlStatus HixlCSClientRegMem(HixlClientHandle client_handle, const char *mem_tag, const CommMem *mem, MemHandle *mem_handle);

参数说明

参数名输入/输出描述
client_handle输入客户端句柄。
mem_tag输入内存标签字符串。
mem输入CommMem描述。
mem_handle输出返回的内存句柄。

返回值

  • HIXL_SUCCESS:成功
  • HIXL_PARAM_INVALID:参数错误
  • 其他:失败

约束说明

  • 在调用HixlCSClientConnect与server端建链之前需要完成所有本地内存的注册。
  • 使用host RoCE网卡当前不支持注册“aclrtMallocHost”申请出来的内存,可使用malloc等方式。
  • 注册Device内存使用“aclrtMalloc”进行申请。

HixlCSClientUnregMem

函数功能

注销 Client 注册的内存。

函数原型

HixlStatus HixlCSClientUnregMem(HixlClientHandle client_handle, MemHandle mem_handle);

参数说明

参数名输入/输出描述
client_handle输入客户端句柄。
mem_handle输入要注销的内存句柄。

返回值

  • HIXL_SUCCESS:成功
  • HIXL_PARAM_INVALID:参数错误
  • 其他:失败

约束说明

确保本地不再访问该内存后,且与server均断链以后再注销。

HixlCSClientBatchPutAsync

函数功能

异步批量向Server写多组数据。

函数原型

HixlStatus HixlCSClientBatchPutAsync(HixlClientHandle client_handle, uint32_t list_num, const HixlOneSideOpDesc *desc_list, CompleteHandle *complete_handle);

参数说明

参数名输入/输出描述
client_handle输入客户端句柄。
list_num输入子任务条数,须大于 0;为 0 时返回HIXL_PARAM_INVALID
desc_list输入指向HixlOneSideOpDesc数组,长度为list_numlist_num > 0时不可为 NULL。每项为local_buf → remote_buflen为字节数。
complete_handle输出返回的完成句柄,用于用户异步查询任务状态,当查询成功后,将自动释放相关资源。不可为 NULL。

返回值

  • HIXL_SUCCESS:任务提交成功(不代表完成)
  • HIXL_PARAM_INVALID:参数错误
  • 其他:提交失败

约束说明

最大支持4K个数据并发传输,下发任务后需及时调用HixlCSClientQueryCompleteStatus接口查询任务状态。

HixlCSClientBatchGetAsync

函数功能

异步批量从Server读多组数据到本地。

函数原型

HixlStatus HixlCSClientBatchGetAsync(HixlClientHandle client_handle, uint32_t list_num, const HixlOneSideOpDesc *desc_list, CompleteHandle *complete_handle);

参数说明

参数名输入/输出描述
client_handle输入客户端句柄。
list_num输入子任务条数,须大于 0;为 0 时返回HIXL_PARAM_INVALID
desc_list输入指向HixlOneSideOpDesc数组,长度为list_numlist_num > 0时不可为 NULL。每项为remote_buf → local_buflen为字节数。
complete_handle输出返回的完成句柄,用于用户异步查询任务状态,当查询成功后,将自动释放相关资源。不可为 NULL。

返回值

  • HIXL_SUCCESS:任务提交成功(不代表完成)
  • HIXL_PARAM_INVALID:参数错误
  • 其他:提交失败

约束说明

最大支持4K个数据并发传输,下发任务后需及时调用HixlCSClientQueryCompleteStatus接口查询任务状态。

HixlCSClientBatchPutSync

函数功能

同步批量向 Server 写入多组数据:在整批传输完成、超时或失败前阻塞当前线程,不返回CompleteHandle

函数原型

HixlStatus HixlCSClientBatchPutSync(HixlClientHandle client_handle, uint32_t list_num, const HixlOneSideOpDesc *desc_list, uint32_t timeout_ms);

参数说明

参数名输入/输出描述
client_handle输入客户端句柄,不可为 NULL。
list_num输入子任务条数,须大于 0;为 0 时返回HIXL_PARAM_INVALID
desc_list输入长度为list_numHixlOneSideOpDesc数组;list_num > 0时不可为 NULL。数据方向为local_buf(源)→ remote_buf(目标)len为每次传输的字节数。
timeout_ms输入整批任务的总等待超时(毫秒)。超时返回HIXL_TIMEOUT。Host 端实现为轮询等待完成;Device 端为流同步超时预算。

返回值

  • HIXL_SUCCESS:整批传输已完成
  • HIXL_PARAM_INVALID:参数错误(如list_num == 0desc_list非法、client_handle为 NULL 等)
  • HIXL_TIMEOUT:在timeout_ms内未完成
  • 其他:传输或内部错误(见日志与HixlStatus码)

约束说明

  • 调用前须已完成与 Server 的建链(如HixlCSClientConnect),且desc_list中的地址须为已注册/已通过HixlCSClientGetRemoteMem等途径获得的合法单边访问地址。
  • 与异步接口相同,建议关注最大并发子任务规模等限制(参见异步批量接口说明)。

HixlCSClientBatchGetSync

函数功能

同步批量从 Server 读取多组数据到本地:在整批传输完成、超时或失败前阻塞当前线程,不返回CompleteHandle

函数原型

HixlStatus HixlCSClientBatchGetSync(HixlClientHandle client_handle, uint32_t list_num, const HixlOneSideOpDesc *desc_list, uint32_t timeout_ms);

参数说明

参数名输入/输出描述
client_handle输入客户端句柄,不可为 NULL。
list_num输入子任务条数,须大于 0;为 0 时返回HIXL_PARAM_INVALID
desc_list输入长度为list_numHixlOneSideOpDesc数组;list_num > 0时不可为 NULL。数据方向为remote_buf(源)→ local_buf(目标)len为每次传输的字节数。
timeout_ms输入整批任务的总等待超时(毫秒)。超时返回HIXL_TIMEOUT。Host 端实现为轮询等待完成;Device 端为流同步超时预算。

返回值

  • HIXL_SUCCESS:整批传输已完成
  • HIXL_PARAM_INVALID:参数错误(如list_num == 0desc_list非法、client_handle为 NULL 等)
  • HIXL_TIMEOUT:在timeout_ms内未完成
  • 其他:传输或内部错误(见日志与HixlStatus码)

约束说明

  • 调用前须已完成与 Server 的建链(如HixlCSClientConnect),且desc_list中的地址须为已注册/已通过HixlCSClientGetRemoteMem等途径获得的合法单边访问地址。
  • 与异步接口相同,建议关注最大并发子任务规模等限制(参见异步批量接口说明)。

HixlCSClientQueryCompleteStatus

函数功能

查询异步批量任务的完成状态。

函数原型

HixlStatus HixlCSClientQueryCompleteStatus(HixlClientHandle client_handle, CompleteHandle complete_handle, HixlCompleteStatus *complete_status);

参数说明

参数名输入/输出描述
client_handle输入客户端句柄。
complete_handle输入要查询的任务句柄。
complete_status输出返回任务状态枚举(见HixlCompleteStatus)。

返回值

  • HIXL_SUCCESS:查询成功,传输状态需要根据complete_status确定。
  • HIXL_PARAM_INVALID:参数错误
  • 其他:失败

约束说明

  • 最大支持4K个数据并发传输,下发任务后需及时调用HixlCSClientQueryCompleteStatus接口查询任务状态。
  • 查询传输任务状态为HIXL_COMPLETE_STATUS_COMPLETED后,相关资源将自动释放,不支持使用相同的complete_handle再次查询。
  • 查询传输任务状态为HIXL_COMPLETE_STATUS_WAITING,需用户自行判断当前传输任务是否已经发生超时,如果超时可重建传输传输链路进行重试,并销毁当前异常链路。

HixlCSClientDestroy

函数功能

销毁 Client 实例并释放资源。

函数原型

HixlStatus HixlCSClientDestroy(HixlClientHandle client_handle);

参数说明

参数名输入/输出描述
client_handle输入客户端句柄。

返回值

  • HIXL_SUCCESS:成功
  • HIXL_PARAM_INVALID:参数错误
  • 其他:失败

约束说明

  • 需要和HixlCSClientCreate配对使用。
  • 建议在调用HixlCSClientDestroy前,链路进行断链以及对注册的内存进行解注册。
  • 该接口不能和其他接口并发调用。

使用建议

  1. 环境准备:调用aclrtSetDevice(device_id)
  2. 准备 Endpoint 描述(EndpointDesc)。
  3. Server 流程:
  • 构造HixlServerDescHixlServerConfig
  • 调用HixlCSServerCreate创建HixlServerHandle
  • 为要被远端访问的内存分配并准备CommMem(Host/Device 内存),调用HixlCSServerRegMem注册并保存返回的MemHandle
  • 调用HixlCSServerListen开始侦听连接。
  • 等待 Client 建链并发起数据传输。
  • 传输结束后调用HixlCSServerUnregMem注销内存并HixlCSServerDestroy销毁服务。
  1. Client 流程:
  • 构造HixlClientDescHixlClientConfig
  • 调用HixlCSClientCreate创建HixlClientHandle
  • 准备本端CommMem并通过HixlCSClientRegMem注册(保存MemHandle)。
  • 调用HixlCSClientConnect建链(阻塞或等待超时),确保Server处于侦听状态。
  • 调用HixlCSClientGetRemoteMem获取 Server 已注册的内存,从而获取远端地址用于后续操作。
  • 构造一组HixlOneSideOpDesc(local/remote 地址、长度),任选其一:
    • 调用HixlCSClientBatchPutAsync/HixlCSClientBatchGetAsync提交异步批量操作,并轮询HixlCSClientQueryCompleteStatus直到状态为HIXL_COMPLETE_STATUS_COMPLETED
    • 或调用HixlCSClientBatchPutSync/HixlCSClientBatchGetSync同步完成整批传输(需传入整批超时时间timeout_ms)。
  • 完成后按需读取/校验内存内容,最后HixlCSClientUnregMem注销本端内存并HixlCSClientDestroy

示例

下面给出简化版的流程代码片段,体现基准程序中的关键步骤与顺序(省略细节错误处理与平台初始化代码):

// --- Server (伪代码) --- HixlServerHandle server = NULL; HixlServerDesc sdesc = {"0.0.0.0", 12345, &endpoint, 1}; HixlCSServerCreate(&sdesc, NULL, &server); // 分配并初始化 server 内存(Host 或 Device) CommMem server_mem = { .addr = server_buf, .size = size, .type = COMM_MEM_TYPE_DEVICE }; MemHandle server_mem_h = NULL; HixlCSServerRegMem(server, "server_mem", &server_mem, &server_mem_h); HixlCSServerListen(server, 1024); // 等待 client 发起并完成传输(可用 TCP 信令同步) // 注销并销毁 HixlCSServerUnregMem(server, server_mem_h); HixlCSServerDestroy(server); // --- Client (伪代码) --- HixlClientHandle client = NULL; HixlClientDesc cdesc = {"server.ip", 12345, &local_ep, &remote_ep}; HixlCSClientCreate(&cdesc, NULL, &client); // 分配并注册本地内存 CommMem client_mem = { .addr = client_buf, .size = size, .type = COMM_MEM_TYPE_DEVICE }; MemHandle client_mem_h = NULL; HixlCSClientRegMem(client, "client_mem", &client_mem, &client_mem_h); // 建链 HixlCSClientConnect(client, 5000); // 获取远端内存地址(通过 mem_tag) CommMem *remote_list = NULL; char **tags = NULL; uint32_t num = 0; HixlCSClientGetRemoteMem(client, &remote_list, &tags, &num, 2000); // 构造批量操作描述,示例:分块循环 varying block size std::vector<HixlOneSideOpDesc> ops = ...; // 填写 local/remote addr 与 len // 方式一:异步 + 轮询完成 CompleteHandle ch; HixlCSClientBatchPutAsync(client, ops.size(), ops.data(), &ch); HixlCompleteStatus st; do { HixlCSClientQueryCompleteStatus(client, ch, &st); std::this_thread::sleep_for(std::chrono::milliseconds(1)); } while (st == HIXL_COMPLETE_STATUS_WAITING); // 方式二:同步(整批在 timeout 内完成则返回 HIXL_SUCCESS) // HixlCSClientBatchPutSync(client, ops.size(), ops.data(), 5000); // 清理 HixlCSClientUnregMem(client, client_mem_h); HixlCSClientDestroy(client);

【免费下载链接】hixlHIXL(Huawei Xfer Library)是一个灵活、高效的昇腾单边通信库,面向集群场景提供简单、可靠、高效的点对点数据传输能力。项目地址: https://gitcode.com/cann/hixl

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 1:58:32

信息安全工程师-病毒、木马、蠕虫技术原理与防御基础

一、引言 核心概念定义 恶意代码是指故意编制或设置的、对信息系统或网络产生危害的程序代码&#xff0c;计算机病毒、特洛伊木马、网络蠕虫是网络安全领域占比超过 80% 的核心恶意代码类型&#xff0c;也是软考信息安全工程师考试中恶意代码模块的核心考察内容。软考考点重要…

作者头像 李华
网站建设 2026/5/10 1:56:28

macOS 系统在处理文件时,会自动生成一些以 ._ 开头的隐藏文件

mac下压缩文件 传到服务器上 解压缩&#xff0c;会产生很多多余文件 大多以“._”开头的文件&#xff0c;如何不把这些文件压缩进去呢?这个问题是由于 macOS 系统在处理文件时&#xff0c;会自动生成一些以 ._ 开头的隐藏文件&#xff08;通常称为 AppleDouble 文件&#xff0…

作者头像 李华
网站建设 2026/5/10 1:47:31

CMOS图像传感器低功耗低噪声Zoom ADC电路设计【附电路】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;可以私信&#xff0c;或者点击《获取方式》 &#xff08;1&#xff09;逐次逼近粗转换与 ΣΔ 细…

作者头像 李华
网站建设 2026/5/10 1:45:41

基于语义搜索的颜文字AI生成器:从NLP原理到工程实践

1. 项目概述&#xff1a;当颜文字遇上AI&#xff0c;一场表情符号的智能革命最近在GitHub上闲逛&#xff0c;发现了一个名为“7PH/kaomoji-ai”的项目&#xff0c;瞬间就抓住了我的眼球。作为一个常年混迹于各种社交平台和即时通讯工具的老网民&#xff0c;颜文字&#xff08;K…

作者头像 李华
网站建设 2026/5/10 1:40:12

PostGIS实现多波段栅格数据转单波段灰度图【ST_Grayscale】

一、函数概述 ST_Grayscale用于将彩色栅格&#xff08;RGB&#xff09;转换为灰度栅格的专用函数&#xff0c;通过加权计算红、绿、蓝三通道值生成单波段灰度图像。该函数支持从单栅格或多栅格中提取三通道数据&#xff0c;并自动处理不同像素类型的输入&#xff0c;最终输出 8…

作者头像 李华