- 【java】怎么理解不同对象实例的对象锁是互不干扰的
晨春计
Androidjava
在Java中,synchronized关键字用于实现线程同步,它可以作用于实例方法、静态方法以及代码块。当synchronized应用于实例方法或实例变量时,它创建的是一个对象锁,这个锁是与特定的对象实例关联的。因此,每个对象实例都有其自己的锁。这里的关键点在于,对象锁是绑定到特定对象实例上的。这意味着对于不同的对象实例,即使它们属于同一个类,它们各自拥有独立的对象锁。当一个线程获取了一个对象实例
- Python静态方法@staticmethod和类方法@classmethod
西北小生_
Python静态方法@staticmethod和类方法@classmethod经常出现在类的定义中,二者和常规实例方法之间有什么区别呢?先看例子:classA:cnt=0val=1def__init__(self,cnt=0,val=1):self.val=valA.cnt+=1defnormal_fun(self,x):print(x+self.val)@classmethoddefget_cn
- 麻雀虽小,五脏俱全 - Java工具类库 - Hutool
waiter_chen
Hutool官网:https://www.hutool.cn官方参考文档:https://www.hutool.cn/docsAsetoftoolsthatkeepJavasweet.——Htool特点通过静态方法封装,类函数式语言般,降低学习成本,提高工作效率整合多方用户需求,减少代码搜索成本,避免网络上参差不齐的代码出现导致的bugutil包提供多方公用类和公用工具方法,节省开发封装时间,减少
- 【JAVA入门】Day35 - 方法引用
Clown Piece
JAVA入门javapython排序算法
【JAVA入门】Day35-方法引用文章目录【JAVA入门】Day35-方法引用一、方法引用的分类1.引用静态方法2.引用成员方法2.1引用其他类的成员方法2.2引用本类和父类的成员方法2.3引用构造方法2.4使用类名引用成员方法2.5引用数组的构造方法二、方法引用的例题方法引用就是“把已经有的方法当作函数式接口中抽象方法的方法体”来使用。下面是一个排序方法,它的第二个参数是一个Comparato
- Java基础:单例模式,Spring源码中有哪些单例模式
生活诙谐号
Java基础Spring源码设计模式单例模式javaspring
单例模式是一种常用的软件设计模式,其目的是确保一个类仅有一个实例,并提供一个全局访问点来获取这个唯一实例。在Java中,实现单例模式通常需要遵循以下几个关键原则:私有化构造器:将类的构造器声明为private,以防止外部代码通过new操作符直接创建该类的实例。静态工厂方法:提供一个静态方法(通常称为getInstance()),用于获取单例对象。这个方法负责检查是否已经创建过实例,如果尚未创建,则
- Objective-C 静态方法可以重写吗
赵哥窟
首先来看一段代码#import@interfacePerson:NSObject+(void)pringName:(NSString*)name;@end#import"Person.h"@interfacePerson()@end@implementationPerson+(void)pringName:(NSString*)name{NSLog(@"Person-%@",name);}@end
- Java static关键字(静态变量和静态方法)
Itmastergo
javajvm开发语言
在类中,使用static修饰符修饰的属性(成员变量)称为静态变量,也可以称为类变量,常量称为静态常量,方法称为静态方法或类方法,它们统称为静态成员,归整个类所有。静态成员不依赖于类的特定实例,被类的所有实例共享,就是说static修饰的方法或者变量不需要依赖于对象来进行访问,只要这个类被加载,Java虚拟机就可以根据类名找到它们。调用静态成员的语法形式如下:类名.静态成员注意:static修饰的成
- 类方法、类实例方法和类静态方法(Python)
Qh果壳
python开发语言
目录1.类方法(ClassMethod)2.类实例方法(InstanceMethod)3.类静态方法(StaticMethod)在Python中,类方法、类实例方法和类静态方法是与类相关联的三种不同类型的方法。1.类方法(ClassMethod):类方法是通过装饰器@classmethod来定义的,它的第一个参数是类本身(通常被命名为"cls"),而不是实例。类方法可以通过类名调用,也可以通过实例
- stream流式编程
chenlaida
JAVA8java
文章目录stream流式编程常用的stream三种创建方式Stream的终止操作Collectors具体方法常用方法filtermapgroupBy求和交集,并集,差集flatMappeekdistinctlimitsortedmatch匹配find寻找元素计数和极值stream流式编程常用的stream三种创建方式集合Collection.stream()静态方法Streamof数组Arrays
- JAVA常用设计模式
空你个指针啊
JAVAjava设计模式
1.单例设计模式所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生。具体实现步骤如下:(1)将采用单例设计模式的类的构造方法私有化(采用private修饰)。(2)在其内部产生该类的实例化对象,并将其封装成privatestatic类型。(3)定义一个静态方法返回该类的实例。示例代码如下:classSingleton{private
- 第二十四章 Caché ObjectScript对象特性功能
Cache技术分享
第二十四章CachéObjectScript对象特性功能相对点语法(..)相对点语法(..)提供了一种在当前上下文中引用方法或属性的机制。实例方法或属性的上下文是当前实例。类方法的上下文是在其中实现该方法的类。不能在类方法中使用相对点语法来引用属性或实例方法,因为它们需要实例上下文。注意:类方法实际就是静态方法。例如,假设有一个类型为%Integer的Bricks属性:PropertyBricks
- 2.工厂相关(简单工程、工厂方法、抽象工厂)——设计模式入门系列
胡耀超
设计模式设计模式java开发语言
工厂模式是一种创建型设计模式,目的是将对象的创建过程与其使用过程分离,从而提高代码的可维护性、扩展性和灵活性。工厂模式主要包括三种常见的形式:简单工厂模式、工厂方法模式、和抽象工厂模式。每种模式都有各自的特点、应用场景及优缺点。1.简单工厂模式(SimpleFactoryPattern)概述简单工厂模式又称为静态工厂方法模式,是由一个工厂类决定创建哪一种产品类的实例。客户端通过工厂类的静态方法创建
- java xml转json数组_如何在Java中将XML转换为JSON数组?
weixin_39850143
javaxml转json数组
JSON是轻量级的数据交换格式,JSON的格式类似于键值对。我们可以使用org.json.XML类将XML转换为JSON数组,这提供了一个静态方法XML.toJSONObject()来将XML转换为JSON数组。语法publicstaticJSONObjecttoJSONObject(java.lang.Stringstring)throwsJSONException在下面的示例中,将XML转换为
- Java面向对象与接口
怡晗★
Java基础知识java开发语言
目录Java面向对象与接口接口介绍定义接口和实现类接口中的方法抽象方法默认方法静态方法成员变量接口和抽象类的区别Java面向对象与接口接口介绍在Java中,除了有抽象类,还有与抽象类类似的特殊类型,称为接口,接口有以下几种特点:实现了接口,必须有对应的实现类,因为接口本身不可以实例化对象接口中的成员方法在JDK7及之前只有抽象方法,即publicabstract,如果不显式写publicabstr
- 《Effective Java》读书笔记-1
洵乙
《EffectiveJava》读书笔记java开发语言
第一章引言书里写道:“本书不是针对初学者的,而是假设读者已经熟悉Java编程语言”本书大部分内容不讨论性能,而是关心如何编写出清晰、正确、可用、健壮、灵活和可维护的程序。第二章创建和销毁对象第1条【用静态工厂方法代替构造器】举例:有一个类People,当我们需要一个People的对象时,一般会用Peoplepeople=newPeople();本书建议在People类中添加一个静态方法:publi
- 13 jdk1.5.0的新特性
collman
Java基础jdk设计模式androidstringinterfacejava
----------------------android培训、java培训、期待与您交流!----------------------Jdk1.5.0的一些新特性总结1静态方法的导入在jad1.5.0之后,支持静态方法使用import语句进行导入,如:importjava.lang.Math.max;使用时直接使用max方法即可,这样省掉了Math.。StaticInstance.java:im
- Lambda表达式与函数式接口
知昂可
Lambda表达式Lambdajava
Lambda表达式与函数式接口1.函数式接口1.1什么是函数式接口函数式接口是指只有一个抽象方法的接口(Object的public方法除外。)。这种接口可以使用Lambda表达式实现,从而实现函数式编程的特性。另外函数式接口可以有默认方法和静态方法。建议:在定义函数式接口时,建议标记@FunctionalInterface注解,虽然不标记也不会影响接口的功能,但加上这个注解可以帮助编辑器检测是否错
- GreenDao_基本配置和使用
这个Bug有点难搞
androidandroidandroidstudio数据库
核心类介绍1.DaoMaster它持有数据库对象(SQLiteDataBase),并且提供了创建和删除表的静态方法。有两个内部类,OpenHelper、DevOpenHelper实现SQLiteOpenHelper,用来创建数据库表结构。2.DaoSession:DaoSession用来管理Dao对象,可通过get方法,获取XXDao对象,进行对表的基本操作。DaoSession本身也提供了一些基
- 手写Promise(前端面试题)第二篇 ·实例方法与静态方法
DT——
手写promise前端javascript面试
目录1.实例方法catch2.finally方法3.MyPromise.resolve()4.MyPromise.reject()5.MyPromise.race()6.MyPromise.all()7.MyPromise.allSettled()8.MyPromise.any()总结1.实例方法catch在promise中,每一个promise实例都有一个catch方法,该方法接收一个回调函数,
- JAVA Guava排序器Ordering原理代码
邓家少爷
一创建排序器排序器:可以用来为构建复杂的比较器,以完成集合排序的功能:本质上来说,Ordering实例无非就是一个特殊的Comparator实例。Ordering把很多基于Comparator的静态方法(如Collections.max)包装为自己的实例方法(非静态方法),并且提供了链式调用方法,来定制和增强现有的比较器//创建排序器@TestpublicvoidcreateOreing(){//
- java中简单工厂,工厂方法和抽象工厂区别和联系
gb4215287
javajava开发语言
在Java设计模式中,简单工厂(SimpleFactory)、工厂方法(FactoryMethod)和抽象工厂(AbstractFactory)都是创建型设计模式的一部分,用于处理对象的实例化过程。它们各自有其特点、应用场景以及相互之间的联系。下面是对这三种模式的区别与联系的概述:简单工厂定义:简单工厂模式由一个类负责创建所有实例。它通常包含一个静态方法,根据传入的参数返回不同类的实例。优点:客户
- 187_陈易奇_Java核心编程
陈易奇
java
第一周笔记一、源代码中重要组成元素public表示访问说明符,表面该类是一个公共类,可以控制其他对象对类成员的访问。class用于声明一个类,其后跟的字符串是类的名称。static表示该方法是一个静态方法,允许调用main()方法,无需创建类的实例。void表示main()方法没有返回值。main()方法是所有程序的入口,最先开始执行。“/””/”之间的内容和以”//”开始的内容为java程序的解
- Python进阶————面向对象高级
记得多吃点
Python进阶知识python开发语言
面向对象高级前言一、继承1.1.单继承1.2.多继承1.3.方法重写1.4.子类调用父类方法1.4.1父类名.父类方法名()1.4.2super().父类方法名()1.5.多层继承二、封装2.1.私有属性2.2.私有方法三、多态3.1.多态的条件3.2.多态的定义四、面向对象的其他特性4.1.对象属性4.2.类属性4.3.类方法4.4.静态方法总结前言接下来我们学习Python中的继承、封装、多态
- 泛型相关内容
AngeliaXue
开发语言java
1.什么是泛型泛型就是定义一种模板,既实现了编写一次,万能匹配,又通过编译器保证了类型安全。2.使用泛型1)使用泛型时,把泛型参数替换为需要的class类型,不指定时默认为Object。2)可以在接口中定义泛型类型,实现此接口的类必须实现正确的泛型。3.编写泛型1)静态方法的方法参数和返回类型不能使用类定义的泛型,但是它可以在static单独定义泛型,并使用。2)多个泛型类型希望不总是存储相同类型
- C#进阶——各种方法特性
Echo_Lee0
C#c#
静态方法特点:1、生命周期一旦创建–应用结束才会结束2、全局3、效率高用处:用户登录信息、系统配置信息、系统设置、SQLHelper注意:静态的东西创建多了占用内存会很大,不是必要的情况不要创建静态的对象调用:静态方法中调用非静态方法时,不可以直接调用,需要把所在类初始化以后再调用Form1form1=newForm1();form1.Test();构造方法用处:初始化对象或者初始化一些数据特点:
- Java-List分割工具类
ZHOU_VIP
MACjava
为了实现列表分割功能,以便于后续进行自定义多线程分批执行,我们可以创建一个工具类ListSplitter,它包含一个静态方法splitList,该方法接收一个列表和一个批次大小,并返回一个分割后的列表集合。importjava.util.ArrayList;importjava.util.List;publicclassListSplitter{/***将列表分割成多个批次。**@param列表元
- Java 中Lambada表达式中双冒号 ::使用总结
何以解忧,唯有..
java开发语言
一、前言双冒号运算操作符是类方法的句柄,lambda表达式的一种简写表达式:person->person.getName();可以替换成:Person::getName表达式:()->newHashMaplist=Arrays.asList("a","b","c");//静态方法引用ClassName::methodNamelist.forEach(Colon::print);//上一行等价于//
- js字符串方法速览---字符串的静态方法,实例方法和属性合集,各包含一个示例
I_am_shy
javascript前端开发语言
tips:本文仅作为查找和基本使用的展示,需要深入了解这些方法的使用请参考:String-JavaScript|MDN(mozilla.org)可以通过目录快速锁定需要查找的方法和查看它的使用目录tip:新建一个字符串字符串实例属性字符串静态方法String.fromCharCode(...nums)String.fromCodePoint(...nums)String.raw({raw:arr}
- Java-List分批多线程执行
ZHOU_VIP
MACjava开发语言
为了实现列表分批多线程执行,并返回结果,默认一次执行100个元素,我们可以创建一个工具类ListBatchExecutor,它包含一个静态方法executeInBatches,该方法接收一个列表、一个处理每个元素的函数以及一个自定义线程池,并利用CompletableFuture来并行处理这些元素。ListBatchExecutor.javaimportjava.util.ArrayList;im
- 单元测试框架PowerMock
yzh_1346983557
Spring测试单元测试PowerMock
目录一、为何用?二、powermock的使用1.引入依赖2.单测代码1.普通public方法2.模拟构造器和final方法3.模拟static静态方法4.局部的final、private方法模拟其它Springboot集成测试:一、为何用?Mockito是一个针对Java的单元测试模拟框架,它与EasyMock和jMock很相似,都是为了简化单元测试过程中测试上下文(或者称之为测试驱动函数以及桩函
- 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