分析数据库索引原理及其优化

一.概述 本文以Mysql数据库为研究对象,因为Mysql支持多存储引擎,每种存储引擎支持不同的索引,因此Mysql支持多种索引类型,本文以BTree为说明,Mysql经常用到的索引类型就是BTree。 二.常见的查询算法和数据结构 为什么要讲这个呢?因为之所以要建立索引就是为了建立一种数据结构,...

2019-03-24 13:03:47

阅读数 57

评论数 0

动态规划总结及Leetcode经典题目解答

动态规划 就是以一种新的角度对问题进行观察,将问题转变,能以递归或者递推的方式解决。为了达到最终的状态,需要依据之前的一个或者最优的几个结果,不管之前的状态是如何达到的。 1.通过拆分问题,定义状态和状态之间的关系,从而使问题以递归的形式解决 2.核心在于状态的定义和状态转移方程 状态转移方程 1...

2019-03-22 13:23:50

阅读数 70

评论数 0

贪心算法总结及LeetCode经典题目解答

贪心算法 贪心算法的定义: 在么一个阶段都选取当前阶段的最优选择,同时不考虑后续的决策影响。 贪心算法的要素: **·**贪心选择性质: 全局最优可以通过一系列的局部最优来求解 同时将问题通过一系列的局部最优得到了简化,同时进行求解。 **·**最优子结构: 原问题的最优解包含着子问题的最优解 这...

2019-03-22 12:57:21

阅读数 8

评论数 0

回溯算法详解及Leetcode经典例题解答

什么是回溯法? 在程序设计中,有相当一类求一组解,或求全部解或求最优解的问题,例如读者熟悉的八皇后问题,不是根据某种特定的计算法则,而是利用试探和回溯的搜索技术求解。回溯法也是设计递归过程的一种重要方法,它的求解过程实质上是一个先序遍历一棵"状态树"的过程,只是这棵树不是遍历前...

2019-03-21 18:10:12

阅读数 52

评论数 0

递归算法思想详解

我相信很多人在做leetcode中的关于树的问题时会很惊讶别人用递归写出来的简洁高效的算法,但是如果自己写就很难实现,那么就赶紧来弄清楚递归到底是什么,怎么来实现呢? 递归是什么? 有人应该都会脱口而出递归就是自己调用自己。。。 在知乎搜索的时候看到了一个特别完美的答案: 递归:你打开面前这扇门,...

2019-03-21 11:47:50

阅读数 25

评论数 0

最大堆最小堆数组实现

数组实现最小堆 假设堆中节点从下标0开始,那么从最后一个非叶子节点开始,从右向左,从下向上调整堆,每次比较父节点和他的左右两个子节点,若大于他们,则和较小的子节点交换。 代码实现 public class Test{ //堆调整 public static void initHeap(int ...

2019-03-19 09:15:16

阅读数 27

评论数 0

找出数组中每一个元素右边第一个大于它的数

解题思路: 整体思路有点像映射的关系,如果存在对应元素的比它第一个大的数,就在一个数组对应位置存在这个大值,具体思路如下: 利用栈,从左到右依次压入数组中元素的索引,每次判断待压入的下一个元素是否大于占栈顶索引对应的元素,若大于,就将元素存到一个新的数组res中,将栈顶索引出栈,对应位置就是栈中刚...

2019-03-18 22:06:33

阅读数 88

评论数 0

循环有序数组的二分查找

问题:请实现以下函数int indexOf(int [] array ,int key) ,给定一个循环有序的数组,请在这个数组中找到指定元素,找到的话返回下标,没找到返回-1。: 解决:首先,使用二分查找找到数组的 “临界点”,临界点满足两个情况: array[left] < a...

2019-03-18 17:34:35

阅读数 13

评论数 0

Leetcode215数组中的第k大的数

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: ...

2019-03-18 16:21:28

阅读数 12

评论数 0

二分查找算法及其优化

二分查找是一种非常高效的算法,又称折半查找,下面用递归和非递归实现 二分查找的思想 有序序列,每次取序列的中间元素和目标元素进行对比,每次缩小一半的查找范围,这样直到找到为止。 二分查找图示说明:(图片来自百度) 使用递归实现 public static int recursionBinarySe...

2019-03-18 15:11:20

阅读数 87

评论数 0

经典七大排序算法逐一攻破

排序算法说明 1.排序的定义:对一序列对象根据某个关键字排序 2.评价算法优劣的术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面; **不稳定:**如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; **内排序:**所有排序操作都在内存中完成; 外排序...

2019-03-18 14:19:58

阅读数 67

评论数 0

C++内存管理详解

一.C中的内存管理方式 在堆上创建空间 malloc申请空间需要自行free释放,还可以用calloc,realloc来申请,都要free进行释放,否则容易造成内存泄漏。 在栈上创建空间 编译器会自动在栈上动态开辟内存,用_alloc来开辟,并自主进行维护。 二.c++中的内存管理 2.1内存分配...

2019-03-18 11:17:12

阅读数 15

评论数 0

JavaI/O流重要方法及代码示例

再复习一下I/O流中类的继承关系 一.字节流 1.输入流:FileInputStream 2.输出流:FileOutputStream 示例代码 import java.io.FileInputStream; import java.io.FileNotFoundException; impor...

2019-03-18 08:55:29

阅读数 41

评论数 0

面向对象三大特性——多态

Java中的多态就是对象的多态,可以分为两种类型:引用多态和方法多态 一.引用多态 父类的引用可以指向本类对象 父类的引用可以指向子类的对象 让我们用代码来解释,先创建一个父类Animal和子类Dog,在主函数中书写如下 但是我们不能把子类的引用直接指向父类的对象,如下: 为什么不能呢?用通俗点...

2019-03-15 14:48:21

阅读数 13

评论数 0

Java虚拟机类的加载机制

一.类的生命周期 类的生命周期从类加载到虚拟机中内存,到卸载出内存为止。 二.类加载的过程 类加载的全过程:加载——验证——准备——解析——初始化 1.加载 类的加载阶段就是由类加载器负责根据类的全限定名来读取该类的二进制字节码文件到JVM中,并存储在方法区中,在堆区中生成该类jav...

2019-03-14 21:58:52

阅读数 68

评论数 0

HTTP和HTTPS通信原理

一.HTTP通信原理 直接用一张图完美的解释 客户端输入URL回车,DNS解析域名得到服务器的IP地址,服务器在80端口监听客户端请求,端口通过TCP/IP协议(可以通过Socket实现)建立连接。HTTP属于TCP/IP模型中的运用层协议,所以通信的过程其实是对应数据的入栈和出栈。 二.HTT...

2019-03-12 18:30:19

阅读数 18

评论数 0

全面学习JVM内存管理及GC机制(二)

一.虚拟机中的GC过程 1.1为什么要分代回收? 在一开始的时候,JVM的GC采用的就是标记-清除-压缩的算法进行回收内存,但是当分配的对象很多,对象的列表变大,扫描和移动的时间很长,反而内存回收会特别慢。然而,经过对java应用的分析,发现大部分对象的存活时间较短,下面的图可以看出java对...

2019-03-11 20:19:51

阅读数 17

评论数 0

理解HTTP协议

概述 在如今的互联网中,应用层的协议中重要的也是很容易理解的莫非Web的HTTP协议了,它叫做超文本传输协议(HyperText Transfer Protocol)。现在我将从HTTP协议的概念,特性,重要知识点和学习中常见的困惑问题来介绍HTTP协议。 一.理解什么是HTTP协议 1.HTTP...

2019-03-11 20:17:50

阅读数 15

评论数 0

全面学习JVM内存管理及GC机制(一)

一.为什么要学习这些? Java GC(Garbage Collection垃圾回收机制)是Java不同C++/C的主要主要区别之一,作为Java开发者,随着GC机制的日益完善,不需要编写内存回收和垃圾清理的代码,不必担心内存溢出或者内存泄漏,这样大大降低了程序员开发时的难度,但是任何事物都是有...

2019-03-09 22:09:16

阅读数 39

评论数 0

Java实现线程同步的五种方法

一.使用synchronized关键字 由于每个java对象都有一个内置锁,用synchronized修饰方法或者代码块时,内置锁会保护整个方法或代码块,要想执行这个方法或者代码块必须获得其内置锁,运行时会加上内置锁,当运行结束时,内置锁会打开。由于同步是一种高开销的工作,所以尽量减少同步的内容,...

2019-03-08 11:47:52

阅读数 16

评论数 0

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