- 博客(46)
- 收藏
- 关注
原创 Mysql知识延展(七)MVCC多版本并发控制
MVCC简述MVCC(Mutil-Version Concurrency Control),就是多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库读写的并发访问。在Mysql的InnoDB引擎中就是指在已提交读(READ COMMITTD)和可重复读(REPEATABLE READ)这两种隔离级别下的事务对于SELECT操作会访问版本链中的记录的过程。这就使得...
2019-11-22 16:34:20 230
转载 Mysql知识延展(六)Undo Log日志
前言Undo log是InnoDB MVCC事务特性的重要组成部分,同时可以提供数据回滚。当我们对记录做了变更操作时就会产生undo记录,Undo记录默认被记录到系统表空间(ibdata)中,但从5.6开始,也可以使用独立的Undo 表空间。Undo记录中存储的是老版本数据,当一个旧的事务需要读取数据时,为了能读取到老版本的数据,需要顺着undo链找到满足其可见性的记录。当版本链很长时,通常可...
2019-11-22 11:10:38 404 1
原创 Mysql知识延展(四)InnoDB内存结构及特性
InnoDB特性介绍MySQL区别于其他数据库的最为重要的特点就是其插件式的表存储引擎。而在众多存储引擎中,InnoDB是最为常用的存储引擎。从MySQL5.5.8版本开始,InnoDB存储引擎是默认的存储引擎。InnoDB存储引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用。其特点是行锁设计、支持外键,并支持非锁定读,即默认读操作不会产生锁。 InnoDB通过使用多版本并发...
2019-11-21 15:39:18 376
转载 Mysql知识延展(五)Redo Log日志
前言InnoDB 有两块非常重要的日志,一个是undo log,它用来保证事务的原子性以及InnoDB的MVCC,另外一个就是是redo log,它用来保证事务的持久性。InnoDB记录了对数据文件的物理更改,并保证总是日志先行,也就是所谓的WAL,即在持久化数据文件前,保证之前的redo日志已经写到磁盘。LSN(log sequence number) 用于记录日志序号,它是一个不断递增的...
2019-11-21 15:33:18 355
原创 Mysql笔记(五)事务
事务介绍在MySQL中的事务是由存储引擎实现的,而且支持事务的存储引擎不多,我们主要讲解InnoDB存储引擎中的事务。事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。事务用来管理DDL、DML、DCL 操作,比如 insert,update,delete 语句,默认是自动提交的。事务四大特性(ACID)原子性(Atomicity)一个事务(t...
2019-10-30 13:51:50 102
原创 Mysql知识延展(三)索引条件下推
索引条件下推(ICP)ICP(index condition pushdown)是mysql利用索引(二级索引)元组和筛选字段在索引中的where条件从表中提取数据记录的一种优化操作。ICP的思想是:存储引擎在访问索引的时候检查筛选字段在索引中的where条件(pushed index condition,推送的索引条件),如果索引元组中的数据不满足推送的索引条件,那么就过滤掉该条数据记录。I...
2019-10-30 09:56:19 611
原创 Mysql知识延展(二)回表查询和索引覆盖
回表查询InnoDB有两大类索引:聚集索引(clustered index)InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索引:如果表定义了主键(PRIMARY KEY),则PK就是聚集索引如果表没有定义PK,则第一个唯一索引(UNIQUE KEY)列是聚集索引如果表也没有定义UK,则InnoDB会自动创建一个隐藏的row-id作为聚集索引...
2019-10-24 15:00:35 244
转载 Mysql知识延展(一)Explain分析
Explain简介本文主要讲述如何通过 explain命令获取 select 语句的执行计划,通过 explain 我们可以知道以下信息:表的读取顺序,数据读取操作的类型,哪些索引可以使用,哪些索引实际使用了,表之间的引用,每张表有多少行被优化器查询等信息。使用的表结构:DROP TABLE IF EXISTS `actor`;CREATE TABLE `actor` ( `id` i...
2019-10-22 17:01:32 228
原创 Mysql笔记(四)锁机制
Mysql锁介绍Mysql锁分类Mysql表级锁表级锁介绍MySQL的表级锁有两种表锁元数据锁(Meta Data Lock,MDL)MySQL实现的表级锁定的争用状态变量查询:mysql> show status like 'table_locks%';+-----------------------+--------+| Variable_name ...
2019-10-21 14:18:42 146
原创 Java证书库相关记录
查看JKS库的签名信息:keytool -v -list -keystore my.jks修改库密码:keytool -storepasswd -keystore android.keystore修改别名密码:keytool -keypasswd -keystore my.jks -alias myalias修改别名:keytool -changealias -keys...
2019-10-21 09:54:07 351
原创 Mysql笔记(三)索引使用场景及索引失效分析
索引使用场景哪些情况需要创建索引主键自动建立主键唯一索引频繁作为where查询条件的字段应该创建索引多表关联查询中,关联on两边的字段应该创建索引查询中排序的字段,应该创建有顺序的索引B+Tree利用组合索引完成索引覆盖避免回表统计或分组字段,应该创建索引哪些情况不需要创建索引表记录太少,因为索引也是有存储开销的频繁更新,因为索引也会更新维护查询字段使用频率不高为什...
2019-10-16 15:20:10 529
转载 Using temporary与Using filesort
通过explain查看sql的执行计划时,Extra字段的值往往会看到Using where; Using index; Using temporary; Using filesort,其中此次重点关注Using temporary; Using filesort。Using temporaryUsing temporary表示由于排序没有走索引、使用union、子查询连接查询、使用某些视图等...
2019-10-15 10:10:05 518
原创 Java基础系列:多线程(二)阻塞状态与控制
Java多线程的阻塞状态与控制上文已经提到Java阻塞的几种具体类型。下面分别看下引起Java线程阻塞的主要方法。等待加入:join()join —— 让一个线程等待另一个线程完成才继续执行。如A线程线程执行体中调用B线程的join()方法,则A线程被阻塞,知道B线程执行完为止,A才能得以继续执行。public class MyRunnable implements Runnable {...
2019-10-09 16:20:36 203
原创 Java基础系列:多线程(一)线程概念与创建
Java 多线程编程Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。这里定义和线程相关的另一个术语 - 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有...
2019-10-09 10:34:22 101
原创 Mysql笔记(二)索引介绍
索引介绍索引是什么官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引的优势和劣势优势:可以提高数据检索的效率,降低数据库的IO成本,类似于书的目录。 – 检索通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。 --排序被索引的列会自动进行排序,包括【单列索引】和【组合索引】,只是组...
2019-09-30 15:35:19 178
原创 Mysql笔记(一)架构介绍
逻辑架构逻辑架构图连接器(Connectors)系统管理和控制工具(Management Serveices & Utilities)连接池(Connection Pool)SQL Layer MySQL业务层SQL接口(SQL Interface)接收SQL DML DDL语句解析器(Parser)例如:select * from t1词法分析 分词...
2019-09-29 16:07:12 224
原创 IDEA常用的Setting设置及代码心得
设置固定代码行宽度设置代码行固定长度后,页面会新增长度分割线;可以继续设置写入时或者Format时自动换行,分别在Wrap on typing及Formatter Control中。提示不区分大小写在如图位置 取消勾选 Match case即可。习惯快捷键修改快捷键的替换可以根据如图位置通过名称或者快捷键组合搜索,然后进行替换。代码智能提示IDEA默认的智能提示Ctrl + ...
2019-09-23 15:29:11 6101
翻译 JVM结构理解与分析
JVM是什么JVM和HotSpot是什么关系?JVM是《JVM虚拟机规范》中提出来的规范Hotspot是使用JVM规范的商用产品,除此之外哎呦BEA Jrockit、IBM的J9也是JVM产品。JVM和Java语言的关系是什么?JVM和Java语言本身没有直接关系,JVM只和Class文件有关系。JVM和JDK、JRE的关系是什么?JVM的两种运行模式Client模式...
2019-09-17 14:45:24 149
转载 Java NIO:NIO概述
在上一篇博文中讲述了几种IO模型,现在我们开始进入Java NIO编程主题。NIO是Java 4里面提供的新的API,目的是用来解决传统IO的问题。本文下面分别从Java NIO的几个基础概念介绍起。 以下是本文的目录大纲: 一.NIO中的几个基础概念 二.Channel 三.Buffer 四.Selector 若有不正之处,请多多谅解并欢迎批评指正。
2017-02-27 14:10:26 237
转载 Java NIO:浅析I/O模型
也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Proactor)。
2017-02-27 14:09:29 227
转载 浅谈Java中的equals和==
==和equals方法之间的区别是什么?如果在初学Java的时候这个问题不弄清楚,就会导致自己在以后编写代码时出现一些低级的错误。今天就来一起了解一下==和equals方法的区别之处。一.关系操作符“==”到底比较的是什么?
2017-02-27 14:02:16 217
转载 浅谈Java中的对象和对象引用
在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然。今天我们就来一起了解一下对象和对象引用之间的区别和联系。
2017-02-27 14:01:01 249
转载 浅析Java中的访问权限控制
在Java中,提供了四种访问权限控制:默认访问权限(包访问权限),public,private以及protected。 下面就分别针对修饰类和修饰类的成员来讲述这四种访问权限控制。
2017-02-27 13:59:34 278
转载 浅谈Java中的hashcode方法
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法: 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。 为何Object类需要这样一个方法?它有什么作用呢?今天我们就来具体探讨一下hashCode方法。
2017-02-27 13:58:07 191
转载 JVM的内存区域划分
学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如何划分的呢?
2017-02-27 13:57:16 182
转载 Java异常处理和设计
在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然后给出在进行Java异常处理设计时的几个建议。
2017-02-27 13:55:54 268
转载 探秘Java中String、StringBuilder以及StringBuffer
相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String、StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景。下面是本文的目录大纲: 一.你了解String类吗? 二.深入理解String、StringBuffer、StringBuilder 三.不同场景下三个类的性能测试 四.常见的关于String、StringBuffer的面试题(辟谣网上流传的一些曲解S
2017-02-27 13:54:54 227
转载 深入剖析Java中的装箱和拆箱
自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱、拆箱相关的问题。 以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 二.装箱和拆箱是如何实现的 三.面试中相关的问题 若有不正之处,请谅解和批评指正,不胜感激。
2017-02-27 13:53:15 148
转载 Java 如何有效地避免OOM:善于利用软引用和弱引用
想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题。下面是本文的目录大纲: 一.了解 强引用、软引用、弱引用、虚引用的概念 二.进一步理解软引用和弱引用 三.如何利用软引用和弱引用解决OOM问题 如果有不正之处,希望谅解和批评指正,不胜感激。
2017-02-27 13:51:40 239
转载 Java输入输出流
Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。
2017-02-27 13:44:44 188
转载 Java垃圾回收机制
说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。顾名思义,垃圾回收就是释放垃圾占用的空间,那么在Java中,什么样的对象会被认定为“垃圾”?那么当一些对象被确定为垃圾之后,采用什么样的策略来进行回收(释放空间)?在目前的商业虚拟机中,有哪些典型的垃圾收集器?下面我们就来逐一探讨这些问题。以下是本文的目录大纲: 一.如何确定某个对象是“垃圾”? 二.典型
2017-02-27 13:39:57 164
转载 深入理解Java的接口和抽象类
对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 若有不正之处,请多多谅解并欢迎批评指正,不甚感激。
2017-02-27 13:38:44 145
转载 Java内部类详解
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正。
2017-02-27 13:37:38 153
转载 Java:类与继承
对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础。抽象、封装、继承、多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知识。首先,我们讲述一下与类的初始化相关的东西,然后再从几个方面阐述继承这一大特性。以下是本文的目录大纲: 一.你了解类吗? 二.你了解继承吗? 三.常见的面试笔试题 若有不正之处,请多多谅解并欢迎批评指正。
2017-02-27 13:35:30 153
转载 Java中的static关键字解析
static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题。以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正。
2017-02-27 13:32:16 365
转载 浅析Java中的final关键字
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正。
2017-02-27 12:57:03 256
转载 JVM运行机制及原理
一、Java虚拟机的生命周期: Java虚拟机的生命周期 一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机。 Java虚拟机总是开始于一个main()方法,这个方法必须是公有、返回void、直接受一个字符串数组。在程序执行时,你必须给Java虚拟机指明这个包换main
2016-11-10 11:41:05 574
原创 JavaMail通过发送SSL发送邮件
前言 JavaMail在之前使用过程中始终会遇见一个问题,发送不成功,https协议问题。因为mail发送默认是http。JavaMail现在包括一个特殊的SSL套接字工厂可以简化处理带有自签名证书的服务器。这类com.sun.mail.util.mailsslsocketfactory可以作为简单的套接字工厂,允许信任所有的主机或一个特定的主机。代码 MailSSLSocketFact
2016-06-29 17:05:26 1116
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人