05 2020 档案

摘要:数据库跟缓存,或者用Mysql和Redis来代替,想必每个CRUD boy都不会陌生。本文要聊的也是一个经典问题,就是以怎样的方式去操作数据库和缓存比较合理。 在本文正式开始之前,我觉得我们需要先取得以下两点的共识: 缓存必须要有过期时间 保证数据库跟缓存的最终一致性即可,不必追求强一致性 为什么必 阅读全文
posted @ 2020-05-13 18:35 泥土里的绽放 阅读(416) 评论(0) 推荐(0) 编辑
摘要:awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk的用法 awk 'BEGIN{ commands } pattern{ comm 阅读全文
posted @ 2020-05-09 02:05 泥土里的绽放 阅读(1230) 评论(0) 推荐(0) 编辑
摘要:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121输出: true示例 2: 输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3: 输入: 10输出: 阅读全文
posted @ 2020-05-09 01:29 泥土里的绽放 阅读(160) 评论(0) 推荐(0) 编辑
摘要:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOES 阅读全文
posted @ 2020-05-09 01:01 泥土里的绽放 阅读(221) 评论(0) 推荐(0) 编辑
摘要:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2: 输入: "cbbd"输出: "bb" 来源:力扣(LeetCode)链接:https://leetcode- 阅读全文
posted @ 2020-05-09 00:13 泥土里的绽放 阅读(196) 评论(0) 推荐(0) 编辑
摘要:把表中经常访问的记录放在了Redis中,然后用户查询时先去查询Redis再去查询MySQL,实现读写分离,也就是Redis只做读操作。由于缓存在内存中,所以查询会很快。对于一个sql语句格式的数据请求,首先计算该语句的MD5并据此得到结果集标识符,然后利用该标识符在Redis中查找该结果集。如果Re 阅读全文
posted @ 2020-05-07 23:25 泥土里的绽放 阅读(1027) 评论(0) 推荐(0) 编辑
摘要:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123输出: 321 示例 2: 输入: -123输出: -321示例 3: 输入: 120输出: 21注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1 阅读全文
posted @ 2020-05-07 10:22 泥土里的绽放 阅读(121) 评论(0) 推荐(0) 编辑
摘要:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3: 阅读全文
posted @ 2020-05-06 17:37 泥土里的绽放 阅读(315) 评论(0) 推荐(0) 编辑
摘要:1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。 IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠地传递数据包,使得网络上接收端收到发送端所发出的所有包, 阅读全文
posted @ 2020-05-06 10:43 泥土里的绽放 阅读(292) 评论(0) 推荐(0) 编辑
摘要:一.MySQL Binlog格式介绍 mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 查看binlog的格式的脚本: 二、binlog 的不同模式有什么区别呢? 1.Statement:每一条会修改数据的sql都会记录在binlog中。 优点:不需要记录每 阅读全文
posted @ 2020-05-06 09:59 泥土里的绽放 阅读(696) 评论(0) 推荐(0) 编辑
摘要:谈谈秒杀系统的落地方案 昨天的文章给秒杀系列开了一个头,今天会集中讲一下实现一个秒杀系统的思路和方案,不代表这就是最好的方案或者最佳实践,而是希望通过这篇文章,能起到抛砖引玉的作用,希望有更佳的思路提供出来。 秒杀系统要解决的技术挑战 1. 短时间内的超高访问量对后台服务的冲击。秒杀期间,来自外部请 阅读全文
posted @ 2020-05-06 09:43 泥土里的绽放 阅读(150) 评论(0) 推荐(0) 编辑
摘要:序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序 阅读全文
posted @ 2020-05-06 09:33 泥土里的绽放 阅读(135) 评论(0) 推荐(0) 编辑
摘要:————— 第二天 ————— ———————————— Zookeeper的数据模型 Zookeeper的数据模型是什么样子呢?它很像数据结构当中的树,也很像文件系统的目录。 树是由节点所组成,Zookeeper的数据存储也同样是基于节点,这种节点叫做Znode。 但是,不同于树的节点,Znode 阅读全文
posted @ 2020-05-06 00:28 泥土里的绽放 阅读(179) 评论(0) 推荐(0) 编辑
摘要:什么是Zab协议 Zab 协议的作用 Zab 协议原理 Zab 协议核心 Zab 协议内容 原子广播 崩溃恢复 如何保证数据一致性 Zab 协议如何数据同步 如何处理需要丢弃的 Proposal Zab 协议实现原理 选主过程 什么是Zab协议? Zab协议 的全称是 Zookeeper Atomi 阅读全文
posted @ 2020-05-05 23:52 泥土里的绽放 阅读(292) 评论(0) 推荐(0) 编辑
摘要:1. 一致性(Consistency)一致性(Consistency)是指多副本(Replications)问题中的数据一致性。可以分为强一致性、顺序一致性与弱一致性。 1.1 强一致性(Strict Consistency)也称为: 原子一致性(Atomic Consistency)线性一致性(L 阅读全文
posted @ 2020-05-05 22:42 泥土里的绽放 阅读(1576) 评论(0) 推荐(0) 编辑
摘要:面试开始 一个风度翩翩,穿着格子衬衣的中年男子,拿着一个满是划痕的mac向你走来,看着铮亮的头,心想着肯定是尼玛顶级架构师吧!但是我们看过暖男敖丙的系列,腹有诗书气自华,虚都不虚。 没错小伙子还是我,上次话说一半你就溜了,这次我非得好好的问问你。 好的面试官,因为上次着急,敖丙的系列更新了所以赶回家 阅读全文
posted @ 2020-05-05 19:01 泥土里的绽放 阅读(468) 评论(0) 推荐(0) 编辑
摘要:Kafka适合离线和在线的消息消费,其消息保存在磁盘上。 Kafka以Topic为单位进行消息的归纳,Producers向Topic发送(Push)消息,Consumers会消费(Pull)预订了Topic的消息。 基本概念 消息队列中的基本概念尤为重要,当对基本概念有了深入的理解之后,消息队列的原 阅读全文
posted @ 2020-05-05 18:34 泥土里的绽放 阅读(269) 评论(0) 推荐(0) 编辑
摘要:说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你“输入URL回车之后,究竟发生了什么”一样,看看你能说出多少了。 之前腾讯面试的实话,也问到这个问题了,不过答的很不好,之前没去想过相关原因,导致一时之间扯不出来。所以今天,我带大家来详细扯一下 阅读全文
posted @ 2020-05-05 17:45 泥土里的绽放 阅读(252) 评论(0) 推荐(0) 编辑
摘要:exist & in 优化 SELECT * from A WHERE id in ( SELECT id from B ) 复制代码 SELECT * from A WHERE id EXISTS ( SELECT 1 from A.id= B.id ) 复制代码 分析: in 是在内存中遍历比较 阅读全文
posted @ 2020-05-04 22:57 泥土里的绽放 阅读(388) 评论(0) 推荐(0) 编辑
摘要:声明由于贴mysql截图会占太大篇幅,影响整体阅读理解,所以没有贴mysql截图,但是下面步骤都是亲自试验过的 四种隔离级别(由低到高)Read Uncommitted读未提交:可以看到其他事务未提交的内容Read Committed读已提交:可以看到其他事务已提交读内容Repeatable Rea 阅读全文
posted @ 2020-05-04 22:18 泥土里的绽放 阅读(495) 评论(0) 推荐(0) 编辑
摘要:你需要知道的之前我们介绍了排他锁,其实innodb下的记录锁(也叫行锁),间隙锁,next-key锁统统属于排他锁。 行锁记录锁其实很好理解,对表中的记录加锁,叫做记录锁,简称行锁。 生活中的间隙锁编程的思想源于生活,生活中的例子能帮助我们更好的理解一些编程中的思想。生活中排队的场景,小明,小红,小 阅读全文
posted @ 2020-05-04 21:53 泥土里的绽放 阅读(1077) 评论(0) 推荐(0) 编辑
摘要:本人最近学习了一下微服务下数据一致性的特点,总结了下目前的保障微服务下数据一致性的几种实现方式如下,以备后查。此篇文章旨在给大家一个基于微服务的数据一致性实现的大概介绍,并未深入展开,具体的实现方式本人也在继续学习中,如有错误,欢迎大家拍砖。 目录 传统应用的事务管理 1.1 本地事务 1.2 分布 阅读全文
posted @ 2020-05-04 16:45 泥土里的绽放 阅读(375) 评论(0) 推荐(0) 编辑
摘要:随着分布式服务架构的流行与普及,原来在单体应用中执行的多个逻辑操作,现在被拆分成了多个服务之间的远程调用。虽然服务化为我们的系统带来了水平伸缩的能力,然而随之而来挑战就是分布式事务问题,多个服务之间使用自己单独维护的数据库,它们彼此之间不在同一个事务中,假如A执行成功了,B执行却失败了,而A的事务此 阅读全文
posted @ 2020-05-04 12:29 泥土里的绽放 阅读(1188) 评论(0) 推荐(0) 编辑
摘要:分布式事务了解吗?你们是如何解决分布式事务问题的? 面试题剖析 一般来说,分布式事务的实现主要有以下 5 种方案: XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案 两阶段提交方案/XA方案 所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库 阅读全文
posted @ 2020-05-04 10:59 泥土里的绽放 阅读(1262) 评论(0) 推荐(0) 编辑
摘要:进程是什么? 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。 在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实 阅读全文
posted @ 2020-05-04 00:14 泥土里的绽放 阅读(146) 评论(0) 推荐(0) 编辑
摘要:awk简介 awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读 阅读全文
posted @ 2020-05-04 00:13 泥土里的绽放 阅读(122) 评论(0) 推荐(0) 编辑
摘要:我们在编写一个查询语句的时候 SELECT DISTINCT < select_list > FROM < left_table > < join_type > JOIN < right_table > ON < join_condition > WHERE < where_condition > 阅读全文
posted @ 2020-05-04 00:05 泥土里的绽放 阅读(356) 评论(0) 推荐(0) 编辑
摘要:MySQL 常见的存储引擎,可以使用 SHOW ENGINES 复制代码 命令,来列出所有的存储引擎 可以看到,InnoDB 是 MySQL 默认支持的存储引擎,支持事务、行级锁定和外键。 MyISAM 存储引擎的特点 在 5.1 版本之前,MyISAM 是 MySQL 的默认存储引擎,MyISAM 阅读全文
posted @ 2020-05-03 23:44 泥土里的绽放 阅读(194) 评论(0) 推荐(0) 编辑
摘要:MySQL 基础架构 这道题应该从 MySQL 架构来理解,我们可以把 MySQL 拆解成几个零件,如下图所示 大致上来说,MySQL 可以分为 Server层和 存储引擎层。 Server 层包括连接器、查询缓存、分析器、优化器、执行器,包括大多数 MySQL 中的核心功能,所有跨存储引擎的功能也 阅读全文
posted @ 2020-05-03 23:43 泥土里的绽放 阅读(113) 评论(0) 推荐(0) 编辑
摘要:关于索引:由于索引需要额外的维护成本,因为索引文件是单独存在的文件,所以当我们对数据的增加,修改,删除,都会产生额外的对索引文件的操作,这些操作需要消耗额外的IO,会降低增/改/删的执行效率。所以,在我们删除数据库百万级别数据的时候,查询MySQL官方手册得知删除数据的速度和创建的索引数量是成正比的 阅读全文
posted @ 2020-05-03 23:24 泥土里的绽放 阅读(2180) 评论(0) 推荐(0) 编辑
摘要:在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。 MyISAM索引实现 MyISAM引擎使用B+Tree作为索引结构。 MyISAM会按照数据插入的顺序分配行号,从0开始,然后按照数据插入的顺序存储在 阅读全文
posted @ 2020-05-03 23:17 泥土里的绽放 阅读(758) 评论(0) 推荐(0) 编辑
摘要:今天就给大家聊一个有意思的话题:每秒上千订单场景下,如何对分布式锁的并发能力进行优化? 背景引入 首先,我们一起来看看这个问题的背景? 前段时间有个朋友在外面面试,然后有一天找我聊说:有一个国内不错的电商公司,面试官给他出了一个场景题: 假如下单时,用分布式锁来防止库存超卖,但是是每秒上千订单的高并 阅读全文
posted @ 2020-05-03 23:15 泥土里的绽放 阅读(651) 评论(0) 推荐(0) 编辑
摘要:Mysql innoDB日志 Mysql innoDB有两个日志模块:redolog 和 binlog 咱们先看一下redolog。 redolog中文来讲就是重做日志,它有什么用呢?如果每次你的更新或者插入都写入磁盘的话那这个IO成本就比较大了,所以InnoDB就把记录先记录在redolog中,并 阅读全文
posted @ 2020-05-03 16:52 泥土里的绽放 阅读(440) 评论(0) 推荐(0) 编辑
摘要:事前准备 为了故事的顺利发展,我们需要创建一个表: CREATE TABLE t ( id INT PRIMARY KEY, c VARCHAR(100) ) Engine=InnoDB CHARSET=utf8; 然后向这个表里插入一条数据: INSERT INTO t VALUES(1, '刘备 阅读全文
posted @ 2020-05-03 16:25 泥土里的绽放 阅读(185) 评论(0) 推荐(0) 编辑
摘要:前言 在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,先操作数据库还是先操作缓存呢? 先思考一下,可能会存在哪些问题,再往下看。下面我分几种方案阐述。 缓存维护方案一 假设有一写(线程A)一读(线程B)操作,先操作缓存,在操作数据库,如下流程图所示 1)线程A发起一个写操作,第一步del 阅读全文
posted @ 2020-05-03 14:56 泥土里的绽放 阅读(487) 评论(0) 推荐(0) 编辑
摘要:面试开始 一个大腹便便,穿着格子衬衣的中年男子,拿着一个满是划痕的mac向你走来,看着快秃顶的头发,心想着肯定是尼玛顶级架构师吧!但是我们腹有诗书气自华,虚都不虚。 小伙子您好,看你简历上写了你项目里面用到了Redis,你们为啥用Redis? 心里忍不住暗骂,这叫啥问题,大家不都是用的这个嘛,但是你 阅读全文
posted @ 2020-05-02 17:57 泥土里的绽放 阅读(127) 评论(0) 推荐(0) 编辑
摘要:背景 由于对redis缓存中数据有批量操作,例如预热缓存数据,或者在列表页批量去获取缓存数据,在使用了multi批量提交事务后,发现redis压力高居不下,而使用了pipeline之后压力回落了平常,也因为这个案例,特在此写个分析与笔记。 multi 简介 标记一个事务块的开始。 事务块内的多条命令 阅读全文
posted @ 2020-05-02 17:20 泥土里的绽放 阅读(1395) 评论(0) 推荐(1) 编辑
摘要:摘自:http://imhuchao.com/1271.html 引言 在介绍布隆过滤器之前我们首先引入几个场景。 场景一 在一个高并发的计数系统中,如果一个key没有计数,此时我们应该返回0,但是访问的key不存在,相当于每次访问缓存都不起作用了。那么如何避免频繁访问数量为0的key而导致的缓存被 阅读全文
posted @ 2020-05-01 11:39 泥土里的绽放 阅读(2064) 评论(0) 推荐(0) 编辑
摘要:摘自:https://www.cnblogs.com/charlesblc/p/6242479.html epoll是Linux高效网络的基础,比如event poll(例如nodejs),是使用libev,而libev的底层就是epoll(只不过不同的平台可能用epoll,可能用kqueue)。 阅读全文
posted @ 2020-05-01 01:21 泥土里的绽放 阅读(248) 评论(0) 推荐(0) 编辑