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

华为HarmonyOS 快速构建各种文本识别应用 -- 通用文字识别

适用场景

通用文字识别,是通过拍照、扫描等光学输入方式,将各种票据、卡证、表格、报刊、书籍等印刷品文字转化为图像信息,再利用文字识别技术将图像信息转化为计算机等设备可以使用的字符信息的技术。

  • 可以对文档翻拍、街景翻拍等图片进行文字检测和识别,也可以集成于其他应用中,提供文字检测、识别的功能,并根据识别结果提供翻译、搜索等相关服务。
  • 可以处理来自相机、图库等多种来源的图像数据,提供一个自动检测文本、识别图像中文本位置以及文本内容功能的开放能力。
  • 支持特定角度范围内的文本倾斜、拍摄角度倾斜、复杂光照条件以及复杂文本背景等场景的文字识别。

开发步骤

  1. 在使用通用文字识别时,将实现文字识别的相关的类添加至工程。

     
    1. import { textRecognition } from '@kit.CoreVisionKit';

  2. 简单配置页面的布局,并在Button组件添加点击事件,拉起图库,选择图片。

     
    1. Button('选择图片')
    2. .type(ButtonType.Capsule)
    3. .fontColor(Color.White)
    4. .alignSelf(ItemAlign.Center)
    5. .width('80%')
    6. .margin(10)
    7. .onClick(() => {
    8. // 拉起图库,获取图片资源
    9. this.selectImage();
    10. })

  3. 通过图库获取图片资源,将图片转换为PixelMap,并添加初始化和释放方法。

     
    1. async aboutToAppear(): Promise<void> {
    2. const initResult = await textRecognition.init();
    3. hilog.info(0x0000, 'OCRDemo', `OCR service initialization result:${initResult}`);
    4. }
    5. async aboutToDisappear(): Promise<void> {
    6. await textRecognition.release();
    7. hilog.info(0x0000, 'OCRDemo', 'OCR service released successfully');
    8. }
    9. private async selectImage() {
    10. let uri = await this.openPhoto();
    11. if (uri === undefined) {
    12. hilog.error(0x0000, 'OCRDemo', "Failed to get uri.");
    13. return;
    14. }
    15. this.loadImage(uri);
    16. }
    17. private openPhoto(): Promise<string> {
    18. return new Promise<string>((resolve) => {
    19. let photoPicker: photoAccessHelper.PhotoViewPicker = new photoAccessHelper.PhotoViewPicker();
    20. photoPicker.select({
    21. MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE,
    22. maxSelectNumber: 1
    23. }).then((res: photoAccessHelper.PhotoSelectResult) => {
    24. resolve(res.photoUris[0]);
    25. }).catch((err: BusinessError) => {
    26. hilog.error(0x0000, 'OCRDemo', `Failed to get photo image uri. code:${err.code},message:${err.message}`);
    27. resolve('');
    28. })
    29. })
    30. }
    31. private loadImage(name: string) {
    32. setTimeout(async () => {
    33. let imageSource: image.ImageSource | undefined = undefined;
    34. let fileSource = await fileIo.open(name, fileIo.OpenMode.READ_ONLY);
    35. imageSource = image.createImageSource(fileSource.fd);
    36. this.chooseImage = await imageSource.createPixelMap();
    37. }, 100)
    38. }

  4. 实例化VisionInfo对象,并传入待检测图片的PixelMap。

    VisionInfo为待OCR检测识别的入参项,目前仅支持PixelMap类型的视觉信息。
     
    1. let visionInfo: textRecognition.VisionInfo = {
    2. pixelMap: this.chooseImage
    3. };

  5. 配置通用文本识别的配置项TextRecognitionConfiguration,用于配置是否支持朝向检测。

     
    1. let textConfiguration: textRecognition.TextRecognitionConfiguration = {
    2. isDirectionDetectionSupported: false
    3. };

  6. 调用textRecognition的recognizeText接口,对识别到的结果进行处理。

    当调用成功时,获取文字识别的结果;调用失败时,将返回对应错误码。

    recognizeText接口提供了三种调用形式,当前以其中一种作为示例,其他方式可参考API文档。
     
    1. textRecognition.recognizeText(visionInfo, textConfiguration)
    2. .then((data: textRecognition.TextRecognitionResult) => {
    3. // 识别成功,获取对应的结果
    4. let recognitionString = JSON.stringify(data);
    5. hilog.info(0x0000, 'OCRDemo', `Succeeded in recognizing text:${recognitionString}`);
    6. // 将结果更新到Text中显示
    7. this.dataValues = data.value;
    8. })
    9. .catch((error: BusinessError) => {
    10. hilog.error(0x0000, 'OCRDemo', `Failed to recognize text. Code: ${error.code}, message: ${error.message}`);
    11. this.dataValues = `Error: ${error.message}`;
    12. });

开发实例

点击按钮,识别一张图片的文字内容,并通过日志打印。

 
  1. import { textRecognition } from '@kit.CoreVisionKit'
  2. import { image } from '@kit.ImageKit';
  3. import { hilog } from '@kit.PerformanceAnalysisKit';
  4. import { BusinessError } from '@kit.BasicServicesKit';
  5. import { fileIo } from '@kit.CoreFileKit';
  6. import { photoAccessHelper } from '@kit.MediaLibraryKit';
  7. @Entry
  8. @Component
  9. struct Index {
  10. private imageSource: image.ImageSource | undefined = undefined;
  11. @State chooseImage: PixelMap | undefined = undefined;
  12. @State dataValues: string = '';
  13. async aboutToAppear(): Promise<void> {
  14. const initResult = await textRecognition.init();
  15. hilog.info(0x0000, 'OCRDemo', `OCR service initialization result:${initResult}`);
  16. }
  17. async aboutToDisappear(): Promise<void> {
  18. await textRecognition.release();
  19. hilog.info(0x0000, 'OCRDemo', 'OCR service released successfully');
  20. }
  21. build() {
  22. Column() {
  23. Image(this.chooseImage)
  24. .objectFit(ImageFit.Fill)
  25. .height('60%')
  26. Text(this.dataValues)
  27. .copyOption(CopyOptions.LocalDevice)
  28. .height('15%')
  29. .margin(10)
  30. .width('60%')
  31. Button('选择图片')
  32. .type(ButtonType.Capsule)
  33. .fontColor(Color.White)
  34. .alignSelf(ItemAlign.Center)
  35. .width('80%')
  36. .margin(10)
  37. .onClick(() => {
  38. // 拉起图库,获取图片资源
  39. this.selectImage();
  40. })
  41. Button('开始识别')
  42. .type(ButtonType.Capsule)
  43. .fontColor(Color.White)
  44. .alignSelf(ItemAlign.Center)
  45. .width('80%')
  46. .margin(10)
  47. .onClick(async () => {
  48. this.textRecognitionTest();
  49. })
  50. }
  51. .width('100%')
  52. .height('100%')
  53. .justifyContent(FlexAlign.Center)
  54. }
  55. private textRecognitionTest() {
  56. if (!this.chooseImage) {
  57. return;
  58. }
  59. // 调用文本识别接口
  60. let visionInfo: textRecognition.VisionInfo = {
  61. pixelMap: this.chooseImage
  62. };
  63. let textConfiguration: textRecognition.TextRecognitionConfiguration = {
  64. isDirectionDetectionSupported: false
  65. };
  66. textRecognition.recognizeText(visionInfo, textConfiguration)
  67. .then((data: textRecognition.TextRecognitionResult) => {
  68. // 识别成功,获取对应的结果
  69. let recognitionString = JSON.stringify(data);
  70. hilog.info(0x0000, 'OCRDemo', `Succeeded in recognizing text:${recognitionString}`);
  71. // 将结果更新到Text中显示
  72. this.dataValues = data.value;
  73. })
  74. .catch((error: BusinessError) => {
  75. hilog.error(0x0000, 'OCRDemo', `Failed to recognize text. Code: ${error.code}, message: ${error.message}`);
  76. this.dataValues = `Error: ${error.message}`;
  77. });
  78. }
  79. private async selectImage() {
  80. let uri = await this.openPhoto();
  81. if (uri === undefined) {
  82. hilog.error(0x0000, 'OCRDemo', "Failed to get uri.");
  83. return;
  84. }
  85. this.loadImage(uri);
  86. }
  87. private openPhoto(): Promise<string> {
  88. return new Promise<string>((resolve) => {
  89. let photoPicker: photoAccessHelper.PhotoViewPicker = new photoAccessHelper.PhotoViewPicker();
  90. photoPicker.select({
  91. MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE,
  92. maxSelectNumber: 1
  93. }).then((res: photoAccessHelper.PhotoSelectResult) => {
  94. resolve(res.photoUris[0]);
  95. }).catch((err: BusinessError) => {
  96. hilog.error(0x0000, 'OCRDemo', `Failed to get photo image uri. Code:${err.code},message:${err.message}`);
  97. resolve('');
  98. })
  99. })
  100. }
  101. private loadImage(name: string) {
  102. setTimeout(async () => {
  103. let fileSource = await fileIo.open(name, fileIo.OpenMode.READ_ONLY);
  104. this.imageSource = image.createImageSource(fileSource.fd);
  105. this.chooseImage = await this.imageSource.createPixelMap();
  106. }, 100)
  107. }
  108. }

相关文章:

华为HarmonyOS 快速构建各种文本识别应用 -- 通用文字识别

适用场景 通用文字识别&#xff0c;是通过拍照、扫描等光学输入方式&#xff0c;将各种票据、卡证、表格、报刊、书籍等印刷品文字转化为图像信息&#xff0c;再利用文字识别技术将图像信息转化为计算机等设备可以使用的字符信息的技术。 可以对文档翻拍、街景翻拍等图片进行…...

shell作业

计算器 #!/bin/bash num1$1 num2$3 op$2 case $op in"")echo $((num1 num2));;"-")echo $((num1 - num2));;"*")echo $((num1 * num2));;"/")if [ $num2 -ne 0 ]; thenecho $((num1 / num2))elseecho "除数不能为0"fi;;*)…...

css部分

前面我们学习了HTML&#xff0c;但是HTML仅仅只是做数据的显示&#xff0c;页面的样式比较简陋&#xff0c;用户体验度不高&#xff0c;所以需要通过CSS来完成对页面的修饰&#xff0c;CSS就是页面的装饰者&#xff0c;给页面化妆&#xff0c;让它更好看。 1 层叠样式表&#…...

nginx 配置 跨域、压缩、文件下载 、静态文件、防盗链

1.跨域配置 在server模块下 访问如&#xff1a;http://127.0.0.1:8080/static/a.txt #跨域server {listen 8080;server_name localhost;#允许跨域请求的域&#xff0c; *代表所有add_header Access-Control-Allow-Origin *;#允许带上cookie请求add_header Access-Contro…...

SQL教程(1):什么是SQL?有什么用?

如果你是刚接触用户研究的新手&#xff0c;可能会听说过一个词叫做 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;&#xff0c;但你可能还不太清楚它是什么&#xff0c;如何使用它&#xff0c;或者为什么它会对你的用户研究有帮助。别担心&…...

c++笔记2

14、c的对象 对象和结构的区别&#xff1b; 结构&#xff1a;包含各种类型的变量&#xff1b; 对象&#xff1a;包含各种函数、和变量&#xff1b; 设计对象的时候引用class关键字创建类&#xff0c;和结构形状差不多&#xff1b; 将变量称之为属性&#xff0c;函数称之为方…...

Xlsxwriter生成Excel文件时TypeError异常处理

在使用 XlsxWriter 生成 Excel 文件时&#xff0c;如果遇到 TypeError&#xff0c;通常是因为尝试写入的值或格式与 XlsxWriter 的限制或要求不兼容。 1、问题背景 在使用 Xlsxwriter 库生成 Excel 文件时&#xff0c;出现 TypeError: “expected string or buffer” 异常。此…...

应用层协议/传输层协议(UDP)

目录 应用层 如何自定义应用层协议&#xff1f; 序列化方式 1.基于行文本的方式来传输 2.基于xml的方式 3.基于json的方式 4.yml的形式 5.protobuffer(pb)形式 传输层 端口号 协议 UDP 校验和 CRC TCP TCP/IP五层协议 应用层 -- 传输层 -- 网络层 -- 数据链路层…...

【Linux】应用层协议—HTTP

一、HTTP协议介绍 请求-响应模型&#xff1a;HTTP (Hyper Text Transfer Protocol) 协议是基于请求和响应的。客户端&#xff08;如Web浏览器&#xff09;发送一个HTTP请求到服务器&#xff0c;服务器处理请求后返回一个HTTP响应。 无状态&#xff0c;无连接协议&#xff1a;H…...

使用Vue3+Echarts实现加载中国地图,点击省份地图下钻(完整教程)

一. 前言 在众多 ECharts 图表类型中&#xff0c;开发者始终绕不开的有各种各样的地图开发&#xff0c;关于地图开发&#xff0c;可能比其他图表相对繁琐一些&#xff0c;其实说简单也简单&#xff0c;说复杂也复杂&#xff0c;其中不乏有层级地图、3D 地图等&#xff0c;感觉…...

双目相机的标定,视差图,深度图,点云生成思路与实现。

该文档记录从双目相机标定到点云生成的所有过程&#xff0c;同时会附上代码。 代码直接能跑。https://github.com/stu-yzZ/stereoCamera 目录 大致思路如下&#xff1a; 一、相机标定 1、相机参数介绍 2、单目相机标定 3、双目相机标定 二、图片畸变矫正 三、极线矫正…...

解决 minio上传文件Service: S3, Status Code: 403

错误信息 [software.amazon.awssdk.services.s3.model.S3Exception: (Service: S3, Status Code: 403, Request ID: 180E9BC04F11312E, Extended Request ID: 81aefed089495c5faf6270c59bea93c9783926f74ef647fe6b17908f0976b557)]分析过程 4XX一般是客户端错误。403表示禁止…...

SpringBoot实战——个人博客项目

目录 一、项目简介 ?二、项目整体架构 数据库模块 后端模块 前端模块 ?三、项目具体展示 ?四、项目的具体实现 1、一些准备工作 ??数据库、数据表的创建 ??设置数据库和MyBatis的配置 ??将前端项目引入到当前项目中 2、登录注册模块 ??实体类的创建 ?…...

OpenCV-平滑图像

二维卷积(图像滤波) 与一维信号一样&#xff0c;图像也可以通过各种低通滤波器&#xff08;LPF&#xff09;、高通滤波器&#xff08;HPF&#xff09;等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数 **cv.filter2D()**&…...

nodejs官方文档学习-笔记-1

一、异步工作 process.nextTick()&#xff1a; 回调会在当前操作完成后立即执行&#xff0c;但在事件循环进入下一个阶段之前。它是最先执行的。 Promise.then()&#xff1a; 回调会在 microtask 队列中执行&#xff0c;通常是在当前操作完成后&#xff0c;但在事件循环进入…...

YOLOv7

YOLOv7 是 YOLO 系列的一个重要版本&#xff0c;由 Chien-Yao Wang 和 Alexey Bochkovskiy 等研究人员和开发者提出&#xff0c;继续改进了 YOLOv4 和 YOLOv5 的设计&#xff0c;主要在模型性能、训练效率以及推理速度上进行优化。YOLOv7 进一步优化了 YOLO 系列在速度和精度之…...

汉语唤醒词的模糊判断(Python)

汉语唤醒词的模糊判断【Python】 说明安装库代码Demo其他 说明 这是一个简单的汉语模糊唤醒词的判断器&#xff0c;汉语发音中前后舌以及声母韵母的区别&#xff0c;如果进行精准判断&#xff0c;很容易误判。需要一个模糊判断的逻辑! 安装库 pip install pypinyin代码Demo …...

C语言实例_26之根据输入计算星期几

1. 问题 请输入星期几的第一个字母来判断一下是星期几&#xff0c;如果第一个字母一样&#xff0c;则继续判断第二个字母。 2. 实现思路 思路一&#xff1a;嵌套if-else语句实现 首先接收用户输入的第一个字母&#xff0c;使用if-else语句进行判断。如果输入的是M&#xff0…...

包管理器npm,cnpm,yarn和pnpm

npm (Node Package Manager) 核心技术与工作原理 依赖解析&#xff1a; 广度优先搜索&#xff08;BFS&#xff09;&#xff1a;npm 使用 BFS 算法来解析依赖树&#xff0c;尽量扁平化 node_modules 目录以减少重复的依赖项。冲突处理&#xff1a;如果两个包需要同一个依赖的不…...

docker-compose部署skywalking 8.1.0

一、下载镜像 #注意 skywalking-oap-server和skywalking java agent版本强关联&#xff0c;版本需要保持一致性 docker pull elasticsearch:7.9.0 docker pull apache/skywalking-oap-server:8.1.0-es7 docker pull apache/skywalking-ui:8.1.0二、部署文件docker-compose.yam…...

Android -- [SelfView] 自定义多行歌词滚动显示器

Android – [SelfView] 自定义多行歌词滚动显示器 流畅、丝滑的滚动歌词控件* 1. 背景透明&#xff1b;* 2. 外部可控制进度变化&#xff1b;* 3. 支持屏幕拖动调节进度&#xff08;回调给外部&#xff09;&#xff1b;效果 歌词文件&#xff08;.lrc&#xff09; 一. 使用…...

记事本建java及java命名规范

1.桌面开发&#xff1a;c# 2. 记事本建java&#xff1a; 以class的名称(类名)为名&#xff0c;名称.java 编译jdk&#xff1a;javac 名称.java 调动运行jre : java 名称 查看名称.java里面的内容&#xff1a;cat 名称.java java 的命名规范 大驼峰&#xff08;每个单词首…...

Elasticsearch scroll 之滚动查询

Elasticsearch scroll 之滚动查询 Elasticsearch 的 Scroll API 是一种用于处理大规模数据集的机制&#xff0c;特别是在需要从索引中检索大量数据时。通常情况下&#xff0c;Elasticsearch 的搜索请求会有一个结果集大小的限制 (fromsize 的检索数量默认是 10,000 条记录)&am…...

cartographer建图与定位应用

文章目录 前言一、安装cartographer1.安装环境2.源码编译2.1 下载2.2 编译 二、gazebo仿真2d建图0.准备仿真环境1.编写lua文件2.编写启动文件3.建图保存 三、cartographer定位 move_base导航3.1 编写启动文件3.2 启动launch 总结 前言 本文介绍cartographer在ubuntu18.04下的…...

CEEMDAN-CPO-VMD二次分解(CEEMDAN+冠豪猪优化算法CPO优化VMD)

CEEMDAN-CPO-VMD二次分解&#xff08;CEEMDAN冠豪猪优化算法CPO优化VMD&#xff09; 目录 CEEMDAN-CPO-VMD二次分解&#xff08;CEEMDAN冠豪猪优化算法CPO优化VMD&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 首先运用CEEMDAN对数据进行一次分解&#xff…...

【Golang】Go语言编程思想(二):函数式编程

函数式编程 函数与闭包 支持函数式编程的语言当中&#xff0c;函数是一等公民&#xff0c;参数、变量、返回值都可以是函数。 以 adder 为例&#xff0c;下例实现了一个函数式编程&#xff1a; package mainimport "fmt"func adder() func(int) int {sum : 0retu…...

ros项目dual_arm_pick-place(moveit和gazebo联合仿真)(一)

目录 前言正文创建功能包具体代码运行 总结 前言 dual_arm_pick-place项目中&#xff0c;实现了两套的moveit和gazebo联合仿真。 启动文件分别是bringup_moveit.launch和arm_bringup_moveit.launch。 在这个项目中&#xff0c;我将代码重新创建了一个包&#xff0c;co_simula…...

点线面|点到两点直线距离求解

在点云库&#xff08;PCL&#xff09;中&#xff0c;计算点到直线的距离可以借助于向量运算。以下是这种计算方法的步骤以及相应的实现代码。 概念 要计算点 AA 到通过点 BB 和 CC 定义的直线的距离&#xff0c;可以使用以下步骤&#xff1a; 定义两个向量&#xff1a; 向量 …...

等保2.0三级测评华为华三交换机路由器

在使用本博客提供的学习笔记及相关内容时,请注意以下免责声明: 信息准确性:本博客的内容是基于作者的个人理解和经验,尽力确保信息的准确性和时效性,但不保证所有信息都完全正确或最新。 非专业建议:博客中的内容仅供参考,不能替代专业人士的意见和建议。在做出任何重要…...

鸿蒙分享(二):引入zrouter路由跳转+封装

码仓库&#xff1a;https://gitee.com/linguanzhong/share_harmonyos 鸿蒙api:12 鸿蒙第三方库地址&#xff1a;OpenHarmony三方库中心仓 zrouter地址&#xff1a;OpenHarmony三方库中心仓 1.引入zrouter 1.打开终端界面&#xff1a;输入 ohpm install hzw/zrouter 2.在项目…...

欧拉角和旋转矩阵之间的转换

在实际编程实践中&#xff0c;特别是使用C的Eigen库时&#xff0c;需要掌握多种空间旋转表示之间的转换。本文将深入探讨欧拉角与旋转矩阵之间的相互转换&#xff0c;这是使用库时常见的操作。 首先&#xff0c;让我们了解欧拉角。它是指通过围绕三个基本坐标轴旋转来表示三维对…...

Typora的激活

Typora的安装、激活 图文教程 | 2024年最新Typora激活使用教程合集 Typora 激活指南&#xff08;2024年最新版&#xff09; 图文教程 | 2024Typora最新版免费激活使用教程&#xff08;新旧版可用&#xff09;...

排查bug的通用思路

⭐️前言⭐️ APP点击某个按钮没有反应/PC端执行某个操作后&#xff0c;响应较慢&#xff0c;通用的问题排查方法: 从多个角度来排查问题 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评…...

探秘CSS3 3D转换:打造立体网页动画与视觉效果的魔法

在现代网页设计中&#xff0c;CSS3 3D转换&#xff08;3D Transforms&#xff09;已经成为一种强大的工具&#xff0c;用于创建各种动态效果和视觉吸引力。本文将详细介绍CSS3 3D转换的基本概念、常见属性及其应用示例&#xff0c;帮助您掌握这一技术&#xff0c;提升网页设计的…...

Pycharm 安装两种不同版本的解释器

背景 Pycharm使用的解释器是python3.11&#xff0c;python3.9.x之后不支持win7&#xff1b;有同事需要在win7上使用python制作的exe&#xff0c;而了“win7环境下运行python打包exe提示找不到api-ms-win-core-path-l1-1-0.dll”。 过程 查找了一些资料&#xff0c;发现直接将…...

小红薯x-s算法分析最新12-06(x-s 56)(上)

目标-小红薯达人作品&#xff1a;aHR0cHM6Ly93d3cueGlhb2hvbmdzaHUuY29tLw 1、确定目标 打上xhr断点 发现是异步请求&#xff0c;同时各个参数已经生成结束了 2、进入第二个异步函数 打上断点并继续运行 发现在e这个位置也生成了&#xff0c;那么再继续往上找异步参数进行断…...

视频融合×室内定位×数字孪生

随着物联网技术的迅猛发展&#xff0c;室内定位与视频融合技术在各行各业中得到了广泛应用。不仅能够提供精确的位置信息&#xff0c;还能通过实时视频监控实现全方位数据的可视化。 与此同时&#xff0c;数字孪生等技术的兴起为智慧城市、智慧工厂等应用提供了强大支持&#…...

JMS和消息中间件:Kafka/RocketMQ

文章目录 消息传递模型使用JMS还是KafkaKafka与RocketMQ的优缺点Kafka与RocketMQ的使用场景Kafka与RocketMQ的选型指南 TPM 项目中&#xff0c; iflow之间使用了JMS&#xff0c;后端项目与数据库通信使用Kafka MQ和JMS的区别&#xff1a; JMS是 java 用来处理消息的一个API规范…...

FreeRTOS之ARM CR5栈结构操作示意图

FreeRTOS之ARM CR5栈结构操作示意图 1 FreeRTOS源码下载地址2 ARM CR5栈结构操作宏和接口2.1 portSAVE_CONTEXT宏2.1.1 portSAVE_CONTEXT源码2.1.2 portSAVE_CONTEXT宏操作栈结构变化示意图 2.2 portRESTORE_CONTEXT宏2.2.1 portRESTORE_CONTEXT源码2.2.2 portRESTORE_CONTEXT宏…...

【技巧】Mac上如何显示键盘和鼠标操作

在制作视频教程时&#xff0c;将键盘和鼠标的操作在屏幕上显示出来&#xff0c;会帮助观众更容易地理解。 推荐Mac上两款开源的小软件。 1. KeyCastr 这款工具从2009年至今一直在更新中。 https://github.com/keycastr/keycastr 安装的话&#xff0c;可以从Github上下载最…...

三种插入排序算法

目录 1.直接插入排序 直接插入排序的步骤示例 直接插入排序的特点 适用场景 2.折半插入排序 折半插入排序的基本原理 折半插入排序的实现过程 折半插入排序的时间复杂度 折半插入排序的特点 3.希尔排序 希尔排序的基本原理 希尔排序的步骤举例 希尔排序的时间复杂…...

力扣100题--移动零

给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出: […...

第30天:安全开发-JS 应用NodeJS 指南原型链污染Express 框架功能实现审计0

时间轴&#xff1a; 演示案例&#xff1a; 环境搭建-NodeJS-解析安装&库安装 功能实现-NodeJS-数据库&文件&执行 安全问题-NodeJS-注入&RCE&原型链 案例分析-NodeJS-CTF 题目&源码审计 开发指南-NodeJS-安全 SecGuide 项目、 环境搭建-NodeJ…...

1.使用docker 部署redis Cluster模式 集群3主3从

1.使用docker 部署redis Cluster模式 集群3主3从 1.1 先安装docker 启动docker服务&#xff0c;拉取redis镜像 3主3从我们要在docker启动6个容器docker run --name redis-node-1 --net host --privilegedtrue -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-…...

SAP导出表结构并保存到Excel 源码程序

SAP导出表结构并保存到Excel,方便写代码时复制粘贴 经常做接口,需要copy表结构,找到了这样一个程程,特别有用。 01. 先看结果...

李飞飞:Agent AI 多模态交互的前沿探索

发布于:2024 年 11 月 27 日 星期三 北京 #RAG #李飞飞 #Agent #多模态 #大模型 Agent AI在多模态交互方面展现出巨大潜力,通过整合各类技术,在游戏、机器人、医疗等领域广泛应用。如游戏中优化NPC行为,机器人领域实现多模态操作等。然而,其面临数据隐私、偏见、可解释性…...

算法基础学习Day2(双指针)

文章目录 1.题目2.题目解答1.快乐数题目及题目解析算法学习代码提交 2.题目2题目及题目解析算法学习代码提交 1.题目 202. 快乐数 - 力扣&#xff08;LeetCode&#xff09;11. 盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09; 2.题目解答 1.快乐数 题目及题目解析 …...

信奥常考点:二叉树的构建(已知中序和 前序或后序 的情况下)

一、题目引入 这是来自CCF-GESP C七级认证 2024年9月的题目。 我们在此不解题&#xff0c;只把树画出来。 CCF-GESP 编程能力认证 C 七级 2024年9月份详细解析-CSDN博客 二、解题过程 我们可以根据先序遍历得出根节点是A&#xff0c;然后我们得到了A的左子树[B D]&#xff08;橙…...

《CS2》运行时提示“缺少steam_api_64.dll”文件该如何处理?“找不到steam_api.dll,无法继续执行代码”的修复方法

《CS2》游戏运行时文件丢失、损坏与系统报错处理指南 《CS2》上海 Major 淘汰赛这两天也在如火如荼的进行当中&#xff0c;相信有很多go学长在游戏运行时会遇到各种文件丢失、损坏以及系统报错问题&#xff0c;给玩家带来极大的困扰。今天&#xff0c;我们就来详细探讨一下《C…...

MCPTT 与BTC

MCPTT&#xff08;Mission Critical Push-to-Talk&#xff09;和B-TrunC&#xff08;宽带集群&#xff09;是两种关键通信标准&#xff0c;它们分别由不同的组织制定和推广。 MCPTT&#xff08;Mission Critical Push-to-Talk&#xff09;标准由3GPP&#xff08;第三代合作伙伴…...

毛宁任外交部新闻司司长(图/简历)

据外交部官网,毛宁任外交部新闻司司长,华春莹不再兼任。个人简历:公开简历显示,毛宁,女,汉族,1972年12月生,硕士研究生,中共党员。毛宁曾任外交部亚洲司朝鲜半岛事务办公室主任、中日韩合作秘书处副秘书长、驻美国使馆参赞、外交部亚洲司副司级干部、外交部亚洲司政工…...

钟建民:如何理解马克思的未来社会所有制设想?

在《荣兆梓:社会主义公有制及国家所有制的几个理论问题》(2025-01-12 09:08:00来源: 昆仑策研究院作者:荣兆梓)一文中,荣兆梓教授在第一部分专门谈了如何理解马克思未来社会公有制的问题。长期以来,理论界都把生产资料公有制当作主要的探讨对象。而在事实上这是违背马克…...

老田:重发十年前旧文,纪念遵义会议九十周年

【作者按】今天(1月15日)是遵义会议九十周年的日子,因为没有新的见解,就转帖一篇十年前的旧文,以资纪念。说到底,遵义会议仅仅只是对中央苏区时期的&ldquo;非毛化&rdquo;事业,进行过部分的改正或者纠错&mdash;&mdash;仅仅针对军事战略战术方面,对于政治…...

最高利率4.6%,美元定存持续火热,银行调整步伐或将放缓

日前,随着美国非农就业数据超预期,市场对美联储降息预期有所减弱。国内银行也打算放慢调整美元存款利率的步伐。&ldquo;若降息预期持续减弱,银行可能放缓或暂停下调美元存款利率。&rdquo;外资行人士对记者表示。据记者了解,经过去年美联储三次降息,美元存款利率已…...

泰方喊话中国游客:将尽最大努力提供优质旅游体验

【环球时报驻泰国特派记者 杨一】连日来,中国演员王星在泰缅边境失联事件引发中泰双方高度关注。当地时间10日晚,王星离泰回国,但该案引发中国民众对东南亚部分国家安全环境的担忧,预计短期内将对泰国的旅游业产生一定影响。泰国国家旅游局11日在微博上发表声明,称希望&am…...

“特朗普考虑宣布国家经济紧急状态”

【文/观察者网 齐倩】特朗普就任在即,美国盟友担心其关税威胁即将落地。1月8日,美国有线电视新闻网(CNN)援引四名知情人士的话称,特朗普正考虑就任后宣布国家经济紧急状态,引用《国际经济紧急权力法案》(IEEPA),为向世界各国无差别征税提供法律依据。IEEPA法案规定,若…...