发表于: 2019-10-14 11:36:38

1 909


                           任务2总结

任务2用时20天,进度很慢,中途遇到个国庆加之感冒,划了几天,断了一波节奏。主要完成的就是做一个带有返回数据的简单页面并将之部署到服务器上,可以加之访问。首先完成的是创建web项目,码代码,完成一个在本地可以访问带有返回数据的页面。接下来要将之部署到服务器上,把web项目打成war包,在linux上将jdk,mysql,tomcat(jasin,jetty)的配置弄好,都有个相同的步骤,就是将war包放在服务器目录下的webapps文件夹中。最后通过云服务器的公网ip+服务器端口+war包名称+项目接口访问。

遇到的问题:第一次接触服务器开发环境带来的一些不适应是影响进度的主要因素,但是这个问题多用用就能解决。

思考:

1 对Service返回的结果是否要判空,为什么?

答:绝大多数情况下都需要对Service返回的结果进行判空.

通常调用service之后返回的结果有两种用途:

一种是作为下一个操作的入参.在这种情况下就必须要判空

另外一种是作为最后的结果返回.在这种情况下还需要继续细分;如果这个结果可以为空,那么就不用判断,直接返回,如果这个结果不能为空,那么还要继续判断,并要处理异常情况.

2 内网IP和外网IP的区别是什么,在服务器上测试接口是否被防火墙屏蔽的时候,该用内网IP检测,还是该用外网IP检测?

答:外网IP是全世界唯一的IP地址,仅分配给一个网络设备。而内网IP是由路由器分配给每一部内部使用的IP地址,而内网的所有用户都是通过同一个外网IP地址进行上网的,而内网的IP地址每个人的都不一样,Internet上的用户也无法直接访问到内网用户。

简单来说呢,外网IP就是标示了在整个互联网上的地址,就相当于小区的地址,而内网IP呢,就是标识着在局域网里面的地址,也就是小区内的几栋几楼几号房子。

在服务器上测试接口是否被防火墙屏蔽的时候,用内网IP检测。

3 对Service返回的结果是否要打日志,应该打什么样的日志,为什么?

答:需要.目前在项目中,所有的从Service返回的结果都要打日志.这个问题很好理解,日志是我们了解程序运行,问题追踪的工具.如果从Service返回的结果不打日志,以后出现问题,我们就不能快速的定位到问题所在。

视情况而定

一种情况是数据是一个基本类型或者对象类型,比如通过条件获取ID,或者根据Id获取对象等.

这时还要分两种情况

1.我只需要该对象的属性,比如是否为空,具体返回的数据的值是什么,我们不关心的,就不需要在日志中打印返回的结果的值

2.我除了要判断该对象的属性,还需要用到该数据的值,比如作为结果返回,或者是作为下一步操作的入参,那么就需要在日志中打印结果,以后如果出现问题,能够方便我们进行调试.

对于第二种情况一般是直接打印这个对象即可,但还要注意不能将用户的敏感信息打印出来,比如说密码,身份证号之类的敏感信息

另外一种情况是数据是一个集合类型,比如数组,List等.

这种如果没有特殊需求,只需要打印List的长度即可,不需要将所有的list中数据的具体值记录日志,因为这样会特别影响性能,而且打印长度基本也满足了我们对日志功能的需求

4 在Controller里应该怎么处理Service的异常,大段的Try Catch 会有什么坏处?

答:针对预期可能发生的异常(检查类型(checked)),在代码手动处理异常可以try/catch捕获,可以向上抛出,可以声明。

针对运行时异常,只能通过规范代码质量、在系统测试时详细测试等排除运行时异常。

在Controller里,大段的Try Catch会有什么坏处?

(1)try catch的代价比较大。相对于判断返回值,抛出异常到捕获,需要更多的cpu指令和代码

(2)Java的异常机制是由JVM控制的,业务逻辑复杂的情况下,会影响controller的执行效率

5端口是什么含义,怎么判断一个端口是否被占用了,如何判断一个端口是否被防火墙拦截,怎么用Telnet判断端口号是否打开

在 Internet上,各主机间通过TCP/TP协议发送和接收数据报,各个数据报根据其目的主机的ip地址来进行互联网络中的路由选择。

 使用netstat命令然后 tasklist taskkill

答:原理就是telnet 本机 端口 看看通不通 因为这样不会经过防火墙 

在别的机器上telnet 刚才的ip 端口 看看通不通 这个肯定过防火墙

第一个通知 第二个不通 一般就是防火墙在搞鬼 

6常用的性能统计命令有哪些,Top,Vmstat,free等命令都有什么用处,CPU占用率,内存使用分别代表什么含义?到什么情况下,应该产生报警信息?

答:常用的性能统计命令vmstat,top,free,iostat

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat工具提供了一种低开销的系统性能观察方式。因为vmstat本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat输出结果。
 

top显示系统当前的进程和其它状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用、内存使用和执行时间对任务进行排序。

free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。

Linux系统中的iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

CPU使用率其实就是运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况。使用率越高,说明机器在这个时间上运行了很多程序,反之较少。

             内存使用率指的是此进程所开销的内存。占内存大的程序不一定会占用很多的CPU资源,而占CPU大的程序也不一定开销太大的内存。某一程序的CPU占用率过高会影响其他程序的运行。而某一程序占用内存过大,会影响机器的整体性能。

比如网站访问量由于某些新闻突然暴增,还有平时访问量一直挺高,服务器负载也有七八十,突然就没有访问量或者访问量迅速降低这些异常情况都应该产生报警信息。如果网站平时访问量一直很平稳,服务器达到80%的负载,又或者有固定的爆发需求,比如双十一,618等,这种的就应该提高报警的临界点。

7什么叫反向代理?为什么要使用反向代理

反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;
并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

(1)提高访问速度

由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。

(2)防火墙作用

由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。

(3)通过代理服务器访问不能访问的目标站点

互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的翻墙浏览器就是利用了代理服务器,可直接访问外网。

8Nginx的作用是什么,在WEB服务前端配置Nginx的好处是什么?

反向代理服务器Nginx

Nginx作为近年来较火的反向代理服务器,安装在目的主机端,主要用于转发客户机请求,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定哪台目标主机来处理当前请求。

现在许多大型web网站都用到反向代理。除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。



返回列表 返回列表
评论

    分享到