- C#设计模式--状态模式(State Pattern)
夜空晚星灿烂
C#设计模式之旅c#设计模式开发语言
状态模式是一种行为设计模式,它允许对象在其内部状态发生变化时改变其行为。这种模式的核心思想是将状态封装在独立的对象中,而不是将状态逻辑散布在整个程序中。用途简化复杂的条件逻辑:通过将不同的状态封装在不同的类中,可以避免大量的条件语句,使代码更清晰、更易于维护。提高可扩展性:添加新的状态或修改现有状态的行为时,只需修改或新增相应的状态类,而不需要修改现有的代码。提高代码的复用性:状态对象可以在多个上
- 双向绑定需要 Path 或 XPath
为五毛钱折腰
遇到的问题wpf
解决方法:{Bingding}写绑定的具体的属性上去
- 简单爬取一下电影排行
孟婆来包棒棒糖~
数据库python爬虫
主要用到了requests和xpath来解析数据,然后储存在mysql数据库中,不过代码方面我是先写好简单实现工作,然后让ai帮我用类封装来成功实现,博主比较菜,如果有反爬措施可以找js逆向视频来学习importrequestsfromfake_useragentimportUserAgentfromlxmlimportetreeimportpymysqlfrompymysql.cursorsim
- 算法与数据结构(二叉树中的最大路径和)
a_j58
数据结构
题目思路这道题我们可以考虑用递归来解决。首先设计一个maxPath函数用来递归计算二叉树中一个节点的最大贡献值,具体来说,就是以该节点为根节点的子树中寻找以该节点为起点的一条路径,使得该路径上的节点值之和最大。如果该节点为空,则最大贡献值为0。如果非空,最大贡献值就等于节点值与其子节点中的最大贡献值之和过程分析假设二叉树如下递归步骤:1.节点20:左子树:空,leftGain=0。右子树:空,ri
- python 开启https服务
魔兽-SS
pythonpythonhttps开发语言
importjsonfromflaskimportFlask,Response,requestimportosapp=Flask(__name__)#设置SSL证书路径ssl_cert_path=os.path.join(os.path.dirname(__file__),'certs','self.crt')ssl_key_path=os.path.join(os.path.dirname(__
- mongodb副本集1主2从节点的配置方法示例
行思理
数据库运维mongodb数据库
配置MongoDB副本集(1主节点+2从节点)的步骤如下:环境准备3台服务器,分别运行MongoDB实例。确保服务器之间网络互通。安装MongoDB(版本需一致)。配置步骤1.修改MongoDB配置文件在每个节点的mongod.conf中启用副本集功能。主节点配置(primary.conf):storage:dbPath:/var/lib/mongodbreplication:replSetNam
- 设计模式|结构型模式总结
游客520
设计模式软件设计师python全栈学习python设计模式
1.介绍结构型设计模式(StructuralPatterns)主要关注类与对象的组合,以提高代码的灵活性和可维护性。这些模式帮助创建更大结构,同时保持代码的低耦合性。结构型设计模式包括以下七种:适配器模式(Adapter)桥接模式(Bridge)组合模式(Composite)装饰器模式(Decorator)外观模式(Facade)享元模式(Flyweight)代理模式(Proxy)2.适配器模式(
- 设计模式-行为型-责任链模式
游客520
设计模式软件设计师python全栈学习python开发语言责任链模式设计模式
1.责任链模式概述责任链模式(ChainofResponsibilityPattern)是一种行为型设计模式,它允许多个对象依次处理请求,形成一条处理链。每个对象都包含对下一个对象的引用,如果它无法处理请求,则将请求传递给下一个对象。责任链模式的主要特点降低耦合:请求的发送者和接收者解耦,发送者无需关心请求由谁处理。动态组合处理者:可以在运行时决定请求的处理顺序。增强灵活性:可以方便地增加或修改处
- 通俗理解-L、-rpath和-rpath-link编译链接动态库
linux运维
一、参考资料链接选项rpath的应用和原理|BewareMyPower的博客使用rpath和rpath-link确保samba-util库正确链接-CSDN博客编译参数-Wl和rpath的理解_-wl,-rpath-CSDN博客UsingLD,theGNUlinker-OptionsDirectoryOptions(UsingtheGNUCompilerCollection(GCC))交叉编译时-
- 前端项目中脚本文件打包,vscode中如何正确使用gtar命令
今天吃了嘛o
前端vscodeide
1、下载gtarhttps://gnuwin32.sourceforge.net/packages/libarchive.htm2、傻瓜式安装一路下一步即可。3、配置环境变量高级系统设置”在弹出的“系统属性”窗口中,点击“环境变量”。在“系统变量”列表中找到“Path”变量,点击“编辑”。点击“新建”,将gtar可执行文件所在的目录路径(例如C:\ProgramFiles(x86)\GnuWin3
- 设计模式--spring中用到的设计模式
帅的飞起来
设计模式设计模式springjava
一、单例模式(SingletonPattern)定义:确保一个类只有一个实例,并提供全局访问点Spring中的应用:Spring默认将Bean配置为单例模式案例:@ComponentpublicclassMySingletonBean{ //Spring默认将其管理为单例}在spring容器中,MySingletonBean只会有一个实例二、工厂模式(FactoryPattern)定义:定义一个创
- 用Python复制Word内容并使用格式设字体与大小
txlgl
网上流传的部分可以百度关键词“Python”和“word”后查看文章学习,以下内容为个人实践,修正了不能运行出错的情况。importwin32comfromwin32com.clientimportDispatch,constantsw=win32com.client.Dispatch('Word.Application')#或者使用下面的方法,使用启动独立的进程:#w=win32com.clie
- C# ASP.NET MVC项目内使用ApiController
chance_66
c#
1.在App_Start文件夹新建WebApiConfig.cs文件,建立webApi路由的注册方法。usingSystem.Web.Http;namespacePrivilegeManager{publicclassWebApiConfig{publicstaticvoidRegister(HttpConfigurationconfig){config.MapHttpAttributeRoute
- 环境变量:JAVA_HOME_8
java环境变量nacos
今天因为临时需要使用Java11,于是就安装了Java11并配置环境变量。在环境变量里看到了如下配置:变量值JAVA_HOMEC:\ProgramFiles\Java\jdk1.8Path%JAVA_HOME%\bin心想,JAVA_HOME在Path里就是一个变量,为了后面切换Java8和Java11方便,我就添加一个JAVA_HOME_11的变量,修改原JAVA_HOME为JAVA_HOME_
- LeetCode //C - 609. Find Duplicate File in System
Navigator_Z
LeetCodeleetcodec语言算法
609.FindDuplicateFileinSystemGivenalistpathsofdirectoryinfo,includingthedirectorypath,andallthefileswithcontentsinthisdirectory,returnalltheduplicatefilesinthefilesystemintermsoftheirpaths.Youmayretur
- 支付系统设计模式总结:策略模式与工厂模式的结合
I~Lucky
springboot后端策略模式设计模式
在支付系统中,为了支持多种支付方式(如支付宝、微信支付等),并保证代码的可扩展性和维护性,通常会使用策略模式和工厂模式。这两种设计模式可以很好地结合起来,以实现灵活的支付处理逻辑。设计模式简介策略模式(StrategyPattern):定义一系列算法,并将每个算法封装起来,使它们可以互换。策略模式让算法独立于使用它的客户端而变化。工厂模式(FactoryPattern):提供一个创建对象的接口,由
- spring mvc面试笔记
表面矿工
面试题springmvc面试
简述SpringMVC工作原理?SpringMVC工作原理:1:用户发送请求至前端控制器DispatcherServlet。2:DispatcherServlet收到请求调用HandlerMapping处理器映射器。3:处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4:Dispatcher
- Spring Boot 经典九设计模式全览
m0_74824552
面试学习路线阿里巴巴springboot设计模式java
在SpringBoot中,设计模式的应用广泛且重要,它们有助于提高代码的可维护性、可扩展性和复用性。以下是SpringBoot中经典的9种设计模式及其代码案例:1.单例模式(SingletonPattern)在Spring中,bean默认就是单例模式。Spring通过单例注册表的方式来实现单例,即维护一个Map来存储单例类的实例。//单例模式示例publicclassSingletonServic
- 常用的设计模式
chi_666
设计模式设计模式
设计模式是软件开发过程中针对反复出现的问题所总结归纳出的通用解决方案。以下为你介绍常见的设计模式,并结合常用框架给出相应示例。创建型模式创建型模式主要用于对象的创建过程,封装了对象创建的细节,提高了代码的灵活性和可维护性。单例模式(SingletonPattern)模式说明:确保一个类只有一个实例,并提供一个全局访问点。框架示例:在Spring框架中,默认情况下,Bean的作用域是单例的。也就是说
- 线程(1)
窜天猴牛逼
javajvm算法
一、前情回顾chdir();功能:函数用于改变当前进程的工作目录。参数:路径(Path):这是一个字符串参数,表示要切换到的目标目录的路径。返回值:成功:在成功改变当前工作目录时,chdir()函数通常返回0失败:如果因为某些原因(如路径不存在、权限不足等)无法改变目录,chdir()函数将返回一个错误码(在C语言中,如-1)二、线程轻量级进程线程是cpu任务调度的最小单位1.线程的创建线程由某个
- 前端控制器模式
wjs2024
开发语言
前端控制器模式引言在软件设计模式中,前端控制器模式(FrontControllerPattern)是一种行为型设计模式。它提供了一种集中处理请求的机制,将请求分发到相应的处理者,从而简化了请求的处理流程。本文将详细介绍前端控制器模式的概念、原理、实现方法以及在实际开发中的应用。概念前端控制器模式的核心思想是将所有请求统一由一个控制器处理,控制器根据请求类型将请求分发到相应的处理者。这种模式适用于以
- springboot中配置logback-spring.xml
web13688565871
面试学习路线阿里巴巴springspringbootlogback
一、在src/main/resources目录下,也就是在classpath路径下创建logback-spring.xml注:springboot框架自动配置,如果更换名称,可在配置文件指定该文件即可-->%d{yyyy-MM-ddHH:mm:ss}[%thread]%-5level%logger{80}-%msg%n${log_dir}/info.logINFOACCEPTDENY${log_d
- Flutter鸿蒙项目—如何添加对华为鸿蒙系统的支持
不入流HarmonyOS开发
鸿蒙HarmonyOSOpenHarmonyflutterharmonyos华为OpenHarmony鸿蒙应用开发鸿蒙开发鸿蒙
1.DevEcoStudio4.0Release版鸿蒙环境安装打开IDE,按照引导,安装环境即可,注意,nodejs选择v16.20。Mac下,在.bash_profile配置如下环境变量exportPATH=/Users/用户名/Documents/DevEcoProjects/dev/bin:$PATHexportNODE_HOME=/Users/用户名/nodejsexportPATH=$N
- 解析Spring:架构与组件
党和人民
技术理论spring
DispatcherServletDispatcherServlet是SpringMVC的前端控制器,它负责接收所有的HTTP请求,并将请求分发到相应的处理器。它是整个SpringMVC框架的核心组件。初始化:DispatcherServlet在启动时会初始化一系列的组件,如HandlerMapping、HandlerAdapter、ViewResolver等。请求处理:接收到请求后,Dispat
- Node.js 内置模块简介(带示例)
浪九天
node.jsnode.js开发语言前端
目录1.fs(文件系统)模块2.http模块3.path模块4.os模块5.events模块6.crypto模块1.fs(文件系统)模块fs模块提供了与文件系统进行交互的功能,包括文件的读写、删除、重命名等操作。它有同步和异步两种操作方式,异步操作能避免阻塞事件循环,在处理大量文件或高并发场景中更常用。示例:异步读取文件内容constfs=require('fs');//异步读取文件fs.read
- Node.js学习01-初识Node.js与内置模块
Meowmow
nodejsnode.js学习javascript
目录初识Node.js在Node.js环境执行js代码内置模块fs文件系统模块路径动态拼接问题path路径模块http模块request请求对象初识Node.jsNode.js是基于ChromeV8引擎的JavaScript运行环境,无法调用DOM和BOM等浏览器内置API。使用Node.js可以:基于Express框架快速搭建web应用基于Electron框架构建跨平台的桌面应用基于restif
- [C#]C#移动文件报错完全限定文件名必须少于 260 个字符,并且目录名必须少于 248 个字符
FL1623863129
C#c#开发语言
C#使用File.Move会报错:错误信息:Thespecifiedpath,filename,orbotharetoolong.Thefullyqualifiedfilenamemustbelessthan260characters,andthedirectorynamemustbelessthan248characters.大概的意思就是:指定的路径或文件名太长,或者两者都太长。完全限定文件名
- 【问题解决】org.springframework.web.util.NestedServletException Handler dispatch failed;
m0_74825260
面试学习路线阿里巴巴前端
详细异常信息:org.springframework.web.util.NestedServletException:Handlerdispatchfailed;nestedexceptionisjava.lang.NoClassDefFoundError:javax/xml/bind/DatatypeConverteratorg.springframework.web.servlet.Dispa
- C语言标准IO是什么?
Oracle_666
linux
C语言标准I/O库提供了一系列函数,用于执行文件输入和输出操作。这些函数遵循ANSIC标准,并在头文件中声明。以下是C语言标准I/O库中一些主要函数的详细解析:1.文件操作函数1.1fopen•功能:用于打开一个文件,并返回一个指向FILE对象的指针。•原型:FILE*fopen(constchar*pathname,constchar*mode);•参数:•pathname:文件路径和名称。•m
- 【Camrea2录制视频报错问题修复java.lang.IllegalArgumentException: Surface was abandoned】
weixin_37659322
音视频java开发语言
问题现象修改后的代码在机器正常intrecordTime=10*60*1000;try{FilevedioTempPath=newFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/video/temp/");if(!vedioTempPath.exists()){vedioTempPath.mkdirs();}ve
- 对于规范和实现,你会混淆吗?
yangshangchuan
HotSpot
昨晚和朋友聊天,喝了点咖啡,由于我经常喝茶,很长时间没喝咖啡了,所以失眠了,于是起床读JVM规范,读完后在朋友圈发了一条信息:
JVM Run-Time Data Areas:The Java Virtual Machine defines various run-time data areas that are used during execution of a program. So
- android 网络
百合不是茶
网络
android的网络编程和java的一样没什么好分析的都是一些死的照着写就可以了,所以记录下来 方便查找 , 服务器使用的是TomCat
服务器代码; servlet的使用需要在xml中注册
package servlet;
import java.io.IOException;
import java.util.Arr
- [读书笔记]读法拉第传
comsci
读书笔记
1831年的时候,一年可以赚到1000英镑的人..应该很少的...
要成为一个科学家,没有足够的资金支持,很多实验都无法完成
但是当钱赚够了以后....就不能够一直在商业和市场中徘徊......
- 随机数的产生
沐刃青蛟
随机数
c++中阐述随机数的方法有两种:
一是产生假随机数(不管操作多少次,所产生的数都不会改变)
这类随机数是使用了默认的种子值产生的,所以每次都是一样的。
//默认种子
for (int i = 0; i < 5; i++)
{
cout<<
- PHP检测函数所在的文件名
IT独行者
PHP函数
很简单的功能,用到PHP中的反射机制,具体使用的是ReflectionFunction类,可以获取指定函数所在PHP脚本中的具体位置。 创建引用脚本。
代码:
[php]
view plain
copy
// Filename: functions.php
<?php&nbs
- 银行各系统功能简介
文强chu
金融
银行各系统功能简介 业务系统 核心业务系统 业务功能包括:总账管理、卡系统管理、客户信息管理、额度控管、存款、贷款、资金业务、国际结算、支付结算、对外接口等 清分清算系统 以清算日期为准,将账务类交易、非账务类交易的手续费、代理费、网络服务费等相关费用,按费用类型计算应收、应付金额,经过清算人员确认后上送核心系统完成结算的过程 国际结算系
- Python学习1(pip django 安装以及第一个project)
小桔子
pythondjangopip
最近开始学习python,要安装个pip的工具。听说这个工具很强大,安装了它,在安装第三方工具的话so easy!然后也下载了,按照别人给的教程开始安装,奶奶的怎么也安装不上!
第一步:官方下载pip-1.5.6.tar.gz, https://pypi.python.org/pypi/pip easy!
第二部:解压这个压缩文件,会看到一个setup.p
- php 数组
aichenglong
PHP排序数组循环多维数组
1 php中的创建数组
$product = array('tires','oil','spark');//array()实际上是语言结构而不 是函数
2 如果需要创建一个升序的排列的数字保存在一个数组中,可以使用range()函数来自动创建数组
$numbers=range(1,10)//1 2 3 4 5 6 7 8 9 10
$numbers=range(1,10,
- 安装python2.7
AILIKES
python
安装python2.7
1、下载可从 http://www.python.org/进行下载#wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
2、复制解压
#mkdir -p /opt/usr/python
#cp /opt/soft/Python-2
- java异常的处理探讨
百合不是茶
JAVA异常
//java异常
/*
1,了解java 中的异常处理机制,有三种操作
a,声明异常
b,抛出异常
c,捕获异常
2,学会使用try-catch-finally来处理异常
3,学会如何声明异常和抛出异常
4,学会创建自己的异常
*/
//2,学会使用try-catch-finally来处理异常
- getElementsByName实例
bijian1013
element
实例1:
<!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/1999/x
- 探索JUnit4扩展:Runner
bijian1013
java单元测试JUnit
参加敏捷培训时,教练提到Junit4的Runner和Rule,于是特上网查一下,发现很多都讲的太理论,或者是举的例子实在是太牵强。多搜索了几下,搜索到两篇我觉得写的非常好的文章。
文章地址:http://www.blogjava.net/jiangshachina/archive/20
- [MongoDB学习笔记二]MongoDB副本集
bit1129
mongodb
1. 副本集的特性
1)一台主服务器(Primary),多台从服务器(Secondary)
2)Primary挂了之后,从服务器自动完成从它们之中选举一台服务器作为主服务器,继续工作,这就解决了单点故障,因此,在这种情况下,MongoDB集群能够继续工作
3)挂了的主服务器恢复到集群中只能以Secondary服务器的角色加入进来
2
- 【Spark八十一】Hive in the spark assembly
bit1129
assembly
Spark SQL supports most commonly used features of HiveQL. However, different HiveQL statements are executed in different manners:
1. DDL statements (e.g. CREATE TABLE, DROP TABLE, etc.)
- Nginx问题定位之监控进程异常退出
ronin47
nginx在运行过程中是否稳定,是否有异常退出过?这里总结几项平时会用到的小技巧。
1. 在error.log中查看是否有signal项,如果有,看看signal是多少。
比如,这是一个异常退出的情况:
$grep signal error.log
2012/12/24 16:39:56 [alert] 13661#0: worker process 13666 exited on s
- No grammar constraints (DTD or XML schema).....两种解决方法
byalias
xml
方法一:常用方法 关闭XML验证
工具栏:windows => preferences => xml => xml files => validation => Indicate when no grammar is specified:选择Ignore即可。
方法二:(个人推荐)
添加 内容如下
<?xml version=
- Netty源码学习-DefaultChannelPipeline
bylijinnan
netty
package com.ljn.channel;
/**
* ChannelPipeline采用的是Intercepting Filter 模式
* 但由于用到两个双向链表和内部类,这个模式看起来不是那么明显,需要仔细查看调用过程才发现
*
* 下面对ChannelPipeline作一个模拟,只模拟关键代码:
*/
public class Pipeline {
- MYSQL数据库常用备份及恢复语句
chicony
mysql
备份MySQL数据库的命令,可以加选不同的参数选项来实现不同格式的要求。
mysqldump -h主机 -u用户名 -p密码 数据库名 > 文件
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump -–add-drop-table -uusername -ppassword databasename > ba
- 小白谈谈云计算--基于Google三大论文
CrazyMizzz
Google云计算GFS
之前在没有接触到云计算之前,只是对云计算有一点点模糊的概念,觉得这是一个很高大上的东西,似乎离我们大一的还很远。后来有机会上了一节云计算的普及课程吧,并且在之前的一周里拜读了谷歌三大论文。不敢说理解,至少囫囵吞枣啃下了一大堆看不明白的理论。现在就简单聊聊我对于云计算的了解。
我先说说GFS
&n
- hadoop 平衡空间设置方法
daizj
hadoopbalancer
在hdfs-site.xml中增加设置balance的带宽,默认只有1M:
<property>
<name>dfs.balance.bandwidthPerSec</name>
<value>10485760</value>
<description&g
- Eclipse程序员要掌握的常用快捷键
dcj3sjt126com
编程
判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键盘一是为了输入代码(当然了,也包括注释),再有就是熟练使用快捷键。 曾有人在豆瓣评
《卓有成效的程序员》:“人有多大懒,才有多大闲”。之前我整理了一个
程序员图书列表,目的也就是通过读书,让程序员变懒。 程序员作为特殊的群体,有的人可以这么懒,懒到事情都交给机器去做,而有的人又可以那么勤奋,每天都孜孜不倦得
- Android学习之路
dcj3sjt126com
Android学习
转自:http://blog.csdn.net/ryantang03/article/details/6901459
以前有J2EE基础,接触JAVA也有两三年的时间了,上手Android并不困难,思维上稍微转变一下就可以很快适应。以前做的都是WEB项目,现今体验移动终端项目,让我越来越觉得移动互联网应用是未来的主宰。
下面说说我学习Android的感受,我学Android首先是看MARS的视
- java 遍历Map的四种方法
eksliang
javaHashMapjava 遍历Map的四种方法
转载请出自出处:
http://eksliang.iteye.com/blog/2059996
package com.ickes;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
/**
* 遍历Map的四种方式
- 【精典】数据库相关相关
gengzg
数据库
package C3P0;
import java.sql.Connection;
import java.sql.SQLException;
import java.beans.PropertyVetoException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DBPool{
- 自动补全
huyana_town
自动补全
<!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/1999/xhtml&quo
- jquery在线预览PDF文件,打开PDF文件
天梯梦
jquery
最主要的是使用到了一个jquery的插件jquery.media.js,使用这个插件就很容易实现了。
核心代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.
- ViewPager刷新单个页面的方法
lovelease
androidviewpagertag刷新
使用ViewPager做滑动切换图片的效果时,如果图片是从网络下载的,那么再子线程中下载完图片时我们会使用handler通知UI线程,然后UI线程就可以调用mViewPager.getAdapter().notifyDataSetChanged()进行页面的刷新,但是viewpager不同于listview,你会发现单纯的调用notifyDataSetChanged()并不能刷新页面
- 利用按位取反(~)从复合枚举值里清除枚举值
草料场
enum
以 C# 中的 System.Drawing.FontStyle 为例。
如果需要同时有多种效果,
如:“粗体”和“下划线”的效果,可以用按位或(|)
FontStyle style = FontStyle.Bold | FontStyle.Underline;
如果需要去除 style 里的某一种效果,
- Linux系统新手学习的11点建议
刘星宇
编程工作linux脚本
随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。这里介绍学习Linux的一些建议。
一、从基础开始:常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的。例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不是很难的,只要了解了 Linu
- hibernate dao层应用之HibernateDaoSupport二次封装
wangzhezichuan
DAOHibernate
/**
* <p>方法描述:sql语句查询 返回List<Class> </p>
* <p>方法备注: Class 只能是自定义类 </p>
* @param calzz
* @param sql
* @return
* <p>创建人:王川</p>
* <p>创建时间:Jul