- Kotlin 2.1.0 入门教程(四)
xvch
Kotlinkotlinandroid
基本类型从某种意义上说,一切都是对象,因为您可以在任何变量上调用成员函数和属性。虽然某些类型在运行时具有优化的内部表示形式(如数字、字符、布尔值等),但它们看起来和行为都像普通类。即使基本类型(如Int、Char、Boolean等)在运行时被优化为原始值,但它们在代码中仍然表现为对象,可以调用成员函数和属性。funmain(){valnumber=42number.toDouble()//调用In
- #HarmonyOS篇:装饰器&LocalStorage&AppStorage
程序员xiaolibao
HarmonyOS篇harmonyos
@State装饰器:组件内状态父子Prop父子单向同步Link父子双向同步深层次响应ObservedObjectLink装饰器Observed装饰器使用场景:嵌套对象和数组中进行双向数据同步跨层ProvideProvideConsume跨层组件传递使用建议@State+@Prop组合方案:@Prop装饰器支持接收Object、class、string、number、boolean、enum类型,以
- error: invalid conversion from ‘const char*‘ to ‘char‘ [-fpermissive]
卢一涵
qt开发语言
double转QString时,可以使用QString::number();进行转换,并且可以保留小数点位数。转换字符串的时候出现标题所述的bug。改了好久就是改不好,后来才发现,原来是引号的问题!!!我去,这谁能看得出来啊,我去,这bug有点过分了吧,这让人怎么改。注意看,下面代码中f的引号:QStringstring=QString::number(1.666666,"f",3);QStrin
- C#——foreach循环遍历
在下小孙
c#开发语言foreach
foreach(varitin遍历对象)//类似于auto;var是C#中的隐式类型变量声明关键字,in关键字,用于指定要遍历的集合Console.WriteLine(it);二维遍历int[][]a={newint[]{1,2,3},newint[]{4,5,6},newint[]{7,8,9}};foreach(varitina){foreach(varnumberinit){Console.
- EasyExcel 导出,保留两位小数并显示 千分位
Leslie_Lei
Exceljavaexcel
实体类属性类型为BigDecimal注解@NumberFormat("#,###.00")试过了不顶用,原因不太清楚值为0.81这种,导出后变为.81所以,换个思路,写个转换器,就是麻烦点转换器BigDecimalConvertimportcn.hutool.core.util.StrUtil;importcom.alibaba.excel.converters.Converter;importc
- C#集合操作优化:高效实现批量添加与删除
AitTech
C#c#开发语言
在C#中,对集合进行批量操作(如批量添加或删除元素)通常涉及使用集合类型提供的方法和特性,以及可能的循环或LINQ查询来高效地处理大量数据。以下是一些常见的方法和技巧:批量添加元素使用集合的AddRange方法(如果可用):某些集合类型,如List,提供了AddRange方法,允许一次性添加多个元素。Listnumbers=newList();int[]newNumbers={1,2,3,4,5}
- Java从小白到微服务学习路线
墨说智能制造
Java开发知识体系java学习微服务
JAVA基础教程基础语法对象和类基本数据类型变量类型修饰符运算符循环结构条件语句switchcaseNumber&Math类Character类String类StringBuffer数组日期时间正则表达式方法StreamFile.IOScanner类异常处理JAVA面向对象面向对象继承Override/Overload多态抽象类封装接口枚举包(package)JAVA高级教程数据结构集合框架Arr
- C++遍历list元素
熊猫鹏-梓潼
#include//definelistlistorder1;//recordracknumberlistorder2;//recordpositioninrack//Afterorder1.push_back()andorder2.push_back()operationslist::iteratoriter1,iter2;for(iter1=order1.begin();iter1!=orde
- java sqlite json_是否可以在SQLite中存储和查询JSON?
西琴小竹
javasqlitejson
我需要将JSON对象存储在SQLite数据库中,然后对它进行复杂的查询.我做了这样一张桌子:+--------------------------------------+|document|property|string|number|+--------------------------------------+|foo|"title"|"test"||+-------------------
- oracle查询结果使用“||”拼接符造成的小数点前的0被抹除的问题
肉三
oracleoracle数据库
很多时候当我们写一条查询语句的时候会使用到“||”拼接符,但是如果拼接的列中有一列在oracle数据库中的类型是NUMBER(10,2)这种时,查询结果可能会跟数据库中的值不一致。例如表user_score:namescoreMark0.5Jorn1.3根据上表写出一下查询语句:selectname||'='||scorefromuser_score;当我们执行这条语句时,结果可能会显示为:Mar
- 华为HCIE面试问题-基于丢包问题处理步骤
eNSPLAB
华为HCIE面试问题华为面试职场和发展课程设计计算机网络安全网络
文章目录思路定位1、流控方式统计丢包类型1.1拓扑图1.2原理讲解2、延迟问题2.1拓扑图2.2背景2.3原因2.4解决办法3、友商设备pingAR设备存在丢包,AR设备ping友商设备不丢包3.1原因3.2解决办法思路定位1、流控方式统计丢包类型1.1拓扑图1.2原理讲解R1与R2进行ping测试,使用ACL抓报文,用流统界定问题,配置如下:Aclnumber3333//配置ACLRule10p
- 【vim】vim怎样直接跳转到某行?
音频金钟小赵
#Linux相关vim编辑器linux
vim怎样直接跳转到某行?一、使用行号跳转二、使用相对行号跳转三、使用标记跳转在Vim中直接跳转到某行可以使用以下几种方法:一、使用行号跳转在命令模式下,输入冒号:,然后输入你想要跳转的行号,最后按回车键。例如,如果你想跳转到第50行,操作如下::50这将使光标直接定位到第50行。二、使用相对行号跳转2.1.首先,你需要开启相对行号显示,可以在命令模式下输入::setrelativenumber这
- c/c++ 左值右值
Tiantangbujimo7
基础c语言c++java
左值(Lvalue):定义:表达式结束后依然存在的持久对象。有名字、有持久性的表达式,它是既能够出现在等号左边,也能出现在等号右边的变量。右值(Rvalue):定义:表达式结束后就不再存在的临时对象。临时的、将亡的值。一般是不可寻址的常量,或在表达式求值过程中创建的无名临时对象,短暂性的。左值和右值主要的区别之一是左值可以被修改,而右值不能。intnumber;number=1在这段代码中numb
- Lua毫秒时间-判断操作间隔(如点击按钮)
hookby
lua开发语言
--需要luajitself.lastClickTime=self.clickedTimeoros.time()localmSecTime=tonumber(string.format("%d.%03d",math.floor(sec),msec*1000))self.clickedTime=mSecTimeself.clickInterval=self.clickedTime-self.last
- JavaScript 运算符详解
一蓑烟雨..
javascript笔记javascriptjs
JavaScript(3)运算符详解1.算数运算符//当对非Number类型的值进行运算时,会将其转换为Number类型//任何值和NaN做运算都为NaN//对字符串做加法,结果返回字符串//任何值和字符串做加法运算,都会先转化为字符串再计算vara=123+223;vara=true+1;vara='123'+'456';vara='123'+456;//转化成字符串vara=123+'';//
- JavaScript的那些不可不知的知识
遇见~未来
JavaScriptjavascript开发语言ecmascript
目录JavaScript基础JavaScript高级JavaScript基础数据类型:JavaScript的数据类型分为基本数据类型和引用数据类型。基本数据类型包含number(数字)、string(字符串)、boolean(布尔值)、null(空值)、undefined(未定义)。而像array(数组)、function(函数)等则属于引用数据类型。在内存存储方面,基本类型是按值存储在栈中,引用
- 国产编辑器EverEdit - 合并行
彩虹小黑馬
妙用编辑器编辑器EverEditEmEditornotepad++
1合并行1.1应用场景 在编写代码或其他场景下,有时需要把多行的内容缩减成一行,或者纯粹减少行数进行合并,比如:下面的字典的定义,每个元素占了一行,有点浪费,现在需要把它们缩减行数。typeDict={"姓名":"name","出生日期":"passport_dob","职位":"job","手机号":"phone_number","身份证":"ssn","国家":"country","地址":
- 基于google的libphonenumber包,获取手机号的归属信息:运营商,归属地
小哇666
功能模块java
1pom.xml8.13.262.2201.210com.googlecode.libphonenumberlibphonenumber${libphonenumber.version}com.googlecode.libphonenumbercarrier${libphonenumber.carrier}com.googlecode.libphonenumbergeocoder${libphon
- 美图鉴赏-古风,OpenCV视频批量处理
图苑
java图像处理AIGCopencv
publicstaticvoidmixBatch(StringoutputPath,ListvideoList,intclipDuration,intnumber,intmergeDuration,ProgressCallbackcallback)throwsException{//临时裁剪文件夹StringclipTempDir=outputPath+File.separator+"_clipT
- vue开发:解决el-input-number组件输入数字的时候无法实时触发change事件
问题:当已经输入数字的时候,还触发了为空的校验,预期是已经输入年龄的时候不会校验,输入框没有值的时候才会触发校验的。在网上查找了资料,el-input-number组件输入数字的时候无法实时触发change事件,需要使用@input.native来触发,一开始使用了也没有效果,后来加了this.$nextTick功能实现了。//解决el-input-number组件输入数字的时候无法实时触发cha
- 将十六进制转换为浮点数
潮易
mongodb
将十六进制转换为浮点数的Python程序可以从以下几种方法实现:1.使用内置函数`float()`直接转换:```python#将十六进制字符串转换为浮点数hex_str='1.23e-03'#这是一个十六进制形式的浮点数,需要先转换为十进制形式decimal_str=hex_str.replace('p','E')#将科学计数法中的'p'替换为'E',以便于转换为十进制float_number=
- leetcode 6058. 统计打字方案数java
奔跑的废柴
LeetCodeleetcodejava动态规划
https://leetcode-cn.com/problems/count-number-of-texts/classSolution{//int[]buttons={0,0,3,3,3,3,3,4,3,4};longres=1;intmod=1000000007;long[][]dp;//dp[0]是3字符可能性的,dp[1]是4字符可能性的。dp[][i]表面长度为i的重复字符串的信息种类数
- leetcode 66 :加一【JavaScript/JS解法】
yuri.css
算法leetcode算法javascript
还是先上题给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储单个数字。你可以假设除了整数0之外,这个整数不会以零开头。看完题之后感受就是join和split来回跳return(Number(digits.join(""))+1n).toString().split("");然后出现两个问题:1存在[0,0]这样的输入,如果直接转换为零
- 2018CCPC吉林赛区(重现赛)部分题解
darren0424
数据结构与算法
TheFool题目链接ProblemDescriptionTheFoolisnumbered0–thenumberofunlimitedpotential–andthereforedoesnothaveaspecificplaceinthesequenceoftheTarotcards.TheFoolcanbeplacedeitheratthebeginningoftheMajorArcanaor
- vue3.0如何快速封装自定义指令!
web网站装修工
vue.jsjavascript前端node.js前端框架vueelementui
一、输入框自动获得焦点//定义自定义指令v-focusconstvFocus={//当被绑定的元素插入到DOM中时……mounted(el){//聚焦元素el.focus();}};全局注册指令app.directive('focus',vFocus);使用:二、只能输入数字constvOnlyNumber={mounted(el){//当元素挂载时设置事件监听器el.addEventListen
- JavaScript详解十 ——数据类型、正则
遇见~未来
JavaScriptjavascript开发语言ecmascript
(一)、数据类型内存1、简单类型与复杂类型简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型值类型:简单数据类型/基本数据类型,在存储时变量中存储的时值本身,因此叫做值类型string、number、boolean、undefined、null注意:简单数据类型null返回的是一个空的对象object如果有个变量我们以后打算存储为对象,暂时没想好放啥,就可以给null引用类型:复杂数据类
- CentOS 端口开放指导
Ceramist
centoslinux运维
CentOS端口开放指导在CentOS系统中,您可以使用一些命令来管理TCP和UDP端口的开放。本指南将介绍如何进行单端口开放、范围端口开放、查看已开放端口以及关闭已开放端口等操作。单端口开放要开放单个端口,您可以使用firewall-cmd命令:sudofirewall-cmd--zone=public--add-port=PORT_NUMBER/tcp--permanent将PORT_NUMB
- Vue全流程--数据代理的理解以及在Vue中的应用
不清参
Vue全流程vue.js前端javascript
数据代理定义数据代理就是通过一个数据对象代理对另一个对象中的属性进行读/写需要用到的基础知识js的Object.defineProperty函数补充:(请大致读完后再看下文)Documentletnumber=18;letdata={//Modelname:"小王",sex:"男",url:'https://space.bilibili.com/1347961416?spm_id_from=333
- 用java 实现 Add Two Numbers 两数相加(LeetCode算法)
用心去追梦
算法javaleetcode
LeetCode上的“AddTwoNumbers”问题要求我们实现一个函数,该函数接收两个非空链表作为输入,每个链表表示一个非负整数的逆序表示(即个位在链表头),链表中的每个节点包含一个数字(0-9)。任务是将这两个数相加,并以同样的链表格式返回和。下面是用Java实现这个算法的方法:classListNode{intval;ListNodenext;ListNode(intx){val=x;}}
- python微信库itchat_用python写一个微信群发工具(基于itchat库)
weixin_39654619
python微信库itchat
fromwxpyimport*fromtimeimportsleepimportrandombot=Bot(cache_path=True)#print('防止微信账号违规操作被封,每次发送信息时间间隔为随机0-1.5s')message=input('请输入要发送的微信信息:')friends_number=input('请输入账号好友数量:')number=int(friends_number
- 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