#include#include#includelongfun(char*p){inti,len;/*len为串长*/longx=0;len=strlen(p);/*以下完成数字字符串转换为数字,注意字符’0’不是数字0*//*for(i=0;i
C#学习笔记——StringBuilder类
oyqho
C#官方文档学习笔记c#游戏unity
在C#中,有一个非常实用的创建字符型数据的类——StringBuilder类,使用StringBuilder,可以创建出字符串,并且StringBuilder中封装的有许多对字符串进行操作的方法(这一点很方便)。比如说字符串是固定长度的,但是通过StringBuilder类中的Append()方法就可以改变字符串的长度。StringBuilder类的使用需要在前面加上System.Text。代码如
c# —— StringBuilder 类
山水CAD筑梦人
C#学习笔记java开发语言
StringBuilder类是C#和其他一些基于.NETFramework的编程语言中的一个类,它位于System.Text命名空间下。StringBuilder类表示一个可变的字符序列,它是为了提供一种比直接使用字符串连接操作更加高效的方式来构建或修改字符串。与C#中的string类型不同,string是不可变的,这意味着每次对字符串进行修改(如拼接、替换字符等)时,都会创建一个新的字符串对象。
面试经典150题——最长公共前缀
菜菜的小彭
java面试经典150题面试职场和发展leetcode算法java
面试经典150题day20题目来源我的题解方法一横向遍历方法二纵向遍历方法三分治方法四字典树题目来源力扣每日一题;题序:14我的题解方法一横向遍历两两字符串找最长公共前缀时间复杂度:O(nL)。n表示数组的长度,L表示来两两字符创的最长公共前缀。空间复杂度:O(1)publicStringlongestCommonPrefix(String[]strs){Stringpre=strs[0];for
15、Python面试题解析:列表推导式-条件推导与嵌套推导
千层冷面
pythonpython开发语言
1.列表推导式简介列表推导式(ListComprehension)是Python中一种简洁的创建列表的方式。它允许我们通过一行代码生成列表,通常比传统的for循环更简洁、更易读。基本语法[表达式for元素in可迭代对象]表达式:对元素的处理逻辑。元素:从可迭代对象中取出的每个元素。可迭代对象:如列表、元组、字符串等。示例#生成0到9的平方列表squares=[x**2forxinrange(10)
Redis数据类型有哪些
头孢头孢
零散面试相关的总结redis哈希算法数据库
Redis底层数据类型及其实现原理详细解析Redis提供了多种底层数据类型,每种类型都基于不同的数据结构实现,适用于不同的应用场景。理解这些底层实现和它们的使用方式对于优化Redis性能至关重要。以下是Redis中常用的底层数据类型的详细介绍,包括底层实现原理以及一些常用的Java代码示例。1.字符串(String)1.1数据类型描述Redis中的字符串(String)是最基本的数据类型,它可以存
面试经典150题——多维动态规划
Ghost_firejef
面试经典150题面试动态规划
文章目录1、三角形最小路径和1.1题目链接1.2题目描述1.3解题代码1.4解题思路2、最小路径和2.1题目链接2.2题目描述2.3解题代码2.4解题思路3、不同路径II3.1题目链接3.2题目描述3.3解题代码3.4解题思路4、最长回文子串4.1题目链接4.2题目描述4.3解题代码4.4解题思路5、交错字符串5.1题目链接5.2题目描述5.3解题代码5.4解题思路6、编辑距离6.1题目链接6.2
MATLAB中count函数用法
jk_101
Matlabmatlab开发语言
目录语法说明示例对出现次数计数使用模式对数字和字母进行计数多个子字符串的所有出现次数忽略大小写对字符向量中的子字符串进行计数count函数的功能是计算字符串中模式的出现次数。语法A=count(str,pat)A=count(str,pat,'IgnoreCase',true)说明A=count(str,pat)返回pat在str中的出现次数。如果pat是包含多个模式的数组,则count返回pat
SQL复习
浩哲Zhe
Java知识体系构建sqladbjava
SQL复习MySQLMySQLMySQL有什么特点?MySQL不支持全外连接。安装数据类型MySQL中的数据类型分为哪些?MySQL中的数据类型主要分为三大类:数值类型、字符串类型、日期时间类型。其中,数值类型又分为七种:TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL。字符串类型分为五种:CHAR、VARCHAR、BLOB、TEXT、LONGTEX
try-except 中except IndexError与 ValueError的区别
HaoChen/ChenHao
python
案例1:try-except-ValueErrorw="我叫陈浩,毕业于谢菲尔德大学"try:w4=w.index("陈浩是最好的学生")print(w4)#输出结果:ValueError:substringnotfound,因为这里报错了,所以原字符串里面并没有这个字符串“陈浩是最好的学生”exceptValueError:print("ValueError:substringnotfound"
常见数据结构的简介(基本概念 & 操作 & 时间复杂度)
子诚之
编程
文章目录0.概览1.线性表、栈和队列2.数组2.1基本操作1)时间复杂度2)案例3.字符串3.1存储结构3.2基本操作1)时间复杂度2)案例:最大公共字符串4.二叉树4.1储存结构4.2基本操作1)时间复杂度2)案例:使用字典树判断字符串是否存在5.哈希/散列表5.1哈希函数5.2基本操作1)时间复杂度2)案例:构建哈希表《重学数据结构与算法》学习笔记0.概览数据结构增删查特点线性表变长栈队列数组
常见解题方法(位运算、双指针、前缀和)
wibkb
java排序算法快速排序
目录位运算双指针前缀和对于自己刷题过程中遇到的一些常见简单解题方法进行了一个总结:数组在数据结构中是线性表的一种,在算法题中常常以整数数组和字符串等形式展现,其实数组中包含有更多的数据类型,这一段主要说明整数数组的一些常见问题解法;数组的一个特点,可以通过下标对于数据进行一个快速访问,即a[i]=xx;位运算本质上应该算在数学系算法的一大类,通过数组中的各个数进行一个位运算来获得最终的结果。位运算
本地部署model scope魔搭大模型流程
CQller
python算法深度学习机器学习jupyterpytorch
一、安装python二、安装Gradio三、添加镜像加速四、运行字符串倒叙五、运行绘图六、安装常用软件包和库七、我目前使用的软件包和库简介八、文字生成图片AI模型九、文字回复AI模型一、安装python可参考安装步骤:python学习笔记-python安装与环境变量配置_python环境变量-CSDN博客二、安装Gradio在cmd执行以下命令。Gradio封装了功能丰富的前端用户界面,一会儿用来
输出所有可能的出栈顺序
魔法少女小严
java开发语言
abc的所有可能的出栈顺序递归三部曲:1.确定返回值和参数的类型:无返回值要入栈元素的下标n栈Stack字符串out记录出栈路径要入栈的字符串Stringtemp2.确定递归结束条件当n==temp.length时表示字符串都入栈了当栈为空时表示之前入栈的字符都出栈了递归结束条件:n==temp.length()&&stk.isEmpty()3.确定单层逻辑入栈,将下标为n的元素入栈,入栈元素下标
15. MySql高级之常用SQL技巧☆
喵先生呢
#MySql高级mysql
文章目录MySql高级之常用SQL技巧☆1.SQL执行顺序2.正则表达式使用3.MySQL常用函数3.1数字函数3.2字符串函数3.3日期函数3.4聚合函数☆MySql高级之常用SQL技巧☆1.SQL执行顺序编写顺序selectdistinctfromjoinONwheregroupbyhavingorderbylimit执行顺序fromonjoinwheregroupbyhavingselect
在JS中如何转换时间格式
豆豆(前端开发+ui设计)
javascript开发语言ecmascript
在JavaScript中,如果你想要转换时间格式,通常涉及到的是日期对象的操作。JavaScript的Date对象提供了许多方法来处理和格式化日期和时间。以下是一些常用的方法来转换时间格式:1、获取日期和时间组件使用Date对象的方法来获取年、月、日、时、分、秒等组件,然后按照你需要的格式拼接字符串。letdate=newDate();letyear=date.getFullYear();//获取
第2节课:深度学习基础python代码
Lips611
李哥深度学习python深度学习神经网络
目录编译环境:代码:文件:ds_0.py小结:python声明不需要定义,整型和浮点型都是直接给予值,字符串的[-2]代表是列表倒数的某值;同一列表里面可以有各种类型的变量;哈希表的键值对在打印时是调用字典[key],然后输出对应的value文件:judge_0.py小结:python相对于c语言,是将()换成空格和“:”,与此同时判断语句if和else的缩进不同对应着不同层次的判定条件,约等于“
(pandas)常用版本和重要更新
Marst·Zhang
第三方库pandas
前言记录每次pandas库的重要更新,记录每次版本的变化内容.尽可能的记录函数的删改。每次从别人的项目中汲取经验时,难免会遇到不顺利的地方。为方便自己查阅,记录遇到的问题.目录Pandas库历史版本的主要更新和函数变化的示例Pandas库历史版本的主要更新和函数变化的示例Pandas0.23.0(2018年5月发布):引入了Nullable整数数据类型(pd.NA)。引入了新的字符串方法,如str
【Py/Java/C++/C/JS/Go六种语言OD独家2024E卷真题】20天拿下华为OD笔试之【前缀和】2024E-环中最长子串2【欧弟算法】全网注释最详细分类最全的华为OD真题题解
闭着眼睛学算法
最新华为OD真题#前缀和#哈希表算法javac++leetcodejavascriptc语言华为od
可上欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳oj1441了解算法冲刺训练(备注【CSDN】否则不通过)文章目录相关推荐阅读题目描述与示例题目描述输入描述输出描述示例输入输出说明解题思路考虑非环字符串通过前缀确定任意连续字串的情况只考奇偶性而非具体数量三个差值均为偶数的情况将奇偶性状态压缩为数字状态压缩为后的前缀和数组的构建根据前缀和数组找到最长子字符串考虑环形字符串原字符串自身拼接储存下标
【Py/Java/C++三种语言OD独家2024E卷真题】20天拿下华为OD笔试之【回溯】2024E-字符串拼接【欧弟算法】全网注释最详细分类最全的华为OD真题题解
闭着眼睛学算法
最新华为OD真题#回溯#DFSjavac++华为odleetcode算法python
可上欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳od1441了解算法冲刺训练(备注【CSDN】否则不通过)文章目录相关推荐阅读题目描述与示例题目描述输入描述输出描述示例一输入输出说明示例二输入输出说明解题思路代码pythonjavacpp时空复杂度华为OD算法/大厂面试高频题算法练习冲刺训练相关推荐阅读【华为OD机考】2024D+E卷最全真题【完全原创题解|详细考点分类|不断更新题目】【华为O
Redis常用数据类型
pingcode
面试题redis
Redis是Map类型的存储方式,所有数据都采用key:value形式存储,key是字符串,value有以下几种常用数据类型:①String:最基本的数据类型,可以是字符串、整数或浮点数。②List:按插入顺序排序的字符串列表。③Set:唯一字符串的无序集合。④Hash:包含键值对的无序散列。⑤ZSet:唯一字符串的有序集合,根据每个字符串的分数来维持顺序。
vue字符串的常用方法,截取字符串,获取字符串长度,检索字符串
luckyext
vue.jsjavascript前端
1.使用substr方法截取字符串letstr="12345";letpart=str.substr(0,3);//截取从索引0开始到索引3的子字符串console.log(part);//"123"2.获取字符串长度JavaScript中的字符串有一个length属性,该属性可以用在VUE获取字符串的长度conststr='hello';str.length输出结果:53.检索字符串是否包含特定
自动化办公|xlwings 数据类型和转换
游客520
自动化实用代码python全栈学习自动化运维python
xlwings数据类型和转换:Python与Excel的桥梁在使用xlwings进行Python和Excel数据交互时,理解两者之间的数据类型对应关系至关重要。本篇将详细介绍Python数据类型与Excel数据类型的对应关系,以及如何进行数据类型转换。一、Python数据类型与Excel数据类型的对应关系Python数据类型Excel数据类型说明int数字整数float数字浮点数str文本字符串b
代码随想录算法训练营第六天 | 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
虾饺爱下棋
算法leetcodejava哈希表
代码随想录算法训练营第六天|242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和第五天休息,就没写文章,hh感悟:今天的任务相对轻松一些。242.有效的字母异位词link题目:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。先是展现暴力求解:比较好理解,大致思路就是先对两个字符串进行排序,
Excel与数据库操作
楼外楼
excel数据库sqlsqlserver服务器insert
VC6.0中用ADO操作Excel的连接字符串:"DSN=ExcelFiles;DBQ=FilePath+FileName;DefaultDir=FilePath;DriverID=790;MaxBuffersize=2048;pagetimeout=5;"例如:DSN=ExcelFiles;DBQ=D://T_20071122.xls;DefaultDir=D://;DriverId=790;M
Python学习心得字符串的去重操作
lifegoesonwjl
python开发语言pycharm
一个字符串中可能包含许多相同的元素,为了保证字符串中的唯一性,下面介绍的是字符串的去重操作:第一种方式:利用for+if的结构进行去重这个程序是对字符串中的每个元素进行判断,如果不在新建的空字符串中就把该元素添加进来,否则就直接忽略过去。s='helloworldhelloworldhelloworld'new_s=''foritemins:ifitemnotinnew_s:new_s+=item
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