自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

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

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。这道题我的第一思路这样的:可以先遍历这两个排序的链表,把遍历的结果存放在一个集合中,然后调用库函数Arrays.sort方法完成排序,之后,根据这些排好序的结果重新创建一个链表,即为合并之后但仍然排序的链表。但是这种思路需要额外的List和创建链表的空间开销,而且时间复杂度最快也是O

2016-08-31 10:38:10 254

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

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

2016-08-31 10:24:42 237

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

题目描述在一个字符串(1第一个只出现一次的字符是关键,就意味着需要所有的字符进行出现次数的统计,所以我们需要两次遍历:第一次获取每个字符出现的次数;第二次把第一个只出现一次的字符找到。在Java中可以通过HashMap实现对每个字符次数的统计,由于在题目中并没有我们限定使用Java提供的内置结构,所以可以通过这种办法迅速找到第一个只出现一次的字符。package com

2016-08-31 10:15:33 283

转载 Java常考面试题

什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。JDK和JRE的区别是什

2016-08-29 23:18:54 511

原创 并发容器之CopyOnWriteArrayList

原文链接:  http://ifeve.com/java-copy-on-write/    Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOn

2016-08-25 22:38:25 257

原创 Timer和TimerTask

下面内容转载自:  http://blog.csdn.net/xieyuooo/article/details/8607220  其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样:123456

2016-08-25 22:24:06 269

原创 【剑指offer】反转链表

输入一个链表,反转链表后,输出链表的所有元素。思路如下:在遍历链表上的每个节点的时候,就修改其指针,当遍历到最后一个结点的时候,整个链表就反转完成了。所以需要创建三个变量:一个是当前遍历的结点,一个是遍历结点的前一个结点,还有一个是当前遍历结点的下一个结点。package com.gpl.offer.jianzhi;import java.util.Stack;/*

2016-08-17 18:29:43 293

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

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。要求时间复杂度是O(1)。还是先说一下思路吧,因为每次方元素进栈的时候不能保证栈顶元素都是最小的,所以需要想办法使得栈顶元素始终是最小的元素,排序是一种思路,但是每次排序还设计重新出栈和入栈,想来应该不是这样的。一种思路是可以利用一个辅助栈,相当于是以空间换时间了。具体思路是:当入栈的新元素原先栈顶元素小的话就该元素放入

2016-08-17 18:24:24 334

转载 Callable、Future和FutureTask

Java并发编程:Callable、Future和FutureTask  在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。  这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。  如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。  而自从Jav

2016-08-17 12:18:21 294

原创 Thread和Runnable实现多线程的区别

Java中实现多线程有两种方法:继承Thread类、实现Runnable接口,在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势:    1、可以避免由于Java的单继承特性而带来的局限;    2、增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;    3、适合多个相同程序代码的线程区处理同一资

2016-08-17 12:13:41 384

转载 Java ConcurrentModificationException异常原因和解决方法

Java ConcurrentModificationException异常原因和解决方法  在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。  以下是本文目录大纲:  一.Concurr

2016-08-17 11:32:16 357

原创 【剑指offer】树的子结构

题目描述输入两颗二叉树A,B,判断B是不是A的子结构。这实际上二叉树遍历算法的一种应用,要在原二叉树中查找是否具有某课子树,只需要判断每个节点是否都在二叉树中是否出现即可。所以需要先判断头结点,只有头结点符合要求才继续比较其子树是否符合,一样依次从头结点开始比较直到其左右子树进行比较,如果都符合则说明B是A的子结构package com.gpl.offer.jianzh

2016-08-11 16:50:47 224

原创 【剑指offer】二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5仔细观察原二叉树与镜像二叉树,可以发现镜像二叉树实际上就是把每个节点的左右孩子结点进行了交换,比如在遍历到8这个节

2016-08-11 16:47:54 234

转载 浅析I/O模型:同步、异步、阻塞、非阻塞

也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Pr

2016-08-10 13:43:17 318

原创 【剑指offer】链表中的倒数第k个节点

题目描述输入一个链表,输出该链表中倒数第k个结点。举一个简单的例子,比如链表{1,2,3,4,5},如果要返回倒数第二个节点,也就是k=2,就相当于正数第5-k+1=4个节点,所以我们可以采用两次循环:一次循环得到链表的结点个数;另一次循环则是从链表中找到第n-k+1个节点。虽然是两次循环,但时间复杂度是O(n),需要注意的是,这里仍然需要对链表的边界条件进行判断pac

2016-08-09 17:22:09 291

原创 【剑指offer】调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。这道题第一思路自然是这样的:从头开始遍历这个数组,如果遇到偶数就把这个数之后的所有数往前移动一位,这样数组会留出一个空位,移动完毕之后把该偶数放到该空位即可。这样处理的话需要两次循环,一次是遍历,另一次是

2016-08-09 16:16:11 292

原创 【剑指offer】数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。首先,我觉得这道题思路应该很简单,幂的情况无非是三种:正数、0和负数。当幂是0的时候,直接返回1;当幂是负数的时候,需要先把其转化为正数来处理,然后返回其倒数就可以了;当幂是正数的时候,按照正常的计算方法就可以。实际上这道题主要考察时代码的健壮性——就是对幂的情况的

2016-08-08 18:21:42 218

原创 【剑指offer】二进制中1的个数

题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。比如输入9,9的二进制表示是1001,1的个数是2,所以输出2。这有一个重要结论:一个数与该数减一的结果进行与运算,会把该数右边(低位)第一个1变为0,而该位左边保持不变(高位)。可以举一个简单的例子进行证明:比如1100(对应十进制是12),减去1之后的结果是1011(也就是十进制的11),两个数进行与运算

2016-08-08 18:05:43 301

原创 【剑指offer】矩形覆盖问题

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?我们采用从能够简单到复杂的思路思考这个问题,当n=1的时候,只有一个2*1的矩形,所以只有一种方法,记为f(1)=1;当n=2的时候,是两个2*1的矩形,这时候具有两种方式去覆盖这个矩形了(这时候应该是一个正方形),一种是竖着放,一种是横着放,所以有两种方法,记为

2016-08-08 18:04:12 366

原创 【剑指offer】跳台阶问题

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。这种问题的思路一般是采用数学归纳法,当n=1时,只有一种跳法;当n=2时,青蛙可以一次跳2级,也可以一次跳两级,需要跳两次,所以有两种跳法;当n=3的时候,首先考虑一次跳1级的情况,由于有3级,所以还有2级没跳,而跳两级的跳法已经在前面n=2的情况中计算得到了;下面考虑一次跳2级的情况

2016-08-08 17:59:11 350

原创 计算机网络基础常考面试题

1、OSI,TCP/IP,五层协议的体系结构,以及各层协议答:OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。每一层的协议如下:物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器)数据链

2016-08-07 23:29:16 1523 3

转载 jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)

文章同步发布于github博客地址,阅读效果更佳,欢迎品尝运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole、大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,一方面工具的使用会有所限制,另一方面喜欢装X的我们,总喜欢在出现问题的时候在终端输入一些命令来解决。所

2016-08-07 23:23:59 601 7

转载 数据库索引优缺点

介绍:索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。例如这样一个查询:select * from table1 where id=10000。如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止;有了索引之后(必须是在ID这一列

2016-08-07 23:18:05 473 5

转载 MySQL 索引详解大全

什么是索引?1、索引  索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据。对于索引,会保存在额外的文件中。索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构。类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可。索引由数据库中一列或多列组合而成,其作用是提高对表中数据的查询速度索引的优点是可以提高检索数据的速

2016-08-07 23:03:50 368 3

转载 索引使用策略及优化

索引使用策略及优化MySQL的优化主要分为结构优化(Scheme optimization)和查询优化(Query optimization)。本章讨论的高性能索引策略主要属于结构优化范畴。本章的内容完全基于上文的理论基础,实际上一旦理解了索引背后的机制,那么选择高性能的策略就变成了纯粹的推理,并且可以理解这些策略背后的逻辑。示例数据库为了讨论索引策略,需要一个数据量不算小

2016-08-04 18:24:25 4351

原创 【剑指offer】斐波那契数列

题目描述斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。package com.gpl.offer.jianzhi;/** * Created by gpl on 2016/8/4. */public class Fibonacci { public int fibonacci(int n){ if(n == 0)

2016-08-04 13:38:14 936

原创 【剑指offer】用两个栈实现队列

题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。栈的特点是先进后出,而队列的特点是先进先出。问题是如何把栈的出栈和入栈与队列的入队和出队联系起来?因为现在只有栈,所以在实现的队列中,只能先往栈中添加元素,这点比较好理解;那么出队呢,由于先进去的元素被压在栈底,而如果是队列的话,必须是栈底的那个元素先出队。现在可以使用第二个栈,思路是把原先

2016-08-04 12:10:23 904

原创 Java 8的八个新特性

Java 8的八个新特性作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs1、接口的默认方法和静态方法Java 8在接口方面引入了新特性。Java 8版之前,接口只有抽象方法,而在Java 8,为接口新增了两种类型的方法。第一种是默认方法。此方法使用了default关键字修饰方法名。实际上接口不

2016-08-03 11:08:45 339

numpy.exe、scipy.exe

windows下numpy和scipy最简单的安装方法

2016-01-13

空空如也

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

TA关注的人

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