发表于: 2018-01-26 16:46:18
3 783
今天还是来啃这块难啃的骨头---->一定要弄出来
今天先把demo跑起来----->后面在慢慢总结
代码终于跑成功了----->
这个是Aop的切面的代码
@Aspect 注解表示这是一个切面
@Component 表示这是一个bean,由Spring进行管理
@Around(value = "execution(* com.fuwei.service.ProductService.*(..))") 表示对com.how2java.service.ProductService 这个类中的所有方法进行切面操作
package com.fuwei.aop;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
/**
* 检测方法执行耗时的spring切面类
* 使用@Aspect注解的类,Spring将会把它当作一个特殊的Bean(一个切面),也就是不对这个类本身进行动态代理
* @author blinkfox
* @date 2016-07-04
*/
@Aspect
@Component
public class LoggerAspect {
private static Log logger = LogFactory.getLog(LoggerAspect.class);
private static final long ONE_MINUTE = 10000;
@Around(value = "execution(* com.fuwei.service.ProductService.*(..))")
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");
}
}
}
在applicationContext.xml
<context:component-scan base-package="com.fuwei.aop"/>
<context:component-scan base-package="com.fuwei.service"/>
扫描包com.fuwei.aspect和com.fuwei.service,定位业务类和切面类
<aop:aspectj-autoproxy/>
找到被注解了的切面类,进行切面配置
<context:component-scan base-package="com.fuwei.aop"/>
<context:component-scan base-package="com.fuwei.service"/>
<aop:aspectj-autoproxy/>
运行测试的结果
终于打印出时间来了
弄了几天啦----->现在对AOP有了新的认识(最开始的代码是没有问题)
就是代码里面的bean的注入哪里调用list()查询数据库---->page没有传值,空指针异常,一直打印不出来,现在将page里面的默认的null删除----->就可以啦
主要是开始一直在弄那个代码的问题换了几个版本----->后面就检查细节
多访问都可以实现不同的查询
接下来就是深度思考的内容
1.nginx服务器有什么作用?什么叫反向代理?为什么要使用反向代理?
(https://www.jianshu.com/p/ab44b933a68f)参考文档
nginx是什么?
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,
反向代理(上次的Nginx的安装配置里面也有提到)
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,
简单来说就是真实的服务器不能直接被外部网络访问,想要访问必须通过代理。
主要的目的负载均衡--->减轻服务器的负荷
2.什么是ssh?如何在linux服务器上从网站下载文件?
因为好多公司还是其他的网站都是部署在linux的系统下,所以命令关于ssh的操作的命令要比较熟悉
由于使用ssh,我们无法使用简单的拖拽或者复制粘贴操作对本地计算机和ssh服务器上的文件进行交流。我们需要用到scp命令行。
程序代码
scp <本地文件名> <用户名>@<ssh服务器地址>:<上传保存路径即文件名> /*注:必须在未登录服务器的情况下*/
1.知道远程文件夹的路径,主机名,ip及密码;
2.在终端上输出
scp -r xxxx@ip地址:路径/文件名/ ~/
即可将文件夹拷贝到home目录下。
例如
scp -r computer@10.0.0.522:/home/hello/ ~/
即可将远程电脑home目录下的hello文件拷贝到本地电脑的home目录下
3.如何写shell脚本?尝试自己编写一个简单脚本。
昨天的笔记完成过了
4.tomcat、jetty、resin各容器有什么区别?如何优化这些容器配置?
https://www.jianshu.com/p/8465131bcabf(参考文档)
生产环境经常用到的服务器
Tomcat应该是最多,jetty通常被用作内嵌的web容器,resin是用的最少的,但resin还有其他的例如ejb容器。
tomcat
启动文件在bin下的startup.bat
在Tomcat的配置文件中,一个Web应用就是一个特定的Context,可以通过在server.xml中新建Context里部署一个JSP应用程序。打开server.xml文件,在Host标签内建一个Context,内容如下。
在tomcat中的conf目录中,在server.xml中的,节点中添加:
resin
Resin启动应用时,跟Tomcat一样会将jsp编译成可执行文件,保存到应用的WEB-INF/work目录下,tem是临时文件夹,也是在应用的WEB-INF/temp目录下,这里可以修改指向到其他的地方。
jetty
Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.看见有木有,它是用java语言写的,所以我们就不必启动任何插件只需要引入一些jar包,即可将自己的servlet部署到网页上,我们只需要写一个启动类.
今天完成的事情:今天终于完成Aop的日志的统计访问DB连接的时间,还有对深度思考的理解
明天的计划:准备任务四,任务三的Aop耽误了很多的时间,就是那个日志的切面编程,浪费了很多时间
今天遇到的困难:就是代码里面的bean的注入哪里调用list()查询数据库---->page没有传值,空指针异常,一直打印不出来,现在将page里面的默认的null删除----->就可以啦
收获:就是对AOp有了新的了解,还有对日志打印认识很重要,最近完成对linux和服务器的了解熟悉啦
评论