Java面向对象
文章平均质量分 80
天乔巴夏丶
这个作者很懒,什么都没留下…
展开
-
JPA:java.math.BigInteger cannot be cast to java.lang.Long,记录一次JPA使用遇到的坑
场景描述查询所有的plInfo的所有id,根据id列表进行删除redis缓存操作。主键id为long类型 /*** * 主键ID */ @Id @Column(name = "id") @GeneratedValue(generator = "idGenerator") private Long id;使用原生的sql查询,接收long类型id列表 @Query(value = "SELECT id FROM PlInfo ",na原创 2021-01-08 14:26:01 · 1333 阅读 · 0 评论 -
Java8的Optional:如何干掉空指针?
文章目录Optional概述Optional简单案例Optional的主要方法参考阅读Optional概述Optional 是个容器:它可以保存类型T的value,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测,很好地解决了空指针异常处理的问题,比如可以使用isPresent()方法判断value是否为null,使用get()方法获取value值等等。Optional的构造方法是私有的,实例不能new,可以使用静态方法来创建:// 1、创建一个包装对象值为空原创 2021-01-04 00:35:58 · 183 阅读 · 0 评论 -
聊一聊NIO的三大组件:Buffer、Channel和Selector
文章目录NIO是啥?BufferBuffer中的重要概念Buffer使用Demo常用方法介绍ChannelChannel概述RandomAccessFile#getChannelSocketChannel与ServerSocketChannelSelector参考阅读NIO是啥?NIO是Java从JDK1.4开始引入的一系列改进版输入输出处理手段,也就是New IO,简称NIO,也有说法叫NonBlocking IO,是同步非阻塞式的IO模型,准确地说它支持阻塞非阻塞两种模式。笔者在NIO、BIO、A原创 2021-01-03 14:17:18 · 268 阅读 · 0 评论 -
NIO、BIO、AIO、同步异步、阻塞非阻塞傻傻分不清楚?
文章目录阻塞与非阻塞阻塞IO非阻塞IO同步与异步同步IO异步IONIO与BIO的区别总结BIONIOAIO是啥?总结参考阅读以下内容摘自:敖丙肝了一个月的Netty知识点阻塞与非阻塞阻塞和非阻塞操作是针对发起的IO请求操作后是否立刻返回一个标志信息而不让请求线程等待,当数据准备未完成时,请求线程的状态:阻塞:往往需要等待缓冲区中的数据准备好过后才处理其他的事情,否则一直等待在那里。非阻塞:无论数据是否准备好,都会直接返回。阻塞IO非阻塞IO同步与异步同步与异步是基于应用程序和操作系原创 2021-01-02 16:56:46 · 785 阅读 · 4 评论 -
Java:利用BigDecimal类巧妙处理Double类型精度丢失
文章目录本篇要点经典问题:浮点数精度丢失十进制整数如何转化为二进制整数?十进制小数如何转化为二进制数?如何用BigDecimal解决double精度问题?new BigDecimal(double val)new BigDecimal(String val)BigDecimal.valueOf(double val)Double的加减乘除运算工具类阿里巴巴Java开发手册关于BigDecimal的规定参考阅读本篇要点简单描述浮点数十进制转二进制精度丢失的原因。介绍几种创建BigDecimal方式的区原创 2020-12-29 09:44:43 · 1373 阅读 · 0 评论 -
SpringData JPA利用Specification多条件查询
SpringData JPA遵循Eric Evans在Domain Driver Design一书中的规范,让你可以使用编程方式来构建多条件查询。快速开始关于SpringBoot与JPA的快速整合,已经在这篇文章中写的非常详细:SpringBoot整合Spring Data JPA,一些配置部分就不再赘述了,我们直接创建一个条件丰富一些的实体类做测试。创建实体类@Entity(name = "t_blog")@Data@AllArgsConstructor@NoArgsConstructor原创 2020-12-23 23:47:51 · 950 阅读 · 0 评论 -
详解Java中的IO输入输出流!
文章目录本片要点基本分类发展史文件字符流输出的基本结构流中的异常处理异常处理新方式读取的基本结构运用输入与输出完成复制效果文件字节流缓冲流字符缓冲流装饰设计模式转换流(适配器)适配器设计模式标准流/系统流标准流分类打印流合并流序列化/反序列化流序列化的意义序列化对象关于版本号自定义序列化的两种方法Serializable自定义Externalizable自定义参考阅读什么是流?流表示任何有能力产生数据的数据源对象或者是有能力接收数据的接收端对象,它屏蔽了实际的I/O设备中处理数据的细节。IO流是实现输原创 2020-12-18 00:41:17 · 187 阅读 · 0 评论 -
Java中Runtime类详细总结
文章目录Runtime类简介API列表经典案例exec获取信息注册钩子线程取消注册钩子线程终止!参考阅读Runtime类简介Java中,Runtime类提供了许多的API 来与java runtime environment进行交互,如:执行一个进程。调用垃圾回收。查看总内存和剩余内存。Runtime是单例的,可以通过Runtime.getRuntime()得到这个单例。API列表public static Runtime getRuntime()返回单例的Runtime实例原创 2020-12-16 23:04:12 · 3124 阅读 · 0 评论 -
谈谈使用Iterator操作集合的时候踩的几个坑
文章目录ConcurrentModificationExceptionUnsupportedOperationException移除指定数值ConcurrentModificationException网上关于集合类型使用Iterator遍历需要注意的事项想必大家都已熟知,如果你想要遍历的时候删除集合中的元素,如果你像下面这样写,是会报错的! public void testRemove() { Iterator<String> iterator = list.ite原创 2020-12-13 15:13:57 · 460 阅读 · 1 评论 -
Java8的Lambda表达式,你会不?
文章目录理解Lambda基础语法函数式接口常用的函数式接口消费型接口供给型接口断言型接口函数型接口方法引用数组引用构造器引用总结参考阅读理解LambdaLambda表达式可以是一段可以传递的代码,它的核心思想是将面向对象中的传递数据变成传递行为,也就是行为参数化,将不同的行为作为参数传入方法。随着函数式编程思想的引进,Lambda表达式让可以用更加简洁流畅的代码来代替之前冗余的Java代码。口说无凭,直接上个例子吧。在Java8之前,关于线程代码是这样的:class Task implements原创 2020-12-07 00:11:37 · 448 阅读 · 0 评论 -
Java:枚举类也就那么回事
文章目录一、前言二、源自一道面试题三、枚举的由来四、枚举的定义形式五、Enum类里有啥?1、唯一的构造器2、重要的方法们3、凭空出现的values()方法六、反编译枚举类七、枚举类实现单例八、参考资料一、前言本篇博客是对JDK1.5的新特性枚举的一波小小的总结,主要是昨天在看一部分面试题的时候,遇到了枚举类型的题目,发现自己有许多细节还需要加强,做起来都模棱两可,是时候总结一波了。二、源自一...原创 2020-02-22 20:45:00 · 236 阅读 · 0 评论 -
Java:不得不知的Object类
文章目录一、equals1、equals与==有啥区别?2、equals方法的规范3、instanceof 和getClass()4、其他总结二、hashCode1、hashCode的规范2、String类的hashCode实现三、toString1、打印对象信息2、论优雅打印数组3、自定义toString方法五、其他重要方法Class Object is the root of the cl...原创 2020-02-20 15:29:57 · 334 阅读 · 0 评论 -
Java学习笔记:反射机制
文章目录一、反射机制1、概述2、优缺点3、类加载的过程二、获取Class对象的三种方式1、Class.forName("全类名")2、类名.class3、对象.getClass()三、反射相关的方法四、Demo×21、尝试自己写一个clone()方法2、利用配置文件动态加载一、反射机制1、概述反射机制:将类的各个组成部分封装成其他对象,在运行状态中,可以动态获取类信息和调用类对象的方法。2...原创 2020-02-19 23:37:44 · 157 阅读 · 0 评论 -
【集合源码学习系列】:Vector与Enumeration
文章目录Vector源码学习Vector继承体系Vector核心源码基本属性构造器扩容机制Enumeration概述源码描述具体操作Vector总结Vector源码学习Vector是JDK1.0中的集合,是集合中的老大哥,其中大部分的方法都被synchronized关键字所修饰,与ArrayList和LinkedList不同,它是线程安全的(关于线程安全,之后学习再做系统总结)。但是随着一系列...原创 2020-01-17 23:05:44 · 224 阅读 · 0 评论 -
Java并发读书笔记:线程间正确通信的方法
文章目录一、synchronized 与 volatile二、等待/通知机制等待通知面试常问的几个问题sleep方法和wait方法的区别关于放弃对象监视器三、等待通知典型生产者消费者模型可能会出错的代码四、使用显式的Lock和ConditionCondition接口内的方法详解Condition与Lock配合Condition接口与Object监视器五、管道输入、输出流六、Thread.join(...原创 2020-02-15 23:24:29 · 284 阅读 · 0 评论 -
Java并发读书笔记:线程通信之等待通知机制
文章目录synchronized 与 volatile等待/通知机制等待通知面试常问的几个问题sleep方法和wait方法的区别关于放弃对象监视器在并发编程中,保证线程同步,从而实现线程之间正确通信,是一个值得考虑的问题。本篇将参考许多著名书籍,学习如何让多个线程之间相互配合,完成我们指定的任务。当然本文只是学习了一部分线程间通信的方法,还有一些例如使用Lock和Condition对象,管道输...原创 2020-02-13 22:49:01 · 154 阅读 · 0 评论 -
Java并发读书笔记:线程安全与互斥同步
文章目录导致线程不安全的原因什么是线程安全不可变绝对线程安全相对线程安全线程兼容线程对立互斥同步实现线程安全synchronized内置锁锁即对象是否要释放锁实现原理啥是重进入?ReentrantLock(重入锁)API层面的互斥锁等待可中断公平锁锁绑定本篇参考许多著名的书籍,形成读书笔记,便于加深记忆。前文传送门:Java并发读书笔记:JMM与重排序导致线程不安全的原因当一个变量被多个线...原创 2020-02-12 22:46:06 · 220 阅读 · 0 评论 -
Java并发学习笔记:JMM与重排序
文章目录Java内存模型(JMM)JMM抽象结构重排序源码->最终指令序列编译器重排序处理器重排序数据依赖性as-if-serialhappens-beforehappens-before的规则happens-before关系的定义重排序对多线程的影响顺序一致性数据竞争与顺序的一致性顺序一致性内存模型JMM处理同步程序JMM处理非同步程序总结JMM遵循的基本原则:as-if-serial与h...原创 2020-02-11 19:48:07 · 419 阅读 · 0 评论 -
Java:谈谈控制线程的几种办法
文章目录Java:谈谈控制线程的几种办法join()sleep()守护线程主要方法需要注意优先级弃用三兄弟stop()resumesuspend中断三兄弟interrupt()interrupted()isInterrupted()安全终止线程前文传送门:Java:多线程概述与创建方式Java:线程的六种状态及转化Java:谈谈控制线程的几种办法控制线程的办法诸多,本篇做出一部分整理总结...原创 2020-02-10 16:11:57 · 325 阅读 · 0 评论 -
Java:线程的六种状态及转化
文章目录Java:线程的六种状态及转化一、新建状态(NEW)二、运行状态(RUNNABLE)就绪状态(READY)其他状态 ->就绪运行状态(RUNNING)三、阻塞状态(BLOCKED)四、等待状态(WAITING)运行->等待等待->就绪五、超时等待状态(TIMED_WAITING)运行->超时等待超时等待->就绪六、消亡状态前文传送门:多线程概述及创建方式J...原创 2020-02-09 20:50:00 · 724 阅读 · 1 评论 -
Java:多线程概述与创建方式
文章目录Java:多线程概述与创建方式进程和线程并发与并行多线程的优势线程的创建和启动继承Thread类start()和run()实现Runnable接口实现Callable接口创建方式的区别Java:多线程概述与创建方式在之前的学习过程中,已经不止一次地提到了并发啊,线程啊,同步异步的内容,但是出于内容的局部一体,之前总是几笔带过,并附上:以后学习的时候再细说。那么,现在到了细说的时候,在...原创 2020-02-08 20:49:17 · 206 阅读 · 1 评论 -
小白学Java:RandomAccessFile
文章目录小白学Java:RandomAccessFile概述继承与实现构造器模式设置文件指针操作数据读取数据read(byte b[])与read()public int read()public int read(byte b[])总结追加数据插入数据小白学Java:RandomAccessFile之前我们所学习的所有的流在对数据操作的时候,都是只读或者只写的,使用这些流打开的文件很难进行更...原创 2020-02-05 11:54:12 · 267 阅读 · 0 评论 -
小白学Java:I/O流
文章目录小白学Java:I/O流基本分类发展史文件字符流输出的基本结构流中的异常处理异常处理新方式读取的基本结构运用输入与输出文件字节流缓冲流字符缓冲流装饰设计模式转换流(适配器)适配器设计模式标准流/系统流标准流分类打印流合并流序列化/反序列化流序列化对象小白学Java:I/O流流,表示任何有能力产生数据的数据源对象或者是有能力接收数据的接收端对象,它屏蔽了实际的I/O设备中处理数据的细节...原创 2020-02-03 17:47:34 · 282 阅读 · 0 评论 -
Java中使用File类对文件操作详解!
文章目录小白学Java:File类不同风格的分隔符绝对与相对路径File类常用方法常用构造器创建方法判断方法获取方法命名方法删除方法小白学Java:File类我们可以知道,存储在程序中的数据是暂时的,在程序终止的时候,存储在程序中的数据就会丢失。我们通常为了永久地保存在程序中创建地数据,需要将它们存储到磁盘上或者其他永久存储设备的文件中,这些文件之后可以被其他的程序传输和读取。而java.i...原创 2020-02-01 17:36:38 · 542 阅读 · 1 评论 -
小白学Java:内部类
文章目录小白学Java:内部类内部类的分类成员内部类链接到外部类.new和.this局部内部类方法作用域内部类任意作用域内的内部类静态内部类匿名内部类内部类的继承内部类有啥用小白学Java:内部类内部类是封装的一种形式,是定义在类或接口中的类。内部类的分类成员内部类即定义的内部类作为外部类的一个普通成员(非static),就像下面这样:public class Outer { ...原创 2020-01-31 16:48:56 · 230 阅读 · 0 评论 -
小白学Java:奇怪的RandomAccess
文章目录小白学Java:奇怪的RandomAccessRandomAccess是个啥forLoop与Iterator的区别判断是否为RandomAccess小白学Java:奇怪的RandomAccess我们之前在分析那三个集合源码的时候,曾经说到:ArrayList和Vector继承了RandomAccess接口,但是LinkedList并没有,我们还知道继承了这个接口,就意味着其中元素支持快...原创 2020-01-20 19:14:14 · 134 阅读 · 0 评论 -
小白学Java:迭代器原来是这么回事
文章目录小白学Java:迭代器原来是这么回事迭代器概述迭代器设计模式Iterator定义的方法迭代器:统一方式Iterator的总结小白学Java:迭代器原来是这么回事上一篇,我们谈到了那个古老的迭代器Enumeration,还谈到了取代他的新迭代器——Iterator。相比于以往,这个新物种又有哪些优点呢?迭代器这个词,在没查找许多资料之前,我只知道个大概,我知道它可以用来遍历集合,但是至...原创 2020-01-18 20:00:13 · 258 阅读 · 0 评论 -
【集合源码学习系列】:LinkedList
文章目录LinkedList 源码学习LinkedList继承体系LinkedList核心源码Deque相关操作总结LinkedList 源码学习本篇为集合源码学习系列的LinkedList学习部分,如有叙述不当之处,还望评论区批评指正!LinkedList继承体系LinkedList和ArrayList一样,都实现了List接口,都代表着列表结构,都有着类似的add,remove,cl...原创 2020-01-17 16:02:27 · 140 阅读 · 0 评论 -
707.设计双向链表
文章目录707.设计双向链表链表简介题目描述代码实现707.设计双向链表链表简介链表(LinkedList) 是一种线性表,但不是顺序表,因为它是通过节点直接的相互引用相互联系起来的。由于不必按顺序存储,链表在插入和删除的时候可以达到O(1)的复杂度,比顺序表快的多。但是查找一个节点或者访问特定编号的节点则需要O(n)的时间。使用链表结构可以克服数组链表需要预先知道数据大小的缺点,充分...原创 2020-01-16 21:05:23 · 189 阅读 · 0 评论 -
【集合源码学习系列】:ArrayList
文章目录ArrayList源码学习ArrayList的继承体系ArrayList核心源码ArrayList扩容机制最后的总结ArrayList源码学习本文基于JDK1.8版本,对集合中的巨头ArrayList做一定的源码学习,将会参考大量资料,在文章后面都将会给出参考文章链接,本文用以巩固学习知识。ArrayList的继承体系ArrayList继承了AbstracList这个抽象类,还实...原创 2020-01-15 21:15:13 · 144 阅读 · 0 评论 -
小白学Java:老师!泛型我懂了!
文章目录小白学Java:老师!泛型我懂了!泛型概述定义泛型泛型类的定义泛型方法的定义类型变量的限定原生类型与向后兼容通配泛型非受限通配受限通配下限通配泛型的擦除和限制类型擦除类型擦除造成的限制小白学Java:老师!泛型我懂了!泛型概述使用泛型机制编写的程序代码要比哪些杂乱地使用Object变量,然后再进行强制类型转换地代码具有更好的安全性和可读性。以上摘自《Java核心技术卷一》在谈...原创 2020-01-14 00:09:06 · 301 阅读 · 0 评论 -
小白学Java:包装类
文章目录小白学Java:包装类包装类的继承关系创建包装类实例自动装箱与拆箱自动装箱自动拆箱包装类型的比较"=="比较equals比较自动装箱与拆箱引发的弊端自动装箱弊端自动拆箱引起的空指针小白学Java:包装类学习了许久的Java,我们知道Java是一种面向对象的语言,万物皆对象。但是我们之前在说到Java基本数据类型的时候,由于处理对象需要额外的系统开销,于是出于对性能的考虑,基本数据类型并...原创 2020-01-12 22:59:02 · 181 阅读 · 0 评论 -
Java面向对象之异常详解
文章目录Java面向对象之异常【一】异常的继承体系ErrorException异常是否受检unchecked exceptions(不受检异常)checked exceptions(受检异常)异常的处理方式自定义异常异常的捕获方式Java面向对象之异常【二】捕获异常的规则访问异常信息异常对方法重写的影响finally详解Java面向对象之异常【一】终于完成本学期的最后一门考试,考试周的我,边复...原创 2020-01-11 19:28:35 · 524 阅读 · 0 评论 -
浅谈Java中接口与抽象类的异同
浅谈Java中接口与抽象类的异同抽象类和接口这两个概念困扰了我许久,在我看来,接口与抽象类真的十分相似。期间也曾找过许许多多的资料,参考了各路大神的见解,也只能是简简单单地在语法上懂得两者的区别。硬着头皮,做出一波小总结。或许,学习了之后的知识,理解会更加深刻吧,奥利给!语法上的区别一个类最多只能继承一个抽象类,但是可以继承多个接口。接口中的变量声明默认是final的,但是抽象类中...原创 2020-01-04 16:44:38 · 184 阅读 · 0 评论 -
浅谈Java的默认和静态方法
文章目录浅谈Java的默认和静态方法Java新增默认方法有啥用Java新增的静态方法有啥用浅谈Java的默认和静态方法允许在接口中声明默认方法和静态方法,是JDK1.8新增的特性。存在即合理,两者的出现,让接口越来越像抽象类(关于两者之别下一篇做总结),那么它们为什么出现呢,它们的出现产生了哪些便利,Java小白开始学习并总结,不足之处,还望评论区指点一二!Java新增默认方法有啥用官方解...原创 2020-01-02 21:59:40 · 224 阅读 · 0 评论 -
Java之String类常用API
文章目录Java之String类常用APIchar chatAt(int index)int length()char[] toCharArray()String(char value[])String(char value[], int offset, int count)int compareTo(String anotherString)String concat(String str)bo...原创 2019-12-29 17:51:10 · 318 阅读 · 0 评论 -
Java之抽象类与抽象方法
文章目录Java之抽象类与抽象方法抽象概念抽象类与方法注意事项Java之抽象类与抽象方法抽象概念本篇关键词是抽象,那么何为抽象?百度百科告诉我们,抽象就是概括具体事务共同的方面、本质属性等,而将个别的方面、属性等舍弃的思维过程。在Java里,也就是把各个具体的类中共有的方法提取出来,放到基类之中,而基类并不需要了解子类中该方法具体是怎么实现的,这个基类就是所谓的抽象类,这些不需要知道具体实现...原创 2019-12-23 00:28:47 · 347 阅读 · 0 评论 -
Java面向对象之初始化块
文章目录Java面向对象之初始化块普通初始化块静态初始化块初始化块与构造器Java面向对象之初始化块在程序设计中,让数据域正确地执行初始化一直是一个亘古不变的真理。那么,有哪些手段可以初始化数据域呢:在构造器中设置值。在声明中赋值。使用初始化块。本篇探讨关于Java中的初始化块的注意点:Java中的初始化块是类中的一种成员,但是既没有名字,也没有标识,不能够被调用,它仅仅只是在创...原创 2019-12-20 20:58:52 · 148 阅读 · 1 评论 -
Java多态之向下转型
文章目录Java多态之向下转型强制类型转换instanceofJava多态之向下转型往期回顾:我们学习了向上转型和动态绑定的概念,可以知道在继承关系中,将一个子类对象赋值给父类的引用变量,调用父类的方法,在实际运行时,就可以根据子类中重写的方法执行不同的操作。其中有一个弊端,就是在向上转型的过程中,其实丢失了一部分子类特有的功能,毕竟它只允许调用父类中的方法。那么,如何在这时调用子类中的方法...原创 2019-12-19 20:05:51 · 221 阅读 · 0 评论 -
Java关键字之final详解
文章目录Java中final修饰的数据有初始值的final域final+基本数据类型final+引用数据类型final与static final空白final域final修饰的参数基本数据类型的参数引用数据类型的参数Java中final修饰的方法Java中final修饰的类final是Java中的一个重要关键字,本篇将从final修饰数据、方法和类三个角度做出总结。Java中final修饰的数...原创 2019-12-18 15:48:02 · 1266 阅读 · 0 评论