简述 Spring AOP 的设计理念和源码实现
前言 不论是采用 XML 还是注解方式,最终 Spring 读取加载后都会生成与之对应的 BeanDefinition,然后利用它就可以去实例化一个对象。 BeanDefinition 用来描述创建一个实例所需要的信息 简单的看来创建一个对...
前言 不论是采用 XML 还是注解方式,最终 Spring 读取加载后都会生成与之对应的 BeanDefinition,然后利用它就可以去实例化一个对象。 BeanDefinition 用来描述创建一个实例所需要的信息 简单的看来创建一个对...
性能测试报告 查看了下阿里 Redis 的性能测试报告如下,能够达到数十万、百万级别的 QPS(暂时忽略阿里对 Redis 所做的优化),我们从 Redis 的设计和实现来分析一下 Redis 是怎么做的 Redis 的设计与实现 其实 R...
获取 IDEA 激活码、PyCharm 激活码、WebStorm 激活码和 DataGrip 激活码,提供详细破解教程与永久激活方法。支持 IDEA 永久激活与破解,免费获取注册码与激活码,解决 2024/2025 版本激活问题,轻松实现所有 JetBrains 工具的激活。
DNS 解析域名 什么是 DNS 我们访问网站的时候会输入域名,而在真实网络中主机通信是通过 IP 地址进行通信的,DNS 服务器的作用就是将这域名字符串解析为对应的 IP 地址 有哪些 DNS 服务器 如果说每输入一个域名都需要去一个 D...
什么是动态代理 可以在不修改原有类代码的情况下,对类功能接口进行拦截和增强,而且对于用户来说是透明的,好像没有发生任何变化。 比如说在 Spring 中我们给 UserService 的某个方法增加了 @Transactional 事务注解...
Comparable 某个类只要实现了 Comparable 接口就能够让自身拥有可以被排序的能力,排序能力是通过 compareTo(Object obj) 这个方法来实现的。 基本类型排序 一个基本类型要参与排序自然是用当前的值和需要比...
前言 KMP(Knuth Morris Pratt) 算法的核心思想是让模式串中的字符挨个和主串中的进行比对,直到找到了一个他们不一致的的字符,这个字符就记作坏字符,前面已经匹配成的记作好前缀,然后从中寻找某种规律尽可能的向后多移动几位数字...
BM 算法原理 BM 算法分为两部分 坏字符规则 好后缀规则 将这两大规则结合使用就能高效的完成字符串匹配,在讲述这 2 个规则前先了解几个概念 主串与模式串 如图我们需要在字符串 abcacabdc 中查找是否存在 cbd 这个字符串,那...
总览 服务调用整体来看就分为两步,本文以 zookeeper 作为注册中心,以及默认的 dubbo 协议讲解 1、 客户端从注册中心获取远程服务地址 2、 客户端通过远程服务地址发起调用 但是细分来看的话其中细节就多了,有很多需要思考的问题...
前言 搞懂这篇文章的前提是对 Lock 的几种实现以及 AQS 的源码原理有一定了解,如果不了解的话可以看下 Lock 中的 AQS、独占锁、重入锁、读锁、写锁、Condition 源码原理分析,本文源码未贴出来自己去翻下然后跟着图的调用逻...
引言 当我们需要在多线程的环境中使用 Map 的时候我们可能就会想到 SynchronizedMap ConcurrentHashMap SynchronizedMap 就是对 HashMap 的一些需要同步的方法做了进行了一层同步包装,调...