- android实践:canvas文字图片旋转显示
汤面不加鱼丸
android前端javascript
问题:如何在手机竖屏模式下将文字/图片旋转显示,即类似横屏方向上显示显示效果:实现:1.文字旋转显示canvas.save();//保存状态入栈canvas.translate(getWidth()>>1,getHeight()>>1);//显示中心PainttitlePaint=newPaint();titlePaint.setColor(Color.WHITE);titlePaint.setT
- 在vue3中通过jspdf+html2canvas实现导出页面pdf功能
落晓星
pdfvue.js前端ruoyi
一、安装依赖npminstallhtml2canvasjspdf二、创建Vue组件下载文件importhtml2canvasfrom'html2canvas';importjsPDFfrom'jspdf';constroute=useRoute();//当前idconstpolicyExplainId=ref(route.params.id);constloading=ref(false);//详
- 【Flutter】时间轴高度自适应最佳实践
Tech Ranger
FlutterAndroidflutter
1使用部件画圆圈:使用canvas.drawCircle和属性为_paint.style=PaintingStyle.fill;画笔画两个实心圆;画竖线:使用canvas.drawLine和属性为_paint.style=PaintingStyle.stroke;的画笔画直线,通过p1和p2两个端点使直线为竖线在Container中调用decoration组件使用BorderTimeLine类。d
- vue动态页面快照截图 html2canvas
懒大王、
vue.jsjavascript前端
安装依赖npminstallhtml2canvas新建组件SnapshotPage.vueimporthtml2canvasfrom"html2canvas";exportdefault{name:"SnapshotPage",props:{//你可以通过props传递动态内容数据//data:Object},mounted(){this.$nextTick(()=>{this.capture()
- python 脚本 遍历目录,并把目录下的非utf-8文件改成utf8
还债大湿兄
python开发语言数据库
从网上下载的qt项目我本地编译里面经常包含中文,提示编译不过,实际上以前经常手动转,发觉还是用脚本不,毕竟这次下的有点大,我只改.h.cpp#pythonD:\python\filetoUtf.pyE:\EasyCanvas-master\EasyCanvas-masterimportosimportcodecsimportargparseimportsysdefconvert_to_utf8_b
- javascript 动态画心加文字
das白
#javascriptjavascript动态心型线文字
测试//铺满屏幕varwidth=document.documentElement.clientWidth;varheight=document.documentElement.clientHeight;document.getElementById("gycanvas").setAttribute("width",width);document.getElementById("gycanvas"
- javascript 动态画心
das白
#javascriptjavascript动态心型线
测试canvas{background:lawngreen;//画布背景色}//铺满屏幕varwidth=document.documentElement.clientWidth;varheight=document.documentElement.clientHeight;document.getElementById("gycanvas").setAttribute("width",width
- javascript 画心型线
测试canvas{background:lawngreen;//画布背景色}//铺满屏幕varwidth=document.documentElement.clientWidth;varheight=document.documentElement.clientHeight;document.getElementById("gycanvas").setAttribute("width",width
- 微信小程序进度条样式_微信小程序之圆形进度条
需求概要小程序中使用圆形倒计时,效果图:思路使用2个canvas一个是背景圆环,一个是彩色圆环。使用setInterval让彩色圆环逐步绘制。解决方案第一步先写结构一个盒子包裹2个canvas以及文字盒子;盒子使用相对定位作为父级,flex布局,设置居中;一个canvas,使用绝对定位作为背景,canvas-id="canvasProgressbg"另一个canvas,使用相对定位作为进度条,ca
- 微信小程序 环形进度条_微信小程序实现圆形进度条实例分享
易筱昭
微信小程序环形进度条
本文主要和大家分享微信小程序实现圆形进度条实例,希望能帮助到大家。小程序中使用圆形倒计时,效果图:思路使用2个canvas一个是背景圆环,一个是彩色圆环。使用setInterval让彩色圆环逐步绘制。解决方案第一步先写结构一个盒子包裹2个canvas以及文字盒子;盒子使用相对定位作为父级,flex布局,设置居中;一个canvas,使用绝对定位作为背景,canvas-id="canvasProgre
- 【uniapp】给图片添加水印
改bug的101天
uniappuni-appvue.js前端
1、创建画布varcontext=uni.createCanvasContext('Canvas')2、获取本地图片uni.chooseImage({count:1,success:(res)=>{varfile=res.tempFilePaths[0];consttempFiles=res.tempFiles[0]})})3、获取图片信息----添加水印uni.getImageInfo({src
- Unity中,Canva的三种渲染模式
Lowjin_
unityunity游戏引擎
在Unity中,Canvas组件的渲染模式(RenderMode)决定了UI元素如何渲染在屏幕上。不同的渲染模式有不同的用途和表现,主要有三种模式:屏幕空间-覆盖(ScreenSpace-Overlay)屏幕空间-摄像机(ScreenSpace-Camera)世界空间(WorldSpace)1.屏幕空间-覆盖(ScreenSpace-Overlay)解释:屏幕空间-覆盖是默认的渲染模式。在这种模式
- uniapp 生成二维码
祖先森、
uni-appvue.jsjavascript
一般常用到的二维码生成库,在使用的过程中,都需要设置到指定的dom元素上,但是在uniapp项目中,想要像vue项目中一样,获取标签的dom元素是比较难操作的。所以在uniapp中生成二维码,就需要换一种思路,通过canvas画布,将二维码进行绘制并放置在canvas中进行展示。uQRCode是一款基于Javascript环境开发的二维码生成插件,适用所有Javascript运行环境的前端应用和N
- 小程序第四章作业
胡小图图图图图
小程序
操作题1.使用canvas组件实现“五个圆圈”的绘制。代码:.js代码:Page({onReady:function(e){constctx=wx.createCanvasContext('quanquan')//绘制蓝色圆环ctx.beginPath()ctx.arc(80,52,50,0,2*Math.PI)ctx.setStrokeStyle('#0072BB')ctx.setLineWid
- H5新增特性大全
小夏啥也不会
html中的新特性videoaudiocsshtml5前端
一、HTML概述1.1什么是HTMLHTML5是HTML最新的修订版本(超文本标记语言的第五次重大修改),2014年10月由万维网联盟(W3C)完成标准制定。HTML5的设计目的是为了在移动设备上支持多媒体。HTML5简单易学,HTML5是下一代HTML标准。1.2HTML中的新特性用于绘画的canvas元素用于媒介回放的video和audio元素对本地离线存储的更好的支持新的特殊内容元素,比如a
- AntV F2入门教程
德育处主任Pro
arcgis
以下教程将系统地介绍AntV F2(移动端可视化引擎)的核心组件API,包含安装与引入、画布与图表、数据映射、几何标记、坐标轴、图例、提示、标注和滚动条等,每个API都附带完整示例代码,帮助你快速掌握F2用法。一、安装与引入#安装F2主包npminstall@antv/f2--save#或者使用yarnyarnadd@antv/f2//在小程序或浏览器中引入import{Canvas,Chart,
- GIFPlayer 使用指南:创建可调速的 GIF 播放器
斯~内克
前端开发记录javaScript前端javascript
今天我要分享一个功能全面的JavaScriptGIF播放器类-GIFPlayer,它支持播放控制、速度调整和自适应尺寸等功能核心功能基本播放控制播放/暂停切换自动播放选项帧精确控制速度调节0.5倍到8倍可调速度加速(×2)/减速(÷2)快捷方法速度变化回调通知智能尺寸处理自动使用GIF原始尺寸支持自定义宽高动态调整画布大小使用示例Document.flex{display:flex;}canvas
- WebGL&图形学总结(二)
GISer_Jinger
中大厂面试webgl前端javascript
一、简历中图形学与渲染相关内容梳理(一)专业技能中的图形学储备WebGL与Shader编程:掌握GPU渲染管线原理,能使用GLSL编写着色器,熟悉ShadowMapping、RTT等图形算法。三维引擎应用:熟练使用Three.js和Cesium.js,具备三维场景搭建与高效渲染能力。可视化技术:熟悉Canvas、SVG,掌握GPU加速渲染与主流三维引擎集成(如WebGL与Cesium结合)。(二)
- ChatGPT全新功能Canvas上线:开启智能编程与写作新篇章
海豹工匠
chatgpt人工智能
引言随着人工智能技术的迅猛发展,OpenAI旗下的明星产品ChatGPT不断推出创新功能,以满足用户在各个领域的需求。2024年10月3日,OpenAI正式宣布了ChatGPT的全新功能——Canvas。这一功能基于先进的GPT-4o模型开发,为用户提供了一个与ChatGPT并行工作的界面,专门用于编程和写作任务。本文将详细介绍Canvas功能的特点、优势以及它如何改变我们的工作和创作方式。Can
- 133:vue+cesium 实现水波纹效果
还是大剑师兰特
#cesium综合教程200+大剑师cesium教程cesium示例cesium水波纹
作者:还是大剑师兰特,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。查看本专栏目录-本文是第133个示例文章目录一、示例效果二、示例简介三、配置方式四、示例源代码(共200行)五、相关API参考一
- html5贝塞尔曲线,HTML5 Canvas 绘制贝塞尔曲线 Bezier and quadratic curves
weixin_39648492
html5贝塞尔曲线
贝塞尔曲线:它可以是二次和三次方的形式,一般用于绘制复杂而有规律的形状。方法:quadraticCurveTo(cp1x,cp1y,x,y)bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y)参数x和y是终点坐标,cp1x和cp1y是第一个控制点的坐标,cp2x和cp2y是第二个的。用贝塞尔曲线绘制聊天气泡说明用贝塞尔曲线绘制聊天气泡代码functiondraw(){var
- 掌握HTML5 Canvas贝塞尔曲线绘制技巧
yang lebron
HTML5Canvas贝塞尔曲线插件开发图形绘制路径操作
掌握HTML5Canvas贝塞尔曲线绘制技巧在现代网页开发中,HTML5Canvas提供了一个强大的2D绘图API,使我们能够绘制复杂的图形和动画。贝塞尔曲线是其中一种重要的图形元素,广泛应用于各种视觉设计和动画中。本文将深入探讨如何在HTML5Canvas中绘制和操作贝塞尔曲线,并提供实际代码示例来展示这些技术的应用。贝塞尔曲线的基础绘制HTML5Canvas提供了绘制二次和三次贝塞尔曲线的方法
- 贝塞尔曲线与动画效果:从基础到进阶
江卓尔
贝塞尔曲线动画效果三次贝塞尔二次贝塞尔HTML5Canvas
贝塞尔曲线与动画效果:从基础到进阶背景简介在计算机图形学中,贝塞尔曲线是一种用于设计光滑曲线的重要工具。在动画和游戏开发中,贝塞尔曲线经常被用来生成平滑的运动路径。本章节将深入探讨贝塞尔曲线在动画中的应用,以及如何在HTML5Canvas上模拟物理效果以增强动画的真实感。贝塞尔曲线的基础应用三次贝塞尔曲线需要四个控制点来定义其形状。在本章节中,作者通过一个环形移动对象的示例,向我们展示了三次贝塞尔
- uniapp微信小程序图片生成水印
社会底层无业大学生
微信小程序uni-app微信小程序小程序
整体思路:用户通过uni.chooseImage选择图片后,获得图片文件的path和size。通过path调用uni.getImageInfo获取图片信息,也就是图片宽高。图片宽高等比缩放至指定大小,不然手机处理起来非常久,因为手机随便拍拍就很大。界面定义canvas组件,组件的宽高就是图片缩放后的宽高。uni.createCanvasContext创建画布上下文,然后画入图片,再画水印。调用un
- 探索趣味抽奖新体验:微信小程序转盘抽奖
宫萍润
探索趣味抽奖新体验:微信小程序转盘抽奖项目地址:https://gitcode.com/gh_mirrors/we/wechat-turntalbe-canvas项目简介在数字化时代,互动式的抽奖活动为用户提供了一种新颖而有趣的参与方式。微信小程序转盘抽奖就是这样一个利用小程序平台开发的创新应用,它借助HTML5Canvas技术,打造出了可高度定制化的转盘抽奖界面,为你的业务增添无尽魅力。技术分析
- 微信小程序canvas实现抽奖动画
小糊涂加油
微信小程序小程序
本来想用setdata做抽奖动画的,但是存在合并更新以及性能问题,遂采用canvas的形式。参考了一篇blog,然后加了些抽奖逻辑的改动import{getRandomInt}from"../../utils/util";//components/names/names.tsComponent({lifetimes:{attached(){this.createSelectorQuery().se
- python实现一个示波器仿真,可以改参数同步效果
YiWait
python开发语言
代码importsysimportnumpyasnpimportmatplotlib.pyplotaspltfrommatplotlib.backends.backend_qt5aggimportFigureCanvasQTAggasFigureCanvasfrommatplotlib.backends.backend_qt5aggimportNavigationToolbar2QTasNavig
- 前端开发者必须要掌握的技术栈及学习建议,都是干货
老猿阿浪
前端学习前端
作为前端开发者,必须要掌握的技术栈非常的广泛,但总体脉络不变,以下是当前前端开发的核心技术分类和学习建议,按优先级和重要性排序如下(都是干货):一、基础三件套(必学)HTML5语义化标签、表单验证、WebAccessibility(无障碍访问)Canvas/SVG、音视频嵌入CSS3盒模型、Flex/Grid布局、响应式设计(媒体查询)动画(Transition/Animation)、变量(CSS
- HTML5 在前端房地产类网站的应用案例
前端视界
前端艺匠馆前端html5htmlai
HTML5在前端房地产类网站的应用案例关键词:HTML5、房地产网站、响应式设计、WebGL、地理定位、Canvas、性能优化摘要:本文深入探讨HTML5技术在房地产类网站中的创新应用。我们将分析HTML5如何通过其丰富的API和特性,为房地产行业提供沉浸式的用户体验、高效的房源展示和精准的客户服务。文章涵盖从基础布局到高级3D展示的全套技术方案,并通过实际案例展示HTML5如何解决房地产网站开发
- HTML5 更新的功能
TE-茶叶蛋
面试复习系列html知识html5前端html
文章目录前言**一、语义化标签(SemanticElements)****二、多媒体支持(Audio&Video)****三、图形与绘图(Canvas&SVG)****1.``****2.SVG内联支持****四、表单增强(FormFeatures)****1.新输入类型****2.新属性****五、本地存储(WebStorage)****六、地理定位(Geolocation)****七、拖放AP
- 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