- 博客(66)
- 资源 (5)
- 问答 (1)
- 收藏
- 关注
原创 【重学Java】(四)Handler与ThreadLocal
先放结论:很多网上的文章说,threadlocal是以当前线程作为key的,这个说法是错误的。正确的说法是:threadlocal用自己做key,存到threadlocalmap中,因为一个Thread只有一个threadlocalmap,这个map中存储了当前线程所有的threadlocal对象。由一道面试题引申:Handler中如何保证它的Looper是唯一的? 答案:ThreadLocal我们知道,Looper循环是从Looper.prepare开始的:可以看到这里sThreadLoc
2020-05-12 18:24:05
659
1
原创 【重学Java】(三)静态代理与动态代理
1.静态代理静态代理是典型的代理模式的模版代码,代码结构如图:具体实现:被代理类和代理类实现同一接口,在代理类中持有被代理对象的引用,外界调用时,操作代理对象即可操作被代理对象。由于代理的存在,还可以在操作前后加入额外的逻辑。如果目标类是第三方的代码,也可以采用继承的方式做代理2.动态代理(1)动态代理只能代理接口。因为动态代理生成的proxy代理类,都是继承自系统的Pro...
2020-04-30 18:04:21
240
原创 数据结构与算法(九)查找 - 二分查找
1.时间复杂度:logn每次查找后,数据规模缩减为原来的一半2.代码实现@Test public void test() { System.out.println("========" + bsearch(new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 9)); bsearch2(new int[]{1, 2...
2020-04-30 15:15:02
232
原创 【重学Java】(二)注解与反射
1.注解的意义注解本身没有意义,它是作为一种标记或者注释存在。需要结合反射、插桩才有作用jdk1.5引入,对于被注解的代码没有影响2.元注解是用于注解的注解:meta-annotationTarget:注解的使用范围public enum ElementType { TYPE, // 类、接口、枚举类 FIELD, // 成员变量(包括:枚举常量)...
2020-04-28 16:35:29
174
原创 【重学Java】(一)Java泛型
1.什么是泛型JDK5引入泛型,提供了编译时 类型安全 检测机制。该机制允许程序员在编译期检测非法的类型。本质是参数类型,所操作的数据类型被认定为参数。只存在于编辑器和编译期,jvm中没有泛型,目的是为了兼容低版本2.为什么使用泛型(1)增强编译期错误检测,减少因类型问题引发的运行时异常(2)具有更强的类型检查,不需要强转(3)可以使用泛型算法,增加代码复用性3.J...
2020-04-26 19:58:10
171
原创 数据结构与算法(八)排序(二) - 归并排序、快速排序、第K大元素
public int[] mergeSortC(int[] array, int low, int heigh) { if (low < heigh) { int mid = (low + heigh) / 2; mergeSortC(array, low, mid); mergeSort...
2020-04-16 22:52:43
197
原创 数据结构与算法(八)排序 - 冒泡排序、插入排序、选择排序
public class Sort { @Test public void test() {// PopSort(new int[]{2, 3, 1, 4, 6, 5});// InsertSort(new int[]{2, 3, 1, 4, 6, 5},6); selectionSort(new int[]{2, 3, 1, 4...
2020-04-15 21:47:09
177
原创 数据结构与算法(七)递归 - 斐波那契数列+阶乘实现+数据集合的全排列
public class Recursive { @Test public void test() { System.out.println("============Fibonacci " + Fibonacci(4)); System.out.println("============Factorial " + Factorial(5));...
2020-04-13 19:00:45
244
原创 数据结构与算法(六)队列 - 数组队列+链表队列
public class Queue { @Test public void test() { //均摊时间复杂度O(1)// ArrayQuene arrayQuene = new ArrayQuene();// arrayQuene.enqueue(1);// arrayQuene.enqueue(2);//...
2020-04-13 17:23:47
120
原创 数据结构与算法(五)栈(二) -链表栈实现-模拟浏览器前进后退功能
public class Stack { @Test public void test() {// LinkedStack linkedStack = new LinkedStack();// linkedStack.push("a");// linkedStack.push("b");// linkedStack....
2020-04-13 09:56:02
429
1
原创 数据结构与算法(五)栈- 数组栈+链表栈
public class Stack { @Test public void test() { ArrayStack arrayStack = new ArrayStack(); System.out.println("------------------------------"); arrayStack.push(11); ...
2020-04-09 22:00:07
178
原创 数据结构与算法(四)链表(五)- 两个有序链表合并+寻找中间节点
public class CombineLinkedList { @Test public void test() { System.out.println("------------------------------"); CombineLinkedList list = new CombineLinkedList(); Co...
2020-03-24 16:02:21
245
1
原创 数据结构与算法(四)链表(四)- 单链表原地反转
public class ReverseLinkedList { @Test public void test() { System.out.println("======================================"); ReverseLinkedList reverseLinkedList = new ReverseLink...
2020-03-24 11:22:18
266
原创 数据结构与算法(四)链表(三)- 双向链表
public class DoublyLinkedList { @Test public void test() { Log.e("DoublyLinkedList", "000000000000000000000000000000000000000000000"); DoublyLinkedList doublyLinkedList = new ...
2020-03-05 10:42:44
142
原创 数据结构与算法(四)链表(二)- 单向循环链表
public class RecycleLinkedList { @Test public void test() { System.out.println("00000000000000000000000000000000"); RecycleLinkList recycleLinkList = new RecycleLinkList(); ...
2020-03-04 21:18:10
137
原创 数据结构与算法(四)链表(一)-单链表实现
1.单链表的增、删、遍历public class Test { @org.junit.Test public void test() { //测试代码 System.out.println("00000000000000000000000000000000000000000000000000000000000000000000...
2020-03-02 21:31:57
217
原创 数据结构与算法(三)数组与链表编程实践
1.支持动态扩容的数组public class DynamicArray { //扩容因子 final float factor = 0.75f; int size = 16; int currentIndex = 0; int[] arrays = new int[size]; privat...
2019-08-01 22:03:26
161
原创 数据结构与算法(二)数组
随机访问1.数组Array是线性表,用一组连续的内存空间,存储一组相同数据类型的数据。这个特性决定了随机访问的基础。2.线性表:数组、队列、链表、栈。非线性表:树、图、堆3.一维数组寻址公式:a[i]_adress = base_adress + i * data_type_size插入与删除1.插入的最好时间复杂度为O(1),最坏时间复杂度为O(n),平均时间复杂度为O(n)...
2019-07-25 22:43:29
154
原创 数据结构与算法(一)复杂度分析
大O复杂度表示法代码执行时间T(n)与执行次数n成正比,即T(n) = O(f(n)),大O表示时间复杂度,又称渐进时间复杂度,表征代码执行时间随数据规模增长的变化趋势。一定程度上可以类比斜率、导数。时间复杂度分析1.只关注循环执行次数最多的代码行,忽略常数2.加法法则:总复杂度等于量级最大的那个时间复杂度3.乘法法则:总复杂度等于嵌套的各个量级复杂度乘积常见时间复杂度...
2019-07-24 21:54:48
266
原创 H5离线包技术的实际应用-webview秒开
一、背景在实际业务中,我们app中的webview使用的场景越来越多,加载速度成为了困扰用户的一个痛点,尤其是h5由jsp过渡到vue后,页面加载速度更慢了,经常是经过长时间的loading才能加载出来,虽然这和我们的整体架构有关,首页有4-7个webview fragment,在进入首页的时候会同时加载,各个页面都需要加载大量的图片以及数个请求。为此,提高加载速度成为了优化当中的一个方向。...
2019-06-13 23:08:58
9384
转载 Android最佳性能实践(一)——合理管理内存
==========================================================转载仅为个人学习,如侵删。原文出处:http://blog.youkuaiyun.com/guolin_blog/article/details/42238627==========================================================有不少朋友都问过我...
2018-03-08 21:11:40
192
转载 Java中的4种引用在Android中的应用
======================================================原文链接http://blog.youkuaiyun.com/shifuhetudi/article/details/78976672,如侵删======================================================JVM垃圾回收(GC)机制我们知道,Java垃圾回收(...
2018-03-03 11:26:16
2278
转载 volatile和synchronized
=================================================原文链接http://blog.youkuaiyun.com/suifeng3051/article/details/52611233,如侵删=================================================volatile和synchronized特点首先需要理解线程安全的两个方...
2018-03-03 11:16:10
197
转载 从源文件到APK-Android打包流程
======================================================原文链接https://juejin.im/entry/58b78d1b61ff4b006cd47e5b,如侵删======================================================我们平时在开发的过程中,每天都会run很多次项目,Android Stu...
2018-03-03 10:18:09
3888
转载 Context都没弄明白,还怎么做Android开发?
================================原文链接https://www.jianshu.com/p/94e0f9ab3f1d 文章系个人学习转载。如侵删。================================Activity mActivity =new Activity()作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?An...
2018-03-03 09:49:13
212
转载 二叉树基础-1
本文仅为个人学习使用。如有侵权,立即删除======================================================作者:qing的世界链接:https://www.jianshu.com/p/6f179f37ad79本文由作者授权发布。作者之前还授权推送过视频相关的文章,可以看下,相信你会喜欢作者的文笔的Android视频开发进阶(一)关于视频的那些术语。本文属于...
2018-02-26 09:51:21
210
原创 Android 6.0 7.0 8.0特性变更
Android 6.0 变更本文内容运行时权限低电耗模式和应用待机模式取消支持 Apache HTTP 客户端BoringSSL硬件标识符访问权通知音频管理器变更文本选择浏览器书签变更Android 密钥库变更WLAN 和网络连接变更相机服务变更运行时APK 验证USB 连接Android for Work 变更API 差异API 级别 22 至 2
2017-12-22 17:49:40
2778
1
转载 深入理解java异常处理机制-exception
1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。package Test
2017-12-05 14:08:12
6749
转载 Glide系列之七:实现带进度的Glide图片加载功能
扩展目标首先来确立一下功能扩展的目标。虽说Glide本身就已经十分强大了,但是有一个功能却长期以来都不支持,那就是监听下载进度功能。我们都知道,使用Glide来加载一张网络上的图片是非常简单的,但是让人头疼的是,我们却无从得知当前图片的下载进度。如果这张图片很小的话,那么问题也不大,反正很快就会被加载出来。但如果这是一张比较大的GIF图,用户耐心等了很久结果图片还没显示出来,这个时
2017-11-23 16:05:02
1287
转载 Glide系列之六:探究Glide的自定义模块功能
自定义模块的基本用法学到这里相信你已经知道,Glide的用法是非常非常简单的,大多数情况下,我们想要实现的图片加载效果只需要一行代码就能解决了。但是Glide过于简洁的API也造成了一个问题,就是如果我们想要更改Glide的某些默认配置项应该怎么操作呢?很难想象如何将更改Glide配置项的操作串联到一行经典的Glide图片加载语句中当中吧?没错,这个时候就需要用到自定义模块功能了。
2017-11-23 14:57:53
693
转载 Glide系列之五:Glide强大的图片变换功能
在正式开始学习Glide的图片变化功能之前,我们先来看一个问题,这个问题可能有不少人都在使用Glide的时候都遇到过,正好在本篇内容的主题之下我们顺带着将这个问题给解决了。首先我们尝试使用Glide来加载一张图片,图片URL地址是:https://www.baidu.com/img/bd_logo1.png1这是百度首页logo的一张图片,图片尺寸是540*258像素。接下来我们编写一个非常简单的
2017-11-23 12:16:58
1114
转载 Glide系列之四:玩转Glide的回调与监听
今天是这个Glide系列的第四篇文章,我们又要选取一个新的功能模块开始学习了,那么就来研究一下Glide的回调和监听功能吧。今天的学习模式仍然是以基本用法和源码分析相结合的方式来进行的,当然,本文中的源码还是建在第二篇源码分析的基础之上,还没有看过这篇文章的朋友,建议先去阅读 Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程 。回调的源码实现作为一名G
2017-11-22 18:12:50
1160
转载 Glide系列之三:深入探究Glide的缓存机制
在本系列的上一篇文章中,我带着大家一起阅读了一遍Glide的源码,初步了解了这个强大的图片加载框架的基本执行流程。不过,上一篇文章只能说是比较粗略地阅读了Glide整个执行流程方面的源码,搞明白了Glide的基本工作原理,但并没有去深入分析每一处的细节(事实上也不可能在一篇文章中深入分析每一处源码的细节)。那么从本篇文章开始,我们就一篇篇地来针对Glide某一块功能进行深入地分析,慢慢将G
2017-11-21 19:04:19
681
转载 Glide系列之二:从源码的角度深入理解Glide的执行流程
在多数情况下,我们想要在界面上加载并展示一张图片只需要一行代码就能实现,如下所示:Glide.with(this).load(url).into(imageView);1虽说只有这简简单单的一行代码,但大家可能不知道的是,Glide在背后帮我们默默执行了成吨的工作。这个形容词我想了很久,因为我觉得用非常多这个形容词不足以描述Glide背后的工作量,我查到的英文资料是用tons of w
2017-11-21 12:03:00
374
转载 Glide系列之一:Glide基本用法
开始Glide是一款由Bump Technologies开发的图片加载框架,使得我们可以在Android平台上以极度简单的方式加载和展示图片。目前,Glide最新的稳定版本是3.7.0,虽然3.8.0已经推出预览版了,但是暂时问题还比较多。因此,我们这个系列的博客都会使用Glide 3.7.0版本来进行讲解,这个版本的Glide相当成熟和稳定。要想使用Glide,首先需
2017-11-21 09:55:08
385
转载 Android TouchEvent事件传递机制
原文地址:http://blog.youkuaiyun.com/morgan_xww/article/details/9372285跟touch事件相关的3个方法:public boolean dispatchTouchEvent(MotionEvent ev); //用来分派eventpublic boolean onInterceptTouchEvent(Mo
2017-11-03 09:12:49
282
转载 Android应用层View绘制流程与源码分析
【工匠若水 http://blog.youkuaiyun.com/yanbober 转载烦请注明出处,尊重分享成果】1 背景还记得前面《Android应用setContentView与LayoutInflater加载解析机制源码分析》这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系:看见没有,如上图中id为conten
2017-11-02 09:32:02
234
转载 反射方式获取父类中的所有属性和方法
俗话说:反射反射,程序猿的快乐。特意转载这篇文章,当做学习笔记原文链接Java代码 package com.syh.jdbc.reflection_super; /** * 父类 * @author syh * */ public class Parent { public String publi
2017-10-26 20:11:56
8507
转载 记一次淘宝首页奇葩的渲染问题-渲染色块
或许你曾经在 Chrome 浏览器上碰到过这样让人瞠目结舌的问题:hover 触发一个层展示,hover 离开后,这个层还遗留残影浏览器没有清理一个元素渲染的上一个状态,导致页面多出一个错位的跟该元素一模一样的影子交互时突然出现一个方形色块,覆盖在元素上或者还有更奇葩的……以上列举到的三个问题,我在维护淘宝首页的时候都遇到过。这些都是浏览器渲染页面时,因为渲染引擎的
2017-09-27 19:42:40
868
转载 Java之——Web项目中DLL文件动态加载方法
转载请注明出处:http://blog.youkuaiyun.com/l1028386804/article/details/53903557 在Java Web项目中,我们经常会用到通过JNI调用dll动态库文件来实现一些JAVA不能实现的功能,或者是一些第三方dll插件。通常的做法是将这些dll文件复制到 %JAVA_HOME%\jre\bin\ 文件夹或者 应用中间件(Tomcat|Weblog
2017-09-27 19:39:15
890
gradle-6.7-all.zzzip
2020-11-03
Android SipDemo(在官方demo基础上转成了AS工程,加了点注释)
2017-09-13
android studio使用的build tools 23.0.1
2016-02-01
关于PowerManager不起效果
2016-09-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人