- 博客(98)
- 资源 (9)
- 问答 (2)
- 收藏
- 关注
转载 Java高并发编程之第一阶段,多线程基础深入浅出
给朋友打波广告,支持一下 http://blog.csdn.net/wangwenjun69/article/details/56967121汪文君高并发编程第一阶段01讲-课程大纲及主要内容介绍 汪文君高并发编程第一阶段02讲-简单介绍什么是线程 汪文君高并发编程第一阶段03讲-创建并启动线程 汪文君高并发编程第一阶段04讲-线程生命周期以及start方法源码剖析 汪文君高并发编程第一阶
2017-02-25 00:23:19 4957 5
原创 powermock、hadoop、Concordion、Java 8教程
大牛教程走一波,有兴趣的可以加群286081824 : powermock实战教学 https://www.douban.com/note/590646042/ hadoop平台下的数据导入导出工具Sqoop https://www.douban.com/note/590646264/ Concordion实战教学 https://www.douban.com/note/59064654
2016-11-10 21:20:46 1296
原创 剑指Offer-斐波那契数列
斐波那契数列题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 解题思路: 斐波那契数列:0、1、1、2、3、5、8、13、21、34、…… 这里注意: 第0项:0; 第1项:1; 第2项:1; 第3项:2; 。。。下面是我的Java源代码public class Solution { public int Fibonacci
2015-08-29 00:13:16 1349
原创 剑指Offer-二叉树的镜像
二叉树的镜像 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 解题思路: 将结点的左右子树转换,然后递归其左右子树继续进行。我的Java代码如下:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right =
2015-08-29 00:12:25 1426
原创 剑指Offer-树的子结构
树的子结构 题目描述 输入两颗二叉树A,B,判断B是不是A的子结构。 解题思路: 先判断A的根结点是否与B的树根相同,若相同,则遍历B的同时遍历A,判断是否相似。 否则判断A的左子树是否与B的树根相同,若相同,则遍历B的同时遍历A的左子树,判断是否相似。 同理A的右子树也一样的方法判断。 注意一个问题,如果两个都为null,或者root2为null,则root2不属于ro
2015-08-29 00:11:44 1172
原创 剑指Offer-数值的整数次方
数值的整数次方 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 解题思路: 注意判断输入的int类型的整数exponent是正数还是负数,0; 如果是正数,使用循环来让base自身乘exponent次,直接返回; 如果是负数,按照正数的方法得到结果result,然后返回1.0/result,、; 如果是
2015-08-29 00:11:04 1303
原创 剑指Offer-用两个栈实现队列
用两个栈实现队列 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解题思路: 利用一个栈来作为暂时存储的栈,类似于汉诺塔问题,可以根据下图思考一下, 我的Java源代码: import java.util.Stack;public class Solution { Stack<Integer> stack1 = new
2015-08-29 00:10:02 1229
原创 剑指Offer-变态跳台阶
变态跳台阶题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路: 仔细分析一下可以发现问题数组的第n个的结果为:2^(n-1) 注意分析一下: n=0,return 0; n=1;有1种方法; n=2;有2种方法; n=3;有4种方法; 。。。 我的Java源代码: public cl
2015-08-27 21:31:12 573
原创 剑指Offer-跳台阶
跳台阶题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路: 其实仔细分析一下,可以发现这是一个类似斐波那契数列的数组,数组为:0,1,2,3,5,8,… 下面是我的Java源代码实现: public class Solution { public int JumpFloor(int target) {
2015-08-27 21:30:38 584
原创 剑指Offer-反转链表
反转链表题目描述: 输入一个链表,反转链表后,输出链表的所有元素。 解题思路: 这和之前的一道题“从尾到头打印链表”方法上有一些类似,我这里也是借助栈来实现的。 下面是我的Java源代码: /*public class ListNode { int val; ListNode next = null; ListNode(int val) {
2015-08-27 21:29:22 643
原创 剑指Offer-合并两个排序的链表
合并两个排序的链表题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路: 其实就是采用比较大小,然后使用尾插法进行构建合并链表。 我的Java代码如下: /*public class ListNode { int val; ListNode next = null; ListNode(int v
2015-08-27 21:24:53 563
原创 剑指Offer-链表中倒数第k个结点
链表中倒数第k个结点 题目描述: 输入一个链表,输出该链表中倒数第k个结点。 解题思路: 采用快慢指针方法,先让a指针前进k步,然后ab指针一同前进,当a指针为nu
2015-08-27 21:23:49 616
原创 剑指Offer-重建二叉树
重建二叉树题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解题思路: (1)如果前序遍历为空或中序遍历为空或节点个数小于等于0,返回NULL。 (2)创建根节点。前序遍历的第一个数
2015-08-27 21:22:58 526
原创 剑指Offer-从头到尾打印链表
从尾到头打印链表题目描述: 输入一个链表,从尾到头打印链表每个节点的值。 解题思路:1.这里借助栈,遍历链表的时候将链表节点的值push进栈,遍历结束后,将栈中内容pop出ArrayList中。 2.这里还有使用头插法将链表逆序,然后遍历值存储在ArrayList中。 下面是1的源代码: /*** public class ListNode {* int val
2015-08-27 21:22:21 748
原创 剑指Offer-二维数组中的查找
二维数组中的查找题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解题思路:借http://www.cnblogs.com/zhuyf87/archive/2013/03/01/2938013.html博客一张图,从右上角开始分析,思路如下: 源代码如下: p
2015-08-27 21:21:09 563
原创 LeetCode102-Binary-Tree-Level-Order-Traversal
LeetCode 102 : Binary Tree Level Order Traversal Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level). For example: Given binary tree
2015-08-27 21:20:23 550
原创 LeetCode145-Binary-Tree-Postorder-Traversal
LeetCode 145 : Binary Tree Postorder Traversal Given a binary tree, return the postorder traversal of its nodes’ values. For example: Given binary tree {1,#,2,3}, 1 \ 2 / 3 return [3,2
2015-08-27 21:19:53 605
原创 LeetCode144-Binary-Tree-Preorder-Traversal
**LeetCode 144 : Binary Tree Preorder Traversa**l Given a binary tree, return the preorder traversal of its nodes’ values. For example: Given binary tree {1,#,2,3}, 1 \ 2 / 3 return [1
2015-08-27 21:19:09 623
原创 编程之美-编程判断两个链表(可能含环)是否相交以及相交的第一个结点
第三章 3.6 扩展题 扩展1 : 如何判断两个链表(含环)是否相交 扩展2 : 如何求出两个链表相交的第一个结点 假设两个链表分别为A,B链表 扩展1 :如何判断两个链表(含环)是否相交 解题思路: (1)先判断AB链表是否含有环,如果不含有环则按照之前的文章 编程之美-判断两个链表是否相交 | Pan Hai nan’Blog 进行; (2)如果AB链表中有一个链表含有环,而另一个
2015-08-27 21:18:26 848
原创 编程之美-判断两个链表是否相交
第三章 3.6 编程判断两个链表是否相交 问题详细描述: 给出两个单向链表的头指针(如图3-8所示),比如h1、h2,判断这两个链表是否相交。这里为了简化问题,我们假设两个链表均不带环。 这里直接将编程之美一书中的解释搬过来,如下。分析与解法 这样的一个问题,也许我们平时很少考虑。但在一个大的系统中,如果出现两个链表相交的情况,而且释放了其中一个链表的所有节点,那样就会造成信息的丢
2015-08-27 21:17:20 755
原创 编程之美-从无头单链表中删除节点
第三章 3.4 从无头单链表中删除节点 问题详细描述: 假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个),请将该结点从单链表中删除解题思路: 按照题意需要删除A结点,但是A结点不是头结点,我们也不能得到A结点的前一个结点。 这时我们换一下思路,我们来对B结点做点文章,通过将B节点的值赋值给A结点,然后将A结点的next指针指向B结点的ne
2015-08-27 21:16:34 853
原创 LeetCode173-Binary Search Tree Iterator
LeetCode 173 : Binary Search Tree Iterator Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the root node of a BST.Calling next() will return the next small
2015-08-27 21:15:55 752
原创 LeetCode110-Balanced Binary Tree
LeetCode 110 : Balanced Binary TreeGiven a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subt
2015-08-27 21:15:21 748
原创 编程之美-字符串移位包含的问题
第三章 3.1 字符串移位包含的问题问题详细描述: 给定两个字符串s1和s2,要求判断s2是否能够被s1做循环移位得到的字符串包含。输入输出示例: 给定s1=”AABCD”和s2=”CDAA”,返回true; 给定s1=”ABCD”和s2=”ACBD”,返回false。 对于编程之美中使用C语言的解法请参见这一篇文章,讲的很详细 地址:字符串移位包含的问题 - 丫坏孩子 - 博客园
2015-08-27 21:13:36 1325
原创 Java数据结构-线性表之栈的应用-递归及其应用
递归函数的定义:把一个直接调用自己或通过一系列的调用语句间接地调用自己的函数,称做递归函数(递归函数必须有一个结束的条件,以免陷入无穷尽的递归中)。迭代和递归的区别是: (1).迭代使用的是循环结构,递归使用的是选择结构。 (2).递归能使程序的结构更清晰、更简洁、更容易让人理解,从而减少读懂代码的时间。但是大量的递归调用会建立函数的副本,会耗费大量的时间和内存。 (3).迭代则不需要反复调用函数和
2015-08-27 21:12:49 1073
原创 算法分析-如何实现字符串的反转
问题:将一个句子中的单词进行反转,例如:“how are you”,进行反转后的结果为“you are how”。 解题思路:将这个句子进行两次反转操作即可。1)对整个字符串进行字符反转,反转结果“uoy era woh”; 2)接下来对每个单词进行字符反转,结果就是“you are how”。源代码:/* 问题:将一个句子中的单词进行反转,例如:“how are you”,进行反转后的结果为
2015-08-27 21:11:25 1451
原创 Java数据结构-二叉查找树续以及平衡二叉查找树
前面一篇文章讲到了二叉查找树的实现,其中的插入操作是使用非递归方法实现的,这里再增加一种递归实现插入的操作,Java代码如下,建议增加到前一篇文章对应的FOBinarySearchTree.java中;/** * @TODO 二叉排序树插入元素(递归方法) * @param e 需要插入的元素 * @return true or false */public boolean insert(
2015-08-27 21:10:24 866
原创 Java数据结构-树的应用-二叉查找树
二叉查找树也叫二叉排序树。对于树中的每个节点X,它的所有左子树中项的值小于X节点中的项,所有右子树中的项的值大于X的项。需要实现的基本操作有:1.包含:判断某个元素是否包含在二叉查找树中,若存在则放回true,否则返回false。具体操作步骤如下:(1).从根结点开始进行判断,根结点为空则直接结束返回false;(2).如果相等则直接结束返回true;如果大于根结点的值,则继续与根结点的右子树进行比
2015-07-29 13:37:06 1441
原创 Java数据结构-串及其应用-KMP模式匹配算法
串(string)是由零个或多个宇符组成的有限序列,又名叫字符串。定义的解释: 串中的字符数目n称为串的长度,定义中谈到“有限”是指长度n是一个有限的数值。 零个字符的串称为空串(null string),它的长度为零,可以直接用两双引号一表示,也可以用希腊Φ字母来表示。 所谓的序列,说明串的相邻字符之间具有前驱和后继的关系。下面是串的一些概念性东西: 空格串,是只包含空格的串。
2015-07-26 18:35:22 1309
原创 Java数据结构-二叉树及其遍历
二叉树的定义:n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互相不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树的特点:0<=度<=2;左右子树是有顺序的,不能颠倒;不论有几棵子树,也要区分它是左子树还是右子树。二叉树的五种基本形态:空二叉树;只有一个根结点;根结点只有左子树;根结点只有右子树;根结点既有左子树又有右子树。举例
2015-07-23 22:51:28 1365
原创 Java数据结构-树及树的存储结构
树的定义:n(n>=0)个节点的有限集。n=0时称为空树。n!=0时为非空树,有且仅有一个特定的节点——根;n>1时,其它节点可以分为m(m>0)个互不相交的有限集T1~Tm,其中每一个集合本身又是一棵树,并且称为根的子树。树的一些基本术语:树的结点:由一个数据元素和若干个指向其子树的分支组成。结点的度:结点所拥有的子树的个数(即分支数)称为该结点的度。叶子结点:度为0的结点称为叶子结点
2015-07-23 00:06:45 7754
原创 Java数据结构-线性表之队列
队列(Queue)的定义:只允许在一端进行插入另一端进行删除操作的线性表。允许插入的一端称为队尾(rear) ,允许删除的一端称为队头(front)。 具有“先进先出”特点。队列也是线性表,所以也存在顺序结构和链式结构。顺序队列:对于队列,入队操作的解释为: (是在队尾追加一个元素,不需要移动任何元素,因此时间复杂度为0(1)。)判断队列是否已满;如果没满则先给队尾元素赋值;然后将队尾指针后
2015-07-21 09:42:03 1178
原创 Java数据结构-线性表之栈(顺序栈和链栈)
栈的定义:(特殊的线性表) 仅在表的一端进行插入和删除的线性表。允许插入、删除的这一端称为栈顶,另一端称为栈底。表中没有元素时称为空栈。 被称为后进先出的线性表(Last In First Out),简称 LIFO表,或被称为先进后出的线性表(First In Last Out),简称 FILO表。 栈更具存储方式的不同分为两种:顺序栈和链栈。顺序栈:和顺序表一样,顺序栈也采用数组来存放数据
2015-07-21 09:34:17 1284
原创 Java数据结构-线性表之链表应用-检测链表是否有环
如何检测一个链表是否有环?这个是一个出现频率较高的面试题。 如下是一个含有环的链表。 (图片来自http://www.nowamagic.net/librarys/veda/detail/2245 一个有很多关于数据结构的文章的网站,还有其他的资料,可以看看) 我这里解题的方法有三种:快慢指针方法:两个速度不一样的指针遍历总会相遇;利用环的顶点数和边相等的关系;两个指针遍历判断
2015-07-20 12:10:45 1195
原创 Java数据结构-线性表之单链表应用-单链表合并
问题详细描述: 将递增有序A、B两链表归并成一个按元素值非递增(允许有相同值)有序的链表C。解题思路: 利用A、B两表递增有序的特点,依次取出当前结点进行比较,将当前值较小者摘下,插入到C表的头部,由于采用的是头插法,最先找到的最小值结点将会在C表的尾部,依次类推,所以得到的C表则为非递增有序的。这里的递增递减性质需要根据代码具体修改实现。已在代码中给出提示。/** * @TODO 两
2015-07-19 23:23:49 1019
原创 Java数据结构-线性表之单链表应用-重复节点的删除
整个问题的解题思路如下:建立指针p,用于遍历链表;建立指针q,q遍历p后面的结点,并与p数值比较;如果q与p值相等,则删除q。如果q有后继节点,则将q前驱节点和q后继节点链接起来;否则直接开始下一轮遍历。Java代码实现如下,建议将这段代码copy到之前的Java版本的LinkedList(FOLinkedList)中。/** * @TODO 重复节点的删除 * @param foll
2015-07-19 23:22:29 1330 2
原创 Java数据结构-线性表之单链表应用-单链表的逆置
单链表的逆置,就是将现有单链表中的元素的顺序倒置过来。之前提过单链表的整表创建,那里曾说过两种方法:头插法和尾插法; 在我的Java版本的LinkedList中,添加方法使用的是尾插法。 而单链表的逆置正好是利用头插法来进行。 下面看看演示: 下面是我的Java代码实现,建立在之前的代码的基础上/** * @TODO 单链表添加元素,头插法 * @param e 数据元素 * @r
2015-07-19 23:19:52 2376
原创 Java数据结构-线性表之静态链表
静态链表的定义: 节点由一个一维数组和一个指针域组成,数组用来存放数据元素,而指针域里面的指针(又称游标)用来指向下一个节点的数组下标。这样的链表称之为静态链表。 链表中的数组第一个和最后一个位置需要特殊处理,不存数据。第一个位置(即数组0下标)的节点的指针用来存放备用链表的第一个节点的数组下标。最后一个位置(即数组长度MaxSize-1下标)的节点的指针用来存放指向有数值的第一个数据元素的数组
2015-07-19 17:27:19 2352
原创 Java数据结构-线性表之循环链表
循环链表的定义:将单链表的尾节点的空指针改为指向头结点的指针,这样的单链表就变成单循环链表了,也叫循环链表。下面摘抄了《大话数据结构》中的一段分析。如下图: 解释: 循环链表里面的头结点和单链表里面的头结点是一样的,都是为了操作统一和方便而设定的,不是必须节点。这里为了方便操作还会进行一种改变,就是去掉循环链表的头指针,而增加一个指向循环链表尾部节点的尾指针。 这样相对来说可以通过O(1)时间
2015-07-19 17:22:33 744
原创 Java数据结构-线性表之双向链表
双向链表的定义:在单链表的基础上,给每个节点增加一个指针域,用来指向该节点的前驱节点,这样形成的链表称之为双向链表。 利用空间换时间。整个双向链表的形式如图所示:下面就摘了《大话数据结构》的插入操作演示: 需要注意的是保证链不要断掉,上述图中第3和第4步的顺序不要颠倒。 继续删除操作的演示: 双向链表也有循环链表,叫双向循环链表,介绍如下:
2015-07-19 17:21:32 789
学生信息管理小系统
2013-12-12
为什么apache+tomcat搭建的负载均衡服务器集群在部署项目访问请求获取不到数据
2015-03-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人