- 博客(10)
- 收藏
- 关注
原创 Mysql主从复制过程
当数据库负载过多,查询速度就会变慢,因此我们可以采用读写分离的策略.主服务器质性写的命令从服务器质性读的命令.为了保持主服务和从服务器的一致性,就需要定时将主服务器的数据同步到从服务器.几个重要的概念:很显然,从库与主库并不能保证强一致性,会有一定的延迟.为了尽可能减少延迟,可以让一台从服务不承担读的任务,而只当做备份用....
2022-06-14 23:53:07
123
1
原创 Mysql索引与性能优化
数据库中的数据是以页的形式存储在磁盘中的,当数据库查找数据时,就需要与磁盘进行一次io,众所周知,io是非常耗费时间的.当数据库中的数据较少时,我们或许感知不会很明显,但是当数据库中的数据达到百万级别以上时,我们就会感觉到查询会明显变慢.这时候就需要添加索引来提高我们的查询速度了.如果将数据库比作一本字典,那么索引就是目录.如果没有索引,我们需要一页一页去扫描数据,但是有了索引,我们就可以快速定位到数据所在的页.]在Innodb中,索引是以B+树的数据结构存储的.B+树是B+的升级版,在B+树中,每个节点有
2022-06-14 23:18:27
301
原创 Spring创建Bean的几种方式
最简单的配置,可以通过xml中bean标签来设置通过这种方法要在响应类中添加get和set方法,或者添加构造方法.或者可以通过静态工厂或者实例工厂方法通过这种方式配置要创建一个工厂类,然后将类和方法在xml文件中配置.最后我们还可以通过实现FactoryBean接口来创建一个bean,然后再xml中配置这个实现类即可.需要注意的是BeanFactory和FactoryBean完全不是一个概念.BeanFactory是spring容器最基本的接口,他提供了spring容器的最基本方法,但是不
2022-06-14 16:11:34
2524
1
原创 @SpringBootApplication注解
springboot我们都用过,他帮我们省去了繁杂的配置过程,让我们开箱即用,加快了我们的开发效率.那么springboot究竟是如何实现的呢?在任何一个springboot项目上,我们都会在启动类上加上@SpringBootApplication注解,并在main方法上写上了SpringBootApplication.run();项目就运行了.点开@SpringBootApplication注解会发现上面有7个注解前四个是元注解就不再多说了 ,@SpringBootConfiguration也就是包含了@
2022-06-14 14:56:40
128
原创 linux虚拟文件系统
虚拟文件系统(Virtual Filesystem)也称为虚拟文件转换系统(Virtual Filesystem Switch) VFS,是一个内核软件,用来处理与Unix标准文件系统相关的所有系统调用,可以为各种文件系统提供一个通用的结构.VFS支持的文件系统分为以下三种:为了将各种各样的文件系统转化为Linux进程能够访问的文件系统,就要先讲每个具体的文件系统转化为VFS的通用系统模型.通用系统模型分为:进程-----------文件对象---------目录项对象----------索引节点对象 --
2022-06-14 14:26:52
606
原创 中断和异常
中断(interrupt)通常是指一个事件,这个事件改变了cpu的执行顺序.与CPU芯片内外部硬件电路产生的电信号相对应.中断分为同步中断和异步中断.同步中断:cpu控制单元发出的,只有在一条指令终止执行后才会发出中断.异步中断:其他硬件设备按照cpu时钟信号产生的.在intel处理器中,把同步中断称为异常(exception),异步中断称为中断(interrupt),二者统称为中断信号.中断发生时,cpu必须放下正在执行的任务,并且切换到到一个新的动作.待新的动作执行完毕再执行当前任务.因此就需要保存当前
2022-06-14 09:02:55
97
原创 分布式一致性,CAP理论,Ruft算法
分布式系统中,每个节点都要将自己收到的请求发送给其他节点,其他节点再执行相同的操作,从而保证数据的一致性.但是由于时钟不同步,网络不可靠,节点崩溃等因素会导致数据的不一致.例如,A向 C发送a=a*2,B向C发送a=a+1;当a=0时,若A指令先到达,a最终是1,当b指令先到达,a最终是2.分布式系统有一个著名的CAP理论.C-----consistency:一致性性,所有节点的数据保持一致A------avalability:可用性,系统是可用的P------partitiion tolerance:当由
2022-06-13 23:01:44
253
原创 Redis持久化与复制
Redis是内存型数据库,运行期间数据都保存在内存中.因此,一旦断电,redis的数据就将丢失.所以需要定时地将内存中的数据持久化到磁盘中.Redis支持的持久化方式有两种,一种是RDB快照,一种是AOF命令.redis中的serverCorn()负责定时生成RDB文件.这个函数的逻辑是需要注意的是,rdbSaveBackground()函数也是BGSAVE命令的执行函数,他会进行fork系统调用,创建一个子进程 来完成rdb操作.而主进程继续提供服务.检查父进程中是否存在已经结束的子进程是调用wait3(
2022-06-13 22:28:22
48
原创 Redis的启动,事件和epoll网络通信
redis中server.c中的main函数负责启动Redis服务。启动流程大致如下:下面是initServer函数的主要流程:Redis是一个事件驱动的程序,主要处理文件事件和时间事件。Redis事件机制实现的代码在ae.h,ae.c中,分为ae抽象层和I/O复用层上下两层,其中ae抽象层基于I/O服用层。由于I/O复用涉及操作系统内核,不同的操作系统提供了不同的API接口,Redis也针对不同的操作系统做了适配。最常见的是Linux操作系统的epoll。aeEventLoop是Redis中的事件循环器,
2022-06-12 17:47:08
110
原创 Redis字符串编码
Redis是是以K-V的形式存储数据的.其中V的数据类型有多种,如String,List,Hash,Set,Zset等.而K的数据类型只是String.在Redis中,无论哪种数据类型,其抽象模型都是redisObject,其中:对于String数据类型,ptr指向的数据结构就是sds.sds是redis中自定义的数据结构,与c语言中字符串以空白字符结尾不同的是,sds对字符串类型做了扩展,有如下优点:sds结构体可以分为sdshdr5,sdshdr8,sdshdr16,sdshdr32,sdshdr
2022-06-11 00:23:10
543
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人