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

Android 适配之——targetSdkVersion 30升级到31-34需要注意些什么?

    在Android 16即将到来的之际。也就是targetSdkVersion即将出现36,而30已然会成为历史。那么我的项目已经停留在30很久了。是时候要适配一下适用市场的主流机型了。正常来查找资料的,无非就是已经升级和准备升级targetSdkVersion开发版本。所以你是哪一种情况呢?其实最有效的解决方法就是去查询官方文档,无一例外。因为规则都是由他们决定的,他们有主导权,我在文章中会插入一些链接文档,需要有想深入了解的,最好还是去官网了解一下。那么现在就开始你的升级之路吧!现在按升级顺序来讲讲可能遇到的问题吧!

1).targetSdkVersion (31-32) Android 12

https://developer.android.google.cn/about/versions/12/behavior-changes-12?hl=zh-cn

     1、在Android 12及以上版本中,如果创建PendingIntent时没有指定FLAG_IMMUTABLE或FLAG_MUTABLE,应用将抛出异常并崩溃。这是因为系统无法确定PendingIntent的预期用途和行为,从而无法确保其安全性。FLAG_IMMUTABLE 通常是最安全的选择,适用于绝大多数情况。
解决方法:注释掉的代码就是修改的位置
private Notification createNotification() {Notification.Builder builder;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {NotificationChannel channel = new NotificationChannel(id, name, NotificationManager.IMPORTANCE_LOW);getNotifyMgr(MQTTService.this.getApplicationContext()).createNotificationChannel(channel);builder = new Notification.Builder(MQTTService.this.getApplicationContext(), id);} else {builder = new Notification.Builder(MQTTService.this.getApplicationContext());}builder.setSmallIcon(R.mipmap.ic_launcher);builder.setContentTitle(PackageUtils.getAppName(MQTTService.this.getApplicationContext()));builder.setContentText("订单消息接收中…");builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));builder.setWhen(System.currentTimeMillis());Intent activityIntent = MainActivity.getIntent(MQTTService.this.getApplicationContext());@SuppressLint("UnspecifiedImmutableFlag") PendingIntent pendingIntent = PendingIntent.getActivity(MQTTService.this.getApplicationContext(),1,activityIntent,android.os.Build.VERSION.SDK_INT >= 31?PendingIntent.FLAG_IMMUTABLE:PendingIntent.FLAG_UPDATE_CURRENT);//PendingIntent.FLAG_UPDATE_CURRENT);builder.setContentIntent(pendingIntent);return builder.build();}
     2、(精确的闹钟权限)为了鼓励应用节省系统资源,以 Android 12 及更高版本为目标平台且设置了精确的闹钟的应用必须能够访问“闹钟和提醒”功能,该功能显示在系统设置的特殊应用访问权限屏幕中。
解决方法:如果你的项目中有引用到类似功能的就会出现这个问题,解决的方案就是动态申请一下权限就行
 <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){requestPermissions(granted -> {if (!granted) {}}, Manifest.permission.SCHEDULE_EXACT_ALARM);}
      3、(针对从后台启动前台服务的限制) 以 Android 12(API 级别 31)或更高版本为目标平台的应用无法在后台运行时启动前台服务,但少数特殊情况除外。如果应用在后台运行时尝试启动前台服务,并且前台服务不符合任何特殊情况,则系统会抛出 ForegroundServiceStartNotAllowedException。如果你在项目有引用service 且开启是前台服务。如果切换到后台。就大概率可能出现这个bug
解决方法:就是如下的这个链接,最下面的是示例代码:定位类型 foregroundServiceType 跟用户权限是一 一对应的,豁免的条件可以是继承系统服务。或者是申请通知权限。通知交互获取豁免条件。
查阅的相关博主的博客说是推荐WorkerManger来替代。但是好像还是不能有效的解决问题。因为归根结底还是因为系统拦截导致的。官网介绍说WorkerManger的内容如下:

https://zhuanlan.zhihu.com/p/712108383

<uses-permissionandroid:name="android.permission.FOREGROUND_SERVICE_LOCATION"android:minSdkVersion="34" /> <!-- 启动类型为location的前台服务 --><application><serviceandroid:name=".MainService"android:directBootAware="true"android:enabled="true"android:exported="true"android:foregroundServiceType="connectedDevice|location"android:permission="android.permission.FOREGROUND_SERVICE" /></application>
      4、(蓝牙权限) Android 12 引入了 BLUETOOTH_SCAN、BLUETOOTH_ADVERTISE 和 BLUETOOTH_CONNECT 权限。这些权限可让以 Android 12 为目标平台的应用更轻松地与蓝牙设备互动,尤其是不需要访问设备位置信息的应用。为了让您的设备做好准备以 Android 12 或更高版本为目标平台,请更新应用的逻辑。请声明一组更现代的蓝牙权限,而不是声明一组旧版蓝牙权限。
解决方法:判断当前版本是否大于Android 12 动态申请权限
    <uses-permissionandroid:name="android.permission.BLUETOOTH"android:maxSdkVersion="30" /> <!-- 申明该权限不适用于安卓12及以上 --><uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN"android:maxSdkVersion="30" /> <!-- 申明该权限不适用于安卓12及以上 --><uses-permission android:name="android.permission.BLUETOOTH_SCAN" /><uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /><!-- Android 11+ 新增的蓝牙扫描权限 --><uses-permission android:name="android.permission.BLUETOOTH_SCAN" /><uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /><uses-permission android:name="android.permission.FOREGROUND_SERVICE" />String[] permission = new String[Build.VERSION.SDK_INT >= Build.VERSION_CODES.S?4:2];permission[0] = Manifest.permission.ACCESS_FINE_LOCATION;// 精确位置permission[1] = Manifest.permission.ACCESS_COARSE_LOCATION;// 粗略位置if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { // Android 12及以上permission[2] = Manifest.permission.BLUETOOTH_CONNECT;permission[3] = Manifest.permission.BLUETOOTH_SCAN;}requestMustPermissions(granted -> {if(!granted) showMessage("请打开申请相关的权限");else PrintBlueActivity.startActivity(requireActivity());}, permission));// 搜索蓝牙操作
2).targetSdkVersion (33) Android 13
        1、(细化的媒体权限) 如果您的应用以 Android 13 或更高版本为目标平台,并且需要访问其他应用已经创建的媒体文件,您必须请求以下一项或多项细化的媒体权限,而不是READ_EXTERNAL_STORAGE 权限:
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"android:maxSdkVersion="32" /><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"android:maxSdkVersion="32"tools:ignore="ScopedStorage" /><!--Android 13版本适配,细化存储权限--><uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/><uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/><uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>String[] permission = new String[(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) ? 4 : 3];if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {permission[0] = Manifest.permission.CAMERA;permission[1] = Manifest.permission.READ_MEDIA_AUDIO;permission[2] = Manifest.permission.READ_MEDIA_IMAGES;permission[3] = Manifest.permission.READ_MEDIA_VIDEO;}else {permission[0] = Manifest.permission.CAMERA;permission[1] = Manifest.permission.READ_EXTERNAL_STORAGE;permission[2] = Manifest.permission.WRITE_EXTERNAL_STORAGE;}requestMustPermissions(granted -> {if (!granted) {Tip.toast(getString(R.string.tip_permission));} else {// 操作图片动作。。。}}, permission);
        2、(蓝牙连接) 废弃了 BluetoothAdapter#enable() 和 BluetoothAdapter#disable()对于以 Android 13(API 级别 33)或更高版本为目标平台的应用,BluetoothAdapter#enable() 和 BluetoothAdapter#disable() 方法已废弃,并且始终返回 false

2).targetSdkVersion (34) Android 14

        1、(前台服务类型是必填项) 如果您的应用以 Android 14(API 级别 34)或更高版本为目标平台,则必须为应用中的每个前台服务至少指定一项前台服务类型。您应选择一个能代表应用用例的前台服务类型。系统需要特定类型的前台服务满足特定用例。
        相对于Android 12和13来说,14感觉是他们的延伸。更多的是对之前的补充。暂时先设置为34版本吧。如果要想更高的版本的以官网为主啊!希望能帮助到你们哈!加油!共勉!
随着现在Android 版本越来越高。权限是越来越收紧。未来会更加注重用户的隐私,所以是利好用户。对开发者是越来越不友好了。这是趋势。同时也是跟苹果看齐,设计的方向越来越注重用户体验。如果对文章内容还不能深入的了解到内容主体,可以查阅的资料如下:
https://zhuanlan.zhihu.com/p/712108383
Android14 适配之——targetSdkVersion 升级到 34 需要注意些什么?_android sdk 34-CSDN博客
https://juejin.cn/post/7302348032544866316https://developer.android.google.cn/develop/background-work/services/fgs/restrictions-bg-start?hl=zh-cn

相关文章:

Android 适配之——targetSdkVersion 30升级到31-34需要注意些什么?

在Android 16即将到来的之际。也就是targetSdkVersion即将出现36&#xff0c;而30已然会成为历史。那么我的项目已经停留在30很久了。是时候要适配一下适用市场的主流机型了。正常来查找资料的&#xff0c;无非就是已经升级和准备升级targetSdkVersion开发版本。所以你是哪一种…...

网络运维过程中的常用命令

一、通用网络命令 ping 作用&#xff1a;测试与目标 IP 或域名的连通性。 示例&#xff1a; ping www.baidu.com # 持续发送ICMP包 ping -c 4 8.8.8.8 # 发送4个包后停止 traceroute/tracert 功能&#xff1a;追踪数据包经过的路由节点。 示例&#xff1a; traceroute…...

[Java实战]Spring Boot 3整合JWT实现无状态身份认证(二十四)

[Java实战]Spring Boot 3整合JWT实现无状态身份认证&#xff08;二十四&#xff09; 一、JWT简介与核心概念 1. JWT是什么&#xff1f; JSON Web Token (JWT) 是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在各方之间安全地传输信息。JWT由三部分组成&am…...

【Java-EE进阶】SpringBoot针对某个IP限流问题

目录 简介 1. 使用Guava的RateLimiter实现限流 添加Guava依赖 实现RateLimiter限流逻辑 限流管理类 控制器中应用限流逻辑 2. 使用计数器实现限流 限流管理类 控制器中应用限流逻辑 简介 针对某个IP进行限流以防止恶意点击是一种常见的反爬虫和防止DoS的措施。限流策…...

软考冲刺——案例分析题 MUX VLAN

上一篇文章介绍了VLAN高级应用的Super VLAN&#xff0c;本次介绍MUX VLAN内容&#xff0c;MUX VLAN在2024.11月考察过选择题&#xff0c;案例题中有可能出现。 考点一&#xff1a;MUX VLAN原理及实现方式&#xff1b;通过简答题出现。 考点二&#xff1a;配置命令填空。 一&…...

Git 用户名与邮箱配置全解析:精准配置——基于场景的参数选择

目录 一、配置查看&#xff1a;理解多层级配置体系二、精准配置&#xff1a;基于场景的参数选择1. 仓库级配置&#xff08;推荐&#xff09;2. 用户级配置3. 系统级配置 三、历史提交信息修改1. 修改最近一次提交2. 修改多个历史提交&#xff08;危险操作&#xff09; 五、配置…...

OpenHarmony平台驱动开发(十七),UART

OpenHarmony平台驱动开发&#xff08;十七&#xff09; UART 概述 功能简介 UART指异步收发传输器&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;&#xff0c;是通用串行数据总线&#xff0c;用于异步通信。该总线双向通信&#xff0c;可以实现全双工…...

仿生眼机器人(人脸跟踪版)系列之一

文章不介绍具体参数&#xff0c;有需求可去网上搜索。 特别声明&#xff1a;不论年龄&#xff0c;不看学历。既然你对这个领域的东西感兴趣&#xff0c;就应该不断培养自己提出问题、思考问题、探索答案的能力。 提出问题&#xff1a;提出问题时&#xff0c;应说明是哪款产品&a…...

Redis的Pipeline和Lua脚本适用场景是什么?使用时需要注意什么?

Redis Pipeline 和 Lua 脚本详解 一、Pipeline&#xff08;管道&#xff09; 定义 一种批量执行命令的机制&#xff0c;客户端将多个命令一次性发送给服务器&#xff0c;减少网络往返时间&#xff08;RTT&#xff09; 适用场景 ✅ 批量数据操作&#xff08;如万级 key 的写入…...

【Pycharm】pycharm修改注释文字的颜色

一、默认颜色-灰色 这个默认的灰色视觉效果太弱&#xff0c;不便于学习时使用 二、修改颜色 打开Settings 也可以从右上角设置那里打开 还可以快捷键Ctrl&#xff0b;Alt&#xff0b;S打开 找到这个页面把这个√取消掉 然后就能自定义颜色啦...

webgl2着色语言

一、数据类型 标量&#xff1a;布尔型、整型、浮点型 向量&#xff1a;基本类型&#xff1a;bool、int、float 数量 &#xff1a; 2&#xff0c;3&#xff0c;4 矩阵&#xff1a; 移位、旋转、缩放等变换 采样器&#xff1a; 执行纹理采样的相关操作 结构体&#xff1a; 为开…...

Nginx+Lua 实战避坑:从模块加载失败到版本冲突的深度剖析

Nginx 集成 Lua (通常通过 ngx_http_lua_module 或 OpenResty) 为我们提供了在 Web 服务器层面实现动态逻辑的强大能力。然而,在享受其高性能和灵活性的同时,配置和使用过程中也常常会遇到各种令人头疼的问题。本文将结合实际案例,深入分析在 Nginx+Lua 环境中常见的技术问题…...

什么是alpaca 或 sharegpt 格式的数据集?

环境&#xff1a; LLaMA-Factory 问题描述&#xff1a; alpaca 或 sharegpt 格式的数据集&#xff1f; 解决方案&#xff1a; “Alpaca”和“ShareGPT”格式的数据集&#xff0c;是近年来在开源大语言模型微调和对话数据构建领域比较流行的两种格式。它们主要用于训练和微调…...

C++效率掌握之STL库:map set底层剖析及迭代器万字详解

文章目录 1.map、set的基本结构2.map、set模拟实现2.1 初步定义2.2 仿函数实现2.3 Find功能实现2.4 迭代器初步功能实现2.4.1 运算符重载2.4.2 --运算符重载2.4.3 *运算符重载2.4.4 ->运算符重载2.4.5 !运算符重载2.4.6 begin()2.4.7 end() 2.5 迭代器进阶功能实现2.5.1 set…...

使用 Docker Desktop 安装 Neo4j 知识图谱

一、简介 Neo4j是一个高性能的&#xff0c;基于java开发的&#xff0c;NOSQL图形数据库&#xff0c;它将结构化数据存储在网络上而不是表中&#xff1b;它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。 Neo4j分为企业版和社区版&#xff0c;企业版可以创…...

从构想到交付:专业级软开发流程详解

目录 ​​一、软件开发生命周期&#xff08;SDLC&#xff09;标准化流程​​ 1. 需求工程阶段&#xff08;Requirement Engineering&#xff09; 2. 系统设计阶段&#xff08;System Design&#xff09; 3. 开发阶段&#xff08;Implementation&#xff09; 4. 测试阶段&a…...

时源芯微| KY键盘接口静电浪涌防护方案

KY键盘接口静电浪涌防护方案通过集成ESD保护元件、电阻和连接键&#xff0c;形成了一道有效的防护屏障。当键盘接口受到静电放电或其他浪涌冲击时&#xff0c;该方案能够迅速将过电压和过电流引导至地&#xff0c;从而保护后续电路免受损害。 ESD保护元件是方案中的核心部分&a…...

数据库故障排查指南:从理论到实践的深度解析

数据库作为现代信息系统的核心组件&#xff0c;承载着数据存储、查询和事务处理等关键任务。然而&#xff0c;数据库系统在运行过程中可能遭遇各种故障&#xff0c;从硬件故障到软件配置问题&#xff0c;从性能瓶颈到安全漏洞&#xff0c;这些问题都可能影响业务的连续性和数据…...

电脑开机提示按f1原因分析及解决方法(6种解决方法)

经常有网友问到一个问题,我电脑开机后提示按f1怎么解决?不管理是台式电脑,还是笔记本,都有可能会遇到开机需要按F1,才能进入系统的问题,引起这个问题的原因比较多,今天小编在这里给大家列举了比较常见的几种电脑开机提示按f1的解决方法。 电脑开机提示按f1原因分析及解决…...

常用的Java工具库

1. Collections 首先是 java.util 包下的 Collections 类。这个类主要用于操作集合&#xff0c;我个人非常喜欢使用它。以下是一些常用功能&#xff1a; 1.1 排序 在工作中&#xff0c;经常需要对集合进行排序。让我们看看如何使用 Collections 工具实现升序和降序排列&…...

NC65开发环境(eclipse启动)在企业报表中的报表数据中心里计算某张报表时,一直计算不出数据的解决办法。

NC65开发环境&#xff08;eclipse启动&#xff09;在企业报表中的报表数据中心里计算某张报表时&#xff0c;一直计算不出数据的解决办法。 如下图&#xff0c;在报表数据中心&#xff0c;针对现金内部往来明细表计算5月的数据&#xff0c;然后报表下面一张显示计算&#xff0c…...

React 第三十九节 React Router 中的 unstable_usePrompt Hook的详细用法及案例

React Router 中的 unstable_usePrompt 是一个用于在用户尝试离开当前页面时触发确认提示的自定义钩子&#xff0c;常用于防止用户误操作导致数据丢失&#xff08;例如未保存的表单&#xff09;。 一、unstable_usePrompt用途 防止意外离开页面&#xff1a;当用户在当前页面有…...

《P4391 [BalticOI 2009] Radio Transmission 无线传输 题解》

题目描述 给你一个字符串 s1​&#xff0c;它是由某个字符串 s2​ 不断自我连接形成的&#xff08;保证至少重复 2 次&#xff09;。但是字符串 s2​ 是不确定的&#xff0c;现在只想知道它的最短长度是多少。 输入格式 第一行一个整数 L&#xff0c;表示给出字符串的长度。…...

使用ECS搭建云上博客wordpress(ALMP)

一、需求分析与技术选型 1. 架构组成及含义 本文使用ECS云服务器&#xff0c;采用ALMP架构搭建wordpress。组件具体的含义如下表&#xff1a; 组件作用WordPress中的功能体现Linux操作系统基础&#xff0c;提供稳定运行环境支持PHP运行和服务器管理ApacheWeb服务器&#xff…...

Scratch游戏 | 企鹅大乱斗

有没有过无聊到抓狂的时刻&#xff1f;试试这款 企鹅大乱斗 吧&#xff01;超简单的玩法&#xff0c;让你瞬间告别无聊&#xff01; &#x1f3ae; 玩法超简单 等待屏幕出现 ”Go!” 疯狂点击&#xff0c;疯狂拍打企鹅&#xff01; &#x1f4a5; 游戏特色 解压神器&#x…...

深入理解SpringBoot中的SpringCache缓存技术

深入理解SpringBoot中的SpringCache缓存技术 引言 在现代应用开发中&#xff0c;缓存技术是提升系统性能的重要手段之一。SpringBoot提供了SpringCache作为缓存抽象层&#xff0c;简化了缓存的使用和管理。本文将深入探讨SpringCache的核心技术点及其在实际业务中的应用场景。…...

URP相机如何将场景渲染定帧模糊绘制

1&#xff09;URP相机如何将场景渲染定帧模糊绘制 2&#xff09;为什么Virtual Machine会随着游戏时间变大 3&#xff09;出海项目&#xff0c;打包时需要勾选ARMv7吗 4&#xff09;Unity是手动还是自动调用GC.Collect 这是第431篇UWA技术知识分享的推送&#xff0c;精选了UWA社…...

嵌入式中深入理解C语言中的指针:类型、区别及应用

在嵌入式开发中,C语言是一种基础且极为重要的编程语言,其中指针作为一个非常强大且灵活的工具,广泛应用于内存管理、动态数据结构的实现以及函数参数的传递等方面。然而,尽管指针的使用极为常见,很多开发者在掌握其基本使用后,往往对指针的深入理解还不够。本文将深入分析…...

.NET程序启动就报错,如何截获初期化时的问题json

一&#xff1a;背景 1. 讲故事 前几天训练营里的一位朋友在复习课件的时候&#xff0c;程序一跑就报错&#xff0c;截图如下&#xff1a; 从给出的错误信息看大概是因为json格式无效导致的&#xff0c;在早期的训练营里曾经也有一例这样的报错&#xff0c;最后定位下来是公司…...

WeakAuras Lua Script ICC (BarneyICC)

WeakAuras Lua Script ICC &#xff08;BarneyICC&#xff09; https://wago.io/BarneyICC/69 全量英文字符串&#xff1a; !WA:2!S33c4TXX5bQv0kobjnnMowYw2YAnDKmPnjnb4ljzl7sqcscl(YaG6HvCbxaSG7AcU76Dxis6uLlHNBIAtBtRCVM00Rnj8Y1M426ZH9XDxstsRDR)UMVCTt0DTzVhTjNASIDAU…...

Sunsetting 创建 React App

&#x1f916; 作者简介&#xff1a;水煮白菜王&#xff0c;一位前端劝退师 &#x1f47b; &#x1f440; 文章专栏&#xff1a; 前端专栏 &#xff0c;记录一下平时在博客写作中&#xff0c;总结出的一些开发技巧和知识归纳总结✍。 感谢支持&#x1f495;&#x1f495;&#…...

Python笔记:c++内嵌python,c++主窗口如何传递给脚本中的QDialog,使用的是pybind11

1. 问题描述 用的是python 3.8.20, qt版本使用的是5.15.2, PySide的版本是5.15.2, pybind11的版本为2.13.6 网上说在python脚本中直接用PySide2自带的QWinWidget&#xff0c;如from PySide2.QtWinExtras import QWinWidget&#xff0c;但我用的版本中说没有QWinWidget&#x…...

环境配置与MySQL简介

目录 1 环境配置 2 MySQL简介 1 环境配置 本专栏使用CentOS7进行讲解。首先我们查看系统中是否已经安装了MySQL&#xff0c;可以使用rpm -qa 命令查看系统安装包/压缩包 列表 这只是看我们是否下载过对应安装包&#xff0c;不一定就安装了。如果我们需要重新下载&#xff0c;…...

Unity3D游戏内存管理优化指南

前言 Unity3D 的内存管理机制较为复杂&#xff0c;开发者需要理解其内存分布以避免内存泄漏和性能问题。以下是 Unity3D 游戏内存分布的核心概览&#xff0c;结合托管堆、本地堆、资源内存等关键模块&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;大家…...

深度解析 Sora:从技术原理到多场景实战的 AI 视频生成指南【附学习资料包下载】

一、技术架构与核心能力解析 1.1 时空建模体系的创新突破 Sora 在视频生成领域的核心优势源于其独特的时空建模架构。区别于传统将视频拆解为单帧处理的模式,Sora 采用时空 Patch 嵌入技术,将连续视频序列分割为 32x32 像素的时空块(每个块包含相邻 3 帧画面),通过线性投…...

Maven构建流程详解:如何正确管理微服务间的依赖关系-当依赖的模块更新后,我应该如何重新构建主项目

文章目录 一、前言二、Maven 常用命令一览三、典型场景说明四、正确的构建顺序正确做法是&#xff1a; 五、为什么不能只在 A 里执行 clean install&#xff1f;六、进阶推荐&#xff1a;使用多模块项目&#xff08;Multi-module Project&#xff09;七、总结 一、前言 在现代…...

zookeeper本地部署

下载源码本地运行 zookeeper下载地址 更改配置 运行命令 如果本地启动zookeeper时出现了端口被占用的情况&#xff0c;在 conf 下的 zoo.cfg 文件中加入 admin.serverPort“端口号”...

精益数据分析(59/126):移情阶段的深度博弈——如何避开客户访谈的认知陷阱

精益数据分析&#xff08;59/126&#xff09;&#xff1a;移情阶段的深度博弈——如何避开客户访谈的认知陷阱 在创业的移情阶段&#xff0c;客户访谈是挖掘真实需求的核心手段&#xff0c;但人类认知偏差往往导致数据失真。今天&#xff0c;我们结合《精益数据分析》的方法论…...

一文理解扩散模型(生成式AI模型)(2)

第二期内容主要是扩散模型的架构&#xff0c;其中包括用于扩散模型的U-Net架构和用于扩散模型的transformer架构。(transformer架构非常重要) 扩散模型需要训练一个神经网络来学习加噪数据的分数函数&#xff0c;或者学习加在数据上的噪声(这对应上文所展示的扩散模型的两种训…...

【Java面试题】——this 和 super 的区别

&#x1f381;个人主页&#xff1a;User_芊芊君子 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 &#x1f50d;系列专栏&#xff1a;【Java】内容概括 【前言】 在Java的世界里&#xff0c;this和 super是两个非常重要且容易混淆的关键字。无论是在日常…...

数据结构基础排序算法

选择排序 选择排序的基本思路&#xff1a;从待排序元素中选取最大&#xff08;或最小&#xff09;的一个元素加入到已完成排序的末尾。 #include <stdio.h>#define ARR_LEN(arr) (sizeof(arr) / sizeof(arr[0])) #define SWAP(arr, i, j ) { \ int tmp arr[i]; …...

数据结构中的高级排序算法

希尔排序 你可以将希尔排序理解成——先通过几次分组的、较小的组间插入排序将原数组变得有序&#xff0c;最后再进行一次序列基本有序的完整插入排序。 #include <stdio.h>#define ARR_LEN(arr) (sizeof(arr) / sizeof(arr[0]))void print_arr(int arr[], int len) {for…...

家庭宽带的内网穿透实践

家庭宽带的内网穿透实践 龙生龙&#xff0c;凤生凤&#xff0c;老鼠的儿子会打洞。我们今天来学习 “打洞” &#xff01; 背景 众所周知&#xff0c;当前运营商在IPv4环境下面&#xff0c;由于地址资源不够&#xff0c;启用了大内网策略。导致家庭宽带到路由器这一层都分配了…...

LabVIEW在电子电工教学中的应用

在电子电工教学领域&#xff0c;传统教学模式面临诸多挑战&#xff0c;如实验设备数量有限、实验过程存在安全隐患、教学内容更新滞后等。LabVIEW 作为一款功能强大的图形化编程软件&#xff0c;为解决这些问题提供了创新思路&#xff0c;在电子电工教学的多个关键环节发挥着重…...

算法每日刷题 Day6 5.14:leetcode数组1道题,用时30min,明天按灵茶山艾府题单开刷,感觉数组不应该单算

14. 977.有序数组的平方(简单&#xff0c;学习&#xff0c;双指针) 977. 有序数组的平方 - 力扣&#xff08;LeetCode&#xff09; 思想 法一: 1.平方赋值到另一个数组sort排序 法二: 1.寻找负数和非负数的分界线(学习代码如何写&#xff1f;)&#xff0c;[0,neg]负数,[neg1…...

JS逆向实战四:某查查请求头逆向解密

声明&#xff1a;本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;…...

QT之QComboBox组件

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 1.引言2.初见QComboBox3.核心功能和常用方法1. 添加和删除选项2. 获取和设置当前值3. 可编辑模式4. 数据绑定 4.信号与槽5.应用场景6.使用示例7.总结 1.引言 在记事本项目中&#xff0c;不同的编码设…...

数值积分知识

数值积分 对于增加插值节点序列&#xff1a; { x i } i 0 n \left\{x_i\right\}_{i0}^{n} {xi​}i0n​&#xff0c;由插值定理给出&#xff1a; f ( x ) ∑ i 0 n y i l i ( x ) f ( n 1 ) ( ξ ) ( n 1 ) ! ∏ i 0 n ( x − x i ) f(x)\sum_{i0}^{n}y_i l_i(x)\frac{f…...

代码随想录训练营第二十三天| 572.另一颗树的子树 104.二叉树的最大深度 559.N叉树的最大深度 111.二叉树的最小深度

572.另一颗树的子树&#xff1a; 状态&#xff1a;已做出 思路&#xff1a; 这道题目当时第一时间不是想到利用100.相同的树思路来解决&#xff0c;而是先想到了使用kmp&#xff0c;不过这个题目官方题解确实是有kmp解法的&#xff0c;我使用的暴力解法&#xff0c;kmp的大致思…...

力扣-105.从前序与中序遍历序列构造二叉树

题目描述 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 class Solution { public:TreeNode* buildTree(vector<int>& preorder, vecto…...