草庐IT

kotlin-stdlib-jdk

全部标签

Kotlin用@Parcelize实现序列化Parcelable

简介在Android项目中经常要对Bean进行Parcelable序列化,也有很多序列化工具。Android中提倡通过实现Parcelable来对对象序列化,但是如果是使用Java开发实现起来就比较繁琐,而Kotlin提供了@Parcelize,可以轻松实现对Bean的序列化及反序列话。先看看官方对@Parcelize的解析:/***InstructstheKotlincompilertogenerate`writeToParcel()`,`describeContents()`[android.os.Parcelable]methods,*aswellasa`CREATOR`factoryc

JDK各版本特性总结

目录JavaSE1.0JavaSE1.1JavaSE1.2JavaSE1.3JavaSE1.4JavaSE5JavaSE6JavaSE7JavaSE8(LTS)JavaSE9JavaSE10JavaSE11(LTS)JavaSE12JavaSE13JavaSE14JavaSE15JavaSE16JavaSE17(LTS)JavaSE18JavaSE19JavaSE20JavaSE1.01996-01-23 Oak(橡树)        初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢。        此版本包括两个部分:运行环境(即JavaRuntimeEn

Kotlin Flow简单使用

什么是流?从流的方向来观察,我们称原始数据为上流,对数据进行一系列处理后,最终的数据为下流。从流的属性来观察,我们认为生产者在上流生产数据,消费者在下流消费数据。为什么引进Flow?Flow是Kotlin官方基于协程构建的用于响应式编程的API。响应式编程简单来说就是使用异步数据流进行编程。协程中,使用挂起函数仅可以异步返回单个值,而Flow则可以异步返回多个值,并补全kotlin语言中响应式编程的空白。Flow常见的操作生产者消费者例子suspendfuncollect(){flow{//发射数据emit(5)}.collect{//消费者Log.i("minfo","value=$it")

JDK8的HashMap为什么要引入红黑树?

当HashMap的key冲突过多时,会导致链表过长。而链表的查询效率很差,因此引入红黑树优化查询效率。为什么当链表长度大于8时候才会转红黑树而不是一开始直接使用红黑树:树节点占用空间是普通节点的两倍,因此在开始较短时候使用链表,占用空间少,查询性能也相差不大。但是当链表越来越长,查询效率逐渐变低,为保证查询效率才会舍弃链表转为红黑树,以空间换时间。根据统计,HashMap链表长度为8的概率仅有不到千万分之一,这时链表的查询性能很差了。在这种极端罕见的情况下才会将链表转换为红黑树。

Kotlin 学习笔记(五)—— Flow 数据流学习实践指北(一)

Kotlin学习笔记艰难地来到了第五篇~在这一篇主要会说Flow的基本知识和实例。由于Flow内容较多,所以会分几个小节来讲解,这是第一小节,文章后面会结合一个实例介绍Flow在实际开发中的应用。首先回想一下,在协程中处理某个操作,我们只能返回单个结果;而Flow可以按顺序返回多个结果,在官方文档中,Flow被翻译为数据流,这也说明了Flow适用于多值返回的场景。Flow是以协程为基础构建的,所以它可通过异步的方式处理一组数据,所要处理的数据类型必须相同,比如:Flow是处理整型数据的数据流。Flow一般包含三个部分:1)提供方:负责生成数据并添加到Flow中,得益于协程,Flow可以异步生成

来,跟我一起撸Kotlin runBlocking/launch/join/async/delay 原理&使用

前言协程系列文章:一个小故事讲明白进程、线程、Kotlin协程到底啥关系?少年,你可知Kotlin协程最初的样子?讲真,Kotlin协程的挂起/恢复没那么神秘(故事篇)讲真,Kotlin协程的挂起/恢复没那么神秘(原理篇)Kotlin协程调度切换线程是时候解开真相了Kotlin协程之线程池探索之旅(与Java线程池PK)Kotlin协程之取消与异常处理探索之旅(上)Kotlin协程之取消与异常处理探索之旅(下)来,跟我一起撸KotlinrunBlocking/launch/join/async/delay原理&使用之前一些列的文章重点在于分析协程本质原理,了解了协程的内核再来看其它衍生的知识就

DataBinding——使用Kotlin 委托优化

简介DataBinding是Google在Jetpack中推出的一款数据绑定的支持库,利用该库可以实现在页面组件中直接绑定应用程序的数据源。使其维护起来更加方便,架构更明确简洁。启用DataBindingDataBinding库与AndroidGradle插件捆绑在一起。无需声明对此库的依赖项,但必须启用它。android{...buildFeatures{dataBindingtrue}}基本使用DataBinding—官方文档常规用法1、在Activity中使用classMainActivity:AppCompatActivity(){privatelateinitvarbinding:A

JDK中自带的JVM分析工具

内存溢出,妥妥的名场面;一、业务背景对于分布式架构中的文件服务来说,由于涉及大量的IO流操作,很容易引发JVM的相关异常,尤其是内存溢出的问题;1.png在最近的一次版本迭代中,真实的业务处理场景和上述几乎一致,由于在文件服务中添加批量处理的动作,直接唤醒了隐藏许久的BUG,就是最常见的内存溢出;问题的起因:在word文档完成内容识别后,转换为pdf文件,然后进行页面分割转为一组图片,在这个复杂并且超长的流程中存在一个数组容器未销毁;解决的方式:分析JVM的dump文件,定位OOM问题引发的根本原因,结合文件服务的异常日志分析,添加资源的释放动作,从而解决问题;二、Jdk-Bin目录对于相当一

02. JDK简介及环境配置

02.JDK简介及环境配置1、JDK简介:JDK:Java开发工具包JRE:Java运行环境JVM:Java虚拟机Java开发工具包:编译工具(javac.exe)运行工具(java.exe)打包工具(jar.exe)文档工具(javadoc.exe)Java可以跨平台的原因:Java源文件在通过编译器之(javac.exe)后被编译成相应的.Class文件(字节码文件),.Class文件再被JVM中的解释器(java.exe)编译成机器码在不同的操作系统(Windows、Linus、Mac)上面运行。不同操作系统上面的JVM是不同的,解释器是不同的,他们可以把.Class文件编译为当前操作系

JDK20下载+安装+环境配置入门教程(非常详细),从零基础入门到精通,看完这一篇就够了(附安装包)

软件下载软件:JDK版本:20语言:简体中文大小:159.60M安装环境:Win7及以上版本;64位操作系统硬件要求:CPU@2.0GHz;内存@4G(或更高)下载通道①百度网盘丨64位下载链接:https://pan.baidu.com/s/1AbHK3yqFHhlxb1VX1LnJ7g?pwd=6789提取码:67891、软件介绍JDK全称JavaSEDevelopmentkit(JDK),即java标准版开发包,是Oracle提供的一套用于开发java应用程序的开发包,它提供编译,运行java程序所需要的各种工具和资源,包括java编译器,java运行时环境,以及常用的java类库等。2