- Java中二维数组全部赋成同一个值以及打印二维数组的常用方法
L_59
java开发语言
目录将二维数组全部赋成同一个值。1.使用嵌套循环。2.使用Arrays.fill()方法!推荐3.使用System.arraycopy()方法。总结:打印二维数组1.使用嵌套循环2.使用Arrays.deepToString()!推荐将二维数组全部赋成同一个值。1.使用嵌套循环。int[][]arr=newint[3][3];intvalue=5;for(inti=0;iArrays.fill(a
- Java开发入门-数组和方法以及补充
子柒s
java开发语言
标题目录数组数组的定义数组的初始化静态初始化动态初始化数组的访问数组的遍历/迭代数组的复制使用循环手动复制(最基础)使用System.arraycopy()(高效推荐)使用Arrays.copyOf()方法方法的意义方法的定义方法的调用return方法的重载(overloading)补充随机数的生成方式Math.random()方法(最基础)Random类(最常用)Debug调试工具默认值数组数组
- Java基础(四) Object 数组转成 String 数组
JUN_LLLL
Java基础JavaobjectStingArray数组
Java有个问题就是toArray()方法是Object[],所以总结了几种Object数组转成String数组的方法:1、System.arraycopy把一个数组中某一段字节数据放到另一个数组中//src:源数组;srcPos:源数组要复制的起始位置;dest:目的数组;destPos:目的数组放置的起始位置;length:复制的长度.publicstaticvoidarraycopy(Obj
- JAVA--栈和队列
子夜夏歌
数据结构java
栈-Stack栈是一种先入后出的限定性线性表。数据的插入和删除操作仅在同一端进行,称为栈顶(top),另一端为固定的一端,称为栈底(Bottom)。特征是先入后出。栈有两种基本操作push进栈(栈顶插入)和pop出栈(删除栈顶),基本实现有数组(顺序栈)和链表(链式栈)。顺序栈的实现System.arraycopy(src,srcPos,dest,destPos,length);可实现动态扩容pu
- 2024年最新-Android-面试之Java知识点梳理,新手必看避免踩雷!(含详细解析)
2501_90326065
android面试java
基于数组实现,查找快:o(1),增删慢:o(n)初始容量为10,扩容通过System.arrayCopy方法LinkedList基于双向链表实现,查找慢:o(n),增删快:o(1)封装了队列和栈的调用HashMap、HashTable、HashSetHashMap(允许key/value为null)基于数组和单向链表实现,数组是HashMap的主体;链表是为解决哈希冲突而存在的,存放的是key和v
- 【hot100】189轮转数组
鱼力舟
HOT100算法数据结构
一、思路简单思路,使用将原数组移动到新数组后,然后把新数组移回原数组进阶思路,使用数学特性,将数组整体反转,然后单独反转移动区间和剩余区间二、记忆1.以原数组为基准0移动到新数组和以新数组为基准0从原数组迁移两种思路和写法2.数组复制函数System.arraycopy(num1,0,nums,0,n);3.java中没有翻转数组的api,需要自己写,熟悉相关写法三、代码3.1额外数组public
- 数组拷贝Arraycopy
xing2516
Arraycopyjava
packageqing;//数组拷贝publicclassArraycopy{publicstaticvoidmain(String[]args){//一维数组拷贝Stringa[]={"小米","华为","阿里","腾讯","百度"};String[]aBak=newString[6];//从a数组第0个copy到数组aBak0个开始,长度是a数组长度System.arraycopy(a,0,a
- LeetCode hot 100 学习记录 day 2
a77895
leetcode学习算法
文章目录Integer方法除自身以外数组的乘积缺失的第一个正数参考链接Integer方法由轮转数组到Interger方法、System方法轮转数组:涉及到的方法:System.arraycopy(newArr,0,nums,0,n)nums.assign(newArr.begin(),newArr.end());方法介绍:publicstaticnativevoidarraycopy(Object
- java实战-list遍历删除元素
qq_27233977
java开发实战经验javalist开发语言
1.简述:在我们的实际开发中,list绝对是用的最多的集合类,然而对于很多人来说,用的最多的出错也是最多的。尤其是list的增删操作。2.错误示例publicclassTest{publicstaticvoidmain(String[]args){Listlist=newArrayListlist=newArrayList0)System.arraycopy(elementData,index+1
- byte数组截取
唔66
数据结构
//原始数组byte[]bytes=ImageUtils.toByteArray(fromPaths[0]);//新数组byte[]b1=newbyte[bytes.length-80];//从原始数组80位置开始截取后面所有System.arraycopy(bytes,80,b1,0,bytes.length-80);BufferData2DbufferData2D=newBufferData2
- Java System.arrayCopy 参数意义
邱献旭
下面是System.arrayCopy的源代码声明:publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)代码解释:Objectsrc:原数组intsrcPos:从原数据的起始位置开始Objectdest:目标数组intdestPos:目标数组的开始起始位置intlength:要copy的数组的长
- System.arraycopy和Arrays.copyOf的区别
殷俊杰
System.arraycopy函数原型publicstaticnativevoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength);src:源数组srcPos:源数组起始位置dest:目标数组destPos:目标数组起始位置length:拷贝几个元素Arrays.copyOfpublicstaticint[]copyOf
- 算法训练营Day60(单调栈)
不吃青椒!
算法算法java数据结构
84.柱状图的最大矩形84.柱状图中最大的矩形-力扣(LeetCode)注意首尾加0的细节就可classSolution{publicintlargestRectangleArea(int[]heights){Dequestack=newLinkedList<>();int[]newHeight=newint[heights.length+2];System.arraycopy(heights,0
- java数组工具类_java数组与java.util.Arrays工具类
Peter 王广忠
java数组工具类
概念Java中数组属于引用类型。数组使用场合较多,对于数组的操作具有一定重复性,例如:数组拷贝,转换字符串,转换成数组,排序等等。既然重复的操作与需求多,那么对于数组操作的支持就成了JDK中的一大需求。java.util.Arrays中提供了很多对数组操作的支持。System.arraycopy:数组元素拷贝publicstaticnativevoidarraycopy(Objectsrc,int
- leetcode189 轮转数组
南方乌鸦
算法leetcode数据结构
文章目录1.前言2.解法2.1中间数组2.2冒泡轮转2.3分块反转3.原题1.前言写博客监督自己,至少保证每天一条,解法不一定全,也不一定是最好的,仅供参考。2.解法2.1中间数组最简单的想法就是新建一个数组,然后复制System.arraycopy(int[]arr,intstar,int[]arr2,intstart2,length);//被复制数组开始下标目标数组开始放入位置复制个数//写的
- android 中byte[]的copy
朝阳眯眼
android
在做项目时要用到byte[]的copy,通过for循环是可以实现的,但是再想能不能用别的方法实现,最好调用一个方法,免去for循环。终于让我找到一个方法byte[]parent=newbyte[1024*8];byte[]children=newbyte[123];System.arraycopy(parent,5,children,0,123);四个参数分别表示:第一个:原数组第二个:原数组的开
- java 数组合并的10种方法
一花一world
后端javapython开发语言
在Java中,合并(或连接)数组是常见的任务。以下是10种不同的方法来实现数组的合并:首先是10种方法的对比1.使用System.arraycopy()方法使用场景:当你需要快速、高效地合并两个数组时。优点:是Java标准库提供的方法,不需要额外的依赖。通常比手动遍历和赋值更快。缺点:只能用于基本类型和对象数组的合并。2.使用Java8StreamAPI使用场景:当你喜欢使用函数式编程风格时。优点
- ArrayList的源码分析(一)【转载】
Bitter255
ArrayList简介ArrayList核心源码ArrayList源码分析System.arraycopy()和Arrays.copyOf()方法两者联系与区别ArrayList核心扩容技术内部类ArrayList经典DemoArrayList简介ArrayList的底层是数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapac
- Java arraylist实现原理
我是嘻哈大哥
概述关于Java集合的小抄中是这样描述的:以数组实现。节约空间,但数组有容量限制。超出限制时会增加50%容量,用System.arraycopy()复制到新的数组,因此最好能给出数组大小的预估值。默认第一次插入元素时创建大小为10的数组。按数组下标访问元素—get(i)/set(i,e)的性能很高,这是数组的基本优势。直接在数组末尾加入元素—add(e)的性能也高,但如果按下标插入、删除元素—ad
- Java入门(超级详细)(二)
#看心情
javajava
Java入门(超级详细)-CSDN博客目录一、数组1.什么是数组2.声明数组的三种方式3.数组的遍历4.数组排序1.冒泡排序2.选择排序3.插入排序5.数组复制1.使用循环复制2.使用System.arraycopy()方法复制3.使用Arrays.copyOf()方法进行数组复制6.数组合并1.使用循环合并2.使用System.arraycopy()方法进行数组合并3.使用Stream.conc
- System类 - Java
aPurpleBerry
JavaSEjava
System类常用方法和案例exit退出当前程序arraycopy:复制数组元素,比较适合底层调用,一般使用Arrays.copyOf完成复制数组。int[]src={1,2,3};int[]dest=newint[3];System.arraycopy(src,0,dest,0,3);currentTimeMillens:返回当前时间距离1970-1-1的毫秒数gc:运行垃圾回收机制System
- Java 基础学习(四)操作数组、软件开发管理
久 一
Java开发学习学习开发语言java运维linux数据结构
1操作数组1.1.1System.arraycopy方法用于数组复制当需要将一个数组的元素复制到另一个数组中时,可以使用System.arraycopy方法。它提供了一种高效的方式来复制数组的内容,避免了逐个元素赋值的繁琐过程。相对于使用循环逐个元素赋值的方式,System.arraycopy方法在底层使用了系统级的内存复制操作,因此在处理大型数组时可以更高效地完成复制操作,从而提高性能。使用Sy
- 面试官刁难:Java字符串可以引用传递吗?
沉默王二
老读者都知道了,六年前,我从苏州回到洛阳,抱着一幅“海归”的心态,投了不少简历,也“约谈”了不少面试官,但仅有两三个令我感到满意。其中有一位叫老马,至今还活在我的手机通讯录里。他当时扔了一个面试题把我砸懵了:“王二,Java字符串可以引用传递吗?”我当时二十三岁,正值青春年华,从事Java编程已有N年经验(N0){System.arraycopy(value,start+len,value,sta
- 代码随想录算法训练营 Day 60 | 84.柱状图中最大的矩形
丢硬币的御坂美琴
算法数据结构
84.柱状图中最大的矩形讲解链接:代码随想录-84.柱状图中最大的矩形注意数组扩容。publicintlargestRectangleArea(int[]heights){int[]newHeights=newint[heights.length+2];System.arraycopy(heights,0,newHeights,1,heights.length);intresult=0;Deque
- 【力扣的101夜】轮转数组
墨苏玩电脑
leetcode算法数据结构
publicvoidrotate(int[]nums,intk){}用Syst.arraycopy五个参数是System.arraycopy(nums,length-step,temp,0,step);nums:源数组,即要从中复制元素的数组。length-step:源数组的起始位置,即从哪个索引开始复制。temp:目标数组,即复制后的元素要放到哪个数组中。0:目标数组的起始位置,即从哪个索引开始
- Java语言基础第六天
是程序喵呀
Javajava算法排序算法
精华笔记:数组:复制:System.arraycopy(a,1,b,0,4);int[]b=Arrays.copyOf(a,6);a=Arrays.copyOf(a,a.length+1);排序:Arrays.sort(arr);//对arr进行升序排列方法:函数、过程作用:封装一段特定的业务逻辑功能方法应尽可能独立,一个方法只干一件事方法可以被反复多次调用减少代码重复,有利于代码维护何时用:假设
- Java阶段复习
帝兮小哥哥
Java基础数组一组连续空间,存储多个相同类型的值特点数据类型相同长度固定数组的扩容创建一个新数组,使用For循环将元素逐一赋值System.arraycopy(原数组名,原数组起始下标,新数组名,新数组起始下标,复制的长度)Java.util.Arrays.copyOf(原数组名,新数组名)排序冒泡(相邻两个元素两两比较,互换位置)选择(固定值和其他值依次比较,互换位置)快速查找二分法查找【递归
- LeetCode【4】寻找两个正序数组中位数
Keal、
leetcode算法职场和发展
题目:思路:https://blog.csdn.net/a1111116/article/details/115033098代码:publicdoublefindMedianSortedArrays(int[]nums1,int[]nums2){int[]ints=Arrays.copyOf(nums1,nums1.length+nums2.length);System.arraycopy(num
- 数组复制之System.arraycopy
xiaopangcame
数组java
为了测试俩者的区别我写了一个简单赋值int[100000]的程序来对比,并且中间使用了nanoTime来计算时间差:程序如下:int[]a=newint[100000];for(inti=0;iis_oop(),"JVM_ArrayCopy:srcnotanoop");assert(d->is_oop(),"JVM_ArrayCopy:dstnotanoop");//DocopyKlass::ca
- 【Java集合类面试二十六】、介绍一下ArrayList的数据结构?
Mr.Aholic
集合类java面试数据结构
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享?踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。面试官:介绍一下ArrayList的数据结构?参考答案:ArrayList的底层是用数组来实现的,默认第一次插入元素时创建大小为10的数组,超出限制时会增加50%的容量,并且数据以System.arraycopy()
- 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