![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
积跬步以致千里_ylc
一个努力中的Android开发人员
展开
-
kotlin机制
函数定义在kotlin中,函数终于成为一等公民,支持面向过程终于在 “JAVA”阵营中成为了现实。顶级函数在kotlin中,可以将函数直接定义在源文件中,这种函数就被称为 “顶级函数”。顶级函数不像java函数那样,只能被封装在类中。然而,它仅仅只是一个语法糖,在本质上,顶级函数其实还是被封装了,因为kotlin整个源文件都被看作成一个类,从字节码可以验证这一点。实例:定义一个Test.kt文件,文件内容如下:fun main() { println(add(33,54))}fun原创 2020-10-09 17:25:05 · 549 阅读 · 0 评论 -
kotlin集合操作符初探
在kotlin中数组和list的操作符基本共同,所以在数组中可用的操作符也可以在list中使用。统计操作符any 只要有一个符合就返回trueall 所有条件符合才返回truecount 返回符合条件的数目none 如果没有任何元素与给定的函数匹配,则返回truemax 返回最大值min 返回最小值fold 在一个初始值的基础上 从第一项到最后一项通过 一个函数操作 所有的元素reduce 从第一项到最后一项通过 一个函数操作 所有的元素,相对于fold,没有初始值sum 求数组中所有原创 2020-09-30 16:28:53 · 246 阅读 · 0 评论 -
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 · 572 阅读 · 0 评论 -
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 · 410 阅读 · 0 评论 -
kotlin封装
kotlin类型兼容java类型的全部语义和概念,但是也并非完全相同,不过在kotlin中,一个类型于java中的一样,也包含如下元素:构造器和初始化模块成员函数属性内部类对象声明构造函数构造函数其实并不是一个真正的函数,因为它没有返回值类型,连函数名也被严格约束。而从编译器的角度看,构造函数的确不是函数,因为编译器通常会对构造函数进行特别处理,在C++中,构造函数会被处理成内存分配指令,在java中,会被处理成new指令。因此构造函数可以被看着一个语法糖层面的伪函数。构造函数声明原创 2020-09-16 11:10:27 · 544 阅读 · 1 评论 -
java io的知识总结
装饰者模式因为java的IO是基于装饰者模式设计的,所以要了解掌握IO 必须要先清楚什么事装饰者模式(装饰者模式也称为包装模式,其使用一种对客户端透明的方式动态的扩展对象功能。装饰者模式也是继承关系的替代方案之一。装饰者模式是结构型设计模式。重点也在装饰二字)装饰者模式定义: 装饰者模式是指在不必改变原类文件和使用继承的前提下,动态的扩展一个对象的功能,通过创建一个包装对象,也就是装饰者来包裹真实对象。具体实例://1.首先抽象出一个 人 的类 用来表示一个人的穿着public abstra原创 2020-09-01 12:11:55 · 295 阅读 · 0 评论 -
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 · 201 阅读 · 0 评论 -
类加载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 · 174 阅读 · 0 评论 -
java的垃圾回收和内存分配
学习垃圾回收机制的意义java和C++等语言的最大技术区别:自动化的垃圾回收机制(GC: Garbage Collection)为什么要了解GC和内存分配策略:GC对应用的性能是有影响的可以写成更优更健壮的代码1)栈:栈的生命周期是跟随线程的,所以一般是不需要关注的2)堆:堆中的对象是垃圾回收的重点3)方法区/元空间:这一个块也会发生垃圾回收,不过这一块的效率比较低,一般也不是应用开发关注的重点通个一个实例来进行垃圾回收的分析实例代码如下 public static void m原创 2020-08-10 16:38:10 · 355 阅读 · 0 评论 -
解析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 · 156 阅读 · 0 评论 -
线程池和AsyncTask
线程池1.什么是线程池?为什么要用线程池?Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。线程池就是将线程进行池化,需要运行任务时从池中拿一个线程来执行,执行完毕,线程放回池中。在开发过程中,合理地使用线程池能够带来3个好处:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,原创 2020-08-06 15:28:18 · 420 阅读 · 0 评论 -
线程相关的知识归纳整理
CPU的核心数和线程数的关系CPU的核心数和线程数一般是1:1的关系,Intel推出的超线程技术能使电脑的核心数和线程数的比达到 1:2 (基于一个物理核心模拟两个逻辑核心),即是一个4核的CPU同时可运行4个线程,如果使用了超线程技术就可以同时运行8个线程,linux 系统下一个进程最大创建1000个线程,windows系统下一个进程最大创建2000个线程)CPU时间片轮转机制(RR调度)操作系统把所有就绪进程按先入先出的原则排成一个队列。新来的进程加到就绪队列末尾。每当执行进程调度时,进程调度程序原创 2020-08-05 10:52:59 · 272 阅读 · 0 评论