随笔分类 -  Java

Java相关
摘要:思维导图svg: https://note.youdao.com/ynoteshare1/index.html?id=eb05fdceddd07759b8b82c5b9094021a&type=note 在多线程使用共享资源的时候, 我们可以使用synchronized来锁定共享资源,使得同一时刻, 阅读全文
posted @ 2020-06-30 15:36 Ryan.Miao 阅读(7510) 评论(2) 推荐(3) 编辑
摘要:我写的NPE 虽然不多, 但几乎每次系统出问题的时候,看到api返回值是空的,绝大多数是NPE造成的。 这时候会感慨一下谁写的bug,然后去补判空代码。 最近抽风,开始给自己写的代码添加UnitTest, 有时间就保证覆盖率90%吧,于是就发现了 隐藏NPE, 这在正常访问不会触发的NPE。 暂时收 阅读全文
posted @ 2019-07-16 20:26 Ryan.Miao 阅读(7092) 评论(0) 推荐(0) 编辑
摘要:如何忽略Findbugs的bug 除了用xml的形式去忽略一些文件和bug。最好用的还是注解: 下面的方法会有MT_CORRECTNESS和STYLE的bug。注解忽略方法为: 需要添加以下依赖 阅读全文
posted @ 2019-07-16 20:21 Ryan.Miao 阅读(2120) 评论(0) 推荐(0) 编辑
摘要:代理(proxy) 利用代理可以在运行时创建一个实现了一组给定接口的新类。这种功能只有在编译时无法确定需要实现哪个接口时才有必要使用。 何时使用代理 假设有一个表示接口的Class对象(有可能只包含一个接口),它的确切类型在编译时无法知道。要想构造一个实现这些接口的类,就需要使用newInstanc 阅读全文
posted @ 2019-06-25 21:03 Ryan.Miao 阅读(16234) 评论(1) 推荐(3) 编辑
摘要:内部类(inner class)是定义在另一个类中的类。 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据。 内部类可以对同一个包中的其他类隐藏起来 当想定义一个回调函数且不想编写大量代码时,使用匿名(anonymous)内部类比较便捷。 以下简单举例: 一个时钟需要两个参数:发布通告 阅读全文
posted @ 2019-05-16 20:06 Ryan.Miao 阅读(2762) 评论(0) 推荐(0) 编辑
摘要:很想要用Java的时间api,但有时候还是需要转换为Date. 二者的相互转换并不是一步到位那么简单,所以,还是需要记录一下转换的api Date to LocalDateTime LocalDateTime to Date DateUtils 来源 https://howtodoinjava.co 阅读全文
posted @ 2019-05-16 19:25 Ryan.Miao 阅读(92621) 评论(0) 推荐(4) 编辑
摘要:使用redisson cache来实现一个缓存功能,缓存省市县的名称,key是区域编码,integer,value是name。结果取的时候,怎么都取不出。 找了半天问题才发现regionsMap的key都是字符串。 java.lang.ClassCastException: java.lang.St 阅读全文
posted @ 2019-04-23 20:47 Ryan.Miao 阅读(7461) 评论(0) 推荐(0) 编辑
摘要:前言 本次学习面向对象设计的另外一个基本概念:继承(inheritance)。这是Java程序设计中的一项核心技术。另外,还要学习反射(reflection)的概念。 继承 类、超类、子类 关键字extends表明正在构造的新类派生于一个已存在的类。已存在的类称为 超类(superclass) 、 阅读全文
posted @ 2018-07-11 08:40 Ryan.Miao 阅读(777) 评论(0) 推荐(3) 编辑
摘要:回顾基础知识过程中遇到的感觉需要记录一下的知识点。 封装 我们设计的class应当尽可能的高内聚,体现为封装的程度。一个class的属性应该只能自己修改,其他class都只是与本class沟通,而不应该有能力修改。比较常见的一个问题是Date属性。 业务开发中经常需要设计class的日期属性,比如b 阅读全文
posted @ 2018-07-07 15:34 Ryan.Miao 阅读(517) 评论(0) 推荐(1) 编辑
摘要:数据类型 整形 | type | 存储 | 取值范围 | | | | | |int | 4字节 | 2 147 483 648 ~ 2 147 483 647 (超过20亿) | short | 2字节 | 32 768 ~ 32 7677 | | long | 8字节 | 9 223 372 03 阅读全文
posted @ 2018-07-06 17:05 Ryan.Miao 阅读(425) 评论(0) 推荐(0) 编辑
摘要:前言 Java8的date API一经推出便广受好评,今日也准备用一用,然后就用出问题了。基本用法见https://www.cnblogs.com/woshimrf/p/java8 date api.html 问题 LocalDate可以很友好的toString为 的格式,很适合我当前的业务,但当我 阅读全文
posted @ 2018-05-30 08:43 Ryan.Miao 阅读(10781) 评论(2) 推荐(0) 编辑
摘要:前言 由于Java Date的各种问题,Java8推出了新的日期API,很受一拨人的追捧。 为什么我们需要新的Java日期/时间API? 在开始研究Java 8日期/时间API之前,让我们先来看一下为什么我们需要这样一个新的API。在Java中,现有的与日期和时间相关的类存在诸多问题,其中有: Ja 阅读全文
posted @ 2018-05-29 19:15 Ryan.Miao 阅读(9161) 评论(0) 推荐(2) 编辑
摘要:上一节学习了Java8中比较常用的内置collector的用法。接下来就来理解下collector的组成。 Collector定义 Collector接口包含了一系列方法,为实现具体的归约操作(即收集器)提供了范本。我们已经看过了Collector接口中实现的许多收集器,例如toList或group 阅读全文
posted @ 2018-04-24 00:08 Ryan.Miao 阅读(11144) 评论(1) 推荐(6) 编辑
摘要:Collection, Collections, collect, Collector, Collectos 是Java集合的祖先接口。 是`java.util`包下的一个工具类,内涵各种处理集合的静态方法。 是Stream的一个函数,负责收集流。 是一个收集函数的接口, 声明了一个收集器的功能。 阅读全文
posted @ 2018-04-20 08:20 Ryan.Miao 阅读(11555) 评论(1) 推荐(3) 编辑
摘要:问题 当下互联网技术成熟,越来越多的趋向去中心化、分布式、流计算,使得很多以前在数据库侧做的事情放到了Java端。今天有人问道,如果数据库字段没有索引,那么应该如何根据该字段去重?大家都一致认为用Java来做,但怎么做呢? 解答 忽然想起以前写过list去重的文章,找出来一看。做法就是将list中对 阅读全文
posted @ 2018-04-12 08:15 Ryan.Miao 阅读(77927) 评论(6) 推荐(17) 编辑
摘要:Stream的创建方式有很多种,除了最常见的集合创建,还有其他几种方式。 List转Stream List继承自Collection接口,而Collection提供了stream()方法。 数组转stream 对于数组,Arrays提供了stream()方法。 Map转stream Map并不是一个 阅读全文
posted @ 2018-04-04 23:46 Ryan.Miao 阅读(2975) 评论(0) 推荐(2) 编辑
摘要:在Stream里元素都是对象,那么,当我们操作一个数字流的时候就不得不考虑一个问题,拆箱和装箱。虽然自动拆箱不需要我们处理,但依旧有隐含的成本在里面。Java8引入了3个原始类型特化流接口来解决这个问题:IntStream,DoubleStream,LongStream, 分别将流中的元素特化为in 阅读全文
posted @ 2018-04-03 14:52 Ryan.Miao 阅读(3415) 评论(0) 推荐(0) 编辑
摘要:Stream和Collection的区别是什么 流和集合的区别是什么? 粗略地说, 集合和流之间的差异就在于 什么时候 进行计算。集合是一个内存中的数据结构,它包含数据结构中目前所有的值 集合中的每个元素都得先计算出来才能添加到内存里。(你可以往集合里加东西或者删东西,但是不管什么时候,集合中的每个 阅读全文
posted @ 2018-04-02 17:47 Ryan.Miao 阅读(1638) 评论(0) 推荐(0) 编辑
摘要:垃圾收集算法 标记 清除算法 最基础的收集算法是“标记 清除”(Mark Sweep)算法,分两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。 不足:一个是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可 阅读全文
posted @ 2018-03-16 19:57 Ryan.Miao 阅读(36784) 评论(8) 推荐(15) 编辑
摘要:前言 数组是我们最常用最简单的数据结构,Java里对数组做了一个简单的包装,就是ArrayList,提供自动扩容的功能。 最常用法 list在我们日常代码中最为常用的做法是创建一个list,放入数据,取出数据。如下: 下面,将从构造函数开始读取源码。 构造器 第一步,构造一个list对象 注释写的很 阅读全文
posted @ 2018-03-01 07:19 Ryan.Miao 阅读(1156) 评论(2) 推荐(3) 编辑

点击右上角即可分享
微信分享提示