常见问题之Java——AOP中常用的切入点表达式

常见问题之Java——AOP中常用的切入点表达式

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:windows10
  • JDK:openjdk11
  • 开发工具:IDEA 教育版
  • 框架:SpringBoot
  • 包管理:Gradle

    内容

    上一篇,我们提到了AOP的基础概念(知识分享之Java——AOP中执行顺序),这一篇我们整理一下常用的切入点表达式。

关键词:execution 用于匹配子表达式
格式 @注解(“execution([可见性]返回类型[声明类型].方法名(参数)[异常]”)

这其中常用注解包括以下几种:

@Aspect、@Component、@Pointcut、@Before、@AfterReturning

而表达式的格式构成主要有以下这些:

    • 这个符号表示匹配所有的。
    • 这个表示类和子类
  • … 这个表示多个包,比如core包下面的所有:com.demo.core…
  • && 这个表示并且
  • || 这个表示或者
  • ! 这个表示非
    例如常见的表达式有:
    execution(* com.demo.core.controller.indexController.index(..))
    表示com.demo.core.controller包下的indexController类中的index方法生效,*表示里面不管任何返回值的均包括。
阅读更多

知识分享之Java——SpringBoot中使用template时相对路径使用方式

知识分享之Java——SpringBoot中使用template时相对路径使用方式

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:windows10
  • JDK:openjdk11
  • 开发工具:IDEA 教育版
  • 框架:SpringBoot
  • 包管理:Gradle

    内容

    在SpringBoot中使用template时进行引用静态资源时我们需要注意,如果采用href或src直接引用可能会导致增加项目名时无法有效的引用资源,例如使用的语法为href=”../static/js/main.js”
    这时我们就需要熟悉template的各种引用语法到底能做什么,以下是我们常用的几种语法,便于我们日常进行使用的快速查阅。

    1、合理使用th:href和th:src

    1
    <link th:href="@{/static/css/style.css} rel="stylesheet"  />
    这种方式其会引用的地址例如:http://127.0.0.1:8080/项目名/static/css/style.css
    适合于我们项目支持项目名时使用。

    2、对于编译进行支持

    1
    <link href="../static/css/style.css" th:href="@{/static/css/style.css} rel="stylesheet"  />
    这里我们增加了href属性的设置,其作用是在编译时便于它根据这个地址进行寻找上一层的static下的相对文件位置。

    3、不使用template中的语法

    1
    2
    <base href="/">
    <link href="../static/css/style.css" rel="stylesheet" />
    这时它会根据base标签中设置的路径,在其后方进行拼接我们使用的文件路径。
本文声明:

88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

知识分享之Java——AOP中执行顺序

知识分享之Java——AOP中执行顺序

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:windows10
  • JDK:openjdk11
  • 开发工具:IDEA 教育版
  • 框架:SpringBoot
  • 包管理:Gradle

    内容

    在AOP切片中我们知道其包含了很多个节点,那具体节点前后顺序是如何的呢?下面我整理了一下,便于有需要的小伙伴查阅使用。

    概念:

    Advice 通知
    Joinpoint 连接点
    Pointcut 切入点
    Aspect 切面
    Proxy 代理
    Weaving 织入

步骤包括:

1、@Around
2、@Before
3、@Method
4、@Around
5、@After
6、@AfterThrowing
7、@AfterReturning

如果我们编写了多个AOP时,在执行到第二步(@Before)时下一步将会进入到第二个AOP的初始@Around第一步中,待第二个AOP执行完毕再跳回至第一个AOP中的第四步,而@Method指的是原方法,只会被调用一次。不会因为多个AOP而被调用多次。具体顺序由@Order注解进行控制。
当进入第五步时出现异常时会进入第六步,当正常时会执行第七步。

本文声明:

88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

阅读更多

常见问题之JS——Url地址转码与解码

常见问题之JS——Url地址转码与解码

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:windows10

    内容

    我们在日常编写前端代码时常常调用后端接口,而接口大部分都有传参操作,而有一些参数值会和http中使用的关键词冲突,这时我们就需要使用到转码,部分转码工作由浏览器自动化完成,而很多都是需要我们手动接入进行转码。下面是我整理的一些常用的转码方式,整理出来便于大家日常使用。

1、encodeURI和decodeURI

1
2
3
let url = 'http://127.0.0.1:8080/login?uri=http://127.0.0.1:8080/userInfo?id=test001&name=无名';
console.log(url);
console.log(encodeURI(url));

看其打印的情况,我们会发现经过encodeURI处理后的地址发生了转码。同样的,前端接受到这类转码后的地址,我们可以使用decodeURI进行解码回来。
当然,encodeURI也是有局限的,它有一些常见的字符还是无法做到有效转码。

2、encodeURIComponent 和 decodeURIComponent

上面我们使用了encodeURI转码,而&这类字符没有有效转码,没有达到我们想要的效果,这时我们就需要使用到encodeURIComponent ,它可以将; / ? : @ & = + $ , #等这类特殊字符进行转码,这样就可以满足于我们上面的测试代码的使用了,同样的遇到该类的转码后的地址,我们可以使用decodeURIComponent将其解码回来。

阅读更多

常见问题之Golang——import Cycle Not Allowed错误

常见问题之Golang——import cycle not allowed错误

背景

本系列文章均为学习过程中记录的笔记,欢迎和我一起来学习Go语言。

全文使用环境如下:

  • 操作系统:deepin
  • 使用工具:Goland开发工具

    简介

    本文主要是对我日常在使用golang时遇到的一些问题与解决方式进行的汇总,在此提供给大家便于排查一些遇到的问题,其中有更好的解决方案可在评论区留言。

    正文

    错误

    import cycle not allowed

    造成原因:

    在使用包引用时代码存在互相引用,造成重复

    解决方案:

    1、分包,对于其中需要在不同地方使用的函数划分到一个新包中,其他函数在使用时就使用独立的包了。
    2、排查互相引用的包结构,通常在错误日志下方会打印出来哪个包互引了,这时只需要搜索一下就可以很快排查到。
本文声明:

88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

常见问题之Java——根据|截取字符串

常见问题之Java——根据|截取字符串

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:windows10
  • JDK:openjdk11
  • 开发工具:IDEA 教育版
  • 框架:SpringBoot
  • 包管理:Gradle

内容

常见问题:根据|截取字符串时数量不对

1
2
String a = "aaa|bbb|ccc"
String[] d = a.split("|");

这种截取时,|是没有效果的,这里我们需要使用到转义符

1
2
String a = "aaa|bbb|ccc"
String[] d = a.split("\\|");
阅读更多

常见问题之Java——使用lombok中的@Slf4j时log缺失

常见问题之Java——使用lombok中的@Slf4j时log缺失

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:windows10
  • JDK:openjdk11
  • 开发工具:IDEA 教育版
  • 框架:SpringBoot
  • 包管理:Gradle

    内容

    本节问题:常见问题之Java——使用lombok中的@Slf4j时log缺失

    1
    2
    3
    4
    5
    错误: 找不到符号
    log.info("------------ Start Cookie Filter ------------");
    ^
    符号: 变量 log
    位置: 类 XssConfig

    解决方法如图所示

    问题1、缺失插件

    打开File——settings——Plugins
    在其中搜索Lombok并进行安装
    image.png

问题2、编译时没有编译注解

打开File——settings——Build, Execution, Deployment——Compiler——Annotation Processors
勾选上Enable annotation processing

image.png

问题3、编译器没有使用javac

打开File ——Settings—— Build, Execution, Deployment——Compiler——Java Compiler
use compiler:选择javac
image.png

阅读更多

常见问题之Java——IDEA中Build Output乱码如何解决

常见问题之Java——IDEA中Build Output乱码如何解决

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:windows10
  • JDK:openjdk11
  • 开发工具:IDEA 教育版
  • 框架:SpringBoot
  • 包管理:Gradle

    内容

    本节问题:IDEA中Build Output乱码如何解决

    这其实是我们在进行初始安装时打开IDEA会自动加载本地字符集,而我们的项目通常使用UTF-8,导致使用了默认字符集的IDEA无法有效识别出来我们打印出来的错误或者程序内部报出来的错误导致。
    image.png

解决方法如图所示

1
image.png

按照上图设置完成后,进行再次运行尝试一下。
如果还不能解决,则按照下图继续进行修改:
image.png
在文件尾部追加

1
-Dfile.encoding=UTF-8

image.png

阅读更多