HarmonyOS-面试资料

1. HarmonyOS-面试资料

1.1. HarmonyOS 优点、特点

1.1.1. 优点

  (1)在国家方面,是国产的系统,受国家支持不会有限制的情况。
  (2)设备互连1+8+N(1:手机 8:平板、PC、vr设备、可穿戴设备、智慧屏、耳机、AI音箱、车机 N:可延伸的设备和服务)
  (3)数据共享,万物互联。
  (4)未来的发展的前景。

1.1.2. 特点

  跨平台能力,基于微内核设计,提供分布式能力,强调安全性,以及面向未来全场景的无缝体验。

1.2. 鸿蒙系统的权限有哪些

1.2.1. 按权限等级划分

	normal(普通应用权限):可以访问相机、wifi信息等,权限较为基础,对用户隐私和系统安全的影响较小。system_basic(特殊应用权限):能够访问用户身份认证等资源,此类权限的风险程度相对较高,需要更严格的管理和控制。system_core(系统应用权限):可访问所有系统资源,但通常只有系统核心组件和经过严格严格审核的关键应用才会被授予该等级的权限。

1.2.2. 按授权方式划分

	system_grant(系统授权):只需要在配置文件中进行相应配置,系统默认授权,不需要用户手动干预。如:网络授权。user_grant(用户授权):应用需要在配置文件中进行配置,并且要在对应的功能调用前是否授权。如相机权限

1.2.3. 常见的权限

	设备权限:相机权限、麦克风权限、通讯录权限、位置权限、存储权限。网络权限:wifi权限、移动网络权限。传感器权限:加速度传感器权限、陀螺仪传感器权限、光线传感器权限其他权限:振动权限、通知权限、悬浮窗权限

1.3. 说一说鸿蒙系统的安全机制

1.3.1. 系统架构安全

  (1)微内核架构:鸿蒙采用微内核架构,内核仅保留最基础的系统服务,如多线程的调度、多线程通信等,其他系统服务在用户态实现。
这种架构减少了内核的代码量,降低了内核被攻击的风险,同时也便于对系统服务进行独立的管理和更新,提高了系统的稳定性和安全性。
  (2)分布式架构:鸿蒙的分布式架构支持设备之间的安全通讯和协同工作。在设备互联时,通过加密和认证等技术,确保数据在传输过程中的安全性和完整性,防止数据被窃取和篡改。
  如:手机和智能家电进行交互时,数据传输会经过加密处理,保障用户的隐私和设备的安全。

1.3.2. 权限管理安全

  (1)细粒度权限控制:鸿蒙系统提供完善的应用权限管理功能,能够对应用的权限进行细粒度的控制。用户可以根据应用的实际需求,灵活的授予或者拒绝应用的各种权限,如:相机权限、麦克风权限、位置权限等,从而有效防止应用过度获取用户数据,保护用户的隐私安全。
  (2)权限动态管理:权限的授予并非一成不变,鸿蒙系统支持权限的动态管理。
  例如:当应用在后台运行时,系统可以自动限制其部分权限的使用,当应用重新回到前台并需要相应权限时,再动态授权其权限,确保应用在不同的运行状态下都能以最小化的权限获取所需资源,进一步降低安全风险。

1.3.3. 权限管理安全数据加密安全

  (1)用户数据加密:鸿蒙系统对用户的重要数据进行加密存储。无论是本地存储的数据还是设备间的传输数据,都采用加密算法进行加密处理。即使数据被非法获取,攻击者也无法直接读取其中的内容,从而保障了用户数据的保密性和安全性。
  (2)文件加密:系统支持对文件进行加密,用户可以选择对敏感文件进行加密存储,只有在通过身份验证后才能解密和访问这些文件,为用户的个人文件和隐私信息提供了更高级别的保护。

1.3.3. 安全启动与认证

  (1)安全启动:在设备启动过程中,鸿蒙系统会进行安全启动校验,确保系统的完整性和合法性。只有经过数字签名认证的系统镜像和内核才能被正常启动,防止设备被植入恶意软件或非法篡改系统,从源头保障系统的安全运行。
  (2)身份认证:对于对设备互联和用户登录等场景,鸿蒙系统支持多种身份认证方式,如密码认证、指纹认证、面部识别等。通过这些强身份机制,确保只有合法的用户或设备能够访问相应的资源和服务,增强了系统的安全性和可靠性。

1.3.5. 应用安全管理

  (1)应用审核上架:鸿蒙应用商店对上架的应用进行严格的审核,确保应用的合法性和安全性。审核过程中会检查应用是否存在恶意代码、是否符合安全规范等,只有通过审核的应用才能在应用商店中上架供用户下载和使用,有效防止恶意应用进入用户的设备。
  (2)应用运行时监控:系统在应用运行时会对其进行监控,实时监测应用的行为是否异常。一旦发现应用存在异常行为,如私自获取用户数据、篡改系统设置等,系统会及时发出警告并采取相应的措施,如限制应用的权限或者直接终止应用的运行,保障用户设备的安全。

1.3.6. 隐私保护增强

  (1)隐私权限管理:鸿蒙系统重新定义并取消了通话记录、短信、电话、读取已安装应用列表等9类不合理的权限,降低了用户的隐私管理成本,从根源减少了隐私泄露的风险,把隐私控制权真正还给用户。
  (2)安全访问机制:例如在需要扫码的应用中,用户在扫码拍照的操作中,应用智能获得本次的扫码结果,无需将使用相机拍照的权限交给该应用,进一步细化和增强了对用户隐私数据的保护。

1.4. 说一说鸿蒙系统的微内核与安卓的内核区别

  鸿蒙系统使用的微内核架构,内核仅保留必要的基础系统服务(如:任务管理、内存分配)
  安卓系统采用的是Linux内核,其内核包含了操作系统绝大多数的功能和模块,且这些功能和模块都具有最高权限。优点是系统开发难度低,但一个模块出错,整个系统就可能崩溃,稳定性相对较弱。

1.5. 鸿蒙操作系统的微内核架构有哪些优势

  微内核架构优势包括:
  更高的安全性:因为服务之间的隔离性更强
  更好的可扩展性:因为可以按需添加或者删除服务
  更易于维护和更新

1.6. 分布式能力在鸿蒙系统中如何实现

  鸿蒙操作系统通过分布式软总线,分布式数据管理、分布式任务调度等技术实现跨设备的无缝协作和数据共享。

1.7. 请解释一下鸿蒙系统中的分布式软总线技术

  分布式软总线是一种通信机制,允许不同设备之间进行低延迟、高效率的数据传输和通信,实现折本间的协同工作。

1.8. 如何在鸿蒙操作系统中进行多设备协同开发?

  开发者可以使用华为提供的开发工具和sdk,如:DevEco Studio,进行多设备协同开发,实现一次开发,多端部署的目标。

1.9. 鸿蒙操作系统如何保障系统的安全性?

  鸿蒙操作系统采用的是,微内核设计,实现了操作系统的服务隔离,减少了单点故障的风险。
  同时,还引入了安全启动、数据加密等多重安全机制。

1.10. 请描述一下鸿蒙操作系统的用户界面开发框架

  鸿蒙操作系统的用户界面开发框架是基于Java的ArkUI框架,它提供了一套丰富的UI组件和布局方式,支持开发者快速构建美观、流畅的用户界面。

1.11. 鸿蒙操作系统支持哪些编程语言

  鸿蒙操作系统主要支持Java、c/c++以及javaScript等编程语言进行应用开发。

1.12. 请解释一下鸿蒙操作系统的IDE–DevEco Studio

  是华为为鸿蒙操作系统量身打造的集成开发环境,提供了代码编辑、调试、性能监控、应用分析等一系列开发工具、帮助开发者提高开发效率。

1.13. 请简述鸿蒙操作系统的任务调度机制

  鸿蒙操作系统的任务调度机制是基于微内核,它可以根据任务的优先级和资源需求,智能地在不同设备间调度任务,实现资源的最优分配。

1.14. 鸿蒙操作系统如何处理多任务并发

  鸿蒙操作系统通过微内核架构和先进的调度算法,实现了高效的多任务并发处理,保证了系统的流畅性和响应速度。

1.15. 请描述一下鸿蒙操作系统的文件系统

  鸿蒙操作系统的文件系统是面向分布式场景设计的,支持多设备间的文件共享和同步,提供了高效、可靠的数据存储能力。

1.16. 鸿蒙操作系统如何支持开发者进行应用调试

  鸿蒙操作系统提供了一系列的测试工具和服务,如模拟器、性能分析工具等,帮助开发者进行全面的应用测试和优化。

1.17. 请解释一下鸿蒙系统的能效管理机制

  鸿蒙操作系统通过智能调度、资源管理机制,优化了系统的能效表现,延长了设备的使用时间。

1.18. 鸿蒙操作系统如何处理权限管理?

  鸿蒙操作系统采用了严格的权限管理策略,确保应用只能访问授权的数据和服务,保护用户的隐私和数据安全。

1.19. 请描述一下鸿蒙操作系统的更新机制

  鸿蒙操作系统支持无缝更新,可以在不影响用户使用的情况下,自动下载并安装系统更新,确保系统的安全性和最新性。

1.20. 鸿蒙操作系统如何支持国际化和本地化

  鸿蒙操作系统提供了强大的国际化和本地化支持,允许开发者轻松地为不同地区和语言的用户提供定制化的服务和体验。

1.21. 请解释一下鸿蒙操作系统的开发者社区和支持资源

  华为为鸿蒙操作系统建立了一个活跃的开发者社区,提供了丰富的文档、教程、论坛等资源,帮助开发者解决问题和提升技能。

1.22. 鸿蒙操作系统如何促进开发者生态建设?

  华为通过提供开发工具、技术支持、开发者大会、合作伙伴计划等多种方式,鼓励和支持开发者参与鸿蒙操作系统的生态建设,共同推动产业发展。

1.23. 鸿蒙系统各设备之间如何通讯的

1.23.1. 简答:

  开发者可以使用鸿蒙操作系统提供的分布式能力API,如:分布式软总线API,实现设备间的通信和数据传输。

1.23.2. 复杂:

  一、基于分布式软总线通讯
(1)发现连接:分布式软总线提供了基于多种通讯方式如:wifi、蓝牙等设备发现连接能力。
(2)设备组网:它还具备统一的设备组网和拓扑管理能力,能为数据传输提供已组网设备的相关信息,确定设备之间的连接关系和数据传输路径,从而实现多设备的协同组网。
(3)数据传输:在建立连接和组网后,分布式软总线提供了数据传输通道,支持消息、字节、流、文件等多种数据类型的传输,满足不同设备间的不同业务场景的数据交互需求,业务方只需要使用其提供的API就能实现设备间的高速通信,无需关心具体的通信细节。

  二、通过网络协议通讯
(1)基于Socket的TCP/IP通信:Socket是一种提供网络通信能力的编程接口,鸿蒙系统中的设备可以利用ohos.net.Socket类来建立两个设备之间的网络连接,并在连接上进行数据的读写操作,实现设备间的可靠数据传输。
(2)基于HTTP协议的RESTFUL接口调用:设备间可以通过发送HTTP请求和接收HTTP响应来进行通讯。
  三、借助云端服务器通讯
(1)即时通讯应用:在一些即时通讯场景中,多台终端设备通过安装相应的应用,并向云端服务器申请账号。用户编辑信息后,通过网络将消息发送至云端服务器,服务器在根据接收放的状态决定是立即推送消息还是暂时缓存。
(2)数据同步与共享:设备可以将数据上传至云端服务器进行存储和管理,其他设备在需要时从云端获取数据,从而实现数据在不同设备间的同步和共享,保证各设备上的数据一致性和最新性。

1.24. 服务与卡片

1.24.1. 元服务卡片和ArkTS卡片有什么相同点与不同点,各自的适用场景是怎么样的。

元服务卡片(Meta Service Card)和ArkTS卡片都是使用ArkTS语言开发的,它们在功能和用途上有一些相似之处,也存在一些不同。

1.24.1.1. 相同点:

  开发语言:两者都是使用ArkTS语言进行开发,提供了声明式的UI构建方式和组件化开发体验。
  界面设计:它们都支持使用华为的ACE (Ability Cross-platform Environment) 设计语言,实现一致的用户界面风格。
  跨设备使用:无论是元服务卡片还是ArkTS卡片,都可以在多种鸿蒙设备上运行,提供无缝跨设备体验。
  动态更新:两种卡片都支持动态更新,能够在不更新整个应用的情况下,更新卡片内容。

1.24.1.2. 不同点:

  定义与范畴:
  (1)元服务卡片:是鸿蒙操作系统中的一种服务形式,它可以在不打开应用的情况下,向用户提供关键信息和快速操作。元服务卡片通常与系统的服务能力紧密结合,如通知、搜索等。
  (2)ArkTS卡片:更倾向于指的是使用ArkTS语言开发的卡片式UI组件,它可以是应用内的一部分,也可以作为独立的小程序存在。
  功能与交互:
  (1)元服务卡片:通常提供的是简短的信息展示和快速操作入口,例如显示天气信息、控制音乐播放等。   (2)ArkTS卡片:则可以承载更复杂的功能和交互,例如可以是一个完整的列表、表单或游戏界面。
  (3)适用场景:

  元服务卡片:适用于快速、便捷的信息展示和交互,特别适合于需要频繁更新内容的服务,例如新闻、天气、日程提醒等。
  ArkTS卡片:适用于需要复杂交互和功能的应用场景,如购物、阅读、游戏等,它们可以提供更为丰富的用户体验。

1.24.2. router机制、call机制与message机制有什么不同?

  这三个机制都可以用来刷新桌面卡片的,三种机制的数据都以JSON的格式进行配置,并使用formBindingData.createFormBindingData()函数构建数据对象。
  主要区别在于:
  router机制会直接打开应用界面,效果有点像点击桌面图标。也可以带参数打开应用,直接进入应用内部的某个特定位置,或者触发某项功能。
  使用场景:用于在卡片上点击按钮后跳转到应用中的指定UIAbility页面,实现一键直达功能。
  最佳实践:适用于UIAbility页面较多的应用,如音乐、视频、相册等,通过卡片提供不同的跳转按钮,方便用户快速进入所需页面。
  call机制是不打开应用界面,仅在后台拉起应用主体的UIAbility,来执行UIAbility内部的相关代码。call机制不受5秒时长的限制,可以先实现复杂且费时的数据加载,再提供给桌面卡片进行刷新。
  使用场景:用于在卡片上点击按钮后,不打开应用界面,只在后台调用应用的指定方法,执行特定操作。
  最佳实践:适用于需要后台处理操作的场景,如音乐播放控制、天气数据刷新等,可以在后台完成数据加载和处理,然后更新卡片内容。
  message机制则不涉及到应用的UIAbility,只是拉起桌面卡片自己的FormAbility,也可以刷新卡片,但仍然受5秒时长的限制,更适合轻量化的的实现卡片内容的刷新。
  使用场景:用于在卡片上点击按钮后,拉起卡片自身的FormAbility,进行轻量级的卡片内容刷新。
  最佳实践:适用于简单的卡片内容刷新,不需要后台复杂操作的场景,如展示简单文字内容、图片等,可以通过message事件快速刷新。

1.25. ForEach与LazyForEach的区别

  LazyForEach 是一种懒加载循环结构,它会在需要时才加载并迭代列表中的元素。这对于大型数据集或需要按需加载数据的应用程序非常有用,因为它可以减少内存使用并提高应用程序的性能。
  ForEach 是一种常规的循环结构,它会迭代列表中的每个元素,并在循环中执行指定的操作。与LazyForEach不同,ForEach 会立即加载并迭代整个列表,因此不适合处理大型数据集或需要按需加载数据的应用程序,
  总的来说,选择使用 LazyForEach 还是 ForEach 取决于您的应用程序的需求和性能要求。如果您需要处理大型数据集或需要按需加载数据,那么 LazyForEach 可能是更好的选择。如果您只需要迭代小型数据集或不需要按需加载数据,那么 ForEach 可能就足够了。

1.26. 什么是HAP

  是应用安装和运行的基本单元。
  HAP包是有代码、资源、第三方库、配置文件打包生成的模块包
  分为2种类型:entry和feature
  entry:应用的主模块。
  feature:动态特征模块。
  应用程序包只能有一个entry包和多个的feature。

1.27. HAR与HSP的区别

  HAR:静态共享包
  HSP:动态共享包

1.27.1. 区别:

  相同点:
  1.模块间的资源共享
  2.不支持在设备上单独安装、运行
  3.不支持再配置文件中声明UIAbility组件
  4.不支持循环依赖,也不支持依赖传递

1.27.2. 不同点:

  1.HAR: 可以发布到第三方库 HSP不可以
  2.HAR:不支持再配置文件中声明配置页面 HSP可以
  3.HSP: 多模块依赖只打包一份 HAR: 每个依赖都会加载份
  4.性能上: HAR > HSP 若考虑占用空间上HSP 占用少
  5.HSP:支持按需加载

1.28. Stage模型与FA模型的区别

1.28.1. Stage模型(华为推荐模型):

  组件分类:包括UIAbility和ExtensionAbility。
  UIability主要用于用户交互。
  ExtensionAbility:用于提供特定场景下的扩展能力。
  开发方式:
  采用面向对象的方式,应用组件以类接口的形式开放,支持派生,有利于扩展。
  进程和线程模型:
  多个应用组件共享同一个ArkTS引擎实例,减少了内存占用,并允许组件之间方便共享对象和状态。

1.28.2. FA模型:

  组件分类:包含PageAbility,ServiceABility和DataAbility。
  1.PageAbility用于展示UI
  2.ServiceAbility提供后台服务
  3.DataAbility用于数据分享。
  发开方式:
  通过导出匿名对象和固定入口文件的方式来指定应用组件,这种方式虽然对WEB开发者友好,但不支持派生,扩展能力有限。
  进程和线程模型:
  每个应用组件实例运行在独立的ArkTS引擎实例中。每个实例在自己的线程上创建,导致组件之间无法共享状态,并且会增加内存开销。

1.29. 说一下MVVM模式

  主要分为3个组成部分:
  1.Model(模型):负责存储和管理应用的数据以及业务逻辑。model从后端接口获取数据,是应用程序的数据基础,确保数据的一致性和完善性。
  2.View(视图):负责用户界面的展示并于用户交互。View不包含任何业务逻辑,它通过绑定ViewModel层提供的数据来动态更新UI
  3.ViewModel(视图模型):作为连接Model和View的桥梁,ViewModel负责管理UI状态和交互逻辑。它监控Model数据的变化,通过View更新UI,同时处理用户交互事件并转为数据操作。
MVVM模式:不仅提高了开发效率和应用性能,还使得应用更加模块化,便于管理和维护。

1.30. UIAbility的生命周期

onCreate():页面初始化 ---拉起窗口回调:onWindowStageCreate()
onForeground():进入前台调用
onBackground():进入后台调用
onDestroy():销毁 --在销毁之前调用销毁窗口回调:onWindowStageDestroy()

1.31. 组件的生命周期

// 页面生命周期(entry)
onPageShow(){}:每次进入前台前调用. 在vue中其实就是钩子函数 等于create,在这叫生命周期
onPageHide(){}: 页面从前台转为后台时调用
onBackPress(){}: 当页面点击退出/返回时调用
// 组件生命周期(Component)
当单击页面的是由优先加载组件,因为页面就是组件渲染出来的。
aboutToAppear(){}: 组件开始加载时调用,在执行build() 函数之前执行
aboutToDisappear(){}: 关闭组件时调用
页面和组件生命周期顺序
1.aboutToAppear()-->组件声明周期
2.build()
3.onPageShow() -->进入页面页面调用的生命周期,开启页面展示/渲染
4.方式一: 当页面置于后台,调用onPageHide() -->开启页面隐藏 方式二: 当页面退出时执行onPagePress()-->开启页面退出 后执行 	onPageHide()-->开启页面隐藏
5.aboutToDisappear() -->关闭组件

在这里插入图片描述

1.33. 请解释 ArkTS 语言中的属性装饰器(@Prop、@State 等)的作用和使用场景。

  常见装饰器:@prop 、@Like、@Provide 和 Consume、@ObjectLink 和 @ Observed 、@watch
  在ArkTS语言中,属性装饰器(@prop,@state等)是构建响应式、可复用和易于维护的组件的重要工具,他们根据不同的需求在组件之间或组件内部有效地管理和传递数据,实现了高效的UI开发和数据处理逻辑。在实际项目中,根据具体的业务场景选择和使用这些属性装饰器,能够提高代码质量和开发效率,为用户提供良好的交互体验。

1.33. ArkTS 与传统 JavaScript 在语法和编程模式上有哪些主要区别?

ArkTS的底层是: javaScript1.系统类型: 
ArkTS:强类型特性语言,开发中需要显式声明变量、函数参数和返回值。
javaScript:弱类型语言,变量的类型在运行时根据赋值确定,开发者无需显式声明类型。
2.声明式UI语法(ArkUI框架相关)
ArkTS:结合ArkUI框架,采用声明式UI语法来构建用户界面。开发者通过描述UI组件的结构和属性来创建界面。这种方式使得UI代码更直观、简洁、易于理解和维护,同时与数据绑定和状态管理紧密结合,当数据或状态变化时,UI能自动更新。
javaScript: 在构建UI时,有一定的声明式编程思想,但语法相对复杂且多样,需要手动管理DOM更新,与数据的关联和更新机制比如ArkTs简介高效。
3.装饰器语法
ArkTS:广泛使用装饰器来实现特定的功能。
javaScript:本身并不支持装饰器语法(ES6及之前版本),虽然可以通过Babel等工具进行转译来使用装饰器,但相对来说不是标准、广泛应用的语法特征,并且在使用和理解上需要额外的学习成本和配置。

1.34. 什么是组件化开发?在鸿蒙应用中,如何实现组件的复用和独立维护?

  定义:
  组件化开发是一种将软件分解为独立、可复用的组件的开发模式。
  每个组件封装了特定的功能和数据,具有明确的接口,能够独立开发、测试、部署和维护。这种开发模式提高了软件的可扩展性、可维护性和复用性,便于团队协作开发,降低了系统的复杂性。

1.35. 鸿蒙中的状态管理有哪些

LocalStorage: 页面级UI状态管理
AppStorage: 应用全局的UI状态存储
PersistenStorage:持久化存储UI状态

1.36. 鸿蒙中的持久化有哪些

RelationalStore: 关系型数据库RDB
PersistenStorage:持久化存储UI状态
云数据库:AGC中的
sqlList

1.37. 分层架构设计和模块化设计的区别

  (1)分层架构设计:
  将应用分为公共能力层,基础特征层、定制层,可以降低层间的依赖性,从而提升代码的可维护性。
  分层架构设计进一步明确每层的职责和层间的交互机制,使框架清晰明确。
  (2)模块化设计:
  将应用分解为多个功能模块,其中每个模块负责执行特定的功能。
  通过模块化设计提高了代码的可理解性和可复用性,使应用的扩展和维护变得更为简便,同时降低了系统各部分之间的耦合度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/503131.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言基础| 中级绘图

写在前面 前面第六章的图形主要是展示单分类变量或连续型变量的分布情况。本章主要研究二元变量或多元变量关系的可视化。更多教程可参考: R语言基础学习手册 图片集锦: 11.1 散点图 1)添加最佳拟合曲线的散点图: 绘制汽车重…

神经网络第一课

目录 背景知识生物神经元人工神经元模型神经网络训练神经网络结论背景知识 神经网络是一种人工智能模型,其主要受生物神经系统启发,重现了大脑中神经元之间相互连接的方式。 神经网络已在很多领域中取得显著成就,如图像识别、自然语言处理和语音识别等。 生物神经元 神经…

Docker:安装 XXL-JOB 分布式调度任务的技术指南

1、简述 XXL-JOB 是一个分布式任务调度平台,提供简单易用的任务调度功能。它支持分布式调度、失败重试、任务监控和报警等功能。XXL-JOB 采用了服务端与执行器的架构,任务调度在服务端进行,而任务的实际执行则由各个执行器完成。 XXL-JOB 的…

Git revert回滚

回退中间的某次提交(此操作在预生产分支上比较常见),建议此方式使用命令进行操作(做好注释,方便后续上线可以找到这个操作) Git操作: 命令:revert -n 版本号 1:git re…

新年到了!使用Python创建一个简易的接金元宝游戏

引言 在本教程中,我们将一起学习如何使用Python编程语言和Pygame库来创建一个简单的休闲游戏——“接金元宝”。 准备工作 首先,确保你的计算机上已经安装了Python(推荐3.6以上版本)和Pygame库。如果还没有安装Pygame&#xff0…

GoF23种设计模式 简介

文章目录 面向对象(OO)设计原则(7)单一职责原则开闭原则里氏代换原则依赖倒转原则接口隔离原则合成复用原则迪米特法则 创建型模式 (5)工厂方法模式 (类模式,其余都是对象模式)抽象工厂模式建造…

【数电尾灯设计】2022-8-16

缘由数电尾灯设计问题,求解答--CSDN问答 从题目可以列出 000 100 010 111-----------4进制 000 100 010 110 001 101 011 111-----------8进制 由列出可知用16进制芯片的3个引脚可以获得8进制推导出4进制从而可用逻辑处理为4进制实现尾灯功能。之上第一步实现了尾灯…

在线机考|2024华为实习秋招春招编程题(最新)——第3题_个性化歌单推荐系统_300分(十一)

题目内容 假设你是音乐服务的开发者,为了提高用户体验需要解决推荐歌单的同质化问题,保证推荐给用户的所有歌单不包含相同歌曲的。给定一个包含N个歌单和M条歌单重复记录,每个歌单用一个从1到N的整数编号,歌单重复记录包含两个歌单的ID,表示两个歌单有相同的歌曲。 你的任…

Ant Design Pro写项目的总结经验(react)

配置代理(proxy) 在config文件夹下面的config.ts里面配置修改 修改前:修改后: 修改账号框以及登录接口以及登录返回的code 由于它的账号框是username,但是我们接口请求要填写的是account,因此可以全局搜索进行替换…

安卓14无法安装应用解决历程

客户手机基本情况: 安卓14,对应的 targetSdkVersion 34 前天遇到了安卓14适配问题,客户发来的截图是这样的 描述:无法安装我们公司的B应用。 型号:三星google美版 解决步骤: 1、寻找其他安卓14手机测试…

51单片机(二)中断系统与外部中断实验

中断即单片机因为某些原因E暂定现在的工作P0,转去做其他的工作P1,完了之后继续之前的事P0,其他工作P1就是中断程序,原因E就是中断事件,原因由外部发生,程序不能预测到的是硬中断,可以由程度触发…

66.基于SpringBoot + Vue实现的前后端分离-律师事务所案件管理系统(项目 + 论文)

项目介绍 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装律师事务所案件管理系统软件来发挥其高效地信息处理的作用…

大数据组件(三)快速入门实时计算平台Dinky

大数据组件(三)快速入门实时计算平台Dinky Dinky 是一个开箱即用的一站式实时计算平台(同样,还有StreamPark),以 Apache Flink 为基础,连接数据湖仓等众多框架,致力于流批一体和湖仓一体的建设与实践。 Di…

实际开发中,常见pdf|word|excel等文件的预览和下载

实际开发中,常见pdf|word|excel等文件的预览和下载 背景相关类型数据之间的转换1、File转Blob2、File转ArrayBuffer3、Blob转ArrayBuffer4、Blob转File5、ArrayBuffer转Blob6、ArrayBuffer转File 根据Blob/File类型生成可预览的Base64地址基于Blob类型的各种文件的下载各种类型…

《Vue3实战教程》19:Vue3组件 v-model

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 组件 v-model​ 基本用法​ v-model 可以在组件上使用以实现双向绑定。 从 Vue 3.4 开始&#xff0c;推荐的实现方式是使用 defineModel() 宏&#xff1a; vue <!-- Child.vue --> <script setup> co…

源代码编译安装X11及相关库、vim,配置vim(1)

一、目录结构 如下。 所有X11及相关库装到mybuild&#xff0c;源代码下载到src下&#xff0c;解压&#xff0c;进入&#xff0c;编译安装。编译时指定--prefix到相同的目录&#xff0c;即上图中mybuild。 ./configure --prefixpwd/../../mybuild [CFLAGS"-I/path/to/X11…

图漾相机基础操作

1.客户端概述 1.1 简介 PercipioViewer是图漾基于Percipio Camport SDK开发的一款看图软件&#xff0c;可实时预览相机输出的深度图、彩色图、IR红外图和点云图,并保存对应数据&#xff0c;还支持查看设备基础信息&#xff0c;在线修改gain、曝光等各种调节相机成像的参数功能…

vulnhub靶场-potato(至获取shell)

arp-scan -l 扫描IP 使用御剑端口扫描扫描端口&#xff0c;扫到了80和7120两个端口&#xff0c;其中7120为ssh端口 使用dirb http://192.168.171.134 扫描目录 发现info.php 访问为phpinfo界面 访问192.168.171.134为一个大土豆&#xff0c;没什么用 所以我们从ssh入手 盲…

谈一谈对事件循环的理解

事件循环⼜叫做消息循环&#xff0c;是浏览器渲染主线程的⼯作⽅式。特别是在JavaScript和Node.js等异步编程环境中&#xff0c;也是核心概念之一。它的主要作用是管理异步操作&#xff0c;确保代码的执行顺序和效率。 并且这个话题很有可能是一个面试题。我先把参考答案放下面…

kafka使用以及基于zookeeper集群搭建集群环境

一、环境介绍 zookeeper下载地址&#xff1a;https://zookeeper.apache.org/releases.html kafka下载地址&#xff1a;https://kafka.apache.org/downloads 192.168.142.129 apache-zookeeper-3.8.4-bin.tar.gz kafka_2.13-3.6.0.tgz 192.168.142.130 apache-zookee…