06 2020 档案

摘要:java 8新增了LocalDate和LocalTime接口,为什么要搞一套全新的处理日期和时间的API?因为旧的java.util.Date实在是太难用了。 java.util.Date月份从0开始,一月是0,十二月是11,变态吧!java.time.LocalDate月份和星期都改成了enum, 阅读全文

posted @ 2020-06-30 21:21 鑫男 阅读(172) 评论(0) 推荐(0)

摘要:将 '123456' 字符串反转,把你能想到的方法都写下来。 1. 利用 StringBuffer 或 StringBuilder 的 reverse 成员方法: // StringBuffer public static String reverse1(String str) { return n 阅读全文

posted @ 2020-06-30 00:26 鑫男 阅读(251) 评论(0) 推荐(0)

摘要:https://www.cnblogs.com/wuhenzhidu/p/anonymous.html 阅读全文

posted @ 2020-06-29 23:47 鑫男 阅读(96) 评论(0) 推荐(0)

摘要:“equals”比较equals(Object obj)方法,在equals(Object obj)方法中,会先判断参数中的对象obj是否是Integer同类型的对象,如果是则判断值是否相同,值相同则返回true,值不同则返回false,如果obj不是Integer类的对象,则返回false。需要注 阅读全文

posted @ 2020-06-28 21:43 鑫男 阅读(279) 评论(0) 推荐(0)

摘要:面向对象1 构造器参数太多怎么办? package hp.domain.constructor; import org.junit.Test; /** * 构造方法参数太多怎么办 * 使用建造者模式,最终是链式的方法 */ public class ConstructorTest { private 阅读全文

posted @ 2020-06-27 16:28 鑫男 阅读(237) 评论(0) 推荐(0)

摘要:希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序, 同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。 基本思想 希尔排序是把记录 阅读全文

posted @ 2020-06-24 18:31 鑫男 阅读(323) 评论(0) 推荐(0)

摘要:示例1 @Test public void test() { String s1 = "AB"; // "AB" 放到了字符串常量池种 String s2 = new String("AB"); //new出来的对象,对象放堆上 String s3 = "A"; String s4 = "B"; S 阅读全文

posted @ 2020-06-22 23:35 鑫男 阅读(281) 评论(0) 推荐(0)

摘要:一 消息的持久化订阅 分别运行订阅模式和P2P模式,可以发现,P2P模式缺省把消息进行持久化,而topic模式是没有的。 一般topic模式实验: 1、 启动两个消费者,启动一个生产者,发送消息,两个消费者都可以收到。 2、 关闭一个消费者,生产者发送消息,活跃的消费者可以收到消息,启动被关闭的消费 阅读全文

posted @ 2020-06-22 22:33 鑫男 阅读(295) 评论(0) 推荐(0)

摘要:一 什么是消息中间件? 消息中间件(MQ)的定义 其实并没有标准定义。一般认为,消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成。 二 为什么要用消息中间件? 消息中间件主要解决分布式系统之间消息的传递,同时为分布式系 阅读全文

posted @ 2020-06-22 22:27 鑫男 阅读(318) 评论(0) 推荐(0)

摘要:一 类加载器 类加载器负责加载所有的类,其为所有被载入内存中的类生成一个java.lang.Class实例对象。一旦一个类被加载入JVM中,同一个类就不会被再次载入了。正如一个对象有一个唯一的标识一样,一个载入JVM的类也有一个唯一的标识。 唯一标识符: 在Java中,一个类用其全限定类名(包括包名 阅读全文

posted @ 2020-06-20 17:18 鑫男 阅读(192) 评论(0) 推荐(0)

摘要:图解排序算法(一)之3种简单排序(选择,冒泡,直接插入) 排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。 但是了解这些精妙的思想对我们还是大有裨益的。本文简单温习下最基础的三类算法:选择,冒泡,插入。 先定义个交 阅读全文

posted @ 2020-06-18 22:12 鑫男 阅读(231) 评论(0) 推荐(0)

摘要:我们知道,我们写的java文件是不能直接运行的,我们可以在IDEA中右键文件名点击运行,或者可以放到服务器上作为服务运行,这中间其实掺杂了一系列的复杂处理过程。 这篇文章,我们只讨论我们的代码在运行之前的一个环节,叫做类的加载。按照我写文章的常规惯例,先给出这篇文章的大致结构; 一、什么是类的加载 阅读全文

posted @ 2020-06-17 22:52 鑫男 阅读(225) 评论(0) 推荐(0)

摘要:一 栈 相关概念 栈是一种特殊的线性表 只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。 原则:后进先出LIFO(Last In First Out) 压栈:栈的插入操作,入数据在栈顶 出栈:栈的删除操作,出数据也在栈顶 我们来实现自己的栈 首先用数 阅读全文

posted @ 2020-06-14 10:03 鑫男 阅读(384) 评论(0) 推荐(0)

摘要:一 概念: 链表是一种数据结构,在内存中通过节点记录内存地址而相互链接形成一条链的储存方式。相比数组而言,链表在内存中不需要连续的区域,只需要每一个节点都能够记录下一个节点的内存地址,通过引用进行查找,这样的特点也就造就了链表增删操作时间消耗很小,而查找遍历时间消耗很大的特点。 我们日常在Java中 阅读全文

posted @ 2020-06-13 21:56 鑫男 阅读(259) 评论(0) 推荐(0)

摘要:本文主要内容: -》堆的回顾 -》各种垃圾收集器的介绍 1. 串行收集器2. 并行收集器3. CMS收集器4. G1收集器 堆的回顾: 新生代中的98%对象都是“朝生夕死”的,所以并不需要按照1:1的比例来划分内存空间,而是将内存分为一块比较大的Eden空间和两块较小的Survivor空间,每次使用 阅读全文

posted @ 2020-06-11 22:13 鑫男 阅读(201) 评论(0) 推荐(0)

摘要:一 GC做的事情 1 where/whice 堆和方法区 堆:想必都不难理解,存放所有对象,占用最大内存,也是GC主要工作的一块内存 方法区(也叫永久代):主要回收 废弃常量和无用的类 回收废弃常量:与回收java堆中的对象非常类似。以常量池中字面量的回收为例,假如一个字符串“abc”已经进入了常量 阅读全文

posted @ 2020-06-08 23:15 鑫男 阅读(196) 评论(0) 推荐(0)

摘要:一 概念 Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。 1 虚拟机的发展 目前我们用的都是HotSpot虚拟机 二 运行时内存区域划分 各区域解释 1 程序计数器:较小的内存空间, 阅读全文

posted @ 2020-06-07 21:20 鑫男 阅读(203) 评论(0) 推荐(0)

摘要:1、基本介绍 Runnable 是一个接口,在它里面只声明了一个 run()方法,由于 run()方法返回值为 void 类型,所以在执行完任务之后无法返回任何结果。 Callable 位于 java.util.concurrent 包下,它也是一个接口,在它里面也只声明 了一个方法,只不过这个方法 阅读全文

posted @ 2020-06-06 18:57 鑫男 阅读(294) 评论(0) 推荐(0)

摘要:一 countDownlatch(减一的B琐) 1 作用: 等待一组线程执行完成后,再执行接下来的业务(加强版的join) 2 基本原理 我们申请1个常量 static countDonwLatch latch = new countDonwLatch(3); 如服务启动时,我们有3个框架服务有先跑 阅读全文

posted @ 2020-06-06 02:34 鑫男 阅读(1194) 评论(0) 推荐(0)

摘要:一 等待和通知 介绍 等待/通知机制是指一个线程A调用了对象obejct的wait()方法进入等待状态,而另一个线程B调用了对象obejct的notify()或者notifyAll()方法,线程A收到通知后从对象obejct的wait()方法返回,进而执行后续操作。上述两个线程通过对象obejct来 阅读全文

posted @ 2020-06-06 02:33 鑫男 阅读(154) 评论(0) 推荐(0)

摘要:一 volatile 关键字 背景: 为了提高程序的运行效率,编译器会自动对其进行优化,把经常访问的变量缓存起来,程序在读取这些变量时,有可能会直接从缓存中来读取,而不会去内存中读取,这么做的好处是提高了程序效率,不过也有缺陷,当遇到多线程时,会遇到读取数据不一致的情况。 用途:volatile 是 阅读全文

posted @ 2020-06-06 02:29 鑫男 阅读(1289) 评论(0) 推荐(0)

导航