web结对项目
一、
二、
三、计算模块接口的设计与实现过程
见上图src下目录结构↑↑↑
四、计算模块接口部分的性能改进
最初由项目的Command。java右键Profile As,进入性能分析,其次打开JVM虚拟机(可以用教程的密码破解Frofile软件)。
然后进入Live memory,最初消耗变化如图:
等待两分钟后,出现红色绿色并存现象:
还有不足,故进行性能优化处理后:
/* * 得到算式,得到答案 * 这个方法是把所有的整个式子,算式和结果分别放入三个ArrayList中 * 新建树并产生用户获取到数目的算式,分别存放List中 * 实现了逐个遍历 * */ //获取三个list public LinkedList<String> createList(int num,int symNum){ GetExpression bTree; for(int i=0;i<num;i++){ //构造树 bTree = new GetExpression(symNum); bTree.buildBTree(); //设置list类里面的expression,result String expression = bTree.toString(); String result = bTree.CalAndVal(); Lists l = new Lists(expression,result); //把expression和result获取出来 Lists.expArr.add(expression); Lists.resArr.add(result); Lists.addArr.add(l.toString()); } return Lists.expArr; }
1 package Function; 2 3 import org.junit.Test; 5 import Entity.Lists; 6 7 public class Tests { 8 9 @Test 10 public void getList(){ 11 Function fun = new Function(); 12 fun.setSybNum(3); 13 Lists list = new Lists(); 14 fun.createList(100,fun.getSybNum()); 15 System.out.println(list.getExpArr()); 16 }//由于没有和前台交互,这时候随便传了几个参数 17 18 @Test 19 public void getFile(){ 20 Function fun = new Function(); 21 fun.ReadFile("C://Users//apple//Desktop//ttt.txt","C://Users//apple//Desktop//www.txt");; 22 }//获取文件 23 }
/*
*增加用户
*/
@Test
public void insertUsers(String nickname ,String password,String email) {
Users users = new Users();
try {
Class.forName(DRIVER);
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "INSERT INTO db_user(nickname,password,email) VALUE(?,?,?)";
ps = connection.prepareStatement(sql);
ps.setString(1, nickname);
ps.setString(2, password);
ps.setString(3, email);
ps.execute();
} catch (Exception e) {
System.out.println(e.getStackTrace());
} finally {
try {
connection.close();
ps.close();
} catch (SQLException e) {
System.out.println(e.getStackTrace());
}
}
}
/*
* 读取文件
* */
@Test
public void ReadFile(String fromUrl,String toUrl){
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(toUrl));
BufferedReader br = new BufferedReader(new FileReader(fromUrl));
String s = null;
for(int i=1;i<=100;i++){
s = String.valueOf(Math.random());
bw.write(s);
bw.newLine();
}
bw.flush();
while((s=br.readLine())!=null){
System.out.println((String)s);
System.out.println("下一行");
}
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
/*
*查询所有的用户
*/
@Test
public List<Users> queryAllUsers() {
Connection connection = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<Users> list = new ArrayList<Users>();
try {
Class.forName(DRIVER);
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "SELECT * FROM db_user";
ps = connection.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
Users users = new Users();
users.setId(rs.getInt("id"));
users.setNickName(rs.getString("nickname"));
users.setPassword(rs.getString("password"));
users.setEmail(rs.getString("email"));
list.add(users);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e){
e.printStackTrace();
}
}
return list;
}
我们的出题界面:
以下代码是交互时jsp获取数据代码:
<% Function fun = new Function(); /* 1.把获得的题目数提交给后台 */ String problemNum = request.getParameter("problemNum"); fun.setNum(Integer.parseInt(problemNum)); %> <% /* 2.包含多少个运算符 */ String symbolNum = request.getParameter("symbolNum"); fun.setSybNum(Integer.parseInt(symbolNum)); %> <% /* 3.算式数值范围*/ String max = request.getParameter("max"); fun.setMax(Integer.parseInt(max)); %> <% /* 4.是否包含乘除法*/ String multi = request.getParameter("multi"); if(multi=="true") fun.isMulDiv(true); else fun.isMulDiv(false); %>
http://www.cnblogs.com/xinz/archive/2011/08/07/2130332.html
结对编程的优点:
1.可以减轻一个人编程的工作量,当一个人做时间久了就会很容易疲劳而且效率低下。但两个人可以轮番交替工作,轮番工作两个人都会很熟悉代码,提高了效率。
2.遇到问题更容易解决,当一个人长时间无法解决问题,就两个人集思广益,每个人都有自己熟悉的领域。
结对编程的缺点:和一个人做相比缺少了一些自主性,需要讨论统一意见什么的,还要开会,因为不是自己亲自设计的,有时候会不熟悉对方的代码结构。
我的优缺点:
优点:比较认真,时间规划比较好,java语言基础比较好
缺点:敲代码重度强迫症,不对齐或者格式不好就一定要改好,很浪费时间
有时候改不好bug会很烦
前台知识有待提高
队友的优缺点:
优点:比较认真负责;心态很好,出问题就积极改正,并对于bug有坚持不懈的精神;态度端正乐于助人,很好沟通。
缺点:代码有时候会有一点不规范
PSP | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 8 | 10 |
Estimate | 估计每个阶段的时间成本,并规划大致工作步骤 | 8 | 10 |
Development | 开发 | 3000 | 4000 |
Analysis | 需求分析 (包括学习新技术) | 60 | 60 |
Design Spec | 生成设计文档 | 40 | 50 |
Design Review | 设计复审 (和同事审核设计文档) | 40 | 45 |
Coding Standard | 代码规范 (为目前的开发制定合适的规 范) | 30 | 40 |
Design | 具体设计 | 120 | 100 |
Coding | 具体编码 | 180 | 200 |
Code Review | 代码复审 | 150 | 150 |
Test | 测试(自我测试,修改代码,提交修改) | 90 | 90 |
Reporting | 报告 | 200 | 230 |
Test Report | 测试报告 | 120 | 150 |
Size Measurement | 计算工作量 | 20 | 20 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | 60 |