- IDEA测试类启动报 “java: 常量字符串过长” 解决办法
无休居士
Java工程常见异常javaintellij-ideaide
目录标题问题描述问题分析解决办法其他办法问题描述问题分析字符串长度过长,导致idea默认使用的javac编译器编译不了。查询资料发现,原因是javac在编译期间,常量字符串最大长度为65534。解决办法Javac编译器改为Eclipse编译器。File->Settings->Build,Execution,Deployment->Compiler->JavaCompiler其他办法如果不是新建pr
- kubernetes里面那些事————控制器
背锅攻城师
kuberneteskubernetes容器云原生
资源-控制器一,控制器作用二,控制器类型2.1,Deployment:无状态应用部署2.2,DaemonSet:确保所有Node运行同一个pod2.3,StatefulSet:有状态应用部署2.4,Job:一次性任务2.5,CronJob:定时任务2.6,pod2.7,service2.8,replicaset2.9,endpoints三,控制器yaml应用3.1,Deployment3.2,Da
- [K8S] K8S资源控制器Controller Manager(4)
XJzz3
K8Skubernetes容器
文章目录1.常见的Pod控制器及含义2.ReplicationController控制器2.1部署ReplicaSet3.Deployment3.1部署Deployment3.2运行Deployment3.3镜像更新方式3.4Deployment扩容3.5滚动更新3.6金丝雀发布(灰度发布)3.7Deployment版本回退3.8Deployment更新策略4.DaemonSet4.1Daemon
- 89、 pod的控制器
ly1435678619
kubernetesk8s容器
一、pod的控制器:pod的控制器:工作负载workload介于k8s集群和节点之间。中间层。确保pod资源符合预期的状态。pod资源出现故障的时候,会自动重启。对基于控制器创建的pod,deletepod相当于对pod的重启,并不能删除pod必须要把控制器删除,pod也会自动删除1.1、pod的控制器的类型:1、replicas1、replicas:结合控制器一块,控制副本数量。2、Deploy
- K8S发布应用步骤详解
cn--萍诚1号
kubernetes
前言首先以SpringBoot应用为例介绍一下k8s的发布步骤。1.从代码仓库下载代码,比如GitLab;2.接着是进行打包,比如使用Maven;3.编写Dockerfile文件,把步骤2产生的包制作成镜像;4.上传步骤3的镜像到远程仓库,比如Harhor;5.编写Deployment文件;6.提交Deployment文件到k8s集群;从以上步骤可以看出,发布需要的工具和环境至少包括:代码仓库(G
- k8s API资源对象
大江东去了吗
kubernetes容器云原生
API资源对象Deployment最小的资源是pod,deployment是多个pod的集合(多个副本实现高可用、负载均衡等)。使用yaml文件来配置、部署资源对象。DeploymentYAML示例:ving-deploy.yamlapiVersion:apps/v1kind:Deploymentmetadata: labels: app:myng name:ng-deployspec: r
- 3. ceph-mimic版本部署
Martin_wjc
7存储cephchrome前端
ceph-mimic版本部署一、ceph-mimic版本部署1、环境规划2、系统基础环境准备2.1关闭防火墙、SELinux2.2确保所有主机时间同步2.3所有主机ssh免密2.4添加所有主机解析3、配置ceph软件仓库4、安装ceph-deploy工具5、ceph集群初始化6、所有ceph集群节点安装相关软件7、客户端安装ceph-common软件8、在ceph集群中创建cephmonitor组
- kubernetes实战(2)
远方的、远方的、、、
运维云原生kubernetes容器云原生
kubectl常用命令1,创建deployment并启动pod(类似dockerrun):kubectlrun--image=nginxnginx-app--port=80--env="DOMAIN=cluster"deployment"nginx-app"created2,根据创建的deployment暴露新服务端口:kubectlexposedeploymentnginx-app--port=
- Docker 部署禅道开源版
SHENHUANJIE
DockerPMS禅道项目管理
原文地址:https://skyner.cn/archives/docker-deployment-of-zen-road-open-source-version-igd7s下载镜像开源版20.5安装命令dockerpullhub.zentao.net/app/zentao:20.5创建网络dockernetworkcreate--subnet=172.172.172.0/24zentaonet安
- Flink生态与未来
weixin_30394333
大数据人工智能数据库
本文为《Flink大数据项目实战》学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程:Flink大数据项目实战:http://t.cn/EJtKhaz核心组件栈Flink发展越来越成熟,已经拥有了自己的丰富的核心组件栈,如下图所示。从上图可以看出Flink的底层是Deploy,Flink可以Local模式运行,启动单个JVM。Flink也可以Standalone集
- Kubernetes入门 七、Deployment控制器
Ethan-running
#K8S入门与实战kubernetes容器云原生
目录什么是Deployment创建Deployment命令创建yaml文件创建扩容缩容镜像更新重建更新滚动更新回滚暂停和恢复前面已经简单里了解过Deployment,下面来深入学一下。什么是Deployment下面来简单回顾下Deployment的概念。Deployment在K8s架构中属于控制器。Deployment是对ReplicaSet(RS)更高层次的封装,可以来自动管理ReplicaSe
- 经验笔记:持续集成/持续部署(CI/CD)流程
漆黑的莫莫
运维笔记ci/cd
持续集成/持续部署(CI/CD)流程经验笔记随着软件开发的快速发展,持续集成(ContinuousIntegration,CI)和持续部署(ContinuousDeployment,CD)已经成为现代软件工程不可或缺的部分。CI/CD不仅提高了软件交付的速度和质量,还增强了团队之间的协作和沟通。下面将详细介绍CI/CD的基本概念、实现步骤及其带来的好处。1.概念理解持续集成(CI)是一种软件开发实
- K8S 发布应用
灼烧的疯狂
云原生kubernetes容器云原生
前言昨儿个用unbuntu20.04又装了一次K8S用的kubeadm+containerd+Cilium(CNI)又重新撸了一遍这里只记录应用发布的笔记正文#创建deploymentkubectlcreatedeploymentnginx--image=nginx#我这边大约30秒后显示为readykubectlgetdeploymentskubectldescribedeploymentngi
- 82、k8s的service-NodePort端口开放和生命周期
ly1435678619
kubernetes容器云原生
0、单节点服务,以及k8s命令[root@master01~]#kubectlcreatedeploymentnginx1--image=nginx:1.22--replicas=3[root@master01~]#kubectlcreatedeploymentnginx1--image=nginx:1.22##创建资源deployment.apps/nginx1created[root@mast
- 第十二章节 xxjob, seata, zk, minio,activeMQ进行 helm化
Wade_Crab
dockerkubernetes容器
要将你提供的Docker命令转换为HelmChart,你需要将相关的配置转化为Kubernetes资源文件,并使用Helm的模板语法进行参数化配置。以下是一个基本的HelmChart示例,包括Deployment、Service和Values.yaml文件。helmcreatexxl-job-admin1.values.yaml这是HelmChart中用于定义默认值的文件。你可以在这里配置镜像、端
- Spark-submit提交任务的常用参数
liuzx32
#参数名称#含义--clusterc3prc-hadoop#--masterMASTER_URL#可以是spark://host:port,mesos://host:port,yarn,yarn-cluster,yarn-client,local,local[K],local[*]--deploy-modeDEPLOY_MODE#Driver程序运行的地方,client或者cluster--cla
- 【Qt报错】This application failed to start because it could not find or load the Qtplatform plugin
爱吃小熊饼干、
C++c++qt
在VS中的relesse能运行,但是在relesae文件夹生成的exe运行报错:ThisapplicationfailedtostartbecauseitcouldnotfindorloadtheQtplatformplugin"windows’in"”Reinstallingtheapplicationmayfixthisproblem.看了很多帖子就是说用windeployqt命令窗口重新运行
- 本地启动Flower来监控Dify的Celery任务队列
shizidushu
DifyflowerceleryRAG
本地启动Flower来监控Dify的Celery任务队列说明:首次发表日期:2024-08-29参考Dify官方文档:https://github.com/langgenius/dify/blob/main/docker/README.md#how-to-deploy-middleware-for-developing-difyCelery参考:https://docs.celeryq.dev/e
- 3.实现nginx pod基于service name调用tomcat pod
哆啦A梦_ca52
修改为3个podroot@master:/opt/k8s-data/ymal/test#vimnginx-test-v1.yamlreplicas:3#tellsdeploymenttorun2podsmatchingthetemplateroot@master:/opt/k8s-data/ymal/test#kubectlapply-fnginx-test-v1.yaml查看增加ip地址的信息r
- 在docker中安装skywalking + es
&如歌的行板&
skywalkingelasticsearch大数据
ES的版本和官网es版本:PastReleasesofElasticStackSoftware|Elastices版本+logstash版本+JDK版本对应关系支持一览表|Elasticskywalking的版本说明和官网Advanceddeployment|ApacheSkyWalkingskywalking和es的对应关系,在网页的SetUp-->AdvancedSetUp--->Choose
- 百日筑基第六十二天-持续集成和持续交付的 pipeline 概念
不要飞升
百日筑基#功法心得ci/cdjava实习
百日筑基第六十一天-持续集成和持续交付的pipeline概念在软件开发中,Pipeline是一种自动化的过程,它包括从开发人员提交代码,到代码构建,测试,部署等一系列的步骤。在持续集成(ContinuousIntegration)/持续部署(ContinuousDeployment)领域,Pipeline是非常重要的,因为它可以帮助开发团队更快,更有效地构建,测试和部署软件。持续集成和持续部署是什
- 2020-08-20 Kettle 无法正常启动 报错:does not exist, please create it ;Unable to create the database cache
迷光
缓存数据库经验分享
当我启动etl的时候出现报错找不到指定文件Lockacquired.Settingstartlevelto100E:\data-integration\system\karaf\deploydoesnotexist,pleasecreateit.于是我进行了百度根据文章我知道是缓存文件导致的这个问题缓存文件造成的错误,只需要找到..\pdi-ce-6.0.1.0-386\data-integrat
- 数据科学生命周期的7个步骤–在业务中应用AI
听忆.
人工智能
数据科学生命周期的7个步骤–在业务中应用AI1.问题定义(BusinessUnderstanding)2.数据收集(DataCollection)3.数据准备(DataPreparation)4.数据探索(ExploratoryDataAnalysis,EDA)5.模型构建(Modeling)6.模型评估(Evaluation)7.模型部署与维护(DeploymentandMaintenance)
- 学习笔记六:ceph介绍以及初始化配置
风车带走过往
K8S相关应用学习笔记ceph
k8s对接cephceph是一种开源的分布式的存储系统,包含以下几种存储类型:块存储(rbd)文件系统cephfs对象存储分布式存储的优点:Ceph核心组件介绍安装Ceph集群初始化配置Ceph安装源安装基础软件包安装ceph集群安装ceph-deploy创建monitor节点修改ceph配置文件配置初始monitor、收集所有的密钥部署osd服务创建ceph文件系统ceph是一种开源的分布式的存
- MAC M1通过AndroidStudio JRE来配置JDK的路径
xuanwenchao
java环境配置androidstudioandroid
安装MacM1芯片版本的AndroidStudio,版本如下:下载地址启动AndroidStudio同步成功后打开AndroidStudio的Preferences-Build,Execution,Deployment-BuildTools-Gradle可以看到GradleJDK的路径,将该路径在命令行下复制好我的MAC系统版本是Monterey12.5.1,因此应该将环境变量添在到zshrc文件
- Kubernetes(k8s)中部署WordPress
条纹布鲁斯
kubernetes容器云原生
在Kubernetes(k8s)中部署WordPress通常涉及创建一个Deployment来管理WordPress的Pod,以及一个Service来暴露WordPress应用。此外,由于WordPress需要数据库支持,你还需要部署一个MySQL或MariaDB的Pod和Service。以下是一个基本的示例,展示了如何使用YAML文件在Kubernetes中部署WordPress和MySQL。M
- Maven 常用命令
cyt涛
javamavenjavaintellijidea开发语言
在开发中一些公共组件会打包jar上传到公司的maven私服上,其它团队从私服下载jar包。如果要发布到私服则执行mvndeploy命令,如果仅是在本地开发执行mvninstall命令发布到本地仓库即可。在Maven中,打包和发布项目的过程涉及到不同的命令和操作,这些操作可以帮助你将项目构建成可重用的JAR文件,并将其发布到本地或远程Maven仓库。以下是对这些操作和常用命令的详细解释:1.Mave
- 进阶岛 - LMDeploy 量化部署进阶实践
ydogg
InternLM大模型学习书生浦语InternLM量化AWQ
一、显存计算方法InternLM系列模型的显存使用主要2部分构成:模型权重kvcache以InternLM2.5-7b-chat为例,它的权重类型是bfloat16,即一个参数占用2字节的浮点数。具体信息可以查看模型目录下的config.json文件。因此,对于该7B(70亿)参数的模型,每个参数使用16位浮点数(2字节)表示,另外,lmdeploy默认设置cache-max-entry-coun
- maven deploy的时候,让指定的子项目不上传
星月昭铭
mavenmaven
有个父级项目A,有子项目B、C,如果在项目A上面deploy的时候,不想上传B到仓库中,可以在子项目B中的pom文件加上以下配置:org.apache.maven.pluginsmaven-deploy-plugintrue
- 自动化开发流程:使用 GitHub Actions 进行 CI/CD
Envyᥫᩣ
自动化githubci/cd
在现代软件开发过程中,持续集成(ContinuousIntegration,CI)和持续部署(ContinuousDeployment,CD)是确保高质量软件交付的关键组成部分。GitHubActions提供了一种简便的方式来实现CI/CD流程的自动化。本文将介绍如何设置和使用GitHubActions来自动化你的项目部署流程。什么是GitHubActions?GitHubActions是一种自动
- html
周华华
html
js
1,数组的排列
var arr=[1,4,234,43,52,];
for(var x=0;x<arr.length;x++){
for(var y=x-1;y<arr.length;y++){
if(arr[x]<arr[y]){
&
- 【Struts2 四】Struts2拦截器
bit1129
struts2拦截器
Struts2框架是基于拦截器实现的,可以对某个Action进行拦截,然后某些逻辑处理,拦截器相当于AOP里面的环绕通知,即在Action方法的执行之前和之后根据需要添加相应的逻辑。事实上,即使struts.xml没有任何关于拦截器的配置,Struts2也会为我们添加一组默认的拦截器,最常见的是,请求参数自动绑定到Action对应的字段上。
Struts2中自定义拦截器的步骤是:
- make:cc 命令未找到解决方法
daizj
linux命令未知make cc
安装rz sz程序时,报下面错误:
[root@slave2 src]# make posix
cc -O -DPOSIX -DMD=2 rz.c -o rz
make: cc:命令未找到
make: *** [posix] 错误 127
系统:centos 6.6
环境:虚拟机
错误原因:系统未安装gcc,这个是由于在安
- Oracle之Job应用
周凡杨
oracle job
最近写服务,服务上线后,需要写一个定时执行的SQL脚本,清理并更新数据库表里的数据,应用到了Oracle 的 Job的相关知识。在此总结一下。
一:查看相关job信息
1、相关视图
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行
- 多线程机制
朱辉辉33
多线程
转至http://blog.csdn.net/lj70024/archive/2010/04/06/5455790.aspx
程序、进程和线程:
程序是一段静态的代码,它是应用程序执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的单位,一个进程执行过程中可以产生多个线程,每个线程有自身的
- web报表工具FineReport使用中遇到的常见报错及解决办法(一)
老A不折腾
web报表finereportjava报表报表工具
FineReport使用中遇到的常见报错及解决办法(一)
这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。
出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。
1、address pool is full:
含义:地址池满,连接数超过并发数上
- mysql rpm安装后没有my.cnf
林鹤霄
没有my.cnf
Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,
至于为什么没有这个文件而MySQL却也能正常启动和作用,在这儿有两个说法,
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于r
- Kindle Fire HDX root并安装谷歌服务框架之后仍无法登陆谷歌账号的问题
aigo
root
原文:http://kindlefireforkid.com/how-to-setup-a-google-account-on-amazon-fire-tablet/
Step 4: Run ADB command from your PC
On the PC, you need install Amazon Fire ADB driver and instal
- javascript 中var提升的典型实例
alxw4616
JavaScript
// 刚刚在书上看到的一个小问题,很有意思.大家一起思考下吧
myname = 'global';
var fn = function () {
console.log(myname); // undefined
var myname = 'local';
console.log(myname); // local
};
fn()
// 上述代码实际上等同于以下代码
m
- 定时器和获取时间的使用
百合不是茶
时间的转换定时器
定时器:定时创建任务在游戏设计的时候用的比较多
Timer();定时器
TImerTask();Timer的子类 由 Timer 安排为一次执行或重复执行的任务。
定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定
- JDK1.5 Queue
bijian1013
javathreadjava多线程Queue
JDK1.5 Queue
LinkedList:
LinkedList不是同步的。如果多个线程同时访问列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方
- http认证原理和https
bijian1013
httphttps
一.基础介绍
在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更加安全。
Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后
- 【Java范型五】范型继承
bit1129
java
定义如下一个抽象的范型类,其中定义了两个范型参数,T1,T2
package com.tom.lang.generics;
public abstract class SuperGenerics<T1, T2> {
private T1 t1;
private T2 t2;
public abstract void doIt(T
- 【Nginx六】nginx.conf常用指令(Directive)
bit1129
Directive
1. worker_processes 8;
表示Nginx将启动8个工作者进程,通过ps -ef|grep nginx,会发现有8个Nginx Worker Process在运行
nobody 53879 118449 0 Apr22 ? 00:26:15 nginx: worker process
- lua 遍历Header头部
ronin47
lua header 遍历
local headers = ngx.req.get_headers()
ngx.say("headers begin", "<br/>")
ngx.say("Host : ", he
- java-32.通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小(两数组的差最小)。
bylijinnan
java
import java.util.Arrays;
public class MinSumASumB {
/**
* Q32.有两个序列a,b,大小都为n,序列元素的值任意整数,无序.
*
* 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
* 例如:
* int[] a = {100,99,98,1,2,3
- redis
开窍的石头
redis
在redis的redis.conf配置文件中找到# requirepass foobared
把它替换成requirepass 12356789 后边的12356789就是你的密码
打开redis客户端输入config get requirepass
返回
redis 127.0.0.1:6379> config get requirepass
1) "require
- [JAVA图像与图形]现有的GPU架构支持JAVA语言吗?
comsci
java语言
无论是opengl还是cuda,都是建立在C语言体系架构基础上的,在未来,图像图形处理业务快速发展,相关领域市场不断扩大的情况下,我们JAVA语言系统怎么从这么庞大,且还在不断扩大的市场上分到一块蛋糕,是值得每个JAVAER认真思考和行动的事情
- 安装ubuntu14.04登录后花屏了怎么办
cuiyadll
ubuntu
这个情况,一般属于显卡驱动问题。
可以先尝试安装显卡的官方闭源驱动。
按键盘三个键:CTRL + ALT + F1
进入终端,输入用户名和密码登录终端:
安装amd的显卡驱动
sudo
apt-get
install
fglrx
安装nvidia显卡驱动
sudo
ap
- SSL 与 数字证书 的基本概念和工作原理
darrenzhu
加密ssl证书密钥签名
SSL 与 数字证书 的基本概念和工作原理
http://www.linuxde.net/2012/03/8301.html
SSL握手协议的目的是或最终结果是让客户端和服务器拥有一个共同的密钥,握手协议本身是基于非对称加密机制的,之后就使用共同的密钥基于对称加密机制进行信息交换。
http://www.ibm.com/developerworks/cn/webspher
- Ubuntu设置ip的步骤
dcj3sjt126com
ubuntu
在单位的一台机器完全装了Ubuntu Server,但回家只能在XP上VM一个,装的时候网卡是DHCP的,用ifconfig查了一下ip是192.168.92.128,可以ping通。
转载不是错:
Ubuntu命令行修改网络配置方法
/etc/network/interfaces打开后里面可设置DHCP或手动设置静态ip。前面auto eth0,让网卡开机自动挂载.
1. 以D
- php包管理工具推荐
dcj3sjt126com
PHPComposer
http://www.phpcomposer.com/
Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
中文文档
入门指南
下载
安装包列表
Composer 中国镜像
- Gson使用四(TypeAdapter)
eksliang
jsongsonGson自定义转换器gsonTypeAdapter
转载请出自出处:http://eksliang.iteye.com/blog/2175595 一.概述
Gson的TypeAapter可以理解成自定义序列化和返序列化 二、应用场景举例
例如我们通常去注册时(那些外国网站),会让我们输入firstName,lastName,但是转到我们都
- JQM控件之Navbar和Tabs
gundumw100
htmlxmlcss
在JQM中使用导航栏Navbar是简单的。
只需要将data-role="navbar"赋给div即可:
<div data-role="navbar">
<ul>
<li><a href="#" class="ui-btn-active&qu
- 利用归并排序算法对大文件进行排序
iwindyforest
java归并排序大文件分治法Merge sort
归并排序算法介绍,请参照Wikipeida
zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F
基本思想:
大文件分割成行数相等的两个子文件,递归(归并排序)两个子文件,直到递归到分割成的子文件低于限制行数
低于限制行数的子文件直接排序
两个排序好的子文件归并到父文件
直到最后所有排序好的父文件归并到输入
- iOS UIWebView URL拦截
啸笑天
UIWebView
本文译者:candeladiao,原文:URL filtering for UIWebView on the iPhone说明:译者在做app开发时,因为页面的javascript文件比较大导致加载速度很慢,所以想把javascript文件打包在app里,当UIWebView需要加载该脚本时就从app本地读取,但UIWebView并不支持加载本地资源。最后从下文中找到了解决方法,第一次翻译,难免有
- 索引的碎片整理SQL语句
macroli
sql
SET NOCOUNT ON
DECLARE @tablename VARCHAR (128)
DECLARE @execstr VARCHAR (255)
DECLARE @objectid INT
DECLARE @indexid INT
DECLARE @frag DECIMAL
DECLARE @maxfrag DECIMAL
--设置最大允许的碎片数量,超过则对索引进行碎片
- Angularjs同步操作http请求with $promise
qiaolevip
每天进步一点点学习永无止境AngularJS纵观千象
// Define a factory
app.factory('profilePromise', ['$q', 'AccountService', function($q, AccountService) {
var deferred = $q.defer();
AccountService.getProfile().then(function(res) {
- hibernate联合查询问题
sxj19881213
sqlHibernateHQL联合查询
最近在用hibernate做项目,遇到了联合查询的问题,以及联合查询中的N+1问题。
针对无外键关联的联合查询,我做了HQL和SQL的实验,希望能帮助到大家。(我使用的版本是hibernate3.3.2)
1 几个常识:
(1)hql中的几种join查询,只有在外键关联、并且作了相应配置时才能使用。
(2)hql的默认查询策略,在进行联合查询时,会产
- struts2.xml
wuai
struts
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache