Java - 注解 基础概念元数据 元数据是关于数据的数据,元数据是添加到程序元素入方法、字段、类和包上的额外信息。对数据进行说明描述。 元数据可用于以下场景: 编写文档:根据程序元素的注释创建文档 代码分析:通过标识的元数据对代码进行分析(例如声明方法重载) 编译检查:让编译器实现基本的编译检查,例如*@notNull——不为空* Java平台的元数据体现 就在于注解(Annotation)。 注解概念 2019-02-19 #Java
Java字节码学习-操作指令 对常见的字节码操作指令进行整理,方便日后进行查询。为了在字节码应用时可以进行合理利用。 JVM采用基于栈的架构,操作指令由操作码和操作数组成。操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。 操作码:一个字节长度(0~299),操作码个数不能不能超过256 操作数:一条指令可以包含0个或多个操作数。 为了提升传输效率,减少数据量。字节码指令放弃了 操作数对齐,减少了填充与间 2019-11-14 #Java
Kotlin-委托相关知识 委托:有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。 在Kotlin中,对委托进行了简化,通过by就可以实现委托的效果。例如前面提到的by lazy延迟初始化就是利用了委托。 Kotlin中主要分为两种:类委托、委托属性。 基本语法: 1val/var <属性名>:<类型> by <表达式> //<表达式> 指向委托 2019-07-09 #Kotlin
Java-volatile原理及解析 volatile基础概念volatile的主要作用是保证可见性以及有序性,不一定保证原子性。 JVM提供的最轻量级的同步机制。 当一个变量被volatile关键字修饰后,就会具备两层语义: 保证此变量对所有线程的可见性,这里指 当一条线程修改了这个变量的值,新值对于其他线程来说是立即可得知的。 禁止进行指令重排序优化 volatile 保证可见性在使用volatile关键字修饰一个变 2018-12-17 #Java
ListView简析 ListView定义 专门用于处理那种内容元素很多,手机屏幕无法展示出所有的内容的情况。可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移到屏幕内了。 ListView相比RecyclerView,有一些优点: addHeaderVew(),addFooterView()添加头尾视图 android:divider设置自定义分割线 setOnItemClickLis 2019-01-04 #Android
MVC,MVP,MVVM的理解 使用架构的目的是:模块内部的高内聚,模块之间的低耦合。 1.MVC模式MVC(Model-View-Controller,模型-视图-控制器)是20世纪80年代出现的一种设计模式。他用一种业务逻辑、数据、界面显示分离的方法组织代码。在Android中MVC的角色定义如下: Model(模型层):针对业务模型,建立的数据结构和相关的类,就可以理解为Model。与View无关,与业务相关。主 2018-04-15 #设计模式
Kotlin-协程 协程本质上是轻量级的线程。 协程的概念协程是一种非抢占式或协作式的计算机程序并发调度的实现,程序可以主动挂起或者恢复执行。避免在异步编程中使用大量的回调,同时相比于传统的多线程技术,更容易提升系统的高并发处理能力。 线程和协程属于一对多关系,一个线程上允许存在多个协程。 线程大多数的实现是映射到内核的线程,当线程中的代码逻辑在线程抢到CPU的时间片才可以执行,否则只能等待。而协程之所以轻量级 2020-04-12 #Kotlin
RecyclerView简析 RecyclerView定义 RecyclerView是一个新的组件,用来代替ListView组件的。 相比于ListView来说,RecyclerView的最大一个特性就是灵活性,主要体现在以下几个方面: 多样式:可以对数据展示进行定制,可以显示成列表,表格或者是瀑布流,你还可以自定义成任何显示样式。 局部刷新:可以刷新指定的Item或者区域 刷新动画:支持对Item的添加和移除添加动画 2018-12-20 #Android
RxJava 使用及解析 RxJava基本知识 RxJava是一个在JVM上使用可观测的序列来组成异步的、基于事件的程序的库。 通常情况下使用Handler、AsyncTask完成异步任务操作,当任务比较多的时候,使用这种方式就会变得相当繁琐,尤其是嵌套式的执行任务(需要上一项先完成)。 RxJava可以实现异步任务执行的前提下保持代码的清晰。通过创建一个Observable来完成异步任务,然后组合各种操作符实现不同 2019-01-10 #Hide
TCP/IP协议相关 TCP/IP协议族 由一系列网络协议所组成的一个网络分层模型,是Internet的核心协议并被广泛应用于局域网和互联网。 分层 为什么要分层? 每层内部的设计可以自由改动,只需要修改替换对应分层即可 设计变得简单,分层只需要考虑当前的任务,不需要在意其他分层情况 网络的不稳定性 应用层(Application Layer) 向用户提供应用服务时通信的活动 相关协议: HTT 2020-03-31 #HTTP
Android屏幕的刷新机制 基础概念在显示系统中,一般包含三个部分CPU、GPU,屏幕。 CPU:执行View的绘制流程measure,layout.draw GPU:进一步处理数据,对图形数据进行渲染并放到buffer缓冲区中缓存 屏幕:将buffer缓冲区的数据取出来填充屏幕像素点 CPU绘制后提交数据,GPU进一步处理和缓存数据、最后屏幕从缓冲区获取数据并显示。 屏幕刷新频率 一秒内屏幕刷新的次数也即显示了多少帧的 2020-05-30 #Android
WebRTC相关记录 WebRTC连接流程 当前采用服务端框架为 LiCode WebRTC通话原理及相关概念媒体协商 彼此了解对方支持的媒体格式 SDP参数含义网络协商WebRTC源码相关WebRTC业务SDK功能1.消息推送(语音电话提醒、新消息接收、对方挂断、支持拓展额外参数) 2.本地长连接(WebRTC dataChannel、保活) 3.语音通话(音频采集、降噪、回声消除、静音) 4.各种状态封装(连接 2020-08-06 #WebRTC