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

Android13 允许桌面自动旋转

一)需求-场景

Android13 实现允许桌面自动旋转
Android13 版本开始后,支持屏幕自动旋转,优化体验和兼容性,适配不同屏幕 主界面可自动旋转

在这里插入图片描述

二)参考资料

android framework13-launcher3【06手机旋转问题】
Launcher默认支持旋转
Launcher默认支持旋转
Launcher3 布局
Launcher3 版本变化
展讯Android9.0 Launcher 简介:

三)遇到问题

定制化屏幕旋转遇到两个核心问题

  • 屏幕自动旋转后,最近历史任务并没有旋转,方向异常。
  • 定制的好多案子,比如平板产品中旋转没有问题,但是好多手机方案新品来做平板产品。就遇到好多问题了,当成手机了,需要默认为平板。无法解决最近历史任务异常问题。
  • 在GMS 产品中,是存在配置是存在覆盖问题的。

四) 修改点

/packages/apps/Launcher3/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
/packages/apps/Launcher3/src/com/android/launcher3/states/RotationHelper.java
/packages/apps/Launcher3/src/com/android/launcher3/util/window/WindowManagerProxy.java/packages/apps/Launcher3/quickstep/res/xml/indexable_launcher_prefs.xml 
/packages/apps/Launcher3/res/xml/launcher_preferences.xml
/vendor/google/apps/SearchLauncher/res/xml/launcher_preferences.xm

备注:仅针对大多数产品,各家平台需要根据自己的实际产品类型和方案类型来实际更改。思路是没问题的

五)属性Launcher3 种类及构成

为什么要了解这个,一方面搞清楚源码里面好多个Launcher,或者 Launcher 相关的究竟是什么。特别是GMS 版本,需要怎么改,不然改了还是会覆盖的。【暂不分析源码配置哪个Launcher】
总之:如果是GMS项目,先搞清楚自己Launcher构成,如何组合编译的,然后配置相关的建议都修改。
在这里插入图片描述

六)实现方案

主要解决三个问题:

修改默认配置,自动旋转改为true

/packages/apps/Launcher3/res/xml/launcher_preferences.xml
/vendor/google/apps/SearchLauncher/res/xml/launcher_preferences.xm
defaultValue 默认值改为ture <SwitchPreferenceandroid:key="pref_allowRotation"android:title="@string/allow_rotation_title"android:summary="@string/allow_rotation_desc"android:defaultValue="false"android:persistent="true"launcher:logIdOn="615"launcher:logIdOff="616" /><SwitchPreferenceandroid:key="pref_allowRotation"android:title="@string/allow_rotation_title"android:summary="@string/allow_rotation_desc"android:defaultValue="false"android:persistent="true" />

RecentsOrientedState 允许桌面旋转设置

直接设置为true

  private void updateHomeRotationSetting() {boolean homeRotationEnabled = true;//mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, true);//huanghb modifysetFlag(FLAG_HOME_ROTATION_ALLOWED_IN_PREFS, homeRotationEnabled);SystemUiProxy.INSTANCE.get(mContext).setHomeRotationEnabled(homeRotationEnabled);}

手机方案适配平板方案,模拟为平板方案

RotationHelper.java getAllowRotationDefaultValue 判断当前是否允许旋转,不用计算,直接返回 true

/*** Returns the default value of {@link #ALLOW_ROTATION_PREFERENCE_KEY} preference.*/public static boolean getAllowRotationDefaultValue(DeviceProfile deviceProfile) {// If the device's pixel density was scaled (usually via settings for A11y), use the// original dimensions to determine if rotation is allowed of not.float originalSmallestWidth = dpiFromPx(Math.min(deviceProfile.widthPx, deviceProfile.heightPx), DENSITY_DEVICE_STABLE);return true;}

WindowManagerProxy.java 判断当前是平板的的判断。

public static final int MIN_TABLET_WIDTH = 1boolean isTablet = swDp >= MIN_TABLET_WIDTH;boolean isTablet = config.smallestScreenWidthDp > MIN_TABLET_WIDTH;
这样在判断的时候,就直接以平板的方式来判断了,就满足自动旋转要求了。

分享部分git 修改记录

diff --git a/packages/apps/Launcher3/quickstep/res/xml/indexable_launcher_prefs.xml b/packages/apps/Launcher3/quickstep/res/xml/indexable_launcher_prefs.xml
old mode 100644
new mode 100755
index b4740e5..aa1fd4d
--- a/packages/apps/Launcher3/quickstep/res/xml/indexable_launcher_prefs.xml
+++ b/packages/apps/Launcher3/quickstep/res/xml/indexable_launcher_prefs.xml
@@ -26,7 +26,7 @@android:key="pref_allowRotation"android:title="@string/allow_rotation_title"android:summary="@string/allow_rotation_desc"
-        android:defaultValue="false"
+        android:defaultValue="true"android:persistent="true" /></PreferenceScreen>
diff --git a/packages/apps/Launcher3/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java b/packages/apps/Launcher3/quickstep/src/com/android/quickstep/util/RecentsOrientedState.jav
old mode 100644
new mode 100755
index 6038a22..76dd118
--- a/packages/apps/Launcher3/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
+++ b/packages/apps/Launcher3/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java
@@ -291,7 +291,7 @@ public class RecentsOrientedState implements}private void updateHomeRotationSetting() {
-        boolean homeRotationEnabled = mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, false);
+        boolean homeRotationEnabled = true;//mSharedPrefs.getBoolean(ALLOW_ROTATION_PREFERENCE_KEY, true);//huanghb modifysetFlag(FLAG_HOME_ROTATION_ALLOWED_IN_PREFS, homeRotationEnabled);SystemUiProxy.INSTANCE.get(mContext).setHomeRotationEnabled(homeRotationEnabled);}
diff --git a/packages/apps/Launcher3/res/xml/launcher_preferences.xml b/packages/apps/Launcher3/res/xml/launcher_preferences.xml
old mode 100644
new mode 100755
index 8a0c909..171eeb2
--- a/packages/apps/Launcher3/res/xml/launcher_preferences.xml
+++ b/packages/apps/Launcher3/res/xml/launcher_preferences.xml
@@ -45,7 +45,7 @@android:key="pref_allowRotation"android:title="@string/allow_rotation_title"android:summary="@string/allow_rotation_desc"
-        android:defaultValue="false"
+        android:defaultValue="true"android:persistent="true"launcher:logIdOn="615"launcher:logIdOff="616" />
diff --git a/packages/apps/Launcher3/src/com/android/launcher3/states/RotationHelper.java b/packages/apps/Launcher3/src/com/android/launcher3/states/RotationHelper.java
old mode 100644
new mode 100755
index 38b62d4..bf88c9d
--- a/packages/apps/Launcher3/src/com/android/launcher3/states/RotationHelper.java
+++ b/packages/apps/Launcher3/src/com/android/launcher3/states/RotationHelper.java
@@ -49,7 +49,7 @@ public class RotationHelper implements OnSharedPreferenceChangeListener,// original dimensions to determine if rotation is allowed of not.float originalSmallestWidth = dpiFromPx(Math.min(deviceProfile.widthPx, deviceProfile.heightPx), DENSITY_DEVICE_STABLE);
-        return originalSmallestWidth >= MIN_TABLET_WIDTH;
+        return true;}public static final int REQUEST_NONE = 0;
diff --git a/packages/apps/Launcher3/src/com/android/launcher3/util/window/WindowManagerProxy.java b/packages/apps/Launcher3/src/com/android/launcher3/util/window/WindowManagerProxy.java
old mode 100644
new mode 100755
index 9665bf9..d81565c
--- a/packages/apps/Launcher3/src/com/android/launcher3/util/window/WindowManagerProxy.java
+++ b/packages/apps/Launcher3/src/com/android/launcher3/util/window/WindowManagerProxy.java
@@ -61,7 +61,7 @@ import com.android.launcher3.util.WindowBounds;*/public class WindowManagerProxy implements ResourceBasedOverride {-    public static final int MIN_TABLET_WIDTH = 600;
+    public static final int MIN_TABLET_WIDTH = 1;//huanghb modifypublic static final MainThreadInitializedObject<WindowManagerProxy> INSTANCE =forOverride(WindowManagerProxy.class, R.string.window_manager_proxy_class);
diff --git a/vendor/google/apps/SearchLauncher/res/xml/launcher_preferences.xml b/vendor/google/apps/SearchLauncher/res/xml/launcher_preferences.xml
old mode 100644
new mode 100755
index a70bb30..f95219b
--- a/vendor/google/apps/SearchLauncher/res/xml/launcher_preferences.xml
+++ b/vendor/google/apps/SearchLauncher/res/xml/launcher_preferences.xml
@@ -50,7 +50,7 @@android:title="@string/title_show_google_app"/><SwitchPreference
-        android:defaultValue="false"
+        android:defaultValue="true"android:key="pref_allowRotation"android:persistent="true"android:summary="@string/allow_rotation_desc"
(END)

七)总结:

如需要解决的问题一样
1)更改配置
2)解决最近历史任务允许旋转设置
3)把产品当做pad 来,判断是否pad 地方判断,更改逻辑判断条件实现

相关文章:

Android13 允许桌面自动旋转

一&#xff09;需求-场景 Android13 实现允许桌面自动旋转 Android13 版本开始后&#xff0c;支持屏幕自动旋转&#xff0c;优化体验和兼容性&#xff0c;适配不同屏幕 主界面可自动旋转 二&#xff09;参考资料 android framework13-launcher3【06手机旋转问题】 Launcher默…...

异常知识及其使用

异常的简单概念 在C中&#xff0c;异常处理是一种机制&#xff0c;用于处理程序运行时发生的意外情况。它允许程序在发生错误时&#xff0c;将控制权转移到一个专门的代码块&#xff0c;而不是让程序直接崩溃。C的异常处理机制包括以下几个关键概念&#xff1a; throw 用途&…...

Spark常问面试题---项目总结

一、数据清洗&#xff0c;你都清洗什么&#xff1f;或者说 ETL 你是怎么做的&#xff1f; 我在这个项目主要清洗的式日志数据&#xff0c;日志数据传过来的json格式 去除掉无用的字段&#xff0c;过滤掉json格式不正确的脏数据 过滤清洗掉日志中缺少关键字段的数据&#xff…...

哈希及其模拟实现

1.哈希的概念 顺序结构以及平衡树中&#xff0c;元素的关键码与其存储位置之间没有对应的关系。因此&#xff0c;在查找一个元素时&#xff0c;必须要经过关键码的多次比较。顺序查找的时间复杂度为O(N)&#xff0c;平衡树中为树的高度&#xff0c;即O(log_2 N)&#xff0c;搜…...

Day 32 动态规划part01

今天正式开始动态规划! 理论基础 无论大家之前对动态规划学到什么程度,一定要先看 我讲的 动态规划理论基础。 如果没做过动态规划的题目,看我讲的理论基础,会有感觉 是不是简单题想复杂了? 其实并没有,我讲的理论基础内容,在动规章节所有题目都有运用,所以很重要!…...

【娱乐项目】竖式算术器

Demo介绍 一个加减法随机数生成器&#xff0c;它能够生成随机的加减法题目&#xff0c;并且支持用户输入答案。系统会根据用户输入的答案判断是否正确&#xff0c;统计正确和错误的次数&#xff0c;并显示历史记录和错题记录。该工具适合用于数学练习&#xff0c;尤其适合练习基…...

XRP 深度解析:从技术到 Meme 币交易指南

撰文&#xff1a;Ignas | DeFi Research 编译&#xff1a;Yuliya&#xff0c;PANews 本文来源Techub News:XRP 深度解析&#xff1a;从技术到 Meme 币交易指南 在当前加密货币市场&#xff0c;一个令人瞩目的现象正在上演&#xff1a;XRP 在短短一个月内暴涨 3.5 倍&#xf…...

机器学习周志华学习笔记-第13章<半监督学习>

机器学习周志华学习笔记-第13章&#xff1c;半监督学习&#xff1e; 卷王&#xff0c;请看目录 13半监督学习13.1 生成式方法13.2 半监督SVM13.3 基于分歧的方法13.4 半监督聚类 13半监督学习 前面我们一直围绕的都是监督学习与无监督学习&#xff0c;监督学习指的是训练样本包…...

【MySql】navicat连接报2013错误

navicat连接mysql报2013错误 报错信息1、检验Mysql数据库是否安装成功2、对Mysql的配置文件进行修改配置2.1、找到配置文件2.2、Linux下修改配置文本 3、连接进入mysql服务4、在mysql下执行授权命令 报错信息 Navicat连接mysql报2013错误 2013-Lost connection to MYSQL serve…...

【微服务】Docker

一、Docker基础 1、依赖的兼容问题&#xff1a;Docker允许开发中将应用、依赖、函数库、配置一起打包&#xff0c;形成可移植镜像Docker应用运行在容器中&#xff0c;使用沙箱机制&#xff0c;相互隔离。 2、如何解决开发、测试、生产环境有差异的问题&#xff1a;Docker镜像…...

renderExtraFooter 添加本周,本月,本年

在 Ant Design Vue 中&#xff0c;a-date-picker 组件提供了一个 renderExtraFooter 属性&#xff0c;可以用来渲染额外的页脚内容。你可以利用这个属性来添加“本周”、“本月”和“本年”的按钮。下面是如何在 Vue 2 项目中实现这一功能的具体步骤&#xff1a; 1.确保安装了…...

警惕开源信息成为泄密源头

文章目录 前言一、信息公开需谨慎1、警惕采购招标泄密。2、警惕信息公开泄密。3、警惕社交媒体泄密。 二、泄密风险需严防1、健全制度&#xff0c;明确责任。2、加强管控&#xff0c;严格审查。3、提高意识&#xff0c;谨言慎行。 前言 大数据时代&#xff0c;信息在网络空间发…...

密码学和CA证书

参考视频 一. 公钥私钥的理解 我们提到的使用公钥私钥进行加密解密只是一种口头表达方式&#xff0c;准确来说应该是公钥和私钥通过加密 算法生成&#xff0c;也需要通过配合加密算法进行解密。而不是直接用公钥和私钥进行加密解密。 二. 对称加密和非对称加密算法 1. 非对…...

Python 入门教程(2)搭建环境 | 2.4、VSCode配置Node.js运行环境

文章目录 一、VSCode配置Node.js运行环境1、软件安装2、安装Node.js插件3、配置VSCode4、创建并运行Node.js文件5、调试Node.js代码 一、VSCode配置Node.js运行环境 1、软件安装 安装下面的软件&#xff1a; 安装Node.js&#xff1a;Node.js官网 下载Node.js安装包。建议选择L…...

Nginx Web服务器管理、均衡负载、访问控制与跨域问题

Nginx Web 服务器的均衡负载、访问控制与跨域问题 Nginx 的配置 1. 安装Nginx 首先安装Nginx apt install nginx -ycaccpurgatory-v:~$ sudo apt install nginx [sudo] password for cacc: Reading package lists... Done Building dependency tree... Done Reading state i…...

排序学习整理(2)

上集回顾 排序学习整理&#xff08;1&#xff09;-CSDN博客 2.3 交换排序 交换排序的基本思想是&#xff1a;根据序列中两个记录键值的比较结果&#xff0c;交换这两个记录在序列中的位置。 特点&#xff1a; 通过比较和交换操作&#xff0c;将键值较大的记录逐步移动到序列…...

【前端】将vue的方法挂载到window上供全局使用,也方便跟原生js做交互

【前端】将vue的方法挂载到window上供全局使用&#xff0c;也方便跟原生js做交互 <template><div><el-button click"start">调用方法</el-button></div> </template> <script> // import { JScallbackProc } from ./JScal…...

单片机的中断系统

作者简介 彭煜轩&#xff0c;男&#xff0c;银川科技学院计算机与人工智能学院&#xff0c;2022级计算机与科学技术8班本科生&#xff0c;单片机原理及应用课程第3组。 指导老师&#xff1a;王兴泽 电子邮件&#xff1a;1696409709qq.com 前言 本篇文章是参考《单片机原理…...

Java基础面向对象(接口高级)

高版本的接口 JDK8.0 普通的公开非抽象方法(默认方法) [public] default 返回值类型 方法名(形参列表){//操作语句 } default: 在此位置身份为非抽象标识 接口中的非抽象方法实现类不需要进行重写且通常不会进行重写 当父类与接口的方法体出现冲突时, 优先执行父类内容 (类优…...

OpenCV圆形标定板检测算法findCirclesGrid原理详解

OpenCV的findCirclesGrid函数检测圆形标定板的流程如下:   findCirclesGrid函数源码: //_image,输入图像 //patternSize,pattern的宽高 //_centers,blobs中心点的位置 //flags,pattern是否对称 //blobDetector,这里使用的是SimpleBlobDetector bool cv::findCirclesGrid(…...

Linux 网卡收包流程如下

Linux 网卡收包流程如下 网卡收到数据包将数据包从网卡硬件缓存移动到服务器内存中(DMA方式&#xff0c;不经过CPU)通过硬中断通知CPU处理CPU通过软中断通知内核处理经过TCP/IP协议栈处理应用程序通过read()从socket buffer读取数据 网卡丢包 我们先看下ifconfig的输出&#…...

普中51单片机——LED流水灯模块

1、GPIO概念 GPIO&#xff08;general purpose intput output&#xff09;是通用输入输出端口的简称&#xff0c;可以通过软件来控制其输入和输出。51 单片机芯片的 GPIO 引脚与外部设备连接起来&#xff0c;从而实现与外部通讯、 控制以及数据采集的功能。 1.1、GPIO分类 &a…...

Linux 各个目录作用

刚毕业的时候学习Linux基础知识&#xff0c;发现了一份特别好的文档快乐的 Linux 命令行&#xff0c;翻译者是happypeter&#xff0c;作者当年也在慕课录制了react等前端相关的视频&#xff0c;通俗易懂&#xff0c;十分推荐 关于Linux的目录&#xff0c;多数博客已有详细介绍…...

【包教包会】CocosCreator3.x——重写Sprite,圆角、3D翻转、纹理循环、可合批调色板、不影响子节点的位移旋转缩放透明度

一、效果演示 重写Sprite组件&#xff0c;做了以下优化&#xff1a; 1、新增自变换&#xff0c;在不影响子节点的前提下位移、旋转、缩放、改变透明度 新增可合批调色板&#xff0c;支持色相、明暗调节 新增圆角矩形、3D透视旋转、纹理循环 所有功能均支持合批、原生平台&…...

腾讯阅文集团Java后端开发面试题及参考答案

Java 的基本数据类型有哪些?Byte 的数值范围是多少? Java 的基本数据类型共有 8 种,可分为 4 类: 整数类型:包括 byte、short、int 和 long。byte 占 1 个字节,其数值范围是 - 128 到 127,用于表示较小范围的整数,节省内存空间,在处理一些底层的字节流数据或对内存要求…...

Kafka如何保证消息可靠?

大家好&#xff0c;我是锋哥。今天分享关于【Kafka如何保证消息可靠&#xff1f;】面试题。希望对大家有帮助&#xff1b; Kafka如何保证消息可靠&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka通过多种机制来确保消息的可靠性&#xff0c;主要包…...

【layui】tabs 控件内通过 iframe 加载url 方式渲染tab页面

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>tabs 内部使用 iframe 嵌套 url 页面</title><link rel"stylesheet" href"../../../libs/layui/layui-2.4.5/dist/css/layui.css"><scr…...

EtherCAT转DeviceNe台达MH2与欧姆龙CJ1W-DRM21通讯案例

一.案例背景 台达MH2设备通常采用EtherCAT通信协议&#xff0c;这种协议在高速实时通信方面表现出色&#xff0c;适合设备之间的快速数据交换和精准控制。而欧姆龙CJ1W-DRM21 模块基于DeviceNet通信协议&#xff0c;DeviceNet在工业现场总线领域应用广泛&#xff0c;侧重于设备…...

清华、智谱团队:「6000亿合成交错语音文本」预训练,问答性能提升近3倍

与基于文本的大语言模型&#xff08;LLM&#xff09;相比&#xff0c;语音语言模型&#xff08;SpeechLM&#xff09;接受语音输入并生成语音输出&#xff0c;能够实现更自然的人机交互。然而&#xff0c;传统的 SpeechLM 因缺乏无监督语音数据和并行语音-文本数据&#xff0c;…...

Python办公——openpyxl处理Excel每个sheet每行 修改为软雅黑9号剧中+边框线

目录 专栏导读背景1、库的介绍①&#xff1a;openpyxl 2、库的安装3、核心代码4、完整代码5、最快的方法(50万行44秒)——表头其余单元格都修改样式总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双手 &#x1f3f3;️‍…...

遇到问题:hive中的数据库和sparksql 操作的数据库不是同一个。

遇到的问题&#xff1a; 1、hive中的数据库和sparksql 操作的数据库不同步。 观察上面的数据库看是否同步 &#xff01;&#xff01;&#xff01; 2、查询服务器中MySQL中hive的数据库&#xff0c;发现创建的位置没有在hdfs上&#xff0c;而是在本地。 这个错误产生的原因是&…...

《网络攻防实践》实践五报告

1.实践内容 防火墙 &#xff08;1&#xff09;基本概念 所谓“防火墙”是指一种将内部网和公众访问网&#xff08;如Internet&#xff09;分开的方法&#xff0c;它实际上是一种建立在现代通信网络技术和信息安全技术基础上的应用性安全技术&#xff0c;隔离技术。越来…...

深入傅里叶级数与傅里叶变换:从基础到应用

傅里叶分析是数学、物理和工程领域的一项基础工具&#xff0c;其核心思想是将复杂的信号或函数分解为一系列简单的正弦和余弦函数的叠加。本文将带你从傅里叶级数入门&#xff0c;逐步深入傅里叶变换的概念及其应用场景。 一、傅里叶级数&#xff1a;周期信号的分解 1. 什么是傅…...

C++入门一

一、命名空间 #include <stdio.h> int rand 0; int main() {printf("hello world\n");printf("%d\n", rand); } 这样是可以运行的&#xff0c;可是当我们加入一个头文件的时候 #include <stdio.h> #include <stdlib.h> int rand 0;…...

Spring Boot 项目集成camunda流程引擎

Spring Boot 项目集成camunda流程引擎 camunda地址 camunda中文地址 使用camunda开源工作流引擎有&#xff1a;通过docker运行、使用springboot集成、部署camunda发行包、基于源代码编译运行等多种方式。 文本重点介绍如何在Spring Boot应用程序中如何集成Camunda Platform开…...

Ubuntu20.04编译安装Carla全过程

前言 Carla的安装是我现阶段解决的第一个问题&#xff0c;现记录一下我安装Carla的过程以及我在安装过程中遇到的一些问题。 一、安装前准备 1、硬件环境 carla是一款基于UE4开发的模拟仿真软件&#xff0c;本身对硬件的要求比较高。 我是windows与ubuntu双系统&#xff0…...

typecho 自动订阅 RSS

昨天学习了一下 RSS 订阅知识之后&#xff0c;经过一番百度搜索&#xff0c;终于在自己的博客上实现了 RSS 订阅功能&#xff0c;但苦于技术有限&#xff0c;不能对 Feed 文件进行定时缓存&#xff0c;每次打开链接都会比较延迟。今天继续对这个功能进行了学习&#xff0c;突然…...

MFC图形函数学习13——在图形界面输出文字

本篇是图形函数学习的最后一篇&#xff0c;相关内容暂告一段落。 在图形界面输出文字&#xff0c;涉及文字字体、大小、颜色、背景、显示等问题&#xff0c;完成这些需要系列函数的支持。下面做简要介绍。 一、输出文本函数 原型&#xff1a;virtual BOOL te…...

11.25.2024刷华为OD

文章目录 HJ76 尼科彻斯定理&#xff08;观察题&#xff0c;不难&#xff09;HJ77 火车进站&#xff08;DFS&#xff09;HJ91 走格子方法&#xff0c;&#xff08;动态规划&#xff0c;递归&#xff0c;有代表性&#xff09;HJ93 数组分组&#xff08;递归&#xff09;语法知识…...

Python练习55

Python日常练习 题目&#xff1a; 补充函数getLastDay(y,m)&#xff0c;其功能是计算y年m月共有多少天。 --------------------------------------------------------- 注意&#xff1a; 部分源程序给出如下。请勿改动主函数main和其它函数中的 任何内容&#xff0c;…...

DDR5和DDR4之区别(The Difference between DDR5 and DDR4)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 DDR是什么意思? DDR5和D…...

分层架构 IM 系统之 Router 架构分析

通过前面文章的分析&#xff0c;我们已经明确&#xff0c;Router 的核心职责是作为中央存储记录在线客户端的连接状态&#xff0c;Router 在本质上是一个内存数据库。 内存是一种易失性的存储&#xff0c;既如此&#xff0c;Router 的可用性如何保障呢&#xff1f; 副本是分布…...

用函数实现模块化程序设计(七)--数组作为函数参数(排序算法)

调用有参函数时&#xff0c;需要实参&#xff0c;实参可以是常量&#xff0c;变量&#xff0c;表达式&#xff0c;数组元素的作用与变量相当&#xff0c;凡是变量出现的地方都可用数组代替&#xff0c;数组元素可以用作函数实参&#xff0c;数组名可以作实参和形参&#xff0c;…...

M31系列LoRa分布式IO模块功能简介

M31系列LoRa 分布式 IO 模块简介 M31系列LoRa分布式IO主机模块是一款强大的无线远程控制与采集设备&#xff0c;该设备采用 LoRa 无线技术&#xff08;内置了无线模块&#xff09;&#xff0c;可通过串口或远程 LoRa 组网设备发送 Modbus RTU 指令进行控制&#xff0c;可搭配E…...

Dockerfile 安装echarts插件给java提供服务

java调用echarts插件&#xff0c;生成图片保存到磁盘然后插入到pptx中报表。 Dockerfile文件内容&#xff1a; #基础镜像&#xff0c;如果本地仓库没有&#xff0c;会从远程仓库拉取 openjdk:8 FROM docker.io/centos:centos7 #暴露端口 EXPOSE 9311 # 避免centos 日志输出 …...

学习threejs,使用VideoTexture实现视频Video更新纹理

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️VideoTexture 视频纹理 二、…...

【二分查找】Leetcode例题

【1】69. x 的平方根 - 力扣&#xff08;LeetCode&#xff09; &#x1f361;解题思路&#xff1a;首先想到的是暴力查找&#xff0c;从1开始依次比较x与num*num的大小&#xff0c;然后找出满足num*num<x且(num1)*(num1)>x的num值&#xff1b;再来看看能不能优化一下&…...

稳定运行的以MySQL数据库为数据源和目标的ETL性能变差时提高性能方法和步骤

在ETL&#xff08;Extract, Transform, Load&#xff09;过程中&#xff0c;数据源和目标都为MySQL数据库时&#xff0c;性能变差可能由多种原因引起。提高以MySQL为数据源和目标的ETL性能需要综合考虑数据库性能、ETL任务的处理方式、硬件资源和工具的选择。通过批量处理、并行…...

Springboot(四十九)SpringBoot3整合jetcache缓存

上文中我们学习了springboot中缓存的基本使用。缓存分为本地caffeine缓存和远程redis缓存。现在有一个小小的问题,我想使用本地caffeine缓存和远程redis缓存组成二级缓存。还想保证他们的一致性,这个事情该怎么办呢? Jetcache框架为我们解决了这个问题。 ‌JetCache‌是一个…...

JVM 参数前缀 -XX: 含义 详解

在 Java 虚拟机&#xff08;JVM&#xff09;中&#xff0c;参数前缀 -XX: 表示的是 JVM 的非标准&#xff08;实验性&#xff09;选项。这些参数用于调整和优化 JVM 的性能、垃圾回收行为、内存分配策略等。 1. 参数分类 -XX: 参数大致分为三类&#xff0c;根据其格式区分&…...