文章目录前言String概述应用场景底层原理embstr结构raw结构embstr和raw转换总结系列文章目录 前言Redis 是一个开源、基于内存、支持多种数据结构高性能键值数据库。其中,string 类型是 Redis 最基本数据结构,也是最常用数据结构。string 类型可以存储字符串、整数或者浮点数,可以用于实现缓存、计数器、分布式锁等功能。本文将介绍 Redis strin
在前面几篇文章,我们也已经学习了关于List、Set常用集合,今天学习最常用Map集合:HashMap。 在学习HashMap之时,首先应该清楚明白:HashMap工作原理: HashMap基于hashing原理,通过put()和get()方法存储和获取对象。当我们将键值对传递给put()方法时,它调用对象hashCode()方法来计算hashCode,然后找到bucket位置来存储对象
最近研究了一下java中比较常见map类型,主要有HashMap,HashTable,LinkedHashMap和concurrentHashMap。这几种map有各自特性和适用场景。使用方法的话,就不说了,本文重点介绍其原理和底层实现。文章代码来源于jdk1.9版本。HashMap特点及原理分析特点HashMap是java中使用最为频繁map类型,其读写效率较高,但是因为其是非同步
转载 2023-07-22 11:52:27
61阅读
1 各种锁释义1.1 死锁死锁是指两个线程同时占用两个资源,又在彼此等待对方释放锁资源import java.util.concurrent.TimeUnit; public class LockExample { public static void main(String[] args) { deadLock(); // 死锁 } /**
转载 2024-09-10 20:35:27
10阅读
文章目录HashMap集合底层数据结构HashMap继承关系JDK1.7 HashMap源码分析成员变量构造方法`put()`方法`inflateTable(threshold)`方法`putForNullKey(value)`方法`hash(key)`方法`indexFor(int h, int length)`方法`addEntry(int hash, K key, V value, in
转载 2023-10-07 18:40:42
28阅读
为 uniqueInstance 分配内存空间 初始化 uniqueInstance 将 uniqueInstance 指向分配内存地址但是由于 JVM 具有指令重排特性,执行顺序有可能变成 1->3->2。指令重排在单线程环境下不会出先问题,但是在多线程环境下会导致一个线程获得还没有初始化实例。例如,线程 T1 执行了 1 和 3,此时 T2 调用 getUniqueInsta
整理一些最近学习到有关Java语言一些计算机底层知识,能更好理解Java这门语言,JVM中一些设计流程跟计算机底层设计原理有很相似的地方,虽然程序员不应该受语言限制,但总要先从一门语言入手,学到语言一些设计理念,感觉这些都是相通。1、机器语言 在计算机世界里面只存在0和1,通过0和1各种组合,来让机器认识这些数字组合并进行运算。机器是如何识别出来这些数字呢,计算机实际上就相当于一
转载 2023-09-19 08:58:36
93阅读
目前在Java存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加内容,其作者是大名鼎鼎并发专家Doug Lea。本文只是介绍二者实现原理。数据同步需要依赖锁,那锁同步又依赖谁?synchronized给出答案是在软件层面依赖JVM,而Lock给出方案是在硬件层面依赖特殊CPU指令,大家可能会进一步追问:JVM底层又是如何实现synchroniz
转载 2024-01-11 11:38:45
41阅读
HashMap与ConcurrentHashMap工作原理和区别区别:HashMap不支持并发操作,没有同步方法,ConcurrentHashMap支持并发操作,通过继承 ReentrantLock(JDK1.7重入锁)/CAS和synchronized(JDK1.8内置锁)来进行加锁(分段锁),每次需要加锁操作锁住是一个 segment,这样只要保证每个 Segment 是线程安全,也就实
前言Thread#join() 内部调用了 同步方法 Thread#join(long millis),该方法 由 synchronized 修饰,该方法内部 又调用了 Object#wait(0)注:Object#wait(0) 和 Object#wait() 一样,都是让调用此方法线程进入永久阻塞,唯一区别就是,Object#wait(0) 让线程 变为 TIMED_WAITING 状态,
Java,有一个常用方法`copyOf`用于复制一个数组。它可以帮助我们快速地创建一个与原数组相同长度新数组,并将原数组元素复制到新数组。对于一个刚入行小白开发者来说,了解`copyOf`方法底层实现原理是非常有帮助。本文将详细介绍在Java实现`copyOf`底层流程和步骤,并给出相应代码示例。 首先,让我们来看一下整个实现`copyOf`方法流程。下表展示了详细
原创 2024-01-07 06:07:11
25阅读
# 实现 Java Pair 类底层Java ,`Pair` 类通常用于存储两个相关联对象。虽然 Java 标准库并未自带 `Pair` 类,但在许多情况下,开发者为了方便管理相关数据,会自行实现这个类。本文将带你一步步实现一个简单 `Pair` 类,并解释每一部分功能。 ## 流程概览 下面是实现 `Pair` 类过程,我们将通过一个简单步骤表来说明整个流程:
原创 11月前
95阅读
文章目录1.当前项目架构分析1.请求多个模块方式1.请求renren-fast模块开发环境生产环境2.请求sunliving-commodity模块1.使用环境变量+资源路径方式2.开发环境 dev.env.js3.生产环境 prod.env.js3.文件上传请求 sunliving-service模块1.请求后端接口(开发环境) policy.js2.请求阿里云OSS2.架构图3.加入改进
String不可变性String不变性指的是类值一旦被初始化,就不能被改变。我们从源码出发,可以看到String类由final修饰,即类不能被继承,String方法不能被继承重写。String通过一个char数组value来保存数据,同样是final修饰,即value数组一旦被赋值,内存地址无法修改。String不变性,充分利用了final关键字性质。public final clas
JVM体系结构JVM是一种解释执行class文件规范技术。JVM体系结构我翻译中文图:中文图 类装载器子系统在JVM负责装载.class文件(一种8位二进制流文件,各个数据项按顺序紧密从前向后排列, 相邻项之间没有间隙,经编译器编译.java源文件后生成,每个类(或者接口)都单独占有一个class文件)。 运行时数据区 方法区当JVM使用类装载器定位clas
前言 Java是目前用户最多、使用范围最广软件开发技术,Java技术体系主要由支撑Java程序运行虚拟机、提供各开发领域接口支持Java类库、Java编程语言及许许多多第三E方Java框架(如Spring、 MyBatis等) 构成。在国内,有关Java类库API、Java语言语法及第三方框架技术资料和书籍非常丰富,相比而言,有关Java虚拟机资料却显得异常贫乏。附面试思维导图(仅供
转载 2023-08-05 01:45:46
327阅读
 今天,我们看怎样创建一个View。在Eclipse里,用户通过View和Editor协同工作来完成任务。 Editor提供界面以完成任务主要部分,以Eclipse提供JDT(Java Development Tool)为例, 用户使用JDT来开发Java应用程序,所以很大一部分工作都是围绕编辑Java源程序,那么编辑工作就应该放在Editor里完成, 也就是Java Editor,
转载 2023-12-20 21:31:58
80阅读
文章目录HashMap基本结构HashMap 实现存储与读取解决 hash 冲突再散列resize过程 HashMap基本结构我们常见两种数据结构: 数组:数据存储地址连续。查询快,寻址容易。但是插入删除困难 链表:数据散列存储。查询慢,但是增删快上述两个结构各有优缺,HashMap 就是将这两种结构进行结合,即采用数组+链表形式,其中,每一个数组值存放是一个Entry类,属性有key
转载 2023-08-20 10:11:06
57阅读
CPU 简单理解为 计算机处理运算单元 (大脑) 磁盘  简单理解为 绝大多数文件持久化存储地方,从磁盘IO寻找东西需要转磁头啊 寻址啊 总之就是很慢内存  简单理解为 为了方便CPU拿数据给进程用,临时存在这。能存储数据量很小,但是很快啊,啪一下就能把数据取出来。内核空间,用户空间  是操作系统层面的,一般进程只能操作用户空间,需要时候 必须切
java 之 string首先先来了解一下String底层结构,在后端君所用JDK版本1.8,String类是通过一个char数组来存储字符串。public final class String implements java.io.Serializable, Comparable<String>, CharSequence { // 用于存储字符串 priva
  • 1
  • 2
  • 3
  • 4
  • 5