- COCO 格式的数据集转化为 YOLO 格式的数据集
QYQY77
YOLOpython
"""--json_path输入的json文件路径--save_path保存的文件夹名字,默认为当前目录下的labels。"""importosimportjsonfromtqdmimporttqdmimportargparseparser=argparse.ArgumentParser()parser.add_argument('--json_path',default='./instances
- 处理标签包裹的字符串,并取出前250字符
周bro
前端javascript开发语言
//假设这是你的HTML字符串varhtmlString=`这是一个段落。这是一个标题这是另一个段落,包含一些链接。`;//解析HTML字符串并提取文本functionextractTextFromHTML(html){varparser=newDOMParser();vardoc=parser.parseFromString(html,"text/html");vartextContent=do
- 报错 | pydantic.v1.error_wrappers.ValidationError ... subclass of BaseModel expected
程序猿林仔
报错pythonpythonlangchain
文章目录01问题情景02分析问题03阅读源码04解决方案4.1方案1-指定版本安装4.2(通用)方案2-指定v1版本4.3(推荐)方案3-参考源码01问题情景最近在做Langchain的开发,可能是因为我更新了依赖库的版本,在执行下面这部分代码的时候出现了该异常:#出现该异常的代码(仅保留核心逻辑)fromlangchain.output_parsersimportPydanticOutputPa
- 【Linux 从基础到进阶】Puppet配置管理工具使用
爱技术的小伙子
Linux从基础到进阶linuxpuppet运维
Puppet配置管理工具使用Puppet是一种开源的配置管理工具,广泛用于自动化管理和配置服务器。它通过声明式的语言定义系统状态,能够跨多台服务器实现一致性配置。Puppet对运维团队来说,是一种强大的工具,能够有效管理服务器配置并简化操作复杂性。本文将详细介绍Puppet的核心概念、安装步骤、以及如何在CentOS和Ubuntu系统上进行配置和管理。1.Puppet的核心概念在使用Puppet之
- 【Trace】QQ+微信聊天记录分析工具
civilpy
pandas
Trace-痕迹阿里云:https://www.alipan.com/s/x6fqXe1jVg1百度云:https://pan.baidu.com/s/1FmchOjK2wAMwE5aQds7pIw?pwd=td7s该工具使用前,先配置随机码(当前):85EC【范例1】QQ个人聊天记录分析第1步:导出个人聊天记录或QQ群聊天记录,格式txt第2步:打开软件Trace-痕迹.exe,会自动弹出两个窗
- 把html字符串转为可以被js操作的dom
微特尔普拉斯
javascriptwebnodejavascripthtml前端
在JavaScript中,您可以使用DOMParserAPI将HTML字符串转换为可操作的DOM节点。以下是具体步骤:1.创建DOMParser实例:constparser=newDOMParser();2.使用parseFromString()方法解析HTML字符串:consthtmlString='Hello,world!';constdoc=parser.parseFromString(ht
- 配置QT程序的命令行参数
码农飞飞
QT+QMLqtui开发语言json
在开发一些非UI程序的时候,我们习惯通过命令行参数给程序传递一些配置项和参数。这时候在程序里面解析这些配置项和参数就成了一个让人头疼的问题。其实针对QT命令行参数的解析,QT提供了现成的工具类QCommandLineParser,通过使用工具类可以极大的简化我们解析命令行参数的工作量。这里介绍一下命令行参数解析类的使用方法。获取程序的版本信息对于一些通用产品,比如git或者electron等等我们
- 04 cuttman切图工具
星chen
Photoshopcc使用:image.pngcuttman切图工具使用:打开cuttman切图工具image.png=
- Percona-toolkit工具详解
小一_d28d
1.pt工具安装[root@master~]#yuminstall-ypercona-toolkit-3.1.0-2.el7.x86_64.rpm2.常用工具使用介绍2.1pt-archiver归档表#重要参数--limit100每次取100行数据用pt-archive处理--txn-size100设置100行为一个事务提交一次,--where'id>/root/db/checksum.logpt
- java parser乱码_HtmlParser 2.0 中文乱码问题
福建低调
javaparser乱码
对于HTMLParser2.0工具包我们需要修改其中的Page.java文件使其适用中文的html文件分析。主要是把protectedstaticfinalStringDEFAULT_CHARSET="ISO-8859-1";修改成protectedstaticfinalStringDEFAULT_CHARSET="gb2312";主要是兼容charset='GBK'声明的页面。--因为采用默认的
- Biopython从pdb文件中提取蛋白质链的信息
qq_27390023
开发语言python
使用Biopython的PDB模块可以方便地解析PDB文件并提取你需要的信息。下面是一个示例代码,用于提取PDB文件中的链名称、序列和长度:示例代码fromBioimportPDB#读取PDB文件pdb_file="/Users/zhengxueming/Downloads/1a0h.pdb"parser=PDB.PDBParser(QUIET=True)structure=parser.get_
- Webpack4-配置
16325
module.rule.parser解析选项对象。所有应用的解析选项都将合并。解析器(parser)可以查阅这些选项,并相应地禁用或重新配置。大多数默认插件,会如下解释值:将选项设置为false,将禁用解析器。将选项设置为true,或不修改将其保留为undefined,可以启用解析器。然而,一些解析器(parser)插件可能不光只接收一个布尔值。例如,内部的NodeStuffPlugin差距,可以
- HTML到React解析器 - 使用指南及教程
罗昭贝Lovely
HTML到React解析器-使用指南及教程html-react-parser:memo:HTMLtoReactparser.项目地址:https://gitcode.com/gh_mirrors/ht/html-react-parser一、项目介绍HTML到React解析器(html-react-parser)是由remarkablemark开发的一款开源工具库,专为将普通的HTML字符串转换成R
- EOFParserException: EOF
妙明元心
mybatissql
在使用mybatis接受list等集合遍历时,没有对list等进行size>0判断,会产生如下异常:Causedby:com.alibaba.druid.sql.parser.EOFParserException:EOF需要修改进行如下判断:0">andidin#{id}或者:在调用dao方法前进行判断,list!=null&&list.size>0
- Node.js入门与生态全解析:包管理与构建工具详解
Switch616
前端node.js服务器前端es6前端框架
Node.js入门与生态全解析:包管理与构建工具详解目录包管理使用npm和yarn:项目依赖管理的利器创建和发布npm包:实现模块化与共享⚙️构建工具使用Webpack和Babel:高效打包与代码转换配置构建流程:优化与自动化的最佳实践包管理-使用npm和yarn:项目依赖管理的利器在Node.js的开发过程中,包管理是核心环节之一,它提供了管理第三方库、共享代码及简化依赖项管理的功能。Node.
- 自然语言处理常用单词
ChenVast
NLP机器学习算法理论与实战单词自然语言处理NLP
AA-not-Aquestion正反问句A-over-AA-上-A原则abbreviation缩写[省略语]ablative夺格(的)abrupt突发音accent口音/{Phonetics}重音accusative受格(的)acousticphonetics声学语音学acquisition习得actionverb动作动词active主动语态activechartparser活动图句法剖析程序ac
- cpu运行gpu上的pytorch 报错:AssertionError:torch not compiled with cuda enabled——已解决
霍格沃茨电气魔法师
pythonjavapython数据库js深度学习
感觉今天介绍的这种方法可以解决所有这种报错出现的问题事件发生:报错:AssertionError:torchnotcompiledwithcudaenabled解决方法:后来看到这个代码parser.add_argument('--test_device',default="cuda:0",type=str,
- 嵌入式设备上SystemTap调试工具使用
塵觴葉
杂谈linuxbpf
SystemTap调试工具简介SystemTap调试器常用于Linux内核的动态调试,不过该工具集也可用于应用的跟踪调试。随着Linux内核及其应用程序的复杂度不断加深,使用一些在功能上区别于传统的GDB调试工具就变得越来越重要了。这类调试工具具有低延时(LowLatency),高性能,动态调试的特点。嵌入式Linux设备的系统软件通常不需从头开发,这些调试工具可以帮助开发者快速理解Linux内核
- 在Windows系统上以服务的形式部署SpringBoot项目
程序员小H
背景由于项目需要是实现Office文档的在线预览,为了更好的预览效果使用MSOffice对(doc、docx、xls、xlsx、ppt、pptx、txt)转换为PDF文件进行预览,MSOffice不支持Linux,所以文档转换服务只能部署在Windows服务器上,需要将文档转换服务添加到windows服务中,以服务的放是运行,从而实现开机自启动。部署工具使用官方推荐的工具:winsw工具下载:ht
- Python 读取配置文件config.ini
【灯火阑珊】我还在路上
Pythonpython
文章目录前言一、创建配置文件config.ini二、使用步骤1.安装库并引入库2.读取配置文件3.获取配置文件的内容总结前言在项目制的工作中往往会用到配置文件,这样可以灵活配置和切换,ini最常见一种配置文件类型,其使用python自带的configparser模块实现配置文件的写入、更新、删除、读取等操作。一、创建配置文件config.ini[Mock]mock_ip=127.0.0.1mock
- 【车载测试面试:各大车企面试题汇总】
@逝水流年轻染尘@
面试职场和发展
HIL(硬件在环)测试、UDS功能诊断、UDS自动化诊断、数据库制作、DTC故障制造、CANoe工具使用、ECU刷写、报文解析、导航测试、车控测试、OTA升级测试、TBOX测试等TBOX深圳涉及过T-BOX测试吗Ota升级涉及的台架环境是什么样的?上车实测之前有没有一个仿真环境台架环境都什么零部件T-BOX了解多少Linux和shell有接触吗单片机车机有没有热点啊WiFi这个功能有没有涉及一些法
- Rust使用之【宏】
拐几个弯
RUST笔记rust开发语言后端
一、简单使用clapclap={version="4.5.17",features=["derive"]}其中,什么是features=["derive"]:表示你希望在添加clap依赖时启用derive特性。这通常意味着你希望使用clap的派生(derive)宏功能,这些功能可以简化创建命令行接口的代码。例如,derive特性可以让你使用#[derive(Parser)]来自动生成解析命令行参数
- vue3 + vite + js 配置Eslint + prettier_vite+js+vue3配置eslint
2401_84446882
程序员javascriptvue.js前端
server:{port:3300,cors:true,proxy:{}},build:{outDir:path.resolve(__dirname,‘…/dist’)}})#####第四步安装eslint-parser(ESLint解析器)pnpmadd@babel/core-D//某些代码需要调用Babel的API进行转码,就要使用@babel/core模块。pnpmadd@babel/esl
- vue3 + vite + js 配置Eslint + prettier_vite+js+vue3配置eslint(2)
2401_84446882
程序员javascript开发语言ecmascript
build:{outDir:path.resolve(__dirname,‘…/dist’)}})#####第四步安装eslint-parser(ESLint解析器)pnpmadd@babel/core-D//某些代码需要调用Babel的API进行转码,就要使用@babel/core模块。pnpmadd@babel/eslint-parser@latest-D#####第五步安装prettier(
- 后端处理前端NaN导致报错
旋转跳跃闭着眼
用实体接参数时,属性类型是Double,前端传NaN会报错,做了简单处理,记录一下,当然前端不传NaN就更好了…packagecn.edu.oa.jsonSerializer;importcn.micro.framework.exception.BusinessException;importcom.fasterxml.jackson.core.JsonParser;importcom.faste
- 【ttf压缩】网页开发中引入字体文件过大,加载缓慢的解决办法【字蛛】【web Font】
Luckstar_wei
技术csshtml字体ttf压缩中文字体压缩
yueyemoyanweb中文字体演示与工具使用请前往主页:http://font-spider.org/需要安装node.js输入以下命令:npminstallfont-spider-g运行安装成功之后就开始压缩了我的目录是这样的我的css文件开头是这样的这里要确保ttf文件一定要有,其他的不管在你的html中也引用了相应的css文件接下来就是最后一步了生成新的字体库nodejs命令行输入fon
- ️ 利用Python解析Procmon文件 —— 开启您的监控数据新纪元!
周澄诗Flourishing
️利用Python解析Procmon文件——开启您的监控数据新纪元!在数字化转型的浪潮中,系统监控已成为保障应用稳定性和性能的关键一环。然而,在众多监控工具中,微软的Procmon因其强大的功能和深入的系统洞察而独树一帜。但,面对海量的日志数据与复杂的配置管理,如何有效利用这些信息成为了新的挑战。现在,一款名为procmon-parser的Python库应运而生,它将改变您处理Procmon日志的
- Python爬取彼岸图4k壁纸,想要什么类型的壁纸就输入什么壁纸,太方便了。
爬遍天下无敌手
Pythonpythonhtmljsjavaepoll
你桌面的壁纸还是用的默认壁纸么?太low了,今天教你用python爬取彼岸图网的4k壁纸,想要什么类型的壁纸就爬什么壁纸,快点来跟我一起试试吧!这个壁纸怎么样?喜欢吗?你值得拥有。。。代码操作一下工具使用开发环境python3.6Windows10开发工具pycharm工具包lxml,os,tkinter思路解析1.定义可视化窗口,并设置窗口和主题大小布局2.定义触发事件1,调用main函数3.构
- 聊聊自定义SPI如何使用自定义标签注入到spring容器中
linyb极客之路
前言之前我们聊过自定义的SPI如何与spring进行整合,今天我们就来聊下如何通过自定义标签将spi对象注入到spring容器中实现套路1、自定义xsd示例:ps:如果对xsd不熟悉的朋友,可以参考如下链接https://www.w3school.com.cn/schema/index.asp2、自定义解析BeanDefinitionParser解析器示例:publicclassAnnotatio
- ROS2下进行单目相机标定
IT小艺
RoboMaster相机标定ros2大华工业相机海康工业相机
本文主要进行在ros2-humble下大华工业相机和海康工业相机的标定,其他相机也可以参考首先进行ros2环境的安装2.5在ubuntu22.04安装ros2_ubuntu20.04安装ros2-CSDN博客安装工业相机的驱动SDK1.8安装相机SDK及测试-CSDN博客安装相机标定工具sudoaptinstallros-humble-camera-calibration-parserssudoa
- 对于规范和实现,你会混淆吗?
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