自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HZF

  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java并发编程(四)ThreadLocal的使用及原理

导图一、基本概念ThreadLocal为线程变量,也常说线程局部变量;提供了线程内存储变量的能力,这些变量在每一个线程之间存取都是相互独立的。官方注释/** * This class provides thread-local variables. These variables differ from * their normal counterparts in that each thread that accesses one (via its * {@code get} or {@c

2020-09-23 17:52:27 191

原创 Java并发编程(二)线程安全问题

线程安全问题

2020-09-14 14:37:47 188

原创 Java并发编程(一)线程基础概念

1、什么是多线程

2020-09-10 22:21:36 178

原创 Java并发编程(三)多种方式实现生产者消费者模型

1、wait/notify的方式public class ConsumerProducter { private static LinkedList<Object> mList = new LinkedList<>(); private static final int MAX = 10; public static void main(String[] args) { new Thread(new ProducterRunnable())

2020-09-08 11:15:14 122

原创 Condition实现等待唤醒的原理

1、引言任何一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括了wait、notify、notifyAll方法,他们与synchronized关键字配合可以实现等待/通知模型。那么如果我们不适用内置锁而是通过Lock想要实现等待/通知模型的话就需要使用到Condition接口。这两种实现等待通知模型的方式在性能上还是有一些不同的,这里引用《Java并发编程的艺术》里的对比图片:2、使用Condition配合Lock的实现等待唤醒的方式与内置锁等待唤醒的使用方

2020-08-30 17:43:49 404

原创 ReentrantLock源码分析

一、引言ReentrantLock作为concurrent包一下的一员,有着比Synchronized更加直观灵活的使用方式;private static void lockTest() { try { lock.lock(); //dosometing } catch (Exception e) { } finally { //unlock一定要放在finally语句中

2020-08-30 17:42:57 194

原创 呕心沥血:RxJava2.x变换操作符

RxJava的基本流程分析可以参考之前的文章https://www.jianshu.com/p/2adaea7237c4RxJava创建操作符讲解https://www.jianshu.com/p/376fb237d93c1、序言RxJava除了拥有逻辑简洁的事件流链式调用,使用简单外其丰富的操作符基本可以满足日常开发中的各种实现逻辑Rx的基本操作符分类下面会逐一讲解RxJava的变换操作符2、变换操作符RxJava变换操作符分类2.1、map作用:将输入事件流中的内容逐一的进行修

2020-08-30 17:42:12 175

原创 呕心沥血:RxJava2.x基础流程分析

RxJava一、RxJava的优势以及基本使用1、优势1、代码逻辑清晰 优雅2、避免回调订阅3、线程调度2、使用示例 Observable observable = Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext("RxText")

2020-08-30 17:40:30 131

原创 呕心沥血:RxJava2.x创建操作符

1、序言RxJava除了拥有逻辑简洁的事件流链式调用,使用简单外其丰富的操作符基本可以满足日常开发中的各种实现逻辑Rx的基本操作符分类下面会逐一讲解每一类操作符的使用2、创建操作符2.1、基本创建操作符create作为RxJava最基本的创建操作,用来完整的创建一个被观察者Observable对象通过create创建一个被观察Observable对象 Observable observable = Observable.create(new ObservableOnSubscribe()

2020-08-30 17:39:47 159 1

原创 AsyncTask的使用以及实现原理

一、AsyncTask的简介以及使用1、AsyncTask的简介一个Android轻量级异步类;实际上在我们日常开发中可能会遇到大量子线程处理数据然后回调到主线程进行展示处理等需求,因此谷歌官方将线程池+Handler封装成了AsyncTask,方便开发者使用。2、使用public class TestActivity extends BaseActivity { private TextView tv_progress; @Override public void in

2020-08-30 17:38:16 589

原创 Android-JNI的简单使用

一、什么是JNI1、jni的含义JNI即为java native interface Java本地接口;JNI是用来调用本地方法的技术,用来使Java和C/C++进行通信。简单来说,Java运行一个程序需要和不同的系统进行交互,在windows里就要和windows底层平台交互,mac里就要和mac的底层平台交互, JVM就是通过大量的JNI技术能够使Java运行在不同的系统平台当中,与不同的系统平台底层进行交互。2、Java与JNI类型对照表基本类型对照引用类型对照3、什么是动态库 静态

2020-08-30 17:37:12 3763

原创 Java基础巩固——Java泛型

1、Java中的泛型思维导图1.1、为什么要使用泛型例如下面这个例子,如果list不加泛型,先向其添加两个String的值,再向其中添加一个Integer的值,这是完全可以的,因为这是list默认的类型是Object的;但是平时开发当中,可能忘了还传入了一个Integer的类型,就会导致如下的错误:public static void main(String[] args) { List list = new ArrayList(); list.add("111")

2020-08-30 17:27:08 265 2

原创 基于Android6.0源码修改屏蔽系统下方的虚拟按键以及上方的状态栏

1、屏蔽系统底部的虚拟按键 frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java 在PhoneWIndowManager.java文件中有如下代码:String navBarOverride = SystemProperties.get("qemu.hw.mainkeys");i

2017-06-28 14:41:20 7030 5

原创 基于安卓6.0开机启动动画到Launcher的流程

基于安卓6.0的开机启动动画到加载Launcher的流程

2017-06-13 16:20:46 978

原创 利用Robotium进行安卓自动化测试

一、什么是Robotium Robotium是一款类似Selenium但面向Android端的开源自动化测试框架,既支持测试Native应用,也支持Hybrid应用(混合开发),兼具Native APP良好的用户交互体验的优势以及Web APP跨平台、易变更的又是;既支持黑盒形式的自动化测试,也支持白盒形式的自动化测试。通过Robotium用户可以编写出更强大健壮的UI自动化测试用例,并可

2017-05-15 15:02:58 445

原创 RecyclerView的滑动删除以及下拉加载

1、自定义MyRecyclerViewpublic class MyRecyclerView extends RecyclerView { private Context mContext; //检测手机在滑动过程的速度 private Scroller mScroller; private VelocityTracker velocityTracke

2017-05-12 09:15:55 306

转载 Camera1.0和Camear2.0的区别

内容Camera1.0Camera2.0是否相同权限android.permission.CAMERAandroid.permission.CAMERA是布局SurfaceViewTextureView否实现接口SurfaceHolder.Callback 1.surfaceCreated 2.surfaceC

2017-03-31 08:52:54 4918

Robotium的jar包

安卓Robotium自动化测试的jar包

2017-05-15

空空如也

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

TA关注的人

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