发表于: 2018-10-19 14:52:12
1 505
task2的第15天
1.输出响应请求时间
2.完成深度思考1-5
今天完成的事情
1.输出响应请求时间
首先呢,在Spring mvc 中加入对应注解
注;是spring MVC的配置文件,不然无法拦截controller请求
这一点-------折腾了好久,以为是切点配置错误
Aop中主要代码:
@Around(value = "execution(* com.suger.controller.StudentController.*(..)) || execution(* com.suger.service.StudentService.*(..)) ")
public Object log(ProceedingJoinPoint joinPoint) throws Throwable {
// 定义返回对象、得到方法需要的参数
Object obj = null;
Object[] args = joinPoint.getArgs();
long startTime = System.currentTimeMillis();
try {
obj = joinPoint.proceed(args);
} catch (Throwable e) {
logger.error("统计某方法执行耗时环绕通知出错", e);
}
// 获取执行的方法名
long endTime = System.currentTimeMillis();
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
String methodName = signature.getDeclaringTypeName() + "." + signature.getName();
// 打印耗时的信息
this.printExecTime(methodName, startTime, endTime);
return obj;
}
/**
* 打印方法执行耗时的信息,如果超过了一定的时间,才打印
*
* @param methodName 方法名
* @param startTime 开始时间
* @param endTime 结束时间
*/
private void printExecTime(String methodName, long startTime, long endTime) {
long diffTime = endTime - startTime;
System.out.println("-----" + methodName + "方法执行耗时:" + diffTime + " ms");
if (diffTime > ONE_MINUTE) {
logger.warn("-----" + methodName + "方法执行耗时:" + diffTime + " ms");
}
}
还是基于环绕通知,主要对于切点的理解和配置
日志输出:
2.完成深度思考1-4
(1)Validation 参数校验
Bean Validation 为 JavaBean 验证定义了相应的元数据模型和 API。缺省的元数据是 Java Annotations,通过使用 XML 可以对原有的元数据信息进行覆盖和扩展。在应用程序中,通过使用 Bean Validation 或是你自己定义的 constraint,例如 @NotNull, @Max, @ZipCode, 就可以确保数据模型(JavaBean)的正确性。constraint 可以附加到字段,getter 方法,类或者接口上面。对于一些特定的需求,用户可以很容易的开发定制化的 constraint。Bean Validation 是一个运行时的数据验证框架,在验证之后验证的错误信息会被马上返回,Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。
更多有关 Hibernate Validator 的信息:http://www.hibernate.org/subprojects/validator.html
(2)SpringMVC工作原理
Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。
Spring MVC主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成
处理器映射:选择使用哪个控制器来处理请求
视图解析器:选择结果应该如何渲染
DispatcherServlet:
是整个Spring MVC的核心。它负责接收HTTP请求组织协调Spring MVC的各个组成部分。其主要工作有以下三项:
(1)截获符合特定格式的URL请求。
(2)初始化DispatcherServlet上下文对应WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。
(3)初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。
(3)SpringMVC分页查询和显示
目前常用的分页有2种
--每次翻页都修改SQL,向SQL传入相关参数去数据库实时查出该页的数据并显示。
select * from student
<if test="start != null and count != null">limit #{start},#{count}</if>
--查出数据库某张表的全部数据,再通过在业务逻辑里面进行处理去取得某些数据并显示
select * from student
(4)“内网IP+端口”和“外网IP+端口”和"域名"三种方式方式的差别是什么?什么时候用内网?什么时候用外网IP,什么时候用域名访问?
--内网ip是私有网络,限于私有局域网内(路由器或者大型网关),没有直接连接外网
--外网ip可以理解为公有网络,可以直接连接外网
--域名为简化ip地址产生,方便记忆,同时避免公开外网ip
--在集团内或者安全,保密级别极高的情况下,统一使用内网ip,此时整个网络与广义互联网无法通信
--外网ip一般是我们连接互联网使用的,域名是可以看作ip的别名
--通过DSN系统可以找到域名对应的ip地址,只是方便记忆
注:
查看内网 ip:netsh int ip show tcpconnections
查看外网 ip: netsh int ip show udpconnections
(5)内网IP和外网IP的区别是什么,在服务器上测试接口是否被防火墙屏蔽的时候,该用内网IP检测,还是该用外网IP检测?
--内网ip和外网ip最大的区别就是能否直接连接www,不考虑内网穿透和vpn等代理
--测试接口是否被防火墙屏蔽,一定要用内网ip检测,如果测试失败,肯定是接口有问题,如果用外网ip的话,相应端口和安全组未开放,请求优先被防火墙拦截,测试接口绝对没有效果,用外网ip前,记得查看防火墙当前状态以及开放端口列表
明天的计划
1.写脚本统计时间----优先
2.梳理任务2
3.继续深度思考问题
遇到的问题
1.awk获取行内字段
字段划分的标准,或者说获取指定内容,比如数字
awk '{print $2 $3}' catalina.out
awk '{print $2}' catalina.out
awk '{print $3}' catalina.out
收获
1.aw的学习
(1)输出指定列 awk '{print $2 $3}' catalina.out
其中单引号中的被大括号括着的就是awk的语句,注意,其只能被单引号包含。
其中的$1..$n表示第几例。注:$0表示整个行。
评论