自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DonnyCoy

基础不牢,地动山摇。学习就是不断重复的一个过程。

  • 博客(148)
  • 资源 (8)
  • 收藏
  • 关注

原创 Android性能之数据结构

基于Map接口的实现,数组+链表的结构,JDK 1.8后加入了红黑树,链表长度>8变红黑树,<6变链表。

2026-01-07 14:09:42 1024

原创 Android性能优化之ANR笔记

main:main标识是主线程,如果是线程,那么命名成“Thread-X”的格式,x表示线程id,逐步递增。prio:线程优先级,默认是5tid:tid不是线程的id,是线程唯一标识IDgroup:是线程组名称sCount:该线程被挂起的次数dsCount:是线程被调试器挂起的次数obj:对象地址self:该线程Native的地址sysTid:是线程号(主线程的线程号和进程号相同)nice:是线程的调度优先级sched:分别标志了线程的调度策略和优先级cgrp:调度归属组handle:线程处理函数的地址。

2025-12-30 09:54:15 795

原创 Java注解、反射、动态代理笔记

Java知识是作为Android开发的语言基础,虽然现在已经推出了kotlin,但是基于以下原因我们还是需要好好牢牢掌握javaSDK还是javakotlin也需要编译成为java运行;Java语言应用不仅仅在Android,就是在后台开发中也是一个最流行的语言;大公司面试都要求我们有扎实的Java语言基础。所以,请大家不要轻视提高自己Java基础的机会,请大家认真学习,做好笔记,争取取得更大的进步。Java注解(Annotation)又称Java。

2025-07-10 10:42:12 666

原创 Java ASM字节码插桩笔记

插桩就是将一段代码插入到另一段代码,或替换另一段代码。字节码插桩顾名思义就是在我们编写的源码编译成字节码(Class。格式数据是基于文本的,我们只需要知道它的规则就能够轻松的生成、修改。之外还有一个应用更为广泛的 ASM 框架同样也是字节码操作框架,方法中插入一开始图中的记录函数执行时间的日志输出。的单元测试中使用这个框架, 对我们Android。更好的性能以及更高的灵活行,我们这篇文章以使用。由于我们操作的是字节码插桩,所以可以进入。框架本身的设计,我们这里先不讨论。程序中完成对字节码的修改测试。

2025-07-09 18:40:45 767

原创 Java泛型笔记

Java5之前,是没有泛型的。通过两段代码我们就可以知道为何我们需要泛型实际开发中,经常有数值类型求和的需求,例如实现int类型的加法, 有时候还需要实现long类型的求和, 如果还需要Float类型的求和,需要重新在重载一个输入是Float类型的add方法。上面的代码执行,将会出现如下的错误:定义了一个List类型的集合,先向其中加入了两个字符串类型的值,随后加入一个Integer类型的值。这是完全允许的,因为此时list默认的类型为Object类型。

2025-07-04 14:06:36 753

原创 进程间通信机制 Binder原理讲解笔记

在拆解分析Binder之前先上一张Binder架构图,总体对Binder有一个整体了解:Binder跨进程通信机制:基于C/S架构,由Client、Server、Server Manager和Binder驱动组成。下面的介绍我们主要也是从这几个方面进行分析。一直在说Binder,那么Binder到底是什么东西呢?概括来说Binder:跨Android进程通信的机制Binder是一个驱动Binder.java实现了IBinder接口从而具备了跨进程的能力。

2025-03-26 10:44:26 622

原创 Kotlin语言基础笔记

Kotlin是一门非常方便的开发语言,它的语法糖有很多,要想要很熟练的掌握kotlin语言,只有不断地使用kotlin写代码,从而达到量到质的一个改变。本文也只是介绍其中的一点内容,内容很松散,有些知识点需要自己动手去写,去实现才能真正体会其中的魅力。

2025-03-16 17:10:39 830

原创 AMS分析笔记

最后梳理一下整个AMS的启动过程:当流程走到systemReady的时候,那就证明前面提到的到80多个服务已经初始化了。那接下来就会启动SystemUI进程(在startOtherServices方法中的mActivityManagerService.systemReady()方法中):// 省略部分代码......// 这里面会启动SystemUI// 省略部分代码......// 启动桌面...// 省略部分代码......

2025-03-05 21:37:54 1365

原创 自定义View笔记

布局: onLayout onMeausure / Layout:viewGroup显示: onDraw :view: canvas paint matrix clip rect animation path(贝塞尔) line text绘制交互: onTouchEvent :组合的viewGroup。

2025-02-23 22:32:15 842

原创 Android 虚拟机与ClassLoader类加载笔记

将Demo.class文件使用命令:javap -c .\Demo.class 反编译一下字节码文件,得到如下的结果:到这里,我们的Demo展示完了,随着我们接下来内容的介绍,将会使用到该字节码的内容。我们在介绍Android的虚拟机之前,先了解一下一些相关的概念。1.1 JVM与DalvikAndroid应用程序运行在Dalvik/ART虚拟机,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。

2025-02-17 18:24:13 1415

原创 JVM内存管理笔记

OutOfMemoryError(OOM)是JVM在尝试为对象分配内存但没有足够的内存空间时抛出的错误。这通常发生在堆内存(Heap Memory)被耗尽时。

2025-02-16 14:38:47 881

原创 Java并发编程笔记

早期计算机中cpu和内存的速度是差不多的,但在现代计算机中,cpu的指令速度远超内存的存取速度,由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样处理器就无须等待缓慢的内存读写了。从上至下,每一层都可以看做是更下一层的缓存,即:L0寄存器是L1一级缓存的缓存,L1是L2的缓存,依次类推;

2025-02-07 17:05:21 716

原创 RxJava笔记

我们介绍RxJava中的线程切换主要是通过subscribeOn和observeOn操作符展开,对于线程切换Android中主要是子线程与主线程,在我们使用RxJava时会同步引入RXAndroid的包,为什么要同步引入RxAndroid的包呢,主要还是互相补充的原因,因为RxAndroid的包中包含的是Android特性的一些功能实现。RxJAVA也就完成了80%的内容,RxAndroid来补充了剩余的20%的实现。// 依赖RxAndroid 2X 的依赖库// 增加RxJava 2X 的依赖库。

2025-02-07 16:46:17 926

原创 Android ART模式

Android ART模式

2022-08-12 10:13:33 1447

原创 Android JVM和DVM的区别

Android JVM和DVM的区别

2022-08-12 09:35:41 1009

原创 Android 自定义流式布局

先上效果具体实现请参考如下:import android.content.Context;import android.os.Build;import android.support.annotation.RequiresApi;import android.util.AttributeSet;import android.view.View;import android.view.ViewGroup;import java.util.ArrayList;import java

2022-03-27 15:19:43 2691 2

转载 Android 描述一下应用进程的启动过程

大致为下面概括描述1,点击桌面应用图标,Launcher 进程将启动 Activity(MainActivity)的请求以 Binder 的方式发送给了 AMS。2,AMS 接收到启动请求后,交付 ActivityStarter 处理 Intent 和 Flag 等信息,然后再交给 ActivityStackSupervisior/ActivityStack3,处理 Activity 进栈相关流程。同时以 Socket 方式请求 Zygote 进程 fork 新进程。4,Zygote 接收到

2020-09-19 15:20:25 249 1

原创 JAVA 二分查找

1. 二分查找原理图2. 分查找代码实现public class BinarySearch { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = {11,22,33,44,44,55,55,66}; int index = binarySearch(arr,55); System.out.println("index : " + inde

2020-09-02 14:25:58 262

原创 JAVA 冒泡、选择排序算法

1. 冒泡排序/** 冒泡排序基本概念是:* 依次比较相邻的两个数,将小数放在前面,大数放在后面。* 即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。* 然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,* 直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,* 将最大的数放到了最后。在第二趟:仍从第一对数开始比较* (因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),* 将小数放前,大数放后,一直比较到倒数第二个数(倒数第...

2020-09-02 14:10:40 206

原创 JAVA 网络编程多线程上传文件

1. UploadClient.javaimport java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.Socket;public class UploadCli

2020-08-27 21:41:02 397

原创 JAVA 多线程常见的问题

1:多线程有几种实现方案,分别是哪几种? 两种。 继承Thread类 实现Runnable接口 扩展一种:实现Callable接口。这个得和线程池结合。2:同步有几种方式,分别是什么? 两种。 同步代码块 同步方法3:启动一个线程是run()还是start()?它们的区别? start(); run():封装了被线程执行的代码,直接调用仅仅是普通方法的调用 start():启动线程...

2020-08-27 10:05:51 139

原创 JAVA 线程的状态转换图及常见执行情况

2020-08-26 22:32:33 135

原创 JAVA Thread的生命周期图解

2020-08-25 16:54:10 177

原创 JAVA IO小结

package com.wdy.charIO;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import ja.

2020-08-23 13:07:01 192

原创 JAVA catch里面有return语句,请问finally里面的代码还会执行吗?

* 如果会执行,请问是在return前,还是return后。* 会。前。public class FinallyDemo { public static void main(String[] args) { System.out.println(getInt()); } public static int getInt() { int a = 10; try { System.out.println(a / 0); a = 20; } catch ...

2020-08-21 14:30:27 816 1

原创 JAVA final,finally和finalize的区别

* final:最终的意思,可以修饰类,成员变量,成员方法* 修饰类,类不能被继承* 修饰变量,变量是常量* 修饰方法,方法不能被重写* finally:是异常处理的一部分,用于释放资源。* 一般来说,代码肯定会执行,特殊情况:在执行到finally之前jvm退出了* finalize:是Object类的一个方法,用于垃圾回收...

2020-08-21 14:19:39 192

原创 JAVA throws和throw的区别

2020-08-21 14:04:47 208

原创 JAVA 集合特点概述

1.Collection(单列集合) 1.1 List(有序,可重复) ArrayList 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector 底层数据结构是数组,查询快,增删慢 线程安全,效率低 LinkedList 底层数据结构是链表,查询慢...

2020-08-20 17:36:46 158

原创 JAVA Hashtable和HashMap的区别

Hashtable:线程安全,效率低。不允许null键和null值HashMap:线程不安全,效率高。允许null键和null值其他都一样,其实HashMap是用来替换Hashtable的。

2020-08-20 16:38:24 156

原创 JAVA HashMap遍历讲解

package com.wdy.hashmap;import java.util.HashMap;import java.util.Map;import java.util.Set;public class HashMapDemo { public static void main(String[] args) { // TODO Auto-generated method stub // 创建Hashmap对象 HashMap<String,String> map.

2020-08-20 13:28:40 303

原创 JAVA Collection集合总结

1. Collection集合总结 Collection |--List 有序,可重复 |--ArrayList 底层数据结构是数组,查询快,增删慢。 线程不安全,效率高 |--Vector 底层数据结构是数组,查询快,增删慢。 线程安全,效率低 |--LinkedList...

2020-08-18 18:01:02 191

原创 JAVA Set集合特点

(1)Set集合的特点 无序,唯一 (2)HashSet集合(掌握) A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法:hashCode()和equals() 执行顺序: 首先比较哈希值是否相同 相同:继续执行equals()方法 返回true:元素重复了,不添加 ...

2020-08-18 17:58:21 442

原创 JAVA TreeSet集合保证元素排序和唯一性

* TreeSet:能够对元素按照左小右大等不管规则进行排序。TreeSet是一个二叉树结构(红黑树是一个平衡二叉树)。* 排序有两种方式* A:自然排序* B:比较器排序** TreeSet集合的特点:排序和唯一* TreeSet集合保证元素排序和唯一性的原理* 唯一性:是根据比较的返回是否是0来决定。* 排序:* A:自然排序(元素具备比较性)* 让元素所属的类实现自然排序接口 Comparable* ...

2020-08-18 17:40:35 777

原创 JAVA HashSet的内容的唯一性

1. 通过具体的例子来说明:public class HashSetDemo { public static void main(String[] args) { // 创建集合对象 HashSet<String> hs = new HashSet<String>(); // 创建并添加元素 hs.add("hello"); hs.add("world"); hs.add("java"); hs.add("world"); // 遍历...

2020-08-18 15:28:43 237

原创 JAVA List的特点

2020-08-16 23:31:56 353

原创 JAVA 常见数据结构

2020-08-16 22:45:22 112

原创 JAVA ConcurrentModificationException

import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.ListIterator;/* * 问题? * 我有一个集合,如下,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。 * * ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异.

2020-08-16 22:32:13 142

原创 JAVA 集合的继承体系图解

2020-08-16 17:06:20 234

原创 JAVA 迭代器使用图解和原理解析

2020-08-16 17:05:46 358

原创 JAVA 类与修饰符

/* 修饰符: 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 抽象修饰符:abstract 类: 权限修饰符:默认修饰符,public 状态修饰符:final 抽象修饰符:abstract 用的最多的就是:public 成员变量: 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 用的最多的就是:private .

2020-08-12 09:11:00 636

自定义View -FlowLayout工程

自定义View -FlowLayout工程

2025-02-23

Android 虚拟机与ClassLoader类加载笔记

Android 虚拟机与ClassLoader类加载笔记

2025-02-17

RxJava笔记1.5工程代码

RxJava笔记1.5工程代码

2025-01-21

1.1 -1.4 工程代码

1.1 -1.4 工程代码

2025-01-21

Android Wi-Fi 支持中文SSID修改 Patch

Android Wi-Fi 支持中文SSID修改 Patch.直接使用patch命令打到代码中就可以.

2017-08-29

iwpriv iwlist iw工具

iwpriv iwlist iw工具

2017-07-25

结构体字节对齐规则

结构体字节对齐规则,主要是介绍结构体字节对齐规则,内容有点长,但是很全面.

2018-01-29

GetPostUtil.java

GetPostUtil.java为学习内容,请勿另作他用,仅供参考,可以下载使用。如有错误,欢迎各位神人指教,多多益善

2020-07-19

java中各种排序算法集合

本内容中包含了java中各种排序算法的实现以及思想的解释,本内容仅供学习参考使用,请需要的朋友自行下载。

2020-09-02

Handler消息处理机制+面试说.md

Handler消息处理机制+面试说.md

2018-04-09

DownUtil.java

DownUtil.java仅供学习使用请勿作他用,如有不同意见,欢迎指正,各位神人,速速来报,多多益善

2020-07-19

Android AnimationDemo_DrawableAnimation帧动画

DrawableAnimation帧动画的Demo。其实不下载用我的代码,自己随便加上图片一样可以在你的android项目中运行。我想不要资源分了,但是现在好像不能设置为0资源分啊,最小就是2。请理解

2017-11-12

空空如也

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

TA关注的人

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