发表于: 2017-11-22 23:31:27
1 692
今天完成的事情:
任务一思考总结:
任务一总结:
自己是10.25号开始接触java,当时什么基础都没有,然后按着任务来做,安装配置程序,文件什么的,很快就搞定了。知道第17步,编写DAO。开始接触代码,这一步,卡了很久。也思考了很久,最后还是决定来线下看看,就目前而言,这个决定很正确。虽然自己问题多,不过好在自己脸皮厚。不会就问。总结主要是一些深入思考里面的内容。
maven与Ant区别:
maven定位是除了以程序构建能力为特色之外,还提供高级项目管理工具。而Ant只是软件构建能力出色。
Maven:clean:清除install:打包到本地仓库package:打包deploy:上传至远程仓库
Maven跳过测试:命令行中:mvn -Dmaven.test.skip=trueMvn -DskipTests
配置文件中:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
Log4j:可以控制日志信息输送的目的地是控制台、文件。不过自己目前对它的使用很少。
DB设计:timestamp 更灵活 且便于存储 Long(bigint)型 。
select unix_timestamp(18:00:00); 返回一个时间戳
select from unixtime(21341241); 返回一个常用时间格式
自增ID:数据量大且需要删除添加新数据不实用,因为删除数据后,不会重新计算ID值,而是跟在被删除数据之后。
普通索引,唯一索引:定位,优化查找速度。创建唯一索引的列,不允许存在相同值。数据库还可以防止添加相同数据。对某一列建立唯一索引进行操作时,不需要判断是否重复。
CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值:CreateAt 指在创建时赋值。updateat是在对数据做出修改就赋值,会记录最后操作该数据的时间。应对update设置根据当前时间戳更新。
修真类型设置为varchar 因为会区分为前端,后端,等等。
Varchar 长度如何确定,以及Text和LongText的区别:varchar存储可变长度的字符串 。Text,LongText :长度不一样。Text: 2^16-1 LongText:2^32-1
分页数据查询:select * from xxx limit m,n 对于这个分页查询其实还存在很多疑问,如何判断是否有下一页?如何设置返回上一页? 等等。
不可以用Select * from table:全部数据,数据量太大,速度缓慢。
贫血模型,什么是充血模型:充血模型:面向对象设计(有对象、状态、行为)。
贫血模型:只有属性,没有方法。DB之中用的很多,把属性与行为分离,就是JDBCtemplate的思想。
Mybaits: 不需要写impl(实现类), 把sql语句写在配置文件中。
Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例:
由spring来控制对象的生成对象,控制对象的生命周期,以及对象间的关系。
为什么使用interface:
接口就是调用端和实现端做个规范,调用端和实现端按照规范做正确的输入和输出调用,异常的输入输出捕获,双方对各自内部的业务都不需要了解,这个是和语言无关的。
如果说同时有orcale 与 sql 数据库。这时候只需要一个interface即可,然后不同的程序去实现接口就可以了。 实现了Dao层与其它层的分离。提升了代码的复用性。
来自 <https://www.zhihu.com/question/29019642>
为什么要处理异常,Try/Catch应该在什么样的场景下使用:
Try/catch是一种报错机制。为了增加代码的健壮性,对于异常要打印出来。
为什么需要单步调试?
单步调试,可以看程序一步一步的执行情况。掌握代码的执行。便于查找问题。
Spring IoC(反转控制) SpringDI
原理:由spring来控制对象的生成对象,控制对象的生命周期,以及对象间的关系。
这里知乎上有个回答对这个的有点阐述的很好:这里贴出来
Spring IoC有什么好处呢? - Sevenvidia的回答 - 知乎 https://www.zhihu.com/question/23277575/answer/169698662
自己理解:java程序中本来是上层结构依赖底层结构,如果这时候底层结构改变,那么整个上层结构都会改变。springDI 可以实现依赖注入,由上层结构去控制下层架构 这样如果下层结果需要变化,只需要改变下层结构,而不需要修改整个结构。降低了耦合。
类似于中介,它自身不使用资源而是提供资源给我们使用。
当我们需要一个新的对象,这时候不需要了解对象到底是如何创建的,springIoc 会自动建立好,它能够自己去找到依赖关系。如下图:
初步尝试了任务二:
在网上找到了对应的教程。跟着教程一步一步走下来。成功运行。下面贴出代码结构以及运行成果。
代码结构:
//主程序
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws Exception {
ModelAndView mav = new ModelAndView("index");
mav.addObject("message", "Hello Spring MVC");
return mav;
}
//xml配置
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/index">indexController</prop>
</props>
</property></bean>
很气啊今天。被web的一个报错折磨了一下午。最后发现原来是表头少写了一行。以及有一段时间8080端口被占用。
运行效果:
![]()
明天计划的事情:
继续深入学习springMVC。
遇到的问题:
在任务一中,接触了很多东西。java mysql maven mybatis spring lunix junit这些做java经常会接触的东西,在任务一全部接触了。
任务一也是真的很难。自己对java毫无基础。
今天主要还是在配置springMVC的过程中遇见的问题。很气。
收获:
大体总结了任务一。不过有很多地方都没有深挖,只是处于一个了解,能用,会用的阶段。自己基础还是相当缺乏。慢慢来吧。争取在以后任务中,
多遇见问题,这样成长更快,单纯的学习某一样知识,当时会了,很容易忘记。还是要自己遇见问题的时候,解决了,记录下来,这样自己印象深刻,以后遇见类似的问题,更容易解决。
禅道链接:http://task.ptteng.com/zentao/project-task-418.html
以上!
评论