Android Service 从 1.0 到 16 的演进史
一、Android 1.0(API 1) - 服务的诞生
核心特性:
基础服务组件:作为四大组件之一,Service 用于在后台执行长时间运行的任务,不提供 UI 界面。
启动方式:通过 startService()
启动独立运行的服务,或通过 bindService()
与其他组件绑定通信。
生命周期:包含 onCreate()
、onStart()
、onDestroy()
等基础回调方法。
代码示例:
public class MyService extends Service {  @Override  public void onCreate() {  super.onCreate();  // 初始化操作  }  @Override  public int onStartCommand(Intent intent, int flags, int startId) {  // 处理启动请求  return START\_STICKY;  }  @Override  public IBinder onBind(Intent intent) {  return null; // 不支持绑定  }}
二、Android 2.0(API 5) - 异步任务简化
核心特性:
IntentService:引入抽象类 IntentService
,自动处理线程管理和任务队列,开发者只需重写 onHandleIntent()
方法。
线程安全:内部使用 HandlerThread
处理异步任务,避免主线程阻塞。
代码示例:
public class MyIntentService extends IntentService {  public MyIntentService() {  super("MyIntentService");  }  @Override  protected void onHandleIntent(Intent intent) {  // 执行耗时任务  }}
三、Android 3.0(API 11) - 多任务优化
核心特性:
平板适配:针对 Honeycomb 系统优化多任务处理,Service 支持更灵活的后台任务调度。
进程管理:引入更严格的内存管理策略,优先保障前台应用资源。
四、Android 4.0(API 14) - 后台服务管理
核心特性:
绑定服务增强:支持双向通信,客户端通过 ServiceConnection
获取服务实例。
后台限制:引入更严格的后台执行策略,限制后台服务对系统资源的占用。
代码示例:
// 客户端绑定服务Intent intent = new Intent(this, MyService.class);bindService(intent, new ServiceConnection() {  @Override  public void onServiceConnected(ComponentName name, IBinder service) {  MyService.LocalBinder binder = (MyService.LocalBinder) service;  MyService myService = binder.getService();  // 调用服务方法  }}, BIND\_AUTO\_CREATE);
五、Android 5.0(API 21) - 任务调度革新
核心特性:
JobScheduler:引入任务调度 API,支持在指定条件(如充电、网络连接)下执行后台任务。
Material Design:优化服务通知样式,增强用户体验。
代码示例:
JobScheduler scheduler = (JobScheduler) getSystemService(Context.JOB\_SCHEDULER\_SERVICE);JobInfo jobInfo = new JobInfo.Builder(JOB\_ID, new ComponentName(this, MyJobService.class))  .setRequiredNetworkType(JobInfo.NETWORK\_TYPE\_ANY)  .setRequiresCharging(true)  .build();scheduler.schedule(jobInfo);
六、Android 6.0(API 23) - 省电模式
核心特性:
Doze 模式:设备静置时限制后台活动,Service 仅在特定时段唤醒执行任务。
App Standby:根据应用使用频率限制后台活动,提升电池续航。
适配建议:
使用 JobScheduler
替代 AlarmManager
执行定时任务。
避免在 Doze 模式下频繁唤醒服务。
七、Android 7.0(API 24) - 后台限制强化
核心特性:
隐式广播限制:应用无法通过清单注册隐式广播(如网络变化),需动态注册。
后台进程限制:开发者选项中新增 “后台进程限制”,控制应用后台运行数量。
代码示例:
// 动态注册广播接收器IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY\_ACTION);registerReceiver(networkReceiver, filter);
八、Android 8.0(API 26) - 后台服务冻结
核心特性:
后台服务限制:应用进入后台后,后台服务会在短时间内被冻结,需使用前台服务或 JobScheduler
。
StartForegroundService:启动前台服务时需在 5 秒内调用 startForeground()
,否则触发 ANR。
代码示例:
// 启动前台服务startForegroundService(new Intent(this, MyForegroundService.class));// 服务中创建通知NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL\_ID)  .setContentTitle("Foreground Service")  .setSmallIcon(R.drawable.ic\_notification);startForeground(NOTIFICATION\_ID, builder.build());
九、Android 9.0(API 28) - 位置权限收紧
核心特性:
位置权限限制:后台访问位置需申请 ACCESS_BACKGROUND_LOCATION
权限,且需开启 GPS。
后台位置访问:应用需在前台时获取位置信息,后台访问需明确用户授权。
适配建议:
使用 FusedLocationProviderClient
替代传统位置 API。
避免在后台频繁获取位置数据。
十、Android 10(API 29) - 存储沙盒化
核心特性:
Scoped Storage:应用默认只能访问自身目录,访问外部存储需通过 MediaStore
或 Storage Access Framework
。
后台服务限制:进一步收紧后台服务权限,推荐使用 WorkManager
。
代码示例:
// 通过 MediaStore 查询图片ContentResolver resolver = getContentResolver();Uri collection = MediaStore.Images.Media.EXTERNAL\_CONTENT\_URI;Cursor cursor = resolver.query(collection, null, null, null, null);
十一、Android 11(API 30) - 权限精细化
核心特性:
一次性权限:用户可授予应用单次位置、相机或麦克风访问权限。
后台位置权限:申请后台位置需先获得前台位置权限,且用户需在设置中手动授权。
适配建议:
使用 ActivityResultContracts
处理权限请求。
避免在后台长时间占用敏感权限。
十二、Android 12(API 31) - 隐私增强
核心特性:
近似位置:用户可选择授予应用精确或近似位置权限。
麦克风 / 摄像头提示:应用使用麦克风或摄像头时,状态栏显示提示图标。
代码示例:
// 申请位置权限ActivityResultLauncher\<String\[]> locationRequest = registerForActivityResult(  new ActivityResultContracts.RequestMultiplePermissions(),  result -> {  if (result.getOrDefault(Manifest.permission.ACCESS\_FINE\_LOCATION, false)) {  // 有权限  }  });locationRequest.launch(new String\[]{Manifest.permission.ACCESS\_FINE\_LOCATION});
十三、Android 13(API 33) - 后台服务管理
核心特性:
沙盒限制:应用无法直接访问其他应用私有目录,需通过 ContentProvider
共享数据。
前台服务任务管理器:系统提供前台服务列表,用户可直接管理。
适配建议:
使用 WorkManager
替代后台服务执行任务。
避免在后台执行高耗电操作。
十四、Android 14(API 34) - 前台服务类型
核心特性:
前台服务类型:需在清单中声明服务类型(如 dataSync
、location
),否则无法启动。
用户启动的数据传输:新增 WorkManager
API,支持用户发起的长时间数据传输。
代码示例:
\<!-- AndroidManifest.xml -->\<service  android:name=".MyDataSyncService"  android:foregroundServiceType="dataSync" />
十五、Android 15(API 35) - 服务超时机制
核心特性:
数据同步超时:dataSync
前台服务在 24 小时内最多运行 6 小时,超时触发 onTimeout()
回调。
媒体处理服务:新增 mediaProcessing
服务类型,支持媒体文件转码等操作。
适配建议:
实现 onTimeout()
方法,及时停止服务。
避免长时间占用 dataSync
服务。
十六、Android 16(API 36) - 服务管理优化
核心特性:
后台服务优先级:系统根据应用使用频率动态调整后台服务优先级,优先保障前台应用。
服务监控:新增开发者工具,支持实时监控后台服务资源占用。
适配建议:
使用 WorkManager
调度任务,避免直接启动后台服务。
优化服务代码,减少资源消耗。
总结:从 Android 1.0 到 Android 16 的 Service 演进
版本 | 核心特性 | 推荐替代方案 |
---|---|---|
1.0 | 基础服务组件 | 无 |
2.0 | IntentService 简化异步任务 | 无 |
3.0 | 多任务优化 | 无 |
4.0 | 绑定服务增强 | 无 |
5.0 | JobScheduler 任务调度 | 替代 AlarmManager |
6.0 | Doze 模式省电 | 使用 JobScheduler |
7.0 | 隐式广播限制 | 动态注册广播接收器 |
8.0 | 后台服务冻结 | 使用前台服务或 JobScheduler |
9.0 | 位置权限收紧 | FusedLocationProviderClient |
10.0 | Scoped Storage 沙盒化 | MediaStore 或 Storage Access |
11.0 | 一次性权限 | ActivityResultContracts |
12.0 | 近似位置 | 无 |
13.0 | 沙盒限制 | ContentProvider |
14.0 | 前台服务类型 | 无 |
15.0 | 服务超时机制 | 无 |
16.0 | 服务管理优化 | WorkManager |
最佳实践:
优先使用 WorkManager:替代传统后台服务,自动处理任务调度和资源管理。
避免后台执行:尽可能将任务移至前台或使用 JobScheduler。
权限管理:动态申请敏感权限,尊重用户隐私选择。
优化代码:减少服务中的耗时操作,使用线程池或协程。
通过以上版本特性的分析,开发者可以更好地理解 Android Service 的演进历程,并根据不同版本的特性选择最优的实现方案。
相关文章:
Android Service 从 1.0 到 16 的演进史
一、Android 1.0(API 1) - 服务的诞生 核心特性: 基础服务组件:作为四大组件之一,Service 用于在后台执行长时间运行的任务,不提供 UI 界面。 启动方式:通过 startService() 启动独立运行的服…...
如何保障服务器租用中的数据安全?
网络科技和互联网的飞速发展,让用户越来越依赖与网络业务,各个行业开展了不同的线上服务,租用服务器已经成为必不可少的组成部分,能够为企业带来便捷,但是数据安全也是不可忽视的,为了能够保护服务器中数据…...
python校园二手交易管理系统-闲置物品交易系统
目录 技术栈介绍具体实现截图系统设计研究方法:设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理,难度适中…...
消除AttributeError: module ‘ttsfrd‘ has no attribute ‘TtsFrontendEngine‘报错输出的记录
#工作记录 尝试消除 消除“模块ttsfrd没有属性ttsfrontendengine”的错误的记录 报错摘录: Traceback (most recent call last): File "F:\PythonProjects\CosyVoice\webui.py", line 188, in <module> cosyvoice CosyVoice(args.model_di…...
MD2card + Deepseek 王炸组合 一键制作小红书知识卡片
本文目录 MD2Card介绍使用示例deepseek 提示词输出结果MD2Card 制作小红书卡片 MD2Card介绍 MD2Card 是一个免费的 Markdown 转知识卡片工具,支持一键生成小红书风格海报、社交媒体文案排版,让创作者轻松制作精美的图文内容。支持多种主题风格、长文自动…...
Relay算子注册(在pytorch.py端调用)
1. Relay算子注册 (C层) (a) 算子属性注册 路径: src/relay/op/nn/nn.cc RELAY_REGISTER_OP("hardswish").set_num_inputs(1).add_argument("data", "Tensor", "Input tensor.").set_support_level(3).add_type_rel("Identity…...
基于RT-Thread的STM32F4开发第二讲第一篇——ADC
文章目录 前言一、RT-Thread工程创建二、ADC工程创建三、ADC功能实现1.ADC.c2.ADC.h3.mian.c 四、效果展示和工程分享总结 前言 ADC是什么不多讲了,前面裸机操作部分有很多讲述。我要说的是RT-Thread对STM32的ADC外设的适配极其不好,特别是STM32G4系类&…...
py实现win自动化自动登陆qq
系列文章目录 py实现win自动化自动登陆qq 文章目录 系列文章目录前言一、上代码?总结 前言 之前都是网页自动化感觉太容易了,就来尝尝win自动化,就先写了一个qq登陆的,这个是拿到className 然后进行点击等。 一、上代码…...
Axure : 列表分页、 列表翻页
文章目录 引言I 列表分页操作说明II 列表翻页操作说明引言 列表分页实现思路:局部变量、 中继器设置每页项目数 I 列表分页 操作说明 在列表元件底部添加一个分页下拉控件,分别为10,20,30,40,50; 将列表转换为动态面板,将设置面板大小勾选取消 给分页大小下拉控件添加…...
大学之大:隆德大学2025.5.6
隆德大学:北欧学术明珠的八百年传承与创新 一.前身历史:从中世纪神学院到现代综合大学的蜕变 隆德大学的历史可追溯至1425年,由丹麦国王埃里克七世在瑞典南部城市隆德创立的“神学与教会法研究院”。这所中世纪学府最初以培养天主教神职人员…...
每日算法-250506
每日算法学习记录 - 250506 今天记录了三道算法题的解题过程和思路,分享给大家。 3192. 使二进制数组全部等于 1 的最少操作次数 II 题目 思路 贪心 解题过程 我们从左到右遍历数组。使用一个变量 ret 来记录已经执行的操作次数。 对于当前元素 nums[i]&#x…...
【免费试用】LattePanda Mu x86 计算模块套件,专为嵌入式开发、边缘计算与 AI 模型部署设计
本次活动为载板设计挑战,旨在激发创意与技术实践能力,鼓励电子工程师、创客、学生及开发者围绕指定LattePanda Mu进行功能丰富、应用多样的载板开发设计。参赛用户将有机会展示硬件设计能力,并通过作品解决实际问题或构建创新项目。本次挑战活…...
用于备份的git版本管理指令
一、先下载一个git服务器软件并安装,创建一个git服务器进行备份的版本管理。 下列指令用于git常用备份: 1、强制覆盖远程仓库: git push --force origin master 2、重新指向新仓库: git remote set-url origin http://192.168.1.2…...
STM32H743单片机实现ADC+DMA多通道检测
在stm32cubeMX上配置ADCDMA实现多通道检测功能 DMA配置 生成代码,HAL_ADC_Start_DMA开始DMA读取ADC值,HAL_ADC_Stop_DMA关闭DMA读取 void Start_ADC2_DMA(void) {/* 初始化后校准ADC */HAL_ADCEx_Calibration_Start(&hadc2, ADC_CALIB_OFFSET, ADC_…...
(提升)媒体投稿技能
1\前期策划与准备 精准定位目标受众,分析内容偏好与活跃媒体基于目标受众,确定发稿核心主题与内容方向 2\内容创作与素材 撰写稿件注重标题吸引力,确保内容逻辑清晰价值突出。素材整合准备高质量的配图、视频 3\内部审核与优化 对稿件内…...
2025年提交App到Appstore从审核被拒到通过的经历
今年3月份提交一个App到Appstore,感觉比以前要严格了很多,被拒了多次才通过。 如果周末提交审核会非常非常,所以最好选择周一之周四的中午提交。 第一次提交被拒,原因为 Guideline 2.1 - Performance - App Completeness Guidel…...
63.微服务保姆教程 (六) SkyWalking--分布式链路追踪系统/分布式的应用性能管理工具
SkyWalking—分布式链路追踪系统/分布式的应用性能管理工具(APM) 一、为什么要用SkyWalking 对于一个有很多个微服务组成的微服务架构系统,通常会遇到一些问题,比如: 如何串联整个调用链路,快速定位问题如何缕清各个微服务之间的依赖关系如何进行各个微服务接口的性能分…...
vue3 computed方法传参数
我们对computed的基础用法不陌生,比如前端项目中经常会遇到数据处理的情况,我们就会选择computed方法来实现。但大家在碰到某些特殊场景,比如在template模板中for循环遍历时想给自己的计算属性传参,这个该怎么实现呢,很…...
Linux中为某个进程临时指定tmp目录
起因: 在linux下编译k8s,由于编译的中间文件太多而系统的/tmp分区设置太小,导致编译失败,但自己不想或不能更改/tmp分区大小,所以只能通过其他方式解决。 现象: tmp分区大小: 解决方法&#x…...
Informer源码解析4——完整注意力机制解读
完整注意力机制 源码 class FullAttention(nn.Module):def __init__(self, mask_flagTrue, factor5, scaleNone, attention_dropout0.1, output_attentionFalse):"""实现完整的注意力机制,支持因果掩码和注意力权重输出。Args:mask_flag (bool): 是…...
第一节:Web3开发概述
一、什么是Web3? 如果把互联网比作一个「大超市」: Web1(1990年代):你只能看货架上的商品(比如新浪、搜狐这种只读网站)。Web2(现在):你不仅能看࿰…...
【愚公系列】《Manus极简入门》022-艺术创作顾问:“艺术灵感使者”
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! …...
k8s node 内存碎片化如何优化?
在 Kubernetes 集群中,内存碎片化(Memory Fragmentation)会导致系统无法分配连续的内存块,即使总内存充足,也可能触发 OOM(Out of Memory)或影响性能。以下是针对 k8s Node 内存碎片化的优化策略…...
当K8S容器没有bash时7种高阶排查手段
遇到容器没有bash甚至没有sh的情况,就像被困在没有门窗的房间。但真正的K8S运维高手,即使面对这种情况也能游刃有余。以下是我们在生产环境锤炼出的7大实战技巧: 一、基础三板斧(新手必学) 1. 日志捕获术——穿透重启…...
linux -c程序开发
目的是在linux中创建可执行的c语言程序的步骤 和gcc,make和git的简单运用 建立可执行程序的步骤: -1:预处理: --:头文件展开;--去掉注释;--宏替换;--条件编译 -2:编译 --:将预处理之后的c语言替换为汇编语言带阿米 --:语法分析,语义分析,代码生成 --:检查语法正确性并且优…...
LLM损失函数面试会问到的
介绍一下KL散度 KL(Kullback-Leibler散度衡量了两个概率分布之间的差异。其公式为: D K L ( P / / Q ) − ∑ x ∈ X P ( x ) log 1 P ( x ) ∑ x ∈ X P ( x ) log 1 Q ( x ) D_{KL}(P//Q)-\sum_{x\in X}P(x)\log\frac{1}{P(x)}\sum_{x\in X}…...
【redis】redis 手动切换主从
场景一: 测试需要,需要手动切换主从 在redis节点: $ redis-cli -h xx.xx.xx.xx -p XX -a XX shutdown 不要直接关闭redis进程,使用 shutdown ,能在进程关闭前持久化内存中的数据 待主从切换完毕后࿱…...
Webug4.0靶场通关笔记17- 第21关文件上传(htaccess)
目录 第21关 文件上传(htaccess) 1.打开靶场 2.源码分析 (1)右键源码 (2)源码分析 3.渗透实战 (1)配置环境 (2)构造脚本 (3)访问脚本 本文通过《webu…...
ASP.NET Core 中间件
文章目录 前言一、中间件的本质定义:类比: 二、作用场景:三、中间件的执行顺序四、中间件的配置方式1)委托形式(最常见):2)类形式: 五、核心方法六、注意事项七、中间件 …...
Linux:进程间通信---命名管道共享内存
文章目录 1.命名管道1.1 命名管道是什么1.2 如何创建命名管道1.3 如何通过命名管道实现进程间通信 2. 共享内存2.1 共享内存的原理2.2 共享内存的系统接口与接口的调用2.3 共享内存的挂接2.4 共享内存的特性 序:在上一章对用来进行进程间通信的匿名管道进行了详细的…...
一个基于Asp.Net Core + Angular + Bootstrap开源CMS系统
从零学习构建一个完整的系统 推荐一个功能强大、易于扩展、安全可靠的开源内容管理系统,适用于各种类型和规模的网站。 项目简介 MixCoreCMS是一个基于.NET Core框架的开源内容管理系统(CMS),提供了丰富的的基础功能和插件&…...
ECMAScript 6(ES6):JavaScript 现代化的革命性升级
1. 版本背景与发布 发布时间:2015 年 6 月,由 ECMA International 正式发布,标准编号为 ECMA-262 Edition 6(后称 ES2015)。历史意义: JavaScript 诞生 20 年后的革命性升级,首次引入类&#…...
基于WebUI的深度学习模型部署与应用实践
引言 随着深度学习技术的快速发展,如何将训练好的模型快速部署并提供友好的用户交互界面成为许多AI项目落地的关键。WebUI(Web User Interface)作为一种轻量级、跨平台的解决方案,正被广泛应用于各类AI模型的部署场景。本文将详细介绍基于Python生态构建WebUI的技术方案,包…...
MySQL表的增删查改
目录 一、MySQL表的增删查改二、Create单行数据全列插入多行数据 指定列插入插入否则更新替换数据 三、RetrieveSELECT 列WHERE 条件NULL的查询结果排序筛选分页结果 四、Update将孙悟空同学的数学成绩修改为80分将曹孟德同学的数学成绩修改为60分,语文成绩修改为7…...
Android第六次面试总结之Java设计模式(二)
一、适配器模式(Adapter Pattern) 1. ListView vs RecyclerView 的 Adapter 核心区别?为什么 RecyclerView 需要 ViewHolder? 解答: 核心区别: 特性ListView.Adapter(如 ArrayAdapter…...
QuecPython+腾讯云:快速连接腾讯云l0T平台
该模块提供腾讯 IoT 平台物联网套件客户端功能,目前的产品节点类型仅支持“设备”,设备认证方式支持“一机一密”和“动态注册认证”。 BC25PA系列不支持该功能。 初始化腾讯 IoT 平台 TXyun TXyun(productID, devicename, devicePsk, ProductSecret)配置腾讯 IoT…...
说下RabbitMQ的整体架构
RabbitMQ 是一个基于 AMQP(Advanced Message Queuing Protocol) 协议的开源消息中间件,RabbitMQ的整体架构围绕消息的生产、路由、存储和消费设计,旨在实现高效、可靠的消息传递,它由多个核心组件协同工作。 核心组件 …...
Qt Creator 网络编程----Socket客户端服务端
1、在Qt项目中的.pro中添加 network模块,用于Socket网络编程使用 QT network 2、相关Tcp网络通信协议头文件 #include <QtNetwork/QTcpServer> #include <QtNetwork/QTcpSocket> #include <QtNetwork/QHostAddress> 3、Qt socket运行实…...
《深度学习实践教程》[吴微] ch-5 3/5层全连接神经网络
一、练习课本上3层全连接神经网络识别手写数字。 答案代码: import torch from torch import nn, optim from torch.autograd import Variable from torch.utils.data import DataLoader from torchvision import datasets, transforms# 定义一些超参数 batch_size…...
OrcaFex11.5
OrcaFlex 11.5是一款专业的海洋工程动态分析软件 由英国Orcina公司开发 主要用于模拟和分析海洋结构物在复杂海洋环境中的动态响应 该软件广泛应用于海上油气开发 海上风电 海洋可再生能源等领域 OrcaFlex 11.5具有强大的建模和仿真能力 支持多种海洋结构物的模拟 包括船舶 …...
MUX-vlan
MUX-VLAN 理论环节 1. 定义与核心作用 Principal VLAN(主VLAN) 是 MUX VLAN(Multiplex VLAN)架构的核心组件,充当公共资源的访问枢纽,实现以下核心功能: 资源共享:允许所有从VLAN…...
vue3中解决 return‘ inside ‘finally‘ block报错的问题
vue3中解决 return’ inside ‘finally’ block报错的问题 这个错误信息通常表明你在使用Vue 3框架时,在finally块中不正确地使用了return语句。在JavaScript中,finally块是保证执行的最后一个代码块,用于释放资源或执行清理操作,…...
TestStand API 简介
TestStand API 简介 在自动化测试领域,TestStand 凭借其灵活的架构和强大的功能,成为众多开发者的首选工具。而 TestStand API(Application Programming Interface,应用程序编程接口)则是打开 TestStand 强大功能的 “…...
vue2+element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能
vue2element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能 文章目录 vue2element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能前言一、准备工作二、行内编辑1.嵌入Input文本输入框1.1遇到问题1.文本框内容修改失…...
【Docker系列】使用格式化输出与排序技巧
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
针对面试-redis篇
1. 缓存穿透 什么是缓存穿透? 缓存穿透就是有人查询一个不存在的数据,数据库查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库。 解决方案一:缓存空数据 当数据库中不存在该数据时,直接把查到的空数据给…...
HTML8:媒体元素
视频和音频 视频元素 video 音频 audio <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>媒体元素学习</title> </head> <body> <!--音频和视频 src:资源路径 controls:控制条…...
把其他conda的env复制到自己电脑的conda上
把其他conda的env复制到自己电脑的conda上 一 拷贝 将要拷贝的env环境拷贝到自己电脑的放置env环境的文件夹中 二 添加配置 找到.conda文件夹下的environments.txt文件,添加配置 三 测试 查看环境是否拷贝成功 激活环境 自此就拷贝成功了!&am…...
抖音热门视频评论数追踪爬虫获取
自动追踪抖音账号收藏夹视频的评论数变化 功能: 1、自动追踪特定抖音账号收藏夹视频热度变化,评论增速超过x,自动通知到钉钉或飞书 2、最新最先进的js逆向算法,无封号风险 3、支持私有化定制 4、可同时追踪500-5w个视频的热度…...
Hive优化秘籍:大数据处理加速之道
目录 一、认识 Hive 性能瓶颈 二、优化从基础开始:查询语句 2.1 列与分区裁剪 2.2 谓词下推 2.3 合理使用排序 三、解决数据倾斜难题 3.1 数据倾斜原因剖析 3.2 针对性优化策略 四、优化 join 操作 4.1 MapJoin 的应用 4.2 大表 join 优化技巧 五、调整 …...