目录

应用深浅色适配

应用跟随系统的深浅色模式

应用主动设置深浅色模式

系统默认判断规则

使用建议与限制

设置应用内主题换肤

概述

自定义主题色

设置应用内组件自定义主题色

设置应用局部页面自定义主题风格

设置应用页面局部深浅色

系统缺省token色值


应用深浅色适配

当前系统存在深浅色两种显示模式,为了给用户更好的使用体验,应用应适配深浅色模式。从应用与系统配置关联的角度来看,适配深浅色模式可以分为下面两种情况:

应用跟随系统的深浅色模式

1、颜色适配

  • 自定义资源实现
  • resources目录下增加深色模式限定词目录(命名为dark)并新建color.json文件,可显示深色模式颜色资源的配置

  • 图1 resources目录结构示意

  • 例如,开发者可在这两个color.json中定义同名配色定义并赋予不同的色值。

  • base/element/color.json文件:

    {"color": [{"name": "app_title_color","value": "#000000"}]
    }
    
  • dark/element/color.json文件:

  • {"color": [{"name": "app_title_color","value": "#FFFFFF"}]
    }
    

  • 通过系统资源实现

  • 开发者可直接使用的系统预置资源,即分层参数,同一资源ID在设备类型、深浅色等不同配置下有不同的取值。通过使用系统资源,不同的开发者可以开发出具有相同视觉风格的应用,不需要自定义两份颜色资源,在深浅色模式下也会自动切换成不同的颜色值。例如,开发者可调用系统资源中的文本主要配色来定义应用内文本颜色。

  • Text('使用系统定义配色').fontColor($r('sys.color.ohos_id_color_text_primary'))
    

  2、图片资源适配

  1. 采用资源限定词目录的方式。参照颜色适配的方法,需要将深色模式下对应的同名图片放到 dark/media 目录下,再通过$r的方式加载图片资源的key值,系统做深浅色模式切换时,会自动加载对应资源文件中的value值。

    对于 SVG 格式的一些简单图标,可以使用fillColor属性配合系统资源改变图片的绘制颜色。不通过两套图片资源的方式,也可以实现深浅色模式适配。

    Image($r('app.media.pic_svg')).width(50).fillColor($r('sys.color.ohos_id_color_text_primary'))
    

     3、Web组件适配

    1. Web组件支持对前端页面进行深色模式配置,可参考Web组件深色模式进行相关配置。

      4、"自定义节点"适配

    1. 自定义节点BuilderNode和ComponentContent需手动传递系统环境变化事件,触发节点的全量更新。

      // 记录创建的自定义节点对象
      const builderNodeMap: Array<BuilderNode<[Params]>> = new Array();class MyFrameCallback extends FrameCallback {onFrame() {updateColorMode();}
      }function updateColorMode() {builderNodeMap.forEach((value, index) => {// 通知BuilderNode环境变量改变,触发深浅色切换value.updateConfiguration();})
      }
      // ... other code ...
      aboutToAppear() {
      // ... other code ...this.getUIContext()?.postFrameCallback(new MyFrameCallback());
      // ... other code ...
      }
      

      5、应用监听深浅色模式切换事件

    1. 应用可以主动监听系统深浅色模式变化,进行其他类型的资源初始化等自定义逻辑。无论应用是否跟随系统深浅色模式变化,该监听方式均可生效。

    2. a. 在 AbilityStage 的 onCreate() 生命周期中获取APP当前的颜色模式并保存到 AppStorage。

    3. onCreate(): void {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');AppStorage.setOrCreate('currentColorMode', this.context.config.colorMode);
      }
      
    4. b. 在 AbilityStage 的 onConfigurationUpdate() 生命周期中获取最新变更的颜色模式并刷新到 AppStorage。

      onConfigurationUpdate(newConfig: Configuration): void {AppStorage.setOrCreate('currentColorMode', newConfig.colorMode);hilog.info(0x0000, 'testTag', 'the newConfig.colorMode is %{public}s', JSON.stringify(AppStorage.get('currentColorMode')) ?? '');
      }
      
    5. c. 在Page中通过 @StorageProp + @Watch 方式获取当前最新颜色并监听设备深色模式变化。

      @StorageProp('currentColorMode') @Watch('onColorModeChange') currentMode: number = ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT;
      
    6. d. 在 aboutToAppear 初始化函数中根据当前最新颜色模式刷新状态变量。

      aboutToAppear(): void {if (this.currentMode == ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT) {//当前为浅色模式,资源初始化逻辑}else {//当前为深色模式,资源初始化逻辑}
      }
      
    7. e. 在 @Watch 回调函数中执行同样的适配逻辑。

      onColorModeChange(): void {if (this.currentMode == ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT) {//当前为浅色模式,资源初始化逻辑} else {//当前为深色模式,资源初始化逻辑}
      }
      

    应用主动设置深浅色模式

    应用默认配置为跟随系统切换深浅色模式,如不希望应用跟随系统深浅色模式变化,可主动设置应用的深浅色风格。设置后,应用的深浅色模式固定,不会随系统改变。

    onCreate(): void {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_DARK);
    }
    

    系统默认判断规则

    1. 如果应用调用上述setColorMode接口主动设置了深浅色,则以接口效果优先。
    2. 应用没有调用setColorMode接口时:
    • 如果应用工程dark目录下有深色资源,则系统组件在深色模式下会自动切换成为深色。
    • 如果应用工程dark目录下没有任何深色资源,则系统组件在深色模式下仍会保持浅色体验。

    如果应用全部都是由系统组件/系统颜色开发,且想要跟随系统切换深浅色模式时,请参考以下示例修改代码来保证应用体验。

    onCreate(): void {this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
    }
    

    使用建议与限制

    • 建议方法
    • 当应用跟随系统深色或浅色模式时,建议采用AbilityStage的监听回调或Ability的监听回调方式,主动监听系统深浅色模式变化。一旦颜色模式发生变化,应通过绑定状态变量等方法,执行特定的业务逻辑。

    • 不推荐方法
    • 开发者在使用资源时,未采用监听系统深浅色模式变化的方式,而是在属性设置中通过函数适配深浅色变更。例如,参考以下代码写法:

    • getResource() : string {// 获取系统颜色模式if (colorMode == "dark") {return "#FF000000"} else {return "#FFFFFFFF"}
      // ... other code ...
      build() {// ... other code ...Button.backgroundColor(this.getResource())// ... other code ...
      }
      }
      

      这种方式依赖于切换流程中重新执行属性设置代码,随着系统的发展和性能优化,并不能确保所有属性代码均被重新执行。因为在大部分热更新场景中,重新执行全部页面构建和属性设置代码显然是冗余的。

    设置应用内主题换肤

    概述

    对于采用ArkTS开发的应用,提供了应用内组件的主题换肤功能,支持局部的深浅色切换及动态换肤。目前,该功能只支持设置应用内主题换肤,暂不支持在UIAbility或窗口层面进行主题设置,同时也不支持C-API和Node-API。

    自定义主题色

    当应用需要使用换肤功能时,应自定义主题颜色。CustomTheme用于自定义主题色的内容,其属性可选,仅需要复写需修改的部分,未修改内容将继承系统默认设置,可参考系统默认的token颜色值。请参照以下示例自定义主题色:

      import { CustomColors, CustomTheme } from '@kit.ArkUI';export class AppColors implements CustomColors {//自定义主题色brand: ResourceColor = '#FF75D9';}export class AppTheme implements CustomTheme {public colors: AppColors = new AppColors();}export let gAppTheme: CustomTheme = new AppTheme();
    

    设置应用内组件自定义主题色

    • 可以在页面入口处统一设置应用内组件自定义主题色,但需确保在页面build前执行ThemeControl。
    • 其中,onWillApplyTheme回调函数用于使自定义组件获取当前生效的Theme对象。

    •   import { Theme, ThemeControl } from '@kit.ArkUI';import { gAppTheme } from './AppTheme';//在页面build前执行ThemeControlThemeControl.setDefaultTheme(gAppTheme);@Entry@Componentstruct DisplayPage {@State menuItemColor: ResourceColor = $r('sys.color.background_primary');onWillApplyTheme(theme: Theme) {this.menuItemColor = theme.colors.backgroundPrimary;}build() {Column() {List({ space: 10 }) {ListItem() {Column({ space: '5vp' }) {Text('Color mode').margin({ top: '5vp', left: '14fp' }).width('100%')Row() {Column() {Text('Light').fontSize('16fp').textAlign(TextAlign.Start).alignSelf(ItemAlign.Center)Radio({ group: 'light or dark', value: 'light' }).checked(true)}.width('50%')Column() {Text('Dark').fontSize('16fp').textAlign(TextAlign.Start).alignSelf(ItemAlign.Center)Radio({ group: 'light or dark', value: 'dark' })}.width('50%')}}.width('100%').height('90vp').borderRadius('10vp').backgroundColor(this.menuItemColor)}ListItem() {Column() {Text('Brightness').width('100%').margin({ top: '5vp', left: '14fp' })Slider({ value: 40, max: 100 })}.width('100%').height('70vp').borderRadius('10vp').backgroundColor(this.menuItemColor)}ListItem() {Column() {Row() {Column({ space: '5vp' }) {Text('Touch sensitivity').fontSize('16fp').textAlign(TextAlign.Start).width('100%')Text('Increase the touch sensitivity of your screen' +' for use with screen protectors').fontSize('12fp').fontColor(Color.Blue).textAlign(TextAlign.Start).width('100%')}.alignSelf(ItemAlign.Center).margin({ left: '14fp' }).width('75%')Toggle({ type: ToggleType.Switch, isOn: true }).margin({ right: '14fp' }).alignSelf(ItemAlign.Center)}.width('100%').height('80vp')}.width('100%').borderRadius('10vp').backgroundColor(this.menuItemColor)}}}.padding('10vp').backgroundColor('#dcdcdc').width('100%').height('100%')}}
      

    • 在UIAbility中设置ThemeControl,需要在onWindowStageCreate()方法中setDefaultTheme,设置应用内组件的自定义主题色。
        import {AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';import { hilog } from '@kit.PerformanceAnalysisKit';import { window, CustomColors, ThemeControl } from '@kit.ArkUI';class AppColors implements CustomColors {fontPrimary = 0xFFD53032;iconOnPrimary = 0xFFD53032;iconFourth = 0xFFD53032;}const abilityThemeColors = new AppColors();export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');}onDestroy() {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');}onWindowStageCreate(windowStage: window.WindowStage) {// Main window is created, set main page for this abilityhilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');windowStage.loadContent('pages/Index', (err, data) => {if (err.code) {hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');return;}hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');// 在onWindowStageCreate()方法中setDefaultThemeThemeControl.setDefaultTheme({ colors: abilityThemeColors });hilog.info(0x0000, 'testTag', '%{public}s', 'ThemeControl.setDefaultTheme done');});}}
      

    如果setDefaultTheme的参数为undefined时,默认token值对应的色值参考系统缺省token色值

    setDefaultTheme需要在ArkUI初始化后即windowStage.loadContent的完成时回调中使用

    设置应用局部页面自定义主题风格

    通过设置WithTheme,将自定义主题Theme的配色应用于内部组件的默认样式。在WithTheme的作用范围内,组件的配色会根据Theme的配色进行调整。

    如示例所示,使用WithTheme({ theme: this.myTheme })可将作用域内组件的配色设置为自定义主题风格。后续可以通过更新this.myTheme来更换主题风格。onWillApplyTheme回调函数用于使自定义组件能够获取当前生效的Theme对象。

      import { CustomColors, CustomTheme, Theme } from '@kit.ArkUI';class AppColors implements CustomColors {fontPrimary: ResourceColor = $r('app.color.brand_purple');backgroundEmphasize: ResourceColor = $r('app.color.brand_purple');}class AppColorsSec implements CustomColors {fontPrimary: ResourceColor = $r('app.color.brand');backgroundEmphasize: ResourceColor = $r('app.color.brand');}class AppTheme implements CustomTheme {public colors: AppColors = new AppColors();}class AppThemeSec implements CustomTheme {public colors: AppColors = new AppColorsSec();}@Entry@Componentstruct DisplayPage {@State customTheme: CustomTheme = new AppTheme();@State message: string = '设置应用局部页面自定义主题风格';count = 0;build() {WithTheme({ theme: this.customTheme }) {Row(){Column() {Text('WithTheme').fontSize(30).margin({bottom: 10})Text(this.message).margin({bottom: 10})Button('change theme').onClick(() => {this.count++;if (this.count > 1) {this.count = 0;}switch (this.count) {case 0:this.customTheme = new AppTheme();break;case 1:this.customTheme = new AppThemeSec();break;}})}.width('100%')}.height('100%').width('100%')}}}
    

    设置应用页面局部深浅色

    通过WithTheme可以设置三种颜色模式,跟随系统模式,浅色模式和深色模式。

    在WithTheme的作用范围内,组件的样式资源值会根据指定的模式,读取对应的深浅色模式系统和应用资源值。这意味着,在WithTheme作用范围内,组件的配色会根据所指定的深浅模式进行调整。

    如下面的示例所示,通过WithTheme({ colorMode: ThemeColorMode.DARK }),可以将作用范围内的组件设置为深色模式。

    设置局部深浅色时,需要添加dark.json资源文件,深浅色模式才会生效。

    dark.json数据示例:

      {"color": [{"name": "start_window_background","value": "#FFFFFF"}]}
    
      @Entry@Componentstruct DisplayPage {@State message: string = 'Hello World';@State colorMode: ThemeColorMode = ThemeColorMode.DARK;build() {WithTheme({ colorMode: this.colorMode }) {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)Button('Switch ColorMode').onClick(() => {if (this.colorMode === ThemeColorMode.LIGHT) {this.colorMode = ThemeColorMode.DARK;} else if (this.colorMode === ThemeColorMode.DARK) {this.colorMode = ThemeColorMode.LIGHT;}})}.width('100%')}.backgroundColor($r('sys.color.background_primary')).height('100%').expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.END, SafeAreaEdge.BOTTOM, SafeAreaEdge.START])}}}
    

    系统缺省token色值

    Token场景类别LightDark
    theme.colors.brand品牌色#ff0a59f7

    #ff317af7

    theme.colors.warning一级警示色#ffe84026

    #ffd94838

    theme.colors.alert二级警示色#ffed6f21

    #ffdb6b42

    theme.colors.confirm确认色#ff64bb5c

    #ff5ba854

    theme.colors.fontPrimary一级文本#e5000000

    #e5ffffff

    theme.colors.fontSecondary二级文本#99000000

    #99ffffff

    theme.colors.fontTertiary三级文本#66000000

    #66ffffff

    theme.colors.fontFourth四级文本#33000000

    #33ffffff

    theme.colors.fontEmphasize高亮文本#ff0a59f7

    #ff317af7

    theme.colors.fontOnPrimary一级文本反色#ffffffff

    #ff000000

    theme.colors.fontOnSecondary二级文本反色#99ffffff

    #99000000

    theme.colors.fontOnTertiary三级文本反色#66ffffff

    #66000000

    theme.colors.fontOnFourth四级文本反色#33ffffff

    #33000000

    theme.colors.iconPrimary一级图标#e5000000

    #e5ffffff

    theme.colors.iconSecondary二级图标#99000000

    #99ffffff

    theme.colors.iconTertiary三级图标#66000000

    #66ffffff

    theme.colors.iconFourth四级图标#33000000

    #33ffffff

    theme.colors.iconEmphasize高亮图标#ff0a59f7

    #ff317af7

    theme.colors.iconSubEmphasize高亮辅助图标#660a59f7

    #66317af7

    theme.colors.iconOnPrimary一级图标反色#ffffffff

    #ff000000

    theme.colors.iconOnSecondary二级图标反色#99ffffff

    #99000000

    theme.colors.iconOnTertiary三级图标反色#66ffffff

    #66000000

    theme.colors.iconOnFourth四级图标反色#33ffffff

    #33000000

    theme.colors.backgroundPrimary一级背景(实色/不透明色)#ffffffff

    #ffe5e5e5

    theme.colors.backgroundSecondary二级背景(实色/不透明色)#fff1f3f5

    #ff191a1c

    theme.colors.backgroundTertiary三级背景(实色/不透明色)#ffe5e5ea

    #ff202224

    theme.colors.backgroundFourth四级背景(实色/不透明色)#ffd1d1d6

    #ff2e3033

    theme.colors.backgroundEmphasize高亮背景(实色/不透明色)#ff0a59f7

    #ff317af7

    theme.colors.compForegroundPrimary前背景#ff000000

    #ffe5e5e5

    theme.colors.compBackgroundPrimary白色背景#ffffffff

    #ffffffff

    theme.colors.compBackgroundPrimaryTran白色透明背景#ffffffff

    #33ffffff

    theme.colors.compBackgroundPrimaryContrary常亮背景#ffffffff

    #ffe5e5e5

    theme.colors.compBackgroundGray灰色背景#fff1f3f5

    #ffe5e5ea

    theme.colors.compBackgroundSecondary二级背景#19000000

    #19ffffff

    theme.colors.compBackgroundTertiary三级背景#0c000000

    #0cffffff

    theme.colors.compBackgroundEmphasize高亮背景#ff0a59f7

    #ff317af7

    theme.colors.compBackgroundNeutral黑色中性高亮背景#ff000000

    #ffffffff

    theme.colors.compEmphasizeSecondary20%高亮背景#330a59f7

    #33317af7

    theme.colors.compEmphasizeTertiary10%高亮背景#190a59f7

    #19317af7

    theme.colors.compDivider分割线颜色#33000000

    #33ffffff

    theme.colors.compCommonContrary通用反色#ffffffff

    #ff000000

    theme.colors.compBackgroundFocus获焦态背景色#fff1f3f5

    #ff000000

    theme.colors.compFocusedPrimary获焦态一级反色#e5000000

    #e5ffffff

    theme.colors.compFocusedSecondary获焦态二级反色#99000000

    #99ffffff

    theme.colors.compFocusedTertiary获焦态三级反色#66000000

    #66ffffff

    theme.colors.interactiveHover通用悬停交互式颜色#0c000000

    #0cffffff

    theme.colors.interactivePressed通用按压交互式颜色#19000000

    #19ffffff

    theme.colors.interactiveFocus通用获焦交互式颜色#ff0a59f7

    #ff317af7

    theme.colors.interactiveActive通用激活交互式颜色#ff0a59f7

    #ff317af7

    theme.colors.interactiveSelect通用选择交互式颜色#33000000

    #33ffffff

    theme.colors.interactiveClick通用点击交互式颜色#19000000

    #19ffffff

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

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

    相关文章

    源鉴SCA4.9︱多模态SCA引擎重磅升级,开源风险深度治理能力再次进阶

    SCA技术已成为数字供应链开源治理的关键入口。源鉴SCA深度融合悬镜原创专利级AI智能代码疫苗技术&#xff0c;是国内首款集源码组件成分分析、代码成分溯源分析、制品成分二进制分析、容器镜像成分扫描、运行时成分动态追踪及开源供应链安全情报预警分析等六大核心引擎为一体的…

    Git语义化提交规范及提交模板设置

    Git语义化提交规范&#xff08;Conventional Commits&#xff09; &#x1f4da; 常见的语义化提交类型包括&#xff1a;类型含义说明feat✨ 新增功能&#xff08;feature&#xff09;fix&#x1f41b; 修复 bugdocs&#x1f4da; 修改文档&#xff08;如 README&#xff09;st…

    用TensorFlow进行逻辑回归(五)

    Softmax分类#List3-50%matplotlib inlineimport numpy as npimport tensorflow as tfimport matplotlib.pyplot as pltx1_label0 np.random.normal(1, 1, (100, 1))x2_label0 np.random.normal(1, 1, (100, 1))x1_label1 np.random.normal(5, 1, (100, 1))x2_label1 np.ran…

    基于 Django + 协同过滤算法的电影推荐系统设计与实现

    &#x1f3ac; 基于 Django 协同过滤算法的电影推荐系统设计与实现✍️ 本项目由成都理工大学宜宾校区的三位同学曾铭杨、杨皓麟、陈禧锦共同完成。项目以豆瓣电影数据为基础&#xff0c;通过协同过滤算法为用户构建个性化电影推荐服务&#xff0c;是一款集数据爬取、推荐算法…

    小白全栈项目部署指南

    小白全栈项目部署指南&#xff1a;前端后端数据库完整攻略 &#x1f4d6; 写在前面 当你学会了基础的静态网站部署后&#xff0c;是不是想挑战更有趣的项目&#xff1f;比如一个能够注册登录、保存数据的完整应用&#xff1f; 这就需要学习全栈项目部署了&#xff01; 别被&quo…

    C# Linq 左关联查询详解与实践

    在 C# 开发中&#xff0c;Linq&#xff08;Language Integrated Query&#xff09;提供了强大的数据查询能力&#xff0c;尤其是在处理集合间的关联操作时。本文将详细解析 C# Linq 中的左关联查询&#xff0c;并通过实际案例说明其用法。左关联查询基础左关联&#xff08;Left…

    【机器学习深度学习】LoRA 微调详解:大模型时代的高效适配利器

    目录 前言 一、LoRA 的核心思想 二、LoRA 为什么高效&#xff1f; ✅ 1. 参数效率 ✅ 2. 内存友好 ✅ 3. 即插即用 三、LoRA 适用场景 四、LoRA 实践建议 五、LoRA 和全参数微调对比 六、 LoRA的具体定位 &#x1f4cc; 总结 &#x1f517; 延伸阅读 前言 在大模型…

    vue页面不销毁的情况下再返回,总是执行created,而不触发 activated

    vue页面不销毁的情况下再返回&#xff0c;总是执行created&#xff0c;而不触发 activated 原因&#xff1a; 没有进行页面缓存地址和页面组件的name没对上 解决方案: 组件只有在被 包裹时才会触发 activated 和 deactivated 生命周期 如果没有被缓存&#xff0c;每次进入路由…

    从 C# 到 Python:6 天极速入门(第二天)

    作为一名资深 C# 开发者&#xff0c;我们在第一天已经掌握了 Python 的基础语法框架。今天我们将深入 Python 的特色语法与高级特性&#xff0c;通过实际项目开发场景的代码对比&#xff0c;理解这些特性在真实业务中的应用价值。一、简洁语法糖&#xff1a;项目开发中的实战应…

    MyBatis 动态 SQL:让 SQL 语句随条件灵活变化

    目录 1. 动态SQL 1.1. if 1.1.1. 持久层接口添加方法 1.1.2. 映射文件添加标签 1.1.3. 编写测试方法 1.2. where 1.3. set 1.4. choose、when、otherwise 1.5. foreach 1.5.1. 遍历数组 1.5.2. 遍历Collection 1.5.3. 遍历Map 2. 总结 前言 本文来讲解MyBatis的动…

    AI 驱动的仪表板:从愿景到 Kibana

    作者&#xff1a;来自 Elastic Jeffrey Rengifo 及 Toms Mura 使用 LLM 处理图像并将其转换为 Kibana 仪表板。 想获得 Elastic 认证&#xff1f;了解下一次 Elasticsearch Engineer 培训的举办时间&#xff01; Elasticsearch 拥有众多新功能&#xff0c;帮助你为你的使用场景…

    AI产品经理面试宝典第17天:AI时代敏捷开发与MVP构建面试题与答法

    机器学习MVP构建问题怎么答? 面试官:请举例说明如何将业务问题转化为机器学习可解的问题? 你的回答:以电商供应商评价为例,传统方法用人工设定的低维度指标评分,而机器学习能利用大数据构建高维模型。比如通过供应商历史交易数据、物流时效、售后投诉率等数百个特征,训…

    HBase2.5.4单机模式与伪分布式的安装与配置(Ubuntu系统)

    HBase的安装也分为三种&#xff0c;单机模式、伪分布式模式、完全分布式模式&#xff1b;我们先来安装单机版。 一、环境准备 1. 系统要求 Ubuntu 20.04/22.04 LTS Java 8&#xff08;必须&#xff0c;HBase不兼容更高版本&#xff09; Hadoop&#xff08;单机模式不需要&a…

    Honeywell霍尼韦尔DV-10 变速器放大器 输入 15-28 VDC,输出 +/- 10VDC 060-6881-02

    Honeywell霍尼韦尔DV-10 变速器放大器 输入 15-28 VDC,输出 /- 10VDC 060-6881-02

    腾讯位置商业授权鸿蒙地图SDK工程配置

    工程配置 安装 DevEco Studio 开发环境 手机HarmonyOS系统&#xff1a;OpenHarmony-5.0.0.71及以上DevEco Studio版本&#xff1a;DevEco Studio NEXT Release(Build Version: 5.0.3.900)及以上 获取key与生成秘钥 获取key 登录腾讯位置服务控制台&#xff0c;未注册过账号可…

    RocketMQ源码级实现原理-Commitlog刷盘机制

    刷盘机制 同步刷盘 代码实现 写入线程 写入线程可能同时有多个&#xff0c;但是刷盘线程至始至终就是一个单线程 刷盘线程&#xff0c;始终是操作双缓冲区域&#xff0c;一个用来刷盘&#xff0c;另一个用来接收多个写入线程同时写入刷盘请求 刷盘线程 通过这种方式&#xff0…

    Java与Vue技术搭建的SRM招标采购管理系统,提供源码,涵盖招标、投标、评标全流程,助力企业高效规范采购管理

    前言&#xff1a;在当今竞争激烈的商业环境中&#xff0c;高效、透明、规范的招标采购流程对于企业的成本控制、供应链稳定以及整体运营效率至关重要。SRM招标采购管理系统应运而生&#xff0c;它借助先进的信息技术&#xff0c;整合了招标采购的各个环节&#xff0c;实现了采购…

    Kotlin集合分组

    集合的分组&#xff08;Grouping&#xff09; 在之前的学习中&#xff0c;我们已经学会了如何对集合进行过滤、排序或执行聚合操作。 在本节中&#xff0c;我们将学习如何对集合元素进行分组&#xff0c;以便以最适合我们任务的方式呈现信息。分组&#xff08;Grouping&#xf…

    阿里云ssh证书过期,如果更换并上传到服务器

    登录阿里云平台&#xff0c;在控制台中找到“数字证书管理服务”进入频道后&#xff0c;选择“SSL证书管理”点击“创建证书”&#xff0c;创建成功后&#xff0c;进入证书详情页选择“下载”板块&#xff0c;根据自身服务器类型&#xff0c;下载相应的证书即可服务器更新证书登…

    【软件系统架构】系列七:系统性能——计算机性能深入解析

    目录 一、什么是计算机性能&#xff1f; 二、计算机性能核心指标 1. CPU性能指标 2. 内存性能指标 3. 存储子系统性能 4. 网络性能指标 5. 系统资源使用与并发能力 三、性能瓶颈分析方法 四、计算机性能评测与对比 常见性能测试指标与工具&#xff1a; 五、计算机性…