自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

转载 数据库中的存储过程与函数的区别和联系

存储过程与函数的区别与联系

2020-10-25 22:21:04 1442

原创 高频排序算法

1.冒泡排序冒泡排序是一种交换排序(相邻元素两两比较)。算法思想:冒泡排序重复地走访过要排序的数列,一次比较相邻的两个元素,如果它们的顺序不符合次序要求就交换它们的位置。走访数列的工作是重复地进行直到没有再需要交换的元素时,就说明该数列已经排序完成。假设一个数组中有N个元素,要求按照升序排序。(1)如果采用从后往前比较的方法,则最小值率先出现在数组的头角标位上。//假设数组一共有N个元素,要求按照升序排序 //冒泡排序1(如果是从后往前比较,则最小值率先出现在数组的头角标位上) public

2020-08-12 18:05:30 294

原创 设计模式的六大原则

一、单一职责原则思想:一个方法只负责一件事情。描述:一个类或者一个方法只负责一个职责,各个职责的程序改动,不影响其他程序。优点:降低类和类的耦合,提高可读性,增加可维护性和可扩展性,降低可变性的风险。二、里氏替换原则思想:可以在任何使用基类的地方使用其子类,完美的替换基类。描述:子类可以扩展父类的功能,但不能改变父类原有的功能;子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法;子类中可以增加自己特有的方法。优点:增加程序的健壮性,即使增加了子类,原有的子类还可以继续运行,互不影响。三.

2020-07-08 11:29:48 760

转载 ThreadLocal的原理

ThreadLocal的原理

2020-07-08 10:17:22 154

原创 synchronized的实现原理

在多线程并发编程中,synchronized一直是元老级角色,很多人称呼它为重量级锁。但是在Java SE 1.6之后为了减少获得锁和释放锁的带来的性能消耗而对其进行了各种优化,例如引入了偏向锁和轻量级锁,使得有些情况下synchronized也不那么重了。利用synchronized实现同步的基础是Java中的每一个对象都可以作为锁即同步监视器(对象如同锁),主要有以下三种方式:(1)对于普通同步方法(非静态同步方法),锁是this关键字表示本类对象的引用(当前实例对象);(2)对于静态同步方法,锁

2020-07-03 21:53:56 202

原创 数据库的优化问题

1. 如何定位并优化慢查询sql?(1)根据慢日志(将show_query_log打开ON,超过long_query_time的sql将被记录在慢日志show_query_log_file中)定位捕获慢查询sql;set global show_query_log = on;set global long_query_time = 1;(2)使用explain等工具分析该条sql(一般将explain放在select的前面,用来描述MySQL如何执行查询操作,成功返回结果及需要执行的行数,帮助我们分

2020-05-31 12:33:36 254

原创 数据库之聚簇索引和非聚簇索引的区别

聚簇索引(密集索引)文件中的每个搜索码值都对应一个索引值(叶子节点不仅保存了键值,还保存了位于同一行记录中的其他列的信息),因为聚簇索引决定了表的物理排列顺序,而一个表只能有一种物理排列顺序,所以一个表只能创建一个聚簇索引。非聚簇索引(稀疏索引)文件只为索引码的某些值建立索引项(叶子节点仅保存了键值以及该行数据的地址)。数据库必须要有索引,没有索引则检索过程变成了顺序查找(全表扫描),O(n)的时间复杂度几乎是不能忍受的。我们非常容易想象出一个只有单关键字组成的表如何使用B+树进行索引,只要将这个关键字

2020-05-30 21:31:43 1152

原创 数据库之索引的数据结构

索引的数据结构主要有以下几种:(1)生成索引,建立二叉查找树/二叉排序树/二叉搜索树进行二分查找;(2)平衡二叉树,红黑树;(3)生成索引,建立B-Tree(B树/B-树)结构进行查找;(4)生成索引,建立B±Tree(B+树)结构进行查找;(5)生成索引,建立Hash结构进行查找;(6)生成索引,建立位图结构进行查找。1、 二叉查找树二叉查找树的特点:(1)二叉查找树的每一个节点的值都大于其左子树上所有节点的值,且小于其右子树上所有节点的值;(2)二叉查找树的每一个节点的左、右子树也

2020-05-26 19:37:02 3650

原创 Java反射机制及其应用

反射机制是Java语言中的一个非常重要的特性,它允许程序在运行时进行自我检查,同时也允许对其内部的成员进行操作。由于反射机制能够实现在运行时对类进行装载,因此能够增加程序的灵活性,但是不恰当地使用反射机制,也会严重影响系统的性能。具体而言,反射机制提供的功能主要有:得到一个对象所属的类;获取一个类的所有成员变量和方法;在运行时创建对象;在运行时调用对象的方法。一、什么是反射?在运行时,对于任意一个类,都能够获取到这个类的所有成员属性和方法;对于任意一个对象,都能够调用这个对象的任意属性和方法(包括pu

2020-05-24 17:00:49 255

原创 《剑指Offer》(59)队列的最大值以及双端队列接口Deque

1.双端队列Java中实际上提供了java.util.Stack类(该类继承自Vector类)来实现栈结构(后入先出LIFO),但官方目前已不推荐使用(因为Vector虽然与ArrayList的底层同是基于数组结构,但是Vector是线程安全的,而ArrayList不是线程安全的),而是使用java.util.Deque双端队列来实现队列(先入先出FIFO)与栈(后入先出LIFO)的各种需求。j...

2020-04-14 21:36:58 377

原创 Java中的StringBuffer和StringBuilder类

Java中的StringBuffer和StringBuilder类StringBuffer和StringBuilder类都是字符串缓冲区,当需要对字符串进行修改时,可以使用StringBuffer和StringBuilder类。与String不同的是,StringBuffer和StringBuilder类需要创建对象来使用并且该对象能够被多次修改而不会产生新的未使用的对象。StringBuf...

2020-04-10 17:16:07 97

原创 Map集合的常用方法

Map集合的常用方法:返回值类型方法Vput(K key,V value):向Map集合中添加键值对Vget(K key):通过键获取对应的值booleanisEmpty():判断集合是否为空Vremove(K key):通过键将键值对删除voidclear():清空Map集合中所有的键值对Vput(K key,V value):向M...

2020-04-07 17:13:09 385

原创 MySQL的存储引擎:InnoDB和MyISAM的区别

1.InnoDB和MyISAM的区别(1)InnoDB支持事务,而MyISAM不支持事务。InnoDB会将每一条SQL语句都默认封装成一个事务,自动提交,这样会影响速度,因此建议将多条SQL语句放在begin和commit之间组成一个事务。(2)InnoDB支持外键,而MyISAM不支持外键。将一个包含外键的InnoDB表转换成MyISAM会失败。(3)InnoDB是聚簇索引,使用B+树作为...

2020-04-07 11:18:20 525

原创 你不可不知道的String类的常用方法

String类位于java.lang包中,Java使用String类来创建一个字符串变量,字符串变量属于对象。String对象一旦创建后不能被修改。即使我们给该String变量s重新赋值后,也是生成了一个新的String对象来保存了新的内容,原来旧的String对象依然存在于内存中,只是此时s已经不再指向它了,由于已经没有引用指向它了,那么这个旧对象就会成为垃圾对象,在某一个特定时刻由Java虚拟...

2020-04-05 15:59:37 150

原创 Java的反射机制

Java的反射机制基本定义:(1)对于任意一个类,都能知道该类的任意属性和方法;(2)对于任意一个对象,都能调用该对象的任意属性和方法。常用方式:(1)获取Class对象;(2)实例化一个对象;(3)获取一个类的父类或者接口(单继承,多实现);(4)获取类中的所有属性;(5)获取类中的所有方法;(6)调用类中的任意一个方法。更进一步理解,可参看下面的Java代码:在这里插入...

2020-03-26 19:58:09 79

原创 Hashtable,HashMap,ConcurrentHashMap的原理和区别

(1)HashMap不是线程安全的,不支持并发操作,没有同步方法。ConcurrentHashMap是线程安全的,支持并发操作,通过继承 ReentrantLock(JDK1.7的重入锁)/CAS和synchronized(JDK1.8的内置锁)来进行加锁(分段锁),每次需要加锁的操作锁住的是一个 segment,这样只要保证每个 segment 是线程安全的,也就实现了全局的线程安全。(2)J...

2020-03-26 11:11:17 553

原创 《剑指Offer》(43)1~n整数中1出现的次数

题目:输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数。例如:输入12,1~12这些整数中包含1的数字有1、10、11和12,1一共出现了5次。设N = abcde ,其中abcde分别为十进制中各位上的数字。如果要计算百位上1出现的次数,它要受到3个方面的影响:百位上的数字(c),百位以下(低位)的数字(de),百位以上(高位)的数字(ab)。① 如果百位上数字为0,百位上可...

2020-03-24 17:45:24 123

原创 《剑指Offer》(41)数流中的中位数及Java的优先队列PriorityQueue

题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。Java中的优先队列PriorityQueuePriorityQueue基于优先级堆,它实现了Queue接口,可以对集合中的元素进行排序,在JDK1.5中引入。该集合内可以存放基本数据类型对象包装类(如...

2020-03-23 16:36:29 213

原创 Java实现堆排序

堆排序及图解对于一个长度为n的数组R(n)={r[0],r[1],…,r[n-1]}。大顶堆(最大堆):r(i)>=r(2i+1)且r(i)>=r(2i+2),堆顶元素必为最大值,用于升序;小顶堆(最小堆):r(i)<=r(2i+1)且r(i)<=r(2i+2),堆顶元素必为最小值,用于降序。堆排序主要包括两个过程:(1)构建堆(从最后一个非叶子节点开始,即序号为n...

2020-03-22 17:57:00 129

原创 计算机网络总结

1. OSI网络模型与TCP/IP网络模型(1)OSI网络模型OSI七层模型功能TCP/IP协议族应用层文件传输,文件服务,电子邮件,虚拟终端FTP(文件传输协议),DNS(域名系统),HTTP(超文本传输协议)等表示层代码转换,数据加密,数据格式化没有协议会话层建立或解除与别的接点的联系没有协议传输层提供端对端的接口TCP(传输控制协议...

2020-03-22 12:37:29 519

原创 String,StringBuffer,StringBuilder的区别

1. String:String对象一旦创建,其值是不能修改的(因为String类是被final关键字修饰的类),如果要修改,则会重新开辟内存空间来存储修改后的对象,即修改了String类的引用(生成一个新的String对象,但是原String对象是没有被改变的)。这是因为String类的底层是通过数组来存值的,数组长度不可变这一特性导致了上述问题。如果我们在实际开发中需要对某个字符串进行频繁地...

2020-03-18 09:00:41 68

转载 SQL经典题目

常见SQL面试题补充:SQL的top N问题SQL行列转换问题

2020-03-16 18:47:56 109

原创 SQL中的内联结和外联结

内联结:当需要查询2张表中同时存在的数据(返回在两张表中所有正确关联的行);左外联结或右外联结:需要查询2张表中在一张表存在,而在另一张表不存在的数据。内联结的查询结果都是满足连接条件的元组。但有时我们也希望输出那些不满足联结条件的元组信息。比如,我们想知道每个学生的选课情况,包括已经选课的学生(这部分学生的学号在学生表中有,在选课表中也有,是满足联结条件的),也包括没有选课的学生(这部分学生...

2020-03-16 17:41:59 1742

转载 数据库的脏读,幻读,不可重复读

数据库的脏读,幻读,不可重复读

2020-03-15 11:31:29 168

转载 动态演示揭秘“红黑树”,简单易懂!

红黑树,超强动静图详解,简单易懂

2020-03-12 21:46:35 173

原创 《剑指Offer》(33)二叉搜索树的后序遍历序列

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果,如果是则返回true,否则返回false。假设输入的数组的任意2个数字互不相同。二叉搜索树(二叉排序树,二叉查找树)的特点:(1)如果左子树不空,那么左子树上所有结点的值都小于它的根结点的值;(2)如果右子树不空,那么右子树上所有结点的值都大于它的根结点的值;(3)左、右子树也分别是二叉搜索树。在后序遍历(左子树-&gt...

2020-03-12 19:12:16 76

原创 《剑指Offer》(32)之字形打印二叉树

题目:请实现一个函数按照之字形顺序打印二叉树,即第一层按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三层再按照从左到右的顺序打印,其他行以此类推。使用两个栈(后入先出)来实现。import java.util.ArrayList;import java.util.*;/*public class TreeNode//节点类{ int val = 0;//根节点的值 ...

2020-03-12 17:02:30 63

原创 《剑指Offer》(32)分行从上到下打印二叉树

题目:从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。从上到下按层打印二叉树,其实就是二叉树的层序遍历,也可以说是广度优先遍历(DFS)二叉树。当遇到广度优先遍历一个有向图或者一棵二叉树时,首先要想到的就是队列(先入先出)这种数据结构。首先遍历二叉树的树根,并将根结点添加到队列尾部,然后从队列头部取出一个节点打印出来,并将其左、右子结点依次添加到队列尾部。接下来,每次...

2020-03-07 19:36:53 113

原创 Java虚拟机(JVM)原理与特性

Java虚拟机的主要作用是从软件层面上屏蔽不同操作系统在底层硬件与指令上的区别,使得Java语言具有很好的跨平台性。完整的Java虚拟机由三部分组成:类装载子系统、运行时数据区(Java内存区域)、字节码执行引擎。一、Java内存区域与内存溢出异常1. 运行时数据区域(Java内存模型)1.1 程序计数器(Program Counter Register)程序计数器是当前线程所执行的字节码...

2020-03-07 17:23:16 616

原创 《剑指Offer》(31)栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序,假设压入栈的所有数字不相等,且压入序列和弹出序列的长度相等。通过ArrayList类来模拟堆栈工作原理,其中ArrayList类的常用方法如下:返回值类型方法booleanadd(E e):将指定元素添加到集合的尾部Eremove(int index ):移除此集合中指定位置...

2020-03-04 20:13:06 98

原创 《剑指Offer》(27)二叉树的镜像

题目:请完成一个函数,输入一棵二叉树,该函数输出它的镜像。通过画图,我们可以很容易地发现,求解一棵二叉树的镜像,其实就是前序遍历(树根->左子树->右子树)其所有的非叶子结点,若遍历到的结点的左右子树均不为空,则交换其左右子树的位置。对二叉树这种数据结构熟悉的读者,自然知道可以用递归的方法去遍历,也可以用循环的方法去遍历。1.通过递归的方法/**public class Tr...

2020-03-02 18:38:07 119

原创 《剑指Offer》(26)树的子结构

题目:输入两棵二叉树A和B,判断B是不是A的子结构(约定空树不是任何一棵树的子结构)。要查找树A中是否存在和树B结构一样的子树,可以分为2步来考虑:第一步,对树A进行层序遍历,在树A中找到和树B中的根结点的值相等的结点N;第二步,如果在树A中找到了和树B中的根结点的值相等的结点N,则继续判断树A中以结点N为根结点的子树是否包含和树B一样的结构,即判断树A中以结点N为根节点的左子结点的值和右子结点...

2020-03-01 17:47:28 83

原创 《剑指Offer》(24)反转链表

题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点考虑到如果将链表中某一个结点i的next指针指向它的前一个结点h,那么就会导致链表断裂,无法在链表中遍历到该结点的后一个结点j,因此我们需要定义一个指针提前记录下结点i的后一个结点j。这样,我们总共需要定义3个指针,分别指向当前结点i、当前结点的前一个结点h和当前结点的后一个结点j。同时,何为反转后链表的头结点呢?当然...

2020-02-29 19:47:19 70

原创 《剑指Offer》(23)链表中环的入口节点

#题目:如果一个链表中包含环,如何找出环的入口节点?链表问题是面试过程中经常会考察到的问题,这个问题其实内含2个小问题:1.如何判断一个链表中是否包含环;2.找出带环链表中环的入口点。当我们用1个指针遍历链表不能解决问题的时候,可以尝试用2个指针来遍历链表。可以让其中一个指针遍历的速度稍快一些(比如:让其中一个指针一次走2步,另一个指针一次走1步),也可以让其中一个指针在链表上先走若干步。...

2020-02-29 18:17:24 97

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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