自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 面试-编程题

面试了一个很厉害的大厂,老师让我写了几道题,在此将其记录。 1.设计一个算法,计算出n阶乘中尾部零的个数 样例 11! = 39916800,因此应该返回 2 挑战 O(logN)的时间复杂度 public static long ...

2018-01-09 10:58:55 1553 0

原创 面试 - 几道编程题

最近面试一家国内外卖NO.1的互联网公司,总共手写了五道题,现将其记录下来。1.从一个数组中找出满足符合条件的元素:它大于或等于前面所有元素,小于或等于后面所有元素。(这道题当时用很蠢的方法写的,没得什么技术含量,后来回来才去网上看了一下好的方式)* 1.一个用来记录最大值的数组 * 2.一个用...

2017-12-06 10:47:17 235 0

原创 Reference counted Objects (引用计数对象) - 文章翻译

原文地址:http://netty.io/wiki/reference-counted-objects.html

2017-12-05 18:03:45 361 0

原创 微服务(Microservices)- 文章翻译

本文是翻译 https://martinfowler.com/articles/microservices.html 的内容,旨在介绍一下微服务这种设计架构,希望大家尽量阅读原文。文中翻译难免有疏漏,希望大家不吝指正,共同学习。———————————————————————————————————...

2017-11-01 22:33:14 432 0

原创 Java8函数式编程之七:Stream(流)的各种操作

上篇博客对流的基础知识进行了介绍,本篇博客将着重介绍关于流的各种操作,使用很多的实例代码,你只需要将其放进你的main函数中就能运行。—————————————— 创建流:public class StreamTest1 { public static void main(String[...

2017-11-01 22:32:10 6867 0

原创 Java8函数式编程之六 :Stream (流)介绍

上一篇博客我们介绍了Java8中的4种方法引用,这篇文章主要介绍Java8中非常重要的部分,也就是Stream(流)。 在此,建议你阅读Stream.java类的Java文档,毕竟是最权威的资料。 ————————————————————我们先来看一下Javadoc中对流是怎样说明的: A s...

2017-11-01 22:29:51 715 0

原创 Java8函数式编程之五:方法引用详解

方法引用详解:(method reference) 某些时候,Lambda表达式方法体的实现正好是已经存在的方法能够提供的功能,那么此时就可以用已经存在的方法替换Lambda表达式。 是Lambda的一种特殊情况,或者说是Lambda表达式的一种语法糖。—————————————— Lamb...

2017-11-01 22:28:47 312 0

原创 Java8函数式编程之四: 常见的函数式接口及实例

上一篇博客中留下的问题是关于Consumer接口的,本篇博客就来介绍一下Java8提供的重要的函数式接口。 1.Consumer接口:我们首先看一下Consumer接口的Javadoc,比任何资料都正规的解释。 '/*** Represents an operation that ac...

2017-11-01 22:26:33 257 0

原创 Java8函数式编程之三:函数式接口

上一篇博客介绍了Lambda表达式,最后也留下了一个问题,就是Lambda到底用在什么地方,以及什么是函数式接口?还记得我们在第一篇博客中定义的这个接口吗? public interfaceTradePredicate {booleantest(Trade trade);}这就是一个函数式接口。那...

2017-11-01 22:21:14 216 0

原创 Java8函数式编程之二 : Lambda表达式

针对上篇博客最后留下的问题,也就是java8怎样解决匿名内部类代码难看,臃肿的的问题

2017-11-01 22:18:43 236 0

原创 Java8函数式编程之一: 行为参数化

Java8区别于以前的Java版本的一个重要特点就是函数式编程的风格。那什么是函数式的编程风格呢?理解函数式编程之前让我们先看一下以前的编程方式,也就是命令式编程。比如计算两个数的和:public static int add(int a, int b){return a + b;}命令式编程传递...

2017-11-01 22:14:19 402 0

原创 Predicate.java官方文档翻译

package java.util.function; import java.util.Objects; /** * Represents a predicate (boolean-valued function) of one argument. * 表示一个参数的谓词(b...

2017-10-31 10:50:40 97 0

原创 Collectors.java 官方文档翻译

package java.util.stream; import java.util.AbstractMap; import java.util.AbstractSet; import java.util.ArrayList; import java.util.Arrays; imp...

2017-10-31 10:45:03 173 0

原创 BiFunction.java官方文档翻译

package java.util.function; import java.util.Objects; /** * 表示接收两个参数返回一个结果的函数。 * 这是 {@link Function}的特殊化 * * 这是一个 函数式接口 * 它的函数式方法是 {@...

2017-10-31 10:43:43 69 0

原创 Consumer.java官方文档翻译

package java.util.function; import java.util.Objects; /** * 表示接收单个参数但是不返回结果的操作。 * 与其它函数式接口不同的是,{@code Consumer} 通过副作用进行操作。 * * 这是一个 函数式...

2017-10-31 10:43:05 80 0

原创 Collector.java官方文档翻译

package java.util.stream; import java.util.Collections; import java.util.EnumSet; import java.util.Objects; import java.util.Set; import java....

2017-10-31 10:42:13 89 0

原创 mybatis新手教程-第一个mybatis实例

这是项目结构,需要导入三个包。—————————— 下一步:创建数据库表,并且插入一条记录。 ——————————————下一步我们应该创建与数据库表对应的一JavaBean,特别注意,javabean的属性尽量要和数据库中列名称一致。(不一致也可以,但是要单独处理过,麻烦一些,这里大家就先保...

2017-05-19 11:39:58 2910 2

原创 按字典顺序打印字符串的所有排列

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。import java.util.*...

2017-04-25 17:12:17 352 0

原创 与链表有关的几道编程题-java实现

(1)输入一个链表,输出该链表中倒数第k个结点。 class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public class ...

2017-04-25 16:57:22 283 0

原创 遍历二叉树的三种情况-java实现

遍历二叉树,从上往下遍历。但是同层节点可以从左向右遍历,也可以从右向左遍历(也就是之字型遍历),其中,都需要队列进行实现。只是按照之字型稍微麻烦一些。(1)从上往下打印出二叉树的每个节点,同层节点从左至右打印。需要一个队列,队列里面放节点(从根节点开始),然后依次进行打印。import java....

2017-04-22 15:58:36 567 0

原创 简单工厂模式--java实现

前两天去京东终面,叫手写一下单例模式和简单工厂模式。当时学简单工厂模式是在spring的学习中,它是spring采用的主要设计模式,简单工厂模式是类的创建模式。简单工厂模式是类的创建模式,又叫做静态工厂方法。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。通常它根据自变量的不同返回不同类...

2017-04-19 10:27:13 601 0

原创 java编程题练习

/* * 字符串替换程序 * 将输入的字符串中空格替换成*号 * 将 ,(逗号替换成@符号) */ public class ReplaceBlanks { public static void main(String[] args) { String ...

2016-12-02 09:39:46 437 0

原创 单例模式(java两种方式实现)

//测试类 public class SingletonTest1 { public static void main(String[] args) { //检验产生的实例是否是同一个实例 Singleton singleton1 = Single...

2016-12-02 08:55:59 1952 0

原创 最短路径问题—Dijkstra算法及其实现

shortPath数组和DistantanceParent类。 最短路径算法的关键数据结构是一个数组,它保持了从原点到其他顶点(终点的最短路径)。在算法的执行过程中这个距离是变化的,直到最后,它存储了从原点开始真正的最短距离,在程序中,这个数组叫做shortPath[]. 也就是最短路径不仅应...

2016-12-01 16:12:36 1222 0

原创 带权图的最小生成树 及其java实现

如图所示:选择哪些边架设电缆,能使得安装有线电视系统的造价最低呢? 方法是利用最小生成树,它将有5条边(比城市数量少1),连接6个城市,并具有建立连接所需的最小代价。设计算法: 算法要点:下面是用图的术语重申一下算法。 从一个顶点开始,把它放入树的集合。然后重复做下面的事情: 1.找到从最...

2016-12-01 11:08:14 839 0

原创 骑士旅行问题-java解答

骑士旅行是一个古老而著名的象棋谜题。题目是在一个空的棋盘上移动一个 骑士,从一个方块到另一个,直到踏遍了棋盘的所有的方块。写一个程序, 用深度优先搜索解决这个问题。最好使棋盘的大小可变,这样可以在较小的 棋盘上解决这个问题。8*8 的棋盘中,用个人电脑大概需要几年的时间解决 这个问题。5*5 的棋...

2016-12-01 11:02:21 863 0

原创 有向图与拓扑排序

有向图的拓扑排序:拓扑排序是可以用图模拟的另一种操作。它可以用于表示一种情况,即某些项目或事件必须按照特定的顺序排列或发生。 如:课程的优先关系 有向图: 图可以表示这类关系,然而,图需要有一种前面没有涉及的属性:边有方向。这时,图叫做有向图。在有向图中,只能沿着边指定的方向移动。 在程序...

2016-11-29 21:39:42 367 0

转载 最小生成树及其基本实现

最小生成树(MST Minimum Spanning Tree):用最少的边连接了所有的顶点。 最小生成树边的数量总比顶点V的数量小1. 即 E = V -1;创建最小生成树的算法与搜索算法几乎是相同的。它同样可以基于广度优先搜索或者深度优先搜索,本例使用深度优先搜索。 在执行深...

2016-11-29 19:42:42 246 0

原创 深度优先搜索--以及图的基本操作

临接:如果两个顶点被同一条边连接,就称这个顶点是临接的。 路径:路径是边的序列 连通图:如果至少有一条路径可以连接起所有的顶点,那么称这个图是连通的。 邻接矩阵:邻接矩阵是一个二维数组,数组项表示两点之间是否存在遍。如果有N个顶点,邻接矩阵就是N*N的数组。邻接表: 邻接表是一个链表数组(...

2016-11-29 17:34:17 1273 0

原创 堆-及其基本操作

实现优先级队列的另一种结构::堆。堆是一种树,,由他实现的优先级队列的插入和删除的时间复杂度都是O(llooggN) 。注意:这里的堆是一种特殊的二叉树,不要和java以及C++等编程语言里的“堆”混淆,后者指的是程序员用new能得到的计算机内存的可用部分。堆是有如下特点的二叉树: —-它是完全...

2016-11-29 09:19:48 287 0

原创 哈希表-再哈希法

再哈希法: 为了消除原始聚集和二次聚集,可以使用另外一个方法:再哈希法,二次聚集产生的原因是,二次探测的算法产生的探测序列步长总是固定的:1,4,9,16… x现在需要的一种方法是产生一种依赖关键字的探测序列,而不是每个关键字都一样。那么,不同的关键字即...

2016-11-28 11:44:02 1538 0

原创 哈希表-线性探测

哈希表是一种数据结构,它可以提供快速的插入和查找操作。不论哈希表有多少数据,插入和删除(有时包括删除)只需要接近常量的时间,即O(1)的时间级。 哈希表运算非常快,在计算机程序中,如果需要在一秒钟内查找上千条记录,通常使用哈希表,哈希表的速度明显是树快。 哈希表也有一些...

2016-11-28 11:41:27 556 0

原创 图示创建哈夫曼树的过程

字符编码: 计算机里每个字符在没有压缩的文本文件中由一个直接(如常见的ASCII码)或两个直接(如比较新的Unicode,它可以在各种语言中通用)表示,在这些方案中,每个字符需要相同的位数。下图列出里用ASCII码表示的一些字符,可以看到每个字符都用8个位来表示 有很多压缩数据的方法,对文本来...

2016-11-24 19:46:06 2079 2

原创 二叉树 及其基本操作

为什么要使用树? 因为树既能像链表那样快速的插入和删除,也能像有序数组那样快速查找。 下面是一棵二叉搜索树(二叉查找树BST Binary Search Tree). 二叉查找树的特征可以这样描述:一个节点的左子节点的关键字值小于这个节点,右子节点的关键字值大于或者等于这个父节点。非平衡树,...

2016-11-24 16:16:16 336 0

原创 排序-快速排序

快速排序:快速排序是最流行的排序算法,在大多数情况下,快速排序都是最快的,执行时间为O(N*logN)级。 快速排序算法本质上通过把一个数组划分为两个子数组,然后递归调用自身为每一个子数组进行快速排序实现的。 快速排序有三个基本的步骤: 1.把数组或者子数组分成左边(较小的关键字)的一组和右...

2016-11-24 11:42:46 207 0

原创 排序-希尔排序

希尔排序: 当对0,4,8号数据项完成排序之后,算法向右移动一步,对1,5,9数据项进行排序。这个过程持续进行,直到所有的数据项都已经完成了4-增量排序,也就是说所有间隔为4的数据项之间都已经排列有序在完成以4为增量的希尔排序后,所有元素离他在最终有序序列中的位置都相差不到两个单元。这就是数组基...

2016-11-24 11:39:19 193 0

原创 排序--归并排序

归并排序 O(N*logN): 归并排序的思想是把一个数组分成两半排序每一半,然后用merge()方法把数组的两半归并成一个有序的数组;把每一半都分成两个四分之一,对每个四分之一部分排序,然后把他们归并成一个有序的一半;类似的,把每一对八分之一归并成一个有序的四分之一部分,每一对十六分之一部分...

2016-11-24 11:36:47 195 0

原创 排序-插入排序

插入排序: 假设第一个元素是有序的(和图中部分有序类似),从第二个元素开始,将标记的元素(temp)插入到前面排 好序的队员中,要做到这一点,需要将部分已经排好序的队员右移以腾出空间。为了移动所需的时间,就先让被标记的元素出列(temp)(在程序中,就是用一个临时变量temp表示)publ...

2016-11-23 10:03:10 155 0

原创 排序-选择排序

选择排序:进行选择排序就是把所有的队员扫一遍,从中挑出(或者选择)最矮的一个队员。最矮的这个队员和站在队列最左端的队员交换位置,即站到0号位置。现在最左端的队员是有序的了,不需要再交换位置了。 再次扫描队列时,就从1号位置开始,还是寻找最矮的,然后和1号位置的队员交换,这个过程一直持续到所有的队...

2016-11-22 23:49:31 206 0

原创 排序1-冒泡排序

排序的分类: 内部排序与外部排序。按照排序过程中所涉及的存储器的不同可分为内部排序和外部排序。内部排序是指待排序序列完全存放在内存中进行的排序过程,这种排序方法适合于数据量不太大的数据元素的排序。外部排序是指待排序的数据元素非常多,以至于它们必须存储在外部存储器上,这种排序需要访问外存储器,这样...

2016-11-22 21:38:53 206 0

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