java学习笔记String一、概述: 1)String声明为final的,不可被继承 2)String实现了Serializable接口:表示字符串是支持序列化的                实现了Comparable接口:表示String可以比
java 之 string首先先来了解一下String底层结构,在后端君所用的JDK版本1.8中,String类是通过一个char数组来存储字符串的。public final class String implements java.io.Serializable, Comparable<String>, CharSequence { // 用于存储字符串 priva
2021开工第一天,就有小伙伴私信我,还给我分享了一道他面阿里的redis题(这家伙绝比已经拿到年终奖了),我看了以后觉得挺有意思,题目很简单,是那种典型的似懂非懂,常常容易被大家忽略的问题。这里整理出来分享一下,顺便自己巩固一下基础,希望对正在面试和想要面试的兄弟有点帮助。题目大致是这样的面试官:了解redis的String数据结构底层实现嘛?铁子:当然知道,是基于SDS实现的面试官:redis
简介本文从 JVM 角度来深入分析String实现原理Class文件 常量池Java代码被编译成class类文件之后,会生成一个常量池的数据结构。常量池中主要存放两大类常量:字面量(Literal)和符号引用(Symbolic References)。字面量:接近于Java语言层面的常量概念, 如文本字符串、声明为final的常量值等符号引用:属于偏编译原理方面的概念,包括以下三类常量: 类和接
前些天,因为效率低下,去玩了2天,今天回来接着学。今天主要学习了简单string实现,以及string的遍历和增删改查的增;string的简单实现主要包括构造函数、析构函数、拷贝构造函数的实现。构造函数需要注意的是:1、得注意应该单独开辟一个空间来存放传递的参数,应该在堆上面。2、当不需要传参时,不能使string对象中的指针为nullptr,因为如果对该指针解引用时,会出错,因为空指针不能解引
原创 2021-03-31 20:50:14
292阅读
1点赞
前言Redis是一种键值(key-Value)数据库,相对于关系型数据库,它也被叫作非关系型数据库。Redis中,键的数据类型是字符串,但是为了丰富数据存储方式,方便开发者使用,值的数据类型有很多。一、SDS1、SDS源码解读sds (Simple Dynamic String),Simple的意思是简单,Dynamic即动态,意味着其具有动态增加空间的能力,扩容不需要使用者关心。String是字
通常,我们说Redis 是用 C 语言写的,但是对于Redis的字符串,却不是 C 语言中的字符串(即以空字符’\0’结尾的字符数组),它是自定义的数据结构SDS(simple dynamic string),并将 SDS 作为 Redis的默认字符串表示。一、SDS 定义struct sdshdr{ //记录buf数组中已使用字节的数量 //等于 SDS 保存字符串的长度
转载 2023-06-29 11:44:04
47阅读
一、redisObject在redis中基本的结构对象我们称之为RedisObject,其源码如下:typedef struct redisObject { unsigned type:4; unsigned encoding:4; unsigned lru:LRU_BITS; int refcount; void *ptr; } robj;其中:type:表示值的数据类型。encoding:值的
转载 2023-06-21 22:27:02
239阅读
String源码底层解析,知识点集合 目录String底层解析关于StringString内部结构String的构造方法String中的对比——equals()和compareTo()的对比String的常用方法清单关于equals()方法:“==”和equals()的区别?为什么用final修饰String类?String和StringBuilder、
转载 2023-06-15 08:15:20
59阅读
一:Stringstruct string_name { // buf 中已占用空间的长度 int len; // buf 中剩余可用空间的长度 int free; // 数据空间 char buf[]; };string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value
转载 2023-08-30 10:12:27
63阅读
好吧,让我们从头来过。什么是对象编程编程呢? 先让我们从上往下理解:人是一个喜欢归类的动物,所以有生物学上的纲目。纲,即是我们编程里的基类(也叫父类);目,即是我们编程里的派生类(也叫子类)。基类与派生类是相对而言的,但跟纲目一样,都是以相同特征、行为来划分的集合,同时派生类是基类特征、行为的延伸与拓展。特征在这里叫属性,行为在这里叫方法,这也是类的基本。另外,同生物学
今天主要将昨天未学完的string底层实现学完了,并且一一实现。增加:insert(pos,ch);insert(pos,str)即可插入字符,也可以插入字符串。需要注意就是插入需要移位。resize(n,ch)的实现:主要是将size的值变为n,如果size不够,则补ch,分为3种情况,1、n<size; 2、n>size;   3、n>capacity;erase(pos,l
原创 2021-04-01 22:15:08
425阅读
1点赞
String不可变性String的不变性指的是类值一旦被初始化,就不能被改变。我们从源码出发,可以看到String类由final修饰,即类不能被继承,String中的方法不能被继承重写。String通过一个char数组value来保存数据,同样是final修饰的,即value数组一旦被赋值,内存地址无法修改。String的不变性,充分利用了final关键字的性质。public final clas
最近学了java,把一些能拎出来汇总的部分写成帖子,给自己回顾用。以下代码和执行结果都是我自己亲自执行的,执行结果是可信的。但描述的文案是自己的理解的,可能会有偏差。如存在问题,欢迎指正,以免误导了他人。public class StringNormalMethod { public static void main(String[] args){ char[] value
1、演示数据类型的实现OBJECT ENCODING key该命令是用来显示那五大数据类型的底层数据结构。比如对于 string 数据类型:我们可以看到实现string数据类型的数据结构有 embstr 以及 int。再比如 list 数据类型:这里我们就不做过多的演示了,那么上次出现的 embstr 以及 int 还有 quicklist 是什么数据结构呢?下面我们就来介绍Redis中几种
转载 2023-07-28 22:37:20
42阅读
所有的的数据,在最底层要么是字符,要是数字,redis中的所有的key都是string类型的 string 在redis3.2之前,使用的上述结构,一个char数组,一个使用长度,一个还剩多长,但这样在string比较短时候,比较浪费空间。 zhi 这个数据结构我们称之为 简单动态字符串(simple dynamic string,SDS)。在3.2之后改成了这样: 在string长度小于32的时
String类总述 包路径:java.lang.String String类代表字符串。Java程序中的所有字符串字面值(如 “abc” )都作为此类的实列实现。字符串是常量,它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串,因此String 对象是不可变的,所以可以共享。 例如: String str = “abc”; 等效于: char date[] = {‘a’, ‘b’, ‘c
# 实现“java String相加底层”教程 ## 整体流程 首先,让我们来看一下实现“java String相加底层”的整体流程。可以用下面的表格展示: | 步骤 | 操作 | | ------ | ------ | | 1 | 创建一个新的String对象 | | 2 | 将需要相加的两个String对象的字符数组拷贝到新的String对象中 | | 3 | 返回新的String对象
原创 4月前
12阅读
## Redis的String底层实现 ### 引言 Redis是一种基于内存的高性能键值数据库,其中的String是最基础的数据结构之一。了解Redis的String底层实现原理,对于理解Redis的工作机制和性能优化非常重要。在本文中,我将向你介绍如何实现Redis的String底层。 ### 流程图 ```mermaid flowchart TD 开始-->创建String对象 创
原创 10月前
23阅读
       Java中的String是一个非常常用的类,用于表示不可变的字符序列。下面对String类的底层原理进行详细说明,并附带代码和经常遇到的错误解析。目录底层原理经常遇到的错误解析String类的重要知识点补充String的特性不可变性比较字符串字符串格式化底层原理   String类使用一个char类型的数组来保存字符串中的每
  • 1
  • 2
  • 3
  • 4
  • 5