- JavaScript 获取 URL 中参数值的详解
褕湘347103
javascript前端开发语言
JavaScript获取URL中参数值的详解1.了解URL参数2.使用URLSearchParams获取参数值2.1什么是URLSearchParams?2.2示例代码2.3优缺点3.使用正则表达式获取参数值3.1示例代码3.2分析4.自定义解析函数4.1示例代码4.2分析5.小结与注意事项在开发Web应用时,我们经常需要从URL中提取参数值,比如获取用户的查询条件、跟踪统计信息等。本文将详细介绍
- 常见框架漏洞:Thinkphp(TP)篇
与神明画鸭
Thinkphptp漏洞
简介ThinkPHP(简称TP)是一款流行的国产开源PHP框架,遵循MVC(Model-View-Controller)设计模式,以简洁、高效、灵活著称,广泛应用于国内中小型Web项目开发。Thinkphp5x远程命令执行及getshell原理rce过程打开网站?s=/Index/\think\app/invokefunction&function=call_user_func_array&var
- Web安全之命令执行getshell
Shadow_143
phpshellweb安全网络安全
命令执行漏洞简介原因应用未对用户输入做严格得检查过滤,导致用户输入得参数被当成命令来执行。危害1.继承Web服务程序的权限去执行系统命令或读写文件2.反弹shell,获得目标服务器的权限3.进一步内网渗透远程代码执行因为业务需求,在PHP中有时需要调用一些执行命令的函数,如:eval()、assert()、preg_replace()、create_function()等,如果存在一个使用这些函数
- 数据库命令执行Getshell
amd6700k
渗透测试
Access导出Access可导出xxx等文件需要配合解析漏洞createtablecmd(avarchar(50));insertintocmd(a)values('一句话木马')#一句话木马如:select*into[a]in'e:\web\webshellcc\1.asa;x.xls''excel4.0;'fromcmddroptablecmd菜刀直连https://www.xxx.com/
- Angular应用的多阶段构建与Docker
t0_54program
angular.jsjavascript前端个人开发
在现代Web开发中,容器化技术已经成为交付和部署应用程序的标准实践之一。特别是对于Angular应用,利用Docker的多阶段构建(Multi-StageBuild)可以大大简化开发流程和优化生产环境中的镜像大小。今天,我们将探讨如何为Angular应用设置一个有效的Docker多阶段构建过程。目录结构首先,让我们看看一个典型的项目目录结构:.├──app├──docker-compose.yam
- MySQL 设置允许远程连接完整指南:安全与效率并重
设计师晏军
mysql安全数据库
一、为什么需要远程连接MySQL?在分布式系统架构中,应用程序与数据库往往部署在不同服务器。例如:Web服务器(如Nginx+PHP)需要连接独立的MySQL数据库数据分析师通过BI工具直连生产库多服务器集群间的数据同步但直接开放远程连接存在安全风险,需遵循最小权限原则。本指南将分步讲解安全开启远程访问的方法。二、基础配置步骤(以MySQL8.0为例)2.1修改MySQL绑定地址默认情况下MySQ
- Session模拟登录与退登
代码续发
java学习java
一、基本结构页面登录的网页页面表单提交给LoginServlet处理Title/loginServlet"method="post">名称:密码:消息提示${msg}//EL表达式,显示servlet中传递的登录失败信息LoginServlet登录登录成功转发到user.jsp页面,显示用户信息。登录失败,转发到login.jsp页面,并显示登录失败信息。packagenet.xdclass.we
- http 和 https
weixin_44356698
前端面试2025前端
1.简要介绍HTTP和HTTPSHTTP:HTTP(HyperTextTransferProtocol)是用于在Web浏览器和服务器之间传输超文本(如HTML)的应用层协议。它是无状态的,意味着每个请求都是独立的,服务器不会保留之前请求的任何信息。HTTPS:HTTPS(HyperTextTransferProtocolSecure)是HTTP的安全版本,通过SSL/TLS协议对数据进行加密,确保
- SpringMVC 请求和响应
m0_74015467
java服务器前端
在构建高效且稳健的Web应用时,SpringMVC框架的请求和响应机制宛如中枢神经系统,对整个应用的流畅运行起着决定性作用。从请求的接收、参数的绑定,到响应结果的生成与返回,每一个环节都蕴含着丰富的细节和强大的功能。接下来,让我们逐步深入剖析SpringMVC请求和响应的各个关键层面。一、RequestMapping注解:请求映射的核心纽带建立请求与处理方法的关联RequestMapping注解在
- 如何使用 Postman 在线版?新手教程
一个幽默的程序员
Postmanpostman测试工具
除了桌面应用程序外,Postman还提供了在线版本,可以通过任何Web浏览器访问。那么该如何使用Postman的在线版呢?Postman在线版使用教程
- SpringMVC 配置
m0_74015467
idespring
一、MVC模式简介在软件开发的广袤天地中,MVC模式宛如一座明亮的灯塔,指引着开发者构建高效、可维护的应用程序。SpringMVC作为基于Spring框架的重要web开发模块,更是将MVC模式的优势发挥得淋漓尽致,堪称Servlet的强力升级版。1.1MVC各组件职责Model(模型层):这一层如同应用的数据大脑,包含了工程中的JavaBean。JavaBean又细分为两类:实体类Bean,就像一
- 学习 Python 爬虫的第一天
这个名字八个字儿
网络爬虫python
爬虫基础(上)网络爬虫URL总结URL知识点服务器HTTP简介HTTPHTTPS请求和响应步骤请求响应状态码实例爬虫注意事项网络爬虫网络爬虫英文是WebCrawler,网络爬虫是按照一定规则自动抓取网页信息的程序。网络爬虫也可以叫做网络蜘蛛(WebSpider)。网络爬虫就是自动化从网页上获取信息、提取信息和保存信息的过程。URL日常我们访问的每个网站都是通过链接打开的。这里的链接也叫做URL。U
- SvelteKit 最新中文文档教程(11)—— 部署 Netlify 和 Vercel
前言Svelte,一个语法简洁、入门容易,面向未来的前端框架。从Svelte诞生之初,就备受开发者的喜爱,根据统计,从2019年到2024年,连续6年一直是开发者最感兴趣的前端框架No.1:Svelte以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构建轻量级Web项目。为了帮助大家学习Svelte,我同时搭建了Svelte最新的中文文档站点。如果需要进阶学习,也可以入手我
- 深入理解 HTML5 Web Workers:提升网页性能的关键技术解析
梦想家星空
前端html5html
深入理解HTML5WebWorkers:提升网页性能的关键技术解析引言1.什么是WebWorkers?WebWorkers的特点:2.WebWorkers的使用方式2.1创建一个WebWorker步骤1:创建Worker文件步骤2:在主线程中调用Worker3.WebWorkers的高级应用3.1使用`Blob`方式创建Worker3.2终止Worker4.WebWorkers的应用场景示例:计算
- SpringSecurity JWT:基于令牌的无状态认证实现
程序媛学姐
Spring全家桶Javajava开发语言
文章目录引言一、JWT基本原理与结构二、SpringSecurityJWT依赖配置三、JWT令牌生成与处理四、SpringSecurity配置与过滤器实现五、认证控制器与登录流程实现总结引言在微服务架构与分布式系统日益普及的今天,传统的基于会话(Session)的认证方式面临着诸多挑战。JSONWebToken(JWT)作为一种基于令牌的认证机制,因其无状态、自包含以及易于跨服务传递的特性,已成为
- Rust语言从入门到坟墓:第一篇
码上那点事
rust开发语言后端
RUST:一篇入门Rust语言入门指南前言1.⚙️安装Rust2.✍编写第一个Rust程序3.❄️变量和数据类型3.1变量示例3.1数据类型4.函数4.1示例5.控制流6.所有权和借用6.1所有权6.1借用Rust语言入门指南前言Rust是一种系统编程语言,它提供了高性能和内存安全性。它特别适合编写底层系统代码,如操作系统、文件系统和嵌入式系统,同时也适用于构建网络服务和Web应用。本文将带你走进
- 2022年全国职业院校技能大赛(高职组)“云计算”赛项赛卷②公有云
旺仔Sec
#云计算职业院校技能大赛竞赛试题云计算公有云
2022年全国职业院校技能大赛(高职组)“云计算”赛项赛卷2第三场次:公有云(30分)环境说明:某信息技术科技公司实施数字化转型与应用上云,要对公司内部项目搭建基于云原生的Devops相关服务。选择国内公有云提供商,为客户提供K8S、云网络、云硬盘、云防火墙、负载均衡等服务,可创建Web服务,共享文件存储服务,数据库服务,数据库集群等服务。根据上述公有云平台的特性,完成公有云中的各项运维工作。任务
- Redis 实战
凄戚
nosqljava缓存database
RedisRedis是一个开源的,高级的键值对存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。场景:在互联网中经常用来缓存热点数据:1.redis数据在内存中,可以保证读取的高效(接近每秒数十万次);2.减少下层持久层数据库读取压力,像mongodb,每秒近千次就有压力;3.redis单线程运行,天然具备读写的原子性使用:1.先get读取redis,没有读到再去db;将db读到的
- vue3封装socket.io全局使用
lijingxian1991
javascriptwebsocket
安装$npmisocket.io-client--save创建socket-io.jsimport{ref}from'vue'constsocket=ref(null)letglobal_callback=nullimport{io}from"socket.io-client";exportconstinitWebSocket=(url)=>{socket.value=io(url,{transp
- 还在让主线程忙到崩溃?用 Web Worker 解锁前端多线程的正确姿势!
写完这行代码打球去
工程开发前端
一、WebWorker介绍JavaScript是一种单线程语言,意味着它在一个时间点只能执行一个任务。尽管如此,一个进程可以包含多个线程,例如浏览器中的WebWorker提供了一种在后台线程中运行脚本的方式,从而避免主线程被阻塞。1.WebWorker的作用WebWorker是浏览器提供的一种多线程机制,允许开发者在后台线程中运行JavaScript脚本,主要用于以下场景:复杂计算:处理大量数据或
- 聊聊langchain4j的Web Search Engine
langchain4j
序本文主要研究一下langchain4j的WebSearchEngine步骤pom.xmldev.langchain4jlangchain4j-web-search-engine-searchapi1.0.0-beta2example@TestpublicvoidtestSearchEngine(){SearchApiWebSearchEnginesearchEngine=SearchApiWeb
- Vue 3使用 Socket
翱翔-蓝天
vue.js前端javascript
在Vue3中使用Socket(如WebSocket或基于WebSocket的库比如Socket.IO)可以通过组合式API(CompositionAPI)来实现得更清晰、模块化。下面我给你展示一个完整的例子,包括使用原生WebSocket和使用Socket.IO的方式(你可以根据实际情况选择)。✅使用原生WebSocket的方式1.建立socket封装(推荐封装成composable)//comp
- 聊聊spring ai的mcp server
ai开发
序本文主要研究一下springai的mcpservermcpjavasdkmcp提供了javasdk,同时还提供了springwebflux及mvc的sse实现io.modelcontextprotocol.sdkmcp-bom0.8.0pomimportio.modelcontextprotocol.sdkmcpio.modelcontextprotocol.sdkmcp-spring-webf
- 1.2 Flask入门基础-Flask 的特点与优势例子解析
乔丹搞IT
flaskflaskpython后端
代码示例:1.2Flask入门基础-Flask的特点与优势Flask是一个轻量级的PythonWeb框架,由ArminRonacher开发。其设计哲学是“微框架”,即只提供核心功能,让开发者根据需求自由扩展。以下是Flask的主要特点与优势:1.轻量级与简洁性Flask本身非常轻量级,核心功能不多,但可以通过扩展来增加所需的功能。这种设计使得Flask不会对应用造成不必要的负担,同时保持了代码的简
- micropython 第三方库_python常用框架及第三方库
physixfan
micropython第三方库
python常用框架及第三方库一、Web框架1.Django:开源web开发框架,它鼓励快速开发,并遵循MVC设计,比较庞大,开发周期短。Django的文档最完善、市场占有率最高、招聘职位最多。全套的解决方案,Django象Rails一样,提供全套的解决方案(full-stackframework+batteriesincluded),基本要什么有什么(比如:cache、session、feed、
- SpringBoot使用Websocket技术实现聊天功能--后端部分(三)
oct1025
Ideawebsocketspringboot后端
所需依赖:javax.websocketjavax.websocket-api1.1providedorg.springframework.bootspring-boot-starter-freemarkerorg.springframework.bootspring-boot-starter-websocket-->org.apache.tomcat.embed-->tomcat-embed-w
- 前端控制器模式
lly202406
开发语言
前端控制器模式引言在软件设计模式中,前端控制器模式(FrontControllerPattern)是一种架构设计模式,它提供了一个集中的请求处理机制。在这种模式中,所有的用户请求都通过一个单一的控制点(前端控制器)进行处理,然后根据请求类型分发到相应的处理者(处理器)进行处理。前端控制器模式在大型应用系统中非常常见,尤其适用于Web应用。模式概述前端控制器模式包含以下主要角色:前端控制器(Fron
- 【随笔】一些随笔
zyz_Kilig
测试专栏功能测试
提示:仅供参考文章目录业务方向一.作为测试工程师,如何快速理解业务?1.理指标体系2.看需求文档3.看测试用例4.看别人的问题单二、你们公司的测试流程是什么?三、问题单(bug)包含哪些内容?四、bug生命周期五、在测试过程中遇到的难题?六、印象深刻的bug?技术方向一.get和post?二、HTTP和HTTPs区别?三、WEB和移动端APP测试的区别?四、如何进行接口测试?五、接口自动化脚本中,
- 探索现代化的Slack API客户端:Slack Morphism for Rust
邱行方Mountain
探索现代化的SlackAPI客户端:SlackMorphismforRustslack-morphism-rustAmodernasyncclientlibraryforRust,supportsSlackWeb/EventsAPI/SocketModeandBlockKit.项目地址:https://gitcode.com/gh_mirrors/sl/slack-morphism-rust项目介
- WebSocket 的错误处理与断线重连
前端梦工厂+
精通前端前端websocket
websocket断线重连心跳就是客户端定时的给服务端发送消息,证明客户端是在线的如果超过一定的时间没有发送则就是离线了。如何判断在线离线?当客户端第一次发送请求至服务端时会携带唯一标识、以及时间戳,服务端到db或者缓存去查询改请求的唯一标识,如果不存在就存入db或者缓存中,第二次客户端定时再次发送请求依旧携带唯一标识、以及时间戳,服务端到db或者缓存去查询改请求的唯一标识,如果存在就把上次的时间
- 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