bchen的博客

学习与技术分享,进步是不懈追求

分析ConcurrentHashMap的源码实现(jdk1.8)

ConcurrentHashMap不仅实现了多线程的同步读写而且轻量级,这是它相比于HashMap和HashTable的优势。HashMap是线程不安全的,它没有提供任何的同步机制,多线程并发访问会有问题。HashTable虽然提供了同步机制,但是它是通过整个对象加锁达到同步的,是重量级的,并发性...

2018-10-24 18:49:34

阅读数 148

评论数 0

源码分析AQS独占锁、共享锁和Condition的实现

AbstractQueuedSynchronizer是java.util.concurrent包下非常重要和基础的类,concurrent包下提供了一系列的同步操作需要的工具,包括了ReentrantLock、ReentrantReadWriteLock、ThreadPoolExecutor、Co...

2018-10-20 12:10:15

阅读数 449

评论数 0

分析ThreadLocal的实现原理

ThreadLocal是开发中常会使用的一个工具,从类的名字就可以看出,它为线程提供本地变量,即:每个线程私有的数据。下面直接进入源码。 1、使用方法: // Entity 存放线程要保存的信息 ThreadLocal<Entity&am...

2018-10-15 11:55:57

阅读数 198

评论数 0

Gradle之持续集成 - 使用Jenkins构建Gradle项目

参考《Gradle IN Action》书中使用Jenkins构建Gradle项目过程。 持续集成(Continuous Integration,CI)是一个软件开发实践,其提倡频繁地集成代码,对于每个变化,源代码都会通过自动化构建被编译和测试,从而有效地减少集成难度,让项目中的问题今早暴露出来...

2018-09-17 10:05:41

阅读数 3483

评论数 0

Gradle之Gradle扩展-自定义插件以及发布

通常我们会想要将一个非常有用的task共享给多个项目使用,Gradle插件正可以解决这一问题。Gradle插件是非常强大的,如Java插件,一行代码:apply plugin: 'java',就可以使用Java插件实现代码的编译、测试和打包成JAR文件;在android中,我们经常使用:apply...

2018-09-17 10:04:59

阅读数 887

评论数 0

Gradle之多项目构建

Gradle对构建模块化项目提供了强大的支持,在Gradle中每一个模块都是一个项目,称之为Gradle多项目构建技术,多项目构建实现了项目模块化,降低代码耦合度,增加内聚性,本篇文章将简单介绍如何使用Gradle进行多项目构建。 1、组装多项目构建:Gradle整个项目是由一个根目录和多个模块...

2018-09-17 10:04:10

阅读数 1413

评论数 0

Gradle之task的使用

在上一篇文章中(https://blog.csdn.net/weixin_38062353/article/details/82230239)做了对gradle的基本介绍,本篇文章将探索最基础的gradle构建块:project和task以及它们和API之间的映射。 一、构建块。 每一...

2018-09-17 10:03:35

阅读数 4883

评论数 0

Gradle之重新认识Gradle(项目结构、命令行、task、构建Java项目、包装器)

前言:之前一直接触使用Gradle完成Android项目的自动化构建,所谓重新认识Gradle是因为最近看了《Gradle IN Action》一书,对gradle进行了一次全面深刻的重新的认识。所以决定以系列博客,来完成自己对Gradle学习之路的一个总结与认识。...

2018-09-17 10:02:44

阅读数 384

评论数 0

ThreadPoolExecutor的使用及源码分析

ThreadPoolExecutor自己也经常使用,也看过几次源码,但是源码具体执行流程在经过一段时间之后有些就变得模糊。所以还是在此记录一下ThreadPoolExecutor源码中的关键点和自己对代码的理解。 在文章前面部分介绍一下ThreadPoolExecutor相关知识点、使用流程(...

2018-09-14 13:51:05

阅读数 330

评论数 0

android可以无限循环滑动的ViewPager

前言:最近有需求需要某个页面是可以无限滑动的,这个页面是用ViewPager实现的,但是ViewPager本身并不能无限滑动,所以想在android现有ViewPager的基础之上,实现这个功能,本文提供基于PagerAdapter和FragmentPagerAdapter的可以复用view和fr...

2018-09-10 11:47:09

阅读数 2881

评论数 0

播放器手势:基于GestureDetector实现(双击、快进快退、音量亮度调节)

最近有个播放器手势滑动快进快退的需求,研究了一下Android中GestureDetector的用法,封装了一个工具类,实现了单击、双击、横向滑动(快进快退)、竖向滑动(亮度音量调节)手势。代码参见:https://github.com/ChenSWD/PlayerGestureDetector ...

2018-08-29 23:42:59

阅读数 922

评论数 0

android 使用ndk(socket)进程保活

最近看了动脑学院的一个ndk进程守护的课程,特在此记录一下。由于个人之前对linux系统还是有所学习的,所以代码看起来基本没什么问题,在这里主要记录一下相关主要知识点、进程保活的主要实现原理。 代码我进行了整理,可参考git地址:https://github.com/ChenSWD/Proces...

2018-08-12 22:09:01

阅读数 1157

评论数 2

Android 属性动画代码分析(基于ObjectAnimator)

android属性动画是开发中经常使用的一项技能,但是我之前却从没有深究过动画实现原理,本文基于android 8.0,撸了一把ObjectAnimator源码,分析属性动画执行关键的过程。 一、动画执行的两个主要的问题 动画每一帧执行的信号是如何产生的:是handler循环还是。。。? V...

2018-08-11 12:04:53

阅读数 391

评论数 0

android API 26 中对 findViewById()泛型的理解

android在api 26中的findViewById方法使用了泛型,使我们在开发中免了强转类型的苦恼,今天突然冒出了一个疑问(个人在之前对泛型还没有深入理解),故在此记录一下: findViewById()怎么知道我要的是哪一种类型,也就是说它怎么能根据不同ID刚好强转成相对应的View。 ...

2018-08-11 12:02:45

阅读数 592

评论数 0

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