自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(121)
  • 资源 (5)
  • 收藏
  • 关注

原创 Vim常用快捷键

Vim前后台 ctrl +z 回到后台fg %X 回到前台 X:中括号的job编号选中一个单词v iw整页删除gg 回到页首 dG 删除全部,G是到页尾的意思使复制过来的代码保持格式先执行命令 set paste翻页Ctrl+f:向文件尾翻一屏 Ctrl+b;向文件首翻一屏搜索及替换命令/pattern:从光标开始处向文件尾搜索pattern ?pattern:从光标开始处向文件首搜索p

2016-03-10 14:37:01 501

原创 【git】几大区概念

1.1.工作区就是能够实实在在的看到的文件及目录1.2.版本库工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有当前所处的分支(第一次的时候,Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD)。第一步是用git add把文件添加进去,实际上就是把文件修

2017-06-23 08:07:55 1053 1

原创 【Git】如何撤销改动

对工作区中文件的修改分为三种情况:(1)修改,但没有用Git add将修改添加到暂存区;对于第一种情况,直接使用git checkout – 文件,即可撤销修改,撤销修改就回到和版本库一模一样的样子。(2)修改,已经使用git add将修改添加到暂存区;第二种情况,先使用git reset HEAD – 文件,然后在使用git checkout – 文件进行修改撤销。(3)修改,已经使用git ad

2017-06-23 08:01:17 524

原创 Android信使Messenger解析

private final class MessengerImpl extends IMessenger.Stub { public void send(Message msg) { msg.sendingUid = Binder.getCallingUid(); Handler.this.sendMessage(msg);

2017-05-16 07:45:46 547

原创 android:fitsSystemWindows=“true”

what’s system windowSystem windows are the parts of the screen where the system is drawing either non-interactive (in the case of the status bar) or interactive (in the case of the navigation bar) cont

2017-05-15 20:43:49 689

原创 谈谈何谓Stub

Stub桩为什么叫桩,我不知道。似乎更多的是一种测试概念,test stub 来看看Martin的说明吧: Stubs provide canned answers to calls made during the test, usually not responding at all to anything outside what’s programmed in for the test.

2017-05-14 15:28:49 3341

原创 InputStream OutputStream 傻傻分不清

总是混淆他们的区别: InputStream is used for many things that you read from. OutputStream is used for many things that you write to.可以理解的是这个Input还是output 是以程序员为中心的, * 往外流的当然是我要写出去的,从而将数据交付给别人或者保存于某个文件。 *

2017-05-12 22:51:00 590

原创 【javascript基础】由demo来进阶学习闭包等概念

Demo 1:闭包初识先要认识几点现实:函数外部无法访问函数内部的局部变量。函数内的嵌套函数可以访问函数的局部变量将嵌套函数作为闭包返回到外部空间,外部空间通过执行返回的嵌套函数可以实现外部空间对函数内部局部变量的间接访问。关于闭包的定义及特殊性 函数在创建它的环境之外执行,那么它就是闭包。如上例子中,函数displayName 如果在创建它的环境中:makeFunc函数内执行,则不叫

2017-05-07 14:55:37 354

原创 【Javascript基础】

Javascript语法内建对象相对于自定义对象而言,是js自带的对象。 如new Array(); Math.round();宿主对象何谓宿主对于js来说,宿主是他的运行环境,对于Web应用来说,更具体一点就是浏览器。 宿主对象包括Form,Image,Element等,借助这些对象能获得网页上表单,图片,表单元素等内容。DOMD:document O:object M:m

2017-05-07 09:49:55 275

原创 【Android View事件分发机制】关于拦截事件的注意点

在父容器拦截事件时,为什么不能拦截DOWN事件呢?先看看源码: 回顾一下事件分发机制原理,当事件来了之后,如果父容器不拦截,则会询问其child view ,当某child view 有事件需求,父容器会记住它并存在mFirstTouchTarget中。在上图第一个红框中,DOWN事件来临,如果被拦截,intercepted为true在上图第二个红框中,intercepted因为为true则无

2017-05-06 17:13:45 709

原创 【Android View事件分发机制】滑动冲突

View内容滑动概念 scrollTo scrollByscrollTo(x,y) x,y 是绝对值,如果x,y不变,重复调用是不会移动的。scrollBy(x,y) x,y是增量之,每次调用都会在mScrollX,mScrollY的基础上不断叠加数值。mScrollX,mScrollY 请参见 【Android View基础】View中几个容易混淆的距离及坐标量scroll移动的是

2017-05-06 15:34:37 396

原创 Scroller解析

解决什么问题?出现的使命是?View.scrollTo及scrollBy方法是促使View内容的滑动,但其结果是瞬间达到目标位置,很生硬。 Scroller就是提供一个策略来让这种生硬的移动变的平滑和自然。解决的过程是?基本思想将需要平移的距离切分成小段小段的,在给定时间内逐小段的移动,这样动画效果就出来了。

2017-05-06 09:01:19 258

原创 【Android View事件分发机制】原理

事件体系中的几个基础类MotionEvent点击事件的封装。getX/Y相当于当前View左上角的x,y坐标getRawX/Y相对于手机屏幕左上角的x,y坐标GestureDetector 手势识别器 @Override public boolean onTouchEvent(MotionEvent event) { if (gestureDetector == null)

2017-04-28 07:43:12 445

原创 【Android View基础】View中几个容易混淆的距离及坐标量

left ,right,bottom,top相对父容器的距离 tranlationX/Y vs mScrollX/Y释义角度tranlationX/Y:View的左上角相对于父容器的偏移量。mScrollX/Y:View内容左/上边缘相对于View左/上边缘的偏移量总结二者都是表示某种偏移量,这是易于混淆的地方,但是根据释义以及上面A,B图,偏移量的对比物是完全不一样的。tranlati

2017-04-21 07:37:55 444

原创 【Android View绘制体系】invalidate

invalidate内部思想 invalidate的调用流图View.invalidateInternal打上DIRTY标记为后面Draw做准备mPrivateFlags |= PFLAG_DIRTY;调用父组件的invalidateChild并将自身相对位置left,top,right,bottom通知给父组件ViewGroup.invalidateChild循环执行父组件的invalida

2017-04-20 10:29:40 1379

原创 android源码中常用的Rect方法

inset dirty.inset(-1, -1);缩小还是扩大矩形。如果为正值,则是缩,反之就是扩。dx:左边及右边dy:上边及下边offset dirty.offset(0, -mCurScrollY);向上偏移mCurScrollY像素 setmTempRect.set(dirty);将dirty的内容复制到mTempRectunion localDirty.union(dirty.

2017-04-20 10:28:45 813

原创 【Android View绘制体系】requestLayout

hhh

2017-04-17 23:00:12 405

原创 聚合Aggregation与合成Composition

合成 or 组合强拥有,大雁和翅膀,大雁绝对不能没有翅膀 组合关系的类里含有另一个类的实例化 大雁类(Goose)在实例化之前 一定要先实例化翅膀类(Wings) 两个类紧密耦合在一起 它们有相同的生命周期 翅膀类(Wings)不可以脱离大雁类(Goose)而独立存在聚合弱拥有,雁群和大雁, 聚合关系的类里含有另一个类作为参数 雁群类(GooseGroup)的构造函数中要用到大雁(Goose

2017-04-17 22:36:50 389

原创 桥接模式

使用场景一个类存在两个独立变化的维度,而且这两个维度都需要进行扩展。很容易懂的例子手机我们经历了功能机及智能机时代。功能机时代软件都是各个手机厂商自己开发的,A手机厂商的软件不能在B手机厂商的机器上使用。 智能机时代软件和手机品牌是独立发展的,互不干扰。而他们之间通过一个抽象的“手机软件”接口来实现连接。聚合关系

2017-04-17 22:22:35 221

原创 【Rxjava】通俗说Rxjava

如下为Rxjava最基础也是最常见的使用样例: /** * 最基础的使用 */ Observable.create(new OnSubscribe<String>() { @Override public void call(Subscriber<? super String> arg0)

2017-04-04 21:53:12 436

原创 【Android基础】从属性动画看代码设计的艺术

3.0引入的属性动画相比之前的帧动画及补间动画做出了很大的设计上的突破,功能更加强大,结构上更加松耦合。在设计上很值得我们去学习。做了这么几层抽象第一层:任何View的动画都可以抽象成对View某种属性值的改变。 ObjectAnimator colorAnim = ObjectAnimator.ofArgb(ballView, "color", Color.BLUE, Color.RED, Col

2017-04-03 18:53:37 291

原创 【Android基础】动画

Android里的动画分为两类,以3.0版本为分水岭。3.0前已存在帧动画补间动画3.0出现属性动画帧动画顾名思义,快速切换几张图片来达到动画的效果。建立帧动画xmlNote:不要把这个帧动画文件放到anim文件夹中,要放到drawable文件夹中<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="ht

2017-03-28 06:13:12 386

转载 【java基础】POJO和JavaBean的区别

说实在话,在印象里。这两个概念一直觉得是一样的,分不清他们的区别。今天特地在网上找了一篇文章(谢谢博主@lushuaiyin的分享),觉得讲的很不错。所以分享一下:什么是POJO 按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的java对象”,但大家都使用“简单java对象”来称呼它。POJO的内在含义是指那些没有从任

2017-03-12 11:52:27 263

原创 【java】用户动态代理

何谓动态代理呢?先说说代理模式吧。 当调用某个代理对象方法的时候,其实它间接的去调用委托类的方法。代理模式的作用是:远程代理,就是为一个对象在不同地址空间提供局部代表,这样就可以隐藏一个对象存在不同地址空间的事实。android中的AIDL就是典型的例子。虚拟代理 代理类实例化的时间比较长,如加载图片,在图片还来不及加载的时候,虚拟代理替换真实的图片安全代理 控制访问代理类的权限按照代理的

2017-03-02 07:21:03 315

原创 【Gradle】借助gradle的ProductFlavor实现多App间代码库复用

背景是什么?lib A 和 lib A’ 拥有大部分相同的代码,小部分的产品特性差异,但是lib A是用在App 1 中,而lib A’是用在App 2上,如果分开维护两份代码拷贝,工作量将极为巨大。如何代码复用借助gradle提供的productFlavor来实现代码和资源的合并。基础知识可以参照之前写的一篇文档Gradle For Android Product flavors章节。有Produ

2017-02-08 15:43:21 5182

原创 【Android View绘制之旅】Draw过程

出效果:绘制经过前面的准备工作 :【Android View绘制之旅】Measure过程,【Android View绘制之旅】Layout过程 我们的视图具备了宽高数据,位置数据,现在到了激动人心的一刻,就像火箭点火的时候。draw()和之前的measure,layout一样,仍旧从draw()方法开始。 代码里其实已经写的很明白了。drawBackground 绘制背景onDraw 绘制内容啊哈

2017-02-01 11:19:46 309

原创 【Android View绘制之旅】Layout过程

1.为什么要进行Layout?在【Android View绘制之旅】View之测量Measure过程后,View我们得到View的宽高,但光只有宽高值是不足以反映视图的,更需要知道View所在的位置。Layout第一步:layout()方法在【Android View绘制之旅】View之测量Measure里也说过,我们的视图树就是从线性布局开始的,所以我们仍旧是从LinearLayout研究起。

2017-01-31 22:07:49 484

原创 【Android View绘制之旅】Measure过程

1.为什么要进行Measure?替人做了原本应该做的工作。在写xml的时候,布局参数如 wrap_content,match_parent,weight 等等给我们开发界面的时候带来方便,但是机器可是死的,最终绘制界面的时候需要的是明确数字意义上的宽高数据总之:measure过程类似执行一套算法,将整个View的宽高值给最终确定下来。2.Measure从根开始每个页面的视图结构就像View的树,从根

2017-01-30 12:19:41 512

原创 【Android View绘制之旅】主脉络

没搞清楚View绘制原理会怎么样?#

2017-01-26 21:22:50 425

原创 【Android基础】RecyclerView的设计艺术

总览RecyclerView 和 ListView GridView之类比起来 可谓集大成者,通过开放更加功能强大的接口,以一挡十。有如下几点:强制绑定ViewHolder ——AdapterListView的view复用可是需要RD自己封装ViewHolder来实现,而这里强制了ViewHolder的存在,来看看它是怎么做到的吧?回忆一下ListView的视图循环利用 @Override p

2017-01-25 20:02:48 367

原创 【Webview相关问题】登陆失败之cookie陷阱

什么问题呢?又是一个android独有的问题。 12306一直登陆不上,但是在某些手机上又可以。 检查请求数据,一个不查什么原因呢?在12306登陆的时候,会有这么个熟悉的验证码出现。 验证码及之后的交互时序图如下:如上图,在打码完成后所发送的12306请求必须带上验证码下发的cookie A, 但实际上使用的cookie还是之前的cookie ,也就是说验证码图片下载时所下发的cookie没

2017-01-14 21:17:15 2151

原创 【java新】Optional pk 空指针

空指针Person person = people.find("John Smith");person.doSomething();代码一如果没有对person进行判空,那么执行doSomething()方法的时候就会出现空指针问题。OptionalOptional person = people.find("John Smith");if (person.isPresent()) { per

2017-01-12 22:32:15 416

原创 【Java基础】四种Java引用类型

四种引用类型说明虚引用的补充说明“虚引用”顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。 虚引用主要用来跟踪对象被垃圾回收器回收的活动。虚引用与软引用和弱引用的一个区别在于:虚引用必须和引用队列 (ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它

2017-01-02 11:30:15 285

原创 【Charles】Breakpoint 断点

断点的url右键Breakpoints工具栏注意清除掉Query字段然后在app有请求到这个url的时候,可以执行Edit request/response ;

2016-12-17 18:53:02 3193

原创 【Webview相关问题】"控制字符"引发的惨案及Base64

问题描述webview.loadurl 去执行一段js语句来回调前端方法来回传数据,但是发现偶尔出现没有回调的情况,参照物将该语句在前端环境中执行完美通过。iOS执行该操作也是正常的。掌握了一定规律后发现,在包含某个车次信息的时候,回调就会失败,然后使用二分法的方式最后查找到是在一段加密的数据中包含了%0a这么个控制字符。查找到解决这个问题花费了不少时间,所以有必要好好的总结一下控制字符的干扰

2016-12-10 21:36:34 1428

原创 【敏捷开发】从"需求文档"出发聊敏捷

背景需求文档解析成本太高。RD解析一遍,QA解析一遍。 我们的产品需求是用户真正需要的吗? 需求文档!=记录产品需求 应该代表用户需求。

2016-12-01 23:47:56 1773

原创 【常见问题】Can not perform this action after onSaveInstanceState

onSaveInstanceState是干什么的呢?通过该方法保留的实例状态数据,然后借助onCreate(Bundle) or onRestoreInstanceState(Bundle),我们可以将已被killed的activity恢复回来。用户界面状态能够通过onCreate(Bundle) or onRestoreInstanceState(Bundle)来恢复,onSaveInstance

2016-11-16 23:35:53 488

原创 【网络基础】为什么要对url进行encode呢?

URL编码背景在URI的最初设计时,希望能通过书面转录,比如写在餐巾纸上告诉另外一人,因此URI的构成字符必须是可写的ASCII字符。在这些可书写的字符里,由于一些字符在不同操作系统的编码有不同的解析,被包含在“不安全字符”之中,要格外注意。(不安全字符)在URI的构成字符中,最安全的方案是正确使用“保留字符” 和 “非保留字符”的并集 保留字符: 在URL中起到职能型的字符,比如 & ,? 。所

2016-08-21 17:57:28 9834 1

原创 【Java基础】异常

Java中什么是Exception?所有的异常都是通过Throwable衍生出来的。Throwable把错误进 一步划分为 java.lang.Exception 和 java.lang.Error. java.lang.Error 用来处理系统错误,例如java.lang.StackOverFlowError 或者 Java.lang.OutOfMemoryError 之类的。然后 Except

2016-08-14 21:50:12 502

原创 代码审查

高效代码审查的八条准则和十个经验 这篇文章写的很好,于是摘抄了几点比较重要的内容。代码审查量不宜过多根据smartbear在思科所作的调查,每次审查200行-400行的代码效果最好。每次试图审查的代码过多,发现问题的能力就会下降,但是限制每次审查的数量确实非常必要,因为这个过程是高强度的脑力密集型活动。时间一长,代码在审查者眼里只是字母,无任何逻辑联系,自然不会有太多的产出。带着问题去进行审查  我

2016-08-14 20:31:34 405

libstdc++.so

ubuntu libstdc++.so.6 can't find file

2013-04-11

坦克大战源码

坦克大战的源码 有助于理解 java 面向对象的思想

2011-12-04

Android的JAVA虚拟机和JAVA环境

描述了.java和android 之间的关系,

2011-12-04

android 系统 概述

可以对android系统 有个基本的了解

2011-12-04

三菱 编程软件 使用说明书 手册

不用说了,下着看吧, 详细的写明了 三菱 developer 软件的部件 的功能说明

2010-05-05

空空如也

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

TA关注的人

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