Android SystemUI——基础简介(一)
Android SystemUI 是 Android 操作系统的一部分,负责处理与用户界面相关的所有元素。它是 Android 设备上的一个关键组件,管理着屏幕顶部的状态栏(显示时间、信号强度、电池电量等)、屏幕底部的导航栏(返回、主页、最近的应用程序等按钮)、锁屏界面以及各种系统级别的交互和动画效果。
一、概述
Android SystemUI 是指 Android 操作系统中的系统用户界面,它是用户与设备交互的界面。 SystemUI 提供了状态栏、导航栏、通知中心等重要的用户界面元素,这些元素可以帮助用户快速地访问设备的各种功能和信息。
1、发展历程
以下是 Android SystemUI 的发展历程,以时间顺序排列:
时间段 | 系统版本 | 发展历程 |
---|---|---|
2008年 | Android 1.0 | Android 初始版本没有状态栏,只有应用程序屏幕。 |
2009年 | Android 1.5 | 引入状态栏,但只有通知和电池指示器。 |
2010年 | Android 2.3 | 状态栏加入了快捷设置面板。 |
2011年 | Android 4.0 | 引入了新的状态栏,支持通知和快捷设置面板。 |
2013年 | Android 4.4 | 状态栏和导航栏支持半透明效果。 |
2014年 | Android 5.0 | 引入 Material Design,对状态栏和导航栏进行了全面更新。 |
2016年 | Android 7.0 | 引入了快捷应用程序快捷方式,可从状态栏访问。 |
2019年 | Android 10.0 | 状态栏和导航栏支持全面屏手势导航。 |
2020年 | Android 11.0 | 加入了对新型折叠式设备的支持,如 Galaxy Z Fold2。 |
2021年 | Android 12.0 | 引入了 Material You 设计语言,使状态栏和导航栏更加自适应。 |
2022年 | Android 13.0 | 沿用了 Material You 设计语言,加入了一些细节。 |
2023年 | Android 14.0 | 继续深化 Material You 设计语言的应用,旨在提升用户体验、增强安全性以及优化系统性能。 |
2024年 | Android 15.0 | 针对新型折叠屏设备和平板电脑进行了专门优化,增强了对 AR 和 VR 应用的支持。 |
Android SystemUI 作为 Android 系统的重要组成部分,随着 Android 系统的版本升级,不断进行着更新和优化,为用户提供更好的使用体验。
2、主要功能
以下是 Android SystemUI 的主要功能的介绍:
功能 | 描述 |
---|---|
通知管理 | 管理接收、显示和处理来自应用程序的通知信息。 |
快捷设置 | 快速访问和调整常用系统设置,如无线网络、蓝牙、屏幕亮度等。 |
导航操作 | 提供返回、主页和最近任务按钮,用于应用程序之间的导航。 |
锁屏界面 | 显示时间、日期、天气信息和通知等功能的界面。 |
状态栏控制 | 显示状态栏图标、提供系统信息和快速设置入口。 |
导航栏控制 | 提供导航栏按钮,如返回、主页和最近任务按钮。 |
通知栏 | 显示来自应用程序的通知信息,允许用户进行操作和管理。 |
锁屏通知 | 在锁屏界面上显示通知信息,提供快速查看和操作的能力。 |
媒体控制 | 在通知栏中显示媒体播放器控制按钮,方便用户控制音乐和视频播放。 |
快捷启动器 | 提供快速启动应用程序的功能。 |
系统 UI 调节器 | 提供隐藏的设置菜单,允许用户自定义系统UI的一些功能和外观。 |
Android SystemUI 的主要功能涵盖了通知管理、快捷设置、导航操作、锁屏界面、状态栏控制等方面,为用户提供了方便的操作和管理界面。
3、主要组件
- NavigationBar(导航栏):NavigationBar 是位于屏幕底部的导航界面,提供了返回、主页和最近任务等导航操作的按钮。它使用户能够浏览应用程序和系统功能,如切换应用、返回主屏幕等。
- StatusBar(状态栏):StatusBar 是 Android SystemUI 的核心组件之一,位于屏幕顶部。它显示了通知图标、系统图标(如电池、信号强度、时间等)以及其他与系统状态相关的信息。
- Notification Shade(通知面板):Notification Shade 是一个可下拉的面板,用户可以从任何屏幕位置向下滑动以展开它。它显示了来自各个应用程序的通知,并提供一些快速设置选项,如 Wi-Fi、蓝牙、飞行模式等。
- LockScreen(锁屏界面):LockScreen 是 Android 设备的初始界面,显示了时间、日期、通知和快捷操作。用户可以在锁屏界面上查看和管理通知,以及执行一些快速操作,如解锁屏幕、调整音量等。
- Quick Settings(快速设置):Quick Settings 是通知面板中的一部分,提供了一组常用的系统设置选项,用户可以通过快速切换按钮打开或关闭这些选项,例如调整屏幕亮度、打开/关闭无线网络等。
- SystemUI Tuner(系统 UI 调节器):SystemUI Tuner 是一个隐藏的设置菜单,允许用户自定义和调整系统 UI 的某些功能和外观。用户可以通过 SystemUI Tuner 修改状态栏图标、导航栏按钮、通知行为等。
- System Bars(系统栏):系统栏包括 StatusBar 和 NavigationBar,它们作为 Android 设备的固定元素,提供了对系统功能和导航的访问。系统栏的样式和行为可以根据不同设备和版本进行自定义。
4、未来发展
未来发展方向 | 描述 |
---|---|
用户个性化 | 提供更多的定制选项,允许用户自定义界面样式、主题、动画效果等 |
增强的通知管理 | 提供更智能的通知分类、自动整理和过滤功能,增强通知的交互和管理能力 |
手势导航 | 进一步加强手势导航功能,提供更自然、直观的导航方式 |
智能化和上下文感知 | 根据用户习惯和环境上下文,自动调整界面布局、显示相关快捷操作和通知 |
增强的互联功能 | 加强与其他设备和平台的互联功能,如智能家居、车载系统等的集成 |
跨设备协同 | 提供无缝切换和同步操作的能力,使用户在不同设备之间的体验更加一致 |
增强的安全和隐私 | 提供更强大的身份验证和权限管理机制,保护用户数据和隐私 |
随着技术的不断发展和用户需求的变化,Android SystemUI 未来有望在用户个性化、通知管理、手势导航、智能化、互联功能、跨设备协同以及安全和隐私方面实现更多的创新和改进。这些发展方向将进一步提升用户体验和系统功能,满足不断增长的用户期望和需求。
二、应用源码
在 Android 系统中 SystemUI 其实就是一个系统级的 APP,通常位于 /system/priv-app/ 目录下,表明它是一个拥有特权权限的应用程序。这个路径也意味着它是系统镜像的一部分,不是普通的用户安装的应用。由 system_server 进程启动。SystemUI 本身不属于 system_server 进程,它是一个独立的进程。它的 HMI 包括了状态栏、导航栏、通知栏、锁屏、近期任务等等。
源码位置:/frameworks/base/packages/SystemUI/
1、核心代码
SystemUI 组件中包括了很多核心服务,如 StatusBar、Notification、Recents、Screenshot、Keyguard 等等,这些服务都是由 SystemUIApplication 启动并管理的。在阅读 SystemUI 源代码时需要对这些服务进行一一了解和分析。
StatusBar
StatusBar 是 Android 系统中的状态栏,展示了当前时间、电量、网络等信息,为用户提供了即时的信息反馈。StatusBar 由多个 View 和 Layout 组成,可以通过布局文件和代码进行设置和管理。
在源码项目里,StatusBar 相关的类主要可以分为以下几种:
- SystemUI:定义了 StatusBar 基础功能,如添加/删除 View、刷新状态等。是 Android 系统用户界面(System UI)的核心组件之一,包含了启动和初始化这些 UI 组件的逻辑,是整个 SystemUI 模块的入口点。
- StatusBar:继承自 SystemUI,是处理手机设备上状态栏行为的具体实现。管理了状态栏的显示逻辑,包括响应用户交互(如滑动展开通知栏)、更新图标和文本,以及与系统的其他部分进行通信。对于不同的设备形态(例如平板电脑或可折叠设备),可能会有不同路径下的类似实现来适应特定的布局和交互方式。
- StatusBarManagerService:为 Android 系统提供 StatusBar 的管理服务,是一个系统服务,它提供了 API 给应用程序用来控制状态栏的行为。主要负责接收来自应用程序的通知请求,并将这些通知展示在适当的位置,如状态栏或锁屏界面上。此外,它还处理诸如扩展或收缩状态栏、调整其可见性等操作。该服务也涉及到与安全性和权限相关的逻辑,以确保只有具有适当权限的应用程序才能修改状态栏的内容或行为。
StatusBarWindowView:状态栏窗口的核心视图容器,它承载了状态栏的所有 UI 元素,并且是用户与状态栏进行交互的主要界面。此视图不仅展示了常规的状态栏内容,还处理了状态栏的展开和收起操作,例如当用户从屏幕顶部向下滑动以查看通知或快捷设置时。
其中 SystemUI、StatusBar、StatusBarManagerService 和 StatusBarWindowView 所在 Android 源码中的位置如下:
- /frameworks/base/packages/SystemUI/src/com/android/systemui/SystemUI.java
- /frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
- /frameworks/base/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
- frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java
NavigationBar
源码位置:/frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java
NavigationBar 是 Android 系统中的导航栏,展示了返回(Back)、主页(Home)、最近任务(Recents)等按钮,为用户提供了快捷的操作入口。NavigationBar 由多个 View 和 Layout 组成,可以通过布局文件和代码进行设置和管理,和 StatusBar 类似。
NavigationBar 负责创建和管理 Android 设备上的导航栏的一个类。导航栏对于用户的操作来说是非常重要的部分,在不同的 Android 版本中,这个类可能会有不同的实现方式,特别是在引入手势导航后,其内部逻辑变得更加复杂。
Notification
Notification 是 Android 系统中通知的实现方式,展示了各种应用程序的消息、提醒等,为用户提供了及时的信息反馈。Notification 由多个 View 和 Layout 组成,可以通过布局文件和代码进行设置和管理。
在源码项目里,Notification 相关的类主要可以分为以下几种:
- NotificationManagerService:为 Android 系统提供 Notification 的管理服务,是 Android 系统通知机制的核心服务之一。它负责管理和分发应用程序的通知到系统的适当位置,如状态栏或锁屏。NotificationManagerService 还提供了 API 给其他应用程序使用,以便它们可以创建、更新或取消通知。此外,它也处理了与用户设置相关的通知行为,比如静音模式、优先级打断规则等。
- NotificationPanelView:是状态栏下拉通知面板的主要视图容器。它包含并管理所有与通知有关的UI元素,包括但不限于通知列表、快捷设置(Quick Settings)开关等。这个类处理了展开和收起通知面板的动画效果,并提供了对通知区域内的交互支持,比如滚动、点击通知以打开关联的应用或执行直接回复等功能。此外,它还可能涉及一些手势识别逻辑,用以响应用户的滑动手势来控制通知面板的行为。
- NotificationContentView:是单个通知项的具体视图实现,它是构成整个通知列表的基本单元之一。每个通知条目都由一个 NotificationContentView 实例表示,负责展示来自应用的通知信息,如图标、标题、文本内容等。此视图还包括了诸如清除按钮、扩展/折叠按钮等交互控件。NotificationContentView 还可能包含了对通知内容的自定义样式支持,允许开发者通过远程视图(RemoteViews)或者更高级的通知模板来自定义通知外观。该类也处理了与通知内容相关联的操作事件,例如点击通知时触发的动作。
- NotificationStackScrollLayout:是通知面板中用于展示所有通知的核心容器。它以一种堆栈的方式排列通知项,让用户可以通过滚动来浏览所有未读或已读的通知。该布局还支持展开和收起单个通知详情,以及执行如清除、滑动移除等操作。
其中 NotificationManagerService、NotificationPanelView、NotificationContentView 和 NotificationStackScrollLayout 所在 Android 源码中的位置如下:
- /frameworks/base/services/core/java/com/android/server/notification/NotificationManagerService.java
- /frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
- /frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java
- frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
QuickSettings
QuickSettings 是 Android 系统中的快速设置面板,展示了各种应用程序的设置、开关等,为用户提供了快速的操作入口。QuickSettings 由多个 View 和 Layout 组成,可以通过布局文件和代码进行设置和管理。
在源码项目里,QuickSettings 相关的类主要可以分为以下几种:
- QSPanel:定义了 QuickSettings 的显示和管理方式,是管理和显示快捷设置面板的主要组件,包括手势滑动、划出/隐藏等操作。这个面板通常可以通过从屏幕顶部向下滑动来访问,它包含了一系列可以快速切换设备设置或启动常用功能的开关和图标。QSPanel 负责加载和管理这些快捷设置项,并处理用户与这些项之间的交互。此外,它还实现了动画效果、布局调整以及响应不同的设备配置变化(例如横屏模式或不同的屏幕尺寸)。它作为快捷设置的容器,提供了整体的视觉结构和用户体验。
- QSTileView:定义了 QuickSettings 中每个按钮的样式和显示方式,包括图标、文本、状态等元素的排版和显示。是每个单独的快捷设置项(也称为Tile)的具体视图实现。它是用户界面中代表快捷设置项的可视化元素,比如Wi-Fi、蓝牙、飞行模式等。QSTileView 负责绘制快捷设置项的图标和标签,并处理用户的点击事件以触发相应的操作。这个类可能还会支持更复杂的交互,如长按显示更多信息或者拖拽重新排列快捷设置项的位置。QSTileView 为开发者提供了一种标准化的方式来展示和操作快捷设置项。
- QSTile:定义了 QuickSettings 中每个按钮的基本属性和功能,包括开关、状态等操作。它不直接处理 UI 渲染,而是作为业务逻辑层的一部分,决定了快捷设置项如何响应用户输入、更新状态以及与其他系统服务进行通信。每个快捷设置项都有一个对应的 QSTile 实例,该实例包含了控制特定设置或功能的所有必要方法和属性。例如,对于Wi-Fi快捷设置项,QSTile 可能会包含开启或关闭 Wi-Fi 的方法,检查当前连接状态的功能等。QSTile 还能够监听系统广播和其他事件,以便及时更新自身的状态并在需要时通知其关联的 QSTileView 进行UI刷新。
其中 QSPanel、QSTileView和 QSTile所在 Android 源码中的位置如下:
- /frameworks/base/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
- /frameworks/base/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTileView.java
- /frameworks/base/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java
RecentsView
源码位置:/packages/apps/Launcher3/quickstep/src/com/android/quickstep/views/RecentsView.java
Android 系统中负责管理最近任务(Recent Tasks)界面的核心组件之一。是 Quickstep 启动器的一部分,它提供了最近任务的可视化列表,允许用户快速回到之前使用的应用或任务。当用户通过手势或按键调出最近任务界面时,RecentsView 负责显 示这些任务的缩略图和相关信息,并处理用户的交互动作,例如点击某个任务以返回到该应用,或者滑动移除某个任务。
KeyguardViewMediator
源码位置:/frameworks/base/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
Android 系统中负责锁屏(Keyguard)界面逻辑协调的核心组件之一。主要负责管理锁屏界面的状态转换、用户输入处理以及与系统其他部分的交互。它协调了锁屏界面上各种元素的行为,例如解锁动画、通知显示、时钟和日期等信息的呈现,并确保这些元素根据设备的安全策略(如密码、图案或指纹认证)正确地响应用户的操作。
2、Launcher
Launcher(启动器)并不属于 SystemUI 的一部分。尽管它们都是 Android 系统用户界面的重要组件,但它们是两个独立的模块,各自负责不同的功能。
SystemUI:Android 系统的一个核心应用程序,它提供了系统级别的用户界面元素,包括状态栏(Status Bar)、导航栏(Navigation Bar)、锁屏(Lock Screen)、快捷设置面板(Quick Settings Panel)等。SystemUI 是设备上所有非应用程序特定 UI 元素的主要容器,确保了这些元素在不同应用之间的一致性和功能性。
Launcher:相比之下,Launcher 是 Android 设备的主屏幕和应用程序抽屉背后的实现。它是用户与设备交互的第一个界面,允许用户浏览已安装的应用程序、创建和管理桌面图标和小部件,并且可以自定义主屏幕布局。每个 Android 设备通常会预装一个默认的 Launcher,但用户也可以选择安装第三方 Launcher 来个性化他们的体验。
虽然两者都对用户的整体体验至关重要,但它们是由不同的代码库维护,并且有不同的开发团队负责。SystemUI 更关注于提供一致的系统级 UI 组件和服务,而 Launcher 则专注于为用户提供一个个性化的应用程序启动和组织环境。此外,在某些定制 ROM 或厂商修改版本中,可能会有更紧密的集成或共享一些资源,但从架构上看,它们仍然是分离的组件。
相关文章:
Android SystemUI——基础简介(一)
Android SystemUI 是 Android 操作系统的一部分,负责处理与用户界面相关的所有元素。它是 Android 设备上的一个关键组件,管理着屏幕顶部的状态栏(显示时间、信号强度、电池电量等)、屏幕底部的导航栏(返回、主页、最近…...
大疆机场及无人机上云
最近基于大疆上云api进行二次开发,后面将按照开发步骤对其进行说明!...
js:正则表达式
目录 正则表达式的语法 定义 检测 检索 元字符 边界符 量词 字符类 表单判断案例 修饰符 过滤敏感词 正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本字符组合模式 正则表达式是一…...
【芯片设计- RTL 数字逻辑设计入门 9.2 -- flip flop 与 寄存器的关系详细介绍】
请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 Overview硬件角度的 Flip-Flop软件角度的寄存器举例说明硬件设计角度软件开发角度D Flip-Flop 实现基本原理:Verilog 代码:UT 示例JK Flip-Flop 实现基…...
JAVA实战开源项目:课程智能组卷系统(Vue+SpringBoot) 附源码
本文项目编号 T 009 ,文末自助获取源码 \color{red}{T009,文末自助获取源码} T009,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 老…...
【Rust自学】11.8. 忽略测试
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.8.1. 忽略某些测试,执行剩余测试 某些测试执行起来非常耗时,所以在大部分情况下会想在运行cargo test时忽略它…...
浅谈云计算09 | 服务器虚拟化
服务器虚拟化基础 一、虚拟化的定义二、系统虚拟化三、服务器虚拟化的核心要义四、典型实现:探索不同路径五、全虚拟化与半虚拟化六、主流服务器虚拟化技术 一、虚拟化的定义 虚拟化是一种将物理资源抽象为逻辑资源的技术,通过在物理硬件与操作系统、应…...
【Ubuntu 24.04】虚拟机常见问题解决
1.24开启3D加速黑屏 参考文章:Ubuntu24开机黑屏,VMware卡死,虚拟机繁忙解决方案 没有3D加速就没有动画,所以我们需要开启3D加速,但是直接开启3D加速会黑屏 由于Ubuntu24内部的图形加速驱动异常,因此需要更新…...
【已解决】【记录】2AI大模型web UI使用tips 本地
docker desktop使用 互动 如果需要发送网页链接,就在链接上加上【#】号 如果要上传文件就点击这个➕号 中文回复 命令它只用中文回复,在右上角打开【对话高级设置】 输入提示词(提示词使用英文会更好) Must reply to the us…...
iostat命令详解
iostat 命令是 I/O statistics(输入/输出统计)的缩写,用来报告系统的 CPU 统计信息和块设备及其分区的 IO 统计信息。iostat 是 sysstat 工具集的一个工具,在 Ubuntu 系统中默认是不带 iostat 命令的,需要自行安装: $ sudo apt in…...
工程水印相机结合图纸,真实现场时间地点,如何使用水印相机,超简单方法只教一次!
在工程管理领域,精准记录现场信息至关重要。水印相机拍照功能,为工程人员提供了强大的现场信息记录工具,助力工程管理和统计工程量,更可以将图片分享到电脑、分享给同事,协同工作。 一、打开图纸 打开手机版CAD快速看图…...
vue城市道路交通流量预测可视化系统
文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站、收藏、不迷路! 项目亮点 编号:R09 🚇 网站大屏管理三大前端、vuespringbootmysql、前后端分离架构 🚇 流量预测道路查询…...
秩为1的矩阵可以表示为两个向量的外积
秩为1的矩阵可以表示为两个向量的外积,为什么 秩为 1 的矩阵可以表示为两个向量的外积,原因源于矩阵的线性代数性质。以下是详细的解释: 1. 矩阵的秩定义 矩阵的秩是矩阵列向量(或行向量)线性无关的最大个数。当矩阵…...
深入浅出 Android AES 加密解密:从理论到实战
深入浅出 Android AES 加密解密:从理论到实战 在现代移动应用中,数据安全是不可忽视的一环。无论是用户隐私保护,还是敏感信息的存储与传输,加密技术都扮演着重要角色。本文将以 AES(Advanced Encryption Standard&am…...
MySQL 与 Redis 的数据一致性问题
读数据的逻辑基本一致问题1: 一致性有哪些?MySQL 与 Redis 的数据一致性方案有哪些?先写MySQL还是先写Redis?缓存数据是更新还是清除?强一致还是最终一致?问题: 如果mysql写成功了,但是Redis写(删除)失败了怎么办?重试机制的幂等问题如何解决? 方案1: 先更新 MySQL 再清…...
【论文笔记】多个大规模数据集上的SOTA绝对位姿回归方法:Reloc3r
abstract 视觉定位旨在确定查询图像相对于姿势图像数据库的相机姿势。 近年来,直接回归相机姿势的深度神经网络由于其快速推理能力而受到欢迎。 然而,现有方法很难很好地推广到新场景或提供准确的相机姿态估计。 为了解决这些问题,我们提出了…...
UE5 打包项目
UE5 打包项目 flyfish 通过 “文件”->“打开项目”,然后在弹出的对话框中选择项目文件(通常是以.uproject为后缀的文件) 选择目标平台: 在 UE5 主界面中,找到 “平台”(Platforms)。根据…...
JavaEE之定时器及自我实现
在生活当中,有很多事情,我们不是立马就去做,而是在规定了时间之后,在到该时间时,再去执行,比如:闹钟、定时关机等等,在程序的世界中,有些代码也不是立刻执行,…...
好用的php商城源码有哪些?
选择一个优秀的商城工具,能更好地帮助大家建立一个好用的商城系统。目前比较流行的都是开源PHP商城系统,那么现实中都有哪些好用的PHP商城源码值得推荐呢?下面就带大家一起来了解一下。 1.TigShop 【推荐指数】:★★★★★☆ 【推…...
GO语言实现KMP算法
前言 本文结合朱战立教授编著的《数据结构—使用c语言(第五版)》(以下简称为《数据结构(第五版)朱站立》)中4.4.2章节内容编写,KMP的相关概念可参考此书4.4.2章节内容。原文中代码是C语言&…...
国产Docker可视化面板Dpanel的安装与功能解析
国产Docker可视化面板Dpanel的安装及功能介绍 Docker 可视化面板系统,提供完善的 docker 管理功能。 支持查看基本信息、运行状态统计、网络统计、磁盘统计、用量统计等功能 容器管理: 创建/修改容器 支持基本配置、环境变量、…...
Elaticsearch常用的浏览器插件
Elasticsearch head https://github.com/mobz/elasticsearch-headElasticsearch Tools https://www.chajianxw.com/developer/31765.html#google_vignetteElasticvue https://blog.csdn.net/weixin_60457220/article/details/143595846...
LabVIEW数据库管理系统
LabVIEW数据库管理系统(DBMS)是一种集成了数据库技术与数据采集、控制系统的解决方案。通过LabVIEW的强大图形化编程环境,结合数据库的高效数据存储与管理能力,开发人员可以实现高效的数据交互、存储、查询、更新和报告生成。LabV…...
【HM-React】08. Layout模块
基本结构和样式reset 结构创建 实现步骤 打开 antd/Layout 布局组件文档,找到示例:顶部-侧边布局-通栏拷贝示例代码到我们的 Layout 页面中分析并调整页面布局 代码实现 pages/Layout/index.js import { Layout, Menu, Popconfirm } from antd impor…...
SpringCloud
1.认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构:将业务的所有功…...
HarmonyOS应用开发者初级认证最新版– 2025/1/13号题库新版
1.欢迎各位读者,本文档来自鸿蒙开发学员亲测,最新版。(考试时直接Ctrlf进行搜索,一定要认真比对答案,有的答案相似度很高)!!!!!! 欢迎…...
基于微信小程序的汽车销售系统的设计与实现springboot+论文源码调试讲解
第4章 系统设计 一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专…...
[免费]SpringBoot+Vue新能源汽车充电桩管理系统【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue新能源汽车充电桩管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue新能源汽车充电桩管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着信息化时代的到来࿰…...
《机器学习》之K-means聚类
目录 一、简介 二、K-means聚类实现步骤 1、初始化数据点、确定K值 2、通过距离分配数据点 3、更新簇中心 4、 迭代更新 三、聚类效果评价方式 1、轮廓系数的定义 2、整体轮廓系数 3、使用场景 4、优点 5、缺点 6、代码实现方法 四、K-means聚类代码实现 1、API接…...
【芯片封测学习专栏 -- 2D | 2.5D | 3D 封装的区别和联系】
请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 Overview线键合(wire-bonding)封装FOWLP2D封装2.5D 封装硅通孔(TSV)硅中介层无TSV的2.5D 3D封装 Overview 我们先要了解一下&…...
E12.【C语言】练习:求两个数的最大公约数
目录 1.枚举 2.辗转相除法 1.枚举 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() {int a 0;int b 0;int tmp 0;scanf("%d %d", &a, &b);if (a < b){for (int i1; i < a; i){if (0a% i && 0b%i)tmp i;}}if …...
SVG图表
1、时序图 英文 #mermaid-svg-OyLuBTPnpbW9XDOB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-OyLuBTPnpbW9XDOB .error-icon{fill:#552222;}#mermaid-svg-OyLuBTPnpbW9XDOB .error-text{fill:#552222;stroke:#55…...
IDEA中创建maven项目
1. IDEA中创建maven项目 在IDEA中创建Maven项目,前提是已经安装配置好Maven环境。如还未配置安装Maven的,请先下载安装。如何下载安装,可参考我另外篇文章:maven的下载与安装教程本篇教程是以创建基于servlet的JavaWeb项目为例子&…...
Laravel 中 Cache::remember 的基本用途
在 Laravel 中,Cache::remember 方法用于缓存数据,以提高应用程序的性能。当需要从数据库或其他较慢的数据源中检索数据时,可以使用 Cache::remember 来检查请求的数据是否已经被缓存。如果数据已缓存,则直接从缓存中读取…...
云数赋能:开启企业数字化转型的高速通道
目录 一、引言:数字化转型浪潮下的企业挑战与机遇 二、认识云数赋能 2.1 云计算:企业数字化的强大基石 2.2 大数据:挖掘企业潜藏价值的宝藏 三、云数赋能如何加速企业数字化转型 3.1 优化企业运营管理 3.2 提升客户体验 3.3 推动创新…...
Spring底层核心原理解析
本次分享会把Spring中核心知识点都给大家进行串讲,让大家对Spring的底层有一个整体的大致了解,比如: Bean的生命周期底层原理依赖注入底层原理初始化底层原理推断构造方法底层原理AOP底层原理Spring事务底层原理 但都只是大致流程&#…...
昵称 校验
1. 基本格式校验 1. 长度限制 • 设置最小和最大字符长度:2-20 个字符(常见范围)。 • 避免昵称过短或过长影响显示和识别。 • 示例: • 2 ≤ 长度 ≤ 20:let minLength 2 let maxLength 20 if nickname.count <…...
25/1/12 嵌入式笔记 学习esp32
了解了一下位选线和段选线的知识: 位选线: 作用:用于选择数码管的某一位,例如4位数码管的第1位,第2位) 通过控制位选线的电平(高低电平),决定当前哪一位数码管处于激活状…...
PostgreSQL 超级管理员详解
1. 什么是 PostgreSQL 超级管理员 PostgreSQL 超级管理员(superuser)是拥有数据库系统最高权限的用户。他们可以执行任何数据库操作,包括但不限于创建和删除数据库、用户、表空间、模式等。超级管理员权限是 PostgreSQL 中权限的最高级别。 …...
【centos】校时服务创建-频率修改
在 NTP 配置中,校时频率通常是由 NTP 协议自动管理的,NTP 会根据网络延迟和时间偏差动态调整校时频率。不过,您可以通过配置文件中的一些参数来影响 NTP 的行为。 如果想要更改 NTP 的校时频率,可以考虑以下几个方面:…...
mybatis分页插件:PageHelper、mybatis-plus-jsqlparser(解决SQL_SERVER2005连接分页查询OFFSET问题)
文章目录 引言I PageHelper坐标II mybatis-plus-jsqlparser坐标Spring Boot 添加分页插件自定义 Mapper 方法中使用分页注意事项解决SQL_SERVER2005连接分页查询OFFSET问题知识扩展MyBatis-Plus 框架结构mybatis-plus-jsqlparser的 Page 类引言 PageHelper import com.github.p…...
二、模型训练与优化(4):模型优化-实操
下面我将以 MNIST 手写数字识别模型为例,从 剪枝 (Pruning) 和 量化 (Quantization) 两个常用方法出发,提供一套可实际动手操作的模型优化流程。此示例基于 TensorFlow/Keras 环境,示范如何先训练一个基础模型,然后对其进行剪枝和…...
开发人员学习书籍推荐(C#、Python方向)
作为一名开发人员,持续学习和提升自己的技术水平是至关重要的。如今,技术不断更新换代,新的开发框架、语言和工具层出不穷。对于刚入行的开发者或希望深入某一领域的工程师来说,选对书籍是学习的捷径之一。本篇文章将推荐一些经典…...
【HTML+CSS+JS+VUE】web前端教程-31-css3新特性
圆角 div{width: 100px;height: 100px;background-color: saddlebrown;border-radius: 5px;}阴影 div{width: 200px;height: 100px;background-color: saddlebrown;margin: 0 auto;box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);}...
【Elasticsearch】批量操作:优化性能
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探…...
sklearn-逻辑回归-制作评分卡
目录 数据集处理 分箱 分多少个箱子合适 分箱要达成什么样的效果 对一个特征进行分箱的步骤 分箱的实现 封装计算 WOE 值和 IV值函数 画IV曲线,判断最佳分箱数量 结论 pd.qcut 执行报错 功能函数封装 判断分箱个数 在银行借贷场景中,评分卡是…...
Saas数据库迁移单租户数据
1、背景 租户使用Saas系统,用一段时间后要将系统、数据搬迁到自建服务器。该Saas系统没有按租户分库,且数据库数据量太大,需要将单租户的数据抽取出来。Saas系统使用Mysql5.7数据库,主要使用INFORMATION_SCHEMA.COLUMNS表进行数据…...
23_Spring Boot中Redis缓存实现
1.基于注解的Redis缓存实现 下面我们在之前Spring Boot默认缓存管理的基础上引入Redis缓存组件,使用基于注解的方式讲解Spring Boot整合Redis缓存的具体实现。 1.使用@Cacheable、@CachePut、@CacheEvict注解定制缓存管理。对CommentServiceImpl类中的方法进行修改,使用@Ca…...
Vue 学习之旅:核心技术学习总结与实战案例分享(vue指令下+计算属性+侦听器)
Vue 学习之旅:核心技术学习总结与实战案例分享 文章目录 Vue 学习之旅:核心技术学习总结与实战案例分享一、指令补充(一)指令修饰符(二)v-bind 对样式操作的增强(三)v-model 应用于其…...
【Linux网络编程】数据链路层 | MAC帧 | ARP协议
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系…...