HarmonyOS应用开发-搭建开发环境
本文介绍如何搭建 HarmonyOS 应用的开发环境,介绍下载安装 DevEco Studio 开发工具和 SDK 的详细流程。华为鸿蒙 DevEco Studio 是面向全场景的一站式集成开发环境,面向全场景多设备,提供一站式的分布式应用开发平台,支持分布式多端开发、分布式多端调测、多端模拟仿真,提供全方位的质量与安全保障。
一、下载安装 DevEco Studio
1、官网下载 DevEco Studio
官网:HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者
下载 DevEco Studio 3.1.1 Release 最新版本。

下载完成后我们解压压缩包,点击启动exe安装程序。
2、安装 DevEco Studio
启动安装exe程序,进入安装界面欢迎页。
我们点击Next下一步。

选择安装路径,这里根据大家自己的喜好选择路径安装即可,需要2GB的存储空间。

下一步,我们勾选 “生成快捷方式” 和 “添加到path环境变量” 。

这里默认文件夹名,点击安装。

完成安装,需要对电脑重启。

二、启动 DevEco Studio
1、安装 Node.js 和 ohpm
首次运行 DevEco Studio 会来到这个页面。
HarmonyOS应用开发需要我们的电脑上安装 Node.js 和 ohpm (鸿蒙生态三方库的包管理工具)
这里华为官方提供了镜像,如果本机上之前没有装过,直接勾选 install 然后下一步即可。

2、安装HarmonyOS SDK
基础组件安装后,我们需要安装HarmonyOS的SDK。HarmonyOS SDK提供应用及服务开发所需的一系列系统开放能力,包括框架、Ability、分布式服务、安全、方舟编译器、HMS Core、基础软件服务、硬件服务等。
这里选择安装路径即可,我直接默认路径,点击下一步。

这个页面展示了所有需要安装的包,点击下一步安装。

几分钟后安装完成。

三、新建测试项目
1、通过模板创建项目
我们选择 Empty Ability 模板新建一个测试项目。
Empty Ability 模板是一个空白模板,它支持手机、平板、手表等多种鸿蒙终端运行。

2、勾选Stage模式
勾选Stage模式。Satge模式已经是 API 9 之后的默认勾选模式。

这里科普一下FA模型和Stage模型的区别:
API 8及以前的接口基于FA模型提供;从API 9开始,OpenHarmony主推Stage模型。 FA模型与Stage模型是两套不同的应用模型,他们拥有各自的组件。
- FA模型:OpenHarmony API 7开始支持的模型,提供三种应用组件,分别是PageAbility、ServiceAbility和DataAbility。
- Stage模型:OpenHarmony API 9开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。提供了两种应用组件,分别是UIAbility和ExtensionAbility。
3、勾选低代码开发选项
开启Super Visual低代码模式,这可以帮助我们快速建立起一个应用。

低代码开发是DevEco Studio为HarmonyOS开发者提供的可视化页面的开发方式,具备丰富的UI页面编辑能力,开发者可以在图形化的用户界面上自由拖拽组件、完成数据的参数化配置,还能实时预览开发页面的效果,所见即所得。
低代码开发效果示例:

低代码开发为我们开发者提供了UI界面开箱即用的组件,通过简单拖、拉、拽和可视化数据绑定的操作方式,快速开发用户界面。不仅可以减少键入的代码量,降低开发成本,还提升了页面开发效率,助力高效开发。
四、运行测试项目
1、创建测试页面
这里我通过低代码组件随便做了一个登录页。我们低代码组件的改动体现在index.visual上。

index.visual代码我提供出来给大家参考:
{"document": {"VisualVersion": "12","type": "ETS","custom": false,"path": "/entry/src/main/supervisual/pages/Index"},"visualModel": {"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"width": "100%","height": "100%"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"width": "100%","height": "100%","justify-content-rc": "center","position": "absolute","top": "0vp","left": "0vp","border-bottom-color": "#4a4a4a","border-bottom-width": "1vp"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"position": "absolute","top": "95vp","width": "100%","height": "100vp","display-priority": "0","align-items-row": "center","justify-content-rc": "center"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"width": "100vp","height": "100vp","align": "center","top": "0vp","background-image-size": "auto","position": "relative","src": "$r('app.media.icon')","left": "0%"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "image1","type": "image"}}],"id": "row3","type": "row"}},{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"height": "50vp","width": "100%","left": "0vp","top": "200vp","border-top-right-radius": "0vp","content": "登录界面","font-size": "26fp","font-weight": "medium","font-family": "sans-serif","text-align": "center","text-overflow": "clip","position": "absolute"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "text1","type": "text"}},{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"height": "30vp","width": "100%","left": "0vp","top": "250vp","content": "登录帐号以使用更多服务","font-size": "14fp","text-align": "center","font-color": "#8c8c8c","position": "absolute"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "text2","type": "text"}},{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"height": "50vp","width": "100%","left": "0vp","top": "328vp","position": "absolute","placeholder": "邮箱/手机号/用户名","margin-bottom": "0vp","padding-top": "0vp","border-bottom-width": "1vp","border-bottom-color": "#4a4a4a","background-color": "#ffffff"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "text-input1","type": "text-input"}},{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"height": "50vp","width": "100%","left": "0vp","top": "380vp","position": "absolute","placeholder": "密码","textInput-type": "Password","background-color": "#ffffff","border-bottom-width": "1vp","border-bottom-color": "#4a4a4a"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "text-input2","type": "text-input"}},{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"position": "absolute","top": "430vp","left": "5%","width": "90%","height": "30vp"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"height": "30vp","width": "50%","position": "absolute","top": "0px","left": "50%","text-align": "end","content": "忘记密码","font-size": "14fp"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "text3","type": "text"}},{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"height": "30vp","width": "50%","text-align": "start","position": "absolute","content": "短信验证码登录","font-size": "14fp","top": "0vp","left": "0%"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "text4","type": "text"}}],"id": "row1","type": "row"}},{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"position": "absolute","top": "92%","left": "5%","height": "8%","width": "90%"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"height": "100%","width": "33.3%","position": "absolute"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "text7","type": "text"}},{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"height": "100%","width": "33.4%","position": "absolute"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "text9","type": "text"}},{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"height": "100%","width": "33.3%","text-align": "end","position": "absolute"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "text8","type": "text"}}],"id": "row2","type": "row"}},{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"width": "90%","height": "40vp","label": "登录","font-size": "20fp","position": "absolute","top": "530vp","left": "5%"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "button1","type": "button"}},{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"height": "30vp","width": "100%","content": "注册账号","text-align": "center","font-size": "14fp","position": "absolute","top": "570vp","left": "0vp"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "text5","type": "text"}},{"dataType": "VisualModel","value": {"propertyStorage": {"dataType": "Map","value": {}},"dynamicPropertyStorage": {"dataType": "Map","value": {}},"mediaPropertyStorage": {"dataType": "Map","value": {}},"dynamicMediaPropertyStorage": {"dataType": "Map","value": {}},"property": {"dataType": "Map","value": {"height": "4%","width": "100%","text-align": "center","font-size": "14fp","position": "absolute","top": "88%","left": "0vp","content": "其他方式登录","align": "center"}},"dynamicProperty": {"dataType": "Map","value": {}},"children": [],"id": "text6","type": "text"}}],"id": "column1","type": "column"}}],"id": "wrapper","type": "column"}},"formData": {"data": {"dataType": "Map","value": {}},"actions": {"dataType": "Map","value": {}}},"customData": {"property": {"dataType": "Map","value": {}},"event": {"dataType": "Map","value": {}}}
}
我们点击运行按钮,会让我们选择运行设备,这里的设备都是模拟器,需要安装,我们先进入设备管理器安装设备。

以上是纯前端,业务逻辑写在在index.ets文件中,这里我们只是测试开发环境可以运行简单应用,所以业务逻辑我们就不写了,具体的应用实战我会在后面的章节给出。
2、安装设备仿真器
这个模板支持手机、电视、手表三种终端模拟,我们先安装emulator(仿真器)。


安装好之后,我们再点击每一个硬件设备单独安装。这里我选择的手机。

我选择的API9版本。

要安装个几分钟。

安装完成。

3、开启设备仿真器
点击我们刚刚新建的设备,启动它。

仿真终端被立刻启动。

完全启动大概需要个一分钟,开机后如下:

4、运行项目
我们运行项目。

我们制作的应用会在仿真设备里打开。

测试我们登录界面是否可以正常输入和点击。

测试没有问题,标志着我们新建的HarmonyOS应用运行成功。
相关文章:
HarmonyOS应用开发-搭建开发环境
本文介绍如何搭建 HarmonyOS 应用的开发环境,介绍下载安装 DevEco Studio 开发工具和 SDK 的详细流程。华为鸿蒙 DevEco Studio 是面向全场景的一站式集成开发环境,面向全场景多设备,提供一站式的分布式应用开发平台,支持分布式多…...
<JavaEE> TCP 的通信机制(五) -- 延时应答、捎带应答、面向字节流
目录 TCP的通信机制的核心特性 七、延时应答 1)什么是延时应答? 2)延时应答的作用 八、捎带应答 1)什么是捎带应答? 2)捎带应答的作用 九、面向字节流 1)沾包问题 2)“沾包…...
电脑怎么设置代理IP上网?如何隐藏自己电脑的真实IP?
在现代互联网中,代理IP已成为许多用户保护隐私和上网安全的重要手段。通过设置代理IP,用户可以隐藏自己的真实IP地址,提高上网的安全性,同时保护个人信息不被泄露。本文将详细介绍如何设置代理IP上网以及如何隐藏电脑的真实IP地址…...
Django信号机制源码分析(观察者模式)
Django信号的实现原理本质是设计模式中的观察者模式,浅谈Python设计模式 -- 观察者模式,也可以叫做发布-订阅模式,信号对象维护一个订阅者列表,当信号被触发时,它会遍历订阅者,依次通知它们。 先来回顾一下…...
MyBatis-config.xml配置文件
1、基本介绍: mybatis的核心配置文件(mybatis-config.xml),比如配置jdbc连接信息,注册mapper等等,我们需要对这个配置文件有详细的了解。 官网地址有详细介绍 mybatis – MyBatis 3 | 配置 2、properties属性 在通常的情况下&am…...
【Spring实战】17 REST服务介绍
文章目录 1. 为什么出现2. 拥有哪些优势3. Spring中的应用4. spring-boot-starter-data-rest总结 REST(Representational State Transfer)是一种软件架构风格,通常用于设计网络应用程序的服务接口。RESTful 服务是基于 REST 原则构建的网络服…...
java struts2教务管理系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目
一、源码特点 java struts2 教务管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助 struts2 框架开发,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发,数据库…...
跟着cherno手搓游戏引擎【3】事件系统和预编译头文件
不多说了直接上代码,课程中的架构讲的比较宽泛,而且有些方法写完之后并未测试。所以先把代码写完。理解其原理,未来使用时候会再此完善此博客。 文件架构: Event.h:核心基类 #pragma once #include"../Core.h" #inclu…...
排序算法之快速排序
快速排序是一种高效的排序算法,它的基本思想是采用分治策略,将一个无序数组分割成两个子数组,分别对子数组进行排序,然后将两个排序好的子数组合并成一个有序数组。快速排序的性能优于归并排序,尤其在处理大规模数据时…...
Docker 从入门到实践:Docker介绍
前言 在当今的软件开发和部署领域,Docker已经成为了一个不可或缺的工具。Docker以其轻量级、可移植性和标准化等特点,使得应用程序的部署和管理变得前所未有的简单。无论您是一名开发者、系统管理员,还是IT架构师,理解并掌握Dock…...
用IDEA创建/同步到gitee(码云)远程仓库(保姆级详细)
前言: 笔者最近在学习java,最开始在用很笨的方法:先克隆远程仓库到本地,再把自己练习的代码从本地仓库上传到远程仓库,很是繁琐。后发现可以IDEA只需要做些操作可以直接把代码上传到远程仓库,也在网上搜了些…...
【Linux】进程控制深度了解
> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟练掌握Linux下的进程控制 > 毒鸡汤ÿ…...
kbdnso.dll文件缺失,软件或游戏报错的快速修复方法
很多小伙伴遇到电脑报错,提示“kbdnso.dll文件缺失,程序无法启动执行”时,不知道应该怎样处理,还以为是程序出现了问题,想卸载重装。 首先,先要了解“kbdnso.dll文件”是什么? kbdnso.dll是Win…...
Spring技术内幕笔记之IOC的实现
IOC容器的实现 依赖反转: 依赖对象的获得被反转了,于是依赖反转更名为:依赖注入。许多应用都是由两个或者多个类通过彼此的合作来实现业务逻辑的,这使得每个对象都需要与其合作的对象的引用,如果这个获取过程需要自身…...
kotlin foreach 循环
java中的foreach循环也使用于kotlin ,先回顾下java里面的foreach循环 java foreach循环格式 for(元素类型t 元素变量x : 遍历对象obj){引用了x的语句;} 例如: int[] intary {1,2,3,4};for (int a: intary) {Log.d("intary", String.value…...
分享相关知识
直接使用海龟图进行创作移动动态的游戏 这段代码是一个简单的turtle模块实现的小游戏,主要功能包括: 窗口和无人机初始化: 创建了一个turtle窗口,设置了窗口的背景颜色和标题。创建了一个表示无人机的turtle,形状为正…...
RabbitMQ(七)ACK 消息确认机制
目录 一、简介1.1 背景1.2 定义1.3 如何查看确认/未确认的消息数? 二、消息确认机制的分类2.1 消息发送确认1)ConfirmCallback方法2)ReturnCallback方法3)代码实现方式一:统一配置a.配置类a.生产者c.消费者d.测试结果 …...
ubuntu 编译内核报错
Ubuntu 编译 Linux 内核经常会遇到如下错误: 如果报错 canonical-certs.pem: 如下: make[1]: *** No rule to make target ‘debian/canonical-certs.pem’, needed by ‘certs/x509_certificate_list’. Stop. make: *** [Makefile:1868: …...
Python之自然语言处理库snowNLP
一、介绍 SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是&…...
C# 语法进阶 委托
1.委托 委托是一个引用类型,其实他是一个类,保存方法的指针 (指针:保存一个变量的地址)他指向一个方法,当我们调用委托的时候这个方法就立即被执行 关键字:delegate 运行结果: 思…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...
