- Spring Boot 配置文件常用配置属性详解(application.properties / application.yml)
前言SpringBoot的一大优势就是通过简单的配置文件即可快速定制应用行为,而无需编写大量XML配置或Java代码。SpringBoot使用application.properties或application.yml作为核心配置文件,支持丰富的配置属性。本文将详细介绍SpringBoot常用的配置属性,包括:服务器配置数据源配置JPA/Hibernate配置日志配置Thymeleaf/模板引擎配
- 框架面试题21SessionBean和EntityBean的区别?
理解SessionBean和EntityBean的区别是掌握传统JavaEE(J2EE)EJB架构的关键。它们代表了应用程序中不同的角色和责任。不过,需要特别强调:EntityBean在EJB3.0(2006年)及以后的版本中已被废弃,并被JPA(JavaPersistenceAPI)实体所取代。以下解释主要基于EJB2.x时代的概念,这对于理解历史代码或架构演变仍然重要。核心区别总结:特性Ses
- Spring Boot应用程序集成H2数据库
以下是一个SpringBoot应用程序,集成H2数据库实现数据的存储和查询。我们将使用SpringDataJPA模块来实现这个示例。创建SpringBoot项目首先,确保你在项目的pom.xml文件中添加了以下依赖:org.springframework.bootspring-boot-starter-data-jpaorg.springframework.bootspring-boot-star
- Spring @Repository注解深度解析与实践
bemyrunningdog
springbootsql数据库
以下是在您提供的@Repository注解解析基础上补充完善的系统化学习笔记,结合核心机制、实践细节及扩展场景,保留原有框架的同时增强深度与实用性:一、核心作用与定位(增强解析)组件注册与异常转换的双重角色Bean注册:继承自@Component,被@ComponentScan扫描后注册为SpringBean。异常统一化:通过AOP代理捕获JDBC/JPA/Hibernate等原生异常,转换为Sp
- 如何提高JPA项目的扩展性:模块解耦的实践与策略
在企业级开发中,JPA(JavaPersistenceAPI)因其对象关系映射的强大能力,常被用于构建业务层与数据层之间的桥梁。然而,随着项目复杂度增加,JPA项目常常面临模块之间强依赖、跨模块实体耦合、难以演进等问题,严重影响系统的可扩展性和可维护性。相比之下,MyBatis项目由于其“SQL即服务”的特性,天然具备更强的解耦性。本文将分析JPA项目中常见的模块依赖问题,探讨其背后的原因,并提供
- 实时时间钟表
命苦的孩子
java梦javajvmspring
目录一、前提二、代码2.1窗口2.2时间显示三、代码整合一、前提在之前我们学会了JDK时间相关类,那我们就来小小地利用它来写一个”小玩意儿”。没看过的快去看一遍,在初识JDK时间相关类二、代码2.1窗口首先,你是不是得有一个窗口,那就用得上Swing了。importjavax.swing.*;publicclasstestextendsJFrame{privateJPanelwindonpanel
- 第5章:数据访问层
liangxh2010
微服务后端架构
5.1SpringDataJPA使用文字讲解SpringDataJPA是SpringData项目的一部分,旨在极大地简化JPA(JavaPersistenceAPI)的使用。它通过提供基于Repository接口的编程模型,让我们无需编写任何实现代码就能完成大多数数据访问操作。核心概念:Entity:一个使用@Entity注解的普通Java对象(POJO),它映射到数据库中的一张表。Reposit
- Oracle分区表插入数据库时间时报ORA-14400
Indestructible
使用springdatajpa插入数据时,需要表中的createtime保存为数据库时间,而不是应用服务器时间,实现这个功能只需要在实体类上面加@DynamicInsert就可以了。代码如下:@Entity@Table(name="ENTITY")@DynamicInsertpublicclassEntity{@Column(nullable=false)privateDatecreatetime
- SpringBoot 与 JPA 整合全解析:架构优势、应用场景、集成指南与最佳实践
hdsoft_huge
SpringBoot教程springboot架构java
文章目录一、SpringBoot与JPA技术概述1.1SpringBoot核心特性1.2JPA核心价值二、SpringBoot+JPA架构优势2.1开发效率提升2.2代码可维护性增强2.3测试便利性2.4生产就绪特性三、SpringBoot+JPA适用场景3.1企业级应用开发3.2RESTfulAPI开发3.3微服务架构3.4数据密集型应用四、SpringBoot与JPA集成步骤4.1项目初始化4
- SQL 的艺术(续):用 MyBatis-Plus 精雕细琢“外科手术”级更新接口 ✨
小丁学Java
MyBatisPlussqlmybatis数据库
我们再次切换到“SQL工匠”模式,用MyBatis-Plus来实现这个同样复杂的updateSolutionBrand接口。使用MyBatis-Plus实现这个接口,将再次凸显它与JPA在处理事务、部分更新和关联更新方面的巨大差异。这篇博客将重点展示如何通过手写SQL和精巧的逻辑编排,来完成这次“外科手术”。⚔️SQL的艺术(续):用MyBatis-Plus精雕细琢“外科手术”级更新接口你好,我是
- 排序的艺术:Spring Data JPA 如何玩转关联实体排序 (. 运算符的奥秘) ✨
小丁学Java
SpringDataJPAjpa
这次我们来深入探讨SpringDataJPA分页排序中一个非常实用但又容易混淆的技巧:如何优雅地对关联实体(或嵌套属性)进行排序。排序的艺术:SpringDataJPA如何玩转关联实体排序(.运算符的奥秘)你好,我是坚持哥!在构建Web应用时,分页查询是家常便饭。SpringDataJPA(JavaPersistenceAPI)提供了强大的Pageable接口,让分页和排序变得异常简单。但当你的排
- SpringBoot3+JPA+MySQL实现多数据源的读写分离(基于EntityManagerFactory)
没刮胡子
java软件开发技术实战专栏SpringBoot3JPAMySQL多数据源读写分离
1、简介在SpringBoot中配置多个数据源并实现自动切换EntityManager,这里我编写了一个RoutingEntityManagerFactory和AOP(面向切面编程)的方式来实现。这里我配置了两个数据源:primary和secondary,其中primary主数据源用来写入数据,secondary从数据源用来读取数据。注意1:使用Springboot3的读写分离,首先要保证主库和从
- spring-data-jpa+spring+hibernate+druid配置
参考链接:http://doc.okbase.net/liuyitian/archive/109276.htmlhttp://my.oschina.net/u/1859292/blog/312188最新公司的web项目需要用到spring-data-jpa作为JPA的实现框架,同时使用阿里巴巴的开源数据库连接池druid。关于这两种框架的介绍我在这里就不多赘述。直接进入配置页面:spring的配置
- Spring Data Jpa +alibaba druid+query dsl 实现多数据源
下海揽月
springdatajpajava
SpringDataJpa+alibabadruid+querydsl实现多数据源,主要通过配置来实现多个数据源的操作,无需动态切换1.maven配置org.springframework.bootspring-boot-starter-data-jpa2.3.12.RELEASEcom.alibabadruid-spring-boot-starter1.1.24com.querydslquery
- Spring Boot + Spring JPA + JDBC + Druid实现动态数据源切换
Apr01Chell
代码片段springjava数据库
SpringBoot+SpringJPA+JDBC+Druid实现动态数据源切换目录SpringBoot+SpringJPA+JDBC+Druid实现动态数据源切换AbstractRoutingDataSource源码分析需求代码实现DynamicDataSourceDBContextHolderDruidDbConfigDataSourcePropertiesAllDataSourcesExec
- ORM框架实战:MyBatis与JPA深度对比及企业级开发全攻略(终极优化版)
Android洋芋
mybatistomcatjavaORM框架数据库优化
一、ORM框架技术演进与选型策略1.1ORM框架的演进史JDBC时代:手动管理连接池、事务、SQL注入风险。Hibernate/JPA:2006年JPA标准化,推动ORM框架自动化。MyBatis:2010年诞生,强调SQL控制权,解决Hibernate“过度自动化”问题。2020年后趋势:MyBatis-Plus:提供Lambda表达式、自动分页等功能。SpringDataJPA:通过方法名自动
- Spring Data JPA基本方法调用规律
goxingman
JPAwindows
一、命名规则核心逻辑派生方法名由三部分组成:findBy+属性名+条件,其中:前缀(固定关键词):findBy、deleteBy、countBy、existsBy等。属性名:实体类的字段名(需严格匹配驼峰命名)。条件:可选,如GreaterThan、LessThan、Like等。示例://方法名=前缀+属性名+条件ListfindByAgeGreaterThan(intage);//查询年龄大于a
- Spring Data REST极速构建REST API
代码的余温
springjava后端springboot
SpringDataREST是SpringData项目家族中的一个子项目,它构建在SpringDataRepositories(如SpringDataJPA、SpringDataMongoDB等)之上,旨在自动将你的数据模型(实体)和SpringDataRepository暴露为超媒体驱动的RESTfulWeb服务。它的核心目标是极大简化构建围绕数据的RESTAPI的过程。核心思想:约定优于配置:
- springboot + neo4j 功能使用
风行傲天
springbootneo4jwindows
注意:1、使用jpa处理数据时,如果对象中有relationship关系,数据中没有写关系,更新数据时会将原有的关系删除掉(出来方法可以先查询出原来的数据,然后在编辑)2、集成添加依赖org.springframework.bootspring-boot-starter-data-neo4jspring:#neo4j图数据库neo4j:uri:bolt://localhost:7687authen
- Spring Boot多数据源实现方案深度对比:优缺点分析与实战指南
xiaoyu❅
java#springbootspringboot后端java
目录一、为什么需要多数据源?二、5大主流实现方案对比三、方案实现详解方案1:手动配置多DataSource(基础版)方案2:AbstractRoutingDataSource(动态路由)方案3:MyBatis-Plus多数据源(推荐)方案4:JPA多数据源配置方案5:ShardingSphere(企业级方案)四、事务管理解决方案1.分布式事务(XA协议)2.BASE柔性事务五、性能优化策略1.连接
- 01.SpringBoot集成持久层框架MyBatis详细指南
全栈凯哥
全栈项目springbootmybatis后端
文章目录1.MyBatis简介1.1什么是MyBatis?1.2MyBatis的核心特点1.3MyBatisvsJPA/Hibernate1.3.1MyBatis的优势1.3.2JPA/Hibernate的优势1.4MyBatis核心组件1.4.1SqlSessionFactory1.4.2SqlSession1.4.3Mapper接口1.4.4Configuration2.SpringBoot集
- 如何用 Spring Boot 轻松集成数据库:JPA 与 MyBatis 实践
zhyoobo
springboot数据库mybatisjava开发语言设计模式
一、持久层技术选型之道1.1ORM框架的哲学分野在Java生态中,JPA与MyBatis代表着两种截然不同的设计理念。JPA(JavaPersistenceAPI)作为规范化的ORM标准,强调面向对象思维与声明式编程,而MyBatis则延续了SQL原生的灵活性与控制力。SpringBoot通过自动配置机制,为两种技术提供了无缝集成方案。据统计,2023年StackOverflow开发者调查显示,J
- MyBatis架构原理解析:核心对象与执行流程深度剖析
一、开篇:理解MyBatis的核心价值在当今Java持久层框架生态中,MyBatis凭借其灵活的SQL控制能力和简洁的ORM实现成为企业级应用的首选。与JPA的全自动ORM不同,MyBatis采用半自动化映射理念,在保持SQL灵活性的同时,通过智能映射减少70%的JDBC样板代码。开发者直接编写SQLMyBatis核心引擎自动参数绑定结果集映射事务管理JDBC本文将深入剖析MyBatis的架构核心
- application.yml 文件配置解析
前端小努力
springboot
application.yml文件配置解析application.yml文件是SpringBoot应用程序中用于配置各种属性的主要文件之一。它可以配置的内容非常广泛,包括但不限于以下几类:服务器配置端口号服务器地址会话管理SSL配置数据源配置数据库URL用户名和密码JDBC驱动类名连接池配置JPA和Hibernate配置DDL自动更新策略SQL显示方言配置日志配置日志级别日志文件路径安全性配置基本
- MySQL(114)如何进行数据库负载均衡?
辞暮尔尔-烟火年年
MySQL数据库mysql负载均衡
为了进行数据库负载均衡,我们可以使用SpringBoot和MySQL,并结合AbstractRoutingDataSource来实现数据源的动态切换。下面的实现包括配置多数据源、定义数据源上下文和实现负载均衡策略(如轮询和随机)。项目依赖首先在pom.xml中添加必要的依赖:org.springframework.bootspring-boot-starter-data-jpamysqlmysql
- 基于springboot+mysql+jpa+html实现商品销售信息系统
五星资源
springbootmysqljava
基于springboot+mysql+jpa+html实现商品销售信息系统一、系统介绍1、系统主要功能:2.涉及技术框架:3.本项目所用环境:二、功能展示三、其它系统四、获取源码一、系统介绍1、系统主要功能:订单管理模块商品管理模块品牌管理模块分类管理模块客户管理模块供应商管理模块2.涉及技术框架:web框架:SpringBoot数据库框架:SpingDataJPA数据库:MySql项目构建工具:
- Spring Boot 实现不同用户不同访问权限
周凡123
springbootjava
前提近期在使用SpringBoot,用户角色被分为管理者和普通用户;角色不同,权限也就存在不同。在SpringBoot里实现不同用户拥有不同访问权限,可借助SpringSecurity框架达成。实现1.添加必要依赖首先要在pom.xml里添加SpringSecurity和JPA的依赖。org.springframework.bootspring-boot-starter-securityorg.s
- springboot中@Transactional注解的使用
风也温柔1
springbootspringboot后端java
1、引入依赖首先,确保你的SpringBoot项目中包含了对事务支持的依赖。对于大多数应用场景,SpringBoot会自动引入事务管理相关的依赖。但如果你需要手动添加,可以检查spring-boot-starter-data-jpa(针对JPA)或spring-boot-starter-jdbc(针对JDBC)等起步依赖是否已经存在于你的pom.xml或build.gradle文件中。2、使用@T
- Springboot --- 整合spring-data-jpa和spring-data-elasticsearch
百世经纶『一页書』
SpringbootJavaspringboot
Springboot---整合spring-data-jpa和spring-data-elasticsearch1.依赖2.配置文件3.代码部分3.1Entity3.2Repository3.3Config3.4Service3.5启动类3.6Test3.7项目结构SpringBoot:整合Ldap.SpringBoot:整合SpringDataJPA.SpringBoot:整合Elasticse
- vue3 vs asp.net mvc
fyifei0558
开发语言
package.json≈.csprojpackage-lock.json≈packages.lock.jsonvite.config.js≈Startup.cs/Program.cs/configfilesindex.html≈_Layout.cshtmlpublic/≈wwwroot/
- 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