计算机题库分享

DB 分库分表(1):拆分实施策略和示例演示

DB 分库分表(1):拆分实施策略和示例演示

【2021/2/8 14:18:39】 第一部分:实施策略图1.数据库分库分表(sharding)实施策略图解(点击查看大图)1.准备阶段对数据库进行分库分表(Sharding化)前,需要开发人员充分了解系统业务逻辑和数据库schema.一个好的建议是绘制一张数据库ER图或领域模型图,以这类图为基础划分shard,直观易行,可以确保开发人

阅读
DB 分库分表(3):关于使用框架还是自主开发以及 sharding 实现层面的考量

DB 分库分表(3):关于使用框架还是自主开发以及 sharding 实现层面的考量

【2021/2/8 14:18:39】 当团队对系统业务和数据库进行了细致的梳理,确定了切分方案后,接下来的问题就是如何去实现切分方案了,目前在sharding方面有不少的开源框架和产品可供参考,同时很多团队也会选择自主开发实现,而不管是选择框架还是自主开发,都会面临一个在哪一层上实现sharding逻辑的问题,本文会对这一系列的问题逐一

阅读
MySQL 主从复制原理探索

MySQL 主从复制原理探索

【2021/2/8 14:18:39】 上一篇文章里面,讲到了遇到mysql主从延迟的坑,对于这次的坑多说两句,以前也看过这样的例子,也知道不能够写完之后马上更新,但是真正开发的时候还是没有注意到这一点,道理大家都懂,但是还是会犯错,只有等到自己亲生体验到该错误之后,才真正的掌握到该道理。经历过一次mysql主从延迟之后,就开始思考,主从

阅读
DB 分库分表(5):一种支持自由规划无须数据迁移和修改路由代码的 Sharding 扩容方案

DB 分库分表(5):一种支持自由规划无须数据迁移和修改路由代码的 Sharding 扩容方案

【2021/2/8 14:18:19】 作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段。简单地说,Sharding就是将原来单一数据库按照一定的规则进行切分,把数据分散到多台物理机(我们称之为Shard)上存储,从而突破单机限制

阅读
DB 分库分表(4):多数据源的事务处理

DB 分库分表(4):多数据源的事务处理

【2021/2/8 14:18:19】 系统经sharding改造之后,原来单一的数据库会演变成多个数据库,如何确保多数据源同时操作的原子性和一致性是不得不考虑的一个问题。总体上看,目前对于一个分布式系统的事务处理有三种方式:分布式事务、基于Best Efforts 1PC模式的事务以及事务补偿机制。我们下面对这三种处理方式一一进行分析。

阅读
Redis 核心概念

Redis 核心概念

【2021/2/8 14:18:19】 Redis 与其他 key – value 缓存产品有以下三个特点:2. 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。3. 原子 – Redis的所有操作都是原子性的,同时Redis

阅读
MySQL EXPLAIN 详解

MySQL EXPLAIN 详解

【2021/2/8 14:18:19】 MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,该文主要讲解explain命令的使用及相关参数说明。id是用来顺序标识整个查询中SELELCT 语句的,在嵌套查询中id越大的语句越先执行。该值可能为NULL,如果这一行用来说明的是其他行的联合结果。表示查询的类型对应行正在访问哪一个表,

阅读
数据库压缩技术探索

数据库压缩技术探索

【2021/2/8 14:18:19】 作为数据库,在系统资源(CPU、内存、SSD、磁盘等)一定的前提下,我们希望:几乎所有压缩算法都严重依赖上下文:传统数据库中的块压缩技术对于普通的以数据块/文件为单位的压缩,传统的(流式)数据压缩算法工作得不错,时间长了,大家也都习惯了这种数据压缩的模式。基于这种模式的数据压缩算法层出不穷,不断有新

阅读
DotNet Core 多平台开发体验

DotNet Core 多平台开发体验

【2021/2/8 14:18:19】 随着net core rc2的发布,园子里面关于net core的入门文章也也多了起来,但是大多数都是在一个平台上面来写几个简单的例子,或者是在解释代码本身,并没有体现说在一个平台上面创建一个项目,然后通过源码管理签出到另一个平台上继续开发。还有就是一次编译到处运行是如何体现的?这样类型的文章好像还

阅读
C# OOP:继承,接口和抽象类

C# OOP:继承,接口和抽象类

【2021/2/8 14:18:19】 在现实生活中有所谓的“种瓜得瓜、种豆得豆”的说法,在生物学概念上就是“遗传”的概念,在面向对象中“继承”就类似于生物学中的遗传,通过继承,可以更好的实现代码的重用(复用,多次使用的意思)、增加扩展性、简化代码等。下面是现实生活中的引用:定义与使用继承继承一次最常用的就是通过合法程序(比如遗嘱)从别人

阅读
C#多线程之旅(3):线程池

C#多线程之旅(3):线程池

【2021/2/8 14:18:19】 先交代下背景,写《C#多线程之旅》这个系列文章主要是因为以下几个原因:1.多线程在C/S和B/S架构中用得是非常多的;2.而且多线程的使用是非常复杂的,如果没有用好,容易造成很多问题。多线程,有利也有弊,使用需谨慎。C#多线程之旅(1)——介绍和基本概念C#多线程之旅(2)——创建和开始线程C#多线

阅读
代码写的好,出过畅销书,还拿过赛车冠军,这是一种什么体验?

代码写的好,出过畅销书,还拿过赛车冠军,这是一种什么体验?

【2021/2/8 14:18:19】 问:代码写的好,出过畅销书,并且还拿过赛车冠军,这是一种什么体验?答:这事得问 DHH。什么?你不知道 DHH 是哪个程序员,那你更得看看这篇文章了。😀(ps:以前伯乐在线扩散《我是小有成就,但我过不了白板面试》这篇文章时,曾有读者问 DHH 是何许人也。)DHH 是一个丹麦程序员,

阅读
树形结构数据存储方案(一):邻接列表模式

树形结构数据存储方案(一):邻接列表模式

【2021/2/8 14:18:19】 在程序开发中,我们常遇到用树型结构来表示某些数据间的关系,如企业的组织架构、商品的分类、操作栏目等,目前的关系型数据库都是以二维表的形式记录存储数据,而树型结构的数据如需存入二维表就必须进行Schema设计。最近对此方面比较感兴趣,专门做下梳理,如下为常见的树型结构的数据:其中最简单的方法是:Adj

阅读
Nginx 缓存引发的跨域惨案

Nginx 缓存引发的跨域惨案

【2021/2/8 14:18:19】 贵金属wap版直播间上线后,偶尔有用户反馈,在进入wap直播间的时候,出现空白页面,但是重新刷新又可以正常显示了。我们曾一度认为是网络请求异常或兼容问题,直到开发PC版直播间,在进行调试中,同样遇到了“白屏”问题,才引起了足够重视,并进行了问题跟踪与分析。现在跟大家分享一下,这种偶然现象出现的原因。

阅读
Neo4j 图数据库基础

Neo4j 图数据库基础

【2021/2/8 14:18:19】 在这个三篇系列文章的第一篇文章中,我们将学习图数据库(graph database)的基础知识,它支持了这地球上最大的一些数据池。对于海量的各种非结构化信息来说,图数据库已经成为帮助收集、管理和搜索大量数据的技术。在这三篇系列文章中,我们将使用开源图数据库软件 Neo4j 来研究图数据库。在本文中,

阅读
MySQL 死锁与日志二三事

MySQL 死锁与日志二三事

【2021/2/8 14:18:18】 最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由于业务场景属于典型的数据仓库型应用,白天压力较小无法复现。甚至有些异常还比较诡异,最后 root cause 分析颇费周折。那实际业务当中咱们如何能快速的定位线上 MySQL 问题,修复异常呢?下文我会根据两个实际?case,分享下相关

阅读
MySQL 高性能表设计规范

MySQL 高性能表设计规范

【2021/2/8 14:18:18】 良好的逻辑设计和物理设计是高性能的基石, 应该根据系统将要执行的查询语句来设计schema, 这往往需要权衡各种因素。MySQL支持的数据类型非常多, 选择正确的数据类型对于获得高性能至关重要。更小的数据类型通常更快, 因为它们占用更少的磁盘、 内存和CPU缓存, 并且处理时需要的CPU周期也更少。

阅读
树形结构数据存储方案(四):左右值编码

树形结构数据存储方案(四):左右值编码

【2021/2/8 14:18:18】 在基于数据库的一般应用中,查询的需求总要大于删除和修改。为了避免对于树形结构查询时的“递归”过程,基于Tree的前序遍历设计一种全新的无递归查询、无限分组的左右值编码方案,来保存该树的数据。第一次看见这种表结构,相信大部分人都不清楚左值(Lft)和右值(Rgt)是如何计算出来的,而且这种表设计似乎并

阅读
树形结构数据存储方案(三):闭包表

树形结构数据存储方案(三):闭包表

【2021/2/8 14:18:18】 将Closure Table翻译成闭包表不知道是否合适,闭包表的思路和物化路径差不多,都是空间换时间,Closure Table,一种更为彻底的全路径结构,分别记录路径上相关结点的全展开形式。能明晰任意两结点关系而无须多余查询,级联删除和结点移动也很方便。但是它的存储开销会大一些,除了表示结点的Me

阅读
树形结构数据存储方案(五):区间嵌套

树形结构数据存储方案(五):区间嵌套

【2021/2/8 14:18:18】 前面的一篇文章介绍了左右值编码,不知道大家注意到了没有,如果数据庞大,每次更新都需要更新差不多全表,效率较低没有更好的方式?今天我们就来研究下区间嵌套法。区间嵌套法原理如果节点区间[clft, crgt]与[plft, prgt]存在如下关系:plft <= clft and crgt &gt

阅读