自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2.7.x Flutter

flutter dart事件模型

2022-08-23 15:52:31 514 1

原创 3.3.3 JMM Java内存模型

JMM java内存模型

2022-07-21 20:03:09 231

原创 2.3.1 View绘制流程

View绘制 ViewRootImpl

2022-07-18 21:51:31 168

原创 2.6.2 内存泄漏

Android 内存泄漏 LeakCanary

2022-07-15 16:39:33 225

原创 3.2.1 Java多线程常见方法

让线程进入等待状态,直到被notify。线程释放锁。(只能在同步方法中调用)同上,导致线程进入等待状态直到它被通知或者经过指定的时间。随机选择一个在该对象上调用wait()方法的线程,解除其阻塞状态。(只能在同步方法中调用)解除所有那些在该对象上调用wait方法的线程的阻塞状态。(只能在同步方法中调用)FAQ:为什么要在synchronized方法或代码块中调用?这几个方法要求当前正在运行object.wait()方法的线程拥有object的对象锁。即使你确实知道当前上下文线程确实拥有了对象锁,也不能将o

2022-07-10 22:03:17 612

原创 3.1 Java集合类

Java集合 list map

2022-06-13 16:57:50 76

原创 2.2.1 Handler消息驱动机制

Handler机制 内存泄漏

2022-06-12 21:09:58 183

原创 3.5 Java相关

Java 内部类持有外部类引用,Java引用

2022-06-11 16:55:53 90

原创 1.6.1 DFS和回溯

深度优先搜索和回溯算法

2022-06-11 16:08:41 77

原创 3.2.2 Java同步关键字和类

查看字节码发现:MONITORENTER,MONITOREXIT; FLAG:ACC_SYNCHRONIZED。每个对象对应一个Monitor(监视器锁)对象。synchronized基于进出Monitor对象,实现代码块的同步。它的底层依赖操作系统的Mutex Lock(互斥锁)。他是重量级锁性能低。(Monitor(又称管程),在Java中是ObjectMonitor(JVM源码中C++实现)来实现管程。它是对互斥量和信号量的封装,依赖于底层操作系统的Mutex Lock实现,操作系统实现线程之间的切

2022-05-23 23:20:10 247

原创 2.1.2 app启动

app启动流程1 在 Launcher 点击 app,向 AMS 发送请求【Binder机制】2 AMS 先 pause Launcher,然后向 Zygote 请求创建新进程【Framework启动】。后者通过socket通信。(system_server进程中,调用到了Process.start() 方法,初始化参数之后写入到 socket 中,然后阻塞等待 Zygote 返回子进程pid。)3 Zygote 通过socket收到消息( runSelectLoop()循环接收消息 ),用 for

2022-04-11 16:43:30 311

原创 2.1.3 FrameWork

Android系统启动 FrameWork启动

2022-04-01 17:24:18 3661

原创 2.3.x 事件分发

简述:在软件层面,读入和分发触摸事件的是系统服务 InputManagerService,实际上是jni层的 NativeInputManager。NativeInputManager 里的两个对象 EventHub 和 InputManager。EventHub监听设备节点,收集原始的输入事件。InputManager 中是生产者消费者模型。InputReader从EventHub读取输入事件存入队列,InputDispatcher从队列事件取出事件分发。事件由InputChannel跨进程传递

2022-01-11 20:14:30 488

原创 1.5.2 二叉树中等

通过多种遍历二叉树,我们熟悉了二叉树题目基础操作,进阶题目多建立在这些基础操作基础上,综合其他的思路进行解答。二叉树+动态规划不同的二叉搜索树https://leetcode-cn.com/problems/unique-binary-search-trees/这个人的思路写的很简单:https://leetcode-cn.com/problems/unique-binary-search-trees/solution/96-bu-tong-de-er-cha-sou-suo-shu-python

2021-12-28 17:42:29 141

原创 1.5.1 树的遍历

中序遍历 (先序、后序同理)写出递归和非递归算法https://leetcode-cn.com/problems/binary-tree-inorder-traversal/solution/er-cha-shu-de-zhong-xu-bian-li-by-leetcode-solutio/递归 /** * 递归中序遍历 */ public List<Integer> inorderTraversal(TreeNode root) { List<Inte

2021-12-21 17:59:23 306

原创 1.1.2 查找算法

二分查找非常基本的查找算法那,从二分查找衍生出插值查找、斐波那契查找等。https://leetcode-cn.com/problems/binary-search/分别写出二分查找的非递归和递归版本。递归 private int searchRange(int target, int[] array, int l, int r) { if (l > r) { return -1; } int mid = (l + r) / 2;

2021-12-14 18:29:16 749

原创 1.7 巧用数据结构

巧用map1 和为K的子数组https://www.lintcode.com/problem/1844/2

2021-11-24 11:27:47 1548

原创 1.4.2 链表-中等

链表一些中等难度的题目大多是在简单的操作上进行扩展。删除链表的倒数第 N 个结点https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ public ListNode removeNthFromEnd(ListNode head, int n) { ListNode pre = null, tar = head, tail = tar; for(int i=1 ; i<n ;i++

2021-11-23 20:30:47 1736

原创 总目录(编辑中)

1 算法    1.1 排序    1.2 查找    1.3 动态规划    1.4 链表    1.5 树    1.6 字符串(数组)2 Android    2.1 组件    2.2 异步    2.3 View

2021-11-22 20:08:14 1749

原创 1.3.2 动态规划-中等

最长回文子串https://leetcode-cn.com/problems/longest-palindromic-substring/1 暴力首先想到的是暴力解法,遍历所有子串,判断是否回文,记录最长的一个。 private String getLongestPalindrome(String input) { if (input == null || input.length() == 0) { return input; } char[] array

2021-11-12 11:55:08 59

原创 1.4.1 链表-简单

链表反转https://leetcode-cn.com/problems/reverse-linked-list/ public ListNode reverseList(ListNode head) { if(head ==null || head.next ==null){ return head; } ListNode next, cur, pre; pre = head; cur = h

2021-11-10 23:49:14 229

原创 1.3.1 动态规划-简单

爬楼梯https://leetcode-cn.com/problems/climbing-stairs一、想不出,带入值台阶n几种方式思路11走一步22走一再走一步;直接走两步33走一步再走一步再走一步;走一步 再走两部;走两步 再走一步二、找规律(子问题)发现上三个台阶的方式可以拆解为:上两个台阶之后再走一步;上一个台阶之后再走两步;因此,上三个台阶的方式数 = 上两个台阶的方式数 + 上一个台阶的方式数 = 2 + 1 = 3并且上两个台阶

2021-11-04 23:50:27 101

原创 2.1.1 Activity

Activity启动流程startActivity最终远程调用到AMS中,AMS收到IPC消息,调用ActivityStackSupervisor的方法。这个stacksupervisor管理整个手机任务栈,它在AMS中创建。ActivityStackSupervisor中,管理多个ActivityStack(通过ActivityDisplay间接管理,ActivityDisplay它对应到一个显示设备),但当前只会有一个获取焦点(Focused)的ActivityStack;ActivitySta

2021-10-11 18:42:11 145

原创 获取app流量使用、启动时间等信息

获取手机安装的app private void test() { PackageManager pm = getPackageManager(); // Return a List of all packages that are installed on the device. List&amp;lt;PackageInfo&amp;gt; package...

2019-03-12 10:19:02 1270

原创 简单方便快捷的Android引导页 高亮 浮层(cguide)

效果图简单的步骤导入库使用第三方库https://github.com/jcguide/cguide引入在build.gradle中配置 allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.git...

2018-12-19 10:56:17 1680

原创 薛定谔的OkHttp

薛定谔的猫:在一个盒子里有一只猫,以及少量放射性物质。之后,有50%的概率放射性物质将会衰变并释放出毒气杀死这只猫,同时有50%的概率放射性物质不会衰变而猫将活下来。根据经典物理学,在盒子里必将发生这两个结果之一,而外部观测者只有打开盒子才能知道里面的结果 。在量子的世界里,当盒子处于关闭状态,整个系统则一直保持不确定性的波态,即猫生死叠加。猫到底是死是活必须在盒子打开后,外部观测者观测...

2018-11-14 20:41:32 269

原创 【Android】——单元测试、JUnit4、Mockito、Dagger2等

单元测试JUnit4单测工具JUnit4常用注解TestBeforeAfterBeforeClassAfterClass一个JUnit4的单元测试用例执行顺序IgnoreAssert类Assert类中验证结果的方法assertEqualsexpected actualassertEqualsexpected actual toleranceassertTrueboolean

2017-12-27 19:53:46 1168

原创 【Java】の基础——线程池

一、重要的成员变量corePoolSize:核心线程池大小 maximumPoolSize:线程池最大线程数 keepAliveTime:表示线程没有任务执行时最多保持多久时间会终止 workQueue:一个阻塞队列,用来存储等待执行的任务 runState:表示线程池的当前状态继承关系二、线程池状态volatile int runState;static final int RUNNIN

2017-10-27 22:46:36 204

原创 【操作系统】の基础——操作系统FAQ

线程进程区别进程的通信方式线程同步的方式有哪些作业调度的算法先来先服务算法FSFS短作业优先调度算法SJF优先级调度算法PSA高响应比优先调度算法HRRN死锁什么是死锁死锁产生的条件怎样避免死锁线程进程区别进程是具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源调度和分配的一个独立单位。线程是进程的实体,是CPU调度和分派的基本单位,它是比进程更小的能独立

2017-10-24 12:37:46 312

原创 【网络】の基础——HTTP等其他FAQ

之前的HTTP链接http://blog.csdn.net/a565815942/article/details/52223747HTTP的请求报文,响应报文结构请求报文 一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和**请求数据**4个部分组成。请求行请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。 HTTP协议的

2017-10-24 10:36:20 383

原创 【Java】の基础——IO

Java IOJava IO即Java 输入输出系统。流在Java IO中,流是一个核心的概念。流从概念上来说是一个连续的数据流。你既可以从流中读取数据,也可以往流中写数据。流与数据源或者数据流向的媒介相关联。 在Java IO中流既可以是字节流(以字节为单位进行读写),也可以是字符流(以字符为单位进行读写)。IO的类型从是读媒介还是写媒介的维度看,Java IO可以分为:输入流:InputStr

2017-10-21 19:48:40 195

原创 【Java】の基础——注解

Java注解注解的作用生成文档。这是最常见的,也是java 最早提供的注解。常用的有@see @param @return 等,这点都很熟悉,不就是生成自己的API嘛。跟踪代码依赖性,实现替代配置文件功能。比较常见的是spring2.5 开始的基于注解配置。作用就是减少配置。现在的框架基本都使用了这种配置来减少配置文件的数量。在编译时进行格式检查。如@Override 放在方法前,如果你这个方

2017-10-21 14:40:04 182

原创 【Android】の基础——OkHttp

OkHttp使用同步方式异步方式拦截器OkHttp请求过程解析Dispatcher类同步请求的执行流程异步请求的执行流程Volley和OkHttp对比VolleyOkHttpOkHttp使用同步方式OkHttpClient client = new OkHttpClient.Builder().readTimeout(5, TimeUnit.SECONDS).build();

2017-10-21 11:36:35 250

原创 【Android】の基础——进程优先级

系统根据在进程中在运行的组件及组件的状态,为每一个进程分配了一个优先级等级。优先级最低的进程首先被杀死。这个进程重要性的层次结构主要有五个等级。 五个进程等级1.前台进程(Foreground process)是前台进程的三种情况:进程持有一个正在与用户交互的Activity。进程持有一个Service,这个Service处于这几种状态:Service与用户正在交互的Activity绑定。Se

2017-10-19 10:34:29 204

原创 【Android】の基础——ANR和AsyncTask

ANRApplication No Response,应用程序无响应,因为在主线程中进行过多的耗时操作就会堵塞主线程从而造成ANR,产生的原因主要有三个Activity耗时超过5s,Broadcast Receiver超过10s,Service超过20s。ANR的分析通过Log和trace.txtANR的避免将所有耗时操作,比如访问网络,Socket 通信,查询大量 SQL 语句,复杂逻辑计算等都放

2017-10-05 13:26:41 879

原创 【Android】の基础——ListView和RecyclerView缓存机制

ListView的RecycleBinRecycleBin机制例子RecyclerView缓存Recycler两者对比ListView缓存RecyclerView缓存ListView和RecyclerView其他的区别ListView的RecycleBin我们在自定义ListView,重写Adapter的getView方法时,会注意到一个convertView参数。那么它从何而来?这

2017-10-04 14:26:11 414

原创 【Android】の基础——布局优化和过度绘制

在提高app性能上面,除了在内存上优化,还可以在布局上优化。布局优化通过<include>、<merge>标签使用<include>引入其他的布局。 使用<merge>减少视图层级结构。通过ViewStub进行盐池加载ViewStub是一个轻量级的View,它是一个看不见的,不占布局位置,占用资源非常小的控件。可以为ViewStub指定一个布局,在Inflate布局的时候,只有ViewStub会被

2017-10-03 15:18:22 298

原创 【Java】の基础——几种线程同步方式

synchronized关键字特点ReentrantLock类特点waitnotifyAll 方式Semaphoresynchronized关键字可以修饰方法、对象、成员变量是可重入锁可以说是一个几种锁过程的封装:偏向锁、轻量锁、对象锁,自旋锁特点不可定时不可中断ReentrantLock类可重入锁。(对于同一个线程,可以继续调用加锁的方法,而不会被挂起)特点可以设置超时时间

2017-09-24 22:16:57 207

原创 【Java】の基础——Java语言FAQ

java八种数据类型逻辑型文本型整数型浮点型抽象类和接口重载和重写equals和Java四种权限修饰符Java版本新特性java八种数据类型逻辑型boolean文本型char:1字节;整数型byte:1字节;-128 ~ 127 short:2字节;-2^15 ~ 2^15-1 int:3字节;-2^31 ~ 2^31-1

2017-09-22 17:35:23 239

原创 【Android】の基础——IPC(进程间通信)

各种方式比较Bundle通过Bundle的优点通过Bundle的缺点文件通过文件的优点缺点文件的缺点Socket使用Socket的优点使用Socket的缺点AIDL使用AIDL优点使用AIDL缺点Messager使用Messager优点使用Messager缺点ContentProvider使用ContentProvider优点使用ContentProvider缺点Binde

2017-09-19 09:48:14 501

空空如也

空空如也

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

TA关注的人

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