自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于Object与String类中hashcode()的区别,以及equals()与toString(),hashcode()联系

这个文章的标题是我由别的问题而引发的疑问:1. 为何子类一般都要重写equals()这个方法2. 为何重写equals()方法时需要重写hashcode()方法,而hashcode()方法的作用又是如何,hash值是怎么计算的 然后通过看源码发现Object类与String类中都有hashcode()方法,接下来为大家一一梳理这其中equals()与toString(),hashcode(...

2020-04-05 14:55:08 464

原创 万人直播架构与CDN网络

CDN网络介绍本文为慕课网音视频学习笔记泛娱乐化直播架构共享端(美女直播端:电脑、手机)发起信令到信令服务器,信令服务器进行逻辑处理(例如:创建房间、聊天、礼物都是以信令的方式进行传输处理的),流媒体云( CDN ):对音视频流( RTMP )进行转发,将信号转发给收看用户流程描述共享端共享端发送信令到信令服务器,请求创建房间信令服务器收到信令后,创建房间,然后给共享端返...

2019-08-21 20:15:29 925

原创 Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件(学习笔记)

实现 Android 录音的流程关于 AudioRecordAndroid SDK 提供了两套音频采集的API,分别是:MediaRecorder 和 AudioRecord,前者是一个更加上层一点的API,它可以直接把手机麦克风录入的音频数据进行编码压缩(如AMR、MP3等)并存成文件,而后者则更接近底层,能够更加自由灵活地控制,可以得到原始的一帧帧PCM音频数据。如果想简单地做一个录音机...

2019-08-20 23:50:11 2009

原创 缓存机制

缓存机制二级缓存:内存 -> 硬盘 -> 网络当查找数据时,先从内存中查找,若无则查找硬盘,若无再请求网络当从网络获取数据后,同时存储到内存和硬盘中缓存框架LruCache 内存缓存 DiskLruCache 硬盘缓存ASimpleCache(ACache)RxCache缓存机制类似Glide之类的大型框架都是使用自己的缓存机制类似Message里面的...

2019-06-05 17:08:43 235

原创 享元模式

定义享元模式(Flyweight)是对象池的一种实现。享元对象中,可以共享的状态是内部状态,内部状态不会随着环境的变化,不可以共享的状态称为外部状态,外部状态会随着环境变化而变化。享元模式中会创建一个对象容器,经典的享元模式中这个容器是一个Map,它的key是享元对象的内部状态value为享元对象本身。使用者通过内部状态从享元工厂中获取享元对象,如果有缓存则使用缓存,如果没有则创建一个...

2019-06-05 17:07:03 172

原创 OkHttp的TLS原理解析

HTTP与HTTPSHTTPS 是在 HTTP 和 TCP 之间加了一层 TLS/SSL,这个 TLS协商了一个对称密钥进行 HTTP 加密TLS与SSL两者在传输层对网络连接进行加密,为并列关系SSL/TLS 不仅仅可以用在 HTTP,也可以用在 FTP,Telnet 等应用层协议上TLS是SSL标准化后的产物,建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本TLS较...

2019-06-05 17:05:39 855

原创 OkHttp源码解析

OkHttp是什么官方解释:适用于Android和Java应用程序的HTTP和HTTP/2的客户端OKHTTP是一个高效的HTTP库网络请求发展:HttpURLConnection—>Apache HTTP Client—>Volley—->okHttpSPDY -> http2HTTP是现代应用网络的方式。这就是我们交换数据和媒体的方式。有效地执行HTTP可...

2019-06-05 17:04:14 312

原创 IO和NIO的区别

主要内容NIO简介Java NIO 是 java 1.4,之后新出的一套IO接口NIO中的N可以理解为Non-blocking,不单纯是New。NIO的特性/NIO与IO区别IO是面向流的,NIO是面向缓冲区的IO流是阻塞的,NIO流是不阻塞的IO没有选择器,NIO有选择器读数据和写数据方式从通道进行数据读取 :创建一个缓冲区,然后请求通道读取数据。从通道进行数据写入 :创建一...

2019-06-05 17:01:57 3307

原创 Android Studio快捷键

优化importAndroid Studio会自动导入使用类的包,但是当使用的类删掉的时候,导入的包还在。这时,可以使用,使用之后会将没用到的包自动删掉,并且会对包的顺序进行排序Control + Alt + O缩进/反缩进除了使用自动缩进以外,也可以使用Tab来缩进代码,以及使用Shift +Tab来反缩进代码开始新的一行Android Studio 提供了在光标所在行开始新的一行...

2019-06-05 16:59:41 136

原创 AutoCompleteTextView如何传一个对象而不是简单的List<String>且仅展示想要的value

需求如题所示,每次看到 AutoCompleteTextView(后文将以AT表示此控件)的示例用法都是仅仅能传进去一个 List<String>,若最后我们想要的不是输入框内的值,而是值对应的Id的时候肿么办咧? 举个栗子:有这么一个 Bean,Student 类,当我们把这个对象传到 AT 中时,我们仅仅只想展示 studentName,不展示其余字段,然而看源码发现,AT 控件...

2019-01-04 10:52:46 410 6

原创 关于对反射机制的通俗理解

反射其实就是照镜子的过程,通过照镜子,镜子里的镜像能获取你的属性和行为首先要先有一个定义了自身的本体(Class A),里面必须有一个无参的构造函数 所有的镜子(任意的类)都可以通过照镜子这个行为去获取本体的信息 照镜子有三种方法,需要先声明一个镜像(Class c) 给这个镜像赋值的过程就相当于照镜子,照完镜子后镜像就获取了本体的信息了 接下来镜子就可以通过镜像来得到本体的信息(c....

2017-10-24 22:13:18 4610 1

原创 关于JDK中的transient关键字

前段时间参加面试被问到了 HashMap 的原理,但是对 HashMap 的了解都是通过博客,一面建议我还是多看看源码,博客的知识毕竟有一些过时了,所以今天就来研究研究源码,然后发现HashMap的变量里有一个transient关键字,从来没见过,于是去百度了一下,现在做个总结好了~Java's serialization provides an elegant, and easy to us...

2017-10-19 16:50:01 581

原创 使用线程进行App的自动下载安装(带进度显示)

此线程只复制下载安装,不包括检查更新,所以是用在已经检查更新获得服务器返回的下载路径后用于下载安装的 此线程可以直接复制粘贴使用,也可以到我的github上面添加依赖后直接在activity中调用即可 github项目地址import android.net.Uri;import android.os.Environment;import android.content.In...

2017-08-16 12:10:31 381 2

原创 Http客户端与服务器端的交互

服务器端:先选择服务器 新建一个 web 项目 新建一个 .jsp 文件(index.jsp)(首页的布局) 新建一个包(servlet) 包里新建一个类 MyServlet 并继承 HttpServlet 重写 MyServlet 中的 doGet() 方法和 doPost() 方法直接, 在 doGet() 中回调 this.doPost(request,response); d...

2017-03-18 15:10:05 2684

原创 关于Handler

在主线程中新建一个子线程进行耗时操作,但是子线程不可以改变 UI,所以在需要改变 UI 界面的时候就给 Handler 发送消息(如:更新已完成/更新进度),让 Handler 来通知主线程并改变 UI 当子线程需要跟主线程交流时,也就是当子线程要跟 UI 主线程说:亲,偶下载文件到80%了或者偶已经把文件下载完成了!执行这句代码handler.sendEmptyMessage(1);//发...

2017-03-18 15:06:59 442

空空如也

空空如也

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

TA关注的人

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