视图概述 视图(View)是一种虚拟存在的表。视图并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。视图相对于普通的表的优势主要包括以下几项:简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经
索引概述MySQL官方定义:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。如下图所示 :左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快
存储引擎概述和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎。存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 。存储引擎是基于表的,而不是基于库的。所以存储引擎也可被称为表类型。Oracle,SqlServer等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应引擎,
Mysql的体系结构概览整个MySQL Server由以下组成Connection Pool : 连接池组件Management Services & Utilities : 管理服务和工具组件SQL Interface : SQL接口组件Parser : 查询分析器组件Optimizer : 优化器组件Caches & Buffers : 缓冲池组件Pluggable Stora
概述Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行
JUC三大辅助类计数器(CountDownLatch)CountDownLatch类可以设置一个计数器,然后通过countDown方法来进行减 1 的操作,使用await方法等待计数器不大于 0 ,然后继续执行await方法之后的语句。CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞,其它线程调用countDown方法会将计数器减1(调用countD
线程间通信的模型有两种:共享内存消息传递通信模型模拟场景两个线程,一个线程对当前数值加 1,另一个线程对当前数值减1,要求用线程间通信synchronized方案/** * synchronized方案 */ public class CommunicatBySync { //加减对象 volatile关键字实现线程交替加减 private volatile int numb
集合的线程安全线程安全与线程不安全的集合ArrayList(线程不安全) -- Vector(线程安全):ArrayList与Vector区别HashMap(线程不安全) -- HashTable (线程安全):HashMap与HashTable区别Vector和HashTable都是synchronized关键字实现,效率较低ArrayList与Vector区别ArrayList是最常用的Lis
概述进程与线程 进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程
Class文件格式采用类似C语言结构体的伪结构来存储数据,这种结构只有两种数据类型:无符号数和表。——《Java虚拟机规范》Class字节码文件结构Class文件是一组以8字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在class文件中,中间没有任何分隔符,这使得class文件中存储的内容几乎是全部程序运行的程序。Class文件数据类型无符号数属于基本数据类型,主要可以用来描述数字、索
GC分类与性能指标垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。垃圾收集器分类按线程数串行垃圾回收器并行垃圾回收器按工作模式并发垃圾回收器独占垃圾回收器按碎片处理压缩式垃圾回收器非压缩式垃圾回收器内存区间年轻代垃圾回收器老年代垃圾回
垃圾回收分为两个阶段:标记阶段和清除阶段。在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,这个过程称为垃圾标记阶段。当成功区分出内存中存活对象和死亡对象后,GC接下来的任务就是执行垃圾回收,释放掉无用对象所占用的内存空间,这个过程称之为清除阶段。
System.gc()在默认情况下,调用system.gc()或 Runtime.getRuntime().gc(),会显式触发Major GC,同时对新生代和老年代进行回收,尝试释放被丢弃对象占用的内存。然而system.gc() 调用附带一个免责声明,无法保证对垃圾收集器的调用(不能确保立即生效)。JVM实现者可以通过system.gc() 调用来决定JVM的GC行为。而一般情况下,垃圾回收应
直接内存(Direct Memory):不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。直接内存是在Java堆外的、直接向系统申请的内存区间。来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存,通常,访问直接内存的速度会优于Java堆。即读写性能高。因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。Java的NIO库允许Java程序
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号