- Go语言的文件操作
BinaryBardC
包罗万象golang开发语言后端
Go语言的文件操作Go语言是一种开源的编程语言,由谷歌开发,具有简单、高效和并发的特点。在日常开发中,文件操作是一个非常重要且常见的任务。从读取配置文件到写入日志文件,从处理数据到存储结果,文件操作无处不在。本文将详细介绍Go语言中如何进行文件操作,包括创建文件、读取文件、写入文件、修改文件以及删除文件等操作。同时,我们还会探讨Go语言处理文件的常用库和最佳实践。一、Go语言文件操作的基础知识在G
- nginx 正向代理配置
wx912820
nginxnginxlinux网络
nginx正向代理的配置http和httpsserver{resolver114.114.114.114;#指定DNS服务器IP地址listen80;location/{proxy_passhttp://$host$request_uri;#设定代理服务器的协议和地址(这里不用修改)proxy_set_headerHOST$host;proxy_set_headerX-Real-IP$remote
- 二进制/源码编译安装mysql 8.0
雷学习
Linuxmysql数据库
二进制方式:1.下载或上传安装包至设备:2.创建组与用户:[root@openEuler-1~]#groupaddmysql[root@openEuler-1~]#useradd-r-gmysql-s/bin/falsemysql3.解压安装包:tarxfmysql-8.0.36-linux-glibc2.12-x86_64.tar.xz-C/usr/local4.建立软链接:ln-sv/usr/
- Spring boot技术文档
灰色橡皮糖
springbootjavaspring
SpringBoot技术文档简介SpringBoot是一个快速构建Java应用程序的框架,它基于SpringFramework,并通过自动配置和简化的开发流程来简化应用程序的开发。SpringBoot可以帮助开发者快速创建独立的、生产级别的Spring应用程序,并减少了开发者配置应用程序所需的时间和精力。SpringBoot最大的优势是提供了一种快速开发体验,可以实现零配置启动。文章目录Sprin
- 在VS Code上使用SSH连接腾讯云服务器
Master2023
服务器腾讯云ssh
服务器:1.找到自己用户名,初始用户名一般为root或ubuntu2.必须设置密码,将主机关机后点击重置密码设置新密码,完成后开机本地:1.打开VSCode,安装Remote-SSH插件2.点击左边活动栏新增的远程资源管理器,进入点击右边的设置图标3.选择以.\ssh\config结尾的选项4.打开配置文件后按如下格式进行配置:HostNo.5HostName43.143.190.66Userro
- Linux Kubernetes Helm之使用helm部署ingress-nginx
阿然A
kubernetesHelm之使用helm部署ingress-nginx一、部署二、测试三、部署加密访问部署前将之前部署的ingress-nginx删除:[root@server1helm]#kubectldeletenamespacesingress-nginxnamespace"ingress-nginx"deleted[root@server1nginx-ingress]#kubectlge
- linux 安装mysql5.6
李逍遙️
linuxadbandroid
下载mysql安装包https://dev.mysql.com/downloads/mysql/5.6.html卸载系统自带的mariadb[root@gpap-prod-3~]#rpm-qa|grepmariadbmariadb-libs-5.5.68-1.el7.x86_64[root@gpap-prod-3~]#rpm-e--nodepsmariadb-libs-5.5.68-1.el7.x
- linux nginx配置不生效,Nginx配置虚拟主机不生效
cici xiang
linuxnginx配置不生效
今天安装Nginx时,创建虚拟主机配置,发现不生效,始终是读取Nginx的默认配置文件指定的站点目录,于是将配置文件逐行检查了一遍,发现影响虚拟主机的配置是否生效,受到以下两个因素影响:1、Nginx的配置文件中,在http模块必须指定包含虚拟主机配置文件路径,本次实例中虚拟主机配置文件在如下:http{sendfileon;keepalive_timeout65;include/etc/ngin
- Nginx正向代理配置详解
水月清辉
Nginxnginx代理模式
一、nginx正向代理介绍及配置(需要在客户端配置代理服务器进行指定网站访问)#模块ngx_http_proxy_module:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header1、环境介绍代理服务器系统环境为:centosnginx代理服务器为:192.168.10.10测试客户端为局域网内任意win
- Python mysql数据库连接池
戴**
Python
最近在写一个Python的文本分析,需要大量的读取数据库(千万级别mysql)并进行更新操作,运行着程序发现一个问题,过了一会儿程序就报错说链接已经满了,或者是端口不可重复使用,因此我在网上找到了一个连接池的代码用于解决这个问题,在此处贴出代码本身是有配置文件的,因为我觉得在我的项目中不必要所以就删除了#!/usr/bin/envpython#-*-coding:utf-8-*-importpym
- 深入浅出:了解TCP协议
可乐泡枸杞·
系统设计必备:你不可不知的20种关键网络协议tcp/ip网络系统架构网络协议
系统设计中你必须知道的20种网络协议目录探索DHCP协议:自动化网络配置的幕后推手解析ARP协议:网络通信的桥梁探索DNS的奥秘:互联网的幕后英雄理解REST与RESTful:它们有何不同?了解ICMP:网络故障排查的好帮手了解SNMP:网络管理的利器探索RPC协议:分布式系统通信的关键探索SSH协议:安全远程访问的基石探索POP3协议:经典电子邮件通信协议探索IMAP协议:现代电子邮件通信的支柱
- Python的Selenium库中的模块、类和异常的汇总
qq_24654817
pythonselenium开发语言
1.`selenium.common.exceptions`:包含了Selenium中可能出现的异常。2.`selenium.webdriver.chrome.options`:用于配置Chrome浏览器的选项。3.`selenium.webdriver.chrome.service`:用于管理Chrome浏览器的后台服务。4.`selenium.webdriver.chrome.webdrive
- SpringBoot Configuration Annotation Processor not configured 解决方案和详细问题分析以及作用
P7进阶路
面试学习路线阿里巴巴springboot后端java
目录1、问题出现:2、解决方案:?2.1方式一?简单粗暴的禁止提示2.2方式二引入jar包3、问题深入探究写在前:笔者出现这个问题的时候,大概猜到是什么问题,在网上也是很快找到了解决方案,但是很多帖子,并没有深究,只是单纯的解决了问题。1、问题出现:当我们写配置类时就会出现如下的提示,虽然不影响运行,但看着实在碍眼,笔者这个是刚解决了的,为了记录,所以后面才截图,如果是一开始即对应的是后面截图的图
- Nginx 跨域配置详细讲解
m0_74824517
nginx运维
一、跨域请求概述跨域资源共享(CORS,Cross-OriginResourceSharing)是一种机制,它使用额外的HTTP头部来告诉浏览器让运行在一个origin(域)上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域HTTP请求。二、Nginx跨域配置步骤1.定位并打开Nginx配置文件Ngin
- @SpringBootApplication详解(Spring Boot启动原理)
m0_74823388
面试学习路线阿里巴巴资料职业发展springboot后端java
本文来说下SpringBoot中的自动装配机制。SpringBoot最强大的功能就是把我们常用的场景抽取成了一个个starter(场景启动器),通过SpringBoot为我们提供的这些场景启动器,我们再进行少量的配置就能使用相应的功能。文章目录概述什么是SpringBoot约定优于配置自动装配@SpringBootConfiguration注解@ComponentScan注解@EnableAuto
- LINUX常用命令 一
夜颂春秋
linux服务器运维
1.cd2.pwd3.ls4.passwd5.who6.cat7.mkdir8.rmdir9.chmod10.chown11.chgrp12.touch13.cp14.mv15.rm16.find17.grep18.more19.less20.head21.tail22.cut23.crontab24.sleep25.kill26.ps28.top29.man,info30.alias31.una
- 使用 “Run on Save” 插件自动运行 yarn vue-cli-service lint --fix
小丁学Java
vue2和element-uivue.js前端javascript
文章目录使用"RunonSave"插件自动运行`yarnvue-cli-servicelint--fix`准备工作步骤指南1.确认命令可用性2.配置"RunonSave"3.测试配置4.处理常见问题结语使用“RunonSave”插件自动运行yarnvue-cli-servicelint--fix在开发Vue.js项目时,保持代码风格一致性和遵循最佳实践是非常重要的。VueCLI提供了lint命令来
- 04-初识Docker-Docker架构
我以为心都空了
微服务docker架构容器
04-初识Docker-Docker架构1.镜像和容器:(1)镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。解释:比如之前讲过的Mysql镜像,它里面肯定就会有各种各样所需要的依赖。这些东西最终落到硬盘就是一个一个的文件。比如说这里有Mysql运行时需要写数据的data目录文件,还有log日志文件,当然还有bin里面的可执行文件,这些就组成
- Ubuntu 24.04 LTS 通过 docker desktop 安装 seafile 搭建个人网盘
Kasen's experience
#UbuntuubuntudockerlinuxSeafile
准备Ubuntu24.04LTSUbuntu空闲硬盘挂载Ubuntu安装DockerDesktop[我的Ubuntu服务器折腾集](https://blog.csdn.net/jh1513/article/details/145222679。安装seafile参考资料Docker安装Seafile+OnlyOffice并配置OnlyOffice到Seafile,实现在线编辑功能官方教程用Docke
- springboot配置logback日志
hrthntyj
springbootlogbackjava
SpringBoot的默认日志框架选用的是Logback)在需要记录日志的地方加上staticLoggerlogger=LoggerFactory.getLogger(Main.class);就可以使用logger.info()显示日志Logger的默认日志级别是INFO级别的,也就是说小于INFO级别的日志都不会记录,只有大于等于INFO级别的日志才会被记录。Logback的日志级别是这样的:T
- SpringBoot logback日志配置
erghtt
程序员springbootlogback后端
日志文件在达到10MB时进行切割,产生一个新的日志文件(如:spring.1.log、spring.2.log),新的日志依旧输出到spring.log中去,默认情况下会记录ERROR、WARN、INFO级别消息。logging.file.max-size:限制日志文件大小logging.file.max-history:限制日志保留天数自定义日志配置由于日志在ApplicationContext
- springboot3配置日志logback
cq_run
logbackjavaspringboot
当前springboot版本为3.3.4之后版本与之前版本配置不同1.引入依赖org.springframework.bootspring-boot-starter-logging3.3.42.配置文件application.ymllogging:file:name:spring_log.logpath:./logsconfig:classpath:logback-spring.xmlsrc/ma
- 保护你的会话令牌
博文视点
信息安全技术ESAPIOWASPTop10webWebWEB会话安全
保护你的会话令牌通常我们会采取以下的措施来保护会话。1.采用强算法生成SessionID正如我们前面用WebScrab分析的那样,会话ID必须具有随机性和不可预测性。一般来说,会话ID的长度至少为128位。下面我们就拿常见的应用服务器Tomcat来说明如何配置会话ID的长度和生成算法。首先我们找到{TOMCAT_HOME}\conf\context.xml,然后加入下面一段设置➊定义会话ID的长度
- SpringBoot应用自定义logback日志
小二上酒8
springbootlogbackjava数据库数据结构
概述默认情况下,SpringBoot内部使用logback作为系统日志实现的框架,将日志输出到控制台,不会写到日志文件。如果在application.properties或application.yml配置,这样只能配置简单的场景,保存路径、日志格式等。复杂的场景(区分info和error的日志、每天产生一个日志文件等)满足不了,只能自定义配置文件logback-spring.xml或者logba
- Conda与Bash的完美融合:激活你的开发环境
2401_85760095
condabash开发语言
Conda与Bash的完美融合:激活你的开发环境在Python开发者的日常工作中,Conda不仅作为包管理器,更是一个强大的环境管理工具。为了在bashshell中使用Conda创建的环境,需要进行初始化操作。condainitbash命令正是为此设计的,它可以修改bash的配置文件,使得Conda的环境能够在每次启动bashshell时自动激活。本文将详细介绍如何使用condainitbash命
- 在 Windows 下利用 `.pem` 文件配置 VS Code Remote-SSH 连接远程服务器
微凉的衣柜
系统设置ssh服务器运维
在日常开发中,使用VSCode的Remote-SSH插件可以方便地通过SSH连接远程服务器,实现本地开发与调试的无缝衔接。然而,在Windows系统下,如果使用.pem私钥文件,配置过程中可能会遇到权限或路径相关问题。本文将详细讲解如何在Windows下通过.pem文件配置VSCode连接远程服务器。1.准备工作在开始之前,请确保您已经具备以下条件:VSCode已安装,并安装了Remote-SSH
- 【SpringBoot】【log】 自定义logback日志配置
m0_74823561
springbootlogbackjava
前言:默认情况下,SpringBoot内部使用logback作为系统日志实现的框架,将日志输出到控制台,不会写到日志文件。如果在application.properties或application.yml配置,这样只能配置简单的场景,保存路径、日志格式等。复杂的场景(区分info和error的日志、每天产生一个日志文件等)满足不了,只能自定义配置文件logback-spring.xml。一、app
- Nginx正向代理配置
KwokRoot
NginxLinuxDevOpsnginx运维
Nginx正向代理默认只支持http协议,不支持https协议,需借助"ngx_http_proxy_connect_module"模块实现https正向代理,详情请参考:https://github.com/chobits/ngx_http_proxy_connect_module安装Nginx某些模块会用到的系统类库yuminstall-ydnfinstalllibxml2libxml2-de
- MySQL字段约束条件,外键约束条件,表关系
Yietong309
MySQL数据库mysql数据库开发语言
目录字符编码与配置文件统一字符编码存储引擎修改存储引擎的方式自定义选项存储引擎不同存储引擎产生的表文件有几个?MERGEInnoDBArchiveBLACKHOLEblackhole与memory存取数据的特征Blackhole:丢弃写操作,读操作会返回空内容Memory:置于内存的表创建表的完整语法字段类型之整型字段类型之浮点型字段类型之字符类型字段类型之枚举与集合字段类型之日期类型约束条件自增
- 网络实验——使用GNS3进行NAT配置
浅浅爱默默
网络
一、NAT1、概念NAT:网络地址转换实现将内网私有IP地址转换为公网IP地址解决公网IP地址数目不足的问题可保护内网IP地址的私密性,起到一定的安全性还可实现企业内多个私有IP网段重叠问题2、NAT分类静态NAT:唯一的私有IP------映射------唯一的公网IP(映射关系确定,永久保存)动态NAT:多个私有IP------映射------多个公网IP(映射关系不确定,向外访问时建立映射关
- 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