发表于: 2018-09-09 23:56:08
1 448
今日完成:
完成深度思考
1.maven是什么,和Ant有什么区别?
Maven是专门用于构建和管理JAVA相关项目的工具。它还是一个依赖管理工具和项目信息管理工具,还提供了中央仓库能帮我们自动下载构件。
Maven对于项目目录结构有既定的规则,只要遵循了这些成熟的规则,用户在项目切换的时候就免去了额外的学习成本,可以说是约定优于配置。
Ant是过程式的,开发者显示的指定每一个目标,以及完成该目标所需要执行的任务,针对每一个项目,开发者都需要重新编写这一过程,这里其实隐含着很大的重复。而Maven是声明式的,项目的构建过程和过程中各个阶段所需要的工作都是由插件实现,并且大部分插件都是现成的,开发者只需要声明项目的基本元素,maven就执行内置的,完整的构建过程。这在很大程度上消除了重复。Ant是没有自动管理依赖的功能的,而Maven用户无须进行任何配置就可以使用其内置的依赖管理。
2.为什么不可以用Select * from table?
使用这个命令查询会耗时很长,毕竟是遍历表中的所有字段,而大多数情况下我们都不需要所有字段的信息,所以没必要使用这个命令。
3.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?
贫血模型:是指领域对象里只有get和set方法,或者包含少量的CRUD方法,所有的业务逻辑都不包含在内而是放在Business Logic层。
充血模型:层次结构和上面的差不多,不过大多业务逻辑和持久化放在Domain Object里面,Business Logic(业务逻辑层)只是简单封装部分业务逻辑以及控制事务、权限等。
贫血模型在实体类中没有逻辑,更适合大型项目开发和合作开发,解耦也方便后期维护。
4.Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
IOC(Inversion of Control)即控制反转。
它把传统上由程序直接操控的对象的调用权交给了spring容器
创建类的对象是通过new的方式来实现的,但这样会造成代码耦合,依赖关系的憎加的问题。给我们修改代码时造成不便。
而使用IOC将我们设计好的对象交给容器来控制。
5.为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?
大型项目中,通过定义接口可以告诉开发人员需要实现的业务,同时限制了命名规范。
接口和实现类的分离是为了封装,接口描述了系统对外的所有服务,而不涉及任何具体的实现细节。
接口不一定只有一种实现,同一个方法也可能不止一个类调用。这个时候用接口实现分离的方法更好实现,耦合度更低。
6.为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?
使用 try 和 catch 关键字可以捕获异常。
try/catch 代码块放在异常可能发生的地方。try/catch代码块中的代码称为保护代码。
一个 try 代码块可以后面跟随多个 catch 代码块,叫多重捕获。
如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
java提供了抛出异常捕获异常的逻辑用于处理异常,当程序抛出异常时,如果不存在捕获异常逻辑,正在执行的方法将停止执行,并将该异常向外抛出,调用该方法的程序进行同样的处理,如果也没有进行捕获,则将一层一层的向外抛出,直到到达当前线程处时将会终止线程的执行。
正常情况下mysql对于空闲的连接可能会8小时自动关闭。
7.日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?
在业务执行中,每一个步骤判断执行成功与否都要打日志,对于异常,视情况记录日志并进行相应处理。
需要打印出当前执行操作的如id,正在操作的对象,异常的具体内容等等。
8.为什么需要单步调试?Debug的时候IDE是怎么找到源码的?
单步调试是指程序开发中,为了找到程序的bug,通常采用的一种调试手段,一步一步跟踪程序执行的流程,根据变量的值,找到错误的原因。
9.为什么要用Log4j来替代System.out.println?
log4j可以指定输出内容的级别,进行信息的筛选,而且可以输出到文本,方便发现问题和维护。
10.clean,install,package,deploy分别代表什么含义?
clean 可将根目录下生成的target文件移除
install 项目安装到本地仓库了,并且是jar和pom同时安装。
package 项目打包到项目的target目录下。
deploy 是将jar包上传远程库的命令。
任务总结:
任务一整体做下来有下面几个部分:
1.初始数据库MySQL
下载安装MySQL5.5,安装并配置好。这一步对于菜鸡来讲还是有点难度,我当时就重复安装了好几次,刚开始安装完成后不知道它是否安装成功,它是没有界面的。看不到它是个问题,所以它给我的第一印象还是挺抽象的。接下来就得接触命令模式,一个小黑框,一个闪烁的光标。开始用最直接的方式与数据库交互了。关于sql语句这块还是得多敲,敲得很熟练。
2. java大佬登场
JDK、maven、idea软件下载及其配置,按照教程一步一步来。
编写程序来连接数据库,学习JDBC(Java DataBase Connectivity)。这一步就需要有java基础的一些知识了,可以在网上找一些代码来看看。连接数据库的基本步骤,需要的Jar包,几个重要的类,方法的调用。 这些都是我在一遍遍写程序中逐渐掌握的。接下来是JdbcTemplate,这里引入了srping框架,理解dao层在项目中所扮演的角色。学习使用接口,理解接口与实现分离的好处。学习使用mybatis框架,还有与spring的整合。这两个框架比较重要。任务一的第十七步是耗时最久也是最重要的一步,里面的知识点很多。在写这些程序时就可以穿插的学习使用后的一些知识点,日志的打印,单元测试的使用,debug的调试。
3.服务器&Linux
服务器是什么?先买一台,购买时需要选择Linux系统。Linux又是啥?一边部署环境一边自己查资料学习吧。这块不需要太多的深入,学会一些基本的命令就行了。
海量数据的插入,一千条,一万条,100万, 三千万,两亿。数据量的不断升级,对数据库的性能的要求越来越高。批量插入的使用,事务的提交,感受到了插入效率质般的飞跃。
明日计划:
真的要开始任务二了!
遇到的问题:
无
收获:
以上。
评论