自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ervin's Blog

记录点滴,成就非凡

  • 博客(43)
  • 收藏
  • 关注

原创 ReactNative await和async

asyncasync字面理解是异步,如果要真正理解async,需要明白promise的概念。promise类似一个承诺,比如小王对老王承诺周三之前把需求搞定,有了这个承诺,这个承诺有两种可能,所以老王就制订了两个方案: 1. 小王没搞定,即reject,那么老王就再给一天时间。 2. 小王搞定了,即resolve,那么交给测试进行测试。 3. 以防万一,老王多留了个心眼,那就是这个老板临时决定暂

2017-12-13 18:50:15 2910

原创 xargs和管道符 "|"的区别

区别管道符 将 “|” 之前的命令标准输出,作为之后命令的标准输入。xargs 将上一命令的标准输出,作为后面命令的参数args。举例1 http://blog.csdn.net/x356982611/article/details/77932170echo "--help"|catecho "--help"|xargs cat2find . -name ".java" | grep

2017-12-12 15:39:43 2125

原创 ReactNative 坑点记录

ReactNative 坑点记录,持续爬坑之路…布局在键盘弹出时被顶上去要求:订单编辑点击确认,显示订单确认页,确认页ui内容显示底部,上部半透明,点击确认订单弹出密码输入框。问题:用Modal盖在订单编辑上,点击确认输入密码,此时焦点在确认密码的Input上,订单确认的Modal布局被顶上去。解决:发现订单确认页并没有获取焦点,但是尝试布局方式justyContent和columnRevers

2017-12-08 14:36:49 958

原创 react native初识

写了一段时间的reactnative,但是始终还停留与逻辑业务,深层次的东西还有很多不理解。的确,RN很牛比,但是IDE的便利还和Java开发IDE有差距。记录下一些关键点。环境搭建比较靠谱的环境搭建博客http://reactnative.cn/docs/0.39/getting-started.html#content总结下来android环境1、安装android studio(sdk、s

2017-11-23 16:05:08 322

原创 String中subString(int start,int end) index的问题

这个问题每次遇到很烦的时候就说明,问题虽然小,但是确实没理解明白,试来试去,还是源码解决最靠谱。/** * Returns a string containing the given subsequence of this string. * The returned string shares this string's <a href="#backing_array">bac

2017-11-21 11:48:29 2000

原创 ios 通过metal api绘制图片纹理

通过metal的GPU渲染绘制 api绘制图片纹理的demogithub地址:https://github.com/callmeli/MetalTextrue

2017-10-11 14:33:59 1342

原创 Android使用FFmpeg给图片视频添加水印

确定目标最近项目新需求,需要给视频和图片后向添加水印,而前向的添加直接在surfaceview中添加水印相关的bitmap,让每一帧都有水印,然而后向添加一时不知如何处理,所以开始寻找后向添加水印的方式.了解分析通过google百度,了解到ffmpeg开源框架有处理图像音频视频的能力,当然项目时间紧,只能先过一遍拿来就用,所以开始深入查询相关库,开始是ffmpeg-Android,封装到位,通过de

2017-07-10 15:28:56 6237 1

原创 android网页离线保存

众里寻他千百度,蓦然回首,那人却在灯火阑珊处.众里寻他将网页保存为离线mht文件,没有找到第三方开源库,网上的例子:http://blog.csdn.net/dongle2001/article/details/2557434http://blog.sina.com.cn/s/blog_3fd24f6c0100ig2r.html当然要想编译通过可能还需要相关的jar包,可以搜到,保存的mht文件格式

2017-03-30 17:11:07 5569

原创 notify和notifyAll坑点

1.前言优化Application时,由于上报uv和pv的操作初始需要读取配置和加载so库很多io操作,相对非常耗时,所以参考SharedPerfencesImpl的实现做了延迟加载,如果发现需要使用但是为初始完成会让调用线程wait.所以初始化结束时需要调用notifyall.2. 问题代码示例public class Demo{ public void init(){

2017-03-27 18:20:42 1051

原创 git命令简写

编辑根目录下.gitconfig[user] email = [email protected] name = xxxxxxxxx[core] autocrlf = input#这里配置相关的简写[alias] br = branch st = status ci = commit pull = pull --rebase origi

2017-02-27 14:50:35 396

原创 Linux终端常用命令

1、打开终端Control+Shift+t新建终端 Control+Shift+N 保持和原窗口相同的工作路径一个终端打开多个内窗口 Control+Shift+t关闭内窗口 Control+Shift+w多个内窗口切换 Alt+1 第几个窗口就是数字几-多个内窗口切换 Ctrl+PgUp 上一个窗口 Ctrl+PgDn 下一个窗口2、复制粘贴Control+Shift+c

2017-02-27 11:47:16 605

原创 Android动画使用记录

一、常用动画类暂分为两类:1、AnimationTranslateAnimation 位移动画//fromXDelta,fromYDelta起始坐标//toXDelta,toYDelta 移动坐标TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta);AlphaAnimat

2017-02-27 11:03:41 208

原创 Application 启动速度优化

优化点1、不要在onCreate方法中同步进行io操作同步io操作会十分耗时,直接导致Application的运行速度。2、不要在onCreate方法中初始化sp后立即操作spContext.getSharedPerfences(String name,int mode);会启动单独的线去加载sp,如下:private void startLoadFromDisk() { synchron

2017-02-13 10:39:45 2097

原创 Gerrit使用坑点

1、获取代码获取代码直接pull的话,如果有人在之前push过代码,本地就会生成一个更改,commit msg 一般是自动生成merge ….。因为拉下代码本地分支就合入其他人的更改,你要commit到本地,才能保证本地分支是最新的代码。如果有冲突,解决冲突以后你的代码才能是最新的,而且本地代码本身是有其他修改的(如果有commit的内容),所以你的本地分支就超前于远程分支,然后你push本地分支代

2017-02-10 11:34:52 5455

转载 HTTPS详解

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTT

2016-12-26 15:44:10 767

原创 Picasso中LRU缓存的设计分析

最近决定研究Picasso的源码,通过博客记录一些细节。Cache首先Picasso定义了一个Cache的接口,定义了对cache缓存的基本操作,如: 1、增删改查的方法 - get - clear - size - set - clearKeyUri2、容量相关的属性 - maxSize - size 接口的设计是为了方便不同缓存数据的结构实现。/** * A memory c

2016-12-26 11:17:12 325

原创 ThreadPoolExecutor参数说明

1、前言目前很多框架都会需要有一个线程池,来维护所有的异步任务,管理的生命周期,也能够更方便的调用执行。所以ThreadPoolExecutor使用的时候,对其参数一定需要很清晰。所以自己去亲自动手,才是最放心的。2、ThreadPoolExecutor构造方法源码 /** * Creates a new {@code ThreadPoolExecutor} with the give

2016-12-23 14:40:37 527

原创 Thread线程join方法源码分析

最近在复习线程的基础知识,算是查漏补缺,温故知新吧。join源码public final synchronized void join(long var1) throws InterruptedException { //获取当前系统时间 long var3 = System.currentTimeMillis(); //记录已经过的时间

2016-12-23 12:07:54 965

转载 Java注解Annotation基础

从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用Annotation,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证、处理或者进行部署。Annotation提供了一种为程序元素(包、类、构造器、方法、

2016-12-22 16:28:44 267

原创 AndroidStudio的那些奇技淫巧

前言很多时候使用ide的功能只会有那么几个功能,但是有很多实用的功能没有接触到,这里就记录几个androidstudio中几个比较好用的点。记好这几个点,相信能事半功倍。内容1、 使用project structure配置工程对module的编译控制,如果对gradle文件的配置不是很熟悉,或者gradle里面的内容过多,找起来不方便,那么使用图形化界面可能会更简单清晰。 2、 添加依赖库添加工程

2016-12-09 21:02:50 681

原创 android通过相册获取图片oom的问题

前言出来混,迟早是要还的。前段时间项目多,时间紧,博客就搁置。有时候自己很奇怪,做android开发也有几个年头了。为什么还在写这些基础的东西,为什么不去研究当前很热的技术?首先可能是以前自己给自己留了很多坑,其次,在叼在复杂的框架其根本原理还是离不开基础的,就像程序无非是数据+算法。当然新的技术也肯定是不能落下的。发现问题一般app都会有上传图片业务,而上传图像的途径无非是从相册选取,或直接拍照。

2016-12-05 18:27:56 2297

原创 ArrayList使用set或add方法添加指定元素抛出IndexOutOfBoundsException

问题直接使用arrayList通过add(int index,E e)添加指定位置的元素ArrayList<String> array = new ArrayList<String>();array.add(1,"hello world");arraylist 调用clear()方法后通过set()指定位置的元素ArrayList<String> array = new ArrayList

2016-11-23 11:08:26 3554

原创 UPnP的介绍和理解

前言做android智能硬件开发一年,蓝牙接触多的就是spp模拟串口通信,而更多的是upnp,因为大部分的项目都是基于cling库的wifi方案的项目。设备的wifi方案相对于蓝牙方案,传输速度快,覆盖范围广,能够脱离设备独立联网,协议规范简单明了,但价格相对要高一些。cling库地址:http://4thline.org/projects/cling/UPnP简介upnp是 universal

2016-11-08 12:02:02 31958

原创 android开发技巧-记录未捕获的crash异常日志

提出问题开发过程中,在自测和交付测试的过程中会遇到发生crash但是无法捕获异常的情况。比如:一个人在厕所无聊瞎点,突然就crash了。你不可能带着线、电脑和手机在厕所瞎点的吧,所以你看不到电脑上crash的日志,毕竟是瞎点,那么crash的步骤你并不清楚。如果crash日志没有,那么就尴尬了。就像明明有个老王,但你却没有看清他的脸,是不是好气?解决方案既然有了老王,就需要在家里安装个摄像头,再来的

2016-10-09 15:39:56 985

原创 fragment基础篇

fragment简介求同fragment必须依托于activity,所以生命周期直接受到宿主activity的影响,一个宿主可以管理加载多个fragment。就相当于寄生一样的概念,宿主生则寄生者生,宿主死则寄生者亡。存已fragment可以作为activitylayout中的一部分,fragment也能定义自己的布局,当然fragment是否需要展现给用户,都是可以自己定义的。

2016-09-22 20:53:41 460

原创 AndroidStudio使用Gradle-高级篇

上一篇AndroidStudio使用Gradle-基础篇还留下了gradle一些比较实用的点没有介绍,这里介绍下其他细节。 相关资料Gradle Plugin for Android 类参考 http://dcow.io/android-gradle-plugin-docs/overview-summary.htmlandroid Gradle build-system 源码 https:

2016-09-20 21:26:08 2601

原创 AndroidStudio使用Gradle-基础篇

使用androidstudio构建项目不得不需要对gradle了解,gradle是基于jvm,基于DSL语法的自动化构建工具。是google引入,替换ant和maven的新工具,其依赖兼容maven和ivy。gradle相比ant,扩展性更好,灵活性更高。 gradle模型gradle模型中两个重要的概念:project和module,以往eclipse的ant模型,workspace代表的项目

2016-09-05 17:02:45 434

原创 项目开发中经典问题

昨天项目组,进行了一波线上代码的codereview的分享,把线上有改进优化的代码的问题拿出来分享。是一次有预谋、有计划、有组织的好分享。所以这里也记录,防止后面出现犯同样的错误吧。 cursor未关闭 这种问题我以为只有面试中才会有,没想到可能一不小心就会发生在身边。一定要记得关闭游标cursor.close()。popwindow和dialog的show和dissmiss一定要判断ac

2016-09-01 20:44:13 434

原创 一个开发者需要了解的常用linux命令

一般使用linux命令的场景:1.使用基于linux开发的操作系统,这类系统图形界面没有window那么强大,但是终端就比window强大太多了,而终端就需要使用到常用的命令。2.android 基于linux内核开发的,所以android开发也会接触到linux命令。3、服务器部署,现阶段一般使用的服务器都是linux的,如redcat。就这三点就可见linux常用命令的重要。 下面就一些l

2016-08-24 16:25:03 897

原创 常用的git命令

前言对于开发来说,不想频繁的手动备份代码的话,版本控制是必须的。现阶段了解并使用的版本控制工具有2种。其一是Svn,其二是Git。而二者最大的不同是svn是集中式版本控制系,git是分布式版本控制系统。git版本控制中有三个重要的概念:工作区(working tree)、暂存区(index或stage)、版本库(repository) 而在共同协作一般都有一个远程的版本控制库,然后一个主干ma

2016-08-24 10:25:25 198

原创 http协议

http协议是应用层的协议,也是现阶段我们常用的网络协议,基本上访问前后台交互都是使用的http协议。http协议的特点无状态:请求一次返回一次,对请求事务没有记忆能力。 简单快速:协议结构简单,传输效率高效。 灵活多变:http也可以作为其他上层协议的载体。http url格式http://host:port/path host 主机ip或域名 port 端口 默认为80 path 访

2016-08-22 18:05:22 322

原创 JVM中的垃圾回收机制

一、前言垃圾回收机制,首先你必须先要确定jvm中那个地方会产生垃圾,然后如何检测那些东西是垃圾,最后才能回收这些垃圾。二、先来看看垃圾的检测 再说垃圾检测之前我们先看回顾下jvm的结构:栈、堆、程序计数器、方法区、本地方法栈。这几块内存区域中栈、本地方法栈、程序计数器属于线程,线程结束就结束,线程新建就生成,所以这里不用考虑垃圾的回收,然后是方法区,方法区里面保存的是类的基本信息等,所以这里也不用

2016-08-22 17:03:39 436

原创 Java虚拟机简介

一、概念jvm 是Java Virtual Machine(Java虚拟机)的缩写 jdk java development kit java开发工具包 开发java程序需要的一些工具 jre java runtime environment java运行时环境 java程序运行需要支持的一些工具类,资源等 二、物理结构jvm内存可以主要看成方法区、java堆、java栈、本地方法栈。 JV

2016-08-22 16:56:34 3181

原创 TCP/IP分层模型

推荐书籍:图解TCP/IP 人民邮电出版社 竹下隆史等【日】一、TCP/IP分层模型TCP/IP模型分为5层:应用层、传输层、网络层、数据链路层以及 物理层。分层就类似接口的定义,定义了每个层的行为职责。这样的分层抽象提供了更多实现的自由。下图是osi和tcpip的比较二、分层结构1、应用层应用层是我们经常接触使用的部分,比如常用的http协议、ftp协议(文件传输协议)、snmp(网络管理协议)、

2016-08-18 17:21:32 25988 4

原创 Android中混淆的使用

前言一个apk从开始到发布一般过程:搭建框架(选择使用的框架,分配包名)开始编码(编写布局,逻辑,自测)编码完成,混淆签名打包(混淆保证apk的代码安全,签名打包可以保证开发的应用在应用市场的唯一性)测试优化(测试crash和优化性能)上线发布从蜻蜓fm没有加混淆,导致宙斯和普罗米修斯的代码泄露,就可以看出一个应用混淆的重要性。因此我们为了保证自己的开发成果不会被别人窃取,添加混淆必须的

2016-05-23 19:37:13 497

原创 Activity中布局资源layoutResId在setContentView加载过程分析

activity中setContentView(resId)分析有图有真相,activity中布局加载过程的分析

2016-05-19 19:25:37 2160

原创 事件分发系列—View中的dispatchTouchEvent和onTouchEvent分析

View的dispatchTouchEvent和onTouchEvent源码分析

2016-05-11 17:56:37 5112

原创 事件分发系列—ViewGroup中的dispatchTouchEvent和onInterceptTouchEvent的源码解析

ViewGroup中的dispatchTouchEvent的史上最彻底的分析,包括MotionEvent中相关的细节和TouchTarget,以及dispatchTouchEvent中的dispatchTransformedTouchEvent处理分析等等

2016-04-15 11:29:23 990 3

原创 安卓搭建http服务器——NanoHttpd

很荣幸在工作之中能够接触到这么强大的开源工具,不得不说nanohttpd十分强大的一个开源项目,理解这个类让我对http、socket、server都有了新的认知。1、nanohttpd 轻量的httpservernanohttpd 开源地址 https://github.com/NanoHttpd/nanohttpd2、nanohttpd中HttpServer由于我只用到了nanohtt

2016-02-19 15:38:51 10872 3

原创 论安卓适配器中的观察者模式

观察者模式观察者模式也通常称为 发布/订阅模式,是一种常见的软件开发模式。 在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。举个类似的栗子:天气更新,气象局一般都有一个气象信息采集的部门,一个和外界合作的运营部门,气象信息采集部门负责数据的采集,和运营部门主动沟通。合作运营部门这是负责把最新的气象信息发给和

2015-11-26 16:33:53 662

空空如也

空空如也

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

TA关注的人

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