自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HTTP

一 、基础概念Web 基础WWW(World Wide Web)的三种技术:HTML、HTTP、URLHTML(HyperText Markup Language,超文本标记语言)HTTP(HyperText Transfer Protocol,超文本传输协议)RFC(Request for Comments,征求修正意见书),互联网的设计文档。URLURI(Uniform Resource In...

2018-05-23 12:00:51 641

转载 MySQL索引背后的数据结构及算法原理

摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第一部分主要从...

2018-05-02 23:43:13 161

原创 剑指offer-数组中只出现一次的数字

两个不相等的元素在位级表示上必定会有一位存在不同。将数组的所有元素异或得到的结果为不存在重复的两个元素异或的结果。diff &= -diff 得到出 diff 最右侧不为 0 的位,也就是不存在重复的两个元素在位级表示上最右侧不同的那一位,利用这一位就可以将两个元素区分开来。//num1,num2分别为长度为1的数组。传出参数//将num1[0],num2[0]设置为返回结果public ...

2018-04-29 11:10:54 154

转载 多线程面试题

作者:Java架构之路链接:https://www.nowcoder.com/discuss/77973?type=0&order=0&pos=15&page=1来源:牛客网1.现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问...

2018-04-27 00:15:11 954

转载 探索 ConcurrentHashMap 高并发性的实现机制

简介ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的源代码会涉及到散列算...

2018-04-19 20:08:56 143

转载 对象头

一:对象头HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。  HotSpot虚拟机的对象头(Object Header)包括两部分信息,第一部分用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等等,这部分数据的长度...

2018-04-18 22:56:45 292

转载 大佬们的面经

大家最想看的面经:(只写已确认结果的)1)蚂蚁金服(已拿offer)蚂蚁是楼主第一次的面试记录,所以不习惯,记录的不详尽,很抱歉。 一面:(45分钟26秒) 1- 介绍项目,问一堆项目的 2- tomcat缓存,聊下缓存的整体理解,知道多少种缓存 3- SQL优化思路,联合索引与底层树结构的映像关系,索引结构(B+、B-),为什么用这样的结构 4- spring的bean生命周期(详细)、作用域 ...

2018-04-18 00:39:49 533

原创 剑指offer-二叉树的深度

题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。解题思路public int TreeDepth(TreeNode root) { if (root == null) return 0; return 1 + Math.max(TreeDepth(root.left), TreeDepth(root.r...

2018-04-17 23:00:28 108

原创 剑指offer-数字在排序数组中出现的次数

题目描述统计一个数字在排序数组中出现的次数。可以用二分查找找出数字在数组的最左端和最右端,找最左端和最右端在方法实现上的区别主要在于对 nums[m] == K 的处理:找最左端令 h = m - 1找最右端令 l = m + 1public class Solution {    public int GetNumberOfK(int [] array , int k) {       int ...

2018-04-17 19:52:02 86

原创 数据库系统原理

一、事务概念事务指的是满足 ACID 特性的一系列操作。在数据库中,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。四大特性1. 原子性(Atomicity)事务被视为不可分割的最小单元,要么全部提交成功,要么全部失败回滚。2. 一致性(Consistency)事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。3. 隔离性(Isol...

2018-04-17 12:27:39 158

原创 数据库系统原理

一、事务概念事务指的是满足 ACID 特性的一系列操作。在数据库中,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。四大特性1. 原子性(Atomicity)事务被视为不可分割的最小单元,要么全部提交成功,要么全部失败回滚。2. 一致性(Consistency)事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。3. 隔离性(Isol...

2018-04-16 12:17:11 277

原创 剑指offer-两个链表的第一个公共结点

52. 两个链表的第一个公共结点题目描述解题思路设 A 的长度为 a + c,B 的长度为 b + c,其中 c 为尾部公共部分长度,可知 a + c + b = b + c + a。即第二次循环时将会出现在同一节点上当访问 A 链表的指针访问到链表尾部时,令它从链表 B 的头部重新开始访问链表 B;同样地,当访问 B 链表的指针访问到链表尾部时,令它从链表 A 的头部重新开始访问链表 A。这样就...

2018-04-14 16:39:40 182 1

原创 剑指offer-求数组中的逆序对的数量

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数 P。使用分路归并!!!!!解题思路private long cnt = 0;private int[] tmp; // 在这里创建辅助数组,而不是在 merge() 递归函数中创建public int InversePairs(int[] nums) { ...

2018-04-14 16:28:03 122

原创 剑指offer-第一个只出现一次的字符

最直观的解法是使用 HashMap 对出现次数进行统计,但是考虑到要统计的字符范围有限,因此可以使用整型数组代替 HashMap。public int FirstNotRepeatingChar(String str) { int[] cnts = new int[256]; for (int i = 0; i < str.length(); i++) cnts[str.ch...

2018-04-14 14:56:16 124

原创 剑指offer-丑数

题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路:只要将前一个丑数与2,3,5相乘,然后找到最小的就可以了。import java.util.*;import java.lang.Math;class Solution {public int GetUgly...

2018-04-14 14:45:14 96

原创 剑指offer-把数组排成最小的数

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。这个题目类似于字典序的问题,而在这里,是比较两个数字组合之后的大小。即对于数字a和b,它们之间的组合有ab和ba两种,要求我们打印出最小的一个组合数字出来; 如果ab小于ba,则a是在b的前面; 如果ab大于ba,...

2018-04-13 15:26:57 90

转载 剑指offer-整数中1出现的次数(从1到n整数中1出现的次数)

解题思路考虑将n的十进制的每一位单独拿出讨论,每一位的值记为weight。1) 个位从1到n,每增加1,weight就会加1,当weight加到9时,再加1又会回到0重新开始。那么weight从0-9的这种周期会出现多少次呢?这取决于n的高位是多少,看图: 以534为例,在从1增长到n的过程中,534的个位从0-9变化了53次,记为round。每一轮变化中,1在个位出现一次,所以一共出现了53次。...

2018-04-13 15:03:32 101

原创 剑指offer-最小的k个数

大小为 K 的最小堆复杂度:O(NlogK) + O(K)特别适合处理海量数据应该使用大顶堆来维护最小堆,而不能直接创建一个小顶堆并设置一个大小,企图让小顶堆中的元素都是最小元素。维护一个大小为 K 的最小堆过程如下:在添加一个元素之后,如果大顶堆的大小大于 K,那么需要将大顶堆的堆顶元素去除。public ArrayList<Integer> GetLeastNumbers_Solu...

2018-04-13 00:33:39 110

原创 剑指offer-字符串的排列

全排列递归算法思想:假设求abcdefg的全排列,先将第一个字母确定为a,然后求bcdefg的全排列就行了,然后将a与b交换位置,重复上述过程,直到a和g交换。 题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复)...

2018-04-12 19:40:43 134

原创 剑指offer- 二叉搜索树与双向链表

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路private TreeNode pre = null;private TreeNode head = null;public TreeNode Convert(TreeNode root) { if (root == null) return null;...

2018-04-12 16:19:06 147

原创 剑指offer-复杂链表的复制

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)第一步,在每个节点的后面插入复制的节点。第二步,对复制节点的 random 链接进行赋值。第三步,拆分。public RandomListNode Clone(RandomLis...

2018-04-09 17:28:08 166 1

转载 剑指offer-二叉树中和为某一值的路径

题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶结点所经过的所有的结点形成一条路径。如下图,输入二叉树和整数22,则打印出两条路径,第一条路径包含结点10,12,第二条路径包含的结点为10,5,7.一般的数据结构和算法的教材都没有介绍树的路径,因此对大多数应聘者而言,这是一个新概念,也就很难一下子想出完整的解题思路。这个时候我们可以试着从一...

2018-04-07 17:22:43 75

转载 剑指offer-二叉搜索树的后序遍历序列

题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是返回true,否则返回false。假设输入的数组的任意两个数字互不相同。解题思路: 要明确两个概念: 1. 二叉搜索树的特点,就是如果有对任何一个非空结点,假如左子树存在,那么左子树的中任意一个结点都比该根结点小,假如右子树存在,那么右子树中的任何一个节点都比该根结点大。2.二叉树的后序遍历,也就是 左→右→根 的遍...

2018-04-07 14:45:01 70

原创 剑指offer-从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。层序遍历直接想到的应该是基于队列实现。从上到下打印二叉树的规律:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列头部取出最早进入队列的结点,重复前面的打印操作,直到队列中所有的结点都被打印出来为止。import java.util.*;/**public class TreeNode { ...

2018-04-05 17:55:57 82

原创 剑指offer-栈的压入和弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路:(1)如果下一个弹出的数字刚好是栈顶数字,那么直接弹出;(2)如果一下个弹出的数字不...

2018-04-05 17:12:21 94

原创 剑指offer-包含min函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。思路关键在于辅助栈上,开始设置一个默认的最小值min = Integet.MAX。主栈每次push时,将node与min值比较,较小的值进入minstack。同时主栈每次pop时,minstack也pop。并将MinStack下个值赋予min。这样就能在最小元素出栈后找到次最小元素。import java.util.St...

2018-04-05 15:57:58 72

原创 剑指offer- 顺时针打印矩阵

题目描述下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10解题思路public ArrayList<Integer> printMatrix(int[][] matrix) { ArrayList<Integer> ret = new ArrayList<>(); ...

2018-04-04 19:22:51 108

原创 Java基础

一、关键字final1. 数据声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。对于基本类型,final 使数值不变;对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。final int x = 1;x = 2; // cannot assign value to final variable 'x'final A y ...

2018-04-03 14:08:14 358

原创 Java虚拟机

一、运行时数据区域程序计数器记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。虚拟机栈每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。可以通过 -Xss 这个虚拟机参数来指定一个程序的 Java 虚拟机栈内存大小:java -Xss=51...

2018-04-03 14:07:19 142

原创 Mysql

一、存储引擎InnoDBInnoDB 是 MySQL 默认的事务型存储引擎,只有在需要 InnoDB 不支持的特性时,才考虑使用其它存储引擎。采用 MVCC 来支持高并发,并且实现了四个标准的隔离级别,默认级别是可重复读。表是基于聚簇索引建立的,它对主键的查询性能有很高的提升。内部做了很多优化,包括从磁盘读取数据时采用的可预测性读、能够自动在内存中创建哈希索引以加速读操作的自适应哈希索引、能够加速...

2018-04-03 14:06:06 285

原创 计算机网络

一、概述网络的网络网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。ISP互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为主干 ISP、地区 ISP 和本地 ISP。互联网交换点 IXP ...

2018-04-03 00:19:11 1461

原创 剑指offer -二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5还是递归下面我们...

2018-04-02 11:35:43 125

原创 剑指offer-树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)还是递归!!!!!!!!步骤在树A中找到和B的根结点的值一样的结点R;判断树A中以R为根结点的子树是不是包含和树B一样的结构。/**public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = ...

2018-04-02 11:00:52 71

原创 剑指offer-合并两个排序的链表

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。比较简单,使用递归;/*public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/public class Solution {    p...

2018-04-02 00:49:12 102

原创 剑指offer- 连续子数组的最大和

HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少是1)...

2018-04-01 22:11:59 101

原创 剑指offer-反转链表

题目描述输入一个链表,反转链表后,输出链表的所有元素额,这题没什么好说的。。/*public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/public class Solution {    public ListNode Rev...

2018-04-01 18:28:40 60

转载 乐观锁和悲观锁的区别

  悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处...

2018-03-31 16:56:06 95

原创 算法

一、算法分析数学模型1. 近似N3/6-N2/2+N/3 ~ N3/6。使用 ~f(N) 来表示所有随着 N 的增大除以 f(N) 的结果趋近于 1 的函数。2. 增长数量级N3/6-N2/2+N/3 的增长数量级为 O(N3)。增长数量级将算法与它的实现隔离开来,一个算法的增长数量级为 O(N3) 与它是否用 Java 实现,是否运行于特定计算机上无关。3. 内循环执行最频繁的指令决定了程序执行...

2018-03-31 16:53:11 306

原创 剑指offer-链表中倒数第k个结点

求链表的倒数第K个节点:主要思路设置两个指针,刚开始都指向链表的第一个节点,第一个指针先走k-1步,然后两个一块走,直到第一个指针的下一位为nullptr,则第二个指针所指的位置就是倒数第k个节点。  在编程书上看见这个方法,自己画了个链表试了试果然是这样,但是这是个什么原理呢?  想了想是这样的耶。。。分为两种情况:1、倒数第k个位置在正数第k个位置之后,如图:      此种情况下:P_hea...

2018-03-31 16:42:37 238

原创 剑指0ffer-调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。可以使用冒泡法!public class Solution {    public void reOrderArray(int [] array) {        int dump;        for(int i=...

2018-03-31 14:55:28 125

空空如也

空空如也

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

TA关注的人

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