java
我不是李大侠
这个作者很懒,什么都没留下…
展开
-
java实现寻找有向图的的闭环
最近在公司与遇到一个需求,将所有服务关系的依赖中找出闭环依赖,大概意思就是把有向图的闭环路径找出来,我用深度优先搜索(DFS)进行实现,现将代码贡献出来供大家参考:public class DsfCycle { /** * 限制node最大数 */ private static int MAX_NODE_COUNT = 100; /** ...原创 2018-05-17 11:46:00 · 5309 阅读 · 1 评论 -
NIO之Channel详解
NIO介绍 在讲解Channel之前,首先了解一下NIO, Java NIO全称java non-blocking IO,是从Java 1.4版本开始引入的一个新的IO API(New IO),可以替代标准的Java IO API,NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同。IO与 NIO区别: IO NIO 面向流(Stream Orienten...原创 2018-02-24 13:57:59 · 6568 阅读 · 0 评论 -
Java8新特性Optional、接口中的默认方法与静态方法
OptionalOptional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。 常用方法: Optional.of(T t) : 创建一个 Optional 实例。 Optional.empty...原创 2017-12-04 14:28:34 · 1023 阅读 · 0 评论 -
java堆、栈、常量池
java堆、栈突然在网上看到一篇关于java堆栈共享问题帖子,所以回忆一下java堆栈。首先看看那个帖子 首先做一下解答,堆是所有线程共享的内存区域,栈是每个线程独享的,所以那篇博文肯定是错误的。 其次呢博文的这句话也是错误的 编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用java基本数据类型存放在哪?它存放在堆或栈中,具体情况由上下文决定。当这个变原创 2018-01-30 15:53:32 · 972 阅读 · 0 评论 -
创建Thread对象时this.getName()和Thread.currentThread().getName()的差异
非构造参数创建Thread对象首先看下面一段代码:class NewThread extends Thread{ public NewThread() { // TODO Auto-generated constructor stub System.out.println("------NewThread stard-------");原创 2018-01-15 20:03:06 · 1123 阅读 · 0 评论 -
Java8新特性Stream流
什么是Stream流?Stream流是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。 Stream的优点:声明性,可复合,可并行。这三个特性使得stream操作更简洁,更灵活,更高效。 Stream的操作有两个特点:可以多个操作链接起来运行,内部迭代。 Stream可分为并行流与串行流,Stream API 可以声明性地通过 parallel() 与sequential() 在并行流与顺序流之间原创 2017-10-23 22:02:15 · 2326 阅读 · 1 评论 -
Java8新特性方法引用、构造器引用、数组引用
引用方法引用方法引用是使用“::”将方法名和对象或类分隔,若lambda体中的内容有方法已经实现,我们可以使用“方法引用”,主要分为三种情况。对象::实例方法名注意:lambda体中调用方法的参数列表与返回值类型,要与函数式接口中抽象方法的参数列表和返回类型保持一致。public void test1(){原创 2017-09-14 17:20:56 · 458 阅读 · 0 评论 -
Java8新特性Lambda表达式、函数式接口
什么是Lambda表达式,java8为什么使用Lambda表达式?“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。我们可以把 Lambda表达式理解为是 一段可以传递的代码。最直观的是使用Lambda表达式之后不用原创 2017-08-02 11:17:59 · 3124 阅读 · 2 评论 -
spring整合rabbitmq
关于spring整合rabbitmq看了网上很多资料感觉描述的不够详细,正好最近自己使用到了这项技术,总结一下的详细过程,分享给大家。准备工作1、首先有一个springMVC的demo,这里就不再介绍,自己提前准备。注意的事情为spring版本不能过低,否则会报错,我就陷入这个坑中了。spring采用4.2.3.RELEASE版本. 2、安装rabbitmq服务,以前博客中详细教程:ht原创 2017-08-11 17:45:17 · 2963 阅读 · 6 评论 -
解决报错:org/springframework/util/backoff/BackOff
因为在项目要使用队列,昨天整合spring和rabbitmq,当在配置消费者时,就是下面一段代码。<rabbit:listener-container connection-factory="connectionFactory" acknowledge="auto"> <rabbit:listener queues="queue_one" ref="queueList原创 2017-08-09 10:58:31 · 3034 阅读 · 3 评论 -
Java 代码性能优化总结
1、尽量指定类、方法的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于转载 2017-03-15 16:37:58 · 663 阅读 · 0 评论 -
斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)...原创 2018-05-20 14:55:12 · 880 阅读 · 0 评论