spring AOP

摘要: AOP 那点事儿 ( 续集 ) ImportNew 2018-11-29(点击上方公众号,可快速关注) 来源:黄勇 ,my.oschina.net/huangyong/blog/161402 本文是《AOP 那点事儿》的续集。 在上篇中,我们从写死代码,到使用代理;从编程式 Spring AOP 到 阅读全文
posted @ 2019-02-13 17:39 WeirdLang 阅读(184) 评论(0) 推荐(0) 编辑

ElasticSearch RestHighLevelClient 通用操作

摘要: 项目中使用到ElasticSearch作为搜索引擎。而ES的环境搭建自然是十分简单,且本身就适应于分布式环境,因此这块就不多赘述。而其本身特性和查询语句这篇博文不会介绍,如果有机会会深入介绍。 ​ 所以这篇博文主要还是介绍Java客户端中如何使用查询搜索引擎中的数据。而使用的Java客户端是官方新推 阅读全文
posted @ 2019-01-09 17:19 WeirdLang 阅读(16099) 评论(3) 推荐(0) 编辑

JDK动态代理为什么必须针对接口

摘要: 查看jdk的动态代理源码发现: 动态代理实际上是程序在运行中,根据被代理的接口来动态生成代理类的class文件,并加载class文件运行的过程,通过反编译被生成的$Proxy0.class文件发现: class类定义为: public final class $Proxy0 extends Prox 阅读全文
posted @ 2018-10-26 17:06 WeirdLang 阅读(7600) 评论(0) 推荐(1) 编辑

Spring 中的统一异常处理

摘要: 在具体的SSM项目开发中,由于Controller层为处于请求处理的最顶层,再往上就是框架代码的。因此,肯定需要在Controller捕获所有异常,并且做适当处理,返回给前端一个友好的错误码。 不过,Controller一多,我们发现每个Controller里都有大量重复的、冗余的异常处理代码,很是 阅读全文
posted @ 2018-10-18 11:06 WeirdLang 阅读(396) 评论(0) 推荐(0) 编辑

ThreadPoolExecutor线程池解析与BlockingQueue的三种实现

摘要: ThreadPoolExecutor的完整构造方法的签名如下 ThreadPoolExecutor (int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> w 阅读全文
posted @ 2018-09-26 11:20 WeirdLang 阅读(187) 评论(0) 推荐(0) 编辑

SpringMVC工作原理

摘要: 1. 向服务器发送 HTTP 请求,请求被前端控制器 DispatcherServlet 捕获。 2. DispatcherServlet 根据 -servlet.xml 中的配置对请求的 URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI,调用 HandlerMapping 获得该 阅读全文
posted @ 2018-09-13 15:47 WeirdLang 阅读(81) 评论(0) 推荐(0) 编辑

LinkedList源码解析(JDK8)

摘要: ArrayList的增删效率低,但是改查效率高。 而LinkedList正好相反,增删由于不需要移动底层数组数据,其底层是链表实现的,只需要修改链表节点指针,所以效率较高。 而改和查,都需要先定位到目标节点,所以效率较低。 开篇前,再说一遍Collection.toArray(); 。 这个方法很重 阅读全文
posted @ 2018-09-05 11:12 WeirdLang 阅读(175) 评论(0) 推荐(0) 编辑

MySQL表的四种分区类型

摘要: 一、什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表。mysql5.1开始支持数据表分区了。 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区。当然也可根据其他的条件分区。 二、为什么要对表进行分区 为了改善大型表以及具有各种访问模式的表的 阅读全文
posted @ 2018-08-29 16:32 WeirdLang 阅读(486) 评论(0) 推荐(0) 编辑

Reids原理之IO模型

摘要: 众所周知Redis是单进程单线程的应用,在如今多核横行的时代,我们不免有疑问,单线程的redis怎么就成了高性能的代表 当有多个线程同时调用redis的时候,那么单线程的redis是怎么处理的呢,这里就不得不说redis内部的IO模型 首先要提到几个概念,阻塞IO,非阻塞IO,同步IO,异步IO,多 阅读全文
posted @ 2018-08-29 14:39 WeirdLang 阅读(1357) 评论(0) 推荐(0) 编辑

缓存穿透和缓存雪崩问题

摘要: 缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决办法: 1 阅读全文
posted @ 2018-08-29 14:21 WeirdLang 阅读(164) 评论(0) 推荐(0) 编辑