【Android】Intent类详解
目录
引言
一、Intent的定义
二、Intent的用途
三、Intent的七大属性
四、Intent的种类
4.1 显式Intent
4.2 隐式Intent
五、代码示例
5.1 activity_intent.xml
5.2 IntentActivity.java
5.3 AndroidManifest.xml
5.4 实现效果
结语
引言
Intent在Android开发中扮演着至关重要的角色,它是用于在不同组件(如Activity、Service、BroadcastReceiver等)之间进行通信和交互的核心对象。通过Intent,可以启动组件、传递数据、执行系统级操作(如拨打电话、发送短信、打开网页等)。
一、Intent的定义
Intent字面意思为“意图”,在Android中它代表了一种操作或动作的请求。这种请求可以是启动一个Activity、启动一个Service、发送一个广播等。Intent不是具体的实现,而是告诉系统“我想要做什么”,然后系统会根据这个Intent的描述来找到对应的实现并执行。
二、Intent的用途
-
启动Activity:Intent最常见的用途就是启动新的Activity。通过创建一个Intent对象,并设置目标Activity的类名,就可以启动该Activity。此外,Intent还可以携带数据给目标Activity,这些数据可以是基本数据类型、序列化对象或URI等。
-
启动Service:Service是Android中用于在后台执行长时间运行操作的组件。Intent也可以用来启动Service。与启动Activity类似,启动Service也需要创建一个Intent对象,并设置目标Service的类名。但与Activity不同的是,Service启动后不会立即显示界面给用户看,而是在后台默默执行。
-
发送广播:Intent还可以用来发送广播。广播是一种在应用程序间传递消息的机制。发送广播时,需要创建一个Intent对象,并设置广播的动作和数据。然后调用Context的sendBroadcast()方法或sendOrderedBroadcast()方法将广播发送出去。接收广播的组件需要注册一个BroadcastReceiver来监听特定动作的广播。
-
跨应用程序通信:除了在同一应用程序内部进行通信外,Intent还可以实现跨应用程序通信。通过隐式Intent定义动作和数据等属性来描述一个意图后,其他应用程序的组件也可以接收到这个意图并执行相应的操作。这使得Android系统成为一个开放的平台,不同应用程序之间可以相互协作完成任务。
三、Intent的七大属性
Intent的七大属性构建了高效应用间通信的关键,它们分别是:Action、Data、Category、Extras、Type、Component和Flags。
元素名称 | 设置方法 | 说明与用途 |
---|---|---|
Action | setAction | 动作,它指定意图的动作行为 |
Data | setData | 即Uri,它指定动作要操纵的数据路径 |
Category | addCategory | 类别,它指定意图的操作类别 |
Extras | putExtras | 拓展信息,它指定装载的包裹信息 |
Type | setType | 数据类型,它指定消息的数据类型 |
Component | setComponent | 组件,它指定意图的来源与目标 |
Flags | setFlags | 标志位,它指定活动的启动标志 |
-
Action:描述了要执行的操作。在隐式Intent中特别重要,可以帮助Android系统确定哪个组件(如Activity、Service或BroadcastReceiver)能够处理这个Intent。Android SDK定义了一系列标准的Action字符串,例如Intent.ACTION_VIEW、Intent.ACTION_EDIT、Intent.ACTION_DIAL、Intent.ACTION_CALL、Intent.ACTION_SEND等。
-
Data:是一个Uri对象,指定了与Intent相关联的数据的位置或类型。Uri可以是一个指向文件、网页、电子邮件地址等的引用。Data属性在隐式Intent中特别重要,与Action属性一起帮助Android系统确定哪个组件能够处理这个Intent。
-
Category:为Intent提供额外的信息,帮助系统更准确地确定如何处理Intent。Android SDK定义了一些标准的Category常量,例如Intent.CATEGORY_DEFAULT、Intent.CATEGORY_BROWSABLE、Intent.CATEGORY_LAUNCHER等。
-
Extras:一个键值对的集合,用于传递额外的数据。数据通常是以键值对(key-value pair)的形式存储的,可以通过putExtra()方法添加到Intent中,并在目标组件中使用getXXX()系列方法(如getStringExtra(), getIntExtra(), getParcelableExtra()等)来检索。
-
Type:指定数据的MIME类型。在大多数情况下,当设置了Data属性后,Android系统会自动推断出Type属性的值。如果需要明确指定MIME类型,可以使用setType()方法或setDataAndType()方法来设置Type属性。
-
Component:对于显式Intent,指定了要启动的组件的类名。
-
Flags:用于指定Intent的附加选项,如是否需要清除任务栈中的Activity等。
四、Intent的种类
Intent有两种主要类型:显式Intent和隐式Intent。
4.1 显式Intent
显式Intent:显式Intent通过指定具体类名启动一个组件。显式Intent一般用于同一应用程序内,因为可以确定地知道要启动的组件名。另外,Android 5.0以后规定必须显式启动Service。
在构建一个意图对象时,需要指定两个参数,第一个参数表示跳转的来源页面,即“来源Activity.this”;第二个参数表示待跳转的页面,即“目标Activity.class”。具体的意图构建方式有如下三种:
- 在Intent的构造函数中指定,示例代码如下:
// 创建一个目标确定的意图
Intent intent = new Intent(this, ActSecondActivity.class);
- 调用意图对象的setClass方法指定,示例代码如下:
Intent intent = new Intent(); // 创建一个新意图
intent.setClass(this, ActSecondActivity.class); // 设置意图要跳转的目标活动
- 调用意图对象的setComponent方法指定,示例代码如下:
Intent intent = new Intent(); // 创建一个新意图
// 创建包含目标活动在内的组件名称对象
ComponentName component = new ComponentName(this, ActSecondActivity.class);
intent.setComponent(component); // 设置意图要跳转的目标活动
- 此外,ComponentName还有一个重载的构造方法,不需要知道class,只需要知道包名pkg与类名cls即可跳转,将上述代码中创建组件名称对象改成下面这样即可:
ComponentName component = new ComponentName("包名", "类名");
4.2 隐式Intent
隐式Intent:隐式Intent无需指定类名,通常用于启动其他应用程序的组件,比如打算启动一个地图定位的Activity。当隐式地启动一个Service或Activity时,Intent会根据其中的内容,匹配其他组件中manifest文件的Intent-filter,启动符合条件的组件,并把Intent中的参数传过去。如果有多个intent-filter满足条件,那么系统会弹出一个对话框,由用户决定启动哪个组件。
常见系统动作的取值说明:
Intent 类的系统动作常量名 | 系统动作的常量值 | 说明 |
---|---|---|
ACTION_MAIN | android.intent.action.MAIN | App 启动时的入口 |
ACTION_VIEW | android.intent.action.VIEW | 向用户显示数据 |
ACTION_SEND | android.intent.action.SEND | 分享内容 |
ACTION_CALL | android.intent.action.CALL | 直接拨号 |
ACITON_DIAL | android.intent.action.DIAL | 准备拨号 |
ACTION_SENDTO | android.intent.action.SENDTO | 发送短信 |
ACTION_ANSWER | android.intent.action.ANSWER | 接听电话 |
五、代码示例
5.1 activity_intent.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".IntentActivity"><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="32dp"android:text="点击以下按钮跳转到指定页面"android:textColor="@color/black"android:textSize="17sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/btn_dial"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="32dp"android:text="跳转到拨号页面"app:layout_constraintEnd_toEndOf="@+id/textView"app:layout_constraintStart_toStartOf="@+id/textView"app:layout_constraintTop_toBottomOf="@+id/textView" /><Buttonandroid:id="@+id/btn_mine"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="24dp"android:text="跳转到本模块中的应用"app:layout_constraintEnd_toEndOf="@+id/btn_dial"app:layout_constraintStart_toStartOf="@+id/btn_dial"app:layout_constraintTop_toBottomOf="@+id/btn_dial" /><Buttonandroid:id="@+id/btn_other"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="24dp"android:text="跳转到其他模块中的应用"app:layout_constraintEnd_toEndOf="@+id/btn_mine"app:layout_constraintStart_toStartOf="@+id/btn_mine"app:layout_constraintTop_toBottomOf="@+id/btn_mine" />
</androidx.constraintlayout.widget.ConstraintLayout>
5.2 IntentActivity.java
package com.your.package.name;import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;public class IntentActivity extends AppCompatActivity implements View.OnClickListener {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_intent);ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);return insets;});findViewById(R.id.btn_dial).setOnClickListener(this);findViewById(R.id.btn_mine).setOnClickListener(this);findViewById(R.id.btn_other).setOnClickListener(this);}@Overridepublic void onClick(View view) {if(view.getId() == R.id.btn_dial){// 跳转到拨号页面Intent intent = new Intent();intent.setAction(Intent.ACTION_DIAL);// 声明一个拨号的UriUri uri = Uri.parse("tel:" + "10086");intent.setData(uri);startActivity(intent);} else if (view.getId() == R.id.btn_mine) {// 跳转到本模块中的应用页面Intent intent = new Intent(this, PermissionLazyActivity.class); // 更换成自己的ActivitystartActivity(intent);} else if (view.getId() == R.id.btn_other) {// 跳转到其他模块中的应用页面Intent intent = new Intent();intent.setAction("android.intent.action.KUN"); // 更换成自己的其他模块intent.addCategory(Intent.CATEGORY_DEFAULT);startActivity(intent);}}
}
5.3 AndroidManifest.xml
本模块的 AndroidManifest.xml:
<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyApplication"><activityandroid:name=".PermissionLazyActivity"android:exported="false" /><activityandroid:name=".IntentActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
</application>
需要跳转的模块的AndroidManifest.xml:
<activityandroid:name=".PullRefreshActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>// 需要增加的代码:action中的name可自定义<intent-filter><action android:name="android.intent.action.KUN" /><category android:name="android.intent.category.DEFAULT" /></intent-filter>
</activity>
其中<intent-filter>中的<category>标签的android:name,有几个预定义的Intent类别(category),它们通常以 android.intent.category. 为前缀。以下是一些常见的Intent类别及其含义:
android.intent.category.DEFAULT:
- 这是最常用的类别。如果一个Intent没有明确指定类别,它隐式地属于这个类别。
- 当你为组件(如Activity)声明<intent-filter>时,通常至少会包含这个类别,除非有特别的理由不包括它。
android.intent.category.BROWSABLE:
- 表明目标Activity可以通过浏览器启动,通常用于处理Web页面中的链接(例如,使用<a href="intent:...">)。
- 通常与android.intent.action.VIEW动作一起使用,以表示Activity可以显示数据(如网页或文档)。
android.intent.category.LAUNCHER:
- 这是一个特殊的类别,用于标识应用的主Activity(即启动器图标指向的Activity)。
- 只有主Activity应该在其<intent-filter>中包含这个类别。
- 当用户从设备的主屏幕启动应用时,系统会查找具有这个类别的Activity。
android.intent.category.ALTERNATIVE:
- 表示Activity是用户请求的一个替代选择。
- 这通常用于当用户请求一个操作时,系统提供多个可能的Activity来满足这个请求。
android.intent.category.SELECTED_ALTERNATIVE:
- 当用户从一组替代选项中选择了一个Activity时,这个Activity的Intent会被标记为这个类别。
- 这通常用于处理用户从选择器UI中选择的结果。
android.intent.category.TAB:
- 表明Activity应该作为另一个Activity中的标签页启动。
- 这通常与android.intent.action.MAIN动作一起使用,在具有标签页界面的Activity中。
android.intent.category.EMBED:
- 表明Activity应该被嵌入到另一个Activity中作为其内容。
- 这与TAB类别类似,但提供了更一般的嵌入机制。
android.intent.category.HOME:
- 这是一个特殊的类别,用于标识设备的主屏幕Activity。
- 只有主屏幕Activity应该在其<intent-filter>中包含这个类别。
android.intent.category.INFO:
- 表示Activity提供了一些关于另一个组件(如另一个应用)的信息。
- 这通常用于显示关于其他应用的详细信息或设置。
android.intent.category.PREFERENCE:
- 表示Activity是一个偏好设置屏幕。
- 这通常用于提供应用的设置选项。
5.4 实现效果
结语
Intent是Android开发中不可或缺的一部分,它使得应用程序的各个组件之间能够进行高效、灵活的通信和交互。通过理解Intent的定义、用途、种类及其七大属性,开发者可以更好地掌握Intent的使用技巧,从而开发出更加功能丰富、交互流畅的应用程序。在实际开发中,灵活运用Intent可以显著提升开发效率和用户体验。
相关文章:
【Android】Intent类详解
目录 引言 一、Intent的定义 二、Intent的用途 三、Intent的七大属性 四、Intent的种类 4.1 显式Intent 4.2 隐式Intent 五、代码示例 5.1 activity_intent.xml 5.2 IntentActivity.java 5.3 AndroidManifest.xml 5.4 实现效果 结语 引言 Intent在Android开发…...
【LeetCode刷题之路】64.最小路径和 (动态规划入门)
LeetCode刷题记录 🌐 我的博客主页:iiiiiankor🎯 如果你觉得我的内容对你有帮助,不妨点个赞👍、留个评论✍,或者收藏⭐,让我们一起进步!📝 专栏系列:LeetCode…...
Facebook:筑牢隐私安全堡垒,守护社交净土
在全球社交媒体平台中,Facebook一直是风靡全球的佼佼者。然而,随着数字化信息的迅速膨胀,用户隐私保护的重要性日益凸显。面对用户对数据安全性的高度重视,Facebook致力于通过一系列措施来确保隐私保护,守护每位用户的…...
MongoDB 索引类型详解
MongoDB 索引类型详解 在 MongoDB 中,索引是提高查询效率、优化数据库性能的重要手段。MongoDB 支持多种类型的索引,每种索引类型适用于不同的查询需求和场景。本文将详细介绍 MongoDB 中几种常见的索引类型、示例及其限制。 1. 单字段索引(…...
国家信息中心单志广:智慧城市转型中的数据要素价值释放
今日,由中国电信集团主办的2024数字科技生态大会数据要素合作论坛在广州市举办。国家发改委国家信息中心信息化和产业发展部主任单志广在论坛发展主旨演讲:智慧城市转型中的数据要素价值释放,主要包括发展新形势、数据新要素、数据新产权、数…...
底层逻辑之:欧拉-拉格朗日方程(Euler-Lagrange equations)变分法(Calculus of Variations)的核心思想
0前言: 0.1 17世纪的泛函(Functional)分析与变分法(Calculus of Variations) 在17世纪,数学家们开始遇到一些需要处理函数集合的问题,这些问题涉及到函数的极值、曲线的长度、曲面的面积等。这…...
2024-12-03OpenCV图片处理基础
OpenCV图片处理基础 OpenCV的视频教学:https://www.bilibili.com/video/BV14P411D7MH 1-OpenCV摄像头读取 OpenCV使用摄像头读取图片帧,点击S保存当前帧到指定文件夹,点击Q关闭窗口,点击其他按钮打印按钮的值 要实现这个功能&…...
【汇编语言】标志寄存器(二) —— 标志位驱动的计算:ADC、SBB 和 CMP 的巧妙应用
前言 📌 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。但仅仅从课程的角度出发就太片面了,其实学习汇编语言可以深入理解计算机底层工作原理,提升代码效率,尤其在嵌入式系统和性能优…...
Java刷题训练第一期
个人主页:手握风云 专栏:Java刷题训练营 1. 字符转ASCII码 问题描述:BoBo教KiKi字符常量或字符变量表示的字符在内存中以ASCII码形式存储。BoBo出了一个问题给KiKi,输入一个字符,输出该字符相应的ASCII码。 输入描述…...
【leetcode100】矩阵置零
1、题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用原地算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 2、初始思路 2…...
【MySQL 进阶之路】SQL 优化
6.SQL 性能分析笔记 在现代数据库的高并发环境下,SQL 查询优化成为提升系统性能和响应速度的关键。本文将总结常见的 SQL 优化策略,包括插入优化、主键设计、排序优化、GROUP BY 优化等,帮助你在面对大规模数据时,做到高效查询和…...
本地部署开源趣味艺术画板Paint Board结合内网穿透跨网络多设备在线绘画
文章目录 前言1.关于Paint Board2.本地部署paint-board3.使用Paint Board4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定Paint Board公网地址 前言 大家好,是不是每次想要在电脑上画画时,都被那些笨重的专业绘图软件搞得头大如斗呢?…...
位图(bitmap)和布隆过滤器(bloom_filter)
1.位图-Bitmap 1.1问题引入 :给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中? 40亿个无符号整数大约16G的大小,用map或者set显然是无法支持海量数据的存储。那么我们能否不存储数…...
如何使用JDBC向数据库中插入日期数据???
在学习JDBC 的过程中很多小明有疑问在IDEA编辑器是如何插入一个日期类型的数据的,此篇一些方法希望可以帮助到你。 示例: import java.text.ParseException; import java.text.SimpleDateFormat; import java.sql.Date; import java.util.Scanner;publi…...
电子系统设计实验4 信号发生电路设计实验
一、实验目的 1. 掌握正弦信号发生器的设计方法。 2. 掌握方波发生器的设计方法。 二、实验内容及结果 1. 实验内容 设计一用于RFID读卡器测试的幅移键控发生器(ASK),其结构如图4-1所示。正弦振荡器输出频率为150kHz,幅度为3V…...
【Docker】Linux与Windows系统安装Docker+Docker上简单安装MySQL
一、Windows安装Docker 由于我在许多平台搜索Windows下安装Docker的方法,都提到了Win10家庭版无法直接安装Docker。个人电脑就是Win10家庭版,本着实践出真知的想法,个人在本机Win10家庭版实验结果为需要采用下述传统手动安装的办法ÿ…...
linux更新镜像源
镜像源地址 1 阿里云 http://mirrors.aliyun.com/ubuntu/ 2 网易源 http://mirrors.163.com/ubuntu/ 3 浙大源 http://mirrors.zju.edu.cn/ubuntu 4 中科大源 http://mirrors.ustc.edu.cn/ubuntu/ 5 清华源 http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ 更新镜像源 此处…...
HarmonyOS 5.0应用开发——UIAbility生命周期
【高心星出品】 文章目录 UIAbility组件创建AbilityUIAbility的生命周期Create状态WindowStageCreate状态Foreground和Background状态WindowStageWillDestroy状态Destroy状态 UIAbility组件 UIAbility组件是一种包含UI的应用组件,主要用于和用户交互。 UIAbility组…...
【Linux】C语言实现简易的Linux shell命令行解释器
我们要实现自己的简易的shel,先了解一下shell运行原理。 1. shell运行原理 shell从用户读入字符串"ls"。shell建立一个子进程,在子进程中运行ls程序并等待进程结束。 然后shell读取新的一行输入,建立一个新的子进程,在…...
构建个人大模型问答助手(基于Streamlit +gpt-4o/o1-mini):全面解析与实现
在当今人工智能迅猛发展的时代,构建一个个人化的大模型问答助手不仅能够提高工作效率,还能为日常生活带来便利。本篇博客将详细解析如何使用Python和Streamlit框架,结合OpenAI的API,搭建一个类似于ChatGPT的问答系统。我们将分步骤…...
10.请求拦截和响应拦截
文章目录 前言前景回顾拦截器应用请求拦截器响应拦截器测试响应拦截器原理 总结 前言 优秀的设计总是少不了丰富的扩展点, 比如spring可以自动装配, aop扩展, web模块也有拦截器, 甚至对servlet的过滤器都有封装; 再比如netty、doubbo等等都支持在数据流入流出都允许用户自定义…...
github使用SSH进行克隆仓库
SSH 密钥拉取git 查询密钥是否存在 s -al ~/.ssh这个文件夹下 known_hosts 就是存在的密钥文件 创建密钥文件 ssh-keygen -t rsa -b 4096 -C "testtt.com"-t rsa 是 rsa 算法加密 -b 是指定密钥的长度(以位为单位)。 -C 是用于给密钥添加注…...
如何成长为一名工程技术经理
https://medium.com/srivatsan-sridharan/how-to-grow-as-an-engineering-manager-687cad0bcac7 作为一名工程技术经理,你可能已经积累了丰富的团队管理经验,并展示了出色的项目管理、优先级管理和员工指导能力。然而,尽管如此,你…...
前端热门面试题目(四五六七)
1. 使用 import 时,Webpack 如何处理 node_modules 中的依赖? 依赖解析: Webpack 遇到 import 时,利用 resolve 配置查找依赖。如果是第三方依赖(node_modules),Webpack 会优先查找其主入口&…...
三、使用 Maven:命令行环境
文章目录 1. 第一节 实验一:根据坐标创建 Maven 工程1.1 Maven 核心概念:坐标1.2 实验操作1.3 Maven核心概念:POM1.4 Maven核心概念:约定的目录结构 2. 实验二:在 Maven 工程中编写代码2.1 主体程序2.2 测试程序 3. 执…...
深度学习在网络管理中的应用:智能化的新时代
网络管理在现代信息技术中占据着举足轻重的地位。随着网络规模的扩大和复杂性的增加,传统的网络管理手段已经无法满足日益增长的需求。深度学习作为人工智能的一个重要分支,通过其强大的数据处理和模式识别能力,为网络管理带来了新的契机。本…...
微信小程序日期格式化报错: iOS 下无法正常使用,iOS 只支持 “yyyy/MM/dd“、“yyyy/MM/dd HH:mm:ss“、“yyyy-
微信小程序日期格式化报错 报错内容解决办法 报错内容 at formatDate (http://127.0.0.1:10118/appservice-hotreload/pages/index/index.js?1;:103:18) new Date(“2024-11-27 15:05:23”) 在部分 iOS 下无法正常使用,iOS 只支持 “yyyy/MM/dd”、“yyyy/MM/dd H…...
第K大数求解方案
思想:利用快速排序的思想,从数组S中随机找出一个元素X,把数组分为两部分Sa和Sb。Sa中的元素大于等于X,Sb中元素小于X。这时有两种情况: 1. Sa中元素的个数小于k,则Sb中的第k-|Sa|个元素即为第k大数…...
【AI系统】MobileFormer
MobileFormer 在本文中,将介绍一种新的网络-MobileFormer,它实现了 Transformer 全局特征与 CNN 局部特征的融合,在较低的成本内,创造一个高效的网络。通过本节,让大家去了解如何将 CNN 与 Transformer 更好的结合起来…...
《重生之我学VTK》-- 基本介绍与相关概念
目录 简介 可视化模型 示例(圆锥体) VTK官方用户手册(中文C版)附末尾,有需要的直接划到末尾 简介 VTK(Visualization Toolkit)是一个开源的、跨平台的软件系统,主要用于三维计算机图…...
HTML笔记()蜘蛛纸牌之卡牌拖拽
效果 代码 <!DOCTYPE html> <html><head><style>body{display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #2b2b2b;position: relative;}.card{/*设置卡牌的外观*/width: 150px;height: 200px;background-…...
记一次跑前端老项目的问题
记一次跑前端老项目的问题 一、前言二、过程1、下载依赖2、启动项目3、打包 一、前言 在一次跑前端老项目的时候,遇到了一些坑,这里记录一下。 二、过程 1、下载依赖 使用 npm install下载很久,然后给我报了个错 core-js2.6.12: core-js…...
041_Compare_Matrix_Squre_Sum_in_MATLAB中矩阵平方和的比较
矩阵平方和的计算 矩阵平方和的定义 矩阵平方和的定义是对矩阵中的每一个元素进行平方,然后求和。 对于一个矩阵 A A A,其平方和定义为: sum ∑ i 1 m ∑ j 1 n A ( i , j ) 2 \text{sum} \sum_{i1}^{m}\sum_{j1}^{n} A(i,j)^2 sumi1∑…...
vue3中 axios 发送请求 刷新token 封装axios
service.js 页面 import axios from axios // 创建axios实例 const instance axios.create({baseURL: http://gcm-test.jhzhkj.cn:8600/h5card/,timeout: 5000, // 请求超时时间headers: {get: {Content-Type: application/x-www-form-urlencoded},post: {Content-Type: appl…...
vue+mars3d叠加展示arcgis动态服务
数据格式:使用arcgis发布的动态服务 叠加和移除arcgis服务图层的方法 //加载arcgis地图服务function arcgisServer(i,d,m,p){i[d.data] new mars3d.layer.ArcGisLayer({name:d.label,url:p,flyTo: true})m.addLayer(i[d.data])}//移除arcgis服务范围线function rem…...
PostgreSQL 中进行数据导入和导出
在数据库管理中,数据的导入和导出是非常常见的操作。特别是在 PostgreSQL 中,提供了多种工具和方法来实现数据的有效管理。无论是备份数据,还是将数据迁移到其他数据库,或是进行数据分析,掌握数据导入和导出的技巧都是…...
Stable Audio Open模型部署教程:用AI打造独家节拍,让声音焕发新活力!
Stable Audio Open 是一个开源的文本到音频模型,允许用户从简单的文本提示中生成长达 47 秒的高质量音频数据。该模型非常适合创建鼓点、乐器即兴演奏、环境声音、拟音录音和其他用于音乐制作和声音设计的音频样本。用户还可以根据他们的自定义音频数据微调模型&…...
python更新程序并部署服务器服务
本地客户端程序 import json import hashlib import os import shutil import requests from pathlib import Pathclass AutoUpdater:def __init__(self, config_path"http://【XXXIP地址】/update_config"):self.config_path config_pathself.config Nonewith op…...
Nmap 扫描技巧:自定义端口、扫描速度与并行化设置
Nmap 扫描技巧:自定义端口、扫描速度与并行化设置 在进行网络安全扫描时,Nmap 是一个非常强大的工具。除了默认扫描 1000 个端口外,你还可以根据需要自定义扫描的端口、调整扫描速度以及优化扫描并行化。今天,我们就来介绍如何通…...
从 HTML 到 CSS:开启网页样式之旅(五)—— CSS盒子模型
从 HTML 到 CSS:开启网页样式之旅(五)—— CSS盒子模型 前言一、盒子模型的组成margin(外边距):border(边框):padding(内边距):conten…...
Linux命令行下载工具
1. curl 1.1. 介绍 curl是一个功能强大的命令行工具,用于在各种网络协议下传输数据。它支持多种协议,包括但不限于 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、SMTP、POP3、IMAP 等,这使得它在网络数据交互场景中有广泛的应用。curl可以模拟浏览器…...
Navicat 连接 SQL Server 详尽指南
Navicat 是一款功能强大的数据库管理工具,它提供了直观的图形界面,使用户能够轻松地管理和操作各种类型的数据库,包括 SQL Server。本文将详尽介绍如何使用 Navicat 连接到 SQL Server 数据库,包括安装设置、连接配置、常见问题排…...
黑马JavaWeb-day06、07、08(SQL部分) _
文章目录 MYSQL概述数据模型SQL简介SQL分类 DDL数据库操作表操作 DML增(INSERT)改(UPDATE)删(DELETE) DQL基本查询条件查询(where)分组查询(group by)排序查询…...
Redis(1)
Redis是一个在内存中存储数据的中间件。 1.在内存中存储数据。 通过数据结构来存储,mysql通过表的方式存储数据,是关系型数据库,redis通过键值对存储,key的类型是string,value的类型是非关系型数据库。 2.可编程的 …...
工具类-列表请求工具 useList
useList 用于列表请求的基于 vue 3 的 hooks,接收请求函数、请求参数等数据,自动生成请求请求函数,分页信息等 本文有涉及到 http 请求工具和接口返回格式的内容: http 工具:一个基于 axios 封装的请求工具Response…...
5G终端自动拔号脚本
5G终端自动拔号脚本 5G终端自动拔号脚本 5G终端自动拔号脚本, 先进入飞行模式,再切出飞行模式, 最后 查询UE IP地址 5G终端自动拔号脚本 input$1 if [ "$input"x "1"x ]; then cmdatcfun1echo "start dialing &…...
3-1 C指针与数组
前言: 基于本人回顾与思考,仅供学习参考 1.0 数组名称的用途 注:可以用于求数组占用的内存空间:sizeof(arrName);此时数组名称代表整个数组 int32 t buffer[5] {1,2,3,4,5};int32 t size sizeof(buffer);printf("sizeof(buffer) %d.\…...
swift 屏幕录制
步骤 1:导入 ReplayKit import ReplayKit步骤 2:开始录屏 let screenRecorder RPScreenRecorder.shared() // 麦克风或系统音频 screenRecorder.isMicrophoneEnabled truefunc startRecording() {guard screenRecorder.isAvailable else {print(&quo…...
Graphviz 的详细介绍
Graphviz 的详细介绍 Graphviz 是一个开源的图形可视化软件,专门用于生成结构化图形。它特别适合用于表示关系图、流程图、依赖关系图和树状结构等类型的图表。Graphviz 使用一种名为 DOT 的脚本语言描述图形,通过解析 DOT 文件生成图像。 Graphviz 的特…...
前端工程化
文章目录 前端工程化模块化与组件化代码规范与风格统一自动化构建与部署性能优化版本控制与团队协作自动化测试 前端工程化 前端工程化是一种将软件工程的方法应用于前端开发的过程,旨在提高开发效率、降低维护成本、优化代码质量,并支持团队协作。以下…...