- 【RKNN系列】常用函数:使用RGA加速画框
jcfszxc
RKNN系列Rockchiprknn-toolkit2c++RKNN
以下是针对convert_and_draw_rectangle函数的详细使用说明:convert_and_draw_rectangle函数功能在给定的图像数据上使用RGA(RockchipGraphicsAcceleration)绘制矩形框。语法IM_STATUSconvert_and_draw_rectangle(uint8_t*dst_data,intwidth,intheight,const
- 2. 下载rknn-toolkit2项目
jcfszxc
RKNN系列rknn-toolkit2RKNN
官网链接:https://github.com/airockchip/rknn-toolkit2安装好git:[[1.Git的安装]]下载项目:gitclonehttps://github.com/airockchip/rknn-toolkit2.git或者直接去github下载压缩文件,解压即可。
- Android系统冻屏、黑屏问题的分析思路
sino lee
图形显示系统黑屏冻屏图层SurfaceFlinger
在Android系统开发过程中,偶尔会遇到显示异常的问题,如画面不再刷新,也就是冻屏,或者屏幕变黑,如果对图形显示系统不熟悉,遇到此类问题还是比较棘手的。如果在工作中遇到类似的问题,或者对图形显示系统感兴趣,可参考清华大学出版社出版的《Android图形显示系统》。图形显示系统是Android系统中最为核心、复杂的子系统,掌握它对于理解Android系统会有一个很大的提升,是一门进阶课题。下面主要
- RK3568-设备树休眠唤醒
Paper_Love
RK3568linux
设备树rockchip_suspend:rockchip-suspend{compatible="rockchip,pm-rk3568";status="disabled";rockchip,sleep-debug-en=;rockchip,sleep-mode-config=;rockchip,wakeup-config=;};休眠唤醒功能宏定义文件:include/dt-bindings/su
- Android 设置开机自启动
Marlon_IT
前段时间在做智能机器人等定制android系统开发的应用,因为机器人定制应用,需要在系统启动的时候就运行程序,不需要展示系统桌面,这里需要用到系统开机应用自启动,也就是常说的开机自启动。记录一下实现流程:1、权限引入在AndroidManifest.xml文件中配置监听启动权限2、创建监听启动完成的广播接收者新建一个监听广播接收者BootReceiverpublicclassBootReceive
- Android11.0系统中启用以太网网络ADB调试
yjz_0314
Android11.0android
Android11.0系统中启用以太网网络ADB调试启用以太网网络ADB调试封装的jar中添加对应方法供第三方应用开发者调用在系统设置中添加控制开关参见其它文章自行实现启用以太网网络ADB调试添加自定义属性,路径为/device/rockchip/rk356x/rk356x.prop;persist.sys.adb_network_debug_open=0启用以太网网络ADB调试属性,路径为/de
- RK3568笔记十二:Zlmedia拉流显示测试
殷忆枫
RK3568学习笔记笔记
若该文为原创文章,转载请注明原文出处。Zlmediakit功能很强大,测试一下拉流,在通过解码显示。一、环境1、平台:rk35682、开发板:ATK-RK3568正点原子板子3、环境:buildroot测试的代码在GitHub-airockchip/rknpu2main_video.cc主要功能是通过Zlmedia拉取RTSP流,并解码,然后重新编码保存成视频,所以直接在例子上修改程序,增加DRM
- [RK3588 Android12]设置语言和默认时区
~生而为赢~
RK3588Android12定制开发ubuntuandroid
修改文件:device/rockchip/rk3588/rk3588_s/rk3588_s.mk,添加如下内容:PRODUCT_PROPERTY_OVERRIDES+=\persist.sys.language=zh\persist.sys.country=CN\persist.sys.timezone=Asia/Shanghai
- rockchip的yocto编译环境搭建
良知犹存
作者:良知犹存转载授权以及围观:欢迎添加微信公众号:Conscience_Remains总述嵌入式的朋友们,应该知道Linux驱动开发过程中,需要进行搭建交叉编译工具链环境、移植u-boot、kernel、根文件系统的几个部分工作。最开始我们的学习是把几个模块分开使用学习使用,各个部分生成代码,然后进行烧录,有时候我们会用脚本去把各个部分的代码打包到一起进行烧录。后来随着工具的发,我们只需要一个S
- LangChain pdf的读取以及向量数据库的使用
hehui0921
LangChain数据库langchainpdf
以下使用了3399.pdf,RockchipRK3399TRMPart1importChatGLMfromlangchain.chainsimportLLMChainfromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.promptsimportChatPromptTemplatefromlangchain
- Rockchip RK3588 - OpenCL环境搭建
Graceful_scenery
在上一节《RockchipRK3588-基于Qt的视频监控和控制系统》,我们介绍了实时监控的实现,在实时监控中我们需要将分辨率为1920x1080的图像缩放为指定窗口大小的图像,当采样帧率比较高时,会占用大量的CPU资源;root@NanoPC-T6:/opt/qt-project/FloatVideo-TouchScreen#exportDISPLAY=:0.0;./FloatVideo-Tou
- Rockchip RK3588 - linux下Qt和opencv交叉编译环境搭建
Graceful_scenery
linuxqt运维服务器开发语言
----------------------------------------------------------------------------------------------------------------------------开发板:NanoPC-T6开发板eMMC:256GBLPDDR4:16GB显示屏:15.6英寸HDMI接口显示屏u-boot:2017.09linux:
- Rockchip RK3588 - USB基础 & 调试
Graceful_scenery
开发板:NanoPC-T6开发板eMMC:256GBLPDDR4:16GB显示屏:15.6英寸HDMI接口显示屏u-boot:2017.09linux:6.1-------------------------------------------------------------------------------------------------------------------------
- RK3568-GPIO扩展-TCA9539/PCA9539驱动加载
荻夜
RK35XX系列调试记录linuxrk3568pca9539
简介TCA9539/PCA9539是一款I2C接口的IO扩展芯片,很多需要IO不够的场合都需要使用IO扩展芯片;在RK3568平台加载驱动在/home/fdkj/Neardi-3568-SDK-Linux-V2.2/Neardi-3568-SDK-Linux-V2.2/kernel/arch/arm64/boot/dts/rockchip/rk3568-neardi-linux-ld120-bas
- Android Media API 使用介绍
大飞飞鱼
WebRTC视频直播技术移动直播技术Android多媒体接口
从事多媒体开发的同学,在对Android系统开发时,Android系统已经给我们提供了对视音频的强大支持,本文介绍Android的几个和视音频相关的类,通过这几个类的组合使用,其实是能变换出许多视音频处理的相关功能,下面就对这几个类进行简单介绍。MediaMetadataRetriever:用来获取视频的相关信息,例如视频宽高、时长、旋转角度、码率等等。MediaExtractor::视音频分离器
- rk3588 pwm-fan风扇调试
月山知了
BSPlinux
rk3588pwm-fan风扇调试:参考文档:http://www.taodudu.cc/news/show-2282037.html?action=onClickRockchip平台cpu散热风扇随温度自动调速的配置方法http://www.coloradmin.cn/o/576106.html?action=onClickrk3568适配温控风扇https://www.kernel.org/d
- MDK3308-EK更改根文件系统为ext2
叶迎宪
默认生成的根文件系统是只读的squashfs,不方便修改。想修改为ext2。前面三步都是参考《RockchipLinux软件开发指南》1、修改kernel的bootargs参数,文件位于kernel/arch/arm64/boot/dts/rockchip/rk3308-evb-v10.dtsicompatible="firefly,rk3308-firefly","firefly,rk3308"
- RK3588 Android12强制HDMI输出特殊分辨率timing
ewin2012
android
1.把白名单去掉,device/rockchip/common/device.mk中如下位置注释掉PRODUCT_COPY_FILES+=\$(TARGET_DEVICE_DIR)/resolution_white.xml:/system/usr/share/resolution_white.xml2.安照下面补丁修改,在kernel-5.10/drivers/gpu/drm/bridge/syn
- Rockchip RK3399 - HDMI音频
Graceful_scenery
RockChipRK3399音视频
----------------------------------------------------------------------------------------------------------------------------开发板:NanoPC-T4开发板eMMC:16GBLPDDR3:4GB显示屏:15.6英寸HDMI接口显示屏u-boot:2023.04linux:6.
- 瑞芯微1808模型转换(onnx到rknn)环境配置过程
Midsummer啦啦啦
解决方案嵌入式硬件pytorch深度学习python
瑞芯微1808模型转换(onnx→\to→rknn)环境配置阅读本解决方案前,请读者确保已经根据官方的相关教程【rknn_model_zoo/common/rknn_converteratv1.5.0·airockchip/rknn_model_zoo(github.com)】完成其他配置文件的修改,以便和您的模型参数相符合,才能转换成功一、基本配置创建虚拟环境condacreate-nrknnp
- RK3568 Android 13 系统裁剪
青春给了狗
android
android13系统裁剪是个大工程,裁剪也是需要大量的测试,才能保证系统的稳定性,以下是RK官方给出的裁剪方案,有兴趣的可以去看一下,对裁剪不是要求过高的可以根据官方的建议,对系统进行裁剪:RockchipAndroid平台内存优化及系统裁剪_build_with_go_opt-CSDN博客然后官方的裁剪比较少,往往达不到我们自身需求想要的,所以我总结了我在开发过程中,精简系统的部分经验,望大家
- RockChip DRM Display Driver
猩猩の點燈
Rockchiplinux
资料来源:《Rockchip_DRM_Display_Driver_Development_Guide_V1.0.pdf》《Rockchip_Developer_Guide_DRM_Display_Driver_CN.pdf》一:DRM概述DRM(DirectRenderingManager)直接渲染管理,buffer分配,帧缓冲。对应userspace库位libdrm,libdrm库提供了一系列
- Buildroot显示kernel logo
zoipuus
TinkerBoard2嵌入式linuxBuildRoot
buildroot开机时DSI屏幕变成跟uart一样输出log,现在想显示logo1、failedtoshowloaderlogo[2.467479]mmcblk1:p1p2p3p4p5p6p7p8p9[2.468827]rockchip-drmdisplay-subsystem:can'tnotfindanyloaderdisplay[2.468859]rockchip-drmdisplay-s
- Rockchip RK3399 - 移植uboot 2023.04 & linux 6.3
Graceful_scenery
RockChipRK3399linux运维服务器
----------------------------------------------------------------------------------------------------------------------------开发板:NanoPC-T4开发板eMMC:16GBLPDDR3:4GB显示屏:15.6HDMI接口显示屏u-boot:2023.04linux:6.3-
- Rockchip | FIQ-Debugger调试工具
嵌入式逍遥
RK开发指南rockchiprk3568linuxfiqdebug调试工具
FIQ-Debuggerfiqdebugger是集成到内核中的一种系统调试手段。FIQ在arm架构中相当于nmi中断,fiqdebugger把串口注册成fiq中断,在串口fiq中断服务程序中集成了一些系统调试命令。一般情况下串口是普通的console模式,在串口工具下键盘输入fiq,串口会切换到fiqdebugger模式。因为FIQ是不可屏蔽中断,所以这种调试手段适合调试cpu被hang住的情况,
- RK356x U-Boot研究所(驱动篇)4.2.1 DRM分析之LOGO显示
嵌入式逍遥
RK356xU-Boot研究所rk3568ubootdrmlogohdmimipiedp
U-Boot启动流程在加载内核设备树后,会根据显示配置初始化drm相关驱动,入口是在rockchip_show_logo函数:intboard_late_init(void){rockchip_set_ethaddr();rockchip_set_serialno();setup_download_mode();#</
- Rockchip linux USB 驱动开发
一叶知秋yyds
驱动开发瑞芯微平台linux驱动开发c语言linux
LinuxUSB驱动架构LinuxUSB协议栈是一个分层的架构,如下图5-1所示,左边是USBDevice驱动,右边是USBHost驱动,最底层是Rockchip系列芯片不同USB控制器和PHY的驱动。LinuxUSB驱动架构USBPHY驱动开发USB2.0PHY驱动开发Rockchip系列芯片,主要使用两种USB2.0PHYIP:InnosiliconIP和SynopsisIP。这两种IP的硬件
- BuildRoot配置RTL8822CE WIFI&BT模块(BT部分)
zoipuus
TinkerBoard2嵌入式linuxRTL8822CEBT
BuildRoot配置RTL8822CEWIFI&BT模块(WIFI部分)-CSDN博客WIFI部分更新一下:①、rkwifibt.mk查看了output/rockchip_rk3399_tinkerboard2/build/的两个目录都有wifi相关的ko(后面makeclean之后剩下linux-headers-custom路径的),md5都一样,随便选了一个,拷贝所有kozoipuus@AD
- RK3566 linux加入uvc app
火柴棍mcu
linux系统及驱动开发linux运维服务器
SDK中external/uvc_app/目录提供了将板卡模拟成uvccamera的功能。一、buildroot使能uvc_app1、进入到buildroot目录在sdk目录下执行以下命令:cdbuildroot2、选择defconfig执行命令:sourcebuild/envsetup.sh输入数字然后回车选择板卡,如:Whichwouldyoulike?[1]:42选择rockchip_rk3
- rockchip 平台 linux FIT 打包格式介绍
一叶知秋yyds
驱动开发瑞芯微平台linuxlinux驱动开发c语言
1基础介绍FIT(flattenedimagetree)是U-Boot⽀持的⼀种新固件类型的引导⽅案,⽀持任意多个image打包和校验。FIT使⽤its(imagesourcefile)⽂件描述image信息,最后通过mkimage⼯具⽣成itb(flattenedimagetreeblob)镜像。its⽂件使⽤DTS的语法规则,⾮常灵活,可以直接使⽤libfdt库和相关⼯具。FIT是U-Boot
- 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