Java知识梳理(行业讲座培训课件模板)_第1页
Java知识梳理(行业讲座培训课件模板)_第2页
Java知识梳理(行业讲座培训课件模板)_第3页
Java知识梳理(行业讲座培训课件模板)_第4页
Java知识梳理(行业讲座培训课件模板)_第5页
已阅读5页,还剩199页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA知识梳理演讲人:XXX20XX-XX-XX(行业讲座培训课件)JAVA知识梳理演讲人:XXX20XX-XX-XX(行业讲座101项目中的架构(行业讲座培训课件)01项目中的架构(行业讲座培训课件)2项目中的架构前端运维持久层消息队列全局搜索(行业讲座培训课件)项目中的架构前端(行业讲座培训课件)3项目中的架构前端VueHtmlAjax(行业讲座培训课件)项目中的架构前端VueHtmlAjax(行业讲座培训课件)4项目中的架构运维nginx分发1Docker2Zookeeper(cp原则)3Redis4(行业讲座培训课件)项目中的架构运维nginx分发1Docker2Zookeep5持久化节点PERSISTENT持久化节点:所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点。否则不会因为创建该节点的客户端会话失效而消失。Zookeeper(cp原则)(行业讲座培训课件)持久化节点PERSISTENT持久化节点:所谓持久节点,6持久化有序节点PERSISTENT_SEQUENTIAL持久顺序节点:这类节点的基本特性和上面的节点类型是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。在创建节点的时候只需要传入节点“/test_”,这样之后,zookeeper自动会给”test_”后面补充数字。Zookeeper(cp原则)(行业讲座培训课件)持久化有序节点PERSISTENT_SEQUENTIAL持7临时节点EPHEMERAL临时节点:和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。这里还要注意一件事,就是当你客户端会话失效后,所产生的节点也不是一下子就消失了,也要过一段时间,大概是10秒以内,可以试一下,本机操作生成节点,在服务器端用命令来查看当前的节点数目,你会发现客户端已经stop,但是产生的节点还在。Zookeeper(cp原则)(行业讲座培训课件)临时节点EPHEMERAL临时节点:和持久节点不同的是,临8临时有序节点EPHEMERAL_SEQUENTIAL临时自动编号节点:此节点是属于临时节点,不过带有顺序,客户端会话结束节点就消失Zookeeper(cp原则)(行业讲座培训课件)临时有序节点EPHEMERAL_SEQUENTIAL临时自9设计目的https://0103最终一致性可靠性实时性02040506等待无关(wait-free)原子性顺序性(行业讲座培训课件)设计目的0103最终一致10最终一致性client无论连接到那一台server,那么它得到的都是同样的视图,这是zookeeper最重要的性能设计目的(行业讲座培训课件)最终一致性client无论连接到那一台server,那么它得11可靠性简单、健壮、良好的性能,如果一个消息被一台服务器接受,那么它将被所有的服务器接受设计目的(行业讲座培训课件)可靠性简单、健壮、良好的性能,如果一个消息被一台服务器接受,12实时性Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。设计目的实时性Zookeeper保证客户端将在一个时间间隔范围内获13等待无关(wait-free)慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待。设计目的(行业讲座培训课件)(行业讲座培训课件)等待无关(wait-free)慢的或者失效的client14原子性更新只有成功或者失败设计目的原子性更新只有成功或者失败设计目的15顺序性全局顺序偏序设计目的(行业讲座培训课件)顺序性全局顺序设计目的(行业讲座培训课件)16BCDEA1.string:最基本的数据类型,二进制安全的字符串,最大512M。2.list:按照添加顺序保持顺序的字符串列表。2^32-1(4GB)3.set:无序的字符串集合,不存在重复的元素。2^32-1(4GB)4.sortedset:已排序的字符串集合。2^32-1(4GB)5.hash:key-value对的一种集合。2^32-1(4GB)Redis支持数据格式(行业讲座培训课件)BCDEA1.string:最基本的数据类型,二进制安全的字17穿透Redis指的是:访问不存在的key,导致直接穿透缓存,访问数据库穿透Redis指的是:访问不存在的key,导致直接穿透缓存,18指的是:存在redis中的key同一时间失效,导致流量全部访问数据库限流,降级,本地ehcache缓存雪崩指的是:存在redis中的key同一时间失效,导致流量全部访19击穿缓存中的热点key突然失效,原本走缓存的大量请求直接打向了数据库,就好像在缓存中击穿了一个洞1.在被查询的数据上加互斥锁,这样其他的请求只能等待击穿20尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。比如你的web系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的key,而是应该把这个用户的所有信息存储到一张散列表里面.Redis内存优化尽可能使用散列表(hashes),散列表(是说散列表里面存储21项目中的架构持久层mybatis01druid02hibernate03项目中的架构持久层mybatis01druid02hiber22mybatis01手写sql灵活、高效能够很好的集成spring学习简单,半ORM框架优点02移植性差sql能力要求较高缺点03#{},是预处理,替换成?使用PreparedStatement替换值${}直接替换值#{}和${}的区别是什么?mybatis01手写sql灵活、高效优点02移植性差缺点023消息队列RabbitMq项目中的架构消息队列RabbitMq项目中的架构24全局搜索Elasticsearch(ES)项目中的架构全局搜索Elasticsearch(ES)项目中的架构2502多线程02多线程26多线程线程池volatile作用ReentrantLock与SynchronizedJUCAQS(AbstractQuenedSynchronizer)多线程线程池27多线程线程池SingleThreadExecutor1FixedThreadPool2CachedThreadPool3ScheduledThreadPool4多线程线程池SingleThreadExecutor1Fix28SingleThreadExecutor这个线程池只有一个核心线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行SingleThreadExecutor这个线程池29FixedThreadPool固定线程池:只有核心线程。每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小。线程池的大小一旦达到最大值就会保持不变,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程。FixedThreadPool固定线程池:只有核心30CachedThreadPool无边界线程池,会回收空闲的的线程,任务增加时也会新建线程(数量由JVM指定),通常用于短任务CachedThreadPool无边界线程池,会回收空闲的31核心线程池固定,大小无限的线程池。ScheduledThreadPool核心线程池固定,大小无限的线程32多线程volatile作用AB线程间可见:当一个线程修改值后,其它线程立即可见禁止指令重拍多线程volatile作用AB线程间可见:当一个线程修改值后33ReentrantLock与Synchronized特点:要么不占,要么独占多线程ReentrantLock与Synchronized特点:34reentrantLock优点等待可中断超时直接返回可判断是否有其他线程等待该锁可实现公平锁高竞争的情况下,性能维持常态缺点不可以自动释放锁,需要手动unlockreentrantLock优点35synchronized优点JVM底层实现,异常可自动释放锁低竞争的情况下,性能比renntrantLock要好缺点高竞争的情况下,性能下降比较快synchronized优点36多线程JUCCyclicBarrier02Semaphor03CountDownLatch01多线程JUCCyclicBarrier02Semaphor37CountDownLatch阻塞当前线程,等所有的线程都处理后,在运行CountDownLatch阻塞当前线程,等所有的线程都处理38循环栅栏:主要调用await方法,每调用一次减一,计数为0的时候,解除阻塞;CyclicBarrier循环栅栏:主要调用await方法,每调用一次减一,计数为039限制同一时间,访问资源的线程数量;aquire获取许可,release释放许可Semaphor限制同一时间,访问资源的线程数量;aquire获取许可,40AQS(AbstractQuenedSynchronizer)构建同步锁的框架多线程AQS(AbstractQuenedSynchronizer4103数据库03数据库42数据库https://0103最左侧原则簇拥索引与非簇拥索引索引02040506innoDbMyISAM事务数据库0103最左侧原则43数据库设计范式数据库设计范式44最左侧原则针对复合索引,先使用复合索引最前面的索引(精确查找),直到范围查找数据库最左侧原则针对复合索引,先使用复合索引最前面的索引(精确查找45数据库簇拥索引与非簇拥索引簇拥索引:数据和索引放在一起非簇拥索引:数据与索引分开放数据库簇拥索引与非簇拥索引簇拥索引:数据和索引放在一起非簇拥46数据库索引hash索引01Btree索引02有序数组03数据库索引hash索引01Btree索引02有序数组0347hash索引对于哈希索引来说,底层的数据结构就是哈希表,因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;其余大部分场景,建议选择BTree索引;hash索引对于哈希索引来说,底层的数据结构就是哈希表,因此48Btree索引B树叶子节点存储多个元素(包含key和value)B+树叶子节点只存key,非叶子节点存储值;Btree索引B树49有序数组有序数组在等值查询和范围查询场景中的性能都非常优秀。用二分法就可以快速找到(时间复杂度为O(logN))。但是如果要往中间插入一条数据,则必须挪动后面的所有记录,成本较高。因此,有序数组只适用于静态存储引擎,即数据表一旦建立后不再会修改。有序数组有序数组在等值查询和范围查询场景中的性能都非常优秀。50数据库innoDb优点索引组织表存储方式索引使用的是B+树数据库innoDb优点索引组织表存储方式索引使用的是B+树51优点支持事务行级锁优点支持事务52存储方式共享表空间存储所有表的数据文件和索引文件都保存在一个表空间里,一个表空间可以有多个文件,通过innodb_data_file_path和innodb_data_home_dir参数设置共享表空间的位置和名字,一般共享表空间的名字叫ibdata1-n。多表空间存储以表名为文件名称存储存储方式共享表空间存储53数据库MyISAM优点缺点堆表数据库MyISAM优点缺点堆表54支持FULLTEXT类型的全文索引优点支持FULLTEXT类型的全文索引优点55缺点不支持事务不支持外键不支持行级锁(只支持表级锁)缺点不支持事务562堆表在磁盘存储上有三个文件,每个文件名以表名开头,扩展名指出文件类型.MYI用于存放表索引.MYD用于存放数据.frm用于存储表的定义2堆表在磁盘存储上有三个文件,每个文件名以表名开头,扩展名指57数据库事务ABCD原子性持久性一致性隔离性数据库事务ABCD原子性持久性一致性隔离性58未授权读取,也称脏读,在数据修改的时候允许读取授权读取,也称提交后读取可重复读取:禁止不可重复读取和脏读取,但是有时可能出现幻读数据。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。可以通过“共享读锁”和“排他写锁”实现。序列化:提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行。仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。幻读不可重复事务隔离未授权读取,也称脏读,在数据修改的时候允许读取事务隔离59事务隔离脏读事务隔离脏读60幻读针对多个数据事务隔离幻读针对多个数据事务隔离61不可重复针对单个数据事务隔离不可重复针对单个数据事务隔离62脏读读取了另一个事务未提交的数据事务隔离脏读读取了另一个事务未提交的数据事务隔离63数据库设计范式单击此处添加标题9,300Million第一范式:所有的字段都是最小的,不可拆分;例如高级职称可分为教授与副教授(不符合第一范式)第二范式:表中所有列都依赖于主键,也就是说一张表只描述一件事情第三范式:数据不能存在传递关系,例如:学号,班级就是属于传递单击此处输入你的正文,文字是您思想的提炼,为了最终演示发布的良好效果,请尽量言简意赅的阐述观点;根据需要可酌情增减文字,以便观者可以准确理解您所传达的信息。数据库设计范式单击此处添加标题9,300Million第一6404加密04加密65加密与解密都使用同一个秘钥,只有一个秘钥,称为私钥DES算法AES算法3DES算法对称加密加密与解密都使用同一个秘钥,只有一个秘钥,称为私钥DES66加密与解密使用不同的秘钥,公钥和私钥(互为解密)RSAECC非对称加密加密与解密使用不同的秘钥,公钥和私钥(互为解密)RSA非对称6705分布式架构05分布式架构68mysql分库分表CAPConsistency(一致性)Availability(可用性)Partitiontolerance(分区容错性)分布式架构mysql分库分表分布式架构6906虚拟机06虚拟机70虚拟机Native方法栈01程序计数器04堆02方法区05javajvm栈03垃圾回收算法06虚拟机Native方法栈01程序计数器04堆02方法区05j71程序计数器线程切换,CPU调度可以正确的回到原来的线程虚拟机程序计数器线程切换,CPU调度可以正确的回到原来的线程虚拟机72方法区类的信息,以及staticfinal变量虚拟机方法区类的信息,以及staticfinal变量虚拟机73虚拟机垃圾回收算法复制算法01标记清除02标记整理03虚拟机垃圾回收算法复制算法01标记清除02标记整理037407dubbo07dubbo75dubbo

dubbo7608集合类08集合类77集合类

集合类7809Spring09Spring79Spring事务的实现、传递性优点Bean设计模式Spring事务的实现、传递性80Spring优点1代码低侵入性2对象之间的依赖交于框架,降低耦合3支持主流框架,自成体系4提供AOP服务,更好的复用代码Spring优点1代码低侵入性2对象之间的依赖交于框架,降81优点代码低侵入性优点代码低侵入性82优点对象之间的依赖交于框架,降低耦合优点对象之间的依赖交于框架,降低耦合83优点支持主流框架,自成体系优点支持主流框架,自成体系84提供AOP服务,更好的复用代码JDK动态代理不支持普通类支持接口Cglib支持普通类支持接口提供AOP服务,更好的复用代码JDK动态代理Cglib85Bean生命周期SpringBean生命周期Spring86Bean生命周期2.属性依赖注入021.初始化Bean013.aware接口034.beanPostProcesser045.init初始化方法056.使用Bean06Bean生命周期2.属性依赖注入021.初始化Bean01387Bean生命周期7.销毁前方法8.销毁Bean生命周期7.销毁前方法8.销毁88Spring设计模式工厂模式01单例模式03代理模式02观察者模式04Spring设计模式工厂模式01单例模式03代理模式02观察89工厂模式BeanFactory代理模式Aop观察者模式定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新,如Spring中listener的实现--ApplicationListener。单例模式Bean默认为单例设计模式工厂模式BeanFactory代理模式Aop观察者模式定义对9010微服务10微服务91业务痛点,并发,迭代可以进行灰度发布,不影响使用数据库不会连表查询,如果过度偶尔则拆分不开拆分时机业务痛点,并发,迭代可以进行灰度发布,不影响使用拆分时机92拆分条件应用无状态微服务(行业讲座培训课件)拆分条件应用无状态微服务(行业讲座培训课件)9311排序算法,时间、空间复杂度(行业讲座培训课件)11排序算法,时间、空间复杂度(行业讲座培训课件)94logo排序算法,时间、空间复杂度logo排序算法,时间、空间复杂度9512类加载机制12类加载机制96类加载机制(行业讲座培训课件)类加载机制(行业讲座培训课件)9713IO流(行业讲座培训课件)13IO流(行业讲座培训课件)98IO流

(行业讲座培训课件)(行业讲座培训课件)IO流(行业讲座培训课件)(行业讲座培训课件)9914数据结构(行业讲座培训课件)14数据结构(行业讲座培训课件)100数据结构链表链表reverse二叉树(行业讲座培训课件)数据结构链表(行业讲座培训课件)101感谢聆听(行业讲座培训课件)感谢聆听(行业讲座培训课件)102JAVA知识梳理演讲人:XXX20XX-XX-XX(行业讲座培训课件)JAVA知识梳理演讲人:XXX20XX-XX-XX(行业讲座10301项目中的架构(行业讲座培训课件)01项目中的架构(行业讲座培训课件)104项目中的架构前端运维持久层消息队列全局搜索(行业讲座培训课件)项目中的架构前端(行业讲座培训课件)105项目中的架构前端VueHtmlAjax(行业讲座培训课件)项目中的架构前端VueHtmlAjax(行业讲座培训课件)106项目中的架构运维nginx分发1Docker2Zookeeper(cp原则)3Redis4(行业讲座培训课件)项目中的架构运维nginx分发1Docker2Zookeep107持久化节点PERSISTENT持久化节点:所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点。否则不会因为创建该节点的客户端会话失效而消失。Zookeeper(cp原则)(行业讲座培训课件)持久化节点PERSISTENT持久化节点:所谓持久节点,108持久化有序节点PERSISTENT_SEQUENTIAL持久顺序节点:这类节点的基本特性和上面的节点类型是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的范围是整型的最大值。在创建节点的时候只需要传入节点“/test_”,这样之后,zookeeper自动会给”test_”后面补充数字。Zookeeper(cp原则)(行业讲座培训课件)持久化有序节点PERSISTENT_SEQUENTIAL持109临时节点EPHEMERAL临时节点:和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。这里还要注意一件事,就是当你客户端会话失效后,所产生的节点也不是一下子就消失了,也要过一段时间,大概是10秒以内,可以试一下,本机操作生成节点,在服务器端用命令来查看当前的节点数目,你会发现客户端已经stop,但是产生的节点还在。Zookeeper(cp原则)(行业讲座培训课件)临时节点EPHEMERAL临时节点:和持久节点不同的是,临110临时有序节点EPHEMERAL_SEQUENTIAL临时自动编号节点:此节点是属于临时节点,不过带有顺序,客户端会话结束节点就消失Zookeeper(cp原则)(行业讲座培训课件)临时有序节点EPHEMERAL_SEQUENTIAL临时自111设计目的https://0103最终一致性可靠性实时性02040506等待无关(wait-free)原子性顺序性(行业讲座培训课件)设计目的0103最终一致112最终一致性client无论连接到那一台server,那么它得到的都是同样的视图,这是zookeeper最重要的性能设计目的(行业讲座培训课件)最终一致性client无论连接到那一台server,那么它得113可靠性简单、健壮、良好的性能,如果一个消息被一台服务器接受,那么它将被所有的服务器接受设计目的(行业讲座培训课件)可靠性简单、健壮、良好的性能,如果一个消息被一台服务器接受,114实时性Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。设计目的实时性Zookeeper保证客户端将在一个时间间隔范围内获115等待无关(wait-free)慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待。设计目的(行业讲座培训课件)(行业讲座培训课件)等待无关(wait-free)慢的或者失效的client116原子性更新只有成功或者失败设计目的原子性更新只有成功或者失败设计目的117顺序性全局顺序偏序设计目的(行业讲座培训课件)顺序性全局顺序设计目的(行业讲座培训课件)118BCDEA1.string:最基本的数据类型,二进制安全的字符串,最大512M。2.list:按照添加顺序保持顺序的字符串列表。2^32-1(4GB)3.set:无序的字符串集合,不存在重复的元素。2^32-1(4GB)4.sortedset:已排序的字符串集合。2^32-1(4GB)5.hash:key-value对的一种集合。2^32-1(4GB)Redis支持数据格式(行业讲座培训课件)BCDEA1.string:最基本的数据类型,二进制安全的字119穿透Redis指的是:访问不存在的key,导致直接穿透缓存,访问数据库穿透Redis指的是:访问不存在的key,导致直接穿透缓存,120指的是:存在redis中的key同一时间失效,导致流量全部访问数据库限流,降级,本地ehcache缓存雪崩指的是:存在redis中的key同一时间失效,导致流量全部访121击穿缓存中的热点key突然失效,原本走缓存的大量请求直接打向了数据库,就好像在缓存中击穿了一个洞1.在被查询的数据上加互斥锁,这样其他的请求只能等待击穿122尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。比如你的web系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的key,而是应该把这个用户的所有信息存储到一张散列表里面.Redis内存优化尽可能使用散列表(hashes),散列表(是说散列表里面存储123项目中的架构持久层mybatis01druid02hibernate03项目中的架构持久层mybatis01druid02hiber124mybatis01手写sql灵活、高效能够很好的集成spring学习简单,半ORM框架优点02移植性差sql能力要求较高缺点03#{},是预处理,替换成?使用PreparedStatement替换值${}直接替换值#{}和${}的区别是什么?mybatis01手写sql灵活、高效优点02移植性差缺点0125消息队列RabbitMq项目中的架构消息队列RabbitMq项目中的架构126全局搜索Elasticsearch(ES)项目中的架构全局搜索Elasticsearch(ES)项目中的架构12702多线程02多线程128多线程线程池volatile作用ReentrantLock与SynchronizedJUCAQS(AbstractQuenedSynchronizer)多线程线程池129多线程线程池SingleThreadExecutor1FixedThreadPool2CachedThreadPool3ScheduledThreadPool4多线程线程池SingleThreadExecutor1Fix130SingleThreadExecutor这个线程池只有一个核心线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行SingleThreadExecutor这个线程池131FixedThreadPool固定线程池:只有核心线程。每次提交一个任务就创建一个线程,直到线程达到线程池的最大大小。线程池的大小一旦达到最大值就会保持不变,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程。FixedThreadPool固定线程池:只有核心132CachedThreadPool无边界线程池,会回收空闲的的线程,任务增加时也会新建线程(数量由JVM指定),通常用于短任务CachedThreadPool无边界线程池,会回收空闲的133核心线程池固定,大小无限的线程池。ScheduledThreadPool核心线程池固定,大小无限的线程134多线程volatile作用AB线程间可见:当一个线程修改值后,其它线程立即可见禁止指令重拍多线程volatile作用AB线程间可见:当一个线程修改值后135ReentrantLock与Synchronized特点:要么不占,要么独占多线程ReentrantLock与Synchronized特点:136reentrantLock优点等待可中断超时直接返回可判断是否有其他线程等待该锁可实现公平锁高竞争的情况下,性能维持常态缺点不可以自动释放锁,需要手动unlockreentrantLock优点137synchronized优点JVM底层实现,异常可自动释放锁低竞争的情况下,性能比renntrantLock要好缺点高竞争的情况下,性能下降比较快synchronized优点138多线程JUCCyclicBarrier02Semaphor03CountDownLatch01多线程JUCCyclicBarrier02Semaphor139CountDownLatch阻塞当前线程,等所有的线程都处理后,在运行CountDownLatch阻塞当前线程,等所有的线程都处理140循环栅栏:主要调用await方法,每调用一次减一,计数为0的时候,解除阻塞;CyclicBarrier循环栅栏:主要调用await方法,每调用一次减一,计数为0141限制同一时间,访问资源的线程数量;aquire获取许可,release释放许可Semaphor限制同一时间,访问资源的线程数量;aquire获取许可,142AQS(AbstractQuenedSynchronizer)构建同步锁的框架多线程AQS(AbstractQuenedSynchronizer14303数据库03数据库144数据库https://0103最左侧原则簇拥索引与非簇拥索引索引02040506innoDbMyISAM事务数据库0103最左侧原则145数据库设计范式数据库设计范式146最左侧原则针对复合索引,先使用复合索引最前面的索引(精确查找),直到范围查找数据库最左侧原则针对复合索引,先使用复合索引最前面的索引(精确查找147数据库簇拥索引与非簇拥索引簇拥索引:数据和索引放在一起非簇拥索引:数据与索引分开放数据库簇拥索引与非簇拥索引簇拥索引:数据和索引放在一起非簇拥148数据库索引hash索引01Btree索引02有序数组03数据库索引hash索引01Btree索引02有序数组03149hash索引对于哈希索引来说,底层的数据结构就是哈希表,因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;其余大部分场景,建议选择BTree索引;hash索引对于哈希索引来说,底层的数据结构就是哈希表,因此150Btree索引B树叶子节点存储多个元素(包含key和value)B+树叶子节点只存key,非叶子节点存储值;Btree索引B树151有序数组有序数组在等值查询和范围查询场景中的性能都非常优秀。用二分法就可以快速找到(时间复杂度为O(logN))。但是如果要往中间插入一条数据,则必须挪动后面的所有记录,成本较高。因此,有序数组只适用于静态存储引擎,即数据表一旦建立后不再会修改。有序数组有序数组在等值查询和范围查询场景中的性能都非常优秀。152数据库innoDb优点索引组织表存储方式索引使用的是B+树数据库innoDb优点索引组织表存储方式索引使用的是B+树153优点支持事务行级锁优点支持事务154存储方式共享表空间存储所有表的数据文件和索引文件都保存在一个表空间里,一个表空间可以有多个文件,通过innodb_data_file_path和innodb_data_home_dir参数设置共享表空间的位置和名字,一般共享表空间的名字叫ibdata1-n。多表空间存储以表名为文件名称存储存储方式共享表空间存储155数据库MyISAM优点缺点堆表数据库MyISAM优点缺点堆表156支持FULLTEXT类型的全文索引优点支持FULLTEXT类型的全文索引优点157缺点不支持事务不支持外键不支持行级锁(只支持表级锁)缺点不支持事务1582堆表在磁盘存储上有三个文件,每个文件名以表名开头,扩展名指出文件类型.MYI用于存放表索引.MYD用于存放数据.frm用于存储表的定义2堆表在磁盘存储上有三个文件,每个文件名以表名开头,扩展名指159数据库事务ABCD原子性持久性一致性隔离性数据库事务ABCD原子性持久性一致性隔离性160未授权读取,也称脏读,在数据修改的时候允许读取授权读取,也称提交后读取可重复读取:禁止不可重复读取和脏读取,但是有时可能出现幻读数据。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。可以通过“共享读锁”和“排他写锁”实现。序列化:提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行。仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。幻读不可重复事务隔离未授权读取,也称脏读,在数据修改的时候允许读取事务隔离161事务隔离脏读事务隔离脏读162幻读针对多个数据事务隔离幻读针对多个数据事务隔离163不可重复针对单个数据事务隔离不可重复针对单个数据事务隔离164脏读读取了另一个事务未提交的数据事务隔离脏读读取了另一个事务未提交的数据事务隔离165数据库设计范式单击此处添加标题9,300Million第一范式:所有的字段都是最小的,不可拆分;例如高级职称可分为教授与副教授(不符合第一范式)第二范式:表中所有列都依赖于主键,也就是说一张表只描述一件事情第三范式:数据不能存在传递关系,例如:学号,班级就是属于传递单击此处输入你的正文,文字是您思想的提炼,为了最终演示发布的良好效果,请尽量言简意赅的阐述观点;根据需要可酌情增减文字,以便观者可以准确理解您所传达的信息。数据库设计范式单击此处添加标题9,300Million第一16604加密04加密167加密与解密都使用同一个秘钥,只有一个秘钥,称为私钥DES算法AES算法3DES算法对称加密加密与解密都使用同一个秘钥,只有一个秘钥,称为私钥DES168加密与解密使用不同的秘钥,公钥和私钥(互为解密)RSAECC非对称加密加密与解密使用不同的秘钥,公钥和私钥(互为解密)RSA非对称16905分布式架构05分布式架构170mysql分库分表CAPConsistency(一致性)Availability(可用性)Partitiontolerance(分区容错性)分布式架构mysql分库分表分布式架构17106虚拟机06虚拟机172虚拟机Native方法栈01程序计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论