数据结构与算法

记一次线上bug:请求入参没有trim()导致查询失败

现象:对外提供的api接口,但是某一天查询接口突然出现了异常。 原因:查询到库里面的数据存在空格,而代码中有将数据转换成Map的处理,存在空格的数据为key,导致无法查询到。 解决方案: 使用sql查询数据库中存在多少存在该字段存在空格的数据。 select x_id from x_table where LENGTH(x_id) <> LENGTH(TRIM(x_id)) 然后

mysql之数据备份

数据备份主要有2种:物理备份和逻辑备份。 物理备份:通过把数据文件复制出来,达到备份的目的,需要收费。 逻辑备份:把描述数据库结构和内容的信息保存起来,达到备份的目的,免费的。 数据备份的工具:mysqldump,以及用命令行客户端工具mysql和sql语句 source进行数据恢复的方法。 备份数据库中的表:mysqldump -h 服务器 -u 用户 -p 密码 数据库名称 [表名称 … ]

go channel多路复用

1. 为什么需要多路复用 Go 程序在并发处理一些任务的时,会为每一个任务创建一个 goroutine,然后需要根据不同的 goroutine 的返回的结果做不同的处理。 如果按照通常的做法,分别获取每个 channel 的结果: taskCh1 := make(chan bool) taskCh2 := make(chan bool) taskCh3 := make(chan bool) go

通过栗子来学习MySQL高级知识点(学习,复习,面试都可)

MySQL索引 什么是索引 索引是一种数据结构,可以帮助我们快速查找数据 MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据 库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数 据结构上实现高级查找算法,这种数据结构就是索引。 索引都有哪些数据结构 索引可能有三种数据结构哈希表、有序数

MySql调优(3)flush

redo log⼤家都知道,也就是我们对数据库操作的⽇志,他是在内存中的,每次操作⼀旦写了redo log就 会⽴⻢返回结果,但是这个redo log总会找个时间去更新到磁盘,这个操作就是flush。 在更新之前,当内存数据⻚跟磁盘数据⻚内容不⼀致的时候,我们称这个内存⻚为“脏⻚”。 内存数据写⼊到磁盘后,内存和磁盘上的数据⻚的内容就⼀致了,称为“⼲净⻚“。 那什么时候会flush呢? Inno

ES近义词匹配

ES近义词匹配 ES近义词匹配搜索需要用户提供一张满足相应格式的近义词表,并在创建索引时设计将该表放入settings中。 近义词表的可以直接以字符串的形式写入settings中也可以放入文本文件中,由es读取。 近义词表格式 近义词表需要满足以下格式要求: A => B,C格式 这种格式在搜索时会将搜索词A替换成B、C,且B,C互不为同义词 A,B,C,D 格式 这种格式得分情

如何搞定MySQL锁(全局锁、表级锁、行级锁)?这篇文章告诉你答案!太TMD详细了!!!

概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 MySQL中的锁,按照锁的粒度分,分为以下三类: 全局锁:锁定数据