发表于: 2020-06-23 12:17:32

0 1633


今天完成的事:

一、设计db

二、只有查的功能就行了


三、深度思考

1.nginx服务器有什么作用?什么叫反向代理?为什么要使用反向代理?  

Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能
力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx
网站用户有:百度、京东、新浪、网易、腾讯、淘宝等
Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php
等。但是不支持 java。Java 程序只能通过与 tomcat 配合完成。Nginx 专为性能优化而开发,
性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只
需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返
回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
2.什么是代码生成,mybatis generator代码生成是怎么实现的,还有什么办法可以生成代码?  
自动生成实体类、mapper、mapper.xml。
配置一个配置文件,idea添加一个插件,添加依赖,插件生成
5.什么是Sql注入,应该怎么解决?对于未做SQL注入防范的程序,你可以直接通过调用接口删掉表吗?  
SQL作为字符串通过API传入给数据库,数据库将查询的结果返回,数据库自身是无法分辨传入的SQL是合法的还是不合法的,它完全信任传入的数据,如果传入的SQL语句被恶意用户控制或者篡改,将导致数据库以当前调用者的身份执行预期之外的命令并且返回结果,导致安全问题。
解决SQL注入问题的关键是对所有可能来自用户输入的数据进行严格的检查、对数据库配置使用最小权限原则。

    1、所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。

    2、对进入数据库的特殊字符(’”\尖括号&*;等)进行转义处理,或编码转换。

    3、严格限制变量类型,比如整型变量就采用intval()函数过滤,数据库中的存储字段必须对应为int型。

    4、数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。

    5、网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。

    6、严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。

    7、避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。

    8、在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。

    9、确认PHP配置文件中的magicquotesgpc选项保持开启

7.为什么一般而言,不允许使用连表查询,不允许使用复杂的Group By等语句,为什么不允许使用存储过程? 
  • 要做连表查询的话,后续不太好维护
  • 当数据大的时候连表查询很影响性能,除非万不得已的时候才用连表
8.为什么响应时间一般不允许超过200MS,怎么查看一个请求从发起到结束,耗费在什么地方了?
时间长了就太慢了,用户体验不好。用tomcat或nginx的日志,或者postman也可以看到。
9.为什么要自测,仅仅使用Postman来测试足够吗?什么是本地测试,什么是在开发环境测试?在开发过程中,应该每天部署代码到开发环境吗,为什么? 
不够。本地测试试就是开发人员在自己本地进行测试。开发环境测试是将代码部署到测试服务器上测试。应该,要及时发现问题。
16.什么是实体表,什么是关系表,一对多和多对多应该怎么设计表? 
什么是实体表
实体表就是对应实际的对象的表,比如:学生表,老师表
什么是一对一、一对多和多对多?
1.一对一、一对多和多对多都是指数据表与表中的数据关系,不是表与表之间的关系

2.一对一:一个班主任只属于一个班级,一个班级也只能有一个班主任

3.一对多:一个顾客对应多个订单,而一个订单只能对应一个客户

4.多对多:一个学生有多个老师,一个老师有多个学生

什么是关系表
关系表是表示表与表之间的数据关
17.什么是外键,用处是什么,为什么不建议使用外键做关联?
表的外键是另一表的主键, 外键可以有重复的, 可以是空值。
外键是用来和其他表建立联系用的,可以保证数据的完整性和一致性。
使用外键会给系统带来很多缺陷:性能问题,并发问题,扩展性问题,技术性问题。
18.什么是数据库范式,是否应该严格遵守范式,什么情况下应该不遵守范式?

第一范式,又称1NF,它指的是在一个应用中的数据都可以组织成由行和列的表格形式,且表格的任意一个行列交叉点即单元格,都不可再划分为行和列的形式,实际上任意一张表格都满足1NF; 第二范式,又称2NF,它指的是在满足1NF的基础上,一张数据表中的任何非主键字段都全部依赖于主键字段,没有任何非主键字段只依赖于主键字段的一部分。即,可以由主键字段来唯一的确定一条记录。比如学号+课程号的联合主键,可以唯一的确定某个成绩是哪个学员的哪门课的成绩,缺少学号或者缺少课程号,都不能确定成绩的意义。 第三范式,又称3NF,它是指在满足2NF的基础上,数据表的任何非主键字段之间都不产生函数依赖,即非主键字段之间没有依赖关系,全部只依赖于主键字段。例如将学员姓名和所属班级名称放在同一张表中是不科学的,因为学员依赖于班级,可将学员信息和班级信息单独存放,以满足3NF。




返回列表 返回列表
评论

    分享到