android中Manifest.xml中的intent-filter作用

2023-10-29

注意:

隐式启动Activity的intent到底发给哪个activity,需要进行三个匹配,一个是action,一个是category,一个是data,可以是全部或部分匹配


同样适用于Service和BroadcastReceiver,下面是以Activity为例


MainActivity.java --主Activity

TestActivity.java --需要隐式启动的Activity


(1) 根据Action和Category来进行匹配

<activity android:name=".TestActivity" android:label="TestActivity">

<intent-filter >

<action android:name="cc.android/myaction.leo"/>

<category android:name="android.intent.category.DEFAULT"/>

</intent-filter>

</activity>



在MainActivity.java里启动它:

intent.setAction( "cc.android/myaction.leo");

//不加下面这行也行,因为intent的这个属性默认值即系Intent.CATEGORY_DEFAULT

intent.addCategory(Intent.CATEGORY_DEFAULT);

startActivity( intent );

总结:

a.在某个Activity里用startActivity()方法发送一个intent,这个intent设定了一些条件,比如用方法setAction(),addCategory()设定了两个属性,

发送了这个intent之后,android会去系统里保存的MainManifest.xml清单(假设这个系统存放全部apk清单的文件为MainManifest.xml)里查找符合这两个属性的activity,然后启动它。

查找过程是怎样的呢?

我猜测:在安装某个apk的时候,android系统会把这个apk的清单文件里内容复制一份至系统的某个清单文件里(假如这个系统存放全部apk清单的文件为MainManifest.xml)

当某个Activity用startActivity(intentOther)方法向系统发送了一个intent(假如为intentOther),那么android系统会去查找这个MainManifest.xml里注册的<intent-filter >属性,

查找到符合这个 intentOther 的就启动这个Activity,如果有多个这样的Activity符合条件的话,就跳出一个对话框让用户选择究竟要启动哪一个



上面那个自定义的Action字符串("cc.android/myaction.leo",当然也可以写成这样"cc.android.myaction.leo",同时AndroidManifest.xml里也要写成这样)是系统唯一的,

所以系统很容易就能匹配到。

b.任何一个需要隐式启动的Activity都必须要有这项:<category android:name="android.intent.category.DEFAULT"/>

例外情况是:android.intent.category.MAIN和android.intent.category.LAUNCHER的filter中没有必要加入android.intent.category.DEFAULT,当然加入也没有问题

c.假如有两个Activity,它们的在AndroidManifest.xml里配置如下:

<activity android:name="MyActivityOne" android:label="@string/activityOne">

<intent-filter>

<action android:name="hello.leo.liao" />

<action android:name="hello.leo.leo" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

</activity>



<activity android:name=".MyActivityTwo" android:label="@string/activityTwo">

<intent-filter>

<action android:name="hello.leo.liao" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

</activity>



在MainActivity.java里发送一个intent:

intent.setAction( "hello.leo.liao");

//不加下面这行也行,因为intent的这个属性默认值即系Intent.CATEGORY_DEFAULT

intent.addCategory(Intent.CATEGORY_DEFAULT);

startActivity( intent );



这样的话,android系统会跳出一个对话框让你选择启动哪一个Activity(MyActivityOne还是MyActivityTwo)

如果把上面的intent.setAction( "hello.leo.liao");改为intent.setAction( "hello.leo.leo");的话,就自动匹配到MyActivityOne

就是说如果category和action都相同的话,会跳出一个对话框让用户选择要启动哪一个activity;

如果category相同,而action不相同,就可以匹配到相应的activity

d.单单靠添加addCategory属性不能匹配,如:

Intent intent = new Intent();

intent.addCategory(Intent.CATEGORY_DEFAULT);

intent.addCategory("android.intent.category.hello");

startActivity(intent);


<activity android:name=".MyActivityTwo" android:label="@string/activityTwo">

<intent-filter>

<category android:name="android.intent.category.DEFAULT" />

<category android:name="android.intent.category.hello"></category>

</intent-filter>

</activity>

e.当匹配不上任何Activity的话,会发生异常,跳出对话框:很抱歉...某某应用程序意外停止,请重试。

f.Service和BroadcastReceiver 同理

(2) 根据Action和Data匹配

<activity android:name=".MyActivityTwo" android:label="@string/activityTwo">

<intent-filter>

<action android:name="android.intent.action.leo"></action>

<category android:name="android.intent.category.DEFAULT"></category>

<data android:scheme="x-id"></data>

</intent-filter>

</activity>



//Uri uri = Uri.parse("x-id://www.google.com/getDetails?id=123");//这个也可以

//Uri uri = Uri.parse("x-id");//这个不行

//Uri uri = Uri.parse("x-id://");这个可以

Uri uri = Uri.parse("x-id:");//这个可以

Intent in = new Intent();

in.setAction("android.intent.action.leo");//去掉这行不行,单靠data不能匹配

in.addCategory(Intent.CATEGORY_DEFAULT);//可以去掉这行,因为intent的默认category值即系Intent.CATEGORY_DEFAULT

in.setData(uri);//去掉这行不行

startActivity(in);



总结:如果在AndroidManifest.xml里面指定了<data>这行,那么,需要匹配到它的话,在代码里必须要设置intent的data,如上面的in.setData(uri) 

Data的语法:

<data android:host="string"

android:mimeType="string"

android:path="string"

android:pathPattern="string"

android:pathPrefix="string"

android:port="string"

android:scheme="string" />



Uri的格式:scheme://host:port/path or pathPrefix or pathPattern



如果scheme没有指定,那其它的属性均无效;

如果host没有指定,那么port,path,pathPrefix,pathPattern均无效;

如果在manifest里这样写:<data android:scheme="something" android:host="project.example.com" />

那么Uri uri = Uri.parse("something://project.example.com"); 才可以匹配

再如:

<data android:scheme="something" android:host="project.example.com" android:port="80"/>

等同于这样写:

<data android:scheme="something"/>

<data android:host="project.example.com"/>

<data android:port="80"/>

那么Uri uri = Uri.parse("something://project.example.com:80"); 才可以匹配

不知为何,下面这个不行:

<data android:scheme="content" android:host="com.example.project" android:port="200" android:path="folder/subfolder/etc"/>

Uri uri = Uri.parse("content://com.example.project:200/folder/subfolder/etc")

下面这样也不行

<data android:scheme="content" android:host="com.example.project" android:port="200" android:path="folder"/>

Uri uri = Uri.parse("content://com.example.project:200/folder")

可以有多个data,只需匹配其中一个即可

<activity android:name=".MyActivityTwo" android:label="@string/activityTwo">

<intent-filter>

<action android:name="android.intent.action.leo"></action>

<category android:name="android.intent.category.DEFAULT"></category>

<data android:scheme="x-id"/>

<data android:scheme="something"/>

</intent-filter>

</activity>


Intent in = new Intent();

in.setAction("android.intent.action.leo");

in.addCategory(Intent.CATEGORY_DEFAULT);

in.setData(Uri.parse("something:"));//或者用这个亦可in.setData(Uri.parse("x-id:")); 

startActivity(in); 

(3) 根据action和data的mimeType属性匹配 

<activity android:name=".MyActivityTwo" android:label="@string/activityTwo">

<intent-filter>

<action android:name="android.intent.action.VIEW"></action>

<data android:mimeType="vnd.android.cursor.dir/vnd.google.note" />

<category android:name="android.intent.category.DEFAULT"></category>

</intent-filter>

</activity>

在java代码里这样写就可以匹配到这个activity:

Intent in = new Intent();

in.setAction("android.intent.action.VIEW");

in.addCategory(Intent.CATEGORY_DEFAULT);//可去掉,因为Category默认值即系Intent.CATEGORY_DEFAULT

in.setType("vnd.android.cursor.dir/vnd.google.note");

startActivity(in); 


单靠data的mimeType属性不能匹配,就算这个mimeType是唯一的也不行(比如in.setType("leo.android.cursor.dir/vnd.google.leo");),需要有一个action配合 

可以有多个mimeType,在java代码里只需匹配其中一个即可:

<activity android:name=".MyActivityTwo" android:label="@string/activityTwo">

<intent-filter>

<intent-filter>

<action android:name="android.intent.action.VIEW"></action>

<data android:mimeType="leo.android.cursor.dir/vnd.google.leo" />

<data android:mimeType="leo.android.cursor.dir/vnd.google.liao" />

<category android:name="android.intent.category.DEFAULT"></category>

</intent-filter>

</activity>

这样可以启动MyActivityTwo这个Activity:

Intent in = new Intent();

in.setAction("android.intent.action.VIEW");

in.addCategory(Intent.CATEGORY_DEFAULT);//可去掉,因为Category默认值即系Intent.CATEGORY_DEFAULT

in.setType("leo.android.cursor.dir/vnd.google.liao");

startActivity(in);

或者这样也可以启动MyActivityTwo这个Activity: 

Intent in = new Intent();

in.setAction("android.intent.action.VIEW");

in.addCategory(Intent.CATEGORY_DEFAULT);//可去掉,因为Category默认值即系Intent.CATEGORY_DEFAULT

in.setType("leo.android.cursor.dir/vnd.google.leo");

startActivity(in);


scheme和mimeType只能有其中一个,下面这样通不过

AndroidManifest.xml里:

<data android:scheme="something" android:host="project.example.com"

android:port="80"

android:mimeType="leo.android.cursor.dir/vnd.google.leo" /> 




<data android:scheme="something" android:host="project.example.com"

android:port="80" />

<data android:mimeType="leo.android.cursor.dir/vnd.google.leo" />

java代码里:

匹配不上:

Intent in = new Intent();

in.setAction("android.intent.action.VIEW");

Uri uri = Uri.parse("something://project.example.com:80");

in.setData(uri);

in.setType("leo.android.cursor.dir/vnd.google.leo");

startActivity(in); 



这样还是匹配不上:

Intent in = new Intent();

in.setAction("android.intent.action.VIEW");

// Uri uri = Uri.parse("something://project.example.com:80");

// in.setData(uri);

in.setType("leo.android.cursor.dir/vnd.google.leo");

startActivity(in);


这样还是匹配不上:

Intent in = new Intent();

in.setAction("android.intent.action.VIEW");

Uri uri = Uri.parse("something://project.example.com:80");

in.setData(uri);

// in.setType("leo.android.cursor.dir/vnd.google.leo");

startActivity(in);


(4) 一个Activity里可以有多对<intent-filter></intent-filter> 只要匹配其中一对,即可启动这个Activity

<activity android:name=".MyActivityTwo" android:label="@string/activityTwo">

<intent-filter>

<action android:name="android.intent.action.VIEW"></action>

<data android:scheme="something" android:host="project.example.com"

android:port="80" />

<category android:name="android.intent.category.DEFAULT"></category>

</intent-filter>


<intent-filter>

<action android:name="android.intent.action.VIEW"></action>

<data android:mimeType="leo.android.cursor.dir/vnd.google.leo" />

<category android:name="android.intent.category.DEFAULT"></category>

</intent-filter>


<intent-filter>

<action android:name="hello.hi.liao"></action>

<category android:name="android.intent.category.DEFAULT"></category>

</intent-filter>


</activity>


java代码里:

匹配第一对<intent-filter> 可以启动MyActivityTwo这个Activity:

Intent in = new Intent();

in.setAction("android.intent.action.VIEW");

in.addCategory(Intent.CATEGORY_DEFAULT);//可去掉,因为Category默认值即系Intent.CATEGORY_DEFAULT

Uri uri = Uri.parse("something://project.example.com:80");

in.setData(uri);

startActivity(in);

匹配第二对<intent-filter> 也可以启动MyActivityTwo这个Activity: 

Intent in = new Intent();

in.addCategory(Intent.CATEGORY_DEFAULT);//可去掉,因为Category默认值即系Intent.CATEGORY_DEFAULT

in.setAction("android.intent.action.VIEW");

in.setType("leo.android.cursor.dir/vnd.google.leo");

startActivity(in); 


匹配第三对<intent-filter> 也可以启动MyActivityTwo这个Activity: 

Intent in = new Intent();

in.setAction("hello.hi.liao");

in.addCategory(Intent.CATEGORY_DEFAULT);//可去掉,因为Category默认值即系Intent.CATEGORY_DEFAULT

startActivity(in); 


全部总结:

1. <action/>包含在 <intent-filter></intent-filter> 标签对里,而且是必不可少的!不管以哪一种方式来匹配,都不可缺少这个<action/> ,可以有多个,至少要有一个。

如有多个的,话只需要匹配其中一个即可找到这个activity

<action>里的属性值大多数是在Intent里定义的,比如<action android:name="android.intent.action.VIEW"/>里的属性值就等于 Intent.ACTION_VIEW,

在这个Intent类里以ACTION开头定义的常量都是。当然,也可以自定义。 


2. 任何一个需要隐式启动的Activity都必须要有这项:<category android:name="android.intent.category.DEFAULT"/>

例外情况是:android.intent.category.MAIN和android.intent.category.LAUNCHER的filter中没有必要加入android.intent.category.DEFAULT,当然加入也没有问题 

<category>里的属性值大多数是在Intent里定义的,比如 <category android:name="android.intent.category.DEFAULT"/>里的属性值就等于 Intent.CATEGORY_DEFAULT,

在这个Intent类里以CATEGORY开头定义的常量都是。当然,也可以自定义。 


3.一个Activity里可以有多对<intent-filter></intent-filter> 只要匹配其中一对,即可启动这个Activity 


4.在<intent-filter></intent-filter>里可以有多个<data android:mimeType="xxxx"/>,只需匹配其中一个即可.注意:不可以同时出现第5点的标签对,即下面这条。

5.在<intent-filter></intent-filter>里可以有多个<data android:scheme="xxxx" android:host="yyyy" android:port="uuu"/>,只需匹配其中一个即可。

语法:

<data android:host="string"

android:mimeType="string"

android:path="string"

android:pathPattern="string"

android:pathPrefix="string"

android:port="string"

android:scheme="string" />

可以分开写,如:

<data android:scheme="something" android:host="project.example.com" android:port="80"/>

等同于这样写:

<data android:scheme="something"/>

<data android:host="project.example.com"/>

<data android:port="80"/>


在java代码里,Uri的格式:scheme://host:port/path or pathPrefix or pathPattern

注意:不可以同时出现第4点的标签对,即上面那条。






6.在<intent-filter></intent-filter>里可以有多个<action android:name="xxxx"> ,只需匹配其中一个即可。







7.当匹配不上任何Activity的话,会发生异常,跳出对话框:很抱歉...某某应用程序意外停止,请重试。







8.上面所说的全部适用于Service和BroadcastReceiver,只需把<activity ...></activity>换成<service ...></service>或<receiver ...></receiver>即可。



9.刚参考了一下packages\apps\HTMLViewer\AndroidManifest.xml,第4和第5条应该是不冲突才对,但是实际测试中却是冲突,暂时未到找原因。匹配方式请看:用于打开HTML文件的intent






在被启动的Activity(本例为MyActivityTwo)里接收数据:

Intent intent = getIntent();

String intentCategories = intent.getCategories()

String intentType = intent.getType();

Uri uri = intent.getData();

String uriScheme = uri.getScheme();

String uriPath = uri.getPath();

String uriHost = uri.getHost();

String uriEncodedPath = uri.getEncodedPath();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android中Manifest.xml中的intent-filter作用 的相关文章

  • 软件开发模型

    软件开发模型 Software Development Model 是指软件开发全部过程 活动和任务的结构框架 软件开发包括需求 设计 编码和测试等阶段 有时也包括维护阶段 软件开发模型能清晰 直观地表达软件开发全过程 明确规定了要完成的主
  • 白盒测试 代码检查

    6 2 1 代码检查法 代码检查包括桌面检查 代码审查和走查等 主要检查代码和设计的一致性 代码对标准的遵循 可读性 代码逻辑表达的正确性 代码结构的合理性等方面 发现违背程序编写标准的问题 程序中不安全 不明确和模糊的部分 找出程序中不可
  • MMDrawerController(0.6.0) 文档翻译(简介,非API文档)

    Mutual Mobile Drawer Controller 随着使用抽屉效果的应用越来越多 MMDrawerController应运而生 MMDrawerController是一个仅支持侧边抽屉导航的轻量级库 同时库中还提供了定制展现
  • Jacob处理Word文档的方法

    7 4 使用Jacob来处理Word文档 Word或Excel程序是以一种COM组件形式存在的 如果能够在Java中调用Word的COM组件 就能使用它的方法来获取Word文档中的文本信息 目前网上有许多提供这样的工具 7 4 1 Jaco
  • OLE接口详解

    所有 OLE Api 和接口的目的 本页 摘要 详细信息 常规 初始化和内存管理 远程处理 自定义服务 服务注册 DLL 服务器管理 杂项 COM 函数 命名 名字对象 结构化的存储 永久对象 每个事件的通知 统一数据传输 可查看对象 标准
  • 程序员模式

    在我的心中 程序员是一个做事有计划 有思想 具有高超技术 解决能力的艺术家 自己作为一个程序员 自愧不能达到如上的标准 看到过一个程序员曾经这样自嘲 一个只有半瓶子水晃晃荡荡的程序员 这些年来一直从事开发的工作 稀里糊涂跑过许多城市 流浪过
  • 3.9 使用Java的文档注释

    Java支持三种形式的注释 前两种是 和 第三种方式被称为文档注释 它以 开始 以 标志结束 文档注释提供将程序信息嵌入程序的功能 开发者可以使用javadoc工具将信息取出 然后转换为HTML文件 文档注释提供了编写程序文档的便利方式 j
  • ASCII码详解

    ASCII码表 ASCII码大致可以分作三部分組成 第一部分是 ASCII非打印控制字符 第二部分是 ASCII打印字符 第三部分是 扩展ASCII打印字符 第一部分 ASCII非打印控制字符表 ASCII表上的数字0 31分配给了控制字符
  • Spring4.0+Hibernate4.2.整合出现java.lang.ClassNotFoundException: org.hibernate.engine.FilterDefinition

    1 异常 Exception in thread main org springframework beans factory BeanCreationException Error creating bean with name news
  • JavaDoc注释的使用跟导出JavaDoc文档

    1 Javadoc是什么 JavaDoc是Sun公司提供一种从程序源代码中抽取类 方法 成员等注释形成一个和源代码配套的API帮助文档技术 但是需要在编写程序时以一套特定的标签作注释 在程序编写完成 后 通过Javadoc就可以同时形成程序
  • 支付宝API接口开发相关文档以及实例

    支付宝实物即时到账接口 在下载该接口之前 请确定你已经签约了即时到账的服务协议 并且账号已经开通了即时到账的权限 口常见错误问题搜集 http union alipay com alipay zhichi shiwu 商家工具FAQ pdf
  • 串口服务器485转以太网

    串口服务器485转以太网可以将485等串口设备连接到网络中 让这些设备采集的数据发往网络 建立串口和网络的透明传输通道 实现设备联网 用户可以使用组态软件或者自己编写网络通信程序和设备通信 上海卓岚串口服务器可支持虚拟串口协议 使得您也可以
  • 程序员MM一年的工作总结

    11月8号就是 工作 一周年纪念日了 是该对这过去的一年做个总结了 当初来这个公司因为它是第一个递橄榄枝给我的地方 为了尽量少的减少毕业和工作之间的空档时间 就接受了 我在这一年中改变很大 这样的改变是综合的 1 技术 这里所说的技术应该算
  • OA项目软件说明书

    最近写了一个OA项目 主要根据这个软件说明书来编写的 此处省略了封面的一些格式不友好的内容 目 录 1 引言 1 1 目的 1 2 定义 1 3 参考资料 2 软件总体概述 2 1 软件标识 2 1 1 项目名称 2 1 2 产品标识 2
  • ObjectARX中使用非模态对话框的问题(写数据库导致AutoCAD异常问题、刷新显示)

    ObjectARX中使用非模态对话框遇到的两个问题及解决办法 一 写数据库导致AutoCAD异常问题 默认状态下AutoCAD2004是多文档应用程序 系统变量SDI 0 acdbHostApplicationServices gt wor
  • 静态白盒测试-code review

    一 静态白盒测试概述 首先区分软件测试的几个术语 白盒测试 黑盒测试 静态测试 动态测试 白盒测试 也称为透明测试 clear box testing 白盒测试针对逻辑结构进行检查 它允许我们看到程序的内部结构 黑盒测试 black box
  • Elasticsearch学习笔记2:ES核心概念 -- 索引、倒排索引、类型、文档

    一 ES和关系型数据库的对比 Elasticsearch Relational DB 索引 index 数据库 database 类型 types 表 tables 文档 documents 行 rows 字段 fields 列 colum
  • 英语学习对程序员得重要性!

    程序世界的主导语言是英文 编写程序时使用的开发文档和开发工具的帮助文件离不开英文 了解业界的最新动向 阅读技术文章离不开英文 同世界各地编程高手往往也离不开英文 提高英文水平 能大大促进一个程序员的发展 让你有更多的资源 在此 个人总结了几
  • CStatusBar技巧

    一 状态条控制的主要功能 状态条控制 Status Bar Control 比较容易理解 使用起来也比较简单 状态条是位于父窗口底部的一个水平子窗口 它可以被分成多个显示信息的小区域 其MFC中封装的CstatusBarCtrl控制类提供了
  • React 教程及其API接口文档

    React 详细中文开发文档 可以阅读 http reactjs cn react docs tutorial html 英文原文 http facebook github io react 中文论坛 http react china or

随机推荐

  • springboot打包成maven仓库中的sdk

    springboot打包成maven仓库中的sdk 首先将pom文件中的关于该项目继承springboot父项目的依赖去除 再去除一些不相干的依赖 插件也去除 在新项目中导入这个jar sdk 需要新建一个配置类 使用注解扫描这个jar中的
  • 记 ==> 首次使用rabbitMQ优化项目

    昨天刚学习完了rabbitMQ 刚好我的项目有个模块挺符合使用rabbitMQ进行异步处理的 这个模块大概功能是 用户发送的所有帖子都会添加到他的发件箱 当有个新用户关注了他 他发件箱内所有的博客都会被添加到关注他的用户的收件箱里 比如 A
  • CUDA基础介绍

    一 GPU简介 1985年8月20日ATi公司成立 同年10月ATi使用ASIC技术开发出了第一款图形芯片和图形卡 1992年4月ATi发布了Mach32图形卡集成了图形加速功能 1998年4月ATi被IDC评选为图形芯片工业的市场领导者
  • vs2010使用VLD,

    在VS2010项目总使用VLD visual leak detector 进行内存泄露检测 调试时程序无法启动报错 应用程序正常启动失败 0xc0150002 产生原因 VC2003 VC2005 VC2008及其后续版本 对底层最基本的C
  • C语言学习笔记(四)

    1 在编译使用了strcpy scanf等不安全的函数 而报警告和错误 而导致无法编译通过 此时我们有两种解决方案 a 在指定的源文件的开头定义 define CRT SECURE NO WARNINGS 只会在该文件里起作用 b 在项目属
  • 成功解决 git设置http代理 https代理 取消代理

    welcome to my blog 问题 使用hexo搭建博客 执行hexo init时包含git clone的操作 但是使用的是https协议 不是ssh 所以为git设置https代理 但是只设置https代理并不能加速 与此同时 只
  • python socket接收与发送数据编码

    1 服务器端接收数据 1 向服务器端发送16进制数据 3A 0B 12 2 服务器端接收数据为 未转化打印出来为 b x0b x12 格式为字节流 打打印时3A对应ASCII表中的冒号 总结为当没有进行转换时 编译器会根据接收到的十六进制的
  • CA 厂商排名

    1 NDS 2 Irdeto 3 Nagravision 4 Verimatrix 5 Widevine 6 Latens 7 Viaccess 8 Secure Media
  • 关于跑demo遇到的flask mysql navicat 导入包的解决方式

    Q1 导入demo时的第一步 打开pycharm 左上角 之后 点击settings 进入settings后 点击Project下的python interpreter 此时 右侧的python interpreter显示的是no inte
  • ctfshow web14

    题目描述 无 解题思路 这道题比较简单 分值也只有5分 就是一个简单的sql注入 但是这个sql注入的回显你得看它的源代码里才有 但是它把你右击查看源码那个玩意儿给禁了 你需要在你的url前面加view source 才能看到源码 解题过程
  • 数据库结构对比工具 支持 SqlServer ,Oracle,MySql 相互对比同步转换 源代码生成,Word表格生成Model ,文本格式化,差异对比

    数据库结构对比工具 支持 SqlServer Oracle MySql 相互对比同步 QQ群 434053880 有最新版本下载 1 CSDN 下载链接 不过要积分下载 SqlServer Oracle MySql数据库结构相互对比同步 m
  • 注意力机制学习(二)——空间注意力与pytorch案例

    文章目录 一 空间注意力机制简介 二 空间注意力与pytorch代码 三 使用案例 一 空间注意力机制简介 空间注意力的示意图如下 长条的是通道注意力机制 而平面则是空间注意力机制 可以发现 通道注意力在意的是每个特怔面的权重 空间注意力在
  • Spring框架Security(认证)快速上手

    在处理Spring安全框架时 通常可以选择Shiro或者Security 做认证授权加密等 推荐非SpringBoot 使用Shiro SpringBoot项目使用Security 学习网址 Security Shiro 目录 1 Spri
  • BUUCTF WEB [极客大挑战 2019]Secret File

    BUUCTF WEB 极客大挑战 2019 Secret File 启动后效果如下 F12查看源代码
  • unity中的碰撞和触发事件

    首先 unity中两个游戏对象发生碰撞的条件 1 两个游戏对象必须都有Collider碰撞器这个组件 2 至少有一个游戏对象包含刚体组件 3 两个游戏对象有相对运动 还应该知道跟碰撞事件相关的3个函数 void OnColliderEnte
  • 【Python】近似熵,样本熵,模糊熵计算高效版

    文章目录 前言 整体思路 1 近似熵 Approximate Entropy ApEn 1 1 理论基础 1 2 python第三方库实现 1 3 基于多线程numpy矩阵运算实现 2 样本熵 Sample Entropy SampEn 2
  • 在React中使用Typescript

    使用命令创建项目 生成一个全新的 ts react 的模版 可直接使用指令 npm create react app my app template typescript 该模板包含了全套正常运行React所需要的的包和配置 无需再额外手动
  • 若依RuoYi-Vue代码学习一---通用分页处理

    文章目录 一 先运行看看接口到sql 二 来看看若依怎么处理的分页 三 最后回到接口 及其参数返回 一 先运行看看接口到sql 随便找个表格看看 可以看到传入了 分页关键属性 看看debug的日志打印的sql debug 137 gt Pr
  • 小程序酷炫3D登录页源码(泥陶态)

    小程序酷炫3D登录页源码 泥陶态 1 页面效果 登陆页面一般都要酷炫好看一点 这里分享一个泥陶态3D登录页面 泥陶态是结合 3D 设计流行风格而兴起的新形态 设计趋势由拟物风格发展为扁平风格时 去掉了一切表示深度和层叠的效果 虽然视觉上简化
  • android中Manifest.xml中的intent-filter作用

    注意 隐式启动Activity的intent到底发给哪个activity 需要进行三个匹配 一个是action 一个是category 一个是data 可以是全部或部分匹配 同样适用于Service和BroadcastReceiver 下面