- md5加密
落地成佛
using(MD5md5=MD5.Create()){byte[]byteHash=md5.ComputeHash(System.Text.Encoding.Default.GetBytes(s));stringstrRes=BitConverter.ToString(byteHash).Replace("-","");returnstrRes.ToUpper();}
- js操作样式
郝加升
DOM样式属性和方法:指定的元素,它的style有这么几个属性和方法:cssText:通过这个属性可以访问到元素的特性style设置的属性,并且可以直接赋值设置。removeProperty(属性名称):从样式中删除给定属性。setProperty(属性名称,值,权重):可以通过这个方法设置给定样式的同时设置其权重,可以传入”important”或者一个空字符串。获取计算后样式:window.ge
- mysql复习
立夏的李子
mysql数据库database
mysqlselect语法selectfromjoinwheregroupbyhavingorderbylimit联合查询innerjoin()leftjoin(以左表为基准,匹配右表,不匹配的返回左表,右表以null值填充)rightjoind··(去除列重复的数据)索引类型主键索引(PrimaryKey)唯一索引(Unique)常规索引(Index)全文索引(FullText)索引准则索引不是
- K8s常用的命令
尚未来-
运维k8s
一、基础命令查看集群信息bashkubectlcluster-info#显示集群端点和服务信息查看节点bashkubectlgetnodes#列出所有节点kubectldescribenode#查看节点详细信息查看命名空间bashkubectlgetnamespaces#列出所有命名空间切换命名空间bashkubectlconfigset-context--current--namespace=二
- Qt 下拉框QComboBox控件:从入门到实战
一、QComboBox核心功能解析1.核心属性属性说明当前示例场景count列表项总数统计学历下拉框中的选项数量editable是否允许用户编辑学历选择时可输入自定义学历currentText当前选中项的文本获取用户选择的"硕士"文本currentData当前选中项的附加数据获取太原对应的区号"0351"currentIndex当前选中项的索引位置(从0开始)确定"硕士"在列表中的位置2.核心方法
- webStorm使用esLint时,粘贴代码时tab跟space的问题
Aklan
之前的项目中没有引入过esLint,在上周引入后遇到一个头疼的问题。粘贴代码后,前面的空格变成了tabs图片.png困扰了将近一周的时间,都准备换编辑器了。。但是subLimeText个人感觉实在不好用,虽然webStorm很多人说不好用,但毕竟用了这么久了,习惯了,换新的编辑器感觉像自断双手,不会写东西了。所以今天实在受不了了,决定还是继续用webStorm,但要先把之前的问题解决掉。上周我就搜
- Could not extract GUID in text file UserSettings\Layouts\CurrentMaximizeLayout.dwlt at line 924.
zhannghong2003
Unityunity游戏引擎
错误提示:无法在文本文件UserSettings\Layouts\CurrentMaximizeLayout.dwlt的第924行提取GUID。UnityEngine.GUIUtility:ProcessEvent(int,intptr,bool&)这个错误发生在Unity无法解析一个损坏或格式错误的布局文件(CurrentMaximizeLayout.dwlt)时。以下是解决方法:解决方案:关闭
- 第三方库&第三方平台
lllaa
1.AFNetworking、MJRefresh、SDWebImage、Masonry、MJExtensionMBProgressHUDYYText、YYModel2.友盟分享极光推送神策TalkingData数盟可信ID能帮助APP公司在不同场景下确认设备唯一性,识别修改设备及复用、虚拟机刷量等行为,可以反作弊、防刷单,并通过数字联盟生成的设备ID和客户账户体系的关联,实时有效识别小号恶意注册等
- HarmonyOS 文件下载步骤详解
JfdCoding
harmonyos华为
在本文中,我们将详细介绍HarmonyOS中的文件下载步骤。无论是从互联网上的远程服务器下载文件,还是从本地服务器或设备上的其他应用程序下载文件,HarmonyOS提供了一套简便而强大的API,方便开发人员实现文件下载功能。步骤1:导入相关的类和接口在开始之前,我们需要在代码中导入一些HarmonyOS文件下载所需的类和接口。下面是示例代码:importohos.app.Context;impor
- Excel身份证里提取出生年月日
狼头龙
excel
Excel身份证里提取出生年月日如果身份证号码在A2单元格,出生年月日要在C2中显示,那么C2中写入一下代码:=TEXT(MID(A2,7,8),“0000年00月00日”)其中A2为身份证号所在的单元格。
- Excel根据身份证号提取信息
念念不忘 必有回响
excel学习excel
概览本篇文章主要对根据身份证号码提取出生年月日、年龄、性别、退休年龄这三项进行讲解。一.提取出生年月日公式:=TEXT(MID(B2,7,8),“0000-00-00”)MID(B2,7,8):表示从单元格B2中的字符串(这里是身份证号),从第7个字符开始,提取长度为8个字符的子串。通常这8个字符就是包含出生年月日的信息;TEXT(…,“0000-00-00”):使用TEXT函数将提取出来的出生年
- EXCEL——提取身份证中的出生年月日
William.csj
#EXCELexcel
1.用到的函数: TEXT MID2.函数语法:TEXT: 语法格式:TEXT(value,format_text) 其中,value为数字值。format_text为设置单元格格式中自己所要选用的文本格式。MID: 函数的语法格式:MID(text,start_num,num_chars) 其中,text为字符串,start_num为开始截取位置,num_chars为截取字符个数。3
- Android布局文件中的xmlns:tools
Huang兄
androidandroid
2018-01-04文章目录androidapptoolstools可以干什么ErrorhandlingattributesDesign-timeviewattributes(设计时试图属性)tools:insteadofandroidtools:contexttools:itemCounttools:layouttools:listitem/tools:listheader/tools:list
- React组件中的this指向问题
在React组件中,函数定义方式影响this指向的核心原因是箭头函数与普通函数的作用域绑定规则不同,具体差异如下:1.普通函数(function定义)需要手动bind(this)的原因当用function在组件内定义方法时:classMyComponentextendsReact.Component{handleClick(){console.log(this);//若未绑定,此处this为und
- AI+MCP智能研判系统架构
AI+MCP智能研判系统架构1.系统概述1.1核心理念AI+MCP智能研判系统是一个创新的网络安全分析平台,通过将大语言模型(LLM)的智能理解能力与MCP(ModelContextProtocol)协议的标准化工具调用能力相结合,实现了"自然语言提问→AI智能理解→MCP工具调用→AI深度研判→智能结果输出"的完整闭环。1.2技术创新点智能意图识别:基于LLM的自然语言理解,自动解析用户查询意图
- MySQL 对text类型字段添加索引
写bug的羊羊
MySQLmysql数据库
对于MySQL中的text类型字段,可以通过以下步骤向其添加索引:创建辅助字段:创建一个辅助字段,将该字段的一部分数据转移到辅助字段中。例如,可以创建一个varchar类型的字段来存储text字段的前缀。添加索引:对于辅助字段,可以使用普通的索引来加速查询操作。使用ALTERTABLE语句来添加索引,例如:ALTERTABLEyour_tableADDINDEXindex_name(auxilia
- C++ explicit 上下文相关转换
我是李武涯
c++
在C++中,“上下文相关转换”(Context-SensitiveConversion)通常指的是那些行为或有效性取决于其使用环境的类型转换。这主要通过用户定义的转换以及explicit关键字来实现,它限制了隐式转换的发生,使得转换只能在特定的语法上下文中进行。从更广泛的计算机科学理论角度来看,C++语言本身的语法分析就是上下文相关的[1][2]。这意味着解析器需要了解上下文(例如,一个标识符是否
- Spring 框架中获取 org.w3c.dom.Document 对象的完整流程
探索java
Springjavaspring
引言在Java开发中,XML是一种广泛使用的格式,用于定义配置文件、数据交换等场景。在Spring框架中,XML文件常用于配置应用程序上下文(如applicationContext.xml),或者处理外部系统传输的XML数据。org.w3c.dom.Document是JavaDOMAPI的核心接口,表示一个XML文档的树形结构,允许开发者以编程方式访问和操作XML的内容。Spring框架本身并不直
- HTTP 入门必备:基础概念、请求响应报文与 URL 完全解析
编程随想▿
HTTPhttp网络协议网络web
目录一、HTTP:万维网的通信基石核心特点HTTPS:安全的HTTP二、HTTP请求与响应报文剖析1.HTTP请求报文(Request)2.HTTP响应报文(Response)三、网址(URL)的结构详解总结:一个形象的比喻一、HTTP:万维网的通信基石HTTP(HyperTextTransferProtocol-超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是万维网(W
- 大模型基础知识(万字详解)
掘金安东尼
python机器学习人工智能
在数学上,deepseek多轮自蒸馏可以理解为对学生模型施加一系列滚动KL散度约束:LMSD=∑i=1nαi⋅KL(pTi(x)∥pSi(x))\mathcal{L}_{MSD}=\sum_{i=1}^{n}\alpha_i\cdot\text{KL}(p_{T_i}(x)\parallelp_{S_i}(x))LMSD=i=1∑nαi⋅KL(pTi(x)∥pSi(x))其中,TiT_iTi和Si
- DesktopCommanderMCP:深度部署与使用指南
皓月照山川
AI人工智能人工智能自动化运维windows
DesktopCommanderMCP:深度部署与使用指南引言DesktopCommanderMCP是一个强大的本地化模型上下文协议(ModelContextProtocol,MCP)服务器,它通过为大型语言模型(如Claude)提供与其桌面环境直接交互的能力,极大地扩展了AI助手的应用边界。它允许模型执行终端命令、管理文件系统、控制进程,从而实现从代码编写、项目构建到系统管理的端到端自动化工作流
- Chrome MCP 部署与使用教程 (最新版)
ChromeMCP部署与使用教程(最新版)1.概述ChromeMCP(ModelContextProtocol,以下简称MCPServer)是一种开源协议,旨在让AI助手(如Claude、Cursor等)能够直接与您的本地Chrome浏览器交互,实现复杂的自动化操作。它通过一个本地服务器和配套的Chrome扩展协同工作,实现对Chrome浏览器的精细化控制。核心功能与优势:原生环境交互:直接利用您
- 揭秘前端 CSS3 字体特效的实现方法
#揭秘前端CSS3字体特效的实现方法>关键词:CSS3、字体特效、text-shadow、@font-face、font-feature-settings、动画效果、Web字体>摘要:本文通过生活化的比喻和实战案例,深入解析CSS3实现字体特效的核心技术。从基础文字阴影到高级字体动画,揭秘7种酷炫效果实现原理,并提供可直接复用的代码模板。##背景介绍###目的和范围本文系统讲解CSS3实现字体特效
- leetcode--1189--“气球” 的最大数量
minningl
题目:给你一个字符串text,你需要使用text中的字母来拼凑尽可能多的单词"balloon"(气球)。字符串text中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词"balloon"。示例1:输入:text="nlaebolko"输出:1示例2:输入:text="loonbalxballpoon"输出:2示例3:输入:text="leetcode"输出:0提示:1dt={{'b'
- kh dksl.php,php中取得URL的根域名的代码
克勒kk
khdksl.php
php中取得URL的根域名的代码发布于2014-12-1310:14:08|121次阅读|评论:0|来源:网友投递PHP开源脚本语言PHP(外文名:HypertextPreprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。本文为大家讲解的是php
- Guava——Collections New collection types
爱吃菜的流浪狗
1.Multiset在Collection的基础上,拓展了对重复元素的处理方法。publicinterfaceMultisetextendsCollection{intcount(@NullableObjectvar1);intadd(@NullableEvar1,intvar2);intremove(@NullableObjectvar1,intvar2);intsetCount(Evar1,i
- 代码随想录算法训练营第三十八天
写个博客
代码随想录打卡算法
LeetCode题目:1143.最长公共子序列1035.不相交的线53.最大子数组和392.判断子序列2094.找出3位偶数(每日一题)其他:今日总结往期打卡1143.最长公共子序列跳转:1143.最长公共子序列学习:代码随想录公开讲解问题:给定两个字符串text1和text2,返回这两个字符串的最长公共子序列的长度。如果不存在公共子序列,返回0。一个字符串的子序列是指这样一个新的字符串:它是由原
- QCustomPlot绘图保存成PDF文件
Qt历险记
Qt高级开发工程师pdfqtc++20visualstudio
点击上方"蓝字"关注我们01、QTextDocument>>>QTextDocument是Qt框架中的一个类,用于处理和显示富文本内容。它提供了文本编辑、格式化、布局和渲染等功能。QTextDocument可以包含文本、图像、表格、列表等多种元素,并且可以处理复杂的文本布局和格式。02、QTextObjectInterface>>>QTextObjectInterface是Qt框架中的一个接口,用
- 【Python】Python+sentence-transformers框架实现相似文本识别
宅男很神经
python开发语言
第一章:文本相似度与语义表示概述在深入sentence-transformers框架之前,我们首先需要对文本相似度计算及其背后的核心概念——语义表示,有一个清晰且全面的理解。这构成了后续所有讨论的基础。1.1什么是文本相似度?1.1.1定义与重要性文本相似度(TextSimilarity)是指衡量两段文本(可以是词、短语、句子、段落或整个文档)在意义或内容上相近程度的指标。这种相近可以是字面上的(
- 【Selenium自动化测试】鼠标与键盘操作
牛油菠蘿包
Selenium教程自动化测试seleniumpython自动化
在WebDriver中,与鼠标操作相关的方法都封装在ActionChains类中,与键盘操作相关的方法都封装在Keys类中。下面介绍下这两个类中的常用方法。鼠标操作ActionChains类鼠标操作常用方法:context_click():右击double_click():双击drag_and_drop():拖动move_to_element():鼠标悬停perform():执行ActionCha
- 对于规范和实现,你会混淆吗?
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