计划总是赶不上变化。

    8.15日晚,一本正经的计划着去西安,后来又看了到济南的机票,纠结了一下,最终买了往返的机票。简单的收拾了一下,8.16日凌晨一点多才躺下,半夜又醒了好几次,太鸡冻了。

    八点半的飞机,五点的闹钟,迷迷糊糊醒来才知道今天要去济南了,一次说走就走的旅行!

重庆-张国利博客

- 阅读剩余部分 -

execution(returnType package.class.method(param)

1、returnType

返回类型: public String、private int

2、package.class.method

包.类.方法均可用*代替,例如: *.class.methodpackage.class.**

3、 param:

()匹配了一个不接受任何参数的方法

(..)零或者更多个任意类型参数的方法
(*)一个任意类型的参数方法


- 阅读剩余部分 -

演员演出需要记录每个演员的演出次数

1. Performance接口和Actor类

package aop;

/**
 * Created by guoli on 2017/7/28 0028.
 * YXV0aG9yOiB6aGFuZ2d1b2xpLmNu
 */
public interface Performance {

    /**
     * @param number 演员编号
     */
    public void playTrack(String number);
}
package aop;

import org.springframework.stereotype.Component;

/**
 * Created by guoli on 2017/7/28 0028.
 * YXV0aG9yOiB6aGFuZ2d1b2xpLmNu
 */
@Component
public class Actor implements Performance {

    @Override
    public void playTrack(String number) {
        System.out.println(number + " number actor");
    }
}

- 阅读剩余部分 -

1. 表演接口Performance 和舞台剧LivingTheatre

package concert;

/**
 * ①普通Java类
 * Created by guoli on 2017/7/23 0023.
 * YXV0aG9yOiB6aGFuZ2d1b2xpLmNu
 */

/**
 * Performance只是一个普通的Java接口
 * 使用如下切点表达式可以设置当perform()方法执行时触发通知的调用
 * execution(*  concert.LivingTheatre.perform(..))
 * 切点表达式解释如下:
 * execution 在方法执行时触发
 * *任意返回值类型
 * concert.LivingTheatre.perform 包-类/接口-方法
 * .. 任意参数
 */
public interface Performance {
    public void perform();
}
package concert;

import org.springframework.stereotype.Component;

/**
 * ②实现Performance接口的普通类
 * Created by guoli on 2017/7/23 0023.
 * YXV0aG9yOiB6aGFuZ2d1b2xpLmNu
 */

/**
 * @Component泛指组件,和@Controller、@Service、@Repository在大多数情况下是通用的
 */
@Component
public class LivingTheatre implements Performance {

    @Override
    public void perform() {
        System.out.println("kaixinmahua........");
    }
}

2. 切点表达式

切点表达式基础知识

- 阅读剩余部分 -

1. 下载Nginx for Windows压缩包

访问http://nginx.org/en/download.html ,或直接下载http://nginx.org/download/nginx-1.8.1.zip

2. 解压到特定目录,进入该目录

此处为 D:Program Filesnginx-1.8.1

3. 运行命令行 start nginx

4. 查看状态 tasklist /fi "imagename eq nginx.exe"

5. 重新加载配置文件 nginx -s reload

nginx -s stop 强制停止
nginx -s quit "关机"

Linux下Nginx的安装:http://zhangguoli.cn/linux-nginx-install.html

Linux下启动Tomcat报错:

ERROR:java.lang.InternalError: Can't connect to X11 window server using 'localhost:11.0' as the value of the DISPLAY variable.

查询得知是因为linux上没有启动x server。

解决办法

1、 修改tomcat/bin/catalina.sh

在所有的-Dcatalina.home="$CATALINA_HOME" /后面增加-Djava.awt.headless=true \

 -Dcatalina.home="\"$CATALINA_HOME\"" \
 -Djava.awt.headless=true  \

2、export DISPLAY=:0

Nginx的安装:https://zhangguoli.cn/linux-nginx-install.html

假设有3台服务器,分别是:
A : 10.10.1.1 Nginx
B : 10.10.6.2:8090 bbb
C : 10.10.6.3:8086 ccc
没有配置Nginx代理前,B访问地址是 10.10.6.2:8090/bbb ,C的访问地址是10.10.6.3:8086/ccc
配置代理之后, B、C的访问地址分别是10.10.1.1/bbb ,10.10.1.1/ccc

修改nginx.conf

文件位置:./nginx/conf/nginx.conf

1. 在http和server节点分别include配置文件






- 阅读剩余部分 -

  1. 要解决的问题(背景)

有一些功能需要应用到程序的多个地方但是又不想在每个业务点明确的调用它,比如日志,安全和事务管理.

  1. 横切关注点

散布于应用中多处的功能被称为横切关注点,简单来说就是影响应用多处的功能,比如日志.

  1. AOP可以实现横切关注点和他们所影响的对象间解耦

[图:日志系统在各个业务流程中的位置]

面向切面编程的使用步骤:

`定义通用的功能`,`定义这个功能以何方式在何处用`

横切关注点可以被模块化为特殊的类,这些类被称为切面(aspect).

这样做可以使关注点集中到一个地方,其次业务代码更简洁,主要关注点和次要关注点的代码分开在不同的位置.

AOP相关的术语

  1. 如果事情有两种可能,你不想要的越会发生。
  2. 带伞的时候不下雨,没带伞的时候下大雨。
  3. 有效的解决方案,都会带来新的问题。
  4. 事情永远做不完,但总有多的时间重做。
  5. 越不想遇到的人,越容易遇到。
  6. 要是一切看来顺利,一定有哪里出错了。
  7. 关键时候最需要的东西,偏偏不在手上。
  8. 穿高跟鞋那天,地上一定坑坑洞洞。
  9. 想找到一个人时,翻遍全世界都找不到他。
  10. 事情往往都没有表面上看起来那么简单。
  11. 即使相爱,总有一个不能在一起的完美理由。

以上内容摘抄自维基百科,不代表本人观点