摘要:Lua 脚本在 Redis 事务中的应用实践 使用过 Redis 事务的应该清楚,Redis 事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务中的命令要么全部被执行,要么全部都不执行(原子操作)。但其中有命
阅读全文
|
09 2022 档案
摘要:Lua 脚本在 Redis 事务中的应用实践 使用过 Redis 事务的应该清楚,Redis 事务实现是通过打包多条命令,单独的隔离操作,事务中的所有命令都会按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务中的命令要么全部被执行,要么全部都不执行(原子操作)。但其中有命
阅读全文
摘要:原生 Redis 跨数据中心双向同步优化实践 一、背景 公司基于业务发展以及战略部署,需要实现在多个数据中心单元化部署,一方面可以实现多数据中心容灾,另外可以提升用户请求访问速度。需要保证多数据中心容灾或者实现用户就近访问的话,需要各个数据中心拥有一致的全量数据,如果真正实现用户就近读写,也就是实现
阅读全文
摘要:分布式数据库 ZNBase 的分布式计划生成 导读 在数据库系统中,收到一个查询请求时,执行器会负责解析 SQL 语句,生成执行计划,然后再一步步实现我们的查询请求。分布式数据库拥有分布式执行计划,与传统单机数据库相比拥有更高的扩展性。本文将介绍 NewSQL 分布式数据库 ZNBase 的分布式计
阅读全文
摘要:一步步搞懂 MySQL 元数据锁(MDL) 某日,路上收到用户咨询,为了清除空间,想删除某 200 多 G 大表数据,且已经确认此表不再有业务访问,于是执行了一条命令‘delete from bigtable’,但好长时间也没删完,经过咨询后,获知 drop table 删除表速度快,而且能彻底释放
阅读全文
摘要:分布式架构下如何选择最佳 Store? 一、背景 开务数据库是一款云原生分布式数据库,基于分布式架构特点其存储数据默认有 3 份,分别存储在各节点下的不同 Store 中。在多节点多 Store 的情况下,如何选择存储数据的 Store 就显得尤为重要。 开务数据库中通过特定算法,根据 Store
阅读全文
摘要:Envoy 有状态会话保持机制设计与实现 1 问题背景 会话保持是七层负载均衡的核心功能之一。对于同一会话的请求或者连接,通过会话保持机制,负载均衡软件会将其路由到同一个后端,以利用局部性原理来提高服务整体的效率。 在传统的 LB 产品之中,会话保持能力可以说是重中之重,比如 F5 软件就提供了丰富
阅读全文
摘要:如何实现数据库读一致性 1 导读 数据的一致性是数据准确的重要指标,那如何实现数据的一致性呢?本文从事务特性和事务级别的角度和大家一起学习如何实现数据的读写一致性。 2 一致性 1. 数据的一致性:通常指关联数据之间的逻辑关系是否正确和完整。 举个例子:某系统实现读写分离,读数据库是写数据库的备份库
阅读全文
摘要:PostgreSQL 逻辑复制解密 在数字化时代的今天,我们都认同数据会创造价值。为了最大化数据的价值,我们不停的建立着数据迁移的管道,从同构到异构,从关系型到非关系型,从云下到云上,从数仓到数据湖,试图在各种场景挖掘数据的价值。而在这纵横交错的数据网络中,逻辑复制扮演着及其重要的角色。 让我们将视
阅读全文
摘要:SSH 公钥私钥的生成管理 一、生成公钥/私钥对 生成公钥/私钥对的命令(Windows/Linux): ssh-keygen -b 4096 -C 张三 -N password -f ./zhangsan-key 参数说明: -b 4096:表示密钥的长度,建议 4096 起。 -C 张三:在公钥
阅读全文
摘要:Hive on Spark 和 Spark sql on Hive,你能分的清楚么 结构上 Hive On Spark 和 SparkSQL 都是一个翻译层,把一个 SQL 翻译成分布式可执行的 Spark 程序。Hive 和 SparkSQL 都不负责计算。Hive 的默认执行引擎是 mr,还可以
阅读全文
摘要:Java 中的异常处理机制 本篇文章主要介绍了 Java 中的异常 如何处理函数抛出的异常 处理异常的原则 异常处理时,性能开销大的地方 Java 语言在设计之初就提供了相对完善的异常处理机制。 我们首先介绍一下 Java 中的异常。 介绍 Java 中的异常 异常是程序在运行过程中出现的程序异常事
阅读全文
摘要:开发一个不需要重写成 Hive QL 的大数据 SQL 引擎 学习大数据技术的核心原理,掌握一些高效的思考和思维方式,构建自己的技术知识体系。明白了原理,有时甚至不需要学习,顺着原理就可以推导出各种实现细节。 各种知识表象看杂乱无章,若只是学习繁杂知识点,固然自己的知识面是有限的,并且遇到问题的应变
阅读全文
摘要:理解 virt、res、shr 之间的关系(linux 系统篇) 前言 想必在 linux 上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题 —— 你的程序在运行时占用了多少内存(物理内存)? 通常我们可以通过 top 命令查看进程占用了多少内存。这里我们可以看到 VIRT、RE
阅读全文
摘要:输入的查询 SQL 语句,是如何执行的? 执行如下 SQL,我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。 select * from where id ='1'; 上图给出的是 MySQL 的基本架构示意图,从中你可以清楚地看到 SQL 语句在 MySQ
阅读全文
摘要:教你如何将二进制文件导入到数据库 1.1 现网业务场景 源数据推送二进制流 --> 解析二进制 --> 解析后的数据导入数据库 为了模拟生产的业务场景,客户提供了一个二进制文件及二进制文件的解析程序,需要我们解析二进制文件后导入数据库。 1.2 测试方案 由于客户给出的解析程序是单条解析,为了提升数
阅读全文
摘要:一招教你如何高效批量导入与更新数据 前言 如果有一张表,我们既想对它更新,又想对它插入应该如何操作? 可以使用 UPDATE 和 INSERT 完成你的目标。 如果你的数据量很大,想尽快完成任务执行,可否有其他方案?那一定不要错过 GaussDB (DWS) 的 MERGE INTO 功能。 MER
阅读全文
摘要:5 步教你将 MRS 数据导入 DWS MapReduce 服务(MapReduce Service,简称 MRS)是一个基于开源 Hadoop 生态环境而运行的大数据集群,对外提供大容量数据的存储和分析能力,可解决用户的数据存储和处理需求。用户可以将海量业务数据,存储在 MRS 的分析集群,即使用
阅读全文
摘要:容器化 | 在 Kubernetes 上部署 RadonDB MySQL 集群 RadonDB MySQL 是一款基于 MySQL 的开源、高可用、云原生集群解决方案。支持一主多从高可用架构,并具备安全、自动备份、监控告警、自动扩容等全套管理功能。目前已经在生产环境中大规模的使用,包含银行、保险、传
阅读全文
摘要:工具 | 常用 MySQL 内核 Debug 技巧 掌握 MySQL 内核源码的阅读和调试能力,不仅是数据库研发人员的日常,也是 DBA 进阶的必经之路。 阅读本文你将了解: 如何准备 MySQL 调试环境 GDB 调试入门及操作示例 Trace 文件调试及操作示例 | 一、准备 Debug 环境
阅读全文
摘要:详谈 MySQL 8.0 原子 DDL 原理 背景 MySQL 5.7 的字典信息保存在非事务表中,并且存放在不同的文件中(.FRM,.PAR,.OPT,.TRN,.TRG 等)。所有 DDL 操作都不是 Crash Safe,而且对于组合 DDL(ALTER 多个表)会出现有的成功有的失败的情况,
阅读全文
摘要:天天写 SQL,这些神奇的特性你知道吗? 一 SQL 的第一个神奇特性 日常开发我们经常会对表进行聚合查询操作,但只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定的聚合键、聚合函数(SUM 、AVG 等)、常量,不懂没关系我们来看个例子 听我解释 有学生班级表(tbl
阅读全文
摘要:面试必问:Java 垃圾回收机制 介绍 在 C/C++ 中,程序员负责对象的创建和销毁。通常程序员会忽略无用对象的销毁。由于这种疏忽,在某些时候,为了创建新对象,可能没有足够的内存可用,整个程序将异常终止,导致 OutOfMemoryErrors。 但是在 Java 中,程序员不需要关心所有不再使用
阅读全文
摘要:一文了解 Java 中的构造器 C ++ 引入了构造器(constructor,也叫构造函数)的概念,它是在创建对象时被自动调用的特殊方法。 Java 也采用了构造器,并且还提供了一个垃圾收集器(garbage collector),当不再使用内存资源的时候,垃圾收集器会自动将其释放。 构造器定义
阅读全文
摘要:内存问题难定位,那是因为你没用 ASAN 1. 什么是 ASAN ASAN 全称:Address Sanitizer,google 发明的一种内存地址错误检查器。目前已经被集成到各大编译器中。 2. 为什么我们需要 ASAN 在 c/c++ 开发过程中,经常出现内存异常使用的问题,比如踩内存,被踩的
阅读全文
摘要:数据库系统设计:分区 术语澄清 分区 (partition),对应 MongoDB、ES 中的 shard,HBase 的 Region,Bigtable 的 tablet,Cassandra 的 vnode,Couchbase 的 vBucket。但分区 (partitioning) 是最普遍的。
阅读全文
摘要:明明加了唯一索引,为什么还是产生了重复数据? 前言 前段时间我踩过一个坑:在 mysql8 的一张 innodb 引擎的表中,加了唯一索引,但最后发现数据竟然还是重复了。 到底怎么回事呢? 本文通过一次踩坑经历,聊聊唯一索引,一些有意思的知识点。 1. 还原问题现场 前段时间,为了防止商品组产生重复
阅读全文
摘要:Redis 存储对象信息是用 Hash 还是 String Redis 内部使用一个 RedisObject 对象来表示所有的 key 和 value,RedisObject 中的 type,则是代表一个 value 对象具体是何种数据类型,它包含字符串(String)、链表(List)、哈希结构(
阅读全文
摘要:一文读懂浏览器存储与缓存机制 浏览器存储 Cookie Cookie 是 HTTP 协议的一种无状态协议。当请求服务器时,HTTP 请求都需要携带 Cookie,用来验证用户身份。Cookie 由服务端生成,存储在客户端,用来维持状态。 通常 Cookie 由以下值构成: 名称(name) 值(va
阅读全文
摘要:重写数组的方法(改变原数组) 下图是我自我学习模拟数组时总结的一些重新数组的方法: 本文我们暂不讨论不改变原数组的方法,只谈改变原数组用到的 6 种方法。 改变原数组的方法 push() 按参数顺序向数组尾部添加元素,返回新数组的长度 var color = ['red', 'green'] var
阅读全文
摘要:Golang 常见设计模式之装饰模式 想必只要是熟悉 Python 的同学对装饰模式一定不会陌生,这类 Python 从语法上原生支持的装饰器,大大提高了装饰模式在 Python 中的应用。尽管 Go 语言中装饰模式没有 Python 中应用的那么广泛,但是它也有其独到的地方。接下来就一起看下装饰模
阅读全文
摘要:Golang 常见设计模式之选项模式 熟悉 Python 开发的同学都知道,Python 有默认参数的存在,使得我们在实例化一个对象的时候,可以根据需要来选择性的覆盖某些默认参数,以此来决定如何实例化对象。当一个对象有多个默认参数时,这个特性非常好用,能够优雅地简化代码。 而 Go 语言从语法上是不
阅读全文
摘要:MySQL 那些常见的错误设计规范 依托于互联网的发达,我们可以随时随地利用一些等车或坐地铁的碎片时间学习以及了解资讯。同时发达的互联网也方便人们能够快速分享自己的知识,与相同爱好和需求的朋友们一起共同讨论。 但是过于方便的分享也让知识变得五花八门,很容易让人接收到错误的信息。这些错误最多的都是因为
阅读全文
摘要:网站优化(一)—— 从何处着手开启网站优化? 网站优化是指使用工具、高级策略和实验来提高网站性能,从而推动流量增加转化率和增加收入的过程。搜索引擎优化 (SEO)是常见的一种网站优化方式,它可以帮助网站的各个页面在特定关键字的 SERP(搜索引擎结果页面) 中排名靠前,让用户在百度、谷歌等搜索时先看
阅读全文
摘要:什么是走索引? 索引是一种利用某种规则的数据结构与实际数据的关系加快数据查找的功能。我们的数据库中存储有大量的内容,而索引能够通过数据节点,根据特定的规则和算法快速查找到节点对应的实际文件的位置。简单来说索引就像书的目录,能够帮助我们准确定位到书籍具体的内容。 最近在学习索引的时候遇到了一个问题,下
阅读全文
摘要:如何高效查看 Docker 日志 开发基于 Docker的应用时,用好 log 可以大大提高排错效率,下面就是几个常用的 log 操作技巧: 显示所有 log 显示实时 log 使用 tail 查看 log 尾部 使用 grep 过滤 log 根据时间查看 log 组合使用 把日志写入文件 1. 显
阅读全文
摘要:详解 SSL(三):SSL 证书该如何选择? 在上一篇《 详解 SSL(二):SSL 证书对网站的好处》中,我们知道了在网站部署 SSL 证书后,不管是对网站本身还是对网站的用户都能够带来许多好处。那么随着 HTTPS 的普及,市面上也出现了各种不同的 SSL 证书。并且由于 SSL 证书的多样性,
阅读全文
摘要:详解 SSL(二):SSL 证书对网站的好处 在如今谷歌、百度等互联网巨头强制性要求网站 HTTPS 化的情况下, 网站部署 SSL 证书已然成为互联网的发展趋势。而在上一篇《 详解 SSL(一):网址栏的小绿锁有什么意义?》中,我们也知道了 SSL 证书可以防止网络安全威胁。那么除此外为网站部署
阅读全文
摘要:详解 SSL(一):网址栏的小绿锁有什么意义? 随着互联网的飞速发展,用户信息泄漏、数据泄露等安全问题的事件频繁发生。这一切不一定是网站的问题,有时候可能是自己不经意间泄露了自己的信息。例如钓鱼网站就是日常生活中比较常见的,钓鱼网站和真实网站差别细微,它们一般会伪装成银行或其它网站诱导用户点击,窃取
阅读全文
摘要:docker中启动所有的容器命令 前提:在3A服务器上部署docker环境 docker中 启动所有的容器命令 docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) docker中 关闭所有的容器命令 docker stop $(
阅读全文
摘要:Docker安装RabbitMQ详细步骤 前提: 1、在服务器的安全组和防火墙中放通相对应的端口,操作系统:centos 7.6,需要放通5672和15672端口 2、登录自己的Linux系统服务器 3、关闭服务器内部的firewalld防火墙 4、开启内核端口转发: 通过vim /etc/sysc
阅读全文
摘要:server2022安装宝塔后不能远程 server2022安装宝塔会出现远程不了的情况, 查看详细信息是Error code:0x3+Extended error code:0x11 Your Remote Desktop Services session has ended, possibly
阅读全文
摘要:查看Windows磁盘分区块大小的若干种办法 背景:在3A云服务器上扩容磁盘,随着业务增加不断扩容磁盘,后来发现扩容超过16T就报错,报的错莫名其妙。我在想,我是单机,不是群集啊,咋回事? 我切换到英文界面看到原话,原来微软中文版是把clusters当"群集"翻译了,实际上clusters还有"簇"
阅读全文
|