发表于: 2017-08-18 18:45:01
1 1047
http://task.ptteng.com/zentao/project-task-302.html
今天完成的事情:
1.今天完成了spring aop
首先修改pom
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.0</version>
</dependency>
加入两个依赖,
然后创建aop的类
public class Time {
private static Logger logger = LogManager.getLogger(Time.class);
public Object around(ProceedingJoinPoint p) throws Throwable {
//目标组件类名
String className = p.getTarget().getClass().getName();
//调用的方法名
String method =p.getSignature().getName();
//获取数据库连接前的时间。
long begin =System.currentTimeMillis();
System.out.println(begin);
//当前系统时间
String date = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss") .format(new Date());
String msg = "用户在"+ date+"执行了"+className+"."+method+"()";
Object obj =p.proceed();
//数据库连接之后的时间
long end =System.currentTimeMillis();
System.out.println(end);
int s=(int)(end-begin);
//记录日志
System.out.println(msg);
logger.warn(msg+"\t数据库响应时间"+s);
return obj;
}
这是我写的记录数据库响应时间的类。
然后在spring配置文件里面添加
<aop:config>
<!-- 测试环绕通知 -->
<aop:pointcut id="aspect" expression="execution(* com.service.Impl.UserServiceImpl.*(..))"/>
<aop:aspect id="myAspect" ref="time">
<aop:around method="around" pointcut-ref="aspect"/>
</aop:aspect>
</aop:config>
这次使用的是AOP的环绕通知。参考资料http://www.cnblogs.com/liuhongfeng/p/4736947.html。
实现获得访问数据库时间的原理就是,通过切面监控目标类的每个方法,然后在方法开始之前获得当前的系统时间,然后在方法结束后再获取一次当前的系统时间,然后两个时间相减。获得的毫秒值就是访问时间。
2.然后log4j2
log4j2和log4j不一样,获取的log的方法是
private static Logger logger = LogManager.getLogger(*.class);
之前在这卡住了,怎么都打印不了time类的日志,后来发现根本不用在log4j2的xml里面在写一次time类。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO" monitorInterval="1800">
<appenders>
<Console name="consolePrint" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<File name="MyFile" fileName="c:/lllogs/app.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</File>
</appenders>
<loggers>
<!-- 将业务dao接口填写进去,并用控制台输出即可 -->
<logger name="com.mybatis.UserMapper" level="DEBUG" additivity="false">
<appender-ref ref="consolePrint"/>
<appender-ref ref="MyFile"/>
</logger>
<root level="info">
<appender-ref ref="consolePrint" />
</root>
</loggers>
</Configuration>
而log4j2打印业务接口不用在里面写log 直接在xml里面把需要监控的接口写进去。就可以直接打印了。
.png)
明天计划的事情:任务四
遇到的问题:暂无
收获:
会用spring aop的概念了,知道log4j2的方法
深度思考:
1.nginx 服务器有什么用?什么叫反向代理?为什么要使用反向代理?
首先nginx是一个服务器,可以将服务器上的静态文件通过http协议展现给客户端。
反向代理可以
2.什么是ssh?如何在linux服务器上从网站下载文件?
SSH是 struts+spring+hibernate的一个集成框架,是目前较流行的一种web应用程序开源框架。
SSH 是建立在应用层和传输层基础上的一种安全协议。
SSH传输数据是加密的,可以有效防止传输过程被截取数据保障安全。
SSH的数据是经过压缩的,所以可以加快传输的速度
用xftp登陆服务器下载
3.如何写shell脚本?尝试自己编写一个简单脚本。
#!/bin//bash
echo "开始"
cd /usr/local/nginx/logs
cat access.log |grep 'Mybatis-1.0-SNAPSHOT' > /root/brako/a.txt
echo "剪切"
cd /root/brako
cat a.txt | awk '{print $10}' > time.txt
echo "一共访问了多少次"
cat time.txt | wc -l
echo "小于500的有"
cat time.txt | awk 'BEGIN{sum=0}{if($1<100) sum++;}END{print sum}'
echo "大于500的有"
cat time.txt | awk 'BEGIN{sum=0}{if($1>100) sum++;}END{print sum}'
4.tomcat、jetty\resin各容器有什么区别?如何优化这些容器配置?
jetty比tomcat比较的话更轻量级,更灵活,但是tomcat遵循java servlet规范,
自身还扩展了大量JEE特性以满足企业级应用的需求
Tomcat除了遵循Java
Servlet规范之外,自身还扩展了大量JEE特性以满足企业级应用的需求
之前没用过resin查看了一下区别
评论