自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 kotlin机制

函数定义在kotlin中,函数终于成为一等公民,支持面向过程终于在 “JAVA”阵营中成为了现实。顶级函数在kotlin中,可以将函数直接定义在源文件中,这种函数就被称为 “顶级函数”。顶级函数不像java函数那样,只能被封装在类中。然而,它仅仅只是一个语法糖,在本质上,顶级函数其实还是被封装了,因为kotlin整个源文件都被看作成一个类,从字节码可以验证这一点。实例:定义一个Test.kt文件,文件内容如下:fun main() { println(add(33,54))}fun

2020-10-09 17:25:05 581

原创 kotlin集合操作符初探

在kotlin中数组和list的操作符基本共同,所以在数组中可用的操作符也可以在list中使用。统计操作符any 只要有一个符合就返回trueall 所有条件符合才返回truecount 返回符合条件的数目none 如果没有任何元素与给定的函数匹配,则返回truemax 返回最大值min 返回最小值fold 在一个初始值的基础上 从第一项到最后一项通过 一个函数操作 所有的元素reduce 从第一项到最后一项通过 一个函数操作 所有的元素,相对于fold,没有初始值sum 求数组中所有

2020-09-30 16:28:53 282

原创 kotlin多态

多态定义多态是指允许不同类的对象对同一消息做出相应,即对同一消息可以根据发送对象的不同而采用不同的行为方式。(发送消息就是函数调用)open class Father{ open fun bar(){ println("father.bar") }}open class Son:Father(){ override fun bar() { println("son.bar") }}class GrandSon:Son(){

2020-09-21 10:09:52 617

原创 kotlin继承

继承语法类和接口的继承通过 : 来实习/**定义一个基类,必须有open关键字 才能被继承*/open class Base(val p:Int) {}/**类继承*/class Derived(p:Int):Base(p){}/**接口中的方法 默认是 open的*/interface Animal{ fun run()}//实现接口 不需要 ()abstract class BaseAnimal() : Animal{ var name:String ?

2020-09-17 10:02:35 438

原创 kotlin封装

kotlin类型兼容java类型的全部语义和概念,但是也并非完全相同,不过在kotlin中,一个类型于java中的一样,也包含如下元素:构造器和初始化模块成员函数属性内部类对象声明构造函数构造函数其实并不是一个真正的函数,因为它没有返回值类型,连函数名也被严格约束。而从编译器的角度看,构造函数的确不是函数,因为编译器通常会对构造函数进行特别处理,在C++中,构造函数会被处理成内存分配指令,在java中,会被处理成new指令。因此构造函数可以被看着一个语法糖层面的伪函数。构造函数声明

2020-09-16 11:10:27 600 1

原创 kotlin基础语法

kotlin是一门静态语言参数定义kotlin中没有8中基本类型的概念了,只剩下了val / var参数定义:val/var 参数名:参数类型 = 参数值定义参数时 " :参数类型" 可以省略 会根据参数值来自动类型推断(静态的-只能在编译期推断,运行时不能)。val: val 定义的参数只是可读 不可写 ,不能改变参数的值。 val a:Int = 10; val b = 10val和final的区别:-1) 属性声明: kotlin 中val 声明可以改变 ja

2020-09-12 17:54:34 239

原创 java io的知识总结

装饰者模式因为java的IO是基于装饰者模式设计的,所以要了解掌握IO 必须要先清楚什么事装饰者模式(装饰者模式也称为包装模式,其使用一种对客户端透明的方式动态的扩展对象功能。装饰者模式也是继承关系的替代方案之一。装饰者模式是结构型设计模式。重点也在装饰二字)装饰者模式定义: 装饰者模式是指在不必改变原类文件和使用继承的前提下,动态的扩展一个对象的功能,通过创建一个包装对象,也就是装饰者来包裹真实对象。具体实例://1.首先抽象出一个 人 的类 用来表示一个人的穿着public abstra

2020-09-01 12:11:55 326

原创 json相关知识总结

JSON定义: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式作用: 数据标记,存储,传输特点:读写速度快解析简单轻量级独立于语言,平台具有自我描叙性JSON解析:语法: JSON建构于两种结构:“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash tab

2020-08-31 09:04:19 230

原创 序列化知识总结

序列化定义以及相关概念**定义:**将数据结构或对象转换成二进制串的过程。由于在系统底层,数据的传输形式是简单的字节序列形式传递,即在底层,系统不认识对象,只认识字节序列,而为了达到进程通讯的目的,需要先将数据序列化,而序列化就是将对象转化字节序列的过程。相反地,当字节序列被运到相应的进程的时候,进程为了识别这些数据,就要将其反序列化,即把字节序列转化为对象无论是在进程间通信、本地数据存储又或者是网络数据传输都离不开序列化的支持。而针对不同场景选择合适的序列化方案对于应用的性能有着极大的影

2020-08-27 17:37:56 499 1

原创 类加载ClassLoader和双亲委托机制

了解Dalvik和ART**什么是Dalvik:**Dalvik是Google公司自己设计用于Android平台的Java虚拟机。支持已转换为.dex(Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik应用设计的一种压缩格式,适合内存和处理器速度有限的系统(移动平台)。DVM的指令集是基于寄存器的,执行效率高(JVM的指令集是基于栈的 更通用,跨平台性好)**什么是ART:**Android Runtime, Android 4.4 中引入的一个开发者选项

2020-08-13 15:58:20 196

原创 java的垃圾回收和内存分配

学习垃圾回收机制的意义java和C++等语言的最大技术区别:自动化的垃圾回收机制(GC: Garbage Collection)为什么要了解GC和内存分配策略:GC对应用的性能是有影响的可以写成更优更健壮的代码1)栈:栈的生命周期是跟随线程的,所以一般是不需要关注的2)堆:堆中的对象是垃圾回收的重点3)方法区/元空间:这一个块也会发生垃圾回收,不过这一块的效率比较低,一般也不是应用开发关注的重点通个一个实例来进行垃圾回收的分析实例代码如下 public static void m

2020-08-10 16:38:10 377

原创 解析java内存区域

为什么要了解虚拟机JVM不单单只支持Java语言,也支持其他语言(Scala、Kotlin、Groovy等等)写出更好,更健壮的程序 (区块链1.0:比特币,区块链2.0:以太坊,以太坊中提供了EVM的虚拟机,它的实现和JVM类似,基于栈、生成脚本编译成字节码来执行)提高java应用的性能,更好更快速的排除解决相关问题Java SE体系架构虚拟机的发展史1) Hotspot VM 之前输入SUN公司后面被甲骨文公司收购,Hotspot什么意思:热点代码探测技术,及时编译器(发现最有价值的

2020-08-10 09:17:31 183

原创 线程池和AsyncTask

线程池1.什么是线程池?为什么要用线程池?Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。线程池就是将线程进行池化,需要运行任务时从池中拿一个线程来执行,执行完毕,线程放回池中。在开发过程中,合理地使用线程池能够带来3个好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,

2020-08-06 15:28:18 458

原创 线程相关的知识归纳整理

CPU的核心数和线程数的关系CPU的核心数和线程数一般是1:1的关系,Intel推出的超线程技术能使电脑的核心数和线程数的比达到 1:2 (基于一个物理核心模拟两个逻辑核心),即是一个4核的CPU同时可运行4个线程,如果使用了超线程技术就可以同时运行8个线程,linux 系统下一个进程最大创建1000个线程,windows系统下一个进程最大创建2000个线程)CPU时间片轮转机制(RR调度)操作系统把所有就绪进程按先入先出的原则排成一个队列。新来的进程加到就绪队列末尾。每当执行进程调度时,进程调度程序

2020-08-05 10:52:59 304

原创 解析java的反射和动态代理

反射定义JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。1.理解反射的概念,反射之中包含了一个「反」字,所以了解反射我们先从「正」开始。1.1)一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作1.2)反射则是一开始并不知道我要初始化的类对象是什么(或者是第三方的类没

2020-06-29 17:03:45 210

原创 java 泛型的知识整理

为什么我们需要泛型?通过两段代码我们就可以知道为何我们需要泛型实际开发中,经常有数值类型求和的需求,例如实现int类型的加法, 有时候还需要实现long类型的求和, 如果还需要double类型的求和,需要重新在重载一个输入是double类型的add方法。定义了一个List类型的集合,先向其中加入了两个字符串类型的值,随后加入一个Integer类型的值。这是完全允许的,因为此时list默认...

2020-02-15 17:33:09 151

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除