会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
SevenCoding
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
10
11
12
13
14
15
16
下一页
2024年10月8日
了解final关键字在Java并发编程领域的作用吗?
摘要: 在Java并发编程领域,final关键字扮演着一个至关重要的角色。虽然很多同学熟悉final用于修饰变量、方法和类的基本用法,但其在并发环境中的应用和原理却常常被忽视。final关键字不仅仅是一个简单的修饰符,它在多线程编程中确保对象状态的可见性和不变性,这对于构建线程安全的应用至关重要。本文将深入
阅读全文
posted @ 2024-10-08 18:23 程序员Seven
阅读(574)
评论(0)
推荐(5)
2024年9月28日
volatile关键字最全原理剖析
摘要: 介绍 volatile是轻量级的同步机制,volatile可以用来解决可见性和有序性问题,但不保证原子性。 volatile的作用: 保证了不同线程对共享变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 禁止进行指令重排序。 底层原理 内存屏障 volatil
阅读全文
posted @ 2024-09-28 19:42 程序员Seven
阅读(635)
评论(2)
推荐(0)
2024年9月26日
一篇文章讲清楚synchronized关键字的作用及原理
摘要: 概述 在应用Sychronized关键字时需要把握如下注意点: 一把锁只能同时被一个线程获取,没有获得锁的线程只能等待; 每个实例都对应有自己的一把锁(this),不同实例之间互不影响;例外:锁对象是*.class以及synchronized修饰的是static方法的时候,所有对象公用同一把锁 sy
阅读全文
posted @ 2024-09-26 22:31 程序员Seven
阅读(537)
评论(0)
推荐(4)
2024年9月25日
Java中到底有哪些锁
摘要: 乐观锁和悲观锁 不是具体的锁,是指看待并发同步的角度 悲观锁:对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。Java中,synchronized关键字和Lock的实现类都是悲观锁。 乐观锁:乐观锁不是真的锁
阅读全文
posted @ 2024-09-25 23:51 程序员Seven
阅读(214)
评论(0)
推荐(2)
2024年9月24日
线程状态转换?创建线程的几种方式?线程如何停止?
摘要: 线程状态转换 新建(New) NEW:初始状态,线程被构建,但是还没有调用start()方法。 可运行(Runnable) RUNNABLE:可运行状态,可运行状态可以包括:运行中状态和就绪状态。也就是 可能正在运行,也可能正在等待 CPU 时间片。 包含了操作系统线程状态中的 Running 和
阅读全文
posted @ 2024-09-24 23:26 程序员Seven
阅读(546)
评论(0)
推荐(2)
2024年9月23日
一文夯实并发编程的理论基础
摘要: JMM内存模型 定义 java内存模型(即 java Memory Model,简称JMM),不存在的东西,是一个概念,约定 主要分成两部分来看,一部分叫做主内存,另一部分叫做工作内存。 java当中的共享变量;都放在主内存当中,如类的成员变量(实例变量),还有静态的成员变量(类变量),都是存储在主
阅读全文
posted @ 2024-09-23 22:23 程序员Seven
阅读(429)
评论(2)
推荐(5)
2024年9月22日
ConcurrentLinkedQueue详解(图文并茂)
摘要: 前言 ConcurrentLinkedQueue是基于链接节点的无界线程安全队列。此队列按照FIFO(先进先出)原则对元素进行排序。队列的头部是队列中存在时间最长的元素,而队列的尾部则是最近添加的元素。新的元素总是被插入到队列的尾部,而队列的获取操作(例如poll或peek)则是从队列头部开始。 与
阅读全文
posted @ 2024-09-22 19:45 程序员Seven
阅读(1457)
评论(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
阅读(511)
评论(0)
推荐(1)
2024年9月18日
一文搞定WeakHashMap
摘要: 写在前面 在缓存场景下,由于内存是有限的,不能缓存所有对象,因此就需要一定的删除机制,淘汰掉一些对象。这个时候可能很快就想到了各种Cache数据过期策略,目前也有一些优秀的包提供了功能丰富的Cache,比如Google的Guava Cache,它支持数据定期过期、LRU、LFU等策略,但它仍然有可能
阅读全文
posted @ 2024-09-18 21:24 程序员Seven
阅读(387)
评论(0)
推荐(1)
2024年9月17日
如何优雅地处理返回值
摘要: 我们已经知道了如何优雅的校验传入的参数了,那么后端服务器如何实现把数据返回给前端呢? 返回格式 后端返回给前端我们一般用 JSON 体方式,定义如下: { #返回状态码 code:string, #返回信息描述 message:string, #返回值 data:object } CODE 状态码
阅读全文
posted @ 2024-09-17 20:15 程序员Seven
阅读(1364)
评论(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
阅读(232)
评论(0)
推荐(1)
2024年9月12日
LinkedHashMap原理详解—从LRU缓存机制说起
摘要: 写在前面 从一道Leetcode题目说起 首先,来看一下Leetcode里面的一道经典题目:146.LRU缓存机制,题目描述如下: 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容
阅读全文
posted @ 2024-09-12 20:33 程序员Seven
阅读(399)
评论(0)
推荐(1)
2024年9月11日
TreeMap源码详解—彻底搞懂红黑树的平衡操作
摘要: 介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说TreeSet里面有一个TreeMap(适配器模式)。 Java TreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身的
阅读全文
posted @ 2024-09-11 20:49 程序员Seven
阅读(282)
评论(0)
推荐(0)
2024年9月10日
为什么Java已经不推荐使用Stack了?
摘要: 为什么不推荐使用Stack Java已不推荐使用Stack,而是推荐使用更高效的ArrayDeque 为什么不推荐使用 性能低:是因为 Stack 继承自 Vector, 而 Vector 在每个方法中都加了锁。由于需要兼容老的项目,很难在原有的基础上进行优化,因此 Vector 就被淘汰掉了,使用
阅读全文
posted @ 2024-09-10 22:16 程序员Seven
阅读(571)
评论(0)
推荐(1)
2024年9月8日
万字长文带你窥探Spring中所有的扩展点
摘要: 写在前面 Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。 由spring提供的、
阅读全文
posted @ 2024-09-08 15:48 程序员Seven
阅读(4592)
评论(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
阅读(375)
评论(0)
推荐(0)
2024年9月5日
优先级队列PriorityQueue(图文并茂)
摘要: 介绍 优先级队列的作用是能保证每次取出的元素都是队列中权值最小(或最大)的。这里元素大小的评判可以通过元素本身的自然顺序(natural ordering),也可以通过构造时传入的比较器(Comparator)。 Java中PriorityQueue实现了Queue接口,不允许放入null元素;其通
阅读全文
posted @ 2024-09-05 21:05 程序员Seven
阅读(413)
评论(0)
推荐(0)
2024年9月4日
Linkedlist源码详解
摘要: 介绍 LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(Stack)。这样看来,LinkedList简直就是个全能冠军。当你需要使用栈或者队列时,可以考虑使用LinkedList,一方面是因为Java
阅读全文
posted @ 2024-09-04 21:59 程序员Seven
阅读(98)
评论(0)
推荐(0)
2024年9月3日
深入浅出Stream流
摘要: Java 8的新特性之一就是流stream,配合同版本出现的 Lambda ,使得操作集合(Collection)提供了极大的便利。 案例引入 在JAVA中,涉及到对数组、Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行处理。 假设
阅读全文
posted @ 2024-09-03 21:35 程序员Seven
阅读(277)
评论(0)
推荐(0)
2024年9月2日
解耦利器 - Java中的SPI机制
摘要: 为什么需要SPI机制 SPI和API的区别是什么 SPI是一种跟API相对应的反向设计思想:API由实现方确定标准规范和功能,调用方无权做任何干预; 而SPI是由调用方确定标准规范,也就是接口,然后调用方依赖此接口,第三方实现此接口,这样做就可以方便的进行扩展,类似于插件机制,这是SPI出现的需求背
阅读全文
posted @ 2024-09-02 21:09 程序员Seven
阅读(243)
评论(0)
推荐(1)
上一页
1
···
10
11
12
13
14
15
16
下一页
公告