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

C语言函数大全-- w 开头的函数(2)

C语言函数大全

本篇介绍C语言函数大全-- w 开头的函数

1. wcstok

1.1 函数说明

函数声明函数功能
wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr);用于将一个长字符串拆分成几个短字符串(标记),并返回第一个标记的地址
wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim);用于将一个长字符串拆分成几个短字符串(标记),并返回第一个标记的地址

在这里插入图片描述

参数:

  • wcs : 被分割的字符串
  • delim : 分割符字符串,包含多个字符
  • ptr : 指向保存上次调用后的指针的指针,首次调用时需赋值为 NULL

1.2 演示示例

windows 下两个参数的示例:

#include <wchar.h>
#include <stdio.h>int main() {wchar_t str[] = L"Hello, huazie! This is wcstok demo.";wchar_t* token;// 第一次调用token = wcstok(str, L" ,.!?");while (token != NULL) {wprintf(L"%ls\n", token);token = wcstok(NULL, L" ,.!?");}return 0;
}

1.3 运行结果

在这里插入图片描述

2. wcstol

2.1 函数说明

函数声明函数功能
long int wcstol(const wchar_t* str, wchar_t** endptr, int base);用于将字符串转换为长整型数字的函数

参数:

  • str : 要转换的字符串
  • endptr : 可选输出参数,指向第一个不能转换成数字字符的字符的指针
  • base : 数字基数,介于 236 之间;
    base 参数为 0 时,wcstol() 函数会自动检测数字基数:
    • 如果输入字符串以 "0x""0X" 开头,则将基数设置为 16
    • 如果输入字符串以 "0" 开头,则将基数设置为 8
    • 如果不是这些情况,则将基数设置为 10

2.2 演示示例

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>int main() 
{//const wchar_t* str = L"123456";//const wchar_t* str = L"123a456";//const wchar_t* str = L"a123456";const wchar_t* str = L"0xFF";wchar_t* endptr;long int num;//num = wcstol(str, &endptr, 10);num = wcstol(str, &endptr, 0);if (endptr == str)printf("Invalid input.\n");elseprintf("The number is %ld\n", num);return 0;
}

注意: 如果输入字符串无法转换为数字,则 wcstol() 函数返回 0,并将 endptr 指向输入字符串的起始位置。所以,在使用 wcstol() 函数时,建议检查 endptrstr 是否相同,以确定输入是否有效。

2.3 运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. wcstoul

3.1 函数说明

函数声明函数功能
unsigned long int wcstoul(const wchar_t* str, wchar_t** endptr, int base);用于将字符串转换为无符号长整型数字

参数:

  • str : 要转换的字符串
  • endptr : 可选输出参数,指向第一个不能转换成数字字符的字符的指针
  • base : 数字基数,介于 236 之间;
    base 参数为 0 时,wcstol() 函数会自动检测数字基数:
    • 如果输入字符串以 "0x""0X" 开头,则将基数设置为 16
    • 如果输入字符串以 "0" 开头,则将基数设置为 8
    • 如果不是这些情况,则将基数设置为 10

3.2 演示示例

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>int main() 
{const wchar_t* str = L"123a456";wchar_t* endptr;unsigned long int num;num = wcstoul(str, &endptr, 10);if (endptr == str)printf("Invalid input.\n");elseprintf("The number is %lu\n", num);return 0;
}

wcstoul() 函数的用法和 wcstol() 函数类似,这里就不一一列举了

3.3 运行结果

在这里插入图片描述

4. wcsxfrm

4.1 函数说明

函数声明函数功能
size_t wcsxfrm(wchar_t* dest, const wchar_t* src, size_t n);将一个 Unicode 字符串转换为一个 “可排序” 的字符串。该新字符串中的字符序列反映了源字符串中的字符顺序和大小写信息,以便进行字典序比较。

参数:

  • dest : 存储转换后字符串的目标缓冲区
  • src: 要转换的源字符串
  • n : 目标缓冲区的最大长度

4.2 演示示例

#include <stdlib.h>
#include <stdio.h>
#include <wchar.h>#define ARRAY_SIZE 5int main() 
{const wchar_t* arr[ARRAY_SIZE] = { L"Tom", L"Alice", L"Huazie", L"David", L"Charlie" };wchar_t sorted_arr[ARRAY_SIZE][50];size_t i;for (i = 0; i < ARRAY_SIZE; i++) {wcsxfrm(sorted_arr[i], arr[i], sizeof(sorted_arr[i]));}// 使用 qsort 对字符串数组排序qsort(sorted_arr, ARRAY_SIZE, sizeof(sorted_arr[0]), wcscmp);// 排序后输出wprintf(L"Sorted array:\n");for (i = 0; i < ARRAY_SIZE; i++) {wprintf(L"%ls\n", sorted_arr[i]);}return 0;
}

在上面的示例代码中,

  • 首先,我们定义一个包含 5Unicode 字符串的字符串数组 arr,每个字符串代表一个人名;
  • 然后,定义一个大小为 5x50 的二维字符数组 sorted_arr,用于存储排序后的字符串;
  • 接着,使用 wcsxfrm() 函数将每个 Unicode 字符串转换为可排序字符串,并将结果存储在 sorted_arr 数组中;
  • 再然后,使用 qsort() 函数按字典序对 sorted_arr 数组中的字符串进行排序;
  • 再接着,使用 wprintf() 函数输出排序后的字符串;
  • 最后结束程序。

4.3 运行结果

在这里插入图片描述

5. wctype

5.1 函数说明

函数声明函数功能
wctype_t wctype(const char* property);用于确定给定的宽字符类别

参数:

  • property : 一个指向表示宽字符属性名称的字符串字面量的指针

常见的宽字符属性及含义如下:

属性名称含义
"alnum"字母数字字符
"alpha"字母字符
"blank"空格或水平制表符字符
"cntrl"控制字符
"digit"数字字符
"graph"可打印字符(除空格字符外)
"lower"小写字母字符
"print"可打印字符
"punct"标点符号字符
"space"空白字符
"upper"大写字母字符
"xdigit"十六进制数字字符

返回值:

  • 如果指定的属性存在,则返回相应的宽字符类型;
  • 如果指定的属性不存在,则返回零。

5.2 演示示例

#include <stdio.h>
#include <wchar.h>
#include <wctype.h>int main() 
{wchar_t ch = L',';wctype_t punct_wt;// 获取标点符号字符类型punct_wt = wctype("punct");// 判断指定的宽字符是否为标点符号if (iswctype(ch, punct_wt)) {wprintf(L"%lc is a punctuation character.\n", ch);} else {wprintf(L"%lc is not a punctuation character.\n", ch);}return 0;
}

注意: 在调用 wctype() 函数时,应该传递一个有效的宽字符属性名称作为参数,详见 5.1 的表格所示。

5.3 运行结果

在这里插入图片描述

6. wctob

6.1 函数说明

函数声明函数功能
int wctob(wint_t wc);用于将给定的宽字符转换为其对应的字节表示

参数:

  • wc : 一个宽字符值

返回值:

  • 如果能转换成功,则返回返回与之对应的字节表示;
  • 如果无法将给定宽字符转换为字节表示,则返回 EOF

6.2 演示示例

#include <stdio.h>
#include <wchar.h>int main() 
{wchar_t ch = L'?';int byte;// 将 Unicode 字符转换为字节表示byte = wctob(ch);// 输出字节值printf("Byte value of %lc: %d (0x%02X)\n", ch, byte, byte);return 0;
}

注意: 在使用 wctob() 函数时,应该确保系统当前的本地化环境和编码方式与程序中使用的字符编码一致。如果字符编码不一致,可能会导致错误的结果或未定义行为。

6.3 运行结果

在这里插入图片描述

7. wctomb

7.1 函数说明

函数声明函数功能
int wctomb(char* s, wchar_t wc);用于将给定的宽字符转换为其对应的多字节字符表示

参数:

  • s : 一个指向字符数组的指针
  • wc : 一个宽字符值

返回值:

  • 如果能转换成功,则将 wc 转换为其对应的多字节字符表示,存储在 s 指向的字符数组中;
  • 如果 s 是空指针,则不执行任何操作,只返回转换所需的字符数;
  • 如果无法将给定宽字符转换为多字节字符表示,则返回 -1

7.2 演示示例

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>int main() 
{wchar_t ch = L'?';char mb[MB_CUR_MAX];int len;// 将 Unicode 字符转换为多字节字符表示len = wctomb(mb, ch);// 输出转换结果if (len >= 0) {printf("Multibyte representation of %lc: ", ch);for (int i = 0; i < len; i++) {printf("%02X ", (unsigned char) mb[i]);}printf("\n");} else {printf("Failed to convert %lc to multibyte character.\n", ch);}return 0;
}

在上面的示例程序中,wctomb() 函数被用来将 Unicode 字符 ',' 转换为其对应的多字节字符表示,并将结果保存在字符数组 mb 中。然后,程序输出每个字节的十六进制值。

注意: 在使用 wctomb() 函数时,应该根据当前的本地化环境和编码方式调整字符数组的大小。可以使用 MB_CUR_MAX 宏来获取当前编码方式下一个多字节字符所需的最大字节数,从而确定字符数组的大小。

7.3 运行结果

在这里插入图片描述

8. wmemchr

8.1 函数说明

函数声明函数功能
void* wmemchr(const void* s, wchar_t c, size_t n);用于在宽字符数组中查找给定的宽字符

参数:

  • s : 一个指向宽字符数组的指针
  • c : 要查找的宽字符值
  • n : 要搜索的字节数

返回值:

  • 如果找到了 c,则返回指向该位置的指针;
  • 否则返回空指针。

8.2 演示示例

#include <stdio.h>
#include <wchar.h>int main() 
{const wchar_t str[] = L"Hello, Huazie!";const wchar_t ch = L'u';wchar_t* pch;// 在宽字符数组中查找给定的宽字符// 使用 wcslen() 函数来获取 str 的长度,以指定要搜索的字节数 npch = wmemchr(str, ch, wcslen(str));// 根据 pch,来判断是否找到,并输出结果if (pch)wprintf(L"Found '%lc' at position %d.\n", ch, (int)(pch - str));elsewprintf(L"Could not find '%lc'.\n", ch);return 0;
}

8.3 运行结果

在这里插入图片描述

9. wmemcmp

9.1 函数说明

函数声明函数功能
int wmemcmp(const wchar_t* s1, const wchar_t* s2, size_t n);用于比较两个宽字符数组的前 n 个宽字符

参数:

  • s1 : 待比较的宽字符串1
  • s2 : 待比较的宽字符串2
  • n : 要比较的字节数

返回值:

  • 如果两个数组相等,则返回零;
  • 如果 s1s2 小,则返回负数;
  • 如果 s1s2 大,则返回正数。

9.2 演示示例

#include <stdio.h>
#include <wchar.h>int main() 
{const wchar_t str1[] = L"Hello";const wchar_t str2[] = L"Huazie";int result;// 比较两个宽字符数组result = wmemcmp(str1, str2, wcslen(str1));// 根据result,来判断,并输出结果if (result == 0)wprintf(L"%ls and %ls are equal.\n", str1, str2);else if (result < 0)wprintf(L"%ls is less than %ls.\n", str1, str2);elsewprintf(L"%ls is greater than %ls.\n", str1, str2);return 0;
}

9.3 运行结果

在这里插入图片描述

10. wmemcpy

10.1 函数说明

函数声明函数功能
wchar_t* wmemcpy(wchar_t* dest, const wchar_t* src, size_t n);用于将一个宽字符数组的前 n 个宽字符复制到另一个宽字符数组

参数:

  • dest : 目标宽字符串
  • src : 源宽字符串
  • n : 要复制的字节数

10.2 演示示例

#include <stdio.h>
#include <wchar.h>
#include <string.h>int main() 
{const wchar_t src[] = L"Hello, Huazie!";wchar_t dest[20];// 将一个宽字符数组复制到另一个宽字符数组wmemcpy(dest, src, wcslen(src) + 1);// 输出结果wprintf(L"Source string: %ls\n", src);wprintf(L"Destination string: %ls\n", dest);return 0;
}

注意: 在使用 wmemcpy() 函数时,应该确保目标数组有足够的空间来存储源数组的内容,以免发生缓冲区溢出。在上面的示例中,我们使用 wcslen() 函数来获取源数组的长度,然后加上 1,以包括字符串结尾的空字符 '\0'

10.3 运行结果

在这里插入图片描述

11. wmemset

11.1 函数说明

函数声明函数功能
wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n);用于将一个宽字符数组的前 n 个宽字符设置为给定的宽字符值

参数:

  • s : 一个指向宽字符数组的指针
  • c : 要设置的宽字符值
  • n : 要设置的字节数

11.2 演示示例

#include <stdio.h>
#include <wchar.h>
#include <string.h>int main() 
{wchar_t str[20]= L"Hello Huazie!";// 修改前wprintf(L"Before: %ls\n", str);// 将一个宽字符数组的所有元素设置为给定的宽字符值Xwmemset(str, L'X', wcslen(str));// 修改后wprintf(L"After : %ls\n", str);return 0;
}

在上面的示例程序中,

  • 首先,我们定义一个宽字符数组 str,并初始化为 "Hello Huazie!";
  • 接着,调用 wprintf() 函数输出修改之前的宽字符数组 str
  • 然后,调用 wmemset() 函数将宽字符数组 str 的所有元素都设置为 ‘X’;
  • 最后,再调用 wprintf() 函数输出修改之后的宽字符数组 str,并结束程序。

11.3 运行结果

在这里插入图片描述

12. wprintf

12.1 函数说明

函数声明函数功能
int wprintf(const wchar_t* format, ...);用于格式化输出宽字符字符串

参数:

  • format : 一个宽字符格式化字符串
  • … : 可选参数

12.2 演示示例

#include <stdio.h>
#include <wchar.h>int main() 
{wchar_t name[] = L"Huazie";int age = 25;double height = 1.75;// 输出格式化的宽字符字符串wprintf(L"%ls %d %.2f\n", name, age, height);return 0;
}

12.3 运行结果

在这里插入图片描述

13. write

13.1 函数说明

函数声明函数功能
ssize_t write(int fd, const void* buf, size_t count);用于将数据写入文件描述符

参数:

  • fd : 要写入的文件描述符
  • buf: 写入数据的缓冲区
  • count: 写入的字节数

返回值:

  • 如果写入成功,则返回实际写入的字节数;
  • 如果出现错误,则返回 -1

13.2 演示示例

#include <stdio.h>
#include <unistd.h>int main() 
{const char msg[] = "Hello, Huazie!\n";int nbytes;// 向标准输出流写入数据nbytes = write(STDOUT_FILENO, msg, sizeof(msg) - 1);// 输出结果if (nbytes == -1) {perror("write");return 1;}return 0;
}

注意: 在使用 write() 函数时,应该确保给定的文件描述符是有效的,并且缓冲区中有足够的数据可供写入,以免发生未定义的行为

13.3 运行结果

在这里插入图片描述

14. wscanf

14.1 函数说明

函数声明函数功能
int wscanf(const wchar_t* format, ...);用于从标准输入流(stdin)读取格式化的宽字符输入

参数:

  • format : 一个宽字符格式化字符串
  • … : 可选参数

14.2 演示示例

#include <stdio.h>
#include <wchar.h>int main() 
{wchar_t name[20];int age;// 从标准输入流读取格式化的宽字符输入wprintf(L"Please nput your name and age: ");wscanf(L"%ls %d", name, &age);// 输出结果wprintf(L"name: %ls age: %d\n", name, age);return 0;
}

14.3 运行结果

在这里插入图片描述

相关文章:

C语言函数大全-- w 开头的函数(2)

C语言函数大全 本篇介绍C语言函数大全-- w 开头的函数 1. wcstok 1.1 函数说明 函数声明函数功能wchar_t *wcstok(wchar_t *wcs, const wchar_t *delim, wchar_t **ptr);用于将一个长字符串拆分成几个短字符串&#xff08;标记&#xff09;&#xff0c;并返回第一个标记的地…...

kafka启动创建topic报错:zookeeper is not a recognized option

当前使用版本&#xff1a;kafka_2.13-3.4.0 使用老版本的创建topic的命令&#xff0c;是用zookeeper来创建&#xff0c;但是报错如下 D:\Software\Doument\kafka_2.13-3.4.0> .\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 …...

11个超好用的SVG编辑工具

SVG的优势在于SVG图像可以更加灵活&#xff0c;自由收缩放大而不影响图片的质量&#xff0c;一个合适的SVG编辑工具能够让你的设计事半功倍&#xff0c;下面就一起来看看这些冷门软件好用在哪里。这11个超好用的SVG编辑工具依次为&#xff1a;即时设计、Justinmind、Sketsa SVG…...

低代码平台:10分钟从入门到原理

导航目录 一、低代码概念 二、优势及局限 三、基础功能及搭建 1、业务流程 2、用户权限 3、统计图表 四、使用感受 五、总结 传统的软件研发方式目前并不能很好地满足企业的需求&#xff1a;人员成本高、研发时间长、运维复杂。这时低代码工具的出现为快速开发软件提供…...

【JavaScript】如何获取客户端IP地址?

使用这个库&#xff1a;request-ip 它按照如下顺序获取请求的IP地址&#xff1a; X-Client-IPX-Forwarded-For (Header may return multiple IP addresses in the format: “client IP, proxy 1 IP, proxy 2 IP”, so we take the first one.)CF-Connecting-IP (Cloudflare)F…...

数据科学中使用的17 种相似性和相异性度量之欧氏距离

目录 1简介 2距离函数 2.1 L2范数&#xff08;欧氏距离&#xff09; 1简介 在数据科学中&#xff0c;相似性度量是一种衡量数据样本如何相互关联或相互接近的方法。另一方面&#xff0c;相异性度量是告诉数据对象有多少是不同的。此外&#xff0c;当相似的数据样本被分组到一…...

朋友去华为面试,轻松拿到30K的Offer,羡慕了......

最近有朋友去华为面试&#xff0c;面试前后进行了20天左右&#xff0c;包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说&#xff0c;80%的人都会栽在第一轮面试&#xff0c;要不是他面试前做足准备&#xff0c;估计都坚持不完后面几轮面试。 其实&…...

MySQL入门第五课:数据更新

数据更新 1 插入 插入表数据 insert into 表名 (字段列表) values(值列表) insert into 表名 set 字段名1 值1,字段名2值2 插入多个数据 insert into 表名 values(值1&#xff0c;值2&#xff0c;值3.....&#xff09; 这里面的值与列索引是对应的 显示表数据 select * fr…...

ALSA子系统(十八)------指纹解锁动画提示声卡顿问题解析

你好&#xff01;这里是风筝的博客&#xff0c; 欢迎和我一起交流。 很久没写kernel相关的东西了&#xff0c;主要是来到手机厂之后&#xff0c;大部分还是在Android上&#xff0c;Kernel虽然也有涉及&#xff0c;但毕竟只是有所涉及&#xff0c;主要业务逻辑还是在HAL之上&am…...

[230513] TPO72 | 2022年托福阅读真题第1/36篇 | 10:45

Invading Algae 目录 Invading Algae 全文 题目 Paragraph 1 P1 段落大意 问题1 Paragraph 2 P2 段落大意 问题2 *问题3* Paragraph 3 P3 段落大意 问题4 Paragraph 4 P4 段落大意 Paragraph 5 P5 段落大意 *问题5* *问题6* 问题7 问题8 问题9…...

操作符详解

目录 操作符分类 算术操作符 - * / % 二进制 二进制总结 移位操作符&#xff08;操作数只能为整数&#xff09; << >> 位操作符&#xff08;操作数必须为整数&#xff09; & | ^ 面试题 赋值操作符 复合赋值符 单目操作符 单目操作符介绍…...

【MATLAB图像处理实用案例详解(16)】——利用概念神经网络实现手写体数字识别

目录 一、问题描述二、概念神经网络实现手写体数字识别原理三、算法步骤3.1 数据输入3.2 特征提取3.3 模型训练3.4 测试 四、运行结果 一、问题描述 手写体数字属于光学字符识别&#xff08;Optical Character Recognition&#xff0c;OCR&#xff09;的范畴&#xff0c;但分类…...

数据库管理-第六十九期 另一种累(20230422)

数据库管理 2023-04-22 第六十九期 另一种累1 国产数据库沟通2 问题3 我的建议总结 第六十九期 另一种累 Oracle 23c的相关内容先缓缓&#xff0c;有些数据库管理相关的还是得正式版发布后才好去做实验。这周相较于之前那种割接较多的累还有点不一样&#xff0c;这周陪着客户交…...

Cesium入门之六:Cesium加载影像图层(ArcGIS、Bing、Mapbox、高德地图、腾讯地图、天地图等各类影像图)

Cesium加载影像图层 一、ImageryLayer类常用属性常用方法 二、ImageryLayerCollection类常用属性常用方法 三、ImageryProvider类常用属性常用方法 四、ImageryProvider子类1. ArcGisMapServerImageryProvider加载ArcGIS地图服务 2. BingMapsImageryProvider加载BingMap地图服务…...

Redis系列--redis持久化

一、为什么需要持久化 redis本身运行时数据保存在内存中&#xff0c;如果不进行持久化&#xff0c;那么在redis出现非正常原因宕机或者关闭redis的进程或者关闭计算机后数据肯定被会操作系统从内存中清掉。当然&#xff0c;redis本身默认采用了一种持久化方式&#xff0c;即RD…...

在外Windows远程连接MongoDB数据库【无公网IP】

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章&#xff1a;公网远…...

学网络安全怎么挖漏洞?怎么渗透?

前言 有不少阅读过我文章的伙伴都知道&#xff0c;我从事网络安全行业已经好几年&#xff0c;积累了丰富的经验和技能。在这段时间里&#xff0c;我参与了多个实际项目的规划和实施&#xff0c;成功防范了各种网络攻击和漏洞利用&#xff0c;提高了安全防护水平。 也有很多小…...

KL散度和交叉熵的对比介绍

KL散度&#xff08;Kullback-Leibler Divergence&#xff09;和交叉熵&#xff08;Cross Entropy&#xff09;是在机器学习中广泛使用的概念。这两者都用于比较两个概率分布之间的相似性&#xff0c;但在一些方面&#xff0c;它们也有所不同。本文将对KL散度和交叉熵的详细解释…...

浪涌保护器:保护电子设备免受雷击侵害

引言&#xff1a; 随着电子设备在现代生活和工业领域的普及和广泛应用&#xff0c;雷击对电子设备的损害成为一个严重的问题。浪涌保护器作为一种重要的防雷设备&#xff0c;发挥着至关重要的作用。本文将介绍浪涌保护器的防雷作用、行业应用&#xff0c;并重点介绍浪涌保护器…...

js绘制的红心

看腻歪了粒子特效的红心&#xff0c;今天给各位整个线条的&#xff0c;效果图如下&#xff1a; 表白显圣神器&#xff0c;你值得拥有&#xff0c;代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...