当前位置: 首页 > 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"…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...