发表于: 2020-06-09 21:14:48

1 1496


今天完成的事情:任务三的深度思考

1.什么是代码生成,mybatis generator代码生成是怎么实现的,还有什么办法可以生成代码?  

代码生成: 自动代码生成器根本原理就是根据实现写事先好的模板,再根据你提供的数据库结构,生成一系列的增删改查方法。 的确是可以减少程序员的工作量,但是不能包含复杂或者特殊的业务逻辑 

实现步骤(1)搭建好数据库与表格

              (2)pom文件添加依赖

              (3)配置xml文件

生成代码的其他方法:Mybatis Plus

 2.Mysql的一般而言应该配置多大的内存, 多大的硬盘 ,多大的连接数?  

                      4G  硬盘空间越大越好  默认的100连接数

3.在端到端的请求当中,建立Http连接需要多久,Model通过JSP转成Json需要多久,Nginx调用Resin需要多久,Service访问DB需要多久,

       一个Sql语句执行的时间是多久。 

            很短很短,biu的一下就好了 1s  30ms  10ms 5ms  太短了

4.什么是Sql注入,应该怎么解决?对于未做SQL注入防范的程序,你可以直接通过调用接口删掉表吗?  

SQL注入(sql inject),就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

解决方法:利用PreparedStatement先预编译对象,它是Statement的子类

5.在内存里拼装数据会节省时间吗?如果不能,为什么要选择单表查询,而不是直接拼装成Sql语句。 

     不能  单表查询效率高

6.为什么一般而言,不允许使用连表查询,不允许使用复杂的Group By等语句,为什么不允许使用存储过程?  

       使用连表查询的话,sql语句会很复杂不利于维护。

7.为什么响应时间一般不允许超过200MS,怎么查看一个请求从发起到结束,耗费在什么地方了?  

     因为人对200s以上的时间是有反应的,超过200s会影响用户的使用体验,从容器的日志中查看,耗费在了容器的启动还有读取配置文件的过程中

8.为什么要自测,仅仅使用Postman来测试足够吗?什么是本地测试,什么是在开发环境测试?在开发过程中,应该每天部署代码到开发环境吗,为什么?  

    自测一方面是为了不给团队其他成员增加必要的工作,另一方面是为了让开发者看到自己的劳动成功,爽就完事儿了,我觉得postman应该够了,毕竟增删改查postman是可以满足的,本地测试就是在自己的主机上测试,开发环境测试就是在模拟的开发环境中测试????好奇怪的问题。我觉得不用每天部署代码吧....谁那么有闲工夫。.

9.保存图片有几种方式?什么样的情景下应该使用哪一种? 

(1):放在项目本身得文件夹中,直接部署到服务器上

(2):存放在磁盘中,然后数据库中存放路径,读取得时候传路径。这个适合小项目

(3):将图片转换成二进制文件,但是不建议这样做,因为会给数据库造成压力。

(4):存放在云存储器上,也是在数据库上存地址,不过是云地址,使用得时候给前端,然后前端会自动向专门得云服务器上去获取。所有得安全,优化,带宽,缓存命中,都是由云服务器去保证。(比如:七牛云,阿里云)这个适合电商和社区项目

10.为什么要先写单元测试?单元测试应该包括哪些?在正式打包的过程中,什么样的单元测试应该被屏蔽?在Maven里用什么方法可以跳过单元测试,单元测试应该被跳过吗。  

写单元测试是为了确保自己写的模块儿可以正常的使用,单元测试应该包括最基本的增删改查,私有的单元测试应该被屏蔽

    Maven 跳过单元测试打包的方法:

    修改 pom 文件

    <build> 

        <plugins> 

          <plugin> 

             <groupId>org.apache.maven.plugins</groupId> 

             <artifactId>maven-surefire-plugin</artifactId> 

             <version>xxx</version> 

            <configuration> 

               <skipTests>true</skipTests> 

            </configuration> 

          </plugin> 

        </plugins> 

     </build> 

单元测试应该被跳过,反正我听师兄的单元测试从来不上传

11.为什么提供假数据的时候要求,直接Controller接收请求,在JSP中写死数据返回以用做假数据?为什么提供假数据的时候要求数据完整,有分页尽可能给分页,数据尽可能真实? 

为了自己测试的时候有数据可以用,分页是为了应对数据量过大的情况。尽可能真实的数据才能真实地反映出测试的效果

12.为什么要写假数据,前后端联调的时候,应该什么时候商定接口文档,接口文档应该谁来维护,如果不提供假数据,会发生什么问题? 

写假数据是为了让开发者有数据可用,可以在模块儿完成的时候进行测试,商定接口文档一定要在项目刚开始做的时候就确定好,不然后期更改接口很麻烦,不提供假数据的话就不知道代码写的到底对不对。

13.接口应该怎么定义?一个页面应该只对应一个接口吗?还是一个实体对应一个接口,让前端去组装数据?两者的使用场景是什么?

接口应该符合rest风格,一个页面可以连接多个接口,前端才不会去组装数据。

14.多层分类应该怎么设计表结构,分别有什么问题?像文章分类这种需求,如果分类不确定,级别不确定,有可能动态调整,数据量和访问量又比较大,该怎么去设计? 

在子类表中引用父类的id。

15.什么是实体表,什么是关系表,一对多和多对多应该怎么设计表?

实体表就是对应得实体类创建的表,可以被实例化。

关系表就是处理两张表之间关系的表。

16.什么是外键,用处是什么,为什么不建议使用外键做关联? 

两个表,一个主表,一个从表,主表的主键,放到从表的表格内,然后这个从表和主表就通过外键关联了,这个从表的这个一列和主键有关系的数据,就是从表的外键。

外键的作用:

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。

17.什么是数据库范式,是否应该严格遵守范式,什么情况下应该不遵守范式?  

明天计划的事情:回顾任务三。预习任务四



返回列表 返回列表
评论

    分享到