发表于: 2017-08-10 03:14:49

1 1167


今天:

看了一下jdk动态代理,感觉有点绕,没敲代码,只是看了眼,贴上链接,有点收获,以后回头再看

http://www.cnblogs.com/vanl/p/5629657.html


看一下爆栈。。。。


如图,异常就是爆栈。。。挺有意思的

然后还有内存溢出等等溢出的异常,参见链接

http://blog.csdn.net/chengdu456/article/details/44017403

终于实现了一个愿望,看到爆栈了。。。。。哈哈哈哈哈


然后运行了一下其他的项目,结果可以运行


证明,之前的爆栈程序抛出异常后,程序停止,内存的空间得到释放,对于其他项目的运行不产生任何影响

之前一直担心,爆栈之后内存满了怎么办。。。

不过可以看到,爆栈的程序是完全运行不了的,所以说爆栈对于程序来说是致命的!





今天也没做什么事,昨天没休息好。。浪费了很多时间

然后今天学习了一下SpringAop实现日志打印数据库延迟时间

http://www.cnblogs.com/xrq730/p/4919025.html

参考这篇博客学习的

内容都一样的,重点就是讲一下

使用SpringAOP是需要依赖三个非Spring体系的jar包的

aopalliance.jar;aspectjrt-1.7.4.jar;aspectjweaver.jar。


如果有报错就在pom.xml文件中添加依赖

pom.xml:

<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的标签,因为实现aop有几种方法,我是通过配置文件中的aop标签来实现的

直接在任务二的基础上增加一个类,做切面方法,然后在配置文件中加入几行,布置标签,就可以实现相关功能了,这就是aop的优势,不用太多东西,就可以加入需要的东西

一个新增类,一个更改文件

package com.jnshu.util;

import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
* Created by Administrator on 2017/08/10.
*/
public class LogAdvice {

private static Logger loggerAdvice = Logger.getLogger(LogAdvice.class);

   public Object around(ProceedingJoinPoint pip)throws Throwable{
//获取组件类名
       String className = pip.getTarget().getClass().getName();
       //获取调用方法名
       String method = pip.getSignature().getName();
       //取得数据库连接前时间
       long begin = System.currentTimeMillis();
       //当前系统时间
       String date = new SimpleDateFormat("yyyy-MM-dd:mm:ss").format(new Date());
       Object obj = pip.proceed();

       //取得数据库连接后时间
       long end = System.currentTimeMillis();
       //数据库响应时间
       int sqlTime = (int) (end-begin);
       String msg = date + ",执行了" + className + "." + method + "()";

       loggerAdvice.warn(msg + "\t数据库响应时间: " + sqlTime);
       return obj;
   }
}


配置文件新增

<bean id="LogAdvice" class="com.jnshu.util.LogAdvice"/>

<aop:config>
   <aop:pointcut id="aspect" expression="execution(* com.jnshu.service.*Impl.*(..))"/>
   <aop:aspect id="myAspect" ref="LogAdvice">
       <aop:around method="around" pointcut-ref="aspect"/>
   </aop:aspect>
</aop:config>


先感谢一波之前的师兄们,给了很多参考

然后这些基本就是贴的他们的代码

这是运行结果,可以看到这个新增的功能。


然后讲解一波标签

这里我感觉张鑫师兄的的7月26日的日报讲解的就非常精彩。

这里我就拾人牙慧了

<aop:config>配置切面

<aop:pointcut>配置切点,其中expression定义了我们要将这个通知方法放到哪个类的哪个方法,有几种写法

<aop:aspect>定义横切逻辑,就是在连接点上做什么

<aop:aspect>内有几种方法

几个标签<aop:before>;<aop:after>;<aop:after-running>;<aop:after-throwing>;<aop:around>


然后aop的知识就总结到这里,对于aop没有进行深入的研究,主要时间不够用了


然后jetty的日志该如何配置也没弄明白,暂时不打算浪费时间了,任务三的主要要求基本已经实现,所以就做一个小小的烂尾把。。。


然后深度思考的东西,容我一会再写,先去看一波,查阅一下资料


明天计划:开始任务四


收获:springAop实现事务管理,实现了一个日志通知功能。


问题:jetty日志的配置;一些linux的命令也没写;就这么烂尾把。。




深度思考:

1.JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 JAR。

利用WAR文件,可以把Servlet类文件和相关的资源集中在一起进行发布。在这个过程中,Web应用程序就不是按照目录层次结构来进行部署了,而是把WAR文件作为部署单元来使用。

区别:JAR文件的目的是把类和相关的资源封装到压缩的归档文件中,而对于WAR文件来说,一个WAR文件代表了一个Web应用程序,它可以包含 Servlet、HTML页面、Java类、图像文件,以及组成Web应用程序的其他资源,而不仅仅是类的归档文件。


2.Nginx我认为就是一个代理的作用,可以监听端口

正向代理和反向代理在前天的日报中又很好的例证


3.SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTPPop、甚至为PPP提供一个安全的"通道"

简单的说就是一种加密协议。


linux下载东西的话,可以使用wget命令下载,曾经尝试过下载jdk,但由于jdk官网的机制失败了就再也没用过,然后百度了一下,有几个linux的下载工具貌似挺好用的,然后之前用svn的checkout可以将库中的文件down下来



4.shell脚本本质就是一些命令的组合,在前天的日报中写过一个及其简单的脚本,毫无逻辑判断,只是命令的堆叠


5.tomcat、jetty、resin各容器有什么区别,这个有专门的一期小课堂,明天抽时间好好看一下,茹程远讲的,听说讲的很好!


返回列表 返回列表
评论

    分享到