-
MySQL存储引擎InnoDB与Myisam的区别
MySQL存储引擎InnoDB与Myisam的区别MyISAM存储引擎的特点: 表级锁、不支持事务和全文索引,适合一些CMS内容管理系统作为后台数据库使用,但是使用大并发、重负荷生产系统上,表锁结构的特性就显得力不从心。InnoDB存储引擎的特点是: 行级锁、事务安全(ACID兼容)、支持外键、不支持FULLTEXT类型的索引(5.6.4以后版本开始支持FULLTEXT类型的索引)。InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全存储引擎。InnoDB是为处理巨大量时拥...…
-
数据库索引
数据库索引的本质是一个排序的数据结构,以协助快速查询、更新数据库表中的数据,可以理解为一种特殊的目录,实现方式通常采用B树和B+树 上图展示了一种可能的索引方式,左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找在O(log2n)的复杂度内获取到相应数据。目前大部分数据库系统及文件系统...…
-
Java线程池
好处 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。 一些操作系统是有最大线程数量限制的。当运行的线程数量逼近这个值的时候,操作系统会变得不稳定,这也是我们要限制线程数量的原因。线程池的使用1.创建线程池通过ThreadPoolExecutor来创建一个...…
-
Java线程安全
线程安全:多线程访问同一段代码,不会产生不确定的结果举例: 比如一个ArrayList类,在添加一个元素的时候,它需要两步来完成: 1.在Item[size]的位置存放此元素 2.增大size的值 在单线程的情况下,如果size=0,添加一个元素后,此元素在位置0,而且size=1;而如果在多线程的情况下,比如运行两个线程,线程A先将元素存放在位置0,如果此时CPU调度下线程A暂停,线程B得到运行的机会,向ArrayList中添加元素,因为线程A未完成...…
-
二分查找
二分查找主要是解决在“一堆数中找出指定的数”这类问题。而想要应用二分查找,这“一堆数”必须满足以下特征: 存储在数列中 有序排列所以如果是用链表存储的,就无法再其上应用二分查找了二分查找的基本实现非递归算法:public static int binary_search(int arr[],int n ,int key){ int mid; int low = 0,high = n-1; while(low <= high){ mi...…
-
排序算法
源码链接冒泡排序通过与相邻元素的比较和交换来把小的数交换到最前面,时间复杂度为O(n^2),空间复杂度为O(1),与输入无关。实现代码:public class BubbleSort { public static void bubbleSort(int[] arr) { if(arr == null || arr.length == 0) return ; for(int i=0; i<arr.length-1; i+...…
-
最长不重复子串
问题描述:给定一个字符串,找出这个字符串中最长的不重复串。比如:对于字符串”abcba”,那么返回的结果应该是”abc”或者”cba”(返回一个即可);对于字符串”acbba”,返回的应是”acb”思路:利用HaspMap,map的key存储的是字符,value存储的是字符当前的位置,利用containsKey()方法检测是否有重复1、如果当前字符出现过并且index大于该字符上一次出现的index,那么将map中该字符对应的value值替换,上一次出现的字符的下一个字符到当前字符变为目前...…
-
转:[Network] 计算机网络基础知识总结
阅读目录1. 网络层次划分2. OSI七层网络模型3. IP地址4. 子网掩码及网络划分5. ARP/RARP协议6. 路由选择协议7. TCP/IP协议8. UDP协议 9. DNS协议10. NAT协议11. DHCP协议12. HTTP协议13. 一个举例 计算机网络学习的核心内容就是网络协议的学习。网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。因为不同用户的数据终端可能采取的字符集是不同的,两者需要进行通信,必须要在一定的标准上进行。一个很形象地比喻就...…
-
Markdown工具集
什么是 Markdown Markdown 是一种方便记忆、书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档:如您正在阅读的这篇文章。它使用简单的符号标记不同的标题,分割不同的段落,粗体 或者 斜体 某些文字. 很多产品的文档也是用markdown编写的,并且以“README.MD”的文件名保存在软件的目录下面。 一些基本语法标题 H1 :# Header 1 H2 :## Header ...…