小学期实践项目总结与暑假学习总结
大二下学期小学期实践我组按要求完成了网站的基本前后台搭建和数据库调用,并增添了部分新功能。

必要功能:
1.检验已有帐号,登录功能
2.新闻信息的浏览
3.管理员对新闻的增删改查
4.分页功能
5.数据比对
附加功能:
1.公证申请
2.文件的下载
问题及解决
1、 GC overhead limit exceeded



1、 2、注释乱码



3、R cannot be resolved to a variable

4、
加入Tomcat和JRE
5、使用Sql语句向数据库插入数据出现乱码

6、使用Sql语句向数据库插入数据出现乱码

7、


解决:两个表中都有total_floor,应指明具体的表
注意点
1.DAO
public void addNews(String title,String contents ,String author,int types,int istop,String pic){
try{
con=MySqlDB.getConnection();
String sql="insert into news (title,contents,author,types,sort,rate,istop,pic,pubdate) values(?,?,?,?,?,?,?,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, title);
pstmt.setString(2, contents);
pstmt.setString(3, author);
pstmt.setInt(4, types);
pstmt.setInt(5, 1);
pstmt.setInt(6, 0);
pstmt.setInt(7, istop);
pstmt.setString(8, pic);
pstmt.setString(9, "2015-3-3");
pstmt.execute();
}catch (Exception e){
e.printStackTrace();
}
}
在编写插入一条新的记录的数据库语言时,需要将所有的属性全部添加上,当中不能有缺少否则无法插入成功,并且带有AUTO_INCREMENT的属性不能手动指定数据,不可用占位符指定,也不能用固定值指定,否则同样出错。
2.DB
public static Connection getConnection(){
Connection con=null;
try {
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/gzc","root","shou");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
获取数据库连接时,要确认地址、用户名和密码是否和数据库中的数值相同,在更换数据库后应更新此处数据。
3.Servlet
dao.addNews(request.getParameter("title"),
request.getParameter("contents"),
request.getParameter("author"),
Integer.parseInt( request.getParameter("type")),
Integer.parseInt( request.getParameter("istop")),
request.getParameter("pic"));
response.sendRedirect(request.getContextPath()+"/admin/main.jsp");
将数据从上一层传递至下一层时,要确保获取时由上一层送出的数据是否正确地传递给当前层,并确保下层路径是否正确,尤其需要注意上层数据是否已正确传输,多数情况下错误发生的原因都是数据无法正确传输,有时同样需要检查上层的数据在更上层是否传输正确。
4.前端
<jsp:useBean id="teamDao" class="com.shou.dao.TeamDao"></jsp:useBean>
<jsp:useBean id="newsDao" class="com.shou.dao.NewsDao"></jsp:useBean>
<%request.setAttribute("teamList", teamDao.findTeamByNum(5)) ; %>
<%request.setAttribute("newsList5", newsDao.findNewsByType(5)); %>
<%request.setAttribute("newsList4", newsDao.findNewsByType(4)); %>
<%request.setAttribute("newsList3", newsDao.findNewsByType(3)); %>
<%request.setAttribute("newsList2", newsDao.findNewsByType(2)); %>
<%request.setAttribute("newsList1", newsDao.findNewsByType(1)); %>
数据获取要注意类和函数以及参数是否是所需要的那个,
<c:forEach items="${requestScope.newsList1}" var="news" begin="0" end="2">
<li style="text-align: left;"><img src="img/item1.gif" /> ${news.contents }</li><br />
</c:forEach>
不然无法获得想要的数据。
5.后端
<%String id=request.getParameter("id");
News news=newDao.findNewsById(Integer.parseInt(id));
request.setAttribute("news", news);%>
这部分最重要的就是数据的传输,如果需要将上一层的数据传递给下一层,需要在当前层获取上一层的数据,并赋值给一个新的变量,再由下一层获取这个变量,才能到达传输的目的,如果没有中间的这个变量,数据无法正确传输,数据是无法越层的。
暑假学习内容总结
1.蔡佳
1).Roguelike

将各个物体独立化,分别制作为单独的预制物体,可以有效地进行更改和重用

将各种状态分离,有序的进行状态的改变

将游戏的整体进程和各个物体之间隔离,用一个脚本来对整个游戏进行管理


在游戏设计之初应该有一个大致框架,在实际开发中可以一个模块一个模块的制作,并将模块之间的交互在开发整个游戏的逻辑运算的时候再制作。
2).Racing Game



使用FSM可以高效的管理和切换游戏物体的状态,给游戏对象添加不同情况下的状态可以更好的对对象进行控制


通过路径点的设置可以快捷地制作简单的人工智能


3).插件的使用

熟悉和使用插件可以帮助开发者高效的进行游戏开发,将一些不必要的代码编写通过使用插件进行方法调用来避免重复劳动,而着重于对核心算法的编写。




4).人工智能

通过行为树的控制,可以精确的对游戏对象的状态进行判断和更改

同样可以将一些简单的人工智能通过一系列的行为控制来制作出来,并能将开发者自行设计的行为直接通过行为树来调用,具有很高的灵活性。



完全由事先设定的人工智能对物体进行控制
5).各个平台的发布区别


屏幕必须能够根据设备进行自适应,否则会出现相当多的错误

对于看中算法逻辑的游戏来说,如何编写高效的合理的、容错的算法十分关键


2.杨阳
杨阳:
暑假学习了javascript html css的基础及进阶内容,并在了解最新的轻量级框架vue.js、node.js以及express框架、学会一些简单的爬虫和服务器部署。另学习了被阿里百度都相继青睐的mongodb、更自由的非关系型的数据库的基本操作,数据库特性及连接使用。决定未来专注于轻量级开发,从前端向后端延伸,从而具备全栈开发的能力。参与了战略仪表盘的项目将公司业绩报表用算法进行分类后使用百度提供的ios风格的界面echarts在前端展示并做一些简单的交互。



部分代码示例:



3.宁婷
学习了HTML、CSS、JQuery等关于网页的前台页面展示以及后台逻辑的开发,运用Spring MVC框架实际操作搭建了一个网页后台进行数据处理。并且实际练习开发了Android的简单界面与后台的数据处理。实现了前台提交数据请求并在后台相应处理。在这过程中,运用并初步掌握到数据库连接,数据传输解析,正则表达式等相关联知识,为今后的学习开发打下基础。
Spring MVC 框架的运用:

数据库查询:

Android开发:

4.范智宇
暑假主要学习了unity3d的UGUI和5.0以上的物理引擎系统。

UGUI是unity3d4.6版本以后所新增的一个制作UI界面的方法,代替了原本的GUI方法,原本的GUI方法个人感觉所需代码量太多了,特别不好使,现在所使用的UGUI方法真的是方便了很多,只需要对所需控件需要干嘛添加代码就可以了,而在制作控件外观方面就不用了。

新建的控件untiy3d会自动帮你创造一个canvas画布和一个eventsystem并将控件放入画布中。在下图中可以清晰地看到由四个蓝色圆点所围成的方框就是canvas画布,控件运行时都在画布中。
在对控件添加代码以使其具有一定的效果时,需要在最开始添加两个相关的命名空间,一个是using UnityEngine.UI; 以及 using UnityEngine.Events;这样就可以开始添加代码了。
下面是做的一个简易的装备系统案例:

物理引擎系统在unity3d 5.0 以上的版本中改进还是蛮大的,效果好了很多,物理组件分为physics和physics2d两个部分,分别对应3D 和2D物体,里面的组件大多以关节的形式存在,当然还有些其他的,比如cloth布料。

下面这张图就是给地面添加cloth组件后所形成的效果图,布料下面防止了一个一个球体以方便调试,观察。Ps:这是有摩擦力的。

在物理引擎中用到关节是碰到过一个问题,就是给一个物体施加弹力后,当它再次弹起是却没有摊到初始位置而是会越弹越高。

可以看见,真的是越来越高。目前还不知道解决办法。

目前,关于UGUI 和物理引擎的学习暂告一段落了,现在正在学习昼夜系统,对自己的目标是能独立开发出一些有一定难度的demo。
5.赵纤尘
暑假深入学习了Mysql
- 插入
INSERT INTO table_name1(column_list1) SELECT (column_list2) FROM table_name2 WHERE (condition)
table_name1指定待插入数据的表;column_list1指定待插入表中要插入数据的哪些列;table_name2指定插入数据是从哪个表中查询出来的;column_list2指定数据来源表的查询列,该列表必须和column_list1列表中的字段个数相同,数据类型相同; condition指定SELECT语句的查询条件
- 备份
2.1备份命令mysqldump格式
格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 –database 数据库名 > 文件名.sql
2.2直接将MySQL数据库压缩备份
mysqldump –h hostname –u username –p password -database databasename | gzip > backupfile.sql.gz
2.3仅备份份数据库结构
mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql
- 恢复
3.1使用mysql命令进行还原
格式:mysql -u user -p [dbname]<filename.sql
3.2mysqlhotcopy快速恢复
chown -R mysql.mysql /var/lib/mysql/dbname
- 日志
4.1错误日志:-log-err (记录启动,运行,停止mysql时出现的信息)
--log-error=[file-name]用来指定错误日志存放的位置
在mysql配置文件my.ini中添加:
log-error = D:\ProgramFiles\MySQL\mysqld.err
如果执行了FLUSH LOGS,错误日志文件将被命名为后缀old文件,并且会创建一个新的空文件。
4.2二进制日志:-log-bin (记录所有更改数据的语句,还用于复制,恢复数据库用)
–log-bin=[/path_to/file_name] 用来指定二进制日志存放位置
启动mysql 的二进制日志步骤如下:
1)在配置mysql 的my.ini中添加:
# binary logging - not required for slaves, but recommended
log-bin=D:\ProgramFiles\MySQL\logbin
2)在修改保存mysql.ini后,重启mysql服务
4.3查询日志:-log (记录建立的客户端连接和执行的语句)
–log[=/path_to/file_name] 用来指定错误日志存放位置。
如果没有指定[file-name],默认为主机名(hostname)做为文件名,默认存放在DATADIR目录中。也可以将log配置到my.cnf文件中,这样可省去每次启动mysqld时手工指定—log。
4.4慢查询日志: -log-slow-queries (记录所有执行超过long_query_time秒的所有查询)
如果慢查询日志记录很多可以使用mysqldumpslow进行分类汇总。通过shell直接输入mysqldumpslow /log/slowquery.log 可以获得日志的摘要信息,包括:出现次数(Count)、执行最长时间(Time)、累计总耗费时间(Time)、等待锁的时间(Lock)、发送给客户端的行总数(Rows)、扫描的行总数(Rows)、用户以及sql语句本身.
4.5更新日志: -log-update (二进制日志已经代替了老的更新日志,更新日志在MySQL 5.1中不再使用)