上一页 1 ··· 338 339 340 341 342 343 344 345 346 ··· 353 下一页
摘要: java语言从诞生开始,一个吸引人眼球的功能就是垃圾回收,想一想C++中时不时的内存泄漏,当时感觉写java代码直是一种享受呀。 和.NET的引用计数不同,java的垃圾回收机制采取的是有向图的方式来实现,具体的说,java程序中的每个线程对象就可以看作是一个有向图的起点,有向边从栈中的引用者指向堆中的引用对象。在这个有向图中,如果一个对象和根节点之间是可达的,那么这个对象就是有效的,反之,这个对象就是可以被回收的。采取这样一种机制的优点是可以有效的避免循环引用。 java语言中的对象引用分为以下几种:强引用、软引用、弱引用和虚引用。 强引用就是我们经常用到的引用,这种引用在对象被标识为... 阅读全文
posted @ 2013-11-26 23:44 brave-sailor 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 在面试过程中,数据结构和算法基本上算是研发类岗位必考的部分,而链表基本上又是数据结构中相对容易掌握、而且容易出题的部分,因此我们先整理一下链表部分的经典题目。(声明:以下所有程序都是用java编写)首先,我们来定义一个链表的数据结构,如下:View Code 1 public class Link { 2 private int value; 3 private Link next; 4 public void set_Value(int m_Value) { 5 this.value = m_Value; 6 } 7 public i... 阅读全文
posted @ 2013-11-26 23:41 brave-sailor 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 这次,我们主要看栈和队列的相关题目。 栈是“后进先出”的数据结构,队列是“先进先出”的数据结构,我们假设栈和队列中存储的都是整型数值,先来定义这两种数据结构(都采用数组的形式来存储信息,当达到数组边界时,对数组进行扩容处理)。 栈主要包括Push、Pop和Peek和Count三个方法,如下:栈的定义 1 public class Stack { 2 private int[] arrValue = null; 3 private int m_Capacity; 4 private int m_Count; 5 private void set_Count(i... 阅读全文
posted @ 2013-11-26 23:38 brave-sailor 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 在这篇文章里面,我们主要探讨和树相关的话题。 首先,我们来对树进行定义:树是n(n>= 0)个节点的有限集。在任何一个非空树中:(1)有且仅有一个特定的称为“根”的节点;(2)当n>1时,其余节点可分为m(m>0)个互相相关的有限集T1、T2、T3……,其中每一个集合本身又是一棵树,并且称为根的子树。 对于我们这篇文章里讨论的二叉树,它是一种特殊的树形结构,每个节点至多只有两颗子树,并且子树有左右之分,其次序不能随意颠倒。 接下来,我们使用java代码来定义一棵树:二叉树的定义 1 public class BinNode { 2 private int m_Value; 3 阅读全文
posted @ 2013-11-26 23:34 brave-sailor 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 这篇文章主要讨论常见的排序算法。 排序算法分为内部排序和外部排序两种,内部排序是指只利用内存来完成的排序,外部排序是指借助外部存储设备完成的排序。外部排序主要针对记录比较多、内存无法一次全部加载的情况。我们这里主要关注内部排序。 内部排序大致分为四类:1)插入排序;2)交换排序;3)选择排序;4)归并排序;5)基数排序。我们下面会分别进行描述。 首先,我们来确定排序的对象,这里我们假设排序的对象是随机生成的非重复整数数组,有下面的辅助方法:整型数组辅助方法(生成和打印) 1 public static int[] createArray(int count, int max) 2 { 3... 阅读全文
posted @ 2013-11-26 23:23 brave-sailor 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 在这篇文章里,我们关注和字符串相关的话题。 在谈论到字符串时,通常情况下,我们是在讨论ASCII码范围内的字符串,即它包括256个字符。在设计字符串相关的算法时,我们需要在时间和空间这两者之间进行权衡。 下面我们来看相关的题目。判断字符串里出现的字符是否是唯一的。 思路:方案一:将字符串转换为字符数组,从第一个字符开始遍历,针对每个字符,判断字符串之前是否出现过该字符,如果出现过,说明该字符在字符串中不是唯一的。对应的空间复杂度O(1),时间复杂度O(n*n)。判断字符串中的字符是否唯一 1 public static boolean Check(String value) 2 { 3 ... 阅读全文
posted @ 2013-11-26 23:16 brave-sailor 阅读(443) 评论(0) 推荐(0) 编辑
摘要: 在这篇文章里,我们主要讨论和递归相关的话题。递归是数据结构中解决复杂问题时非常有效的一种思考方式,对于一个复杂的问题,我们可以从中抽取一个可以通过迭代方式解决的子问题,而子问题是一个容易解决的问题。在使用递归时,有两个问题需要注意:1)抽取递归体;2)确定递归边界条件以及处理方式。 下面我们来看相关的题目。斐波那契数列 我想这应该是最常见的递归的例子了,我们可以使用递归和非递归两种方式来实现它。 首先来看非递归的方式:循环实现斐波那契数列 1 public static int fibo2(int n) 2 { 3 if (n path = new ArrayList(); 6 ... 阅读全文
posted @ 2013-11-26 23:12 brave-sailor 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 生产者-消费者(producer-consumer)问题是一个著名的线程同步问题。它描述的是:有一群生产者线程在生产产品,并将这些产品提供给消费者线程去消费。为使生产者与消费者之间能够并发执行,在两者之间设置了一个具有n个缓冲区的缓冲池,生产者将它所生产的产品放入一个缓冲区中;消费者可以从一个缓冲区中取走产品产生消费。尽管所有的生产者线程和消费者线程都是以异步方式运行的,但他们之间必须保持同步,即不允许消费者到一个空缓冲区去消费,也不允许生产者向一个已经被占用的缓冲区投放产品。我把这个问题复杂化,设立m个缓冲池,每个缓冲池都有各自固定的容量,每个生产者或消费者在进行生产消费活动之前,先选择一个 阅读全文
posted @ 2013-11-26 19:43 brave-sailor 阅读(581) 评论(0) 推荐(0) 编辑
摘要: 这一篇主要讲Spring一些基础的内容。 概述 Spring 是一个非常火的框架,尤其是在Web开发领域,和Struts以及Hibernate构成了SSH三剑客。当时Web开发的另一个组合是LAMP,即 Linux+Apache+MySQL+PHP。我在前端方面基本没有实战经验,对js等技术也还是停留在概念和语法方面,所以扬长避短,我对 Spring以及Hibernate特别感兴趣。 当年Spring是作为EJB的“替代者”横空出世的,其创始人Rod Johnson还写了一本《J2EE development without EJB》来推行这个框架,这也是一本关于Spring很经典的书,... 阅读全文
posted @ 2013-11-26 17:14 brave-sailor 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 这篇文章里,我们主要讨论ORM框架,以及在使用上和JDBC的区别。 概述 ORM框架不是一个新话题,它已经流传了很多年。它的优点在于提供了概念性的、易于理解的数据模型,将数据库中的表和内存中的对象建立了很好的映射关系。 我们在这里主要关注Java中常用的两个ORM框架:Hibernate和iBatis。下面来介绍这两个框架简单的使用方法,如果将来有时间,我会深入的写一些更有意思的相关文章。 Hibernate Hibernate是一个持久化框架和ORM框架,持久化和ORM是两个有区别的概念,持久化注重对象的存储方法是否随着程序的退出而消亡,ORM关注的是如何在数据库表和内存对象之间建... 阅读全文
posted @ 2013-11-26 17:12 brave-sailor 阅读(7386) 评论(0) 推荐(0) 编辑
上一页 1 ··· 338 339 340 341 342 343 344 345 346 ··· 353 下一页