- 如何提升爬虫获取数据的准确性?
小爬虫程序猿
爬虫
提升爬虫获取数据的准确性是确保数据分析和后续应用有效性的关键。以下是一些经过验证的方法和最佳实践,可以帮助提高爬虫数据的准确性:1.数据清洗数据清洗是提升数据准确性的重要步骤,主要包括去除重复数据、处理缺失值和异常值。去除重复数据:重复数据会影响分析结果的准确性,可以通过pandas库的drop_duplicates()方法删除重复数据。importpandasaspddf=pd.DataFram
- WPF两点之间绘制丝滑的贝塞尔曲线
不知名君
WPF开发心得自定义控件WPF技术wpf
WPF两点之间绘制丝滑的贝塞尔曲线在做这种节点连线的控件时,需要绘制流畅的曲线。绘制贝塞尔曲线的代码如下:(geo数据给到Path的Data即可绘制)privatevoidRefresh(){PathGeometrygeo=newPathGeometry();PathFigurepathFigure=newPathFigure();pathFigure.StartPoint=StartPoint;
- Mac终端出现-bash-3.2$切换到user用户
ZiHai子海
Mac使用问题Macbash
Mac终端出现-bash-3.2$切换到user用户经过网上查询,对自身使用Mac电脑切换用户问题的整理打开终端输入如下代码第一步:exportPATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin第二步:cd~/第三步输入:touch.bash_profile第四步输入:open.bash_profile第五步,打开文件编辑界面最后一行输入export
- Python如何用pdfplumber读取解析pdf文件
ToMiky明明
pythonpdf开发语言
1.首先安装pdfplumber库:pipinstallpdfplumber2.如果安装失败,首先应该升级pip,用低版本的pip可能导致pdfplumber安装不成功:python-mpipinstall--upgradepip#coding:utf-8importpdfplumberwithpdfplumber.open('./test.pdf')aspdf:#遍历每个页面forpageinp
- python解析pdf文件
irisMoon06
pythonpdfmicrosoft
先安装PyPDF2,据说这是目前最好的解析pdf的包pipinstallPyPDF2PDF文件分割、拼接importosfromPyPDF2importPdfFileWriter,PdfFileReaderdefclear_dir(dir_path): """清空目录下的文件""" names=os.listdir(dir_path) fornameinnames: file_path
- 鸿蒙next自动打包脚本
anthonyzhu
harmonyos华为
简要描述鸿蒙提供相应的打包流水线的官方文档鸿蒙next流水线官方描述提供的是单独的命令行工具包的打包流程IDE打包如果在打包机上安装了IDE,那就没有必要安装命令行工具包,只需要设置几个环境参数exportPATH=$PATH:/usr/local/bin/node;exportNODE_HOME=/Applications/DevEco-Studio.app/Contents/tools/nod
- 第三章 回归训练实战(以预测新冠感染人数为例)
不吃香菜(扣1复活版)
深度学习入门笔记深度学习人工智能
完整项目代码(预测第三天的新冠感染人数)fromsklearn.feature_selectionimportSelectKBestfromsklearn.feature_selectionimportchi2importcsv#读CSVimportnumpyasnpimporttimeimportmatplotlib.pyplotaspltimportpandasaspdfromtorchimp
- 解决windows下python3.6.5版本的datetime问题:OSError: [Errno 22] Invalid argument
地平线here
pythonpython
解决windows下python3.6.5版本的datetime问题1.解决方案在自己代码中使用datetime.datetime.fromtimestamp的位置替换为下面的timestamp_to_datetime函数即可importpytzimportdatetimedeftimestamp_to_datetime(t):"""时间戳转日期时间"""ift>=86400:#24h=86400
- 【20天快速掌握Python】day20-手动搭建HTTP服务器
菜鸟进阶站
Python后端开发编程pythonhttp服务器
演示代码: importre importsocket frommultiprocessingimportProcess classWSGIServer(): def__init__(self,server,port,root): self.server=server self.port=port self.root=root self.server_s
- linux所有命令都用不了:-bash: **: 未找到命令
AnnyYoung
FAQlinux
描述:环境变量文件改坏了,不管输入什么命令都显示“-bash:**:未找到命令”解决办法:终端输入:exportPATH=/bin:/usr/bin:$PATH如果上述方法无效,则:终端输入(前提:profile没有被错误修改)source/etc/profile
- 分享一个基于需要天数获取开始跟结束股票日期的方法
不叫蓝鸽叫啥子
python开发语言
问题每次想要获取指定天数的股票数据的时候。要么指定前几个月导致数据量太大获取太慢,要么就是数据量不够。非常麻烦。话不多说,创建一个函数就能解决这个问题。代码需要的模块importdatetimeimporttushareastsimportpandasaspd为了避免再次执行代码而产生额外的计算可以将日期保存为csv,需要直接读取defworkday_cal(days):date_today=da
- PapaParse 用于解析 CSV 和 TSV 文件 JavaScript 库
孩子 你要相信光
javascript前端
PapaParse是一个用于解析CSV和TSV文件的JavaScript库,它在浏览器和Node.js环境中都能很好地工作。以下是如何使用PapaParse以及它的一些主要功能。安装首先,你需要安装PapaParse。你可以通过npm或yarn来安装:npminstallpapaparse或者yarnaddpapaparse基本用法解析CSV字符串importPapafrom'papaparse'
- linux中流设备_设备端SDK(Linux)文档
知酒僧
linux中流设备
设备端SDK(Linux)文档更新时间:2019-03-1421:55:00功能描述摄像头直播:支持RTMP推流,当前视频支持H264,音频支持G711a以及AAC_LC格式.存储卡录像查看:将存储在SD卡等外存中的录像文件推到服务端,支持seek到指定位置操作.语音对讲:与App端建立双向语音通道,设备端采集录音并实时发送至App端,同时接收到App端发送的语音进行播放.拍照:抓拍当前摄像头画面
- 获取股票历史数据(网易163行情接口)
tan2810
python
获取股票历史数据(网易163行情接口)获取股票历史数据,通过网易163接口来获取数据,可以获取指数数据,也可以获取股票数据importpandasaspd#沪市前面加0,深市前面加1,比如0000001,是上证指数,1000001是中国平安defget_daily(code,start='19900101',end=''):url_mod="http://quotes.money.163.com/
- 流媒体传输的基本原理
学习嵌入式的小羊~
音视频
•实时播放:流媒体通过网络传输多媒体数据(如音频、视频),允许用户在数据传输过程中就开始播放,而不是等到所有数据都下载完毕。这依赖于以下几个关键因素:•网络控制协议:例如RTSP(Real-TimeStreamingProtocol)用于控制流媒体会话,RTP(Real-timeTransportProtocol)用于数据传输,而RTCP(RTPControlProtocol)用于监控质量和提供反
- Unity-Mirror学习笔记-Tank
薯仔焖鹅
游戏unity
Unity-Mirror-学习笔记(Tank)通过Mirror内置的例子来学习其用法,此为笔记。游戏对象以及其使用到的Network组件NetworkManager1NetworkManagerHUD2TelepathyTransportNetworkManagerSpawn(GameObject)3NetworkStartPositionUI-Canvas(GameObject)4TankGam
- vite.config.ts的配置项(配置别名,全局将css属性单位px转化为vw,引入less,vantUI,打包压缩,代理)
codekjy
cssless前端
import{defineConfig}from'vite'importvuefrom'@vitejs/plugin-vue'importlegacyfrom'@vitejs/plugin-legacy'importpostcsspxtoviewportfrom'postcss-px-to-viewport'importstyleImport,{VantResolve}from'vite-plug
- 前端视频开发之初始化MSE SourceBuffer时正确传参——H264 codecs生成
前端mseh264codecs
本片文章主要是对H264格式的视频源进行介绍以及生成的codecs只考虑视频源不考虑音频一、场景介绍使用MSE进行视频播放时,首先需要创建一个sourceBuffer用于推流,例如constmediaSource=newMediaSource();constsourceBuffer=mediaSource.addSourceBuffer('video/mp4;codecs="avc1.64001f
- Python Pandas查找Dataframe中的非ASCII字符并导出为Excel文件
weixin_30777913
pythonpandas数据分析开发语言
importpandasaspd#假设df是原始DataFrame#allowed_chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!\"#$%&'()*+,-./:;?@[]^_`{|}~"deffilter_invalid_rows(df):#定义允许的字符集合allowed_chars=set("abc
- tensorrt推理 onxx转engine代码(python),cyclegan网络推理(python、C++)
maobin_1
pythonc++
将onnx文件导出为engine,FP16格式importtensorrtastrtimportpycuda.driverascudaimportpycuda.autoinit#加载ONNX文件onnx_file_path='model.onnx'engine_file_path='model_tesfp16.trt'TRT_LOGGER=trt.Logger(trt.Logger.WARNI
- python中的进度条
zoujiahui_2018
pythonpython
文章目录tqdmrichtqdmtqdm是一个非常流行的Python库,用于快速实现进度条。fromtqdmimporttqdmimporttimeforiintqdm(range(100),desc="Processing"):time.sleep(0.05)#模拟任务耗时richfromrich.progressimportProgressimporttime#使用rich的Progress创
- C#上位机开发之与西门子PLC通信
木林森先生
网络
在做上位机开发时,经常会遇到上位机与PLC通讯的情况。那么,上位机如何与PLC进行通讯呢?本篇内容以西门子PLCS7-200smart为例,实现上位机与PLC的通讯功能。一、前言200smartPLC有着丰富的通信端口,集成强大的以太网通信。S7-200SMARTCPU模块本体集成1个以太网接口和1个RS485接口,通过扩展CM01信号板,其通信端口数量最多可增至3个。可满足小型自动化设备连接触摸
- ES java客户端中关于BucketSortPipelineAggregationBuilder的问题
Sunager
ElasticSearchelasticsearchjava
es聚合后进行分页(非标准分页,涉及到es底层的检索方式)es桶聚合后排序介绍见ES指南介绍//kibana对聚合后的数据GET/_search{"query":{"bool":{"filter":[{"match":{"question":"好的"}},{"range":{
- ASP.NET Core用MediatR实现领域事件
AAA猪饲料批发李师傅
.NETASP.NETCoreDDDMediatR
目录领域事件的实现选择实现方式1:C#的事件机制实现方式2:进程内消息传递的开源库MediatR。MediatR用法注意领域事件的实现选择实现方式1:C#的事件机制缺点:需要显式地注册。varbl=newProcessBusinessLogic();bl.ProcessCompleted+=bl_ProcessCompleted;bl.StartProcess();实现方式2:进程内消息传递的开源
- TX2+FFmpeg+OpenCV读取显示网络摄像头
宗而研之
#NVIDIAJetson
作者:JasonDing链接:https://www.jianshu.com/p/6ef3c18d61b0來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。引子OpenCV中有自己的用于处理图片和视频的类VideoCapture,可以很方便的读入文件和显示。现在视频数据流是ffmpeg解码h264文件得到的,由于要依赖该数据源进行相应的后续处理,所以需要将ffmpeg中
- excel如何拆分为1000行一个的文件
扎量丙不要犟
excel
方法一:使用hpctb打开文件,点“行分表”就行了。如图:一步完成,不需要安装环境,也不需要专业知识,也不需要“神”一样的ai。方法二:使用Python安装库(如未安装)pipinstallpandasopenpyxlPython脚本importpandasaspd#读取原文件df=pd.read_excel("input.xlsx")chunk_size=100#每个文件的行数#计算总块数并循环
- python基础入门:附录:常用第三方库推荐(NumPy、Django等)
赵鑫亿
python基础入门pythonnumpydjango
Python常用第三方库全景指南:从基础到前沿工具集一、数据科学核心套件数值计算三剑客#NumPy数组操作示例importnumpyasnparr=np.arange(1,10).reshape(3,3)print(
[email protected])#矩阵乘法#Pandas数据分析示例importpandasaspddf=pd.DataFrame({'A':np.random.randn(100),'B':np
- python基础入门:8.1项目1:爬虫与数据分析
赵鑫亿
python基础入门python爬虫数据分析
Python爬虫与数据分析全流程实战:从数据采集到可视化呈现#综合案例:电商价格监控分析系统importrequestsfrombs4importBeautifulSoupimportpandasaspdimportmatplotlib.pyplotasplt#配置参数HEADERS={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)''Appl
- 【音视频】RTSP拉流: RTP协议头部详解(二)
自由柿
音视频
此文为系列文章,此系列主要讲解RTSP客户端的拉流及播放,文章持续更新,会从rtsp的基本协议讲起,如何一步步实现音视频的拉流过程,包括一系列涉及到的协议,rtsp,sdp,rtp(本系列文章的核心内容会放在rtp协议,会重点介绍讲解rtp负载部分),rtcp,从rtp解析aac,h264数据帧,得到帧后如何交给解码库(ffmpeg,libVLC,live555等)进行解码,音视频同步并播放音
- h264和h265视频流SDP描述详解
艾浅觅
流媒体协议开发知识音视频
h264和h265视频流SDP描述详解文章目录h264和h265视频流SDP描述详解1SDP概述2.SDP媒体描述极其扩展属性2.1m属性介绍2.2a=control附加属性介绍2.3a=rtpmap附加属性介绍2.4a=fmtp附加属性介绍SDP(SessionDescriptionProtocol)会话描述协议,是一种用来描述信息格式的标准,它不是一种用于传输的协议而是由ITEF组织下的MMu
- Dom
周华华
JavaScripthtml
<!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&q
- 【Spark九十六】RDD API之combineByKey
bit1129
spark
1. combineByKey函数的运行机制
RDD提供了很多针对元素类型为(K,V)的API,这些API封装在PairRDDFunctions类中,通过Scala隐式转换使用。这些API实现上是借助于combineByKey实现的。combineByKey函数本身也是RDD开放给Spark开发人员使用的API之一
首先看一下combineByKey的方法说明:
- msyql设置密码报错:ERROR 1372 (HY000): 解决方法详解
daizj
mysql设置密码
MySql给用户设置权限同时指定访问密码时,会提示如下错误:
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number;
问题原因:你输入的密码是明文。不允许这么输入。
解决办法:用select password('你想输入的密码');查询出你的密码对应的字符串,
然后
- 路漫漫其修远兮 吾将上下而求索
周凡杨
学习 思索
王国维在他的《人间词话》中曾经概括了为学的三种境界古今之成大事业、大学问者,罔不经过三种之境界。“昨夜西风凋碧树。独上高楼,望尽天涯路。”此第一境界也。“衣带渐宽终不悔,为伊消得人憔悴。”此第二境界也。“众里寻他千百度,蓦然回首,那人却在灯火阑珊处。”此第三境界也。学习技术,这也是你必须经历的三种境界。第一层境界是说,学习的路是漫漫的,你必须做好充分的思想准备,如果半途而废还不如不要开始。这里,注
- Hadoop(二)对话单的操作
朱辉辉33
hadoop
Debug:
1、
A = LOAD '/user/hue/task.txt' USING PigStorage(' ')
AS (col1,col2,col3);
DUMP A;
//输出结果前几行示例:
(>ggsnPDPRecord(21),,)
(-->recordType(0),,)
(-->networkInitiation(1),,)
- web报表工具FineReport常用函数的用法总结(日期和时间函数)
老A不折腾
finereport报表工具web开发
web报表工具FineReport常用函数的用法总结(日期和时间函数)
说明:凡函数中以日期作为参数因子的,其中日期的形式都必须是yy/mm/dd。而且必须用英文环境下双引号(" ")引用。
DATE
DATE(year,month,day):返回一个表示某一特定日期的系列数。
Year:代表年,可为一到四位数。
Month:代表月份。
- c++ 宏定义中的##操作符
墙头上一根草
C++
#与##在宏定义中的--宏展开 #include <stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { &nbs
- 分析Spring源代码之,DI的实现
aijuans
springDI现源代码
(转)
分析Spring源代码之,DI的实现
2012/1/3 by tony
接着上次的讲,以下这个sample
[java]
view plain
copy
print
- for循环的进化
alxw4616
JavaScript
// for循环的进化
// 菜鸟
for (var i = 0; i < Things.length ; i++) {
// Things[i]
}
// 老鸟
for (var i = 0, len = Things.length; i < len; i++) {
// Things[i]
}
// 大师
for (var i = Things.le
- 网络编程Socket和ServerSocket简单的使用
百合不是茶
网络编程基础IP地址端口
网络编程;TCP/IP协议
网络:实现计算机之间的信息共享,数据资源的交换
协议:数据交换需要遵守的一种协议,按照约定的数据格式等写出去
端口:用于计算机之间的通信
每运行一个程序,系统会分配一个编号给该程序,作为和外界交换数据的唯一标识
0~65535
查看被使用的
- JDK1.5 生产消费者
bijian1013
javathread生产消费者java多线程
ArrayBlockingQueue:
一个由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列检索操作则是从队列头部开始获得元素。
ArrayBlockingQueue的常用方法:
- JAVA版身份证获取性别、出生日期及年龄
bijian1013
java性别出生日期年龄
工作中需要根据身份证获取性别、出生日期及年龄,且要还要支持15位长度的身份证号码,网上搜索了一下,经过测试好像多少存在点问题,干脆自已写一个。
CertificateNo.java
package com.bijian.study;
import java.util.Calendar;
import
- 【Java范型六】范型与枚举
bit1129
java
首先,枚举类型的定义不能带有类型参数,所以,不能把枚举类型定义为范型枚举类,例如下面的枚举类定义是有编译错的
public enum EnumGenerics<T> { //编译错,提示枚举不能带有范型参数
OK, ERROR;
public <T> T get(T type) {
return null;
- 【Nginx五】Nginx常用日志格式含义
bit1129
nginx
1. log_format
1.1 log_format指令用于指定日志的格式,格式:
log_format name(格式名称) type(格式样式)
1.2 如下是一个常用的Nginx日志格式:
log_format main '[$time_local]|$request_time|$status|$body_bytes
- Lua 语言 15 分钟快速入门
ronin47
lua 基础
-
-
单行注释
-
-
[[
[多行注释]
-
-
]]
-
-
-
-
-
-
-
-
-
-
-
1.
变量 & 控制流
-
-
-
-
-
-
-
-
-
-
num
=
23
-
-
数字都是双精度
str
=
'aspythonstring'
- java-35.求一个矩阵中最大的二维矩阵 ( 元素和最大 )
bylijinnan
java
the idea is from:
http://blog.csdn.net/zhanxinhang/article/details/6731134
public class MaxSubMatrix {
/**see http://blog.csdn.net/zhanxinhang/article/details/6731134
* Q35
求一个矩阵中最大的二维
- mongoDB文档型数据库特点
开窍的石头
mongoDB文档型数据库特点
MongoDD: 文档型数据库存储的是Bson文档-->json的二进制
特点:内部是执行引擎是js解释器,把文档转成Bson结构,在查询时转换成js对象。
mongoDB传统型数据库对比
传统类型数据库:结构化数据,定好了表结构后每一个内容符合表结构的。也就是说每一行每一列的数据都是一样的
文档型数据库:不用定好数据结构,
- [毕业季节]欢迎广大毕业生加入JAVA程序员的行列
comsci
java
一年一度的毕业季来临了。。。。。。。。
正在投简历的学弟学妹们。。。如果觉得学校推荐的单位和公司不适合自己的兴趣和专业,可以考虑来我们软件行业,做一名职业程序员。。。
软件行业的开发工具中,对初学者最友好的就是JAVA语言了,网络上不仅仅有大量的
- PHP操作Excel – PHPExcel 基本用法详解
cuiyadll
PHPExcel
导出excel属性设置//Include classrequire_once('Classes/PHPExcel.php');require_once('Classes/PHPExcel/Writer/Excel2007.php');$objPHPExcel = new PHPExcel();//Set properties 设置文件属性$objPHPExcel->getProperties
- IBM Webshpere MQ Client User Issue (MCAUSER)
darrenzhu
IBMjmsuserMQMCAUSER
IBM MQ JMS Client去连接远端MQ Server的时候,需要提供User和Password吗?
答案是根据情况而定,取决于所定义的Channel里面的属性Message channel agent user identifier (MCAUSER)的设置。
http://stackoverflow.com/questions/20209429/how-mca-user-i
- 网线的接法
dcj3sjt126com
一、PC连HUB (直连线)A端:(标准568B):白橙,橙,白绿,蓝,白蓝,绿,白棕,棕。 B端:(标准568B):白橙,橙,白绿,蓝,白蓝,绿,白棕,棕。 二、PC连PC (交叉线)A端:(568A): 白绿,绿,白橙,蓝,白蓝,橙,白棕,棕; B端:(标准568B):白橙,橙,白绿,蓝,白蓝,绿,白棕,棕。 三、HUB连HUB&nb
- Vimium插件让键盘党像操作Vim一样操作Chrome
dcj3sjt126com
chromevim
什么是键盘党?
键盘党是指尽可能将所有电脑操作用键盘来完成,而不去动鼠标的人。鼠标应该说是新手们的最爱,很直观,指哪点哪,很听话!不过常常使用电脑的人,如果一直使用鼠标的话,手会发酸,因为操作鼠标的时候,手臂不是在一个自然的状态,臂肌会处于绷紧状态。而使用键盘则双手是放松状态,只有手指在动。而且尽量少的从鼠标移动到键盘来回操作,也省不少事。
在chrome里安装 vimium 插件
- MongoDB查询(2)——数组查询[六]
eksliang
mongodbMongoDB查询数组
MongoDB查询数组
转载请出自出处:http://eksliang.iteye.com/blog/2177292 一、概述
MongoDB查询数组与查询标量值是一样的,例如,有一个水果列表,如下所示:
> db.food.find()
{ "_id" : "001", "fruits" : [ "苹
- cordova读写文件(1)
gundumw100
JavaScriptCordova
使用cordova可以很方便的在手机sdcard中读写文件。
首先需要安装cordova插件:file
命令为:
cordova plugin add org.apache.cordova.file
然后就可以读写文件了,这里我先是写入一个文件,具体的JS代码为:
var datas=null;//datas need write
var directory=&
- HTML5 FormData 进行文件jquery ajax 上传 到又拍云
ileson
jqueryAjaxhtml5FormData
html5 新东西:FormData 可以提交二进制数据。
页面test.html
<!DOCTYPE>
<html>
<head>
<title> formdata file jquery ajax upload</title>
</head>
<body>
<
- swift appearanceWhenContainedIn:(version1.2 xcode6.4)
啸笑天
version
swift1.2中没有oc中对应的方法:
+ (instancetype)appearanceWhenContainedIn:(Class <UIAppearanceContainer>)ContainerClass, ... NS_REQUIRES_NIL_TERMINATION;
解决方法:
在swift项目中新建oc类如下:
#import &
- java实现SMTP邮件服务器
macroli
java编程
电子邮件传递可以由多种协议来实现。目前,在Internet 网上最流行的三种电子邮件协议是SMTP、POP3 和 IMAP,下面分别简单介绍。
◆ SMTP 协议
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是一个运行在TCP/IP之上的协议,用它发送和接收电子邮件。SMTP 服务器在默认端口25上监听。SMTP客户使用一组简单的、基于文本的
- mongodb group by having where 查询sql
qiaolevip
每天进步一点点学习永无止境mongo纵观千象
SELECT cust_id,
SUM(price) as total
FROM orders
WHERE status = 'A'
GROUP BY cust_id
HAVING total > 250
db.orders.aggregate( [
{ $match: { status: 'A' } },
{
$group: {
- Struts2 Pojo(六)
Luob.
POJOstrust2
注意:附件中有完整案例
1.采用POJO对象的方法进行赋值和传值
2.web配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee&q
- struts2步骤
wuai
struts
1、添加jar包
2、在web.xml中配置过滤器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.st