自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 在数据库中一个汉字到底占几个字节

一般数据库设置的编码格式都是UTF-8,那就以UTF-8为例,varchar(10)只能存3个汉字吗?如果是字母那就都一样了,一个字母在mysql数据库中占一个字符,在oracle数据库中占一个字节。,varchar2(10)表示能存10个字节,一个汉字占3个字节,所以最多能存3个汉字。,一个汉字即一个字符,varchar(10)能存10个汉字,占30个字节。首先要知道,一个汉字在MySQL中占几个字节是跟编码方式有关的。根据数据库不同而不同。

2023-04-10 20:44:20 4930

原创 高并发下实现幂等的几种方式

在我们业务开发过程中,总会遇到这种情况,就是插入了多条重复数据,或者在更新数据的时候出现了数据错乱,在执行多次的时候,结果总是不一样的,与我们的预期不符。我们引入一个概念叫做“幂等”,幂等其实是一个数学概念,在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同,这也是我们所期望的,那么下面我们详细介绍一下几种实现幂等的方式。

2023-04-01 21:40:26 628

原创 线程池的核心线程数该怎么设置

为什么要用线程池?线程池中的线程可以重复利用,避免了重复创建线程造成的资源开销。在线程的执行时间比较短,任务比较多的时候非常适合用线程池。

2023-03-21 21:08:45 4449

原创 怎样快速找出Redis中的BigKeys

Redis中的BigKey就是key对应的value占用内存很大,在数据读取时,可能会发生阻塞,服务性能下降,甚至可能发生系统崩溃。

2023-03-19 16:25:32 1021

原创 Redis常用指令及应用场景

redis有很多数据类型,包括string、list、set、hash、sorted set、stream、Geospatial、HyperLogLog、bitmap,每种类型适用于各个应用场景,当我们在业务中使用redis时,该选择什么数据类型

2023-03-16 20:53:49 185

原创 本地怎么复现Redis脑裂问题,脑裂能完全杜绝吗

单纯的主从架构不具有高可用性,主要起到数据备份的作用,当主节点故障时,客户端将不能写入数据,所以当不使用redis集群时,可以使用redis哨兵架构,也可以保证高可用性。哨兵不提供读写服务,只是用来做监测、通知、自动故障转移,如果主节点未按预期工作,哨兵l可以启动故障切换过程,将从节点升级为主节点,客户端将数据写入新的主节点,旧的主节点恢复时,会作为从节点同步新主节点的数据。但是redis哨兵架构也会有脑裂问题,下面我们着重介绍一下什么是脑裂?它是怎么发生的以及解决方案是什么,然后我们使用多台虚拟机模拟脑裂

2023-03-12 20:52:48 309 1

原创 怎样评估系统支持的TPS是多少

什么是TPS?每秒事务处理量(Transaction Per Second),它是衡量系统处理能力的重要指标。简单的说就是,用户向服务器发送一个请求然后收到服务器的响应结果,这算是一个事物处理。如果一秒内能处理N个这样的事物,那TPS=N。与TPS相对应的,我们经常提到的QPS,那么QPS与TPS有什么区别?

2023-03-08 20:41:11 1121

原创 线上CPU飙高、内存溢出问题分析

在生产环境,可能会出现CPU飙高,或者内存溢出的情况,造成系统卡顿甚至崩溃,怎样快速定位到问题代码,下面介绍几种方法。

2023-03-07 21:13:26 525

原创 Hadoop之HDFS架构设计

Hadoop之HDFS架构设计

2023-03-02 21:46:43 1502 1

原创 Hadoop伪分布式搭建

Hadoop伪分布式搭建

2023-02-28 21:06:04 344

原创 Springboot整合RabbitMQ

1.进入jar包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>2.声明队列、交换机、交换机与队列绑定关系(不需要则不声明,比如简单模式和工作队列模式只需要声明队列)@Beanpublic Queue or

2022-05-09 21:30:53 551

原创 zookeeper

zookeeper分布式协调框架,是一个用于存储少量数据,基于内存的数据库用于:分布式锁,分布式注册中心,分布式配置中心等主要概念:文件系统数据结构、监听机制每个节点下可以存储数据,就是类似于文件目录...

2022-04-30 13:08:43 1125

原创 Redis自己设置分布式锁可能出现的问题及解决方案

1. 如果运行中宕机,setnx锁无法释放解决:sexnx需要加超时时间,值与超时时间一起设置,保证原子性,如果分开设置,设置值后服务挂了,仍然会死锁。2. 如果超时时间设置的是30s,线程1由于某种原因30s还没有执行完,这时已经到达锁失效时间,锁释放后,线程2拿到锁也可以执行了,这时线程1执行完了,手动释放了锁,但是此刻释放的锁并不是当时它拿到的,而是线程2的,线程1释放了线程2的锁,这时线程3也可以拿到锁了,以此类推,线程释放了不是自己当初拿到的锁,造成了锁失效的现象解决:给每个线程加锁的

2022-04-28 08:45:02 1196

原创 Redis常见问题

6.0新特性redis多线程redis命令执行是单线程的,其它一些操作是多线程的客户端缓存服务端的数据发生变化时,通知客户端将缓存数据消除,获取最新的可以设置用户权限比如用户名,一些命令的权限缓存穿透例如一些首页,大批量的请求访问没有被缓存的数据,直接跳过系统设计的多级缓存,直达后台数据库解决:1.首次访问在没有缓存的数据缓存起来,下次请求则直接访问缓存2.利用布隆过滤器缓存失效(击穿)比如:大批量的key同时缓存的,则失效时间相同,当失效时刻,大批量的

2022-04-26 22:28:33 802

原创 Redis底层数据结构

String底层数据结构sds:simple dynamic string二进制安全的数据结构C语言字符串定义 char data[] = "xiaoming\0"(redis底层C语言实现),因为redis要应用到java,php等各种语言,例如:有时候传的字符串自身包含"\0",xiao\0ming,如果按照C语言的string结构"\0"后面的会舍弃,所以是不安全的提供内存预分配机制,避免了频繁的内存分配K-V存储形式与HashMap非常类似,成倍扩容,渐进式动态扩容数据不.

2022-04-26 21:02:31 2306

原创 Redis主从架构

主要配置:replicaof IP 端口 IP为主节点IPreplica-read-only yes 从节点配置为只读全量复制 工作原理:首先配置从节点,slave会像master发送PSync命令,请求复制数据到slava master节点收到命令后,将当前内存中的数据bgsave持久化RDB文件 发给slave,slave将RDB数据加载到内存 在发送和加载数据过程中,有新的数据修改,会存到repl buffer缓存中 slave加载完数据后,master再次发..

2022-04-23 18:52:34 985

原创 Redis持久化

持久化方式:RDB与AOFRDB:在配置文件中设置 save 60 1000,表示在60秒内有1000条命令执行,就会触发RDB数据持久化,也可以手动执行save命令,关闭RDB只要将save注释掉就可以。数据以二进制的形式保存在dump.rdb文件中优点:恢复数据快缺点:持久化时,会阻塞其它命令的执行...

2022-04-21 21:09:28 650

原创 线程池详解

为什么要用线程池?线程池中的线程可以重复利用,避免了重复创建线程造成的资源开销什么时候可以用线程池?线程的执行时间比较短 处理的任务比较多线程的生命状态线程池参数说明corePoorSize:核心线程数maximumPoorSize:最大线程数--核心线程数+非核心线程数keepAliveTime:允许空闲时间,超过则线程销毁unit:keepAliveTime单位workQueue:保存任务的阻塞队列threadFactory:创建线程的工厂ha

2022-04-14 21:39:53 201

原创 HashMap详解

结构JDK1.7之前:数据+链表JDK1.7之后:数据+链表+红黑树HashMap如果没有设置容量,默认设置为16hash碰撞:元素所在数据下标相同,只能放链表中放。如果发生Hash碰撞就会往链表中存HashMap是怎么样放元素的将key值进行hash运算,得到Hash值 Hash值与(数组长度-1)做位运算(相当于取模运算),得到槽位,位运算的效率远大于取模运算,因为接近机器语言。3 4 5 6 7 8.........

2022-04-11 22:38:36 743

原创 CPU及内存

1.CPU三级缓存为什么要用三级缓存?内存跟不上CPU的发展速度,CPU离内存较远,减少CPU与内存的交互,而且考虑到工艺成本,只做一个L1缓存的话,会比较占空间速度:寄存器>L1>L2>L3大小:L3>L2>L1>寄存器L3被当前CPU所有核共享,L1和L2为内核所独享。。。。一个物理核可以处理2个线程,所以一般逻辑是物理核的2倍。缓存最小存储单元叫缓存行,为64Byte。CPU从内存读取数据的过程:...

2022-03-31 09:15:56 181

原创 MVCC机制

MVCC机制--全称multi version concurrent control,多版本并发控制机制读已提交与可重复读都用了MVCC机制主要用到了undo log和read viewundo log在一次更新之前会生成一个事务ID(此ID并不是在开启事务生成的),事务ID对应一个版本信息,同时此版本信息会通过一个指针连接到上一个版本,以此类推,对这条记录每更新一次,记录一下,形成一条版本链read view在当前查询时刻,未提交的事务ID的最大和最小值作为数组,加上.

2022-03-23 09:20:55 1936

原创 mysql事务

一、事务的ACIDA:原子性 操作要么都成功,要么都失败C:一致性 从数据层面上考虑,保证事务前后一致例:张三有100元,李四有200元,张三转给李四50,正确的结果应该是张三剩50,李四剩250,如果结果不是如此,虽然都操作成功了,但是数据不对,违反了一致性I:隔离性 事务与事务相互隔离互不影响D:持久性 事务完成后数据要固化,不因宕机或者别的原因造成数据丢失二、并发带来的问题脏读:事务A读到了事务B未提交的数据,如果事务B回滚,事务A已经读到B已修改的数据...

2022-03-22 21:51:45 718

原创 mysql数据类型选择

一、数值类型类型 字节 有符号 无符号 tinyint 1Byte -128,127 0,255 smallint 2Byte -32768,32767 0,65535 int 4Byte -2147483648,2147483647 0,42.9亿 bigint 8Byte -9233372036854775808,9223372036 854775807 0,18446744 0737095..

2022-03-22 12:05:25 614

原创 mysql索引使用

一、order by注意最左前缀原则select * from test where name = 'xiaoming' order by agewhere 和 age都走索引select * from test where name = 'xiaoming' order by mobilewhere 走索引,mobile不走select * from test where name = 'xiaoming' order by age,mobile都走索引select

2022-03-21 21:44:01 1515

原创 explain详解

ID列:ID越大越先执行,ID相同按从上向下执行TYPE列:system>const>eq_ref>ref>rang_index>all保证range级别,最好是refconst:通过主键索引,最多只有一条记录eq_ref:两个表通过主键或唯一索引关联,最多只能关联一条记录ref:通过二级索引,select * from table,简单查询无关联range:索引用在范围查询index_all:全表扫描key_len列:类型 占

2022-03-20 19:17:46 1022

原创 mysql索引类型

一、主键索引MyISAM引擎索引实现为非聚集索引,叶子节点存的是数据的地址,需要回表查询InnoDB引擎索引实现为聚集索引数据库引擎是作用在表上的主键为什么需要自增?减少数据插入时索引的移位和分裂,如果没设置主键,数据库会默认生成隐藏列主键二、二级索引(辅助索引)叶子节点存的是索引值+主键,需要再根据主键进行回表查询三、联合索引叶子节点存的是按索引顺序有序排列的索引值...

2022-03-20 18:14:57 1087

原创 mysql索引结构

一、索引结构类型索引结构类型有:二叉树,红黑树(平衡二叉树),哈希,B树,B+树,mysql最终选择的索引结构为B+树,下面分别介绍一下二叉树左小右大,极端情况下,数据递增插入,会一直向右插入,形成链表,查询效率低平衡二叉树任何节点的两个子数,高度就大差1哈希不能进行范围查询B树1.每个节点放1页数据,一页为16KB2.每个键值下,存放该键值所在记录的所有数据3.叶子节点与叶子节点没有指针相互指向,不利于范围查询4.相对于二叉树,索引深度减..

2022-03-20 16:22:56 1754

原创 git原理

以元数据存储,以key/value形式存储,类似hashmap,每次存储如果内容发生改变会新生成个一个key(基于内容生成的hash值),如果内容没有改变则key值不变。存储的位置在.git/objects中。1.存储对象git中的文件对象有tag对象blob对象:对应一个文件,具体存储数据的文件树对象:对应文件目录,每次提交都会一个顶级树对象提交对象:每次执行都会产生2.树对象树对象相当于项目目录,树对象下可以有树对象和blob对象,树对象也可以储存,有对应的key。

2021-07-05 11:13:06 43

原创 git与svn的区别

1.存储方式不同git:以元数据存储,也就存储的是文件里的内容,key/value格式存储,返回key值作为唯一标识svn:直接存储的文件2.使用方式不同git:add(提交到本地暂存区)-->commit(提交到本地仓库)-->push(提交到远程仓库)svn:直接提交到远程仓库3.管理模式不同git:分布式系统远程有多台git服务,且每台服务数据一致,同时还有备份系统,有一台服务挂掉不影响使用。而且还有本地仓库,即使远程服务全部挂掉也不影响使用

2021-07-02 17:29:55 2495

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除