发表于: 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里面把需要监控的接口写进去。就可以直接打印了。
明天计划的事情:任务四

遇到的问题:暂无

收获:

会用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查看了一下区别

返回列表 返回列表
评论

    分享到