![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 66
xishilife
这个作者很懒,什么都没留下…
展开
-
Java中三种标准注解和四种元注解
先来说说什么是注解:注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。注解的语法比较简单,除了@符号的使用之外,它基本与Java固有的语法一致。Java内置了三种注解,定义在java.lang中的注解:@Override,表示当前的方法定义将覆盖超类中的方法。如果你不小心拼写错误,或者方法签名对不上被覆盖的方法,编译器就会发出错误提示。@Deprecated,如果程序员使用了注解为它的元素,那么编译器会发出警告信息。@Su原创 2021-09-13 11:19:10 · 154 阅读 · 0 评论 -
Java并发编程之AQS详解
一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch...。 以下是本文的目录大纲: 概述 框架 源码详解 简单应用 若有不正之处,请谅解和批评指正,不胜感激。转载 2021-09-12 20:55:00 · 124 阅读 · 0 评论 -
java中锁的分类及其应用场景
如果按照名称来说,锁大概有以下名词:自旋锁 ,自旋锁的其他种类,阻塞锁,可重入锁 ,读写锁,互斥锁,悲观锁,乐观锁,公平锁,偏向锁, 对象锁,线程锁,锁粗化,锁消除,轻量级锁,重量级锁, 信号量,独享锁,共享锁,分段锁我们所说的锁的分类其实应该按照锁的特性和设计来划分概述其实从并发的角度来讲,按照线程安全的三种策略看,主要内容都集中在互斥同步里,我们所讨论的锁也集中在这个部分。这个部分的锁都是悲观锁,第二个部分是非阻塞同步,这个部分也就一种通过CAS进行原子类操作,这个部分可以看成乐观锁...转载 2021-09-12 18:43:26 · 1959 阅读 · 0 评论 -
Spring实现AOP的方式
前置条件①导入jar<dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version> </dependenc原创 2021-08-28 12:21:57 · 83 阅读 · 0 评论 -
Spring AOP中的JDK和CGLib动态代理效率对比
一、背景今天有小伙伴面试的时候被问到:Spring AOP中JDK 和 CGLib动态代理哪个效率更高?二、基本概念首先,我们知道Spring AOP的底层实现有两种方式:一种是JDK动态代理,另一种是CGLib的方式。自Java 1.3以后,Java提供了动态代理技术,允许开发者在运行期创建接口的代理实例,后来这项技术被用到了Spring的很多地方。JDK动态代理主要涉及java.lang.reflect包下边的两个类:Proxy和InvocationHandler。其中,Invocati原创 2021-08-28 11:07:30 · 871 阅读 · 2 评论 -
SpringBoot+Redis 布隆过滤器 防恶意流量击穿缓存
什么是恶意流量穿透假设我们的Redis里存有一组用户的注册email,以email作为Key存在,同时它对应着DB里的User表的部分字段。一般来说,一个合理的请求过来我们会先在Redis里判断这个用户是否是会员,因为从缓存里读数据返回快。如果这个会员在缓存中不存在那么我们会去DB中查询一下。现在试想,有千万个不同IP的请求(不要以为没有,我们就在2018年和2019年碰到了,因为攻击的成本很低)带着Redis里根本不存在的key来访问你的网站,这时我们来设想一下:请求到达Web服务器;.转载 2021-08-26 10:29:01 · 954 阅读 · 0 评论 -
JAVA-幂等性(二):高并发的系统如何保证幂等性
转载自:https://www.cnblogs.com/geyifan/p/6128425.html一、什么是幂等性幂等概念来自数学,表示N次变换和1次变换的结果是相同的。这里讨论在某些场景下,客户端在调用服务没有达到预期结果时,会进行多次调用,为避免多次重复的调用对服务资源产生副作用,服务提供者会承诺满足幂等。HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的副作用(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。转载 2021-08-20 15:16:34 · 521 阅读 · 0 评论 -
Epoll原理 多路复用 redis的IO模型
redis 是一个单线程却性能非常好的内存数据库, 主要用来作为缓存系统。 redis 采用网络IO多路复用技术来保证在多连接的时候, 系统的高吞吐量。为什么 Redis 中要使用 I/O 多路复用这种技术呢?首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回,这会导致某一文件的 I/O 阻塞导致整个进程无法对其它客户提供服务,而I/O 多路复用就是为了解决这个问题而出现的。...转载 2021-08-12 16:40:33 · 124 阅读 · 0 评论 -
Java回调机制总结
调用和回调机制在一个应用系统中, 无论使用何种语言开发, 必然存在模块之间的调用, 调用的方式分为几种:1.同步调用同步调用是最基本并且最简单的一种调用方式, 类A的方法a()调用类B的方法b(), 一直等待b()方法执行完毕, a()方法继续往下走.这种调用方式适用于方法b()执行时间不长的情况, 因为b()方法执行时间一长或者直接阻塞的话, a()方法的余下代码是无法执行下去的, 这样会造成整个流程的阻塞.2.异步调用异步调用是为了解决同步调用可能出现阻塞, 导致整个流程卡住.转载 2021-08-12 15:07:30 · 1156 阅读 · 0 评论 -
==与equals的区别
值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。 ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。 equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。 ==比较的是2个对象的地址,而equals比较的是2个对象的内容。...原创 2012-02-13 08:56:48 · 69 阅读 · 0 评论