发表于: 2017-06-18 22:38:31

2 1125


遇到的问题

在mybatis中执行insert语句并返回ID可以使用<use generateKeys>标签设置使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。

最后碰到了一个非常痛苦的bug,应该是eclipse的bug,我把工作区间调整了一下,再把项目导入eclipse中,但有一个项目导入后始终在项目资源管理器
中不显示,重新导入后报错提示已经导入了该项目。在网上查了很多方法都不行,最后各种试,发现如果设置了工作集(working set)的话,导入项目必须将其添加到工作集中,
否则在project explorer中不显示。

今天完成的

1.maven是什么,和Ant有什么区别?
Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。Maven除了具备Ant的功能外,还增加了以下主要的功能:
1)使用Project Object Model来对软件项目管理;
2)自动化程度高,使得构建文件更加简单;
3)内置依赖管理和Repository来实现依赖的管理和统一存储;
4)内置了软件构建的生命周期;
我的感觉是maven和ant都是项目管理工具,ant比maven构建起来可能稍微麻烦一些,两者可以互相转换。
2.clean,install,package,deploy分别代表什么含义?
clean:清空项目target下的构建缓存
install:就是安装,把项目打完的jar包安装到本地仓库中,供其它模块使用
package:打包jar/war/pom
deploy:没用过,查了一下,是将本地仓库的包上传到maven中央仓库
3.怎么样能让Maven跳过JUnit?
eclipse下可以直接在maven build窗口选择skip test,命令行下要使用maven-surefire-plugin插件
 <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </build>
4.为什么要用Log4j来替代System.out.println?
println调试很麻烦,总不能在项目所有地方都写上,管理起来也麻烦,log4j还是不太会用,但输出的ERROR/DEBUG信息很清楚,ORM的整个过程
(打开db,使用连接池,打开会话,设置参数等等)也能输出,丢一个属性文件就能初始化运行,很方便。
5.为什么DB的设计中要使用Long来替换掉Date类型?
------------没设计这个,用的timestamp
6.自增ID有什么坏处?什么样的场景下不使用自增ID?
------------感觉自增id是不连续的,别的不知道
7.什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
 索引相当于目录,感觉应该在查询比较频繁的字段设置索引
8.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
唯一索引就是唯一的,不能重复。例如主键,主键列在创建时,已经默认为非空值 + 唯一索引了。唯一索引相当于允许为空的主键。
9.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?
需要,唯一索引不能重复
10.CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
createAT在创建数据的时候赋值,updateAT在修改的时候赋值。应该不能给外面提供接口,只供后台查看。
11.修真类型应该是直接存储Varchar,还是应该存储int?
varchar
12.varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?
手动确定长度,比如 varchar(255) 大概可以存255字节的字符串, 中英文占位不同, 字符数也不同,根据编码格式占位也不同
引用师兄日报上的:经常变化的字段用varchar,确定固定长度的用char,尽量用varchar,超过255字符的只能用varchar,
或者text能用varchar的地方不用text(效率上: char>varchar>text)text不能有默认值,存储或检索过程中,不存在大小写转换。
longtext也是变长字符存储,只保存字符数据
13.怎么进行分页数据的查询,如何判断是否有下一页?
分页分为前端分页/sql分页/逻辑分页。逻辑分页基本使用纯java代码实现的,很麻烦基本不用。前端分页也不常用,直接将全部数据查询出来然后
在前端页面实现,有性能问题。sql分页以mysql的limit语句实现的。但还是用前端框架实现最好,前面几种都很麻烦。
14.为什么不可以用Select * from table?
--------------很常用,不懂为什么不能用,查询所有数据,可能效率低?
15.什么是贫血模型,什么是充血模型?为什么我们会强制要求使用贫血模型?
--------------百度查一下,不懂,好像不是简单的设计模式
16.Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
反转控制,将对象的生命周期交给spring容器管理,是spring解耦核心。使用new创建对象会增加项目的耦合度。
17.为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?
使用接口能减少代码耦合,增强代码的复用性,在
18.为什么要处理异常,Try/Catch应该在什么样的场景下使用,在真实的系统中,会出现网络中断,DB连接不上的错误吗?多久会发 生一次?
引用师兄日报上的:以业务逻辑功能为单位,在最上层加Try-Catch机制。增加程序的健壮性,防止因抛出异常过多,导致程序崩溃。底层代码,在可能出错的地方加Try-Catch机制,用Catch侦测具体的异常,然后就具体的异常,采取相应的解决方案。
会出现,服务器宕机的时候,这个属于突发情况。
19.日志应该怎么打,在什么位置,需要打印出来什么样的关键参数?
--------------不会用
20.为什么需要单步调试?Debug的时候IDE是怎么找到源码的?
--------------debug不就是要单步调试吗?不懂
21.可否远程连接到线上直接调试?真实的项目中,遇到问题的排查方案是什么?
不能把,项目放到服务器上已经上线了,调试应该在本地进行。后来查了一下,发现eclipse支持远程debug而且不需要其他插件,但我没用过。

上面的很多问题都完全没有用代码测试过,也不是光靠想就能想出来的,只能以后慢慢补了



返回列表 返回列表
评论

    分享到