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

android 设置状态栏背景

一 让activity ui界面和手机状态栏一样的背景

要让 Activity 的 UI 界面和手机状态栏具有相同的背景颜色,并且能够随着深色模式和非深色模式的切换而改变颜色,你可以按照以下步骤操作:


1. 让 Activity 和 状态栏背景颜色一致

使用 window.setFlagswindow.decorView 来使状态栏透明,让 Activity 的背景可以扩展到状态栏区域。

window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
window.statusBarColor = Color.TRANSPARENT // 让状态栏背景透明

然后在 Activity 的根布局(通常是 ConstraintLayoutFrameLayout)的 background 设置颜色,使其填充整个界面,包括状态栏。


2. 让颜色支持深色和非深色模式

可以在 res/values/colors.xmlres/values-night/colors.xml 定义不同模式下的颜色。

  • res/values/colors.xml(浅色模式颜色)
<color name="background_color">#FFFFFF</color>
  • res/values-night/colors.xml(深色模式颜色)
<color name="background_color">#121212</color>

然后在 Activity 中应用此颜色:

val rootView = findViewById<View>(android.R.id.content)
rootView.setBackgroundColor(ContextCompat.getColor(this, R.color.background_color))

3. 让状态栏颜色也随着模式切换

可以动态更新状态栏颜色:

val window = window
window.statusBarColor = ContextCompat.getColor(this, R.color.background_color)

或者直接使用 theme 属性:

<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight"><item name="android:statusBarColor">@color/background_color</item>
</style>

这样,Activity 的背景和状态栏颜色在深色模式和浅色模式下都会自动切换。

二 代码优化

让所有 Activity 继承 BaseActivity,这样可以保证整个应用的 Activity 界面和状态栏的背景一致,并减少代码重复。

是的,推荐在 BaseActivityonCreate 方法中写这段代码,然后让所有 Activity 继承 BaseActivity,这样可以保证整个应用的 Activity 界面和状态栏的背景一致,并减少代码重复。


1. 在 BaseActivity 统一设置状态栏

创建 BaseActivity 并在 onCreate 里设置 UI:

open class BaseActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// 设置状态栏透明,并让内容扩展到状态栏区域window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLEwindow.statusBarColor = Color.TRANSPARENT // 让状态栏背景透明}
}

2. 让其他 Activity 继承 BaseActivity

在应用中的 Activity 继承 BaseActivity,例如:

class MainActivity : BaseActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}
}

3. 适配深色模式的状态栏文本颜色

如果你想要在 深色模式时让状态栏的文字颜色变白,在 浅色模式时让状态栏的文字变黑,可以根据当前模式动态调整:

private fun updateStatusBarTextColor() {val nightModeFlags = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASKif (nightModeFlags == Configuration.UI_MODE_NIGHT_YES) {window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN} else {window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR}
}

然后在 onCreate 里调用它:

updateStatusBarTextColor()

这样就可以在 BaseActivity 里集中管理状态栏样式,每个 Activity 都会继承相同的 UI 规则,保持一致性,同时还能适配深色模式。

三 在 BaseActivity 里统一设置背景颜色

android.R.id.content,它是 Android 默认提供的 根视图容器,包含 Activity 的所有视图

不需要在 Activity 的根布局中声明 android.R.id.content,它是 Android 默认提供的 根视图容器,包含 Activity 的所有视图。
但是,在每个 Activity 里都手动调用 setBackgroundColor() 确实有些繁琐,建议把它也放到 BaseActivity 里统一处理。


优化方案:在 BaseActivity 里统一设置背景颜色

这样每个 Activity 只需要继承 BaseActivity,就能自动适配深色和浅色模式。

1. 修改 BaseActivity

open class BaseActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// 设置状态栏透明,让内容扩展到状态栏区域window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLEwindow.statusBarColor = Color.TRANSPARENT// 设置背景颜色setActivityBackground()}private fun setActivityBackground() {// 获取当前的夜间模式状态val nightModeFlags = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASKval backgroundColor = if (nightModeFlags == Configuration.UI_MODE_NIGHT_YES) {ContextCompat.getColor(this, R.color.background_color) // 夜间模式颜色} else {ContextCompat.getColor(this, R.color.background_color) // 日间模式颜色}// 设置根布局的背景颜色findViewById<View>(android.R.id.content).setBackgroundColor(backgroundColor)// 设置状态栏文本颜色if (nightModeFlags == Configuration.UI_MODE_NIGHT_YES) {window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN} else {window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR}
}

2. 让其他 Activity 继承 BaseActivity

Activity 里无需再设置背景:

class MainActivity : BaseActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}
}

3. 让 R.color.background_color 适配深色模式

确保 res/values/colors.xmlres/values-night/colors.xml 里都定义了 background_color

  • 浅色模式 (res/values/colors.xml)
    <color name="background_color">#FFFFFF</color>
    
  • 深色模式 (res/values-night/colors.xml)
    <color name="background_color">#121212</color>
    

这样 BaseActivity 统一管理背景颜色,所有 Activity 都自动继承,无需每个 Activity 里手动设置,代码更整洁!

2 完整代码示例

open class BaseActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// 设置状态栏透明window.statusBarColor = Color.TRANSPARENTwindow.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE// 统一设置 Activity 背景setActivityBackground()}private fun setActivityBackground() {val nightModeFlags = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASKval backgroundColor = ContextCompat.getColor(this, R.color.background_color)// 设置根布局背景颜色findViewById<View>(android.R.id.content).setBackgroundColor(backgroundColor)// 设置状态栏文本颜色if (nightModeFlags == Configuration.UI_MODE_NIGHT_YES) {window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN} else {window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR}}
}

四 android 设置状态栏背景-沉浸式状态栏

问题 1:代码含义及两个属性的作用

Material Design 3 的 Theme.Material3.DayNight.NoActionBar 主题。主题用于统一应用的外观和风格。

代码解析:
<style name="Base.Theme.IC_ACScreen" parent="Theme.Material3.DayNight.NoActionBar"><!-- 自定义亮色主题的属性 --><!-- <item name="colorPrimary">@color/my_light_primary</item> --><item name="android:statusBarColor">@color/background_color</item><item name="android:windowBackground">@android:color/white</item>
</style>
  • <item name="android:statusBarColor">@color/background_color</item>

    • 这个属性设置了状态栏的颜色。状态栏是屏幕顶部显示时间、电池状态、信号等信息的区域。
    • 在这里,状态栏的颜色被设置为 @color/background_color,即一个自定义颜色资源。
  • <item name="android:windowBackground">@android:color/white</item>

    • 这个属性设置了窗口的背景颜色。窗口背景是指整个应用界面的默认背景。
    • 在这里,窗口背景被设置为白色(@android:color/white)。

问题 2: <item name="android:statusBarColor">@color/background_color</item> 设置无效

BaseActivityonCreate 方法中使用了以下代码:

// 设置状态栏透明,并让内容扩展到状态栏区域
window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
window.statusBarColor = Color.TRANSPARENT // 让状态栏背景透明
原因分析:
  1. window.statusBarColor = Color.TRANSPARENT 的优先级更高

    • 在代码中直接设置 window.statusBarColor 的值会覆盖 XML 中的主题属性。
    • 因此,即使在主题中设置了 <item name="android:statusBarColor">@color/background_color</item>,在运行时它会被代码中的 Color.TRANSPARENT 替代。
  2. SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 的作用

    • 这个标志告诉系统将内容布局扩展到状态栏区域,通常用于实现沉浸式体验。
    • 结合 window.statusBarColor = Color.TRANSPARENT,可以让状态栏完全透明,同时内容可以延伸到状态栏下方。
解决方法:

如果希望保留主题中的 android:statusBarColor 设置,而不使用代码中的透明状态栏,可以移除以下代码:

window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
window.statusBarColor = Color.TRANSPARENT

如果需要动态控制状态栏颜色,可以通过代码动态设置,而不是依赖主题中的静态配置。


总结

  1. 两个属性的作用

    • android:statusBarColor:设置状态栏的颜色。
    • android:windowBackground:设置窗口的背景颜色。
  2. 为什么无效

    • 在代码中通过 window.statusBarColor = Color.TRANSPARENT 动态设置了状态栏颜色,覆盖了 XML 中的主题设置。
    • 如果需要使用主题中的颜色,请避免在代码中覆盖它。

SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 的作用

SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 的主要目的是让应用的内容布局延伸到状态栏区域,而不是被限制在状态栏下方。它的具体效果如下:

  1. 内容扩展到状态栏区域

    • 默认情况下,Android 应用的内容会被限制在状态栏下方的区域内。启用 SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 后,应用的内容(如图片、文字等)可以延伸到状态栏区域。
    • 这种效果通常用于实现沉浸式体验,比如全屏图片、视频播放器或背景延伸到状态栏的设计。
  2. 状态栏仍然存在

    • 状态栏本身(显示时间、电池、信号等内容)并不会消失,但其背景颜色可能会被透明化或自定义。
    • 如果状态栏背景是透明的(通过 window.statusBarColor = Color.TRANSPARENT 设置),那么状态栏中的文字和图标会直接叠加在应用内容之上。

是否遮挡状态栏中的文字?

如果不对状态栏的文字和图标进行适配,确实可能导致内容与状态栏文字重叠,影响可读性。因此,在使用 SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 时,需要特别注意以下几点:

1. 设置状态栏文字颜色
  • Android 提供了两种模式来调整状态栏文字的颜色:

    • 深色文字:适合浅色背景。
    • 浅色文字:适合深色背景。
  • 可以通过以下代码动态设置状态栏文字颜色:

    // 设置状态栏文字为深色(适用于浅色背景)
    window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR// 设置状态栏文字为浅色(适用于深色背景)
    window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    

    注意View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 仅支持 Android 6.0(API 23)及以上版本。

2. 避免内容与状态栏重叠
  • 如果内容(如工具栏、图片等)延伸到状态栏区域,可以通过设置 fitsSystemWindows 属性来避免内容与状态栏重叠。

  • 在布局文件中添加 android:fitsSystemWindows="true"

    <LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"><!-- 内容 -->
    </LinearLayout>
    

    作用

    • fitsSystemWindows 会让布局自动为系统窗口(如状态栏、导航栏)留出空间,从而避免内容与系统 UI 元素重叠。
3. 透明状态栏的视觉效果
  • 如果状态栏完全透明,同时内容延伸到状态栏区域,可以结合以下设置:
    • 设置透明背景:
      window.statusBarColor = Color.TRANSPARENT
      
    • 使用深色或浅色文字模式(根据背景颜色选择合适的文字颜色)。

具体效果示例

假设你有一个全屏图片作为背景,并希望状态栏透明,同时图片延伸到状态栏区域。以下是实现步骤:

  1. 主题设置
    styles.xml 中定义透明状态栏的主题:

    <style name="AppTheme.FullScreen" parent="Theme.Material3.DayNight.NoActionBar"><item name="android:statusBarColor">@android:color/transparent</item><item name="android:windowBackground">@color/background_color</item>
    </style>
    
  2. Activity 中的代码
    onCreate 方法中启用 SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 并设置状态栏文字颜色:

    override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)// 设置状态栏透明并扩展内容到状态栏区域window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN orView.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR // 深色文字
    }
    
  3. 布局文件
    确保根布局设置了 fitsSystemWindows 属性,避免内容与状态栏重叠:

    <ImageViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:src="@drawable/background_image"android:scaleType="centerCrop"android:fitsSystemWindows="true" />
    

总结

  • SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 的效果

    • 让内容布局延伸到状态栏区域,常用于沉浸式设计。
    • 状态栏本身不会消失,但背景可能变为透明或自定义颜色。
  • 如何避免遮挡状态栏文字

    • 设置状态栏文字颜色(深色或浅色)。
    • 使用 fitsSystemWindows 属性避免内容与状态栏重叠。
    • 根据背景颜色选择合适的文字颜色模式。

通过合理配置,可以让状态栏与应用内容完美融合,同时保证用户体验和可读性。

相关文章:

android 设置状态栏背景

一 让activity ui界面和手机状态栏一样的背景 要让 Activity 的 UI 界面和手机状态栏具有相同的背景颜色&#xff0c;并且能够随着深色模式和非深色模式的切换而改变颜色&#xff0c;你可以按照以下步骤操作&#xff1a; 1. 让 Activity 和 状态栏背景颜色一致 使用 window.s…...

vue 常见优化手段

文章目录 vue常见的优化手段前言使用key(避免明明相同的dom,每次更新都要重新生成)使用冻结的对象(避免无意义的响应式数据)使用函数式组件(减少vue组件实例的生成)vue3vue2使用计算属性(减少数据计算的次数)非实时绑定的表单项(避免表单过多触发监听事件)保持对象的…...

vue生命周期、钩子以及跨域问题简介

Vue 的生命周期是指 Vue 实例从创建到销毁的整个过程。在这个过程中&#xff0c;Vue 提供了一系列的生命周期钩子&#xff08;Lifecycle Hooks&#xff09;&#xff0c;允许开发者在特定的时间点执行代码。以下是 Vue 的生命周期和钩子的简单说明&#xff1a; Vue 的生命周期阶…...

主相机绑定小地图

资源初始化&#xff1a;在类中通过 property 装饰器定义主相机、小地图相机、小地图精灵等资源属性&#xff0c;便于在编辑器中赋值。在 start 方法里&#xff0c;当确认这些资源存在后&#xff0c;创建渲染纹理并设置其大小&#xff0c;将渲染纹理与小地图相机关联&#xff0c…...

关于音频采样率,比特,时间轴的理解

是的&#xff0c;你的理解完全正确&#xff01;-ar、-af aresampleasync1000 和 -b:a 64k 分别用于控制音频的采样率、时间戳调整和比特率。它们各自有不同的作用&#xff0c;但共同确保音频的质量和同步性。下面我将详细解释每个参数的作用和它们之间的关系。 1. -ar 参数 作用…...

三、FFmpeg学习笔记

​ FFmpeg是一个开源、跨平台的多媒体处理框架&#xff0c;能够实现音视频的录制、转换、剪辑、编码、解码、流媒体传输、过滤与后期处理等几乎所有常见的多媒体操作。其强大之处在于几乎支持所有的音视频格式、编解码器和封装格式&#xff0c;是业界公认的“瑞士军刀”。 FFmp…...

什么是 Java 泛型

一、什么是 Java 泛型&#xff1f; 泛型&#xff08;Generics&#xff09; 是 Java 中一种强大的编程机制&#xff0c;允许在定义类、接口和方法时使用类型参数。通过泛型&#xff0c;可以将数据类型作为参数传递&#xff0c;从而实现代码的通用性和类型安全。 简单来说&…...

从 WPF 到 MAUI:跨平台 UI 开发的进化之路

一、引言 在软件开发领域&#xff0c;用户界面&#xff08;UI&#xff09;开发一直是至关重要的环节。随着技术的不断发展&#xff0c;开发者对于创建跨平台、高性能且美观的 UI 需求日益增长。Windows Presentation Foundation&#xff08;WPF&#xff09;和 .NET Multi - pl…...

Docker学习之dockerfile篇(day8)

文章目录 前言一、问题描述二、具体内容1. Docker 镜像原理2. Docker 镜像制作3. Dockerfile 概念Dockerfile 的基本结构&#xff1a; 4. Dockerfile 关键字5. Docker 实战案例5.1 基于 Nginx 构建 Web 服务器 6. 验证与总结6.1 验证 Dockerfile6.2 总结 前言 Docker 是一种轻…...

Kotlin 作用域函数:apply、let、run、with、also

在 Kotlin 开发中&#xff0c;作用域函数&#xff08;Scope Functions&#xff09;是一组能让代码更简洁、更函数式的高阶函数。它们通过不同的作用域规则和返回值设计&#xff0c;解决了对象配置、空安全处理、链式操作等常见场景问题。本文将结合核心特性、代码示例和对比表格…...

Java 线程池与 Kotlin 协程 高阶学习

以下是Java 线程池与 Kotlin 协程 高阶学习的对比指南&#xff0c;结合具体代码示例&#xff0c;展示两者在异步任务处理中的差异和 Kotlin 的简化优势&#xff1a; 分析&#xff1a; 首先&#xff0c;我们需要回忆Java中线程池的常见用法&#xff0c;比如通过ExecutorService创…...

C++学习笔记(三十三)——forward_list

一、std::forward_list (1) forward_list与其适用场景 std::forward_list 是 C的STL中的单向链表&#xff08;Singly Linked List&#xff09;&#xff0c;它相比 std::list&#xff08;双向链表&#xff09;更轻量&#xff0c;适用于仅需要单向遍历的场景。 主要特点&#…...

ROS订阅相机图像识别颜色并发布识别信息

一、前言 区别于之前的直接驱动相机&#xff0c;这里改为读取图像话题进行处理&#xff0c;原因是如果opencv驱动相机后只能单一使用&#xff0c;就限制了其他识别功能&#xff08;除非将原始图像发布出来&#xff09;&#xff0c;所以这里改成可以读取任意相机图像话题的方法…...

Redis-15.在Java中操作Redis-Spring Data Redis使用方式-操作集合类型的数据

一.操作集合类型的数据 package com.sky.test;import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.*;import j…...

第十一届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

1.字串排序 不会做&#xff0c;感觉挺难的&#xff0c;有兴趣的可以看下面题解 #include <iostream> #include <string.h> using namespace std; int V; int len;//符合交换次数V&#xff0c;字符串长度最小值 int now; //当前已经构造好的那一部分字符串逆序对个数…...

CentOS 安装 zip

安装软件 sudo yum install zip unzip # CentOS 7 sudo dnf install zip unzip # CentOS 8/9压缩文件 # 压缩单个文件 zip 压缩包名.zip 文件1# 压缩多个文件 zip 压缩包名.zip 文件1 文件2 文件3# 压缩目录&#xff08;包含子目录&#xff09; zip -r 压缩包名.zip 目…...

FastPillars:一种易于部署的基于支柱的 3D 探测器

FastPillars&#xff1a;一种易于部署的基于支柱的 3D 探测器Report issue for preceding element Sifan Zhou 1 , Zhi Tian 2 , Xiangxiang Chu 2 , Xinyu Zhang 2 , Bo Zhang 2 , Xiaobo Lu11{}^{1}start_FLOATSUPERSCRIPT 1 end_FLOATSUPERSCRIPT11footnotemark: 1 Chengji…...

LVS高可用负载均衡

一、项目图 二、主机规划 主机系统安装应用网络IPclientredhat 9.5无NAT192.168.72.115/24lvs-masterredhat 9.5ipvsadm&#xff0c;keepalivedNAT192.168.72.116/24 VIP 192.168.72.100/32lvs-backupredhat 9.5ipvsadm&#xff0c;keepalivedNAT192.168.72.117/24 VIP 192.168…...

Kafka延迟队列实现分级重试

技术方案 方案背景 Kafka队列消息消费处理过程中&#xff0c;发生处理异常&#xff0c;需要实现重试机制&#xff0c;并基于重试次数实现不同延迟时间重试方案。 方案介绍 通过实现Kafka延迟队列来实现消息重试机制。 目标&#xff1a; 支持所有业务场景的延迟重试支持多…...

谷粒微服务高级篇学习笔记整理---异步线程池

多线程回顾 多线程实现的4种方式 1. 继承 Thread 类 通过继承 Thread 类并重写 run() 方法实现多线程。 public class MyThread extends Thread {Overridepublic void run() {System.out.println("线程运行: " Thread.currentThread().getName());} }// 使用 pub…...

3.第二阶段x64游戏实战-分析人物移动实现人物加速

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;2.第二阶段x64游戏实战-x64dbg的使用 想找人物的速度&#xff0c;就需要使用Ch…...

MQTT 服务器(emqx)搭建及使用(一)

一. EMQX 服务器搭建 1.下载EMQX 下载链接&#xff1a;Windows | EMQX 文档 官方手册 2.下载内容解压至盘符根目录 3.进入bin文件夹&#xff0c;在地址栏输入cmd 4.依次输入下面命令安装服务 .\emqx.cmd install .\emqx.cmd console 5.设置自启动 创建批处理文件&#x…...

什么是SSE和websocket

以下是 SSE&#xff08;Server-Sent Events&#xff09; 和 WebSocket 在大模型&#xff08;如 ChatGPT&#xff09;流式输出中的实际例子对比&#xff0c;包含代码实现和场景分析&#xff1a; —### 1. SSE&#xff08;Server-Sent Events&#xff09;#### 场景 大模型生成文本…...

蓝桥杯专项复习——二分查找、二分答案

目录 二分查找、二分答案基础知识 二分查找模版 【模版题】数的范围 借教室 二分查找、二分答案基础知识 二分模版 二分查找 【模版题】数的范围 输入样例 6 3 1 2 2 3 3 4 3 4 5输出样例 3 4 5 5 -1 -1 思路&#xff1a; 对应两个模版&#xff0c;起始位置是对应第一…...

Android学习总结之Kotlin 协程

一、引言 在 Android 开发中&#xff0c;异步任务处理是绕不开的话题。传统的线程、Handler、AsyncTask 等方案要么过于繁琐&#xff0c;要么存在生命周期管理问题。Kotlin 协程的出现&#xff0c;以优雅的语法和强大的结构化并发能力&#xff0c;成为解决异步编程难题的理想方…...

docker的与使用

1 docker初体验 1.1 docker简介 问题&#xff1a;为什么会有docker出现&#xff1f; 一款产品从开发到上线&#xff0c;从操作系统&#xff0c;到运行环境&#xff0c;再到应用配置。作为开发运维之间的协作我们需要关心很多东西&#xff0c;这也是很多互联网公司都不得不面对…...

解决ubuntu18.04无法进入系统桌面

解决ubuntu18.04无法进入系统桌面 解决ubuntu18.04无法进入系统桌面前言1、原因2、解决现象总结 前言 Vmware虚拟机运行跑Linux项目&#xff0c;没有关掉运行的进程就关机&#xff0c;导致系统无法进入系统桌面&#xff0c;一直卡在系统的初始化界面&#xff0c;按下快捷键发…...

Docker学习之容器虚拟化与虚拟机的区别(day11)

文章目录 前言一、问题描述二、具体内容1. 虚拟机&#xff08;VM&#xff09;2. 容器虚拟化&#xff08;Docker&#xff09;容器虚拟化的核心技术 三、总结1. 资源占用对比2. 适用场景3. 结论 前言 在现代软件开发和部署过程中&#xff0c;Docker 和虚拟机&#xff08;VM&…...

无人机数据链技术及运行方式详解!

一、无人机数据链技术要点 1. 通信传输技术 频段选择&#xff1a; 常用频段包括 L波段&#xff08;1-2 GHz&#xff09;、C波段&#xff08;4-8 GHz&#xff09;、Ku/K波段&#xff08;12-40 GHz&#xff09;&#xff0c;不同频段在传输距离、带宽和抗干扰性间权衡。 低…...

【JavaEE】MyBatis - Plus

目录 一、快速使用二、CRUD简单使用三、常见注解3.1 TableName3.2 TableFiled3.3 TableId 四、条件构造器4.1 QueryWrapper4.2 UpdateWrapper4.3 LambdaQueryWrapper4.4 LambdaUpdateWrapper 五、自定义SQL 一、快速使用 MyBatis Plus官方文档&#xff1a;MyBatis Plus官方文档…...

设计模式 三、结构型设计模式

一、代理模式 代理设计模式&#xff08;Proxy Design Pattern&#xff09;是一种结构型设计模式&#xff0c;它为其他对象提供了一个代理&#xff0c;以控制对这个对象的访问。 代理模式可以用于实现懒加载、安全访问控制、日志记录等功能。简单来说&#xff0c;代理模式 就是通…...

视频编码器的抉择:x264、x265、libaom、vvenc 对比测试实验

264、x265、libaom、vvenc 对比测试实验 测试机器配置&#xff1a;Apple M1 Pro -16G编码器版本&#xff08;选择自己编译&#xff09;&#xff1a;所有源码都是当前最新更新的状态&#xff0c;此外各类编码具体的编译过程可参考我的相关系列博客。 编码器GitHubx264git clon…...

JMeter脚本录制(火狐)

录制前准备&#xff1a; 电脑&#xff1a; 1、将JMeter证书导入&#xff0c;&#xff08;bin目录下有一个证书&#xff0c;需要安装这个证书到电脑中&#xff09; 2、按winr&#xff0c;输入certmgr.msc&#xff0c;打开证书&#xff0c;点击下一步&#xff0c;输入JMeter证书…...

10、Linux C 网络编程(完整版)

1、网络发展历史和分层 1.1 Internet 的历史 起源&#xff1a; 1957 年&#xff1a;苏联发射第一颗人造卫星 "Sputnik"。 1958 年&#xff1a;美国总统艾森豪威尔成立 DARPA&#xff08;国防部高级研究计划署&#xff09;。 1968 年&#xff1a;DARPA 提出 "…...

拼多多 anti-token unidbg 分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 逆向分析 版本7.3-7.4 都试过加密没什…...

Swoole 的 Hyperf 框架和 Go 的 Gin 框架高并发原理以及技术实现对比分析

Swoole 的 Hyperf 框架和 Go 的 Gin 框架虽然都支持高并发&#xff0c;但它们的实现原理、底层机制和适用场景有显著差异。以下从 高并发原理、技术实现区别、优缺点 三个方面详细分析&#xff1a; 一、高并发实现原理 1. Hyperf (PHP Swoole) Hyperf 的高并发能力基于 Swoo…...

CSS3学习教程,从入门到精通,CSS3 媒体查询实现响应式布局语法指南(21)

CSS3 媒体查询实现响应式布局语法指南 一、媒体查询核心语法 1. 基础语法结构 media 媒体类型 and (媒体特性) {/* 匹配条件时应用的CSS规则 */ }2. 媒体类型&#xff08;可省略&#xff09; 类型值说明all所有设备&#xff08;默认值&#xff09;screen屏幕设备print打印机…...

C#中,什么是委托,什么是事件及它们之间的关系

1. 委托&#xff08;Delegate&#xff09; 定义与作用 ‌委托‌是类型安全的函数指针&#xff0c;用于封装方法&#xff0c;支持多播&#xff08;链式调用&#xff09;。‌核心能力‌&#xff1a;将方法作为参数传递或异步回调。 使用场景 回调机制&#xff08;如异步操作完…...

【LeetCode 热题100】347:前 K 个高频元素(详细解析)(Go语言版)

&#x1f680; 力扣热题 347&#xff1a;前 K 个高频元素&#xff08;详细解析&#xff09; &#x1f4cc; 题目描述 力扣 347. 前 K 个高频元素 给你一个整数数组 nums 和一个整数 k&#xff0c;请你返回其中出现频率 前 k 高的元素。你可以按 任意顺序 返回答案。 &#x1f…...

②EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

型号 协议转换通信网关 EtherCAT 转 Modbus TCP 配置说明 网线连接电脑到模块上的 WEB 网页设置网口&#xff0c;电脑所连网口的网段设置成 192.168.1.X&#xff08;X 是除 8 外的任一数值&#xff09;后&#xff0c;打开浏览器&#xff0c;地址栏输入 192.168.1.8 &#xff…...

微服务集成测试 -华为OD机试真题(A卷、Python)

题目描述 现在有n个容器服务&#xff0c;服务的启动可能有一定的依赖性&#xff08;有些服务启动没有依赖&#xff09;&#xff0c;其次&#xff0c;服务自身启动加载会消耗一些时间。 给你一个n n 的二维矩阵useTime&#xff0c;其中useTime[i][i]10表示服务i自身启动加载需…...

k8s常用总结

1. Kubernetes 架构概览 主节点&#xff08;Master&#xff09;&#xff1a; 负责集群管理&#xff0c;包括 API Server、Controller Manager、Scheduler 和 etcd 存储。 工作节点&#xff08;Node&#xff09;&#xff1a; 运行 Pod 和容器&#xff0c;包含 kubelet、kube-pr…...

【算法】并查集基础讲解

一、定义 一种树型的数据结构&#xff0c;用于处理一些不相交集合的合并及查询问题。思想是用一个数组表示了整片森林&#xff08;parent&#xff09;&#xff0c;树的根节点唯一标识了一个集合&#xff0c;只要找到了某个元素的的树根&#xff0c;就能确定它在哪个集合里。 …...

探索PHP的未来发展与应用趋势

PHP&#xff0c;作为Web开发领域的常青树&#xff0c;自1995年诞生以来&#xff0c;始终在动态网页开发中占据重要席位。随着技术的不断演进&#xff0c;PHP也在持续更新&#xff0c;以适应现代开发需求。本文将深入探讨PHP的最新发展动态及其在2025年的应用趋势。 PHP 8&…...

C#调用ACCESS数据库,解决“Microsoft.ACE.OLEDB.12.0”未注册问题

C#调用ACCESS数据库&#xff0c;解决“Microsoft.ACE.OLEDB.12.0”未注册问题 解决方法&#xff1a; 1.将C#采用的平台从AnyCpu改成X64 2.将官网下载的“Microsoft Access 2010 数据库引擎可再发行程序包AccessDatabaseEngine_X64”文件解压 3.安装解压后的文件 点击下载安…...

ubuntu22.04.5安装docker,解决安装出现的错误,解决Docker hello-world没打印出来

文章目录 前言一 安装失败解决1结合具体报错分析2 首先怀疑是VPN的问题3 直接百度报错信息4最终解决问题 二 验证Docker hello-world没打印出来总结 前言 先说一下前面的情况&#xff0c;使用的是公司的工作站&#xff0c;登录公司一个帐号使用的公司网络&#xff0c;使用网上…...

HMTL+JS+CSS实现贪吃蛇游戏,包含有一般模式,困难模式,还有无敌模式

HMTLJSCSS实现贪吃蛇游戏&#xff0c;包含有一般模式&#xff0c;困难模式&#xff0c;还有无敌模式&#xff08;可以穿墙死不了&#xff0c;从左边进去可以从右边出来&#xff09;&#xff0c;显示当前分数和最高分&#xff0c;吃到的球颜色可以叠加到蛇身体上 为了适配手机端…...

vue将页面导出成word

方法一&#xff1a;使用 html-docx-js html-docx-js 是一个轻量级的库&#xff0c;可以将 HTML 转换为 Word 文档。 安装依赖 首先安装 html-docx-js&#xff1a; Bash深色版本 npm install html-docx-js --save创建导出逻辑 在 Vue 组件中实现导出功能的代码如下&#xff1…...

Spring MVC 页面跳转方案与区别

SpringMVC 的页面跳转方案主要分为 ‌转发&#xff08;Forward&#xff09;‌ 和 ‌重定向&#xff08;Redirect&#xff09;‌ 两类&#xff0c;具体实现方式和区别如下&#xff1a; 一、页面跳转方案 1. ‌转发&#xff08;Forward&#xff09;‌ 默认方式‌&#xff1a;直…...

Open GL ES ->纹理贴图,顶点坐标和纹理坐标组合到同一个顶点缓冲对象中进行解析

XML文件 <?xml version"1.0" encoding"utf-8"?> <com.example.myapplication.MyGLSurfaceView2 xmlns:android"http://schemas.android.com/apk/res/android"android:id"id/glSurfaceView"android:layout_width"matc…...