java
文章平均质量分 87
GDUT_Ember
这个作者很懒,什么都没留下…
展开
-
JDK1.8新特性(三):并行流、串行流与Optional容器
并行流、串行流并行流Fork/Join框架串行流Optional容器Optional常用方法并行流、串行流前面提到过,JDK1.8提供了StreamAPI,而Stream又分为两种并行流顺序流并行流并行流其实就是把一个内容分成多个数据块,并使用不同的线程分别处理每个数据块的流Fork/Join框架并行流底层的实现就是Fork/Join框架这个框架的本质原理就是将任务不断拆分成小任务(拆到不能再拆),将每个小任务交给多线程去执行,最后进行归并,小任务完成的结果进行合并成大任务的结果多.原创 2021-09-28 23:14:16 · 189 阅读 · 0 评论 -
JDK1.8新特性(四):接口、线程安全的时间与注解
接口中的默认方法与静态方法线程安全的时间格式化SimpleDateFormat的多线程安全问题解决方案时间类时间戳时间与日期间隔时间校正器:TemporalAdjuster时间格式化:DateTimeFormatter时区处理注解重复注解类型注解接口中的默认方法与静态方法JDK1.8支持在接口中有默认方法与静态方法了,之前接口用只能有抽象方法和静态常量default:修饰接口的默认实现(为了提高兼容性,假如一个接口增加了方法,那么实现类都需要去实现新增的方法,所以添加了默认实现,让以前的实现类不需.原创 2021-09-28 23:12:57 · 589 阅读 · 0 评论 -
JDK1.8新特性(三):并行流、串行流与Optional容器
并行流、串行流前面提到过,JDK1.8提供了StreamAPI,而Stream又分为两种并行流顺序流并行流并行流其实就是把一个内容分成多个数据块,并使用不同的线程分别处理每个数据块的流Fork/Join框架并行流底层的实现就是Fork/Join框架这个框架的本质原理就是将任务不断拆分成小任务(拆到不能再拆),将每个小任务交给多线程去执行,最后进行归并,小任务完成的结果进行合并成大任务的结果多线程的好处就是可以尽量避免由于阻塞带来的性能浪费,而且还有一个任务偷窃的效果,CPU将任务放入线原创 2021-09-27 23:15:02 · 345 阅读 · 0 评论 -
# JDK1.8新特性(二):Stream API
Stream对Stream的操作获取Stream操作中间操作,一系列流水操作过滤、截断、跳过、筛选过滤:stream的filter方法截断:stream的limit方法跳过:stream的skip方法筛选:stream的distinct方法映射排序中止操作allMatchanyMatchnoneMatchfindFirstfindAnycountmaxmin归约与收集归约map-reduce模式收集归约与收集的区别Java8两个最为重要的改变Lambda表达式Stream APIStream.原创 2021-09-27 21:59:35 · 205 阅读 · 0 评论 -
JDK1.8新特性(一):lambda表达式
lambda表达式总结:lambdaJava8的四大内置核心函数式接口方法引用与构造器引用方法引用第一种引用第二种引用第三种引用构造器引用数组引用lambda表达式概念:lambda表达式是一个匿名函数,**可以理解成lambda是一段可以传递的代码!**可以写出更简洁、更灵活的代码。提升java的语言表达能力lambda表达式常用于函数式接口,也就是只有一个抽象方法的接口,简化了匿名内部类的使用!比如Compartor接口演化过程比如Compartor接口再没有Compartor接口前,.原创 2021-09-23 17:45:18 · 192 阅读 · 0 评论 -
2021-06-05# Java基础(dayFourteen):锁的两种方式
并发同步锁对象ReentrantLock公平锁条件对象synchronized关键字静态同步方法同步块并发同步当两个或两个以上的线程需要共享对同一数据的存取或修改时,会发生覆盖现象,覆盖情况取决于线程调度器先调度哪一个线程,这种情况通常称为竞态条件锁对象Java提供两种机制防止并发访问代码块Synchronized关键字ReentrantLock类ReentrantLock使用ReentrantLock来进行加锁的话,都是要用在try语句上(即lock方法后面必须紧跟try语句),最后.原创 2021-06-05 23:21:54 · 129 阅读 · 1 评论 -
Java基础(dayThirteen):并发与多线程
并发实现多线程的方式实现Runable接口继承Thread类线程状态新建线程可运行线程阻塞和等待线程终止线程线程属性中断线程守护线程线程的优先级并发进程其实相当于就是服务器提供的一种服务,更实际一点就是对应一个端口,而进程可以拥有多个线程,一个进程里面的线程是共享资源的,而不同进程是不共享资源的并发执行的进程数目并不受限于CPU的数目,因为操作系统对于每个进程的处理是,为每个进程分配CPU时间片,即规定CPU哪段时间去执行哪个进程,看起来像是并行处理的效果,实则上一个时间段还是只可以处理一个进程实.原创 2021-06-05 11:50:54 · 93 阅读 · 1 评论 -
Java基础复习(DayTwelve):异常、断言
异常分类Exception异常处理方式抛出异常捕捉异常再次抛出异常与异常链finally子句try-with-Resources语句断言异常分类异常对象都是派生于Throwable类的一个类实例在下一层立即分解为了两个分支:Error和ExceptionError:该类层次结构描述了Java运行时系统的内部错误或资源耗尽错误,应用程序不应该会抛出这种类型的对象,如果出现了这种对象,除了终止程序、通知用户之外,其他都做不了Exception:该类层次结构描述了异常,一般是由于设计有误、代码错误.原创 2021-06-03 21:11:23 · 122 阅读 · 1 评论 -
Java基础复习(DayEleven):内部类与代理
内部类创建内部类内部类调用外部类的变量局部内部类外部方法访问变量匿名内部类lambda表达式结合局部内部类静态内部类代理内部类内部类是指在另一个类中的类内部类可以对同一个包中的所有类隐藏(权限改为private)内部类方法可以访问定义这个类的作用域中的数据,包括原本私有的数据注意:内部类位于类的内部,并不意味着类的实例都必须要有内部类的实例内部类是可以访问定义这个类的属性的,因为内部类的对象总有一个隐式引用,指向创建它的外部类对象对于一般的类,只有包可见性和公共可见性(一个是缺省,另一个.原创 2021-06-02 22:21:42 · 120 阅读 · 2 评论 -
Java基础复习(DayTen):lambda表达式
lambda表达式的使用函数式接口方法引用构造方法引用使用总结lambda变量作用域对lambda表达式的处理lambda表达式是一个可传递的代码块,可以在以后执行一次或者多次,所以lambda实现的功能就是传递代码块lamdba表达式其实就是一段代码块,以及必须传入的参数表达形式为:参数,箭头(->)以及一个表达式lambda表达式的使用函数式接口lambda一般使用在函数式接口,函数式接口是指只有一个抽象方法的接口,注意这里是只有一个抽象方法的接口,但接口可以有默认实现,也就是不抽.原创 2021-05-26 20:57:04 · 153 阅读 · 1 评论 -
Java基础复习(DayNight):克隆与两个比较接口
对象克隆深拷贝与克隆的实现Comparable和Compartor接口Comparable接口Compartor接口对象克隆Java中实现克隆的接口是Cloneable接口,这个接口指示了一个类提供了一个安全的clone方法首先认识一下克隆和拷贝的具体含义一个包含对象引用的变量建立副本时,原变量和副本都是通过一个对象的引用,也就是无论是对象变量还是对象本身,副本和其都是一致的,也就是改变副本也会改变原来的引用。可以看到建立副本与原来的引用是一致的,引用变量也是一致的,那么只要修改其中一边的值,.原创 2021-05-25 23:14:29 · 229 阅读 · 2 评论 -
# Java基础复习(DayEight):接口与抽象类与接口
接口不可以提供什么接口的属性接口与抽象类接口的静态和私有方法接口的默认方法接口默认方法冲突实现类调用接口的默认方法抽象类和接口的区别接口并不是类,而是对希望符合这个接口的类的一组需求,可以理解成是规范接口中的所有方法的权限修饰符都自动变成是public,所以在接口中声明方法时,不需要提供关键字public,如果使用其他关键字则会报错接口不可以提供什么接口绝不能有实例字段,也就是不允许存在属性在java8之前接口里面的方法是绝对不能有具体实现的,不过在java8之后,是可以有默认实现的,.原创 2021-05-25 17:49:02 · 97 阅读 · 1 评论 -
Java基础复习(DaySeven):自动装箱与拆箱、反射、异常
对象包装器与自动装箱自动装箱与自动拆箱反射Class类反射主要的对象反射调用方法和获取属性构造实例获取属性调用方法异常对象包装器与自动装箱所有的基本类型都有一个与之对应的类。这些类一般被称为包装器(wrapper)byte对应Byteshort对应Shortint对应Integerlong对应Longdouble对应Doublefloat对应Floatchar对应Characterboolean对应Boolean而且与整形和浮点型相关的都会继承公共.原创 2021-05-23 19:52:53 · 192 阅读 · 2 评论 -
Java基础复习(DaySix):继承与反射、hashCode与equals
继承覆盖方法多态阻止继承:final类和方法强制类型转化抽象类权限修饰符Object:所有类的超类Object的equals方法相等测试与继承hashcode方法关于hashcode与equals方法继承前面提到过,继承是基于已有的类去进行扩展建立新类的过程,不仅有父类的所有变量和方法,包括私人权限的(只不过自己也不可以调用而已,不过还是拥有的),可以扩展自己的变量和方法,也可以去重写父类的方法,可以更好地去设计类。覆盖方法super关键字的作用是指向父类,假设子类中出现与父类同名的的方法,在子类.原创 2021-05-19 16:51:36 · 172 阅读 · 1 评论 -
Java基础(dayFifth):构造器
对象构造重载构造器this关键字初始化块(不是静态代码块)调用构造器的具体步骤对象构造重载相同的名字,不同的参数,便是重载,对方法的返回值没有限制。构造器仅仅当类没有任何其他构造器的时候,才会得到一个默认的无参构造器,如果有自定义的构造器,那么要想使用无参构造器,也要去写一个。this关键字this指示的是隐式参数,也就是所构造的对象,也就是指向自己,可以用其来区分本类的参数和外部的参数,也可以用来调用本类的方法,也可以用来调用构造器,不过只可以在构造方法中调用,而且不是同一个方法,也就是t.原创 2021-05-17 23:23:14 · 82 阅读 · 2 评论 -
Java基础复习(DayFour):拾遗、对象与类、面向对象三大特性、final与static、方法参数
大数数组数组的排序OOP、OPP概念理解OOP三大特性封装继承多态final关键字与static关键字方法参数大数大数也是一个引用对象BigInteger:前面提到过,如果转为unsigned连long类型的字节都不够会怎么办,其实就是转化成大数BigBigDecimalBigInteger可以实现任意精度的整数运算BigDecimal可以实现任意精度的浮点数运算他们的方法API也比较类似add :加法subtract:减法multiply:乘法divide:触发mod:求余.原创 2021-05-15 09:56:27 · 125 阅读 · 0 评论 -
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
字符串从概念上讲,字符串其实就是Unicode编码,前面数据类型提到过,字符类型存储的是utf-16的一个代码区间,只能表示大部分的字符(因为只有2个字节,一个代码区间就占16位了),但对于少数的还是无法表示,而字符串常量(String)可以占多个字节,所以它可以将两个代码区间都保留起来,表示任何字符。不可变我们可以看到String是一个final类,一旦创建了该类,就是一个常量了,不可以被修改创建字符串的方法大体有两种第一种String temp = "a";这种方式,会先去找字符串常量原创 2021-05-14 15:12:11 · 118 阅读 · 1 评论 -
Java基础复习(DayTwo):变量常量(枚举)与基本数据类型转化
变量与常量变量常量类常量枚举类型算术运算符数学函数与常量(Math)数值类型之间的转换变量与常量变量变量是指值不变的值变量名必须是一个以字母开头并由字母或者数字构成的序列(但在这个字母和数字的范围是比一般的广,不仅仅是一般字母,还有在某种语言中表示字母的任何Unicode字符),由以下几条规则必须以字母、下划线、或者美元符号开头中文也可以作为命令开头且可以通过编译除开头外,后面的部分可以有字母、下划线、美元符号以及数字组成也可以是中文,但前提是前面的也是中文变量名不可以与关.原创 2021-05-13 23:16:04 · 273 阅读 · 2 评论 -
Java基础复习DayOne:数据类型,细讲char类型与编码关系
开头整形Byte.toUnsignedIntInteger.divideUnsignedInteger.remainderUnsignedLong.divideUnsigned浮点型字符型UnicodeUTF-8UTF-16布尔类型开头Java是一种强类型的语言,这意味着必须为每一个变量声明一种类型Java中一共有8种基本数据类型(整形有4种,浮点型有2种,字符型1种,还有一种布尔类型)由于Java程序必须保证在所有机器上都能得到相同的运行结果,所以各种数据类型的取值范围必须是固定的整形整形共.原创 2021-05-12 20:55:51 · 279 阅读 · 2 评论 -
Java递归实现文章多级评论
记录最近在模仿简书来自己写接口,简单的CRUD就不说了,直到碰到了文章的多级评论,发现怎么设计SQL都只能实现二级评论,就是在在实体类里面加上下一级评论的属性。解决方案多级评论其实就是一个评论下可以再被评论,那么找所有评论不就是找到最上级评论,然后遍历最上级的评论,找到每一个上级评论的下级评论,整个过程其实就是一个简单的递归。实现这是我的数据库表comment_status是标记这个评论是不是最上级评论(0:是,1:不是)这是DTO对象/** * @Author: Ember * @D原创 2021-04-14 16:46:30 · 2011 阅读 · 23 评论