自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 TreeMap 和 TreeSet 在排序时如何比较元素?Collections 工具类中的 sort()方法如何比较元素?

TreeSet 要求存放的对象所属的类必须实现 Comparable 接口,该接口提供了比 较元素的 compareTo()方法,当插入元素时会回调该方法比较元素的大小。TreeMap 要求存放的键值对映射的键必须实现 Comparable 接口从而根据键对元 素进行排序.Collections 工具类的 sort 方法有两种重载的形式,第一种要求传入 的待排序容器中存放的对象比较实现 Comparable 接口以实现元素的比较;第二 种不强制性的要求容器中的元素必须可比较,但是要求传入第二个参数,参数

2022-04-19 11:00:30 216

原创 spring

什么是 Spring 的依赖注入?依赖注入,是 IOC 的一个方面,是个通常的概念,它有多种解释。这概念是说你 不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和 服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC 容 器)负责把他们组装起来。有哪些不同类型的 IOC(依赖注入)方式?构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现 的,该类有一系列参数,每个参数代表一个对其他类的依赖.Setter 方法注入:Setter 方法注入是容器

2022-04-14 19:01:58 368

原创 @Autowired 和 @Resource 的区别是什么?

Spring 内置的@Autowired以及 JDK 内置的@Resource和@Inject都可以用于注入 Bean。@Autowired 和@Resource使用的比较多一些。Autowired 属于 Spring 内置的注解,默认的注入方式为byType(根据类型进行匹配),也就是说会优先根据接口类型去匹配并注入 Bean (接口的实现类)。这会有什么问题呢? 当一个接口存在多个实现类的话,byType这种方式就无法正确注入对象了,因为这个时候 Spring 会同时找到多个满足...

2022-04-13 10:06:35 630

原创 Spring Bean 作用域

Spring 3 中为 Bean 定义了 5 中作用域,分别为 singleton(单例)、prototype(原型)、 request、session 和 global sessionbean 在springbean的生命周期:1 实例化 2 设置属性 3 执行 setbeanName 方法4 执行setApplicationContext 方法5 执行postProcessBeforeInitialization 方法6 执行afterPropertiesSet 方法7 执行..

2022-04-06 16:47:46 287

原创 java多线程中sleep和wait的4个区别,你知道几个?

sleep和wait的区别是面试中一个非常常见的问题,因为从表象来看,好像sleep和wait都能使线程处于阻塞状态,但是却有着本质上的却别。这篇文章就来好好分析一下。整体的区别其实是有四个:1、sleep是线程中的方法,但是wait是Object中的方法。2、sleep方法不会释放lock,但是wait会释放,而且会加入到等待队列中。3、sleep方法不依赖于同步器synchronized,但是wait需要依赖synchronized关键字。4、sleep不需要被唤醒(休眠之后推出阻塞

2022-04-02 17:06:04 3471

原创 Java中equals和==的区别

补充: 局部变量和成员变量的区别 1.定义的位置不一样【重点】局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中2.作用范围不一样【重点】局部变量:只有方法当中才可以使用,出了方法就不能再用了 成员变量:整个类都可以通用3.默认值不一样【重点】局部变量:没有默认值,如果要想使用,必须手动进行赋值 成员变量:如果没有赋值,会有默认值,规则和数组一样4.内存的位置不一样(了解)局部变量:位于栈内存 如果是基本类型,会把值直接存储在栈;如果是引...

2022-04-01 19:47:48 159

原创 Java基础之equals和==的区别

这个问题在面试或者源码分析都经常出现,先不着急,让我们来了解一下Java中的数据类型。java中的数据类型分为: 基本数据类型和引用数据类型。基础类型4种整数类型:int、long、byte、short2种浮点数类型:float、double1种字符类型:char1种布尔类型:boolean引用数据类型类接口数组简单来说:对于基本类型来说,== 比较的是值是否相等对于引用类型来说,== 比较的是两者在内存中存放的地址(堆内存地址)运行代码,可以得到

2022-03-31 20:39:16 334

原创 为何对象重写equals方法必须重写hashCode方法

前言java咱们知道重写equals方法必须重写hashcode方法,此文从一些使用角度分析1. hashCode方法源码public class Object { /** * Returns a hash code value for the object. This method is * supported for the benefit of hash tables such as those provided by * {@link java.u

2022-03-31 19:12:37 919

原创 容器 collections + map

collections + map1. collections 包括 set list queue(为高并发 多线程准备put take)安全 vector + hashtable 太重 自带锁 基本不用hashtable(插入快 读慢) hashMap Collections.synchronizedMap concurrentHashMap(插入效率低 读效率高) 一路发展 。。升级票超卖问题vectorlist Collections.synchroni...

2022-02-25 20:21:24 606

原创 redis 问题解答

1.那为什么Redis在4.0之前会选择使用单线程?而且使用单线程还那么快?Redis 的大部分操作都在内存中完成,内存中的执行效率本身就很快,并且采用了高效的数据结构,比如哈希表和跳表。使用单线程避免了多线程的竞争,省去了多线程切换带来的时间和性能开销,并且不会出现死锁。采用 I/O 多路复用机制处理大量客户端的Socket请求,因为这是基于非阻塞的 I/O 模型,这就让Redis可以高效地进行网络通信,I/O的读写流程也不再阻塞。2.那Redis是如何实现数据不丢失的呢?Redi

2022-02-17 18:15:11 127

原创 Redis的过期策略和内存淘汰策略

最近,在做一个项目的缓存迁移,迁移之后发现新的redis缓存的内存占用率接近100%。于是,看了一下集群的缓存策略noeviction ,难道这种策略下,即使是key过期了,也不会清除吗?后来才发现,原来自己将Redis的过期策略和内存淘汰策略搞混淆了。Redis的过期策略我们都知道,Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间。Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理。过期策略通常有以下三种:1 定时过期:每

2022-02-17 16:48:15 150

原创 多线程 +高并发 4

ThreadLocal 源码set Thread currentThread map(Thread ,person) 设到了当前线程的mapThreadLocal 用途-声明式事务 保证同一个Connection强 软 弱 虚 引用vector hashtable 基本不用map hashMap treeMap (红黑树 排好序的)...

2020-10-14 11:27:31 101

原创 多线程+并发编程 3

递增 模式 LongAdder cas 操作 分段 执行SyncAtomicLong 多线程 情况 cas 操作基于cas操作 新类型的锁ReentrantLock synchronized 必须可重入ReentrantLock 可以替换synchronized AQS是 cas新的锁都是AQS 所以新的锁 就是casCountDownLatch 多个线程 latch.countDown(); latch.aw...

2020-09-09 16:33:48 145

原创 多线程+并发编程 2

volatile 保证线程可见性 禁止指令重排序(cpu)DCL Double check lockMESI cpu 级别的缓存一致性协议单例模式new 一个对象 分三步1. 给对象申请内存 a=02. 给对象初始化 a=83. 给对象赋值CAS 重灾区 乐观锁无锁优化 如果是基础类型 无所谓 引用类型就有问题 cpu 元语支持cas (V, expected,newValue)if(v==expected)v=n...

2020-09-04 15:19:35 137

原创 com.alibaba.fastjson.JSONException: syntax error, expect {

不知哪位大神遇到过@Resourceprivate RedisTemplate<String, Object> redisTemplateXX;后缀只是换了名字 就报错,换回以前的名字就正常com.alibaba.fastjson.JSONException: syntax error, expect {...........

2019-03-22 18:56:30 994

转载 简单注解实现集群同步锁(spring+redis+注解)

大致思路就是:1、首选借助redis本身支持对应的setIfAbsent方法,该方法的特点是如果redis中已有该数据不保存返回false,不存该数据保存返回true;2、如果setIfAbsent返回true标识拿到同步锁,可进行操作,操作后并释放锁;3、如果没有通过setIfAbsent拿到数据,判断是否对锁设置了超时机制,没有设置判断是否需要继续等待;4、判断是否锁已经过期,...

2019-01-21 10:07:04 632

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除