- 博客(397)
- 资源 (6)
- 收藏
- 关注
原创 Grade for Android 之二:Groovy 与Java的语法区别
Groovy对Java开发者来说是尽可能的自然过渡。Groovy设计者设计Groovy时,遵循最小改变原则,尤其是有Java开发背景的开发者学习Groovy时。如下列出了Java和Groovy的主要不同本文所有测试基于groovy 2.5.3, JVM 1.8.0_731.默认导入(Default imports)所有列出来的包和类在Groovy中是默认导入的,不用明确的使用impor...
2019-04-25 21:56:10
623
原创 Grade for Android 之一:Groovy概述
简介Groovy 是 Apache 旗下的一门基于 JVM 平台的动态/敏捷编程语言,在语言的设计上它吸纳了 Python、Ruby 和 Smalltalk 语言的优秀特性,语法非常简练和优美,开发效率也非常高(编程语言的开发效率和性能是相互矛盾的,越高级的编程语言性能越差,因为意味着更多底层的封装,不过开发效率会更高,需结合使用场景做取舍)。并且,Groovy 可以与 Java 语言无缝对接...
2019-04-25 21:53:16
602
转载 React-Native 概述
写在前面1. 什么是React-Native? React-Native是:Facebook 在2015年初React.js技术研讨大会上公布的一个开源项目。支持用开源的JavaScript库React.js来开发iOS和Android原生App。初期仅支持iOS平台,同年9月份,该开源项目同时支持Android平台。 React Native的原理是:在JavaScrip...
2019-04-22 00:05:10
1056
转载 响应式编程之三:RxJava应用:与Retrofit 结合的最佳实践
前言RxJava和Retrofit也火了一段时间了,不过最近一直在学习ReactNative和Node相关的姿势,一直没有时间研究这些新东西,最近有个项目准备写,打算先用Android写一个Demo出来,却发现Android的世界发生了天翻地覆的变化,EventBus和OKHttp啥的都不见了,RxJava和Retrofit是什么鬼?好吧,到Github上耐着性子看过了RxJava和Ret...
2019-04-21 23:59:33
578
转载 响应式编程之二:RxJava概述:在Android平台上开发详解
RxJava 到底是什么 RxJava 好在哪 API 介绍和原理简析 1. 概念:扩展的观察者模式 观察者模式 RxJava 的观察者模式 2. 基本实现 1) 创建 Observer 2) 创建 Observable 3) Subscribe (订阅) 4) 场景示例 a. 打印字符串数组 b. 由 id 取得图片并显示 ...
2019-04-21 23:54:33
475
原创 Retrofit框架解析之一:Retrofit2.0使用详解
综述retrofit是由square公司开发的。square在github上发布了很多优秀的Android开源项目。例如:otto(事件总线),leakcanary(排查内存泄露),android-times-square(日历控件),dagger(依赖注入),picasso(异步加载图片),okhttp(网络请求),retrofit(网络请求)等等。更多square上的开源项目我们可以去sq...
2019-04-18 00:07:39
626
原创 响应式编程之一:概述
什么是响应式编程(Reactive Programming)In computing, reactive programming is an asynchronous programming paradigm concerned with data streams and the propagation of change. This means that it becomes possibl...
2019-04-18 00:00:43
665
原创 xUtils3框架解析一:概述: ViewInject + ImageLoader + Http + SQLite 功能封装和使用
xUtils3简介xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(246K), 并且特性强大, 方便扩展: 稳定的基石:AbsTask和统一的回调接口Callback, 任何异常, 即使你的回调方法实现有异常都会进入onError, 任何情况下onFinished总会让你知道任务结束了. 基于高效稳定的orm工具,http模块得以更方便的...
2019-04-14 21:23:41
587
原创 JAVA 并发编程之十一:同步|异步|阻塞|非阻塞 +AsyncTask+ 非阻塞同步(Wait-free|Lock-free|Obstruction-free)
前言同步(Synchronization):如何正确有效的保护共享数据是编写并行程序必须面临的一个难题,通常的手段就是同步。同步+阻塞: UI Thread + method return;同步+非阻塞: UI Thread + 状态轮询查询;异步(Asynchronization):异步+阻塞:Work Thread + method return异步+非阻塞:Work...
2019-04-10 23:39:04
706
原创 JAVA 并发编程之十:线程模型2:Executor框架 + 线程池ThreadPool 的四种类型
前言1. Executor框架包括:Executor,Executors,ExecutorService,CompletionService,Future,Callable,FutureTask等。2. 线程|任务 区别: 实现Runnable的类应该被看作一项任务,而不是一个线程。在Java多线程中我们一定要有一个明确的理解,任务和线程是不同的概念。可以使用线程(Thread)执行任务(...
2019-04-10 22:50:51
542
原创 JAVA 并发编程之九:sleep()和wait() 概念 + 区别 + 应用场景
sleep和wait到底什么区别其实这个问题应该这么问——sleep和wait有什么相同点。因为这两个方法除了都能让当前线程暂停执行完,几乎没有其它相同点。wait方法是Object类的方法,这意味着所有的Java类都可以调用该方法。sleep方法是Thread类的静态方法。waitwait是在当前线程持有wait对象锁的情况下,暂时放弃锁,并让出CPU资源,并积极等待其...
2019-04-09 23:22:41
2158
原创 JAVA 并发编程之八:ThreadLocal(线程局部变量):概念+原理+使用场景
前言什么是ThreadLocal变量ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意:因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal 命名的由来。 既然每个 Thread 有自己的实例副本,且其它 Thread ...
2019-04-09 23:07:30
813
原创 JAVA 并发编程之七:重入锁ReentrantLock + lock + condition :可选择唤醒特定线程(线程状态控制Type2)
前言:synchronized和ReentrantLock的区别:1. 要注意synchronized同步,假如发生异常,JVM是可以帮我们自动释放锁的;但是lock不可以,我们只能手动释放锁,即使发生异常,jvm也不会自动释放锁。2.synchronized与wait()和notify()/notifyAll()方法结合可以实现等待通知模式;Reentrantlock可以实现同样的功能...
2019-04-09 22:56:08
580
原创 JAVA 并发编程之六:线程模型1:生产者-消费者模型 + 四种并发方案实现
前言生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。现在用四种方式来实现生产者消费者模型阻塞队列BlockingQueue的实现阻塞队列,是一种常用的并发数据结构,常用于生产者-消费者模式。 在Java中,有很多种阻塞队列...
2019-04-09 22:42:06
1517
原创 Android 插件开发之六:插件开发:View 的跨进程传递(应用场景:广告位)
热加载第三方应用的View,实现动态修改宿主应用这里是Demo,也就是前期的技术预言,所以不需要做一个完整的项目。要点:能够加载到第三方apk里面的View,并且显示出来,同时可以操作,进行数据交互。- 有宿主,和第三方APK- 第三方apk已经安装,所在目录是/system/app/- 能够进行数据交互,除了简单的点击以外,还可以进行复杂的操作。实现过程创建一个宿主项目...
2019-04-03 23:54:41
1053
原创 Android 进阶技术汇总十三:动画比较:补间动画(Tween)+帧动画(Frame)+属性动画(Property)
前言:1. 概念:补间动画tween Animation:用于Activity|PopupWindow|AlertDialog等界面的Enter|Exit动画(没有改变View本身属性);帧动画FrameAnimation:用于Android开关机动画;属性动画 Property Animation:通过特定时间内修改View本身的属性+View重绘,实现视觉的动画效果。2....
2019-04-03 23:06:46
499
原创 Android 进阶技术汇总十二:文件下载框架比较(Xutils|Retrofit2.0|FileDownloader|DownloadManager)
TODO
2019-04-03 23:02:09
956
原创 Android 插件开发之五:技术准备3:Java反射机制
一、获得Class对象Class<?> c = Class.forName("classname"); 抛出ClassNotFoundException二、获得实现接口Class<?> inters[] = c.getInterfaces();for(int i=0;i<inters.length;i++){ System.out.prin...
2019-04-02 00:11:43
234
原创 Android 插件开发之四:技术准备2:Java类加载+ 双亲委派模型+Android类加载器
类加载器Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。在加载阶段,java虚拟机需要完成以下3件事:a.通过一个类的全限定名来获取定义此类的二进制字节流。b.将定义类的二进制字节流所代表的静态存储结构转换为方法区的运行时数据结构。c.在java堆中生成一个代表该类的...
2019-04-02 00:05:00
444
原创 Android 插件开发之三:技术准备1:apk打包+dex加载+资源文件加载+框架Demo
app打包过程首先我们来了解一下插件化实现的原理,由于插件化原理涵盖内容太多这里只是介绍一下核心内容;我们了解一下app打包过程。请看下图:上面是android打包形成apk的一个过程,可以发现android开发主要的部分是整合编译代码、整合编译资源,然后就是安全签名保证apk完整性。我们再看一张图:#####上面是一个apk解压之后的文件,可以看出,里面几个比较重要的部分:...
2019-03-31 17:02:33
877
原创 Android 插件开发之二:组件开发:组件框架选型+组件间通信+组件依赖
在Android SDK一文中,我们谈到模块化和组件化,现在我们来聊聊组件化开发背后的哪些事.最早是在广告SDK中应用组件化,但是同样适用于普通应用开发以下高能,请做好心理准备,看不懂请发私信来交流.本文不推荐新手阅读,如果你刚接触Android开发不久,请立刻放弃阅读本文.模块化组件化不是个新概念,其在各行各业都一直备受重视.至于组件化什么时候在软件工程领域提出已经无从考究了,不...
2019-03-31 16:49:28
521
原创 Android 插件开发之一:概述:模块开发+组件开发+插件开发
架构:所谓架构,无非两个方面: 分层和通信方式。 其实广义的架构也可以说是这两个方面:子模块(子系统)划分和通信。子模块划分:除了大家公认的common部分, 业务模块的划分尤为重要,相比于狭义上的架构,广义上的子系统的划分的关注点,很考验技术经验以及对业务的理解。通信方式:模块化的通信方式,无非是相互引入;我抽取了common, 其他模块使用自然要引入这个module组件...
2019-03-30 23:14:30
492
原创 《图解HTTP》读书笔记九:确认访问用户身份的认证
Session管理及Cookie应用 基于表单认证的标准规范尚未有定论,一般会使用Cookie来管理Session(会话)。基于表单认证本身是通过服务器端的Web应用,将客户端发送过来的用户ID和密码与之前登录过的信息做匹配来进行认证的。但鉴于HTTP是无状态协议,之前已认证成功的用户状态无法通过协议层面保存下来,即,无法实现状态管理,因此即使该用户下一次继续访问,也无法...
2019-03-30 10:27:59
465
原创 《图解HTTP》读书笔记八:确保Web安全的HTTPS
HTTP主要有这些不足, 例举如下。 通信使用明文( 不加密) , 内容可能会被窃听。 不验证通信方的身份, 因此有可能遭遇伪装。 无法证明报文的完整性, 所以有可能已遭篡改。我们把添加了加密及认证机制的HTTP称为HTTPS(HTTP Secure)。HTTPS是身披SSL外壳的HTTP HT...
2019-03-30 10:26:49
402
原创 《图解HTTP》读书笔记七:HTTP首部
HTTP报文首部 HTTP协议的请求和响应报文中必定包含HTTP首部。 首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。 对于客户端用户来说, 这些信息中的大部分内容都无须亲自查看。HTTP请求报文在请求中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分构成。HTTP响应报文在响应中,HTTP报文由HT...
2019-03-30 10:26:03
324
原创 《图解HTTP》读书笔记六:与HTTP协作的Web服务器
一台Web服务器可搭建多个独立域名的Web网站, 也可作为通信路径上的中转服务器提升传输效率。用单台虚拟主机实现多个域名 HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点。 比如, 提供Web托管服务(Web Hosting Service) 的供应商, 可以用一台服务器为多位客户服务, 也可以以每位客户持有的域名运行各自不同的网站。 这是...
2019-03-30 10:24:43
391
原创 《图解HTTP》读书笔记五:返回结果的HTTP状态码
HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。 状态码的类别2XX 成功200 OK表示从客户端发来的请求在服务器端被正常处理了。在响应报文内,随状态码一起返回的信息会因为方法的不同而发生改变。204 No Content该状态码代表服务器端接收的请求已成功处理,但在返回的响应报文...
2019-03-30 10:23:23
370
原创 《图解HTTP》读书笔记四:HTTP报文内的HTTP信息
HTTP通信过程包括从客户端发往服务端的请求及从服务器端返回客户端的响应。 用于HTTP协议交互的信息被称为HTTP报文。客户端的HTTP报文叫做请求报文,服务器端的叫做响应报文。HTTP报文本身是多行(CR+LF作换行符)数据构成的字符文本。 HTTP报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。通常,并不一定要有报...
2019-03-30 10:22:18
485
原创 《图解HTTP》读书笔记三:简单的HTTP协议
HTTP协议是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。 使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快的处理大量事物,确保协议的可伸缩性,而特意把HTTP协议...
2019-03-30 10:20:54
389
原创 《图解HTTP》读书笔记二:了解Web及网络基础
Web页面不能凭空显示出来。根据Web浏览器地址栏指定的URL,Web浏览器从Web服务器端获取文件资源等信息,从而显示出Web页面。 Web使用一种名为HTTP(HyperText Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到服务端等一系列运作流程。而协议是指规则的约定。Web是建立在HTTP协议上通信的。 ...
2019-03-30 10:19:19
435
原创 Android应用安全开发之一:概述
1. Intent限制:四大组件的Intent 添加android:exported 和android:permission机制;2. 代码混淆:避免代码被反编译;3. 应用签名:避免应用被4. Http报文加密:避免请求&数据返回被三方抓包;5. TODO...
2019-03-29 22:57:23
333
原创 《深入理解java虚拟机》 读书笔记一:概述
JDK 是什么? JRE 是什么? Java历史版本的特性? Java Version SE 5.0 Java Version SE 6 Java Version SE 7 Java 8 运行时数据区域包括哪些? 程序计数器(线程私有) Java 虚拟机栈(线程私有) 本地方法栈(线程私有) Java 堆(线程共享) 方法区...
2019-03-29 22:34:19
436
原创 JAVA 并发编程之五:同步容器: ConcurrentHashMap/Set +CopyOnWriteArrayList + ArrayBlockingQueue
前言1.支持CAS的数据结构使用场景:避免使用同时锁??:如: AtomicXXX、ConcurrentMap、CopyOnWriteList、ConcurrentLinkedQueue;2. 阻塞队列:a. 在BlockingQueue中,要使用put和take,而非offer和poll。b. 如果要使用offer和poll,也是要使用带等待时间参数的offer和poll。c....
2019-03-28 23:29:30
602
原创 JAVA 并发编程之四:Java内存模型+ 线程安全:Atomic(原子性)+Violate(可见性)+有序性+synchronized
前言:线程安全:提到线程安全,可能大家的第一反应是要确保接口对共享变量的操作要具体原子性。实际上,在多线程编程中我们需要同时关注可见性、顺序性和原子性问题。原子性:Atomic|synchronized 可保证;Atomic实现CAS(乐观锁),synchronized为悲观锁;可见性:Violate|synchronized 可保证;有序性:Violate 可部分保证(禁止指令重...
2019-03-28 23:22:41
3251
1
原创 JAVA 并发编程之三:CountDownLatch(门闩)、CyclicBarrier(栅栏)和Semaphore(信号量) 三种并发策略
在JDK的并发包中已经提供了几个非常有用的并发工具类。CountDownLatch、CyclicBarrier和Semaphore工具类中提供了一种并发流程控制的手段,Exchanger工具类提供了在线程间交换数据的一种手段。1、等待多线程完成的CountDownLatchCountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有...
2019-03-28 23:00:44
1654
原创 JAVA 并发编程之二:Object对象中的wait,notify,notifyAll 概念+作用(线程状态控制Type1)
wait,notify,notifyAll 是定义在Object类的实例方法,用于控制线程状态。三个方法都必须在synchronized 同步关键字所限定的作用域中调用,否则会报错java.lang.IllegalMonitorStateException ,意思是因为没有同步,所以线程对对象锁的状态是不确定的,不能调用这些方法。wait 表示持有对象锁的线程A准备释放对象锁权限,释放cp...
2019-03-28 22:51:46
425
原创 Android 进阶技术汇总十一: 网络请求框架比较(Volley、OkHttp3、Retrofit2.0)
一、为什么要使用网络开源框架1.Android系统自带网络请求Android系统自带的网络请求模块有两个,一个是HttpClient,另一个是HttpUrlConnection。1.1. HttpUrlConnectionHttpURLConnection是一种多用途、轻量极的HTTP客户端,使用它来进行HTTP操作可以适用于大多数的应用程序。虽然HttpURLConnection的A...
2019-03-27 23:33:18
586
原创 Android 进阶技术汇总十: 图片加载框架比较(ImageLoader+Picasso+Glide)
一、ImageLaoder介绍 <<Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等 支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置 支持图片的内存缓存,文件系统...
2019-03-27 23:29:07
568
原创 JAVA 并发编程之一:概述
synchronized 关键字同步方法同步代码块锁的底层实现锁的种类volatile 关键字wait和notifyAtomicXxx 类型组CountDownLatch 门闩锁的重入ReentrantLock同步容器Map/SetListQueueThreadPool&ExecutorExecutorExecutorServiceFutureC...
2019-03-27 23:08:32
447
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅