- 使用flv.js + websokect播放rtsp格式视频流
音视频开发老马
流媒体服务器Android音视频开发音视频开发ffmpeg开发语言flv流媒体服务器音视频开发
1.问题背景在最近的项目中,涉及到海康接入的视频播放的问题,海康这边获取到的视频流是rtsp格式,web端目前没有直接可以播放的组件,于是最开始是后端处理了视频流,返回hls格式的m3u8地址,这样用videojs插件就可以播放了,但是问题就是处理了的m3u8地址播放效果非常差,第一次加载时间较长,且播放过程中很卡,尤其是项目的界面做的是视频监控墙,不止一个视频,导致没办法看了。想着最好的方式还是
- 前端播放RTSP视频流,使用FLV请求RTSP视频流播放(Vue项目,在Vue中使用插件flv.js请求RTSP视频流播放)
北城笑笑
JavaScriptVueJSjavascriptvue.js
简述:在浏览器中请求RTSP视频流并进行播放时,直接使用原生的浏览器API是行不通的,因为它们不支持RTSP协议。为了解决这个问题,开发者通常会选择使用像flv.js这样的库,它专为在浏览器中播放FLV和其他流媒体格式设计。然而,flv.js本身并不直接支持RTSP,这意味着我们需要一个额外的步骤来桥接RTSP和flv.js。这里来记录一下详细介绍:在Vue中使用flv.js插件播放RTSP视频流
- 颜色拾取器 jscolor.js插件中工作中遇到的问题
乱来丶Fack
jscolor.js在动态加载的弹出层上面,点击选择颜色,会有弹不出来的情况的.1.bootstrap中只需要把弹出层的zIndex:层级改高,应该就没问题了。2.还有就是动态加载的弹框的问题,因为jscolor是个方法,他在js加载的时候,就只走一遍,那个时候弹框还没加载进来,所以,他是找不到这个class的,所以就会造成点击input,jscolor弹不出来的情况。解决方案:动态加载jscol
- js 预览excel/csv
stpzhf
前端javascript
git地址:https://gitee.com/nulicainiao/analyzing-excel-csv.git一、直接上代码1.下载引入使用xlsx.js插件及cptable.js文件importXLSXfrom'./xlsx'importcptablefrom'./cptable.full'functionfixdata(data){//文件流转BinaryStringvaro="",l
- redux 简单实现各组件状态管理
暴躁程序员
一、redux特点1.redux是集中管理共享状态的JS插件库2.store用于存储状态的容器,唯一状态树,即:store的state是一个对象,且是唯一的3.action组件改变store状态时,发布的动作4.reducer纯函数,在不改变store状态的情况下返回最新state状态二、redux主要方法createStore(reducer)创建storestore.getState()获取s
- BootStrap学习笔记JS插件(一)--模态弹出框
ok060
javascriptbootstrap学习
一、弹出框基础×Close模态弹出窗标题模态弹出窗主体内容关闭保存Bootstrap框架中的模态弹出框,分别运用了“modal”、“modal-dialog”和“modal-content”样式,而弹出窗真正的内容都放置在“modal-content”中,其主要又包括三个部分:☑弹出框头部,一般使用“modal-header”表示,主要包括标题和关闭按钮☑弹出框主体,一般使用“modal-body
- 使用jquery的imagecropper插件做用户头像上传 兼容移动端
虫虫教父
Jquery小东西用户自定义头像上传jqueryimagecropp
相信大多的用户系统里都有用户自定义头像上传这个功能,我这今天也在写这块,我将代码贴出来,方便以后大家借鉴。实现方案:使用jquery的imagecropper.js插件中裁剪功能来实现imagecropper.js这个源码我找了很久才找到http://pan.baidu.com/s/1oDqRO代码量很少就没有写注释了cssbody{padding:0;margin:0;height:100%;b
- 使用webstorm调试vue 2 项目
Future_By_Now
vuewebstormvue.jside
学习目标:使用webstorm调试vue2项目笔者环境:npm6.14.12webstorm2023.1vue2学习内容:例如:正常启动npm项目配置javaScruotdubug配置你的项目地址就好使用dubug运行你配置的调式页问题如果进入了js页无法进入vue页1.查看settting的vue.js插件是否安装2.查看webpack.conf.js文件是否配置了devtool:“eval-s
- doc文件在线预览 vue_vue实现在线预览pdf文件和下载(pdf.js)
Monsterchen Xu
doc文件在线预览vue
最近做项目遇到在线预览和下载pdf文件,试了多种pdf插件,例如jquery.media.js(ie无法直接浏览)最后选择了pdf.js插件(兼容ie10及以上、谷歌、安卓,苹果)强烈推荐改插件,以下介绍用法(1)下载插件(2)将下载构建后的插件放到文件中public(vue/cli3.0)(3)在vue文件中直接使用,贴上完整代码exportdefault{name:"pdf",data(){r
- JavaScript - 基础+WebAPI(笔记)
禁止摆烂-才浅
前端-笔记JavaScriptES6javascript笔记前端
前言:求关注本篇文章主要记录以下几部分:基础:输入输出语法;数据类型;运算符;流程控制-分支语句;流程控制-循环语句;数组-基础;函数-基础;对象-基础;WebAPI:DOM;DOM事件基础(事件监听、常用事件、事件对象);DOM事件进阶(事件流、事件委托);日期对象;节点操作;M端事件;JS插件;window对象;本地存储;正则表达式;以下部分请移步JavaScript-进阶+高级(笔记):进阶
- vue前端使用pdf.js 实现pdf网页预览效果
刘能能能
前端vuejshtml
vue前端使用pdf.js实现pdf网页预览效果前言最近,在vue项目中需要用到在线预览pdf功能,首先想到了pdf.js插件。pdf.js是一个技术原型主要用于在HTML5平台上展示PDF文档,无需任何本地技术支持。不需要本地浏览器额外支持。准备下载pdfjs—免积分下载注意:只能在服务器使用本地在不能预览。服务器centos很多人在用pdfjs的时候会发现网上的教程都用不了,因为一点击就会弹出
- cool框架 node.js 实现 腾讯云短信
一只小阿乐
node.js腾讯云云计算
1.现在想实现node后端实现腾讯云验证码的功能去腾讯云上下载了node.jssdk下载了以后发现不能使用问了问客服说是sdk有问题2.qcloudsms_js插件的使用腾讯短信(1).安装npmiqcloudsms_js-save(2)主题代码使用import{Config,Provide}from'@midwayjs/decorator';import{BaseService}from'@co
- Vue3使用dayjs以及dayjs日期工具类
谁不想飞舞青春
前端vuejavascript前端vue.js
Vue3使用dayjs全局使用以及将dayjs封装为自己需要的日期工具类说明安装dayjs命令在main.js里面全局导入在vue模版中使用dayjs语法如下dayjs日期工具类说明这里记录下在Vue3里面使用dayjs插件,以及将它在全局使用,并且将dayjs封装成自己需要的日期工具类。留待以后需要时直接使用。安装dayjs命令npminstalldayjs--save在main.js里面全局导
- FadstAdmin的city-picker插件实现地区多选
withoutfear
fastadminPHPfastadmincity-picker
下面是效果图:在public\assets\libs\fastadmin-citypicker目录下原有的基础上复制一份,重命名city-picker-multi.min.js,在这个基础上更改。参考文章如何在FastAdmin中加载第三方JS插件或自己编写插件?-FastAdmin问答社区在public\assets\js\backend-init.js中新增一下内容:define(['back
- Swiper轮播插件的使用与二次封装
听书先生
1、Swiper官方文档链接:Swiper中文网-轮播图幻灯片js插件,H5页面前端开发Swiper是一个非常强大的轮播插件,Swiper是纯javascript打造的滑动特效插件,面向手机、平板电脑等移动终端。并且Swiper不依赖于任何框架,意味着单纯的html+css也可以去引用,jquery或是Vue等等,都可以去使用。2、Vue中使用Swiper建议不要直接依据官方文档的npm安装,np
- JS-swiper插件
小沐°
JSjavascript前端开发语言
插件:就是别人写好的一些代码,我们只需要复制对应的代码,就可以直接实现对应的效果官网:Swiper中文网-轮播图幻灯片js插件,H5页面前端开发
- vue使用video.js播放m3u8格式视频
奶昔不会射手
javascriptvue.js音视频
//安装video.js插件npminstallvideo.js-S//页面引入importVideojsfrom"video.js";import"video.js/dist/video-js.css";props:{src:{type:String,default:"https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8",//可以用这个流来测试},
- webpack tree shaking 摇树原理
我有一棵树
webpack前端node.js
Tree-shaking是指在打包过程中通过静态分析,识别并删除未使用的代码,以减小最终输出文件的大小。Webpack通过内置的UglifyJS插件或者Terser插件来实现Tree-shaking。下面是简要的webpackTree-shaking的原理:标记未使用的代码:在编译过程中,Webpack会通过静态分析模块之间的依赖关系,识别出哪些代码是未使用的。基于ES6模块系统:Tree-sha
- 使用VueCli创建vue2项目
许七安687
vue.js前端npm
适看人群:后端开发、编程初学者等首先有个问题:Vue和Vue-Cli是什么关系?有什么区别?做个类比:VueCLI=Vue+一堆的js插件。SpringCloud=SpringBoot+一堆第三方组件。使用方式:VueCLI是一个脚手架,通俗点说就是代码生成器,可以快速生成一套基于Vue完整的前端框架,单独编译,单独部署。可以再集成各种第三方插件,扩展出更多的功能。Vue是渐近式框架,你可以用它一
- 【dayjs】类型“Dayjs”上不存在属性“isSameOrAfter”
白桃与猫
踩坑日记前端javascript
dayjs中有一些方法是需要使用插件后才能使用,默认情况下,Day.js只提供核心代码,没有安装插件。解决方法:importdayjsfrom'dayjs';importisSameOrAfterfrom'dayjs/plugin/isSameOrAfter';dayjs.extend(isSameOrAfter);再次使用就不报错了:✨相关网址:dayjs插件列表dayjs中文网dayjs官网
- vue高级用法
Ms.Wang.
vue.jsjavascript前端
Vue插件plugin1,Vue插件plugin安装Vue.js插件。如果插件是一个对象,必须提供install方法。如果插件是一个函数,它会被作为install方法。install方法调用时,会将Vue作为参数传入。该方法需要在调用newVue()之前被调用。当install方法被同一个插件多次调用,插件将只会被安装一次。使用插件通过全局方法Vue.use()使用插件。它需要在你调用newVue
- html转换成canvas文字空白,html2canvas.js——HTML转Canvas工具
weixin_39623411
我们经常会遇上动态生成海报的需求,而在Web前端中,生成图片非Canvas莫属。但是在实际工作当中,为了追求效率,我们会不可避免地去使用一些JS插件,而html2canvas.js就是一款优秀的插件,它可以轻松地帮你将HTML代码转换成Canvas,进而生成可保存分享的图片。具体如何使用这款插件呢?接下来请让我用一个简单的示例来为大家讲解。现在假设要生成如下图片,而所有图片和文字都是动态获取的。按
- 最优的JS甘特图插件【转载】
陨石猎人
javascriptjavascript甘特图前端插件
甘特图(ant-gantt)在项目管理中,甘特图的可视化操作界面,可以让项目规划与风险把控更便捷与清晰,同时该插件是一款基于HTML5、javasrcipt的一款js插件,支持在当前主流的前端框架中接入。效果图:如何使用1、下载插件官网地址:https://www.aim.link/h5/KA.html2、导入项目将下载到的sdk拷贝至项目工程目录,如拷贝至:externalSdk/ant-gan
- vue中,给一个URL地址,利用FileSaver.js插件下载文件到本地
坚书直实i
vue.jsjavascript前端
①首先下载FileSaver.js插件npminstallfile-saver--save②在需要的.vue页面引入import{saveAs}from'file-saver'在HTML中引入//FileSaver.js只有一个函数就是saveAs,它有三个参数,//第一个是:Blob、File、Url可以是二进制流、文件、URL的地址。//第二个是:文件的名字//第三个是:可选的object对象
- FixedDataTable-无性能消耗百万级table
这个超人不会飞阿
给你个眼神写这篇文章的原因是,自己在遇到FixedDataTable时候,上网搜了一些文章,总没有尽人意的,或者都是英文版本,对阅读能力有要求.因此我做了对FDT的总结.很多人可能还没有听过这个js插件,简单点,它就是一个table.那么它的强大之处在哪里?我们先看看官网的解释:AReacttablecomponentdesignedtoallowpresentingmillionsofrowso
- Eclipse上安装angularjs插件
微笑偷走我的魂
angularjs插件
安装地址:http://oss.opensagres.fr/angularjs-eclipse/0.5.0/全选,下一步,接受,安装。安装完成之后需要将项目转换为angularjs项目:项目右键,选中configure
- input输入框清除插件,极好用!
herogus丶
共同进步插件html
不BB别的了,直接上干货,很容易看懂,自己上手测试吧clearInput.js插件代码:(function(){document.addEventListener('DOMContentLoaded',function(){varautoClearFiled=document.querySelectorAll('.am-input-autoclear');//重点,与“HTML中重点1”对应,获取
- 360*180度全景图预览插件Photo Sphere Viewer
MC桥默
插件描述PhotoSphereViewer是一款基于Three.js的360X180度全景图预览js插件。该js插件可以360度旋转查看全景图,也可以上下180度查看图片。使用该插件的唯一要求是浏览器支持canvas或WebGL。(demo不再服务器里面演示的话请使用火狐浏览器)demo下载链接:https://pan.baidu.com/s/1QS-ieA7pqUDosNRhgL26Cw提取码:
- 手写一个表单设计器 -- activiti工作流养成计划(八)
唐田震
目标:手写表单设计器开源的表单设计器有很多,但是我还是手写一个,原因如下: 1、开源的样式与若依框架不配套,如果自己再改样式的话难度与工作量太大。 2、与自己想要的总是有些出入。 3、造轮子的快乐。大致思路:基于若依框架本身提供的js插件和layui样式制作,效果与框架本身配套。使用HTML5提供的拖拽api,可以是代码编写更简单。利用thymeleaf的技术特点,将各种表单元素组件化,方便插拔与
- Sublime Text3配置nodejs运行环境
light_fish
sublimetext3配置nodejs运行环境最近几日也是在学习nodejs,一般我都是在用vi来进行简单的编写。但是编写复杂点到的就会可能因为不当心的代码输入错误而报错,所以我就来尝试一下用SublimeText3来进行编写。所以这篇博客也是记录下sublime下的nodejs运行环境的配置。安装nodejs首先当然是安装nodejs咯,由于这个过于简单就略过了~~下载nodejs插件并安装1
- 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