会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
SevenCoding
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
11
12
13
14
15
16
下一页
2024年9月22日
ConcurrentLinkedQueue详解(图文并茂)
摘要: 前言 ConcurrentLinkedQueue是基于链接节点的无界线程安全队列。此队列按照FIFO(先进先出)原则对元素进行排序。队列的头部是队列中存在时间最长的元素,而队列的尾部则是最近添加的元素。新的元素总是被插入到队列的尾部,而队列的获取操作(例如poll或peek)则是从队列头部开始。 与
阅读全文
posted @ 2024-09-22 19:45 程序员Seven
阅读(1460)
评论(0)
推荐(0)
2024年9月19日
深入理解ConcurrentHashMap
摘要: HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进行put操作,调用了HashMap的putVal(),具体原因: 假设两个线程A、B都在进行put操作,并且hash函数计算出的插入下标是相同的; 当线程A执行完第六行由于时间片耗尽导致被挂起,而线程B得到时间片后在该下标处
阅读全文
posted @ 2024-09-19 22:15 程序员Seven
阅读(513)
评论(0)
推荐(1)
2024年9月18日
一文搞定WeakHashMap
摘要: 写在前面 在缓存场景下,由于内存是有限的,不能缓存所有对象,因此就需要一定的删除机制,淘汰掉一些对象。这个时候可能很快就想到了各种Cache数据过期策略,目前也有一些优秀的包提供了功能丰富的Cache,比如Google的Guava Cache,它支持数据定期过期、LRU、LFU等策略,但它仍然有可能
阅读全文
posted @ 2024-09-18 21:24 程序员Seven
阅读(389)
评论(0)
推荐(1)
2024年9月17日
如何优雅地处理返回值
摘要: 我们已经知道了如何优雅的校验传入的参数了,那么后端服务器如何实现把数据返回给前端呢? 返回格式 后端返回给前端我们一般用 JSON 体方式,定义如下: { #返回状态码 code:string, #返回信息描述 message:string, #返回值 data:object } CODE 状态码
阅读全文
posted @ 2024-09-17 20:15 程序员Seven
阅读(1367)
评论(4)
推荐(1)
2024年9月13日
为什么在EffectiveJava中建议用EnumSet替代位字段,以及使用EnumMap替换序数索引
摘要: 在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,在第37条中建议 用EnumMap替换序数索引,为什么? EnumSet 在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段 36、用 EnumSet替代位字段 如果枚举类型的元素主要在
阅读全文
posted @ 2024-09-13 21:19 程序员Seven
阅读(233)
评论(0)
推荐(1)
2024年9月12日
LinkedHashMap原理详解—从LRU缓存机制说起
摘要: 写在前面 从一道Leetcode题目说起 首先,来看一下Leetcode里面的一道经典题目:146.LRU缓存机制,题目描述如下: 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容
阅读全文
posted @ 2024-09-12 20:33 程序员Seven
阅读(400)
评论(0)
推荐(1)
2024年9月11日
TreeMap源码详解—彻底搞懂红黑树的平衡操作
摘要: 介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说TreeSet里面有一个TreeMap(适配器模式)。 Java TreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身的
阅读全文
posted @ 2024-09-11 20:49 程序员Seven
阅读(284)
评论(0)
推荐(0)
2024年9月10日
为什么Java已经不推荐使用Stack了?
摘要: 为什么不推荐使用Stack Java已不推荐使用Stack,而是推荐使用更高效的ArrayDeque 为什么不推荐使用 性能低:是因为 Stack 继承自 Vector, 而 Vector 在每个方法中都加了锁。由于需要兼容老的项目,很难在原有的基础上进行优化,因此 Vector 就被淘汰掉了,使用
阅读全文
posted @ 2024-09-10 22:16 程序员Seven
阅读(572)
评论(0)
推荐(1)
2024年9月8日
万字长文带你窥探Spring中所有的扩展点
摘要: 写在前面 Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。 由spring提供的、
阅读全文
posted @ 2024-09-08 15:48 程序员Seven
阅读(4601)
评论(6)
推荐(32)
2024年9月7日
深入剖析HashMap:理解Hash、底层实现与扩容机制
摘要: HashMap是Java中最常用的集合类框架,也是Java语言中非常典型的数据结构, 而HashSet和HashMap者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说HashSet里面有一个HashMap(适配器模式)。因此了解HashMap源码也就了解HashSet了 介绍 K
阅读全文
posted @ 2024-09-07 14:59 程序员Seven
阅读(376)
评论(0)
推荐(0)
2024年9月5日
优先级队列PriorityQueue(图文并茂)
摘要: 介绍 优先级队列的作用是能保证每次取出的元素都是队列中权值最小(或最大)的。这里元素大小的评判可以通过元素本身的自然顺序(natural ordering),也可以通过构造时传入的比较器(Comparator)。 Java中PriorityQueue实现了Queue接口,不允许放入null元素;其通
阅读全文
posted @ 2024-09-05 21:05 程序员Seven
阅读(414)
评论(0)
推荐(0)
2024年9月4日
Linkedlist源码详解
摘要: 介绍 LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(Stack)。这样看来,LinkedList简直就是个全能冠军。当你需要使用栈或者队列时,可以考虑使用LinkedList,一方面是因为Java
阅读全文
posted @ 2024-09-04 21:59 程序员Seven
阅读(100)
评论(0)
推荐(0)
2024年9月3日
深入浅出Stream流
摘要: Java 8的新特性之一就是流stream,配合同版本出现的 Lambda ,使得操作集合(Collection)提供了极大的便利。 案例引入 在JAVA中,涉及到对数组、Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行处理。 假设
阅读全文
posted @ 2024-09-03 21:35 程序员Seven
阅读(281)
评论(0)
推荐(0)
2024年9月2日
解耦利器 - Java中的SPI机制
摘要: 为什么需要SPI机制 SPI和API的区别是什么 SPI是一种跟API相对应的反向设计思想:API由实现方确定标准规范和功能,调用方无权做任何干预; 而SPI是由调用方确定标准规范,也就是接口,然后调用方依赖此接口,第三方实现此接口,这样做就可以方便的进行扩展,类似于插件机制,这是SPI出现的需求背
阅读全文
posted @ 2024-09-02 21:09 程序员Seven
阅读(244)
评论(0)
推荐(1)
2024年9月1日
如何实现一个通用的接口限流、防重、防抖机制
摘要: 介绍 最近上了一个新项目,考虑到一个问题,在高并发场景下,我们无法控制前端的请求频率和次数,这就可能导致服务器压力过大,响应速度变慢,甚至引发系统崩溃等严重问题。为了解决这些问题,我们需要在后端实现一些机制,如接口限流、防重复提交和接口防抖,而这些是保证接口安全、稳定提供服务,以及防止错误数据 和
阅读全文
posted @ 2024-09-01 13:16 程序员Seven
阅读(4325)
评论(7)
推荐(19)
2024年8月30日
最常用集合 - arraylist详解
摘要: ArrayList介绍 ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量(capacity),表示底层数组的实际大小,容器内存储元素的个数不
阅读全文
posted @ 2024-08-30 22:29 程序员Seven
阅读(372)
评论(0)
推荐(0)
2024年8月29日
一篇文章讲清楚Java中的反射
摘要: 介绍 每个类都有一个 Class 对象,包含了与类有关的信息。当编译一个新类时,会产生一个同名的 .class 文件,该文件内容保存着 Class 对象。 类加载相当于 Class 对象的加载。类在第一次使用时才动态加载到 JVM 中,可以使用 Class.forName("com.mysql.jd
阅读全文
posted @ 2024-08-29 21:48 程序员Seven
阅读(571)
评论(0)
推荐(1)
枚举实现原理
摘要: 枚举的定义 在JDK1.5之前,我们要是想定义一些有关常量的内容,例如定义几个常量,表示从周一到周末,一般都是在一个类,或者一个接口中,写类似于如下代码: public class WeekDayConstant { public static final int MONDAY = 0; publi
阅读全文
posted @ 2024-08-29 21:37 程序员Seven
阅读(62)
评论(0)
推荐(0)
2024年8月28日
Java异常详解(全文干货)
摘要: 介绍 Throwable Throwable 是 Java 语言中所有错误与异常的超类。 Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情况。 Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTr
阅读全文
posted @ 2024-08-28 21:21 程序员Seven
阅读(461)
评论(0)
推荐(1)
2024年8月27日
注解是如何实现的?
摘要: 注解是否支持继承 不支持继承 不能使用关键字extends来继承某个@interface,但注解在编译后,编译器会自动继承java.lang.annotation.Annotation接口. 虽然反编译后发现注解继承了Annotation接口,但即使Java的接口可以实现多继承,但定义注解时依然无法
阅读全文
posted @ 2024-08-27 20:46 程序员Seven
阅读(156)
评论(0)
推荐(0)
上一页
1
···
11
12
13
14
15
16
下一页
公告