发表于: 2017-10-20 22:02:30

1 789


今天完成的事:

1.完善之前韬哥提出的几点不足。

首先是将nginx的端口改为80并使用子域来进行转发请求。

很简单,修改hosts文件即可。然后修改80端口发现有程序正在占用,直接杀掉,然后启动,测试发现还是不行,后来是因为服务器本地 的防火墙没开放80端口。


其次就是给统计nginx访问次数和耗时的脚本加上分布统计功能,如下图:


最后就是给通过Aop配置log4j来打日志,因为我的日志是给SpringMvc中的controller层打日志,因此必须将Aop定义在SpringMvc的配置文件中,也就是说Aop的配置必须作为SpringMvc前端控制器的初始化参数。

首先在SpringMvc中开启Aop注解驱动

然后写个工具类作为log4j日志通知

这里最奇怪的一点就是如果环绕通知,不将joinPoint.proceed()返回的值以object接收并返回的话访问url会出错,变成莫名其妙的URL了。


2.完成深度思考

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

首先nginx服务器是一款轻量的HTTP服务器,一般用作web服务器,还可用作邮件代理服务器等。nginx的功能最主要的是三点,配置web服务器可实现静态分离,负载均衡,反向代理。

既然说到反向代理,那么来说说正向代理,正向代理就好比说上google,无法直接得到响应(以为gwf),因此必须通过中间的代理服务器(能够得到google响应)来转发客户端的请求给目标服务器(google),然后把响应返回给客户端,正向袋里客户端是完全知道自己是访问的哪个web服务器,web服务器是完全暴露的。(或许google的也是nginx反向代理,始终无法知晓是哪个web服务器处理的请求。但并不重要,对客户端来讲nginx就是目标web服务器)


反向代理是说,代理服务器(nginx)对于客户端完全是暴露的,nginx将客户端的请求通过某种负载均衡的策略转发到相应的web服务器,web服务器处理请求并响应给代理服务器(nginx),代理服务器再返回响应给客户端。在此过程中,客户端是完全不知道是谁在提供服务,对于真正提供服务的web服务器一无所知,web服务器是完全隐藏的。


使用反向代理不仅能够对大量的请求配置负载均衡的策略转发到不同的web服务器,还对客户端而言是完全隐藏的不可知的,提高了服务器的安全性。


什么是ssh?如何在linux服务器上从网站下载文件?

ssh一款远程操作服务器的协议,所有传输内容都是加密的,且一端登录服务器需要使用key来进行匹配,相对telnet ftp等来讲安全性很高。

使用wget 下载链接


如何写shell脚本?尝试自己编写一个简单脚本.

shell脚本简单的很简单,难的就特别难,如何写也不是一句两句能说明白的。有个最让人头疼的问题就是,不知道是因为版本不同的原因,网上各种脚本泛滥,简单if语句好几种写法,有些可以在本机工作,有些却不行。


tomcat、jetty、resin各容器有什么区别?如何优化这些容器配置?

tomcat支持静态请求,动态请求,稳定,性能就自己这几天的使用经验来说的话是响应请求时间比jetty和resin比较慢。

jetty的话,我只用过maven插件形式的,不需要打包,感觉很轻巧,性能来讲和resin没什么区别,同样支持动态请求。

resin的话 稳定性还行,启动关闭特别快,支持热部署,同样支持静态请求和动态请求。

更多的优化相关内容可查看如下链接:http://www.jianshu.com/p/8465131bcabf


明天计划完成的事:

1.完成任务4的步骤1

2.如果还有时间再看看步骤2中的框架


遇到的困难:

首先就是在使用Aop和log4j来记录日志时,Aop配置是正确的,但就是无法完成切入。访问目标类方法时,没有被拦截去执行代理类的方法,后来在成延大佬的帮助下顺利解决。主要是因为自己将spring注解驱动放在spring的配置文件里了,实际上controller层是由springMvc的前端控制器来进行控制的,必须将这个扫描驱动放置在springMvc的配置文件中,将spingMvc的配置文件作为SpringMvc前端控制器的初始化参数。


第二个问题就是,在完成了以上操作后,发送请求到正确的URL时,实际将请求发送到了一个莫名其妙不存在的jsp,导致404,如下图:

后来发现是因为在使用环绕通知时,没有将proceedingJoinPoint的proceed方法返回的值没有作为环绕通知方法的返回值返回,具体为什么要这么做无法明白,如下图:

正确方法是将环绕通知的方法返回值修改为Object,并将ProceedingJoinPoint的proceed方法返回的值作为返回值返回即可,如下图:


收获:

感谢韬哥做的codeReaview让我有机会学习去使用Aop才能有机会遇到这个棘手的问题,也感谢成延大佬通过耐心讲解顺利解决了这个问题。

学会了通过Aop和log4j来打日志。


任务三总结:

遇到的问题:

1.刚开始配置nginx时遇到的阻力(其实也不能算阻力吧,就是apt-get安装nginx配置文件被我改的面目前非,又卸载不干净。后来就通过编译方式来安装成功解决了),后来查询资料成功解决了。


2.主要是Spring Aop这块,之前是了解过这块的概念,也就用过Spring的事物(个人认为Spring就是Aop来实现的)。以为自己Aop这块很熟悉了,但是后来在韬哥的要求下去写用Aop来记录日志时却遇到阻力了,也就是上面讲的哪些。


遇到的困惑:

就是不明白为什么在ssm环境下,使用环绕通知,如果不把ProceedingJoinPoint的proceed方法返回的值作为返回值返回发送请求时居然变成莫名其妙的URL导致出现404


遇到的疑难:

就是使用浏览器请求响应的内容包含中文不乱码,使用postman就乱码,网上找了很多都没有解决。



返回列表 返回列表
评论

    分享到