- 博客(15)
- 资源 (11)
- 收藏
- 关注
原创 Redis数据结构之String
String是Redis中最常见的数据存储类型,它存储可以是数字、字符串或二进制数据。由于 Redis 的字符串是二进制安全的,因此可以用来存储图片、视频等二进制数据。其基本编码方式是有OBJ_ENCODING_INT、OBJ_ENCODING_EMBSTR、OBJ_ENCODING_RAW基于简单动态字符串SDS(simple dynamic string)实现,存储上限为512MB。
2024-04-27 23:29:47 2141
原创 Redis数据结构之RedisObject
Redis是一种高性能的开源内存数据存储系统,它支持多种不同类型的键值对。这些键值对的实现是基于一系列底层的数据结构。Redis底层数据结构包括字符串、双端链表、字典、压缩列表、整数集合等,但是Redis为了加快读写速度,并没有直接使用这些数据结构,而是在此基础上又包装了一层称之为RedisObject,RedisObject 有五种对象:字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)和哈希(Hash)。
2024-04-22 22:32:13 935
原创 Redis数据结构原理总结
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,目前最新版本7.0。Redis提供了五种不同的数据结构来存储数据,分别是字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)和哈希(Hash)。
2024-04-19 23:10:30 587 1
原创 MySQL中锁使用及原理
当我们向一个由AUTO_INCREMENT关键字的主键插入值的时候,每条语句都要对这个表锁进行竞争,这样的并发潜力其实是很低下的,所以InnoDB通过innodb_autoinc_lock_mode的不同取值来提供不同的锁定机制,来显著提高SQL语句的可伸缩性和性能。这也意味着在高并发的情况下,可能会出现自增值的重复或者不连续的情况。表级锁是mysql锁中粒度最大的一种锁,表示当前的操作对整张表加锁,资源开销比行锁少,不会出现死锁的情况,但是发生锁冲突的概率很大。
2024-04-02 22:17:32 2128 1
原创 MySQL日志总结
在MySQL中,日志是非常重要的一个组成部分,它记录了数据库运行状态的各种信息,包括错误信息、查询信息、事务信息等等,是进行异常排查、性能优化、数据恢复和备份的关键基础。本文将重点介绍MySQL中常见的各种日志,解析MySQL日志的作用、底层原理和实现方法,并结合案例加以说明。能够对MySQL中的各种日志有比较全面和深入的了解和认识,有助于更好地使用和管理MySQL。
2024-03-19 22:40:59 889 1
原创 MySQL事务及实现原理
大多数据库管理系统的默认隔离级别(如oracle),该级别下的事务只能读取其他事务已经提交的内容,可避免脏读,但不能避免 不可重复读、幻读。Read View主要是用来做可见性判断的, 即当我们某个事务执行快照读的时候,对该记录创建一个Read View读视图,并且分配一个递增的事务ID,同时维护一个当前活跃事务id列表,把这些属性与DB_TRX_ID作比较,判断当前事务能够看到哪个版本的数据,既可能是当前最新的数据,也有可能是该行记录的undo log里面的某个版本的数据。否者给TM的回执NO。
2024-03-17 23:57:13 1894 1
原创 java内存结构和内存模型
Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。它只是一个抽象的概念, 是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。每创建一个线程,虚拟机就会为这个线程创建一个虚拟机栈,虚拟机栈表示Java方法执行的内存模型,每调用一个方法,就会生成一个栈帧(Stack Frame)用于存储方法的本地变量表、操作栈、方法出口等信息,当这个方法执行完后,就会弹出相应的栈帧。
2024-03-12 23:18:51 980 1
原创 深入分析Java内存模型
java内存模型(Java Memory Model,JMM)是java虚拟机规范定义的,用来屏蔽掉java程序在各种不同的硬件和操作系统对内存的访问的差异,这样就可以实现java程序在各种不同的平台上都能达到内存访问的一致性。可以避免像c++等直接使用物理硬件和操作系统的内存模型在不同操作系统和硬件平台下表现不同,比如有些c/c++程序可能在windows平台运行正常,而在linux平台却运行有问题。
2024-03-12 12:57:59 813 1
原创 MySQL内部结构
比如表缓存,记录缓存,key缓存,权限缓存等。当MySQL接收到客户端的查询SQL之后,仅仅只需要对其进行相应的权限验证之后,就会通过Query Cache来查找结果,甚至都不需要经过Optimizer模块进行执行计划的分析优化,更不需要发生任何存储引擎的交互,缓存的意义在于快速查询提升系统性能,可以灵活控制缓存的一致性,MySQL5.7支持内部缓存,8.0之后就废弃掉了。同时所有的数据、数据库、表的定义、表的每一行的内容、索引,都是存在文件系统上,以文件的方式存在,并完成与存储引擎的交互。
2024-03-10 22:10:34 1957 1
原创 MySQL索引总结
用于处理查询的索引长度,如果是单列索引,那就整个索引长度算进去,如果是多列索引,那么查询不一定都能使用到所有的列,具体使用到了多少个列的索引,这里就会计算进去,没有使用到的列,这里不会计算进去。如果字符是数字(‘5’)直接转为相对应的数字,如果是字符(‘a’)统一转为0,所以第一条sql会把等号右边的条件转为数字,然后走a字段的索引,第二条sql会把等号左边的条件转为数字,那就是mysql中e字段,这个工作量就比较大,因此mysql分析出不走索引,性能会更好。那么,数据库是否会存在选错索引的情况了?
2024-03-10 17:56:15 733 1
原创 MySQL中B+树实现原理
如果不存储数据,那么就会存储更多的键值,相应的树的阶数(节点的子节点树)就会更大,树就会更矮更胖,如此一来我们查找数据进行磁盘的 IO 次数又会再次减少,数据查询的效率也会更快。因此其内部结点相对B树更小。问题:我们在平衡二叉树中,每个节点只保存了一个键值和数据,当我们保存海量的数据是,二叉树的高度就会非常高,而且磁盘的利用率也极低,访问磁盘的次数非常多,所以我们必须提高效率,一个节点保存多个键值。AVL树的平衡因子的绝对值不会超过1,正因为如此AVL树的形状肯定不会退化成一条链表的,而是“矮胖”型的树。
2024-03-06 23:32:37 772
原创 MySQL存储引擎
存储引擎是MySQL的组件,用于处理不同表类型的SQL操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。使用哪一种引擎可以灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能。MySQL服务器使用可插拔的存储引擎体系结构,可以从运行中的 MySQL 服务器加载或卸载存储引擎。查看存储引擎-- 查看支持的存储引擎-- 查看默认存储引擎。
2024-03-05 23:29:15 597
原创 深入分析java类内存结构详情
在使用递归的时候经常会抛出StackOverflowError,顾名思义就是栈满了,而我们这里所说的栈在java中通常就是虚拟机栈(vm stack),在每个方法执行的同时都会创建一个栈帧,用于存储局部变量表、操作数栈,动态链接,方法出口等信息,每一个方法从调用直到执行结束的过程就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。在HotSpot VM中,有继承关系的对象在创建时,父类的属性会被分配到相应的对象中,由于父类的属性不能和子类混用,所以它们必须单独排布在一个地方,可以认为它们就是从上到下的一个顺序。
2020-07-03 17:17:13 386
原创 深入浅出Java虚拟机中类加载过程
缓存机制:缓存机制将会保证所有加载过的Class都会被缓存,当程序中需要使用某个Class时,类加载器先从缓存区中搜寻该Class,只有当缓存区中不存在该Class对象时,系统才会读取该类对应的二进制数据,并将其转换成Class对象,存入缓冲区中。通俗的讲,就是某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父加载器,依次递归,如果父加载器可以完成类加载任务,就成功返回;· 对于同时被static和final修饰的常量,必须在声明的时候就为其显式地赋值,否则编译时不通过;
2020-07-02 16:23:10 208
原创 nginx的详细使用
正向代理:特定情况下,代理用户访问服务器,需要用户手动的设置代理服务器的ip和端口号。 反向代理:是用来代理服务器,代理用户要访问的目标服务器。代理服务器接受请求,然后将请求转发给内部网络的服务器(服务集群模式),并将从服务器上得到的结果返回给客户端,此时代理服务器对外就表现为一个服务器。 Nginx在反向代理上,提供灵活的功能,可以根据不同的正则采用不同的转发策略,如图设置好后不同的请求就可以走不同的服务器。
2020-07-01 12:49:24 584 1
全套spring cloud 项目
2024-03-27
jsoup基于java爬虫项目
2024-03-27
JD-GUI-1.4.0
2024-03-21
SourceTreeSetup-3.2.6.zip
2020-01-17
springBoot+swagger+Hibernate+Redis+Mysql Demo
2018-02-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人