- element-plus el-table动态循环展示el-table-column得label+prop
云只上
vue.jselementuijavascript前端es6
需求一:后端返回字段name:"|KDFL|order001|skin001|"当做el-table-column得label展示后端返回字段code:"|KDFL|test0815003|KDFLLD230815000003|"当做el-table-column得prop展示效果:拿到后端数据处理constgroup=ref([])tableData.value?.map((item,index
- vue响应式原理
.YoIo
vue.js前端javascript
对于响应式原理,我们先了解vue是一个MVVM结构的框架;也就是数据层、视图层、数据-视图层;响应式的原理就是实现当数据更新时,视图层也要相应的更新,基于响应式原理我们可以使数据驱动视图的实现变得简单而高效一、响应式原理对于Vue2中的响应式处理来说,他基于js的object.defineProperty()方法的。它的原理主要是如下几步实现的:1、数据劫持:在vue中,当你把一个普通js对象传给
- FastReport .NET & FastReport.Core Crack
SEO-狼术
DelphinetCrack数据库
FastReport.NET&FastReport.CoreCrackKeyFeaturesofFastReport.NET:ItfunctionsalongwiththeinformationobtainedfromtheADO.NETandisallowedtofilterandsortthecolumnsofdatabeingresearched,utilizedalongwiththeir
- mac解决mysql 1055问题
nitricoxide
首遇报错mac本地安装的mysql执行带groupby的语句时,出现了如下报错1055-Expression#1ofSELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn'yyhd_shiro.ar.roleName'whichisnotfunctionallydependentoncolumnsinGROUPBYclause;th
- 入门到精通,掌握这些SQL语句让你成功玩转数据库!
小码哥说测试
软件测试技术分享自动化测试数据库sqljmeter单元测试测试工具自动化测试软件测试
1.在SQL中,如何创建一个数据库?CREATEDATABASEdatabase_name;2.如何删除一个数据库?DROPDATABASEdatabase_name;3.如何创建一个新的数据表?CREATETABLEtable_name(column1datatype,column2datatype,column3datatype,.....);4.如何修改一个数据表的列名?ALTERTABLE
- uniapp解决app端不能用<web-view>将外部页面嵌入当前页面的问题
舍予一
前端知识汇总关于学习开发中遇到的各种问题uni-app前端
uniapp解决app端不能用将外部页面嵌入当前页面的问题参考资料代码(兼容h5与app)父页面子组件Vue2Vue3、组合式、ts参考资料android项目嵌套uniapp页面及交互uniapp嵌套h5页面代码(兼容h5与app)父页面//#ifdefH5//#endif//#ifdefAPP-PLUS//#endifimportContentfrom'./content.vue'.contra
- sqlsugar 不映射字段,sqlsugar 忽略字段。sqlsugar 字段改名。
djk8888
数据库
sqlsugar不映射字段,sqlsugar忽略字段。利用特性SugarColumn,将IsIgnore设置为True即可![SugarColumn(IsIgnore=true)]//sqlsugar忽略字段publicdecimalMaxTemp{get;set;}这样Sqlsugar增删改查数据库的时候自动跳过该字段,但是操作实体的时候依然可以访问到该字段,进行赋值或取值。在SqlSugar中
- VUE3笔记
一介书生.
前端javascriptvue.js前端
前端系列一、HTML5二、CSS3三、JavaScript四、jQuery五、BootStrap六、Element七、Ajax八、JSON九、VUE3第一章、基础一、vue简介1、学习阶段vue2基础vue-cli(vue的手脚架,专门做工程化开发)vue-router(实现前端路由的)vuex(vue存储数据的)element-ui(ui组件库)vue32、vue的特点采用组件化模式,提高代码复
- vue2/3 - 解决项目运行或安装依赖npm install时,出现报错 errno -4048 | Error: EPERM: operation not permitted, mkdir错误
街尾杂货店&
前端常见问题解决前端组件与功能(开箱即用)vue.jsnuxt.jsnpminstall报错errno-4048operationnotpnode_modules清掉缓存删掉npmrc无效
错误截图在vue2|vue3|nuxt项目开发中,运行或执行安装依赖包命令install时出现报错:npmERR!errno-4048|npmERR!Error:EPERM:operationnotpermitted,mkdir‘xxx’,终端满屏报错且无法安装生成node_modules,并且清除缓存和删除对应文件都无法解决,本文提供完美的方案保解决。其他教程都无法解决,本文提供的解决方案完美搞
- 使用jpa的@Query注解查询数据库中datatime类型数据报错Unknown column 'startTime' in 'where clause'
JadeHanLiang
遇到的问题javajpa
今天使用jpa的@Query这个注解查询数据时,sql语句语法出现了错误,记录下来。我的错误写法是这样的@Query(value="select*fromtbwhereDATE_FORMAT(start_time,'%Y-%m-%d')=DATE_FORMAT(startTime,'%Y-%m-%d')",nativeQuery=true)ListfindByStartTime(Datestart
- element遍历表格每列加状态,表格固定某一列
33455432
前端
查询重置自动刷新数据查询列表{{scope.row[scope.column.property].value}}详情详情{{scope.row[scope.column.property].value}}z{{scope.row[scope.column.property].value}}{{scope.row.assetName}}详情详情-->{{item.pointValue}}{{item
- vue+moment转化日期格式为年月日时分秒!最简洁版
暴富的Tdy
vue.js前端javascript
文章目录概要整体架构流程所用组件技术细节小结概要全局实行格式化日期,让你告别冗余处理时间代码整体架构流程使用moment插件实现官网:https://momentjs.cn/所用组件vue2moment技术细节首先执行npminstallmoment--save然后在main.js添加以下代码importmomentfrom'moment'//如果你的main.js每个组件都要vue.use那就加
- mysql中怎么查表中的数据_[MySQL] 用select查询数据表中的记录
18125857287
mysql中怎么查表中的数据
用select查询数据表中的记录select语句的基本语法如下:selectselection_list选择那些列fromtable_list从那个表去选择行whereprimary_constraint行必须满足的条件groupbygrouping_columns对结果如何分组havingsecondary_constraint行必须满足的第二条件orderbysorting_colums对结果
- 关于MySQL索引超详细讲解,你值得收藏!
java大神说
索引是在存储引擎中实现的,而不是在服务器层中实现的。所以,每种存储引擎的索引都不一定完全相同,并不是所有的存储引擎都支持所有的索引类型。下面来详细总结一下MySQL索引。MySQL索引的类型有一下几种:第一、普通索引普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHEREcolumn=…)或排序条件(ORDERBYcolu
- 关于鸿蒙开发中装饰器@Extend、@Styles、@Builder的介绍
学前端的小朱
鸿蒙开发鸿蒙DevEcoStudioarkts前端ExtendStylesBuilder
总结名称适合是否可以参数@Extend抽取特定组件样式、事件√@Styles抽取公共样式、事件×@Builder抽取结构、样式、事件√@Extend语法:@Extend(要扩展的组件,例如Text、Column、Row等)functionfunctionName{...}使用规则:1、@Extend仅支持在全局定义,不支持在组件内部定义。2、@Extend支持封装指定组件的私有属性、私有事件和自身
- Chapter 06 axios使用指南
Heaven645
vue.js前端Vueaxios
欢迎大家订阅【Vue2+Vue3】入门到实践专栏,开启你的Vue学习之旅!文章目录前言一、导入二、发送GET请求三、发送POST请求四、处理响应前言在现代前端开发中,与后端API进行数据交互是至关重要的。Axios是一个基于Promise的HTTP客户端,用于浏览器和Node.js。本文详细介绍了Axios的基本用法。一、导入导入官网提供的axios在线地址:二、发送GET请求axios.get(
- PySpark操作DataFrame常用方法
百流
PySpark使用笔记sparkpython大数据
文章目录PYSPARKDataFrame操作.na1.`drop()`2.drop(subset)3.fill(value,subset)4.replac(to_replace,value,subset)colwithColumns()when()otherwise()replace(str,search,replace)Row对象StructType,StructField,数据类型Struct
- 关于在vue2中给el-table加边框的写法
又写了一天BUG
vue.jsjavascript前端
分三个位置分别给el-table添加边框线样式
- 前端面试题-Vite的打包速度为什么比Webpack快?
爱学英语的程序媛
面试题前端webpacknode.js
哈喽小伙伴们大家好!今天继续为大家分享一道面试题大家都知道,Vite和Webpack是前端开发中用来构建项目的两个框架,Webpack是针对Vue2的,而Vite则是为vue3量身定制的,他们有哪些区别呢?为什么我们推荐使用Vite呢?Webpack又有哪些缺点呢?这篇文章我们来一探究竟。Vite和Webpack的区别主要体现在以下几个方面.1、开发模式的差异在开发环境中,Webpack是先打包再
- 关于vue2运行时filemanager-webpack-plugin报错isFile is undefind
又写了一天BUG
webpack前端node.js
当我们在运行时报此错误时,在vue.config.js里找一下filemanager-webpack-plugin的配置路径。newFileManagerPlugin({onEnd:{delete:['./dist.zip'],archive:[{source:'./dist',destination:'./dist.zip'}]}})在对应的路径下建一个dist文件夹
- Vue(一) 插值与指令语法、数据代理、MVVM模式、事件处理
爱喝水的小鼠
Vuevue.js前端javascript
文章目录1.初始Vue2.模板语法2.1插值语法2.2指令语法3.el与data的两种写法3.1el的两种写法3.2data的两种写法4.MVVM模式5.数据代理5.1Object.defineProperty()5.2何为数据代理5.4vue中的数据代理6.事件处理6.1v-on6.2事件修饰符6.3键盘按键事件1.初始Vuehello{{name}}//创建Vue实例newVue({el:'#
- Hive3:列注释、表注释等乱码解决方案
生产队队长
HIVEhive
--在Hive的MySQL元数据库中执行usehive;1).修改字段注释字符集altertableCOLUMNS_V2modifycolumnCOMMENTvarchar(256)charactersetutf8;2).修改表注释字符集altertableTABLE_PARAMSmodifycolumnPARAM_VALUEvarchar(4000)charactersetutf8;3).修改分
- linux系统编程:数据库
ヾ(´∀`。ヾ)307
数据库
1.数组、链表、变量-----》内存:程序运行结束、掉电数据丢失文件----------------------》硬盘:程序运行结束、掉电数据不丢失数据库:专业存储数据、大量数据-----》硬盘sqlite相关的命令.tables查看数据库中的表.headerson/off开启或者关闭表头.modecolumn列对齐.width列宽1列宽2设置每一列的列宽.schema表名查看表的结构sqlite
- python操作excel
大得369
pythonexcel开发语言
#pipinstallopenpyxl安装fromopenpyxlimportWorkbookfromopenpyxl.stylesimportAlignment,Border,Side#创建一个新的工作簿wb=Workbook()#选择活动工作表ws=wb.active#设置列宽#设置A列宽度为20ws.column_dimensions['A'].width=20#设置B列宽度为30ws.co
- ListView通过不同列的数据实现某一列颜色变化
一个小兵仔
WPF
1、首先定义一个ListView,姓名添加模板,用StackPanel包装TextBox绑定的NAME,背景绑定状态STATUS,实现通过状态的不同,名字显示不同</GridViewColumn&
- SQL使用中常见的误区与错误解析
xvwen
数据库sql数据库java
column“xxx”mustappearintheGROUPBYclauseorbeusedinanaggregatefunction字段xxx必须出现在groupby的条件或者聚合函数中。SELECTid,sum(labor_costs)aslabor_costs,sum(office_costs)asoffice_costs,sum(execute_costs)asexecute_costs
- MySQL 中删除重复的数据并只保留一条
魔道不误砍柴功
MySQLmysql数据库
要在MySQL中删除重复的数据并只保留一条,可以使用下面的方法。方法一:创建临时表这种方法假设你有一个表your_table,并且你要基于某些列来判断哪些数据是重复的。例如,如果你想删除基于column1和column2的重复记录,只保留一条记录,你可以按照以下步骤操作:使用CREATETABLE语句创建一个临时表,用于存储唯一的记录。使用INSERTINTO...SELECT语句将唯一的记录插入
- java表单布局,QML表单布局(GridLayout)的麻烦
黄元正
java表单布局
问题是包含Button的Item没有设置高度.在调试布局问题时,首先要检查这类问题.您可以通过打印项目的几何图形来完成此操作:Item{Layout.columnSpan:2Layout.fillWidth:trueComponent.onCompleted:print(x,y,width,height)Button{anchors.centerIn:parenttext:"Enter"onCli
- 深入理解 Vue 2 的双向绑定原理与实现
NMY112
vue.js前端javascript
在Vue2中,双向绑定是Vue的核心功能之一,它通过数据响应式系统使得数据的变化自动反映在视图上,同时用户在视图上做的更改也能够同步回数据模型。这种双向绑定是通过数据劫持(DataHijacking)和发布-订阅模式(Publish-SubscribePattern)实现的。以下是双向绑定原理及实现方式的详细解析:1.数据劫持(DataHijacking)Vue2使用Object.definePr
- 4.2 python获取单元格的属性
luckyflyyy
PYTHON办公自动化核心模块python开发语言excel数据分析笔记
4.2.1adress属性和get_adress()函数–获取单元格区域的地址表达式.adress:用于获取单元格区域的绝对引用地址;表达式.get_adress(row_absolute,column_absolute,include_sheetname,external):Range对象的get_adress()函数用于按照指定格式返回单元格区域的地址,如绝对引用,相对引用,混合引用等格式的地
- 312个免费高速HTTP代理IP(能隐藏自己真实IP地址)
yangshangchuan
高速免费superwordHTTP代理
124.88.67.20:843
190.36.223.93:8080
117.147.221.38:8123
122.228.92.103:3128
183.247.211.159:8123
124.88.67.35:81
112.18.51.167:8123
218.28.96.39:3128
49.94.160.198:3128
183.20
- pull解析和json编码
百合不是茶
androidpull解析json
n.json文件:
[{name:java,lan:c++,age:17},{name:android,lan:java,age:8}]
pull.xml文件
<?xml version="1.0" encoding="utf-8"?>
<stu>
<name>java
- [能源与矿产]石油与地球生态系统
comsci
能源
按照苏联的科学界的说法,石油并非是远古的生物残骸的演变产物,而是一种可以由某些特殊地质结构和物理条件生产出来的东西,也就是说,石油是可以自增长的....
那么我们做一个猜想: 石油好像是地球的体液,我们地球具有自动产生石油的某种机制,只要我们不过量开采石油,并保护好
- 类与对象浅谈
沐刃青蛟
java基础
类,字面理解,便是同一种事物的总称,比如人类,是对世界上所有人的一个总称。而对象,便是类的具体化,实例化,是一个具体事物,比如张飞这个人,就是人类的一个对象。但要注意的是:张飞这个人是对象,而不是张飞,张飞只是他这个人的名字,是他的属性而已。而一个类中包含了属性和方法这两兄弟,他们分别用来描述对象的行为和性质(感觉应该是
- 新站开始被收录后,我们应该做什么?
IT独行者
PHPseo
新站开始被收录后,我们应该做什么?
百度终于开始收录自己的网站了,作为站长,你是不是觉得那一刻很有成就感呢,同时,你是不是又很茫然,不知道下一步该做什么了?至少我当初就是这样,在这里和大家一份分享一下新站收录后,我们要做哪些工作。
至于如何让百度快速收录自己的网站,可以参考我之前的帖子《新站让百
- oracle 连接碰到的问题
文强chu
oracle
Unable to find a java Virtual Machine--安装64位版Oracle11gR2后无法启动SQLDeveloper的解决方案
作者:草根IT网 来源:未知 人气:813标签:
导读:安装64位版Oracle11gR2后发现启动SQLDeveloper时弹出配置java.exe的路径,找到Oracle自带java.exe后产生的路径“C:\app\用户名\prod
- Swing中按ctrl键同时移动鼠标拖动组件(类中多借口共享同一数据)
小桔子
java继承swing接口监听
都知道java中类只能单继承,但可以实现多个接口,但我发现实现多个接口之后,多个接口却不能共享同一个数据,应用开发中想实现:当用户按着ctrl键时,可以用鼠标点击拖动组件,比如说文本框。
编写一个监听实现KeyListener,NouseListener,MouseMotionListener三个接口,重写方法。定义一个全局变量boolea
- linux常用的命令
aichenglong
linux常用命令
1 startx切换到图形化界面
2 man命令:查看帮助信息
man 需要查看的命令,man命令提供了大量的帮助信息,一般可以分成4个部分
name:对命令的简单说明
synopsis:命令的使用格式说明
description:命令的详细说明信息
options:命令的各项说明
3 date:显示时间
语法:date [OPTION]... [+FORMAT]
- eclipse内存优化
AILIKES
javaeclipsejvmjdk
一 基本说明 在JVM中,总体上分2块内存区,默认空余堆内存小于 40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。 1)堆内存(Heap memory):堆是运行时数据区域,所有类实例和数组的内存均从此处分配,是Java代码可及的内存,是留给开发人
- 关键字的使用探讨
百合不是茶
关键字
//关键字的使用探讨/*访问关键词private 只能在本类中访问public 只能在本工程中访问protected 只能在包中和子类中访问默认的 只能在包中访问*//*final 类 方法 变量 final 类 不能被继承 final 方法 不能被子类覆盖,但可以继承 final 变量 只能有一次赋值,赋值后不能改变 final 不能用来修饰构造方法*///this()
- JS中定义对象的几种方式
bijian1013
js
1. 基于已有对象扩充其对象和方法(只适合于临时的生成一个对象):
<html>
<head>
<title>基于已有对象扩充其对象和方法(只适合于临时的生成一个对象)</title>
</head>
<script>
var obj = new Object();
- 表驱动法实例
bijian1013
java表驱动法TDD
获得月的天数是典型的直接访问驱动表方式的实例,下面我们来展示一下:
MonthDaysTest.java
package com.study.test;
import org.junit.Assert;
import org.junit.Test;
import com.study.MonthDays;
public class MonthDaysTest {
@T
- LInux启停重启常用服务器的脚本
bit1129
linux
启动,停止和重启常用服务器的Bash脚本,对于每个服务器,需要根据实际的安装路径做相应的修改
#! /bin/bash
Servers=(Apache2, Nginx, Resin, Tomcat, Couchbase, SVN, ActiveMQ, Mongo);
Ops=(Start, Stop, Restart);
currentDir=$(pwd);
echo
- 【HBase六】REST操作HBase
bit1129
hbase
HBase提供了REST风格的服务方便查看HBase集群的信息,以及执行增删改查操作
1. 启动和停止HBase REST 服务 1.1 启动REST服务
前台启动(默认端口号8080)
[hadoop@hadoop bin]$ ./hbase rest start
后台启动
hbase-daemon.sh start rest
启动时指定
- 大话zabbix 3.0设计假设
ronin47
What’s new in Zabbix 2.0?
去年开始使用Zabbix的时候,是1.8.X的版本,今年Zabbix已经跨入了2.0的时代。看了2.0的release notes,和performance相关的有下面几个:
:: Performance improvements::Trigger related da
- http错误码大全
byalias
http协议javaweb
响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行。
响应码分五种类型,由它们的第一位数字表示:
1)1xx:信息,请求收到,继续处理
2)2xx:成功,行为被成功地接受、理解和采纳
3)3xx:重定向,为了完成请求,必须进一步执行的动作
4)4xx:客户端错误,请求包含语法错误或者请求无法实现
5)5xx:服务器错误,服务器不能实现一种明显无效的请求
- J2EE设计模式-Intercepting Filter
bylijinnan
java设计模式数据结构
Intercepting Filter类似于职责链模式
有两种实现
其中一种是Filter之间没有联系,全部Filter都存放在FilterChain中,由FilterChain来有序或无序地把把所有Filter调用一遍。没有用到链表这种数据结构。示例如下:
package com.ljn.filter.custom;
import java.util.ArrayList;
- 修改jboss端口
chicony
jboss
修改jboss端口
%JBOSS_HOME%\server\{服务实例名}\conf\bindingservice.beans\META-INF\bindings-jboss-beans.xml
中找到
<!-- The ports-default bindings are obtained by taking the base bindin
- c++ 用类模版实现数组类
CrazyMizzz
C++
最近c++学到数组类,写了代码将他实现,基本具有vector类的功能
#include<iostream>
#include<string>
#include<cassert>
using namespace std;
template<class T>
class Array
{
public:
//构造函数
- hadoop dfs.datanode.du.reserved 预留空间配置方法
daizj
hadoop预留空间
对于datanode配置预留空间的方法 为:在hdfs-site.xml添加如下配置
<property>
<name>dfs.datanode.du.reserved</name>
<value>10737418240</value>
 
- mysql远程访问的设置
dcj3sjt126com
mysql防火墙
第一步: 激活网络设置 你需要编辑mysql配置文件my.cnf. 通常状况,my.cnf放置于在以下目录: /etc/mysql/my.cnf (Debian linux) /etc/my.cnf (Red Hat Linux/Fedora Linux) /var/db/mysql/my.cnf (FreeBSD) 然后用vi编辑my.cnf,修改内容从以下行: [mysqld] 你所需要: 1
- ios 使用特定的popToViewController返回到相应的Controller
dcj3sjt126com
controller
1、取navigationCtroller中的Controllers
NSArray * ctrlArray = self.navigationController.viewControllers;
2、取出后,执行,
[self.navigationController popToViewController:[ctrlArray objectAtIndex:0] animated:YES
- Linux正则表达式和通配符的区别
eksliang
正则表达式通配符和正则表达式的区别通配符
转载请出自出处:http://eksliang.iteye.com/blog/1976579
首先得明白二者是截然不同的
通配符只能用在shell命令中,用来处理字符串的的匹配。
判断一个命令是否为bash shell(linux 默认的shell)的内置命令
type -t commad
返回结果含义
file 表示为外部命令
alias 表示该
- Ubuntu Mysql Install and CONF
gengzg
Install
http://www.navicat.com.cn/download/navicat-for-mysql
Step1: 下载Navicat ,网址:http://www.navicat.com/en/download/download.html
Step2:进入下载目录,解压压缩包:tar -zxvf navicat11_mysql_en.tar.gz
- 批处理,删除文件bat
huqiji
windowsdos
@echo off
::演示:删除指定路径下指定天数之前(以文件名中包含的日期字符串为准)的文件。
::如果演示结果无误,把del前面的echo去掉,即可实现真正删除。
::本例假设文件名中包含的日期字符串(比如:bak-2009-12-25.log)
rem 指定待删除文件的存放路径
set SrcDir=C:/Test/BatHome
rem 指定天数
set DaysAgo=1
- 跨浏览器兼容的HTML5视频音频播放器
天梯梦
html5
HTML5的video和audio标签是用来在网页中加入视频和音频的标签,在支持html5的浏览器中不需要预先加载Adobe Flash浏览器插件就能轻松快速的播放视频和音频文件。而html5media.js可以在不支持html5的浏览器上使video和audio标签生效。 How to enable <video> and <audio> tags in
- Bundle自定义数据传递
hm4123660
androidSerializable自定义数据传递BundleParcelable
我们都知道Bundle可能过put****()方法添加各种基本类型的数据,Intent也可以通过putExtras(Bundle)将数据添加进去,然后通过startActivity()跳到下一下Activity的时候就把数据也传到下一个Activity了。如传递一个字符串到下一个Activity
把数据放到Intent
- C#:异步编程和线程的使用(.NET 4.5 )
powertoolsteam
.net线程C#异步编程
异步编程和线程处理是并发或并行编程非常重要的功能特征。为了实现异步编程,可使用线程也可以不用。将异步与线程同时讲,将有助于我们更好的理解它们的特征。
本文中涉及关键知识点
1. 异步编程
2. 线程的使用
3. 基于任务的异步模式
4. 并行编程
5. 总结
异步编程
什么是异步操作?异步操作是指某些操作能够独立运行,不依赖主流程或主其他处理流程。通常情况下,C#程序
- spark 查看 job history 日志
Stark_Summer
日志sparkhistoryjob
SPARK_HOME/conf 下:
spark-defaults.conf 增加如下内容
spark.eventLog.enabled true spark.eventLog.dir hdfs://master:8020/var/log/spark spark.eventLog.compress true
spark-env.sh 增加如下内容
export SP
- SSH框架搭建
wangxiukai2015eye
springHibernatestruts
MyEclipse搭建SSH框架 Struts Spring Hibernate
1、new一个web project。
2、右键项目,为项目添加Struts支持。
选择Struts2 Core Libraries -<MyEclipes-Library>
点击Finish。src目录下多了struts