- 关键字、函数和方法
myjzwsz
python编程语言封装类
【Python】关键字、函数和方法关键字是python内置的、具有特殊意义的标识符importkeywodprint(keyword.kwlist)函数封装了独立功能,可以直接调用函数名(参数)函数是需要死记硬背的方法方法和函数类似,同样是封装了独立的功能方法需要对象来调用,表示针对这个对象要做的操作对象.方法名(参数)方法名是不需要死记硬背的
- python 中如何Debug
测试小白球
BUG记录pythondebug
debug是编码是非常重要的调试技巧,通过在运行过程中设置断点,帮助开发人员更好的理解运行过程。Python的debug方式:使用pdb模块。importpdb;pdb.set_trace()使用方法:在需要设置断点的地方,插入方法pdb.set_trace()defapple_task_list():method=request.method.lower()importpdb;pdb.set_t
- 代码随想录第五十三天| 102.沉没孤岛 105.有向图的完全可达性 106.岛屿的周长
kill bert
代码随想录算法训练营java算法数据结构
字符串转换序列题目描述给定一个字符串beginStr和一个字符串endStr,以及一个字典strList。找到从beginStr到endStr的最短转换序列中的字符串数目。转换规则如下:序列中第一个字符串是beginStr。序列中最后一个字符串是endStr。每次转换只能改变一个字符。转换过程中的中间字符串必须是字典strList中的字符串,且每个字符串只能使用一次。如果不存在这样的转换序列,返回
- 【Auto-Scroll-List 组件设计与实现分析】
Gazer_S
Vue3重构优化数据结构vue.js前端javascript
Auto-Scroll-List组件设计与实现分析gitee代码仓库https://gitee.com/chennaiyuan/dayup-record/tree/master/%E4%B8%80%E4%BA%9B%E7%BB%84%E4%BB%B6/auto-scroll-list1.组件概述我们封装的AutoScrollList是一个自动滚动列表组件,主要用于展示需要自动循环滚动的数据项,如通
- java redis pipeline,redis pipeline简介
神奇激光世界
javaredispipeline
java中redis的pipelinepipeline方式执行redis操作:Listresults=this.getRedisTemplate().executePipelined(newRedisCallback(){@OverridepublicObjectdoInRedis(RedisConnectionconnection)throwsDataAccessException{RedisS
- 猴子选大王C++STL--list
JPC客栈
c++算法开发语言
【问题描述】n只猴子围坐成一个圈,按顺时针方向从1到n编号。然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,再从刚出局猴子的下一个位置重新开始报数,如此重复,直至剩下一个猴子,它就是大王。设计并编写程序,实现如下功能:(1)要求由用户输入开始时的猴子数n、报数的最后一个数m。(2)给出当选猴王的初始编号。【输入形式】输入两个数据,分别是猴子数和报数的最后一个数,数据之间一个空格隔开。
- [18] C++STL容器篇之链表list
Cukor丘克
C++学习数据结构链表c++list
C++STL容器篇之链表list文章目录C++STL容器篇之链表listC++STL的list的底层原理list的创建方式list的遍历方式list的一些常用的成员函数主函数测试一下C++STL的list的底层原理其实它的底层就是数据结构的双向链表。可以从头遍历,也可以从尾遍历的那个,但不是循环的。在STL中就把这样的一个双向链表封装成一个类,方便开发人员直接使用,避免重复造轮子。list的创建方
- C++ STL教程-list
yhwang-hub
C++
目录C++list(STLlist)容器完全攻略(超级详细)C++STLlist迭代器及用法(详解版)C++STLlist删除元素详解C++list(STLlist)容器完全攻略(超级详细)STLlist容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。图1展示了list双向链表容器是如何
- 09.【C++】list链表(STL中的列表容器,C++封装的带头双向链表,可实现指定类型的增删查改,迭代器操作等功能)
..过云雨
C++c++开发语言
目录一.list的介绍及使用1.1list的介绍1.2list的使用1.2.1list的构造1.2.2listiterator迭代器的使用1.2.3listsize&empty大小判空1.2.4listelementaccess头尾引用1.2.5listmodifiers增删查改1.2.6list的迭代器失效1.2.7list排序的使用二.list的模拟实现2.1模拟实现list三.list与ve
- 链表 力扣hot100热门面试算法题 面试基础 核心思路 背题 LRU 合成K个升序链表 环形链表II 合成两个有序链表 两数相加 删除链表的倒数第N个节点 两两交换链表中的节点 K个一组反转链表等
尘土哥
算法链表leetcode
链表一定要有模版思想,特别是反转链表,直接记住。相交链表https://leetcode.cn/problems/intersection-of-two-linked-lists/核心思路设第一个公共节点为node,headA的节点数量为a,headB的节点数量为b,两链表的公共尾部的节点数量为c,则有:头节点headA到node前,共有a−c个节点;头节点headB到node前,共有b−c个节点
- 带过期时间的LRUCache java实现
.禾火
java算法数据结构
实现代码,惰性删除过期节点importjava.util.*;publicclassLRUWithExpire{staticclassListNode{intkey;intvalue;//单位为毫秒longexpire;ListNodepre;ListNodenext;publicListNode(intkey,intvalue,longexpire){this.key=key;this.valu
- 数据结构-单链表基本操作的实现
Xiao_Ya__
数据结构考研c语言数据结构算法链表
CreateList_R(LinkList&L,intn):后插法创建单链表——时间复杂度O(n)GetElem(LinkListL,inti,ElemType&e):单链表的取值——时间复杂度O(n)LocateElem(LinkListL,ElemTypee):单链表的按值查找——时间复杂度O(n)ListInsert(LinkList&L,inti,ElemTypee):单链表的插入——时间
- 侯捷 C++ 课程学习笔记:C++常用标准库
Three~stone
c++学习笔记
标准库#include万能头是一个简写方式,用来一次性包含C++标准库中的许多常用部分,比如输入输出流(iostream)、算法(algorithm)、向量(vector)、列表(list)、队列(queue)、栈(stack)、映射(map)、集合(set)等。使用它可以让程序员在编写解决特定问题的代码时,不必一一列出所需的所有头文件,简化了代码的编写过程。在实际的工程项目或更专业的编程实践中,
- 什么是C++标准库中的抽象设施?
七贤岭双花红棍
c++开发语言
1.容器(Containers)提供数据结构的抽象,隐藏底层内存管理细节:•序列容器:std::vector(动态数组)、std::list(双向链表)、std::deque(双端队列)等。•关联容器:std::map(有序键值对)、std::unordered_map(哈希表)、std::set(唯一键集合)等。•适配器:std::stack(栈)、std::queue(队列)、std::pri
- QT基础:遍历QListWidget,及QListWidget简单演示,适合初学者食用
8年老菜鸡
QTDemoqtui开发语言
QListWidget是一个列表框,关于它的详细介绍可以参考:QtQListWidget详解初学者如果只是想在短时间内了解QListWidget的话,可以参考这里1、打开QT,创建一个widget项目,在UI中加入QListWidget和一个PushButton(等会备用)可以双击QListWidget小部件,点左下角的+可以在里面添加数据选中某一项数据,点击坐下属性,还可以添加图标2、在窗口中,
- Node7z正确识别中文字符
霄铭XiAo
nodejsnode-7ztypescript
importseven7zfrom'node-7z';constlistStream=seven7z.list(filePath,{$bin:path7z(),charset:'UTF-8'});仅需设置charset即可
- SpringBoot监听应用启动和优雅停机
黑风风
Spring参考手册springbootjavaspring
SpringBoot监听应用启动和优雅停机在SpringBoot中,监听应用的启动和优雅停机(gracefulshutdown)可以使用ApplicationListener监听ApplicationReadyEvent和ApplicationFailedEvent事件,同时通过@PreDestroy或DisposableBean处理关闭逻辑。下面是具体实现步骤:1.监听SpringBoot启动可
- Python中的collections模块
木心
#Pythonpython开发语言
Python中的collections模块文章目录Python中的collections模块1.Counter对象2.deque对象3.defaultdict对象4.namedtuple5.OrderedDictReferencePython中的collections提供许多容器数据类型,这个模块实现了一些专门化的容器,提供了对Python的通用内建容器dict、list、set和tuple的补充
- 代码随想录算法训练营第八天| 344. 反转字符串、541. 反转字符串II、卡码网:54. 替换数字
Rachela_z
算法python开发语言
344.反转字符串建议:本题是字符串基础题目,就是考察reverse函数的实现,同时也明确一下平时刷题什么时候用库函数,什么时候不用库函数题目链接/文章讲解/视频讲解:代码随想录状态:用左右指针顺利通过左右指针:classSolution:defreverseString(self,s:List[str])->None:"""Donotreturnanything,modifysin-placei
- 【蓝桥杯】省赛:连连看(暴力 非AC)
遥感小萌新
蓝桥杯蓝桥杯职场和发展
对角线遍历每个元素的左下、右下对角线,检查是否值相等n,m=map(int,input().split())A=[]foriinrange(n):ls=list(map(int,input().split()))A.append(ls)cnt=0foriinrange(n):forjinrange(m):#zuoxiaforpinrange(1,min(n-1-i+1,j+1)):ifA[i+p]
- SQL*Loader Messages 报错
luobotoutou123
linux
SQL*LoaderMessagesThischapterlistsmessagesyoumightseewhenusingSQL*Loader.SQL*Loadermessagestaketheform:SQL*Loader-codenumber:messagetextAlongwithitsownmessages,SQL*Loadersometimesdisplaysrelatedmessag
- 分治思想--快速排序 | 优先队列:力扣215. 数组中的第K个最大元素
剑圣土豆
LeetCode高频面试题
1、题目描述:2、题解:哈希表:力扣347.前K个高频元素方法1:暴力解法:也就是我们进行排序(默认从小到大),然后倒序取第K个元素即可。classSolution:deffindKthLargest(self,nums:List[int],k:int)->int:nums.sort()returnnums[-k]方法2:分治思想,也即是快速排序中的主要部分进行变体,我们找到第len(nums)-
- leetcode:206.反转链表
uncle_ll
编程练习-Leetcodeleetcode链表反转递归迭代算法训练营
206.反转链表来源:力扣(LeetCode)链接:https://leetcode.cn/problems/reverse-linked-list给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例3:输入:head=[]
- docker 安装 使用(ubuntu)
临街的小孩
dockerubuntu容器
安装#配置源curl-fsSLhttps://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg|sudoapt-keyadd-#安装阿里云gpg证书cd/etc/apt/sources.list.d#在指定目录下新建docker.list文件,添加阿里云镜像源sudotouchdocker.listsudochmod666docker.listsudoec
- FX-C++可变参数
lucky1_1star
C++c++windows开发语言
1.C风格的可变参数(C-stylevariadicarguments)C++继承了C语言的可变参数机制,使用...语法。这种方式需要头文件中的宏来访问参数。示例:#include#includevoidprintNumbers(intcount,...){va_listargs;//定义一个va_list类型的变量va_start(args,count);//初始化args,count是最后一个
- pythonsubplot_python matplotlib中的subplot函数使用详解
郝志鹄
pythonsubplot
python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个包。基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数。于是,为了节省时间,可以一劳永逸。我把常用函数作了一个总结,最后写了一个例子,以后基本不用怎么改了。一、作图流程:1.准备数据,,3作图,4定制,5保存,6显示1.数据可以是numpy数组,也可以是list2创建画布:impor
- 给空间加载图标
weixin_30859423
//MFCday003Dlg.h:头文件//#pragmaonce#include"MylistCtrl.h"#include"afxcmn.h"//CMFCday003Dlg对话框classCMFCday003Dlg:publicCDialogEx{//构造public:CMFCday003Dlg(CWnd*pParent=NULL);//标准构造函数//对话框数据enum{IDD=IDD_MF
- Android adb shell报错:more than one device/emulator
li-yizhi
Androidadbandroid
使用环境:一台电脑(win10),一个模拟器(mumu)报错过程在cmd中运行adbkill-serveradbconnect127.0.0.1:7555startstudy.pyadbshell出现报错morethanonedevice/emulator查找原因C:\Users\neo>adbdevicesListofdevicesattached10.192.229.32:
- python列表排序方法从大到小,python列表排序sorted
青峰235
windowspythonlinux人工智能
本篇文章给大家谈谈python列表排序的方法有几种,以及python列表排序方法从大到小,希望对各位有所帮助,不要忘了收藏本站喔。Pythonlist内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。1)排序基础简单的升序排序是非常容易的python引用turtle画蝴蝶。只需要调用sorted()方法。它返回一个新的list,新的l
- 小程序网络大文件缓存方案
z.week
小程序uni-app小程序缓存
分享一个小程序网络大图加载慢的解决方案用到的相关apigetSavedFileList获取已保存的文件列表;getStorageSync获取本地缓存;downloadFile下载网络图片;saveFile保存文件到本地;setStorage将数据储存到小程序本地缓存;整体思路如下:先获取已保存的本地文件,如果从来没有保存过,就先下载网络图片并保存到本地,同时将文件路劲缓存到小程序,等下次需要的时候
- 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