发表于: 2018-10-19 14:52:12

1 502


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表示整个行。

  






返回列表 返回列表
评论

    分享到