自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于注释处理生成代码的RxBus[Deprecated!]

Android RxBus该项目基于RxJava2 & RxAndroid,并且从AndroidKnife/RxBus中学习而实现的。使用annotation processing(注释处理)自动生成模板代码,避免了反射带来的性能影响。通过@Subscribe标记订阅方法,@Rxthread可设置订阅方法的运行线程,线程支持RxJava中提供的6种线程:MainThread、IO、Computati

2017-03-28 12:25:33 660

原创 FmlPlayer - 基于BASS音频库封装的Android音频播放库

Android-FmlPlayerversion - 0.1.0概要基于BASS、BASS_FX两个库的封装,可直接用于Android提供最基础的音频播放、部分音效处理,目前仅支持OGG、MP3、WAV格式音频支持OGG格式音频无缝循环,支持在线音频播放和下载BASS and BASS_FX Library:http://www.un4seen.com/如何使用导入将AudioLibrary作为m

2016-06-29 09:42:17 2862

原创 Android v26版本AppBarLayout快速滑动导致回弹的解决方案CollapsingToolbarLayout

在26版本的sdk上,谷歌解决了之前存在已久的一个问题:AppBarLayout、CollapsingToolbarLayout和RecyclerView共存时,无法通过fling快速展开AppBarLayout但是随之而来的是一个新问题,当快速上下滚动,最后回到顶部时,AppBarLayout会出现回弹(bounce)的现象原因是内部的非touch fling还未结束导致的目前的一个

2017-12-26 14:16:26 8076 16

原创 对于Android MVP的一些思考(二)

上次对MVP的表面概念作出了一些思考【对于MVP、响应式编程以及事件总线的一些思考】。而随着对自己的MVP框架深入优化、扩展,也发现了一些疑惑的地方。Interface hell?相信接触过MVP框架的都清楚,针对Model-View-Presenter这三者,都会为其单独建立一个interface,规范其各自的行为。举个例子,一个登录用的Activity,在这里将其命名为LoginAc

2017-09-14 18:48:51 464

转载 JavaScript中的各种宽高属性

转载:https://segmentfault.com/a/1190000007515034在js中,存在着N多的关于高度和宽度的属性,比如:clientHeight、offsetHeight、scrollHeight、availHeight、scrollLeft、scrollTop、style.height、innerHeight、outerHeight、scree.height等等..

2017-08-25 10:48:08 504

原创 对JavaScript中闭包的一些理解

首先推荐一系列文章:深入理解javascript原型和闭包,这个文章最好是有一定编程基础或者对js已经有一定程度的熟悉再看看。一开始我对闭包不是特别理解,比如说runoob的js教程里有一段自增计数的代码:var add = (function () { var counter = 0; return function () {return counter += 1;}

2017-08-22 18:23:05 308

原创 对于MVP、响应式编程以及事件总线的一些思考

最近工作的项目中使用到了一个简易版的EventBus,不过并不是我引入使用的,而项目的结构也不是MVP。我接手这个项目后,陆续根据需求改造了一些模块。 值得一提的是,在此之前我是事件总线(各种EventBus)的忠实粉丝,比如我自己写的基于注释处理自生成模板代码的RxBus,使用事件总线,可以大大降低回调复杂度,使多个模块间的通信变得简单等等。 但是,随着项目改造程度加大,我开始

2017-08-15 17:25:39 1155

原创 ubuntu 16.04 下运行steam异常

主要是记录一个问题:由于安装nvidia显卡驱动后,原有的libGl.so的链接会被破坏,需要重新链接通过 sudo find /usr -iname "*libGl.so*" 查找/usr下的libGl.so.1已知 /usr/lib/libGL.so.1 为正常的libGL.so,因此将该so链接替换到/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.

2017-08-02 13:55:05 1625

原创 在win10下安装terminator使用bash

之所以折腾这件事情的原因是,自己一直用着ubuntu,在ubuntu下自己用着termintor觉得很舒服。最近买了新手提是准备刷双系统的,但是发现ubuntu在笔记本上的耗电量和发电量实在让我头疼,无可奈何下继续用回原装win10。后来想到,win10下还有bash能用(虽然是beta),就开始折腾bash,但是cmder我又确实弄不惯,那就来搞个termintor吧!打开bash功

2017-05-06 23:00:30 3833 3

转载 Android进程整理

转载:http://www.cnblogs.com/android-blogs/p/5632549.html一、概括系统启动架构图:上图在Android系统-开篇中有讲解,是从Android系统启动的角度来分析,本文是从进程/线程的视角来分析该问题。1.1 父进程在所有进程中,以父进程的姿态存在的进程(即图中的浅红色项),如下:kthre

2017-04-25 10:06:16 288

转载 linux 用户空间与内核空间——高端内存详解

转载:http://blog.csdn.net/tommy_wxie/article/details/17122923/摘要:Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。用户空间的内存映射采用段页式,而内核空间有自

2017-04-13 17:44:11 3505

转载 Binder学习指南

转载:http://weishu.me/2016/01/12/binder-index-for-newer/毫不夸张地说,Binder是Android系统中最重要的特性之一;正如其名“粘合剂”所喻,它是系统间各个组件的桥梁,Android系统的开放式设计也很大程度上得益于这种及其方便的跨进程通信机制。理解Binder对于理解整个Android系统有着非常重要的作用,Android系

2017-04-11 11:45:05 557

转载 Java 并发编程:volatile的使用及其原理

原文链接:http://www.cnblogs.com/paddix/p/5428507.htmlJava并发编程系列:Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理Java并发编程:Synchronized底层优化(轻量级锁、偏向锁)Java 并发编程:线程间的协作(wait/notify/sleep/yiel

2017-03-13 11:08:12 296

转载 刨根问底 HTTP 和 WebSocket 协议(下)

上篇介绍了HTTP1.1协议的基本内容,这篇文章将继续分析WebSocket协议,然后对这两个进行简单的比较。WebSocketWebSocket协议还很年轻,RFC文档相比HTTP的发布时间也很短,它的诞生是为了创建一种「双向通信」的协议,来作为HTTP协议的一个替代者。那么首先看一下它和HTTP(或者HTTP的长连接)的区别。为什么要用 WebSocket 来替代 HT

2017-03-02 16:26:56 414

转载 TCP(HTTP)长连接和短连接区别和怎样维护长连接

一、HTTP协议和TCP协议HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。二、HTTP协议的长连接和短连接

2017-03-02 16:10:20 849

转载 WebSocket 和 Socket 的区别

短答案就像Java和JavaScript,并没有什么太大的关系,但又不能说完全没关系。可以这么说:命名方面,Socket是一个深入人心的概念,WebSocket借用了这一概念;使用方面,完全两个东西。Java和JavaScript的关系长答案当我们探讨两件事物的区别和联系时,我们想探讨些什么?对于我来说,大多数情况是想知道两件事物

2017-03-02 15:52:12 907

转载 RxJava结合Retrofit对网络请求结果的统一处理

转载地址:http://www.jianshu.com/p/c88ebf1e0ca7不同的网络请求有不同的返回结果,当同时也有很多相同的地方,比如数据的整体结构可以是这样:{ "status": 1000, "msg": "调用权限失败", "data": { *** *** }}如果接口数据

2017-02-23 10:13:58 2906 1

原创 Gradle统一配置工程下每个project

可新建gradle也可在工程下的build.gradle里加入def supportVersion = "24.+"def retrofit2 = "2.1.0"ext { minSdkVersion = 15 targetSdkVersion = 24 compileSdkVersion = 24 buildToolsVersion = "24.0.3"

2017-01-19 17:22:48 2454

转载 模拟服务器MockServer之Moco详细介绍

前面一篇介绍了如何用mockito来测试我们的一些异步任务,例如网络请求时候的异步回调。 现在做进一步的介绍,一个模拟我们的服务器的东东–moco先运行起来请先下载这个文件moco.jar,接着,在我们的桌面新建一个文件data.json,用记事本打开,粘贴下面的东东 ,具体意思后面介绍[{ "request" : { "uri" : "/hello" }, "respon

2017-01-17 15:05:41 13030 1

转载 Android注解使用之注解编译android-apt如何切换到annotationProcessor

原文地址:http://www.cnblogs.com/whoislcj/p/6148410.html前言:    自从EventBus 3.x发布之后其通过注解预编译的方式解决了之前通过反射机制所引起的性能效率问题,其中注解预编译所采用的的就是android-apt的方式,不过最近Apt工具的作者宣布了不再维护该工具了,因为Android Studio推出了官方插

2017-01-12 17:43:45 1026

转载 Java Map遍历方式方式及性能测试

1. 阐述对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多。理由是:entrySet方法一次拿到所有key和value的集合;而keySet拿到的只是key的集合,针对每个key,都要去Map中额外查找一次value,从而降低了总体效率。那么实际情况如何呢?为了解遍历性能的真实差距,包括在遍历key+value、遍历key、遍历v

2016-12-01 09:45:20 254

原创 retrofit2中的多表单(from-data)上传

在retrofit2中,多表单上传需要同时使用@Multipart和@POST,同时在输入参数中用@Part标记参数。网上很多资料都是这样说的,但是依然很困惑,到底怎么用多表单上传数据呢?这里首先要看下表单的报文结构:如果之前已经了解过表单格式,可知每个boundary所分割的都是一个表单结构。其中请求体中由(1)、(2)所组成的表单1一般用于描述表单,由(3)、(4)

2016-11-26 11:15:09 13707

转载 自定义注解之编译时注解(RetentionPolicy.CLASS)(二)——JavaPoet

在使用编译时注解时,需要在编译期间对注解进行处理,在这里我们没办法影响程序的运行逻辑,但我们可以进行一些需处理,比如生成一些功能性代码来辅助程序的开发,最常见的是生成.java 源文件,并在程序中可以调用到生成的文件。这样我们就可以用注解来帮助我们处理一些固定逻辑的重复性代码(如butterknife),提高开发的效率。通过注解处理器来生成 .java 源文件基本上都会使用javapoet

2016-11-24 17:31:35 367

转载 自定义注解之编译时注解(RetentionPolicy.CLASS)(一)

关联内容:java注解基础概念总结自定义注解之运行时注解(RetentionPolicy.RUNTIME)自定义注解之源码注解(RetentionPolicy.SOURCE)说到编译时注解(RetentionPolicy.CLASS)都要和注解处理器(Annotation Processor) 扯上关系,因为这里是真正体现编译时注解价值的地方。需要注意的一点是,

2016-11-24 17:29:57 734

转载 Java注解(3)-注解处理器(编译期|RetentionPolicy.SOURCE)

转载地址:http://blog.zenfery.cc/archives/78.html注解的处理除了可以在运行时通过反射机制处理外,还可以在编译期进行处理。在编译期处理注解时,会处理到不再产生新的源文件为止,之后再对所有源文件进行编译。Java5中提供了apt工具来进行编译期的注解处理。apt是命令行工具,与之配套的是一套描述“程序在编译时刻的静态结构”的API:Mirror A

2016-11-24 16:44:05 1935 1

原创 java中method的setAccessible方法

在需要发射时将method的setAccessible设置为true,可以提高反射速度,原因是设置为true后则跳过了访问检查,即使private修饰的也可以访问。

2016-11-24 14:13:53 1240

原创 一个简单的、结合注解使用的RxBus

网上有许多实现简单的RxBus,不过思来想去,还是自己写一个用得顺手。最核心的内容依然是用RxJava中的Subject。只是通过注解修饰事件处理,简化了调用步骤。项目地址:ViTess/RxBusAndroid RxBus使用注解(@Subscribe)标记事件接收方法,调用RxBus.post()发送值到接收方法。支持无参、单参数形式。支持基本类型和自定义类型传参。使用注册和注销接收对象在程序

2016-11-22 20:51:34 2759

原创 使用NDK实现的Base64编/解码

Base64的编解码原理很简单,下面是编解码的部分核心代码:编码:/** * 编码 * data : byte数组 * realLength : 数组长度 * offset : 偏移量 * length : 从偏移量开始截取的长度 * flag : 选项 */EncodeData *encode(const char *dat

2016-11-12 16:28:06 2079

转载 由Emoji表情发现的JNI GetStringUTFChars()隐藏的问题

转载自:http://www.jianshu.com/p/f604a4224098我们App的消息收发底层由C++实现,自然就需要使用JNI,开始的方案是将消息内容String字符串直接向下传,然后在JNI中解析为C++ string形式,当然我们使用的是GetStringUTFChars方法。然而消息发送后,发现Emoji表情在服务端无法正确解析。在java层和jni层分别加

2016-10-31 09:40:42 845

原创 AndroidStudio下的jni开发细节

好久不写jni,很多东西忘得差不多了。而且Android Studio下的jni开发和eclipse下的不太一样,记录一下一些小细节。1、build.gradle的编写Android Studio下的jni编译需要在build.gradle下指定编译方法和参数,目前支持cmake和ndkbuild编译,目前我还是用ndkbuild,例子如下:defaultConfig {

2016-10-25 10:52:32 453

转载 Android.mk文件语法规范及使用模板

转载自:http://www.cnblogs.com/leaven/archive/2011/01/25/1944688.htmlAndroid.mk文件语法规范根据eoeandroid上的的连载,进行一些更新、修改和加亮。今天翻译ANDROID-MK.TXT文件(英文原文件在/development/Ndk/Docs/android-mk.txt)An

2016-10-24 15:26:14 183

原创 RxAndroid的部分笔记

1、Observable的大部分操作,都会返回一个新的Observable。所以像下面这种写法是不行的:A a = new A();a.func1();a.func2();a.func3();如果非要这种写法,就需要这样写:A a = new A();a = a.func1();a = a.func2();a = a.func3();当然,还是按照大部分例子中连贯的写法比较好。

2016-10-13 16:05:50 248

转载 你应该了解的 一些web缓存相关的概念

转载自:http://www.cnblogs.com/_franky/archive/2011/11/23/2260109.html代理服务器简分类:(并不太全,仅当科普, 了解代理在web中的重要作用是有必要的.这里仅仅是简单介绍下.)缓存角度分类:(1)     缓存代理 : 根据某种约定,缓存曾经请求过的数据(2)     常规代理 : 只

2016-09-20 14:20:41 289

转载 深入理解Java:注解(Annotation)自定义注解入门

转载自:http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html  要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。元注解:  元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-

2016-09-20 10:05:30 508

原创 Git中删除大文件或清除污染文件

有时候,如果gitignore没有写好,或者自己在某些目录下放入了一个大文件,而同时又已经commit或者push到仓库里了,很容易导致仓库容量越来越大,同时你本地的.git里的pack文件也会大得一塌糊涂github里有给出此类的解决方法:https://help.github.com/articles/remove-sensitive-data/这样看来的话,可能还是有点懵,因

2016-08-25 16:35:07 7976

原创 Terminator 四窗口配置文件

[global_config] enabled_plugins = CustomCommandsMenu, TestPlugin, ActivityWatch, TerminalShot, MavenPluginURLHandler window_state = maximise suppress_multiple_term_dialog = True inactive_color

2016-08-24 09:31:01 2001

原创 MusicPlayer加载网络音频需要注意的事情

与加载本地音频不同,加载网络音频需要调用到prepareASync()方法,用于异步加载音频数据。因此,在使用异步加载时,需要加上onPreparedListener的监听事件。当onPrepared()被调用时,说明音频的加载完成,可以进行播放。所以常规做法都是在onPrepared()中调用start()方法播放。这里要注意的是:1、MediaPlayer的加载超时时间

2016-06-16 11:16:38 1009

转载 android sqlite 图片保存和读出 用流 转字节码

package com.yiyiweixiao;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.database.sqlite.SQLiteDatabase.

2016-03-22 09:07:44 616 1

原创 对synchronized的理解

其实如果不懂,自己写一个例子出来跑一跑,就什么都知道了。synchronized一共两种用法:1、放在方法前面声明方法2、synchronized(xxx){ //TODO} 形成代码块第一种放在方法前面声明方法时,即:public synchronized void func(){ //TODO }假设此方法分别被Thread_1和Thread_2两条线程无

2016-03-21 14:57:28 3752 2

转载 Android内存信息:VSS、RSS、PSS、USS

转载自:http://myeyeofjava.iteye.com/blog/1837860一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)PSS - Propo

2016-03-21 12:52:54 655

testObserver

关于该Demo的说明在 http://blog.csdn.net/vite_s/article/details/50463111 中

2016-01-05

空空如也

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

TA关注的人

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