自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(203)
  • 资源 (17)
  • 收藏
  • 关注

转载 《吃透 MQ 系列》之Kafka精妙的高性能设计(下篇)

在上一篇文章中,指出了高性能设计的两个关键维度:计算和 IO,可以将它们理解成「道」。同时给出了Kafka高性能设计的全景图,可以理解成「术」。图 1:Kafka 高性能设计的全景图这篇文章将继续对存储消息和消费消息的8 条高性能设计手段,逐个展开分析,废话不多说,开始发车。1. 存储消息的性能优化手段存储消息属于 Broker 端的核心功能,下面是它所采用的 4 条优化手段。1、IO 多路复用对于 Kafka Broker 来说,要做到高性能,首先要考虑的是...

2021-11-22 16:22:12 319

转载 《吃透 MQ 系列》之Kafka精妙的高性能设计(上篇)

大家好,我是武哥。这是《吃透 MQ系列》之 Kafka 的第 4 篇,错过前 3 篇的,通过下面的链接一睹为快:第 1 篇:扒开 Kafka 的神秘面纱第 2 篇:Kafka 架构设计的任督二脉第 3 篇:Kafka 存储选型的奥秘第 3 篇文章我深入剖析了 Kafka 选用「日志文件」作为存储方案的来龙去脉以及背后「磁盘顺序写 + 稀疏索引」的精妙设计思路。但是,Kafka 能做到单机每秒几十万的吞吐量,它的性能优化手段绝不止这一点。Kafka的高性能设计可以说是全方位的,..

2021-10-19 21:06:24 281

转载 《吃透 MQ 系列》之 Kafka 存储选型的奥秘

从这篇文章开始,我将从微观角度切入,深入分析 Kafka 的设计原理。本文要讲的是 Kafka 最具代表性的:存储设计。谈到 Kafka 的存储设计,了解不多的同学,可能会有这样的疑惑:为什么 Kafka 会采用 Logging(日志文件)这种很原始的方式来存储消息,而没考虑用数据库或者 KV 来做存储?而对 Kafka 有所了解的同学,应该能快速说出一些 知识点:比如 Append Only、Linear Scans、磁盘顺序写、页缓存、零拷贝、稀疏索引、二分查找等等。我计划写两篇文章,除了解

2021-09-12 21:07:29 291

转载 《吃透 MQ 系列》之 Kafka 架构设计的任督二脉

1. Kafka 的技术难点究竟在哪?前一篇文章《吃透 MQ 系列》之扒开 Kafka 的神秘面纱 交代了两个关键信息:1、Kafka 为实时日志流而生,要处理的并发和数据量非常大。可见,Kafka 本身就是一个高并发系统,它必然会遇到高并发场景下典型的三高挑战:高性能、高可用和高扩展。2、为了简化实现的复杂度,Kafka 最终采用了很巧妙的消息模型:它将所有消息进行了持久化存储,让消费者自己各取所需,想取哪个消息,想什么时候取都行,只需要传递一个消息的 offset 进行拉取即可。...

2021-09-09 08:41:55 190

转载 《吃透 MQ 系列》之扒开 Kafka 的神秘面纱

01 为什么从 Kafka 开始?《吃透 MQ 》的开篇围绕 MQ 「一发一存一消费」的本质展开,讲解了 MQ 的通用知识,同时系统性地回答了:如何着手设计一个 MQ?从这篇文章开始,我会讲解具体的消息中间件,之所以选择从 Kafka 开始,有 3 点考虑:第一,RocketMQ 和 Kafka 是目前最热门的两种消息中间件,互联网公司应用最为广泛,将作为本系列的重点。第二,从 MQ 的发展历程来看,Kafka 先于 RocketMQ 诞生,并且阿里团队在实现 RocketMQ 时,充...

2021-09-07 21:01:50 227

转载 《吃透 MQ 系列》之核心基础篇

这是技术系列《吃透 MQ》的开篇。本文主要讲解 MQ 的通用知识,让大家先弄明白:如果让你来设计一个 MQ,该如何下手?需要考虑哪些问题?又有哪些技术挑战?有了这个基础后,我相信后面几篇文章再讲 Kafka 和 RocketMQ 这两种具体的消息中间件时,大家能很快地抓住主脉络,同时分辨出它们各自的特点。对于 MQ 来说,不管是 RocketMQ、Kafka 还是其他消息队列,它们的本质都是:一发一存一消费。下面我们以这个本质作为根,一起由浅入深地聊聊 MQ。01 从 MQ 的本质说起将..

2021-09-06 09:16:44 260

转载 MMAP技术

1. mmap 基础概念mmap 即 memory map,也就是内存映射。mmap 是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用 read、write 等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的文件共享。如下图所示:

2021-08-25 22:11:25 1195

转载 DMA与零拷贝技术

注意事项:除了 Direct I/O,与磁盘相关的文件读写操作都有使用到 page cache 技术。1. 数据的四次拷贝与四次上下文切换很多应用程序在面临客户端请求时,可以等价为进行如下的系统调用:File.read(file, buf, len); Socket.send(socket, buf, len);例如消息中间件 Kafka 就是这个应用场景,从磁盘中读取一批消息后原封不动地写入网卡(NIC,Network interface controller)进行发送。在没有任何.

2021-08-25 21:48:12 751

转载 MySQL技术:存储写入性能严重抖动分析

案例描述:  通过iostat发现存储的写性能长期维持在10MB左右,而且因为写性能差已经导致数据库性能变差;  两个小时以后,iostat发现系统的写性能已经能够到100MB以上,数据库性能也恢复正常。也就是说,在对系统、数据库监控中,出现了性能波谷,存储写入性能严重抖动,为什么?一、原理过程由上原理图,进行过程解析:  1、事务提交,修改buffer_pool中的数据形成脏页,并且同时生成redo日志,将日志写入磁盘redo log中;  2、事务提交成功;假设,.

2021-08-23 21:59:27 242

转载 MySQL技术:commit非规律性失败案例的深入分析

一、理论知识1、关于commit原理,事务提交过程  1、寻找修改的数据页:    1、如果该数据页在内存中,则直接是内存读;    2、如果该数据页内存中没有,物理读,就从磁盘调入内存;  2、磁盘中的undo页调入内存;  3、先将原来的数据存入undo,然后修改数据(数据页成脏页);  4、修改数据的信息生成redo数据存入log_buffer(内存中的一个空间,默认16M)中;mysql> show variables like '%log_buffer%

2021-08-23 20:55:14 191

转载 MySQL技术:事务隔离级别

一、事务描述1、事务的四个特性 ACID  1. A:原子性 =一个事务或者都成功、或者都失败;  2. C:一致性 = 在整个事务的生命周期里面,查询到的数据是一致的;    MVCC多版本并发控制:利用undo保存某一时刻数据快照,通过版本号来减少锁的争用,保证各个事务互不影响。  3. I: 隔离性 = 隔离级别;  4. D:持久性 =只要事务commit,这个事务不会因为系统的崩溃而丢失;  持久性和原子性对于所有的支持事务的数据库都是一样的,都满足。2、常见...

2021-08-22 16:49:37 135

转载 MySQL技术:数据库逻辑结构单元

0:数据库逻辑结构包括表空间,段,区,数据块  1、数据库在逻辑上是由多个表间组成的,表空间中存储的对象是段;  2、段,由区组成,比如数据段,索引段,和undo段;  3、区,是磁盘分配的最小单位,是物理上连续的块,一个extent的大小是1M,由64个页组成;  4、块(页),在MySQL中块就是页,是数据库中最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位,一个page的大小是16K(默认,一般也不会更改),innodb_page_size,其值应设置为操作系统块

2021-08-21 23:33:07 1182

转载 MySQL技术:共享表空间 VS 独立表空间

【共享表空间】  又称为system tablespace系统表空间,a small set of data files (theibdatafiles)。一、共享表空间ibdata11、数据字典(data dictionary):记录数据库相关信息2、doublewrite write buffer:解决部分写失败(页断裂)3、insert buffer:内存insert buffer数据,周期写入共享表空间,防止意外宕机4、回滚段(rollback segments)5...

2021-08-21 23:15:20 413

转载 MySQL技术:MVCC实现原理

MVCC 到底是什么?MVCC 即多版本控制器,其特点就是在同一时间,不同事务可以读取到不同版本的数据,从而去解决脏读和不可重复读的问题。这样的解释你看了不下几十遍了吧!但是你真的理解什么是多版本控制器吗?①生活案例:搬家最近小 Q 跟自己的女朋友需要搬到新家,由于出小区的的时候需要支付当月的物业费。于是小 Q 跟自己的女朋友同时登陆了小区提供的物业缴费系统。②悲观并发控制假设小Q正在查当月需要缴纳的费用是多少,然后进行支付的时候,此时小Q查询的这条数据是已经被锁定的。那么小Q女

2021-08-21 12:19:48 2157

转载 MySQL技术:latch锁争用深入分析与判断

一、latch锁是什么锁1、定义  latch锁是内存锁,是一个小型的在内存中保护list的内存锁结构。2、特点  1、不排队  2、spin,一个线程想获得一个锁,但是该锁已被另一线程持有,进行spin(空转随机时间)占用cpu间接性的等待锁的释放,然后获取去进行相关操作。  3、os waits:sleep,spin多次仍然spin  4、cpu繁忙,latch争用Q:什么是锁?A:  1、用来保护共享资源,支持并发  2、锁会影响并发  3、latc.

2021-08-20 22:49:51 639

转载 MySQL技术:后台线程清理工作

一、innodb_page_cleaners  page cleaner线程从buffer pool中刷脏页的线程数量。1、5.7新特性  1、5.6版本以前,脏页的清理工作交由master线程的;  2、Page cleaner thread是5.6.2引入的一个新线程(单线程),从master线程中卸下buffer pool刷脏页的工作独立出来的线程(默认是启一个线程);  3、5.7开始支持多线程刷脏页;2、发起脏页的写请求  清理因为触发需要脏页回收的脏页(脏很久了、冷脏

2021-08-19 22:12:21 969

转载 MySQL技术:InnoDB存储引擎关键特性之checkpoint

一、日常关注的问题1、我们的日志生成速度?  1、每天生成多少日志、产生多少redo logmysql> show global status like 'Innodb_os_log_written';+-----------------------+--------+| Variable_name | Value |+-----------------------+--------+| Innodb_os_log_written | 107008 |+-

2021-08-19 20:53:48 687

转载 MySQL技术:InnoDB存储引擎关键特性之刷新邻接页-异步IO

一、刷新邻接页功能1、工作原理  当刷新一个脏页时,innodb存储引擎会检测该页所在区(extent)的所有页,如果是脏页,那么一起进行刷新。这样做的好处显而易见,通过AIO可以将多个IO写入操作合并为一个IO操作,增大写入量,减少了物理写IO,故该工作机制在传统机械磁盘下有着显著的优势。  1、在写入次数基本不增加的情况下,增加了写入的量;  2、加速了脏页的回收;  3、充分利用double write每次1M写入的特征;  4、这个功能打开以后会发现iostat里面的wrqm

2021-08-18 22:23:11 217

转载 MySQL技术:InnoDB存储引擎关键特性之自适应哈希索引

1.为什么要出现自适应哈希索引?哈希是一种非常快的查找方法,一般情况下查找的时间复杂度是O(1) 而MySql数据库中的索引B+树的一般高度为3~4层,所以如果用索引B+树查找的话一般要进行3-4次的查找 由于某些应用中可能会频繁的进行某一类的SQL操作,这些SQL操作甚至会访问相同的索引页,所以为了更快的对这些热点页进行查询,InnoDB存储引擎会为这些热点页建立哈希索引2.哈希查找为什么是O(1)?哈希表是一种线性表,也就是我们常说的数组,也就是说存储的物理地址是连续的,可以直接通过ind

2021-08-18 22:00:14 320

转载 MySQL技术:InnoDB存储引擎关键特性之double write

1.为什么要有两次写如果说插入缓冲(Insert Buffer)给InnoDB带来的是性能上的提升,那么两次写(doublewrite)带给InnoDB的就是数据页的可靠性 当发生数据库宕机时,可能InnoDB存储引擎正在写入到某个页到表中,而这个页只写了一部分,比如16KB的页,只写了4KB,之后就发生了宕机,这种情况就称为部分写失效。 面对这种情况,其实我们可以想到的就是通过重做日志进行恢复,这的确是一个办法,但是我们要知道,重做日志是对页的物理操作(例如:偏移量2000,写‘hello wor

2021-08-17 22:59:16 2328 1

转载 局部性原理与磁盘预读原理

局部性原理CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。 —— 百度百科 将计算机分为数个层次(不同计算机层次数据不同,此处仅为普通数据作为分析):寄存器...

2021-08-17 21:41:49 1039 1

转载 MySQL buffer pool的预读机制

一、预读机制    InnoDB在I/O的优化上有个比较重要的特性为预读,预读请求是一个i/o请求,它会异步地在缓冲池中预先回迁多个页面,预计很快就会需要这些页面,这些请求在一个范围内引入所有页面。InnoDB以64个page为一个extent,那么InnoDB的预读是以page为单位还是以extent?  数据库请求数据的时候,会将读请求交给文件系统,放入请求队列中;相关进程从请求队列中将读请求取出,根据需求到相关数据区(内存、磁盘)读取数据;取出的数据,放入响应队列中,最后数据库就会从.

2021-08-17 21:10:31 259

转载 重学MySQL系列06-InnoDB 对 Buffer Pool 的奇思妙想

前言相信很多小伙伴在面试中都被问过「为什么要用缓存?」,大部分人都是回答:「减少数据库的磁盘IO压力」。但是MySQL真的有如此不堪吗?每次增删改查都要去走磁盘IO吗?今天就聊聊InnoDB对Buffer Pool的奇思妙想。Buffer Pool先梳理出问题,再思考如何解决问题。假设我们就是InnoDB,我们要如何去解决磁盘IO问题?这个简单,做缓存就好了,所以MySQL需要申请一块内存空间,这块内存空间称为Buffer Pool。Buffer Pool是申请下来了

2021-08-17 21:08:00 156

转载 MySQL技术:InnoDB存储引擎关键特性之插入缓冲

一.Insert Buffer在探讨插入缓冲特性之前,我们必须先弄懂InnoDB聚集索引和非聚集索引的插入过程,因为插入缓冲就是针对于非聚集索引的插入效率而诞生的 如果对于 聚集索引和非聚集索引的概念还不是很清楚的朋友可以看看我的这篇博客:《MySQL索引的原理-聚集索引,非聚集索引的底层实现》1.1 聚集索引和非聚集索引的插入1.1.1聚集索引的插入在InnoDB存储引擎中,主键是行的唯一标识符,通常应用程序中行记录插入的顺序就是按照主键递增的顺序进行插入的 聚集索引有这样的特点:行物理

2021-08-16 23:50:12 499

转载 MySQL索引的原理-聚集索引,非聚集索引的底层实现

一.B(B-)树与B+树的简介在了解Mysql数据库索引的实现之前,就必须知道B树与B+树的相关知识,否则根本无法进行学习。1.1 B(B-)树首先明确一个概念:B树就是B-树 这里仅仅对B树做一个简单的介绍1)B树是平衡树,类似于二叉排序树,所以左子节点的数据一定小于父节点,右子节点的数 据一定大于父节点2)但是B树每一个节点的结构是一个线性表,分别存储关键字(key:也就是数据)和指向子 节点的指针 ...

2021-08-15 22:05:57 486

转载 MySQL技术:MySQL—InnoDB存储引擎体系架构

1.存储引擎1.1概念首先明确一个概念,存储引擎是基于表的,不是基于数据库的 其次存储引擎指的是表的底层物理结构的实现,也就是表在底层是如何存储的,不同的存储引擎存储表的物理结构不同 MySQL数据库最大的特点就是插件式的表存储引擎,即支持多种存储引擎,目前默认的存储引擎是InnoDB,但是其还支持:MyISAM,NDB,Memory,Archive,Federated,Maria等存储引擎,不同的存储引擎有着自己管理表和存储表的方式 下图为Mysql数据库的体系结构图,可以看到底层第二层为多

2021-08-15 21:52:40 484

转载 重学MySQL系列05-redo log与binlog

今天就来聊聊InnoDB是如何保证redo log与binlog两份日志之间的逻辑一致。两阶段提交redo log(重做日志)让InnoDB存储引擎拥有了崩溃恢复能力。binlog(归档日志)保证了MySQL集群架构的数据一致性。虽然它们都属于持久化的保证,但是则重点不同。在执行更新语句过程,会记录redo log与binlog两块日志,以基本的事务为单位,redo log在事务执行过程中可以不断写入,而binlog只有在提交事务时才写入,所以redo log与binlog的写入时机不一

2021-08-15 18:26:40 678

转载 重学MySQL系列04-binlog

前言上篇详细聊了redo log(重做日志),但是在MySQL数据库中还有一种二进制日志叫binlog(归档日志)。redo log它是物理日志,记录内容是“在某个数据页上做了什么修改”,属于InnoDB存储引擎。而binlog是逻辑日志,记录内容是语句的原始逻辑,类似于“给ID=2这一行的c字段加1”,属于MySQL Server层。binlog不管用什么存储引擎,只要发生了表数据更新,都会产生binlog日志。那binlog到底是用来干嘛的?可以说MySQL数据库的数据备

2021-08-14 22:35:29 121

转载 重学MySQL系列03-redo log

前言说到MySQL,有两块日志一定绕不开,一个是InnoDB存储引擎的redo log(重做日志),另一个是MySQL Server层的binlog(归档日志)。只要是数据更新操作,就一定会涉及它们,今天就来聊聊redo log(重做日志)。redo logredo log(重做日志)是InnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。比如MySQL实例挂了或宕机了,重启时,InnoDB存储引擎会使用redo log恢复数据,保证数据的持久性与完整性。上一篇讲过.

2021-08-12 23:29:14 470

转载 重学MySQL系列02-InnoDB的内存组件

前言MySQL中执行一条SQL语句,相应表数据的读写都是由存储引擎去操作的(更新数据、查询数据)。在这个过程中,存储引擎需要决策几件事情 数据是从内存查,还是从硬盘查 数据是更新在内存,还是更新在硬盘 内存里的数据什么时候同步到硬盘 所以存储引擎会按照内部逻辑与内存、硬盘交互。我们可以按需选择存储引擎,比如常见的InnoDB、MyISAM、Memory等等。众多存储引擎中,InnoDB是最为常用的,从MySQL5.5.8版本开始,InnoDB是默...

2021-08-12 23:08:43 132

转载 重学MySQL系列01-揭开面纱,显露架构

前言目前大部分的后端开发人员对MySQL的理解可能停留在一个黑盒子阶段。对MySQL基本使用没什么问题,比如建库、建表、建索引,执行各种增删改查。所有很多后端开发人员眼中的MySQL如下图所示导致在实际工作中碰到MySQL中死锁异常、SQL性能太差、异常报错等问题时,直接百度搜索。然后跟着博客捣鼓就解决了,可能自己都没搞明白里面的原理。为了解决这种知其然而不知其所以然的问题,阿星的重学MySQL系列会带着大家去探索MySQL底层原理的方方面面。这样大家碰到MySQL的一些异常

2021-08-12 22:20:48 113

转载 Arthas 使用的四种方式

简介:Arthas 是阿里巴巴开源的 Java 诊断工具。让我们能够在线排查项目发生的问题。除了知道它的存在之外,我们也需要知道我们如何去安装使用它,以便于提高我们日常开发解决 BUG 的效率。作者 | Montos(一个在后端道路上摸爬滚打的内卷人)来源|阿里巴巴云原生公众号Arthas 是阿里巴巴开源的 Java 诊断工具。让我们能够在线排查项目发生的问题。除了知道它的存在之外,我们也需要知道我们如何去安装使用它,以便于提高我们日常开发解决 BUG 的效率。方案介绍方案一..

2021-07-22 13:49:10 846

转载 如何从0到1构建稳定、高性能Redis集群?

大家好,我是 Kaito。这篇文章我想和你聊一聊 Redis 的架构演化之路。现如今 Redis 变得越来越流行,几乎在很多项目中都要被用到,不知道你在使用 Redis 时,有没有思考过,Redis 到底是如何稳定、高性能地提供服务的?你也可以尝试回答一下以下这些问题: 我使用 Redis 的场景很简单,只使用单机版 Redis 会有什么问题吗? 我的 Redis 故障宕机了,数据丢失了怎么办?如何能保证我的业务应用不受影响? 为什么需要主从集群?它有什么优势?

2021-02-05 11:29:14 133

转载 Spring源码分析之如何解决循环依赖

spring-ioc中循环依赖的问题,也算是高频的面试问题了,今天跟大家一起来总结一下spring-ioc中是如何解决循环依赖的,相信大家是可以从这篇文章中彻底理解spring容器如何帮我们解决循环依赖,为了更好的理解spring-ioc如何解决循环依赖,大家可以先简单的了解spring-ioc中bean实例化的整个时序图。一、spring-ioc解决循环依赖的位置红色的标注框的地方,表示解决循环依赖的重点逻辑,后面会跟大家一起详细阅读,这里大家可以先有个印象二、spring-ioc解决循环

2020-12-15 15:44:10 567 1

转载 Redis高级客户端Lettuce详解

前提Lettuce是一个Redis的Java驱动包,初识她的时候是使用RedisTemplate的时候遇到点问题Debug到底层的一些源码,发现spring-data-redis的驱动包在某个版本之后替换为Lettuce。Lettuce翻译为生菜,没错,就是吃的那种生菜,所以它的Logo长这样:既然能被Spring生态所认可,Lettuce想必有过人之处,于是笔者花时间阅读她的官方文档,整理测试示例,写下这篇文章。编写本文时所使用的版本为Lettuce 5.1.8.RELEASE,SpringB

2020-11-18 23:57:57 9985

转载 MySQL性能优化(五):分区

由于公司使用的是mysql数据库,在存储hive表数据结构时,数量已经达到了千万级别,需要进行分区存储,对这方面在之前的hive外部分区表有些了解,mysql是不是相同的道理,这里我在同事那里看到一些文章,作为学习使用;一: 分区简介分区是根据一定的规则,数据库把一个表分解成多个更小的、更容易管理的部分。就访问数据库应用而言,逻辑上就只有一个表或者一个索引,但实际上这个表可能有N个物理分区对象组成,每个分区都是一个独立的对象,可以独立处理,可以作为表的一部分进行处理。分区对应用来说是完全透明的,不影

2020-06-10 22:08:23 2855

转载 MySQL性能优化(四):分表

为什么要分表 如果一个表的每条记录的内容很大,那么就需要更多的IO操作,如果字段值比较大,而使用频率相对比较低,可以将大字段移到另一张表中,当查询不查大字段的时候,这样就减少了I/O操作 如果一个表的数据量很少,那么查询就很快;如果表的数据量非常非常大,那么查询就变的比较慢;也就是表的数据量影响这查询的性能。 表中的数据本来就有独立性,例如分别记录各个地区的数据或者不同时期的数据,特别是有些数据常用,而另外一些数据不常用。 大表对DDL操作有一定的影响,如创建索引,添加字

2020-06-09 08:40:15 247 1

转载 MySQL性能优化(三):索引

索引原理如果一本新华字典没有目录,想要查找某个字,就不得不从第一页开始查找,一直找到最后一页(如果要找的字在最后一页),这个过程非常耗时,这种场景相当于数据库中的全表扫描的概念,也就是循环表中的每一条记录看看该记录是否满足条件,扫描次数为表的总记录数。新华字典中都有目录,都有查找方法(比如按拼音查找、按部首查找)。假如按拼音查找,我们根据拼音就能迅速定位到要找的汉字,而这个汉字后面还有这个汉字对应的页数,我们直接翻到该页就能找到,整个查找过程非常快,用时非常短。这个原理就是数据库中索引的原理。这里的

2020-06-04 22:31:45 182

转载 MySQL性能优化(二):优化数据库的设计

数据库设计数据库命名:数据库名的命名一般和项目的名称保持一致,不要随意的起名字。数据库编码: 尽量采用utf8mb4而不使用utf8。MySQL 的“utf8”实际上不是真正的UTF-8,真正的UTF-8是每个字符最多四个字节,而MySQL的“utf8”只支持每个字符最多三个字节。表的设计数据库表结构的设计是最基础也是最重要的,因为一旦数据库表设计完毕并投入使用,将来再进行修改就相对比较麻烦,特别数据量大时增加字段修改字段类型都比较麻烦,因此在进行数据库设计的时候一定要尽可能的考虑周到。.

2020-06-03 18:33:42 245

转载 MySQL性能优化(一):多种优化方式介绍

我们常见的数据库性能优化就是SQL语句优化,确实SQL优化是开发者接触到最多的也是最常有的优化手段。作为开发人员我们接触最多的也就是SQL语句的优化,SQL语句的优化除了调整SQL语句外更多的是通过添加索引来加速查询,表结构(合理设计字段、拆分字段到其它表、分表等)的优化也是我们优化的主要手段。SQL优化是我们学习的重点,我们将全面详细讲解以上SQL优化,但是SQL优化并不是数据库优化的全部,一般来说数据库性能优化可以通过以下几个方面来优化: 硬件:傻子都知道你买个好服务器比你现在用的笔记本数据.

2020-06-03 16:27:52 239 1

stencilset.json

activiti-explorer 官方demo示例 审批工作流引擎汉化文件。 使用步骤:将本文件替换到activiti-explorer源码\WEB-INF\classes下的原文件 (如果本文件汉化之后,设计器出现乱码,需要将本文件的中文全部转换成Unicode编码,可百度在线转换器)

2020-03-05

agilebpm-base-spring-boot.rar

基于activiti实现的审批工作流web端项目,包含基础的用户、组织、流程审批等多种功能,SpringBoot 版本。

2020-03-05

activiti-webapp-explorer.rar

基于activiti explorer官方源码可正常运行的demo,资源中包含源码和初始化sql两个文件

2020-03-05

java操作excel工具类

java操作excel工具类java操作excel工具类java操作excel工具类java操作excel工具类

2017-11-15

java解析json所需jar包

java解析json需要jar包。java解析json需要jar包。java解析json需要jar包。java解析json需要jar包。

2017-11-15

QRCode二维码生成

QRCode,java后台生成二维码,供用户扫描。QRCode,java后台生成二维码,供用户扫描。

2017-11-15

MySpringMVC最简单的demo

MySpringMVC最简单的demo

2017-02-11

apache-maven-2.2.1

apache-maven-2.2.1

2017-02-11

dbForge Studio for MySQL msql

dbForge Studio for MySQL msql

2017-02-11

c# 开发回合制小游戏

c# 开发回合制小游 多个怪物进行攻击 可以存档,读档。

2014-02-28

wpf做的一个简单托盘效果程序

wpf做的一个简单托盘效果程序 点击关闭程序后 会在电脑右下角的任务栏里出现一个托盘,双击后会再次显示该程序。

2013-08-07

简单的局域网通信,无服务器

一个简单的类似IPMessage的小工具,实现了局域网内的简单通信功能,并且以自身机器做服务器。

2013-08-07

j2ee.jar包

j2ee.jar包用于java发送邮件时和java ee5发生冲突。

2012-10-10

Oracle10g.chm

Oracle10g.chm 。英文版的帮助文档,学习中给了我很大帮助,你们也应该能用得到。

2012-08-15

JDK6API中文参考.chm

JDK6API中文参考.本人在学习的时候一直用这个文档,感觉真的很好用。推荐给大家。

2012-08-15

apache-tomcat-6.0.14

apache-tomcat-6.0.14

2012-08-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除