#阿里巴巴JAVA开发手册

有向图的拓扑排序算法JAVA实现

一,问题描述给定一个有向图G=(V,E),将之进行拓扑排序,如果图有环,则提示异常。要想实现图的算法,如拓扑排序、最短路径……并运行看输出结果,首先就得构造一个图。由于构造图的方式有很多种,这里假设图的数据存储在一个文件中,每一行包含如下的信息:LinkID,SourceID,Destina...

Java Message Service学习(一)

一,背景近期需要用到ActiveMQ接收Oozie执行作业之后的返回结果。Oozie作为消息的生产者,将消息发送给ActiveMQ,然后Client可以异步去ActiveMQ取消息。ActiveMQ作为基于JMS开源的ApacheMessageProvider,故记录下JMS相关基础知识。 二,基础知识&am...
代码星球 ·2020-04-04

java.uti.Random类nextInt方法中随机数种子为47的奇怪问题

一,问题描述需要生成一个[0,1]的随机数。即随机生成0或者1。使用java.util.Random类的nextInt(int)方法,当构造Random类的对象并提供随机数种子时,发现了一个奇怪的问题:当使用47作为随机数种子构造Random对象时:publicstaticRandomrand2=newRandom(4...

JAVA泛型中的类型擦除及为什么不支持泛型数组

一,数组的协变性(covariantarraytype)及集合的非协变性设有Circle类和Square类继承自Shape类。关于数组的协变性,看代码:publicstaticdoubletotalArea(Shape[]arr){doubletotal=0;for(Shapeshape:arr){if(shape!=...

JAVA Socket 编程---Socket 和 ServerSocket

一,SocketSocket的选项1)TCP_NODELAY:默认值为false。表示采用Negale算法。当设置为true时,表示关闭Socket缓冲,立即发送数据。Socket默认发送数据是采用Negale算法。Negale算法是指发送方发送的数据不会立即发出,而是先放在缓冲区内,等缓冲区满了再发出。发送完一批数据...

JAVA BufferedReader 类从标准输入读取数据

1,从标准输入上建立输入流:BufferedReaderlocalReader=newBufferedReader(newInputStreamReader(System.in));System.in表示标准输入,一般指键盘。建立输入流,从标准输入读取数据到缓冲区中。当在标准输入中输入一行字符串时,按回车之后,这行数据...

oozie JAVA Client 编程提交作业

1,eclipse环境搭建在eclipse中新建一个JAVA工程,导入必要的依赖包,目前用到的有:其次编写JAVA程序提交Oozie作业,这里可参考:oozie官方参考文档在运行提交程序前,首先需要把相应的程序打成jar包,定义好workflow.xml,再把它们上传到HDFS中。然后在程序中指定作业的属性,这里我是直...

JAVA中写时复制(Copy-On-Write)Map实现

1,什么是写时复制(Copy-On-Write)容器?写时复制是指:在并发访问的情景下,当需要修改JAVA中Containers的元素时,不直接修改该容器,而是先复制一份副本,在副本上进行修改。修改完成之后,将指向原来容器的引用指向新的容器(副本容器)。 2,写时复制带来的影响①由于不会修改原始容器,只修改副...

数据结构--图 的JAVA实现(下)

在上一篇文章中记录了如何实现图的邻接表。本文借助上一篇文章实现的邻接表来表示一个有向无环图。1,概述图的实现与邻接表的实现最大的不同就是,图的实现需要定义一个数据结构来存储所有的顶点以及能够对图进行什么操作,而邻接表的实现重点关注的图中顶点的实现,即怎么定义JAVA类来表示顶点,以及能够对顶点进行什么操作。为了存储图中...
代码星球 ·2020-04-04

数据结构--图 的JAVA实现(上)

1,摘要:本系列文章主要学习如何使用JAVA语言以邻接表的方式实现了数据结构---图(Graph),这是第一篇文章,学习如何用JAVA来表示图的顶点。从数据的表示方法来说,有二种表示图的方式:一种是邻接矩阵,其实是一个二维数组;一种是邻接表,其实是一个顶点表,每个顶点又拥有一个边列表。下图是图的邻接表表示。从图中可以看...
代码星球 ·2020-04-04

一致性哈希算法学习及JAVA代码实现分析

1,对于待存储的海量数据,如何将它们分配到各个机器中去?---数据分片与路由当数据量很大时,通过改善单机硬件资源的纵向扩充方式来存储数据变得越来越不适用,而通过增加机器数目来获得水平横向扩展的方式则越来越流行。因此,就有个问题,如何将这些海量的数据分配到各个机器中?数据分布到各个机器存储之后,又如何进行查找?这里主要记...

JAVA 动态代理学习记录

打算用JAVA实现一个简单的RPC框架,看完RPC参考代码之后,感觉RPC的实现主要用到了两个方面的JAVA知识:网络通信和动态代理。因此,先补补动态代理的知识。---多看看代码中写的注释参考:Java代理模式与动态代理类 java的动态代理机制详解 在动态代理中,首先定义一个接口,这个接口中声明的...

AVL树的JAVA实现及AVL树的旋转算法

1,AVL树又称平衡二叉树,它首先是一颗二叉查找树,但在二叉查找树中,某个结点的左右子树高度之差的绝对值可能会超过1,称之为不平衡。而在平衡二叉树中,任何结点的左右子树高度之差的绝对值会小于等于1。2,为什么需要AVL树呢?在二叉查找树中最坏情况下查找某个元素的时间复杂度为O(n),而AVL树能保证查找操作的时间复杂度...

JAVA 同步之 synchronized 修饰方法

在JAVA多线程编程中,将需要并发执行的代码放在Thread类的run方法里面,然后创建多个Thread类的对象,调用start()方法,线程启动执行。当某段代码需要互斥时,可以用synchronized关键字修饰,这里讨论synchronized关键字修饰方法时,是如何互斥的。synchronized修饰方法时锁定的...

JAVA NIO 中的 zerocopy 技术提高IO性能

 关于一篇更详细更好的介绍ZeroCopy技术的文章,可参考:JAVAIO以及NIO理解 这篇文章介绍了zerocopy技术来提高Linux平台上的IO密集型的JAVA应用程序的性能. zerocopy技术能够避免中间缓冲区中的冗余数据复制以及减少Linux内核空间和用户空间上下文交换的次...
首页上一页...668669670671672...下一页尾页