自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BIO、NIO和AIO的区别

IO的方式主要分为三种:BIO、NIO、AIO在此之前,先要弄清几个概念:。同步:在发出一个调用时,在没有得到结果前,该调用就不返回,一旦返回就有结果。          同步IO是指用户进程请求IO操作以后通过等待或轮询的方式去查询IO操作是否就绪。。异步:在调用发出之后就直接返回,所以没有返回结果,换句话说,当一个异步调用发生之后,调用者不会立即得到结果,而是在调用发生之后,被...

2018-07-31 10:59:34 718

原创 剑指offer-----对称的二叉树

1、题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。2、思路树A的左节点等于树B的右结点,树A的右结点等于树B的左节点。刚开始根节点便是树A和树B的根节点,树A的根节点是根节点的左节点,树B的根节点是根节点的右节点,后来,树A的根节点是根节点的左节点,树B的根节点是根节点的右结点,依次类推。3、代码实现/*...

2018-07-16 00:04:31 137

原创 剑指offer-----把二叉树打印成多行

1、题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。2、思路设置3个变量,分别是cur,last,nlast,cur表示的是当前节点号,last表示的是当前行最后一个节点号,nlast表示的是下一行的最后一个节点号。当cur等于last时,换行,将last重新置为nlast,将nlast置为0,根据加入队列的节点数重新计算下一行的节点数,即nlast。重复上述步...

2018-07-15 23:34:58 159

原创 剑指offer-----树的子结构

1、题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)2、思路第一步:根据先序遍历,在树A中找到和树B的根节点的值一样的节点R;(函数一:利用递归)第二步:判断树A中以R为根节点的子树是不是包含和树B一样的结构。(函数二:利用递归)3、代码实现/**public class TreeNode {    int val = ...

2018-07-15 22:08:21 101

原创 java访问权限修饰符的区别

public > protected > default >private被其修饰的类、属性以及方法:public:可以被同一包中的类和不同包中的类访问。protected:可以被同一包中的所有类访问;能被该类的子类所访问,子类可以和父类不在一个包中。default:可以被同一包中的类访问。private:只能被该类访问,其他类不能访问。...

2018-07-15 12:42:36 300

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

1、题目描述输入两个链表,找出它们的第一个公共结点。2、思路(1)分别计算两个链表的长度。并计算出两个链表的长度差gap。(2)使节点较多的链表先走gap步。(3)使两个链表一起走,碰到的第一个相同的节点,便是它们的第一个公共节点。3、代码实现/*public class ListNode {    int val;    ListNode next = nu...

2018-07-13 21:53:27 126

原创 leetcode-----两个列表相加(Add Two Numbers)

1、问题描述Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 0 -> 8有两个单链表,代表两个非负数,每一个节点代表一个数位,数字是反向存储的,即第一个结点表示最低位,最后一个结点表示最高位。求两个数的相加和,并且以链表形式返回。 2、思路对两个链表都从第一个开始处理,进行相加,结果再除以10...

2018-07-13 20:36:22 485

原创 leetcode-----最大水容量

1、题目描述 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) ,这样an就是坐标轴上的最后一个元素。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。注意:你不能倾斜容器,n 至少是2。2、思路设置两个指针,一个指向数组的第一个元素,...

2018-07-13 19:40:41 1254

原创 剑指offer-----矩形覆盖

1、题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?2、思路(递归调用)若不存在小矩形,则返回0;若只存在一个小矩形,则只有一种方法,返回1;若存在两个小矩形,则存在两种方法,返回2;若小矩形的数量大于2,则若一个小矩形横着放,则这个小矩形下面的小矩形也必须横着放,没有其他的选择,所...

2018-07-13 14:33:18 141

原创 GC算法

1、标记清除算法算法分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。缺点:(1)产生大量不连续的内存碎片。(2)标记和清除的效率都不高。2、标记整理算法标记过程和“标记-清除”算法一样,但后续步骤不是直接对可回收对象进行清除,而是让all存活对象都向一端移动,然后直接清理掉端边界以外的内存。3、复制算法它将可用内存按照容量...

2018-07-12 12:35:02 130

原创 深入理解synchronized

1、synchronized的三种应用方式(1)修饰实例方法,作用于实例加锁,进入同步代码块前要获得当前实例的锁。 所谓的实例对象锁就是用synchronized修饰实例对象中的实例方法,注意是实例方法不包括静态方法,如下public class AccountingSync implements Runnable{ //共享资源(临界资源) static int...

2018-07-12 00:21:21 537

原创 树的遍历

1、树的前序遍历 /**     * 递归先序遍历     * */    public void preOrderRecursion(TreeNode node){        if(node==null) //如果结点为空则返回            return;        visit(node);//访问根节点        preOrderRecursion(no...

2018-07-09 22:55:45 113

原创 剑指offer-----链表中环的入口节点中

1、题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。2、思路(1)确定链表中是否包含环定义两个指针,同时从链表的头结点出发,一个指针一次走一步,另一个指针一次走两步,如果走得快的指针追上了走的慢的指针,那么链表就包含环;如果走的快的指针走到了链表的末尾都没有追上走的慢的指针,那么链表就不包含环。(2)确定环中节点的个数在(1)中,快慢两个指...

2018-07-09 21:53:36 136

原创 剑指offer-----删除链表中的重复节点

1、题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。2、思路  需要两个指针,一个指向前一个节点preNode,另一个指向当前节点node,如果遇到相等的节点,node向后移动,preNode不动,存下no...

2018-07-08 22:18:02 349

原创 别人的一些知识点总结

 java虚拟机什么时候会触发full gcSystem.gc()方法的调用 老年代空间不足 永生区空间不足(JVM规范中运行时数据区域中的方法区,在HotSpot虚拟机中又被习惯称为永生代或者永生区,Permanet Generation中存放的为一些class的信息、常量、静态变量等数据) GC时出现promotion failed和concurrent mode failu...

2018-07-08 09:46:19 161

原创 别人的面经

1、在面试最后,请向面试官问好这一个问题作者:边牧和大单链接:https://www.nowcoder.com/discuss/85303来源:牛客网大家都知道,不论是在技术面试还是HR面试时,经过长达半小时到一小时的“拷问”后,面试官通常会抛出一个看似“角色翻转”的问题,那就是“您对我们公司或职位还有什么问题要问我的吗?” 大多数面试者听到这句话,第一反应就是长舒一口气,想着这轮面试终于要结...

2018-07-07 16:34:01 358

原创 剑指offer-----表示数值的字符串

1、题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。2、思路A为最前面数值的整数部分,B为前

2018-07-07 00:03:41 202

原创 剑指offer-----重建二叉树

1、题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。2、思路前序遍历的第一个节点为根节点。根据中序遍历找到左、右子树。分别在左右子树上重复以上两个步骤。3、代码实现/** *...

2018-07-06 23:18:49 140

原创 leetcode45题:跳跃游戏II

1、题目描述给出一个非负整数数组,你最初定位在数组的第一个位置。数组中的每个元素代表你在那个位置可以跳跃的最大长度。   你的目标是使用最少的跳跃次数到达数组的最后一个位置。样例给出数组A = [2,3,1,1,4],最少到达数组最后一个位置的跳跃次数是2(从数组下标0跳一步到数组下标1,然后跳3步到数组的最后一个位置,一共跳跃2次)2、思想利用贪心策略,用三个变量i,...

2018-07-06 22:31:16 187

原创 关于SpringMVC

1、什么是SpringMVC?SpringMVC是spring的一个模块,基于MVC模式。M:   javabean、dao、serviceV:view ,即jspC:Controller2、SpringMVC的优点        1)它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件.并且和Spring提供的其他基础结构紧密集成。...

2018-07-04 21:55:12 121

原创 剑指offer-----正则表达式匹配

1、题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配2、思路当模式串中第二个字符是‘*’时,分三种情况: (1)模式串向...

2018-07-04 16:11:11 141

原创 剑指offer-----二叉搜索树的第k大节点

1、题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。2、思想中序遍历该二叉搜索树,很容易找出它的第k大节点。3、代码/*public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNo...

2018-07-04 13:36:36 228

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

1、题目描述在数组中的两个数字,如果前面一个数字大于后面的数字(两个数字可以是不连续的),则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%10000000072、思想先将数组分隔成子数组,统计出子数组内部的逆序对的数目,然后再统计出两个相邻子数组之间的逆序对的数目。在统计逆序对的过程中,还需要对数组进行排...

2018-07-04 12:52:21 150

原创 java中锁分类

1、自旋锁当线程请求锁时,发现锁已经被别的线程持有,那么该线程不放弃处理器的执行时间,进行自旋,观察自旋锁保持者是否已经释放了锁。JDK1.6中引入了自适应的自旋锁。自适应意味着自旋的时间不再固定,而是由前一次在同一锁上的自旋时间及锁的拥有者的状态决定。如果在同一个锁对象上,自旋等待刚刚成功获得锁,并且持有锁的线程正在运行中,那么虚拟机就会认为这次自旋也很有可能再次成功,进而它将允许自己自...

2018-07-03 15:05:21 512

原创 剑指offer-----和为s的两个数字

1、题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。2、思想方法一:笨方法,时间复杂度O(n^2)固定一个数字,分别判断该数字和后面的数字和是否等于S。方法二:好方法,时间复杂度O(n)定义两个指针,第一个指针指向数组的第一个数字(最小的),第二个指针指向数组的最后一个数字(最大的),如果两个数字的和大于s,则...

2018-07-03 00:50:43 142

原创 关于高并发秒杀项目

一、项目中遇到的难点1、当mapper中sql语句的输入参数不止一个时,需要指定参数具体是代表mapper中sql语句的哪个,好像fun(@param ("key") int key,@param("value") Object value),不然会出现参数绑定异常。例如报错,Parameter 'seckillId' not found,无法将接口函数中的参数值,传递到Mapper中sq...

2018-07-02 14:01:31 909

原创 剑指offer-----在排序数组中查找数字

1、题目描述统计一个数字在排序数组中出现的次数。2、思路方法一:直接遍历整个数组,与该数字做比对,统计它出现的次数。时间复杂度O(n)。方法二:先用二分查找找到第一个k的下标,再用二分查找找到最后一个下标,最后一个k小标减去第一个k下标并加1,就是k在数组中出现的次数。利用二分查找找到第一个k的下标的过程:拿中间的数字和k作比较,如果中间的是数字比k大,则在前一部分继续 查找第一个k;如果中间的数...

2018-07-01 22:51:28 426

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

1、题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。2、思路方法一:最笨的方法(可以修改输入的数组时可用)先对整个数组进行排序,然后取前k个数即可。方法二:利用类似于快速排序的方法(时间复杂度为 O(n),只有当我们可以修改输入的数组时可用)第一趟快速排序时,当返回的index大于k-1时,则...

2018-07-01 22:27:54 112

原创 剑指offer-----左旋转字符串

1、题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!2、思路第一步:将字符串分为两部分,第一部分使要左旋的字符,第二部分是剩余的字符。将这两部分的字符...

2018-07-01 21:02:56 127

原创 剑指offer-----翻转字符串

1、题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?2、思想第一步:翻转句子...

2018-07-01 20:45:44 869

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

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

2018-07-01 20:31:57 68

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

1、题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。2、思想(1)求所有可能出现在第一个位置的字符,即把第一个字符和后面所有的字符交换。(2)固定第一个字符,求后面所有字符的排列。这时候我们仍把后面的所有字符分为两部分:后面字符的第一个字符,以及这个...

2018-07-01 19:40:48 133

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

1、题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。2、思想如果一棵树只有一个节点,那么它的深度是1。如果根节点只有左子树而没有右子树,那么树的深度就应该是其左子树的深度加1。如果根节点只有右子树而没有左子树,那么树的深度就应该是其右子树的深度加1。如果根节点既有右子树又有左子树,那么树的深度就...

2018-07-01 19:32:13 163

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

1、题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。2、思想将整数数组转换为字符串数组,然后对整个字符串数组从小到大进行排序,排序规则是,对于数组中的两个数m和n,如果mn<nm,则m应该排在n的前面,否则,m应该排在n的后面。3、代码实现...

2018-07-01 19:16:21 90

转载 计算机网络体系结构

摘要:  我们知道TCP/IP与OSI最大的不同在于OSI是一个理论上的网络通信模型,而TCP/IP则是实际上的网络通信标准。在上篇《计算机网络体系结构综述(上)》的基础上,本文着重概述了两种典型的层次化网络体系机构 —— OSI七层参考体系结构和TCP/IP四层协议结构,并对每种体系结构中的各层就任务、功能、协议及与其他相似层的区别等几方面做了进一步得介绍,力求还原这些典型的网络体系结构的全貌。...

2018-07-01 14:54:36 6944

空空如也

空空如也

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

TA关注的人

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