自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (4)
  • 收藏
  • 关注

原创 java原子类详解

java原子类详解什么原子类原子类是具有原子性的类,原子性的意思是对于一组操作,要么全部执行成功,要么全部执行失败,不能只有其中某几个执行成功。原子类作用作用和锁有类似之处,是为了保证并发情况下的线程安全。相对于锁的优势粒度更细原子变量可以把竞争范围缩小到变量级别,通常情况下锁的粒度也大于原子变量的粒度效率更高除了在高并发之外,使用原子类的效率往往比使用同步互斥锁的效率更高,因为原子类底层利用了CAS,不会阻塞线程。原子类种类在JDK中J.U.C包下提供了种类丰富的原子类,

2020-07-21 17:16:56 8368

原创 java线程池详解及源码解析

线程池详解文章目录线程池详解线程池参数常用的六种线程池FixedThreadPoolCachedThreadPoolScheduledThreadPoolSingleThreadExecutorSingleThreadScheduledExecutor几种线程池参数对比ForkJoinPool核心问题拒绝策略拒绝时机AbortPolicyDiscardPolicyDiscardOldestPolicyCallerRunsPolicy常用几种阻塞队列LinkedBlockingQueueSynchronou

2020-07-16 16:49:05 278

原创 Activity、Window和View的关系源码分析

Activity、Window和View的关系文章目录Activity、Window和View的关系Activity的创建Window的创建View的创建WindowManager的addViewmWindowSession.addToDisplay触摸事件是怎么传递到Activity的总结要说它们之间的关系,就要从Activity的创建说起Activity的创建在这里我们暂时不分析具体的startActivity启动过程,直接看创建Activity的部分,调用startActivity新启动了一个

2020-05-30 16:20:09 384

原创 AIDL设计思路

AIDL设计思路文章目录AIDL设计思路AIDL1.实现一个自定义的AIDL2.IDE自动生成IMyService.java文件3.本地IPC-Stub本地的使用4.远端IPC使用5.aidl整体流程AIDL1.实现一个自定义的AIDL// IMyService.aidlpackage com.yetao.testaidl;interface IMyService { /** * Demonstrates some basic types that you can use a

2020-05-14 17:48:31 269

原创 Android资源加载流程

Android资源加载流程从使用到原理使用首先来看一个从资源string获取字符串的使用public class ResourceActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { supe...

2020-04-22 22:07:18 1239

原创 ffmpeg推拉流优化方案

ffmpeg推拉流优化方案文章目录ffmpeg推拉流优化方案一、卡顿优化设备老旧视频流音视频不同步网络二、延时优化三、传输协议优化四、首屏秒开优化服务器做优化客户端优化五、弱网优化六、DNS劫持优化七、服务端cdn优化主要从以下几点来优化卡顿优化延时优化传输协议优化首屏秒开优化弱网优化DNS劫持优化服务端cdn优化一、卡顿优化视频播放端卡顿主要有以下几点原因:设备老旧...

2020-04-20 17:02:46 8272 1

原创 RxJava2核心源码解析

文章目录RxJava2源码解析一、简介二、从代码看设计1、核心设计--观察者模式2、锦上添花--装饰者模式2.1 发射源切换线程2.2 订阅者切换线程总结RxJava2源码解析一、简介RxJava是一款基于事件流的链式调用,支持切换线程,使用简单。接下来,会根据RxJava2版本进行分析。本文不会讲具体详细的操作符使用,主要从下面几个问题去看待源码是如何设计实现的怎么做到响应事件发射...

2020-04-03 16:15:57 250

原创 源码分析Handler+Looper+MessageQueue消息模型

文章目录源码分析Handler消息模型Handler职责1.Message的发送者2.Message的处理者3.Message的移除者Looper职责Looper的创建Looper循环MessageQueue职责构造函数和部分成员变量消息入队列消息出队列消息移除退出消息循环MessageMessage设计复用总结源码分析Handler消息模型Handler职责从开发者角度来看,可分为M...

2020-03-26 15:05:21 528

原创 基于OKhttp下载工具YTDownloader

YTDownloader最近对网络下载这一块比较感兴趣,所以专门整理和写了一个简易的下载库–YTDownload特性基于Retrofit和Okhttp3来请求网络基于RxJava,支持链式调用支持断点续传,默认开启支持串行、和并行批量下载支持进度回调自动校验服务器文件是否更改(前提,url对应文件还未下好)集成在app的build.gradle中添加依赖 //仓库m...

2020-03-21 01:24:10 978

原创 理解Java锁机制

理解Java锁机制文章目录理解Java锁机制1. synchronizedsynchronized的几种使用方式synchronized的实现原理Monitor2. lock3. volatile关键字3. 乐观锁-悲观锁(主线程锁不锁住同步资源)CAS机制问题悲观锁4. 自旋锁和适应性自旋锁(均不阻塞线程,是否有自旋次数限制)5. 公平锁-非公平锁(是否允许插队)6. 可重入锁-非可重入锁(是...

2020-03-13 15:48:38 288

转载 深入理解java锁机制

深入理解java锁机制文章目录深入理解java锁机制前言1. 乐观锁 VS 悲观锁2. 自旋锁 VS 适应性自旋锁3. 无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁Java对象头Monitor无锁偏向锁轻量级锁重量级锁4. 公平锁 VS 非公平锁5. 可重入锁 VS 非可重入锁6. 独享锁 VS 共享锁结语前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非...

2020-03-12 14:26:22 386

原创 生产消费模型-lock和synchronized实现

生产消费模型-lock和synchronized实现lock实现AB循环输出同一Lock锁双条件分别控制AB线程public class TestThread { public static void main(String[] args) { //new出可重入lock锁 Lock lock = new ReentrantLock(); ...

2020-03-11 11:14:27 179

原创 ThreadLocal-从源码看设计

ThreadLocal源码分析一、ThreadLocal定义ThreadLocal提供线程局部变量。这些变量与它们在每个线程中访问,每个线程有自己的、独立初始化的变量副本,实例通常是私有的类中希望将状态与线程关联的静态字段。即在每个显示访问当前实例对象,都会获取各自线程对应的值,不会相互影响,不存在线程安全问题,也不会影响程序执行的性能。由于在各自线程存储对应的值,所以内存消耗会比直接使用实际...

2020-03-10 16:24:00 159

原创 HTTP1.0、1.1和2.0区别

HTTP1.0、1.1和2.0区别Http原理请点击阅读 点击查看HTTP 1.0Http1.0是老的HTTP协议标准,规定了客户端和服务器只能保持短暂的连接,请求完成后就完毕,每次客户端请求都需要建立一次TCP连接,请求完就断开,不保存每次请求的状态。由于连接和关闭会消耗大量服务器和客户端资源,严重影响了客户端和服务端的性能。例如加载一个网页地址,有很多JS和CSS文件,每次请求都建立一次...

2020-03-09 16:54:03 263

原创 HTTP和HTTPS的理解

HTTP和HTTPS的理解本文有部分摘录自他人博客、书籍资料,请提出。一、HTTP1.简介HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从Web服务器传送到Web浏览器。首先我们需要了解网络OSI模型七层协议(1)网络七层协议...

2020-03-09 16:21:14 608

原创 螺旋算法

螺旋算法算法题目题来源–LeetCode(https://leetcode-cn.com/problems/spiral-matrix)给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7...

2020-03-06 10:56:13 793

原创 深入c++层分析Serializable和Parcelable的区别

源码角度分析Serializable和Parcelable的区别一、Serializable的源码分析Serializable是为了保存对象的属性到本地文件、网络传输等方便数据传输,由于对应使用了ObjectInputStream和ObjectOutputStream进行读写,所以在读取过程中会使用了反射以及产生过多的临时变量。由于Serializable的性能过低,不太适用于性能资源相对紧...

2020-03-05 19:21:21 796

原创 fastJson序列化和反序列化流程

fastJson序列化和反序列化流程一、核心源码1、SerializeWriter该类主要用于序列化,有以下成员变量public final class SerializeWriter extends Writer { /** * 储存序列化结果的字段 */ protected char buf[]; /** * 写入缓存的长度 ...

2020-03-04 17:31:33 1590

原创 源码分析Gson序列化和反序列化流程

源码分析Gson序列化和反序列化流程一、核心源码1.核心对象— TypeAdapter 类型适配器,里面 public abstract class TypeAdapter<T> { /** * 该方法用于toJson时写入数据序列化 **/ public abstract void write(JsonWriter out, T value) thro...

2019-12-12 16:46:08 482

原创 Java虚拟机内存回收

感谢周志明所著的《深入理解Java虚拟机》一书。下面附上了一些我自己的理解。当说到java堆的垃圾回收,就会想到它的内存分配和回收算法。下面就详细介绍我的理解。一、内存分配。1.新对象优先分配到新生代Eden区中    内存优先分配在新生代Eden区中,该区域经过一次GC,大概会有98%新对象被回收掉,剩余的进入Survivor区中。2.大对象直接进入老年代    大对象是指需要大量连续内存空间的...

2018-04-03 18:27:16 285

原创 Java虚拟机组成部分及作用

感谢周志明所著的《深入理解Java虚拟机》一书。下面附上了一些我自己的理解。java虚拟机(JVM)当我们讨论到它的组成部分的时候,有人可能很多都会说是以栈和堆,但是实际上远远不止这两个部分。下面我们来讲讲他的组成部分:JVM分为两个区域:一、线程私有区域 包含虚拟机栈(通常称为Java栈)、本地方法栈(储存JNI)、程序计数器1、虚拟机栈...

2018-04-03 18:25:54 6675

原创 java文件读写删除等操作

将byte[]流写入文件 /** * 写byte[]流到文件中 * @param bytes * @param path * @return */ public static boolean writeByteToDisk(byte[] bytes,String path){ BufferedOutputStream bos...

2018-03-29 18:13:18 816

原创 java遍历文件夹(递归和非递归)

递归遍历:    /** * 遍历文件() * @param rootFile 文件夹 * @return */ public static List&lt;File&gt; findAllFiles(File rootFile){ List&lt;File&gt; results = new ArrayList&lt;&gt;();...

2018-03-29 16:53:10 1537

原创 Android SystemServer启动流程详解(基于sdk版本6.0.1)

本文基于Android系统版本6.0.1,由于系统重构与4.4.4启动过程存在差异。Java类的入口是main()方法,SystemServer的main()方法代码如下:new SystemServer().run();由此开始,以SystemServer的run()作为系统启动方法,接下来我们来看run()方法做了哪些事情。private void run() {

2018-02-01 11:37:21 342

原创 带阻尼效果的scrollview,仿QQ空间

import android.content.Context;import android.graphics.Rect;import android.util.AttributeSet;import android.view.MotionEvent;import android.widget.ImageView;import android.widget.ScrollView;

2015-10-20 16:53:32 809

高仿android-QQ空间下拉背景图拉伸回弹效果,修复已知BUG

修复上个版本已知的BUG,效果更好。希望大家提出问题与建议,一起探讨。

2015-10-28

阻尼效果的scrollview,仿QQ空间

修复上个版本已知的BUG,效果更好。希望大家提出问题与建议,一起探讨。

2015-10-28

带阻尼效果的scrollview,仿QQ空间

修复上个版本已知的BUG,效果更好。希望大家提出问题与建议,一起探讨。

2015-10-21

仿android-QQ空间下拉背景图拉伸回弹效果,修复已知BUG

修复上版本已知BUG ,希望大家提出问题与建议,一起探讨。

2015-10-21

空空如也

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

TA关注的人

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