`
Before_Morning
  • 浏览: 36830 次
文章分类
社区版块
存档分类
最新评论
文章列表
题目:求子数组的最大和 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为 O(n) 。 例如输入的数组为 1, -2, 3, 10, -4, 7, 2, -5 ,和最大的子数组为 3, 10, -4, 7, 2 ,因此输出为该子数组的和18 。 分析: 如果第一次遇见这样的题目,在时间复杂度为O(n)的条件下,似乎不能做到。而最容易想到的就是穷举法了,元素个数为1的子数组有n个,元素个数为2的子数组有n-1,……这样下去,明显不符合时间复杂度O(n)的要求。该怎么办呢?贪心 ...
设计包含min函数的栈: 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素; 要求函数min、push以及pop的时间复杂度都是O(1)。 分析: 要得到当前栈的最小元素,且时间复杂度为O(1),这不但要求知道当前栈中的最小元素值(或其所在位置),而且要知道次小元素,这样才能保证,如果当前栈顶元素为最小元素,被pop后,还能以O(1)的时间复杂度找到
题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树 10 / \ 6 14 / \ /  \ 4 8 12  16 转换成双向链表 4=6=8=10=12=14=16。 分析:本题是微软面试100题的第一题,由于树本身定义就属于递归式定义,所以很多与树相关的题目都是用递归的思路来解决,本题亦是如此。下面我们用两种不同的递归思路来分析。
分代垃圾回收流程示意
为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。 在Java程序运行的过程中,会产生大量的对象,其中有些对象是与业务信息相关,比如Http请求中的Session对象、线程、Socket连接,这类对象跟业务直接挂钩,因此生命周期比较长。但是还有一些对象,主要是程序运行过程中生成的临时变量,这些对象生命周期会比较短,比如:String对象,由于其不变类的特性,系统会产生大量的这些对象,有些对象甚至只用一次即可回收。 试想,在不进行对象存活时间区分的情况下 ...
如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序 ...
可以从不同的的角度去划分垃圾回收算法: 按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 标记-清除(Mark-Sweep):
Java对象的大小 基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句: Object ob = new Object(); 这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte+8byte。4byte是上面部分所说的Java栈中保存引用的所需要的空间。而那8byte则是Java堆中对象的信息。因为所有的Java非基本类型的对象都需要默认继承Object对象,因此不论什么样的 ...
数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。 基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAddress 引用类型包括:类类型,接口类型和数组。 堆与栈 堆和栈是程序运行的关键,很有必要把他们的关系说清楚。
使用xml方式整合三大框架 首先,新建一个web工程项目,整合的项目基本结构如下:(没有加入view层) 第二步,导入ss2h整合所需要的jar包,如下如: 第三步,编写持久层 1.定义好po类 package com.jjyy.ss2h.po; /** * @author Administrator--jiangyu--2014-9-12下午8:00:45 * po类 */ publicclass User { private Integer id; private String name; private
nio是new io的简称,从jdk1.4就被引入了。现在的jdk已经到了1.6了,可以说不是什么新东西了。但其中的一些思想值得我来研究。这两天,我研究了下其中的套接字部分,有一些心得,在此分享。 首先先分析下:为什么要nio套接字? nio的主要作用就是用来解决速度差异的。举个例子:计算机处理的速度,和用户按键盘的速度。这两者的速度相差悬殊。如果按照经典的方法:一个用户设定一个线程,专门等待用户的输入,无形中就造成了严重的资源浪费:每一个线程都需要珍贵的cpu时间片,由于速度差异造成了在这个交互线程中的cpu都用来等待。 nio套接字是怎么做到的? 其实,其中的思想很简单:轮询。一 ...
1. 基本概念 IO是主存和外部设备(硬盘、终端和网络等)拷贝数据的过程。IO是操作系统的底层功能实现,底层通过I/O指令进行完成。 所有语言运行时系统提供执行I/O较高级别的工具。(c的printf scanf,java的面向对象封装) 2.Java 标准io回顾 Java标准IO类库是io面向对象的一种抽象。基于本地方法的底层实现,我们无须关注底层实现。 InputStream\OutputStream(字节流):一次传送一个字节。 Reader\Writer(字符流):一次一个字符。 3.nio简介 nio是java New IO的简称,在jdk1.4里提供的新api。S ...
1.介绍概念 2.环境的搭建 3.一个hello world 的demo。 4.框架的解析 一.什么是MINA 首先,Mina(Multipurpose Infrastructure Networked Applications)是Apache开源组织下的一个高性能的网络应用框架,它可以帮助用户开发高性能和高扩展性的网络应用程序,它提供了一个抽象的、事件驱动的异步API,使得Java NIO(非阻塞式)在各种传输协议下快速高效开发。 总之:我们简单理解它是一个封装底层IO操作,提供高级操作API的通讯框架! 二.环境的搭建 第一步:导入jar包 第二步:日志文件的配 ...
原文连接:http://www.blogjava.net/michaellee/archive/2009/11/24/303432.html 延迟加载: 延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对 ...
随意在博客中逛逛,看到了这篇文章,仔细的读了下,觉得写得挺好的,挺专业的,所以贴过来了。供大家分享吧。 原文链接:点击打开链接 最近我研究技术的一个重点是java的多线程开发,在我早期学习java的时候,很多书上把java的多线程开发标榜为简单易用,这个简单易用是以C语言作为参照的,不过我也没有使用过C语言开发过多线程,我只知道我学习java多线程开发是很难的,直到现在写这篇文章的时候,虽然我对java多线程里的API比以前熟悉更多了,但是如果碰到了生产开发里如何将多线程设计更好,我心里的底气还是不足的,哎,缺乏很有意义的实践,我现在要等待让我实践这部分技术的机会了。   话外话,研 ...
Global site tag (gtag.js) - Google Analytics