文章目录前言String概述应用场景底层原理embstr结构raw结构embstr和raw的转换总结系列文章目录 前言Redis 是一个开源的、基于内存的、支持多种数据结构的高性能键值数据库。其中,string 类型是 Redis 最基本的数据结构,也是最常用的数据结构。string 类型可以存储字符串、整数或者浮点数,可以用于实现缓存、计数器、分布式锁等功能。本文将介绍 Redis strin
转载
2023-09-20 21:23:46
39阅读
在前面几篇文章中,我们也已经学习了关于List、Set的常用集合,今天学习最常用的Map集合:HashMap。 在学习HashMap之时,首先应该清楚明白:HashMap的工作原理: HashMap基于hashing原理,通过put()和get()方法存储和获取对象。当我们将键值对传递给put()方法时,它调用对象的hashCode()方法来计算hashCode,然后找到bucket位置来存储对象
转载
2023-08-20 12:48:01
63阅读
最近研究了一下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
转载
2024-07-26 16:57:22
32阅读
整理一些最近学习到有关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` 类的过程,我们将通过一个简单的步骤表来说明整个流程:
文章目录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
转载
2023-08-20 09:29:39
59阅读
JVM体系结构JVM是一种解释执行class文件的规范技术。JVM体系结构我翻译的中文图:中文图
类装载器子系统在JVM中负责装载.class文件(一种8位二进制流文件,各个数据项按顺序紧密的从前向后排列, 相邻的项之间没有间隙,经编译器编译.java源文件后生成,每个类(或者接口)都单独占有一个class文件)。
运行时数据区
方法区当JVM使用类装载器定位clas
转载
2023-07-24 15:55:45
68阅读
前言 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拿数据给进程用,临时存在这。能存储的数据量很小,但是很快啊,啪的一下就能把数据取出来。内核空间,用户空间 是操作系统层面的,一般进程只能操作用户空间,需要的时候 必须切
转载
2024-06-23 16:49:28
36阅读
java 之 string首先先来了解一下String的底层结构,在后端君所用的JDK版本1.8中,String类是通过一个char数组来存储字符串的。public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
// 用于存储字符串
priva
转载
2023-08-20 09:29:29
72阅读