12 2021 档案

Redis中key-value的实现原理
摘要:实现字典的方法有很多种: 最简单的就是使用链表或数组, 但是这种方式只适用于元素个数不多的情况下; 要兼顾高效和简单性,可以使用哈希表; 如果追求更为稳定的性能特征, 并且希望高效地实现排序操作的话, 则可以使用更为复杂的平衡树; 在众多可能的实现中, Redis 选择了高效且实现简单的哈希表作为字 阅读全文

posted @ 2021-12-30 21:19 1450811640 阅读(512) 评论(0) 推荐(0) 编辑

PHP之多线程
摘要:前言 前些天帮同事查一个问题,第一次接触到了 PHP 的多线程,原以为 PHP 普遍都是单线程模型,并不适合多线程领域,花些时间翻了几个多线程的项目源码之后,发现 PHP 的多线程也颇有可取之处,活用起来,用来解决某些问题竟然非常适合。 于是找了几篇文章看了下 PHP 多线程 TSRM 机制的实现, 阅读全文

posted @ 2021-12-26 19:55 1450811640 阅读(648) 评论(0) 推荐(0) 编辑

java中redis如何实现分布式锁
摘要:前言 近来,分布式的问题被广泛提及,比如分布式事务、分布式框架、ZooKeeper、SpringCloud等等。本文先回顾锁的概念,再介绍分布式锁,以及如何用Redis来实现分布式锁。 一、锁的基本了解 首先,回顾一下我们工作学习中的锁的概念。 为什么要先讲锁再讲分布式锁呢? 我们都清楚,锁的作用是 阅读全文

posted @ 2021-12-24 10:53 1450811640 阅读(1413) 评论(0) 推荐(0) 编辑

rafte算法
摘要:目录 raft算法概览 leader election term 选举过程详解 log replication Replicated state machines 请求完整流程 safety corner case stale leader State Machine Safety leader c 阅读全文

posted @ 2021-12-15 15:37 1450811640 阅读(129) 评论(0) 推荐(0) 编辑

分布式锁实现方式
摘要:分布式锁的几种实现方式 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition toleranc 阅读全文

posted @ 2021-12-14 17:14 1450811640 阅读(100) 评论(0) 推荐(0) 编辑

彻底搞懂系列B-树、B+树、B-树、B*树
摘要:转载 备用 平衡二叉树 概念平衡二叉树是基于二分法的策略提高数据的查找速度的二叉树的数据结构; 特点平衡二叉树是采用二分法思维把数据按规则组装成一个树形结构的数据,用这个树形结构的数据减少无关数据的检索,大大的提升了数据检索的速度;平衡二叉树的数据结构组装过程有以下规则: (1)非叶子节点只能允许最 阅读全文

posted @ 2021-12-13 17:23 1450811640 阅读(407) 评论(0) 推荐(0) 编辑

php-fpm优化
摘要:前言: 1.少安装PHP模块, 费内存 2.调高linux内核打开文件数量,可以使用这些命令(必须是root帐号)(我是修改/etc/rc.local,加入ulimit -SHn 51200的) echo `ulimit -HSn 65536` >> /etc/profile echo `ulimi 阅读全文

posted @ 2021-12-13 16:06 1450811640 阅读(366) 评论(0) 推荐(0) 编辑

rpc原理
摘要:RPC非常重要,很多人面试的时候都挂在了这个地方!你要是还不懂RPC是什么?他的基本原理是什么?你一定要把下边的内容记起来!好好研究一下!特别是文中给出的一张关于RPC的基本流程图,重点中的重点,Dubbo RPC的基本执行流程就是他,RPC框架的基本原理也是他,别说我没告诉你!看了下边的内容你要掌 阅读全文

posted @ 2021-12-13 14:39 1450811640 阅读(58) 评论(0) 推荐(0) 编辑

浅谈进程、线程与协程
摘要:什么是进程和线程 有一定基础的小伙伴们肯定都知道进程和线程。 进程是什么呢? 直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。 进程拥有代码和打开的文件资源、数据资源、独立的内存空间。 线程又是什么呢? 线程从属于进程,是程序的实际执行者。一个进程至少包 阅读全文

posted @ 2021-12-11 19:58 1450811640 阅读(102) 评论(0) 推荐(0) 编辑

IO多路复用select、poll、epoll之间的区别
摘要:(1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。 ( 阅读全文

posted @ 2021-12-10 14:58 1450811640 阅读(223) 评论(0) 推荐(0) 编辑

KAFKA副本复制机制
摘要:Kafka副本 Kafka中主题的每个Partition有一个预写式日志文件,每个Partition都由一系列有序的、不可变的消息组成,这些消息被连续的追加到Partition中,Partition中的每个消息都有一个连续的序列号叫做offset,确定它在分区日志中唯一的位置 Kafka的每个top 阅读全文

posted @ 2021-12-09 11:35 1450811640 阅读(383) 评论(0) 推荐(0) 编辑

每天一练习(微信发红包)
摘要:<?php $price = 100; $maxNum = 5; $price = $price * 100; $pingjun = round($price / $maxNum) * 2; $i = 1; while($i <= $maxNum){ if($i == $maxNum){ $hong 阅读全文

posted @ 2021-12-08 21:59 1450811640 阅读(15) 评论(0) 推荐(0) 编辑

MySQL事务之MVCC、undo、redo、binlog、二阶段提交
摘要:前置概念 1.数据库中,数据在内存中叫data buffer,数据在磁盘上叫data file。 事务的日志也一样,在内存中叫log buffer,在磁盘上叫log file。 2.data buffer中的数据会在合适的时间 由存储引擎写入到data file。并不在事务提交时机制中。 3.che 阅读全文

posted @ 2021-12-08 17:09 1450811640 阅读(420) 评论(0) 推荐(0) 编辑

mysql两端提交
摘要:1.两阶段提交 MySQL中经常说的WAL技术,WAL的全称是Write- Ahead Logging,它的关键点就是先写日志,再写磁盘。即当有一条记录需要更新时,InnoDB引擎就会先把记录写到redo log里,并更新内存,这个时候更新就完成了。因为如果每一次的更新操作都需要写进磁盘,然后磁盘也 阅读全文

posted @ 2021-12-07 20:56 1450811640 阅读(58) 评论(0) 推荐(0) 编辑

Mysql - 组合索引的B+树存储结构(最左前缀原理)
摘要:Mysql的B+树索引在单列索引上比较好理解,结构如下: 那组合索引的B+树存储结构是什么样的呢,为什么会有最左前缀原理,看了很多帖子找到了答案 数据表 B+树结构b c d设置组合索引 对于联合索引来说只不过比单值索引多了几列,而这些索引列全都出现在索引树上。对于联合索引,存储引擎会首先根据第一个 阅读全文

posted @ 2021-12-07 20:41 1450811640 阅读(818) 评论(0) 推荐(0) 编辑

kafka面试题
摘要:无论是作为面试官,还是应聘者,我都接触过很多Kafka面试题。而在最近面试了很多候选人,发现写了熟悉Kafka,但是对于Kafka相关的知识却是只知道大概用处,简单搭建和使用。我想说,虽然我们是SRE(可靠性工程师),但不论你是业务层的SRE还是基础设施层的SRE,我们都需要对业务方的使用场景有足够 阅读全文

posted @ 2021-12-06 20:27 1450811640 阅读(2061) 评论(0) 推荐(0) 编辑

kafka的简介以及架构
摘要:Kafka(一)Kafka的简介与架构 一、简介 1.1 概述 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于201 阅读全文

posted @ 2021-12-06 20:22 1450811640 阅读(130) 评论(0) 推荐(0) 编辑

kafka reblance机制分析
摘要:什么是 Rebalance Rebalance 本质上是一种协议,规定了一个 Consumer Group 下的所有 consumer 如何达成一致,来分配订阅 Topic 的每个分区。 例如:某 Group 下有 20 个 consumer 实例,它订阅了一个具有 100 个 partition 阅读全文

posted @ 2021-12-06 19:33 1450811640 阅读(127) 评论(0) 推荐(0) 编辑

ELasticSearch(一)ES集群原理与搭建
摘要:一、ES集群原理 查看集群健康状况:URL+ /GET _cat/health (1)、ES基本概念名词 Cluster 代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集 阅读全文

posted @ 2021-12-06 14:47 1450811640 阅读(428) 评论(0) 推荐(0) 编辑

php自动加载机制
摘要:类的载入共经历了三个阶段 第一阶段是面向过程式的做法,整个项目里到处都是include或require。 问题:难看,不易维护。 . 第二阶段是魔术方法__autoload,当new一个类的时候,如果类不存在,则会调用此方法传入类名。 如今很多框架都已经采用PSR-4规范化编程示例: 也就是说 命名 阅读全文

posted @ 2021-12-04 20:41 1450811640 阅读(206) 评论(0) 推荐(0) 编辑

php底层数据结构-链表
摘要:Zend引擎中实现了很多基本的数据结构,这些接口贯穿PHP和Zend引擎的始末, 这些数据结构以及相应的操作接口都可以作为通用的接口来使用。本小节再简单描述一下 在Zend引擎中HashTable的使用非常频繁,这得益于他良好的查找性能,如果读者看过 前一小节会知道哈希表会预先分配内容以提高性能,而 阅读全文

posted @ 2021-12-04 16:51 1450811640 阅读(83) 评论(0) 推荐(0) 编辑

PHP底层数据存储结构-哈希表
摘要:上一节已经介绍了php数据的存储结构,下面我们看看PHP中的哈希表是怎么实现的。 PHP的哈希实现 PHP内核中的哈希表是十分重要的数据结构,PHP的大部分的语言特性都是基于哈希表实现的, 例如:变量的作用域、函数表、类的属性、方法等,Zend引擎内部的很多数据都是保存在哈希表中的。 数据结构及说明 阅读全文

posted @ 2021-12-04 16:47 1450811640 阅读(414) 评论(0) 推荐(0) 编辑

PHP底层变量存储结构
摘要:今天来复习一下php的底层数据存储结构 PHP之所以成为一个简单而强大的语言,很大一部分的原因是它拥有弱类型的变量。 但是有些时候这也是一把双刃剑,使用不当也会带来一些问题。就像仪器一样,越是功能强大, 出现错误的可能性也就越大。在官方的PHP实现内部,所有变量使用同一种数据结构(zval)来保存, 阅读全文

posted @ 2021-12-04 16:29 1450811640 阅读(237) 评论(0) 推荐(0) 编辑

Zookeeper高可用原理及角色分析
摘要:高可用机制 一个 ZooKeeper 集群如果要对外提供可用的服务,那么集群中必须要有过半的机器正常工作并且彼此之间能够正常通信。 如果想搭建一个能够允许 N 台机器 down 掉的集群,那么就要部署一个由 2*N+1 台服务器构成的 ZooKeeper 集群。 所以部署3个节点,那么就得至少有2个 阅读全文

posted @ 2021-12-02 21:05 1450811640 阅读(621) 评论(0) 推荐(0) 编辑

redis缓存问题与数据一致性问题
摘要:对于读多写少的高并发场景,我们会经常使用缓存来进行优化。比如说支付宝的余额展示功能,实际上99%的时候都是查询,1%的请求是变更,所以,我们在这样的场景下,可以加入缓存,用户->余额 1.Redis缓存与数据一致性问题 那么基于上面的这个出发点,问题就来了,当用户的余额发生变化的时候,如何更新缓存中 阅读全文

posted @ 2021-12-02 10:35 1450811640 阅读(205) 评论(0) 推荐(0) 编辑

redis底层数据结构(7)字典
摘要:字典在Redis中的应用非常广泛,数据库与哈希对象的底层实现就是字典。 一、复习散列表# 1.1 散列表# 散列表(哈希表),其思想主要是基于数组支持按照下标随机访问数据时间复杂度为O(1)的特性。可是说是数组的一种扩展。假设,我们为了方便记录某高校数学专业的所有学生的信息。要求可以按照学号(学号格 阅读全文

posted @ 2021-12-01 11:59 1450811640 阅读(55) 评论(0) 推荐(0) 编辑

redis底层数据结构(6)整数集合
摘要:整数集合(intset)并不是一个基础的数据结构,而是Redis自己设计的一种存储结构,是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时, Redis i就会使用整数集合作为集合键的底层实现。 一、整数集合实现# 整数集合(intset)是Redis用于保存整数值的集 阅读全文

posted @ 2021-12-01 11:29 1450811640 阅读(73) 评论(0) 推荐(0) 编辑

redis底层数据结构(5)快读列表(quicklist)
摘要:之前的文章我们曾总结到了Redis数据结构——链表和Redis数据结构——压缩列表这两种数据结构,他们是Redis List(列表)对象的底层实现方式。但是考虑到链表的附加空间相对太高,prev 和 next 指针就要占去 16 个字节 (64bit 系统的指针是 8 个字节),另外每个节点的内存都 阅读全文

posted @ 2021-12-01 10:59 1450811640 阅读(148) 评论(0) 推荐(0) 编辑

redis底层数据结构(4)链表(双向五环链表)
摘要:Redis链表为双向无环链表! Redis之数据结构——简单动态字符串SDS提到Redis使用了简单动态字符串,链表,字典(散列表),跳跃表,整数集合,压缩列表这些数据结构来操作内存,并且简单介绍了Redis简单动态字符串。本篇文章我们继续来分析链表。 链表是一种非常常见的数据结构,在Redis中使 阅读全文

posted @ 2021-12-01 10:46 1450811640 阅读(177) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示