- Android音视频开发实战系列教程
Stark T
android音视频
Android音视频开发实战系列教程指南在这篇文章中,我们将通过一个逐步流程,帮助刚入行的小白学习如何进行Android音视频开发。本教程会展示实施的步骤、所需的代码示例及其注释,最后还包括旅行图和类图来进一步帮助理解。开发流程我们可以将音视频开发的整个流程分为以下几个步骤。请看下表:步骤描述1.环境搭建安装所需的软件和开发工具2.项目创建创建Android项目并导入其他依赖库3.引入音视频SDK
- Android平台FFmpeg多媒体处理实战
雲明
本文还有配套的精品资源,点击获取简介:FFmpeg在Android平台为开发者提供强大的音视频处理能力,涵盖编解码、容器格式解析、软硬解码切换、音频重采样和视频转换等关键功能。本项目介绍如何集成FFmpeg到Android应用,包括编译库、解封装、解码、硬解支持、音频重采样、视频转换和测试代码的使用,为音视频应用开发提供完整流程的实践指南。1.Android平台上FFmpeg的应用和重要性1.1F
- 音视频:11.Shell脚本-动手编译FFmpeg
eastRiseWm
音视频
Shell脚本-动手编译FFmpeg1.Cmake交叉编译Android动态库2.配置NDK环境2.1NDK中交叉编译工具的变化2.1.1.交叉编译工具位置的变化:3.手写FFmpeg编译脚本4.编译遇到的问题5.如何适配so框架6.编译参数传递7.运行调试音频解码避坑指南1.Cmake交叉编译Android动态库交叉编译:Linux上编译Android的sondk16的以上版本自带交叉编译工具链
- 二、C#做上位机常用英语单词
飞翔的老宫本
c#visualstudiowindows
1VisualStudio可视化"工作室":编写程序的集成开发环境,简称VS,它可以写代码,编译代码,调试代码和发布程序。2dot点:.NET通常读作dotNet是标准的3Net网络:常说的.net读作dotnet,表示网络开发平台4Sharp锋利的:C#读作CSharp,表示这是开发语言中的一个利器5Framework框架:.NETFramework为我们开发的各种程序提供了各种库,节省开发时间
- 华为 MindStudio 安装指南
丰年稻香
人工智能python人工智能
1.MindStudio介绍华为MindStudio是一款集成开发环境(IDE),用于AscendAI处理器的开发调试。它支持模型训练、推理、算子开发、性能优化等AI任务,并依赖CANN(ComputeArchitectureforNeuralNetworks)作为计算架构基础。本指南介绍如何在KunLunG2280服务器上安装MindStudio,包括环境准备、依赖安装、CANN安装及MindS
- 【音视频】ffmpeg android端调试指南
MooMLu
音视频ffmpegandroid
背景:本文旨在Android端导入和调试ffmpeg使用,作为工具文档简化初次入门使用难度。下载FFmpeg源码:gitclonehttps://github.com/FFmpeg/FFmpeg.git编译FFmpeg源码:创建Android端编译脚本:#!/bin/bashAPI=21NDK=/Users/admin/Downloads/android-ndk-r21ePREBUILT=$NDK
- 在VS Code中渲染 Markdown 并保存为 PDF
AndrewHZ
pdf
在VisualStudioCode(VSCode)中渲染Markdown并保存为PDF,可以通过以下步骤实现。提供两种常用方法,选择适合你的方案:方法一:使用插件直接导出(推荐)1.安装必要插件MarkdownPreviewEnhanced(增强预览)提供强大的Markdown渲染和导出功能。在VSCode扩展商店搜索并安装。MarkdownPDF(直接导出为PDF)支持一键将Markdown文件
- echarts 饼状图 label 字体设置
weixin_45907435
echarts前端javascript
1、给label按需设置样式,在series的label中用formatter格式化内容,在rich中设置样式option={tooltip:{trigger:'axis'},legend:{orient:'vertical',top:'center',right:'3%',itemWidth:10,//图例icon与name之间的距离itemHeight:5,//icon大小icon:'circ
- 【实测】用全志A733平板搭建一个端侧Deepseek算力平台
小文哥嵌入式开发
嵌入式人工智能AI编程
随着DeepSeek的蒸馏技术的横空出世,端侧SoC芯片上运行大模型成为可能。那么端侧芯片跑大模型的效果如何呢?本文将在全志A733芯片平台上部署一个DeepSeek-R1:1.5B模型,并进行实测效果展示。端侧平台环境设备:全志A733平板系统:Android15DDR:8GBLPDDR5@2400MHzFlash:128GBUFS3.0测试模型:Deepseek-R1-Distill-Qwen
- Android技术-修改SO导出符号
Tasfa
androidjavaso导出函数
背景经常在使用第三方SDK的时候会莫名其妙报错,其中最常见的一种就是SO符号冲突,比如libA.so静态链接了libC.a,而libB.so动态链接了libC.so。这样便会导致符号冲突。又或者在使用不同版本的动态库,也会造成符号冲突。报错案例案例1DEBUG:Abortmessage:'terminatingwithunexpectedexceptionoftypestd::bad_cast:s
- appium环境搭建
weixin_43516809
appiumappuim
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言记录手机自动化环境搭建学习过程一、jdk安装配置(省略)二、AndroidSDK安装配置三、python环境安装配置四、pycharm开发工具安装五、安装node.js六、appium安装1.安装2.检查appium环境是否搭建成功七、appium工作原理总结前言记录手机自动化环境搭建学习过程一、jdk安装配置(省略)cm
- 使用 Visual Studio 2022和C#如何打包apk包
战族狼魂
C#visualstudioc#ide
使用C#打包成APK包通常是为了开发Android应用程序。你可以使用Xamarin或.NETMAUI(Multi-platformAppUI)来开发和打包Android应用。以下是详细的步骤来创建和打包一个C#项目成APK包。目录使用Xamarin.Forms开发和打包APK1.安装必需的软件2.创建Xamarin.Forms项目3.编写应用程序代码4.配置Android项目5.连接设备或启动A
- VS Code 中如何运行Java SpringBoot的项目
战族狼魂
javaSpringbootjavaspringboot开发语言
在VisualStudioCode(VSCode)中运行JavaSpringBoot项目需要以下步骤:目录1.安装必要的扩展2.配置环境3.创建或导入SpringBoot项目使用SpringInitializr创建新项目导入现有项目4.配置VSCode配置调试环境5.运行和调试项目通过命令行运行通过SpringBootDashboard运行通过调试模式运行6.使用SpringBootActuato
- Android Studio 报错:Could not get unknown property ‘kotlin_version‘ for object of type
太难我不会
大数据
导入项目,sync的时候报错:Aproblemoccurredevaluatingproject':app'.>Couldnotgetunknownproperty'kotlin_version'forobjectoftypeorg.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.出现这个问题,我的思路
- android 安装第三方apk自动赋予运行时权限
通信侠
android_systemandroid
摘要:行业机使用场景点击运行时权限很麻烦,而随着android的演进,对于权限的管控越发严格。故本文通过对系统的修改实现第三方app在运行时直接获取全部权限。通过属性ro.perms.force_grant控制功能开关。Index:frameworks/base/services/core/java/com/android/server/pm/permission/Permission.java=
- Android Audio焦点——音频焦点基础(一)
c小旭
AndroidAudioandroidAudio开发
一、概述1、音频焦点官方说明两个或两个以上的Android应用可同时向同一输出流播放音频。系统会将所有音频流混合在一起。虽然这是一项出色的技术,但却会给用户带来很大的困扰。为了避免所有音乐应用同时播放,Android引入了“音频焦点”的概念。一次只能有一个应用获得音频焦点。当您的应用需要输出音频时,它需要请求获得音频焦点,获得焦点后,就可以播放声音了。不过,在您获得音频焦点后,您可能无法将其一直持
- Android Studio报错:Could not get unknown property ‘kotlin_version‘
zhangphil
Androidandroid
AndroidStudio报错:Couldnotgetunknownproperty'kotlin_version'报错内容:Causedby:groovy.lang.MissingPropertyException:Couldnotgetunknownproperty'kotlin_version'forobjectoftypeorg.gradle.api.internal其中一个解决方案,把:
- 【Audio】Android 10车载音频路由
小羊子说
车载开发之AndroidAudioandroid音视频
音频路由在Android10中,car_audio_configuration.xml取代了car_volumes_groups.xml和IAudioControl.getBusForContext。新的配置文件定义了一个音频区列表。每个音频区都拥有一个或多个音量组及其关联设备,而每台设备都具有应在该音频区内进行路由的上下文。所有上下文都必须在每个音频区内表示。配置音频路由音频政策文件通常位于ve
- Android studio:如何在同一个页面显示多个fragment
剑客狼心
androidstudioandroidide
家母罹患肝癌,可在水滴筹页面查看详情实现一个简单的效果:创建TestOneFragmentpublicclassTestOneFragmentextendsFragment{@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){//使用一个简单的布局文件
- [Android Studio]SQLScout插件安装破解
weixin_33755847
移动开发数据库开发工具
以下内容为原创,欢迎转载,转载请注明来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5972138.html[AndroidStudio]SQLScout插件安装破解0.写在前面想当初很长一段时间内不想用AndroidStudio而喜欢用IntellijIDEA(旗舰版)其中一个原因就是因为IntellijIDEA(旗舰版)自带DatabaseExp
- 【原创】Android Studio Ladybug 中Gradle配置
赵庆明老师
Androidandroidstudioandroidide
使用AndroidStudio创建项目后,由于需要下载的一下文件在国外,加上网速的问题,以及防火墙的问题,不少文件难以下载。常常导致项目创建后,要等很长时间,各种折腾,结果一个demo都跑不起来。经过几天的探索,没在AS中发现比较好的配置方法。本打算逆向修改AS中的程序文件,发现太费事。接下来找到了AS的源码,打算编译一个来替换,一看80多G,头都大了。于是退而求其次,选择在项目配置文件中解决。具
- Android studio 打包 uni App
前端小小小学生
uni-app前端androiduni-appandroidstudio
Androidstudio打包uniAppHBuilderX本身有原生App云打包功能,本身没什么需求可以直接使用,如果需要多次打包,云打包每次链接只能提供5次下载机会,而且要时间排队打包,所以学习了一下Androidstudio工具打包,下面是使用方法,仅供参考:1.安装Androidstudio下载Androidstudio下载地址:http://www.android-studio.org/
- Android Studio系列讲解之UI开发的布局
彬sir哥
Androidkotlin入门到进阶系列讲解androidstudiokotlinUI布局
<<返回总目录文章目录一、常用控件的使用方法1、TextView2、Button3、EditText4、ImageView二、详细2种基本布局1、LinearLayout2、RelativeLayout三、系统控件不够用?创建自定义控件1、引入布局2、创建自定义控件一、常用控件的使用方法Android给我们提供了大量的UI控件,合理地使用这些控件就可以非常轻松地编写出相当不错的界面首先新建一个UI
- Android Studio增量包升级方法
慈眉善目张先森
Android小记Androidstudio增量更新
AndroidStudio增量包升级方法由于外网的限制,as的自动升级基本是可以抛弃了,这里可以使用增量包升级,你要知道你的Androidstudio版本,还有下载增量包的资源查看你的版本Build为你的版本号,我这里是最新的,已经更新过的,这里的版本号后面有用;获取增量包获取增量版本号下载该文件,然后里面内容如下如图,你知道你的版本和需要升级到的版本的话,你就可以拼出你需要下载的增量包的地址,h
- android studio优化编译速度
chenhuakang
安卓优化androidstudioandroidgradle
优化步骤1.优化gradle配置:在项目根目录创建一个gradle.properties文件#开启gradle并行编译,开启daemon,调整jvm内存大小org.gradle.daemon=trueorg.gradle.configureondemand=trueorg.gradle.parallel=trueorg.gradle.jvmargs=-Xmx4096m-XX:MaxPermSize
- 2024.1.2版本Android Studio gradle下载超时问题处理
粤M温同学
Androidandroidstudioandroid
一、问题背景在项目的根build.gradle里面配置了以下地址后,依旧下载gradle包失败,平常如果出现第三方库或者gradle下载失败,配置以下地址,一般可以下载成功maven{url'https://maven.aliyun.com/repository/public'}maven{url'https://maven.aliyun.com/nexus/content/groups/publ
- 【原创】Android Studio 中好用的翻译插件
赵庆明老师
Androidandroidstudioandroidide
在使用AndroidStudio的时候,且不说英文界面,在编写代码的时候遇到的文档也是英文的,如果英语基础不过关,这个软件就太好了。名称很简单:Translation,由Yii.Guxing开发,目前800多次安装。https://plugins.jetbrains.com/plugin/8579-translation在AndroidStudio中打开设置\插件,搜索Translation即可,
- Visual Studio 中的键盘快捷方式大全
一岁就可帅-
经验分享visualstudio计算机外设c语言开发语言经验分享笔记
VisualStudio中的键盘快捷方式大全官方版VisualStudio中的键盘快捷方式大全官方版生成:常用快捷方式调试:常用快捷方式编辑:常用快捷方式文件:常用快捷方式项目:常用快捷方式重构:常用快捷方式工具:常用快捷方式视图:常用快捷方式窗口:常用快捷方式生成:常用快捷方式命令键盘快捷键命令ID生成解决方案Ctrl+Shift+B生成.生成解决方案取消Ctrl+Break生成.取消编译Ctr
- Visual Studio 2019专业版密匙
@hdd
杂记VisualStudio2019专业版激活密钥软件激活
收集到的一些vs2019专业版密匙,总有一个适合你(ps:我用的第一个)NYWVH-HT4XC-R2WYW-9Y3CM-X4V3YBF8Y8-GN2QH-T84XB-QVY3B-RC4DF
- 销售易、极兔、珍客CRM:产品功能特色与企业适用性分析
程序员机器学习人工智能
销售易CRM产品功能移动化与社交化:销售易CRM支持iOS、Android等主流操作系统,销售人员可以随时随地访问客户信息、更新销售进度、创建任务等。同时,它还具备社交化功能,能够整合企业内部的社交网络,促进员工之间的协作与沟通。AI与大数据驱动:销售易CRM融合了人工智能和大数据技术,通过智能数据分析,帮助企业洞察客户行为和需求,预测销售趋势。例如,AI可以对客户数据进行深度挖掘,识别出高价值客
- Algorithm
香水浓
javaAlgorithm
冒泡排序
public static void sort(Integer[] param) {
for (int i = param.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
int current = param[j];
int next = param[j + 1];
- mongoDB 复杂查询表达式
开窍的石头
mongodb
1:count
Pg: db.user.find().count();
统计多少条数据
2:不等于$ne
Pg: db.user.find({_id:{$ne:3}},{name:1,sex:1,_id:0});
查询id不等于3的数据。
3:大于$gt $gte(大于等于)
&n
- Jboss Java heap space异常解决方法, jboss OutOfMemoryError : PermGen space
0624chenhong
jvmjboss
转自
http://blog.csdn.net/zou274/article/details/5552630
解决办法:
window->preferences->java->installed jres->edit jre
把default vm arguments 的参数设为-Xms64m -Xmx512m
----------------
- 文件上传 下载 解析 相对路径
不懂事的小屁孩
文件上传
有点坑吧,弄这么一个简单的东西弄了一天多,身边还有大神指导着,网上各种百度着。
下面总结一下遇到的问题:
文件上传,在页面上传的时候,不要想着去操作绝对路径,浏览器会对客户端的信息进行保护,避免用户信息收到攻击。
在上传图片,或者文件时,使用form表单来操作。
前台通过form表单传输一个流到后台,而不是ajax传递参数到后台,代码如下:
<form action=&
- 怎么实现qq空间批量点赞
换个号韩国红果果
qq
纯粹为了好玩!!
逻辑很简单
1 打开浏览器console;输入以下代码。
先上添加赞的代码
var tools={};
//添加所有赞
function init(){
document.body.scrollTop=10000;
setTimeout(function(){document.body.scrollTop=0;},2000);//加
- 判断是否为中文
灵静志远
中文
方法一:
public class Zhidao {
public static void main(String args[]) {
String s = "sdf灭礌 kjl d{';\fdsjlk是";
int n=0;
for(int i=0; i<s.length(); i++) {
n = (int)s.charAt(i);
if((
- 一个电话面试后总结
a-john
面试
今天,接了一个电话面试,对于还是初学者的我来说,紧张了半天。
面试的问题分了层次,对于一类问题,由简到难。自己觉得回答不好的地方作了一下总结:
在谈到集合类的时候,举几个常用的集合类,想都没想,直接说了list,map。
然后对list和map分别举几个类型:
list方面:ArrayList,LinkedList。在谈到他们的区别时,愣住了
- MSSQL中Escape转义的使用
aijuans
MSSQL
IF OBJECT_ID('tempdb..#ABC') is not null
drop table tempdb..#ABC
create table #ABC
(
PATHNAME NVARCHAR(50)
)
insert into #ABC
SELECT N'/ABCDEFGHI'
UNION ALL SELECT N'/ABCDGAFGASASSDFA'
UNION ALL
- 一个简单的存储过程
asialee
mysql存储过程构造数据批量插入
今天要批量的生成一批测试数据,其中中间有部分数据是变化的,本来想写个程序来生成的,后来想到存储过程就可以搞定,所以随手写了一个,记录在此:
DELIMITER $$
DROP PROCEDURE IF EXISTS inse
- annot convert from HomeFragment_1 to Fragment
百合不是茶
android导包错误
创建了几个类继承Fragment, 需要将创建的类存储在ArrayList<Fragment>中; 出现不能将new 出来的对象放到队列中,原因很简单;
创建类时引入包是:import android.app.Fragment;
创建队列和对象时使用的包是:import android.support.v4.ap
- Weblogic10两种修改端口的方法
bijian1013
weblogic端口号配置管理config.xml
一.进入控制台进行修改 1.进入控制台: http://127.0.0.1:7001/console 2.展开左边树菜单 域结构->环境->服务器-->点击AdminServer(管理) &
- mysql 操作指令
征客丶
mysql
一、连接mysql
进入 mysql 的安装目录;
$ bin/mysql -p [host IP 如果是登录本地的mysql 可以不写 -p 直接 -u] -u [userName] -p
输入密码,回车,接连;
二、权限操作[如果你很了解mysql数据库后,你可以直接去修改系统表,然后用 mysql> flush privileges; 指令让权限生效]
1、赋权
mys
- 【Hive一】Hive入门
bit1129
hive
Hive安装与配置
Hive的运行需要依赖于Hadoop,因此需要首先安装Hadoop2.5.2,并且Hive的启动前需要首先启动Hadoop。
Hive安装和配置的步骤
1. 从如下地址下载Hive0.14.0
http://mirror.bit.edu.cn/apache/hive/
2.解压hive,在系统变
- ajax 三种提交请求的方法
BlueSkator
Ajaxjqery
1、ajax 提交请求
$.ajax({
type:"post",
url : "${ctx}/front/Hotel/getAllHotelByAjax.do",
dataType : "json",
success : function(result) {
try {
for(v
- mongodb开发环境下的搭建入门
braveCS
运维
linux下安装mongodb
1)官网下载mongodb-linux-x86_64-rhel62-3.0.4.gz
2)linux 解压
gzip -d mongodb-linux-x86_64-rhel62-3.0.4.gz;
mv mongodb-linux-x86_64-rhel62-3.0.4 mongodb-linux-x86_64-rhel62-
- 编程之美-最短摘要的生成
bylijinnan
java数据结构算法编程之美
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class ShortestAbstract {
/**
* 编程之美 最短摘要的生成
* 扫描过程始终保持一个[pBegin,pEnd]的range,初始化确保[pBegin,pEnd]的ran
- json数据解析及typeof
chengxuyuancsdn
jstypeofjson解析
// json格式
var people='{"authors": [{"firstName": "AAA","lastName": "BBB"},'
+' {"firstName": "CCC&
- 流程系统设计的层次和目标
comsci
设计模式数据结构sql框架脚本
流程系统设计的层次和目标
- RMAN List和report 命令
daizj
oraclelistreportrman
LIST 命令
使用RMAN LIST 命令显示有关资料档案库中记录的备份集、代理副本和映像副本的
信息。使用此命令可列出:
• RMAN 资料档案库中状态不是AVAILABLE 的备份和副本
• 可用的且可以用于还原操作的数据文件备份和副本
• 备份集和副本,其中包含指定数据文件列表或指定表空间的备份
• 包含指定名称或范围的所有归档日志备份的备份集和副本
• 由标记、完成时间、可
- 二叉树:红黑树
dieslrae
二叉树
红黑树是一种自平衡的二叉树,它的查找,插入,删除操作时间复杂度皆为O(logN),不会出现普通二叉搜索树在最差情况时时间复杂度会变为O(N)的问题.
红黑树必须遵循红黑规则,规则如下
1、每个节点不是红就是黑。 2、根总是黑的 &
- C语言homework3,7个小题目的代码
dcj3sjt126com
c
1、打印100以内的所有奇数。
# include <stdio.h>
int main(void)
{
int i;
for (i=1; i<=100; i++)
{
if (i%2 != 0)
printf("%d ", i);
}
return 0;
}
2、从键盘上输入10个整数,
- 自定义按钮, 图片在上, 文字在下, 居中显示
dcj3sjt126com
自定义
#import <UIKit/UIKit.h>
@interface MyButton : UIButton
-(void)setFrame:(CGRect)frame ImageName:(NSString*)imageName Target:(id)target Action:(SEL)action Title:(NSString*)title Font:(CGFloa
- MySQL查询语句练习题,测试足够用了
flyvszhb
sqlmysql
http://blog.sina.com.cn/s/blog_767d65530101861c.html
1.创建student和score表
CREATE TABLE student (
id INT(10) NOT NULL UNIQUE PRIMARY KEY ,
name VARCHAR
- 转:MyBatis Generator 详解
happyqing
mybatis
MyBatis Generator 详解
http://blog.csdn.net/isea533/article/details/42102297
MyBatis Generator详解
http://git.oschina.net/free/Mybatis_Utils/blob/master/MybatisGeneator/MybatisGeneator.
- 让程序员少走弯路的14个忠告
jingjing0907
工作计划学习
无论是谁,在刚进入某个领域之时,有再大的雄心壮志也敌不过眼前的迷茫:不知道应该怎么做,不知道应该做什么。下面是一名软件开发人员所学到的经验,希望能对大家有所帮助
1.不要害怕在工作中学习。
只要有电脑,就可以通过电子阅读器阅读报纸和大多数书籍。如果你只是做好自己的本职工作以及分配的任务,那是学不到很多东西的。如果你盲目地要求更多的工作,也是不可能提升自己的。放
- nginx和NetScaler区别
流浪鱼
nginx
NetScaler是一个完整的包含操作系统和应用交付功能的产品,Nginx并不包含操作系统,在处理连接方面,需要依赖于操作系统,所以在并发连接数方面和防DoS攻击方面,Nginx不具备优势。
2.易用性方面差别也比较大。Nginx对管理员的水平要求比较高,参数比较多,不确定性给运营带来隐患。在NetScaler常见的配置如健康检查,HA等,在Nginx上的配置的实现相对复杂。
3.策略灵活度方
- 第11章 动画效果(下)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
- FAQ - SAP BW BO roadmap
blueoxygen
BOBW
http://www.sdn.sap.com/irj/boc/business-objects-for-sap-faq
Besides, I care that how to integrate tightly.
By the way, for BW consultants, please just focus on Query Designer which i
- 关于java堆内存溢出的几种情况
tomcat_oracle
javajvmjdkthread
【情况一】:
java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环; 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: <jvm-arg>-Xms3062m</jvm-arg> <jvm-arg>-Xmx
- Manifest.permission_group权限组
阿尔萨斯
Permission
结构
继承关系
public static final class Manifest.permission_group extends Object
java.lang.Object
android. Manifest.permission_group 常量
ACCOUNTS 直接通过统计管理器访问管理的统计
COST_MONEY可以用来让用户花钱但不需要通过与他们直接牵涉的权限
D