自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

克里斯的一小步

无论多么沮丧,我从未放弃过努力

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

原创 创建Dialog所需的上下文为什么必须是Activity?

public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layo

2017-08-25 17:44:47 1615

原创 Android Developer导航

Gradle配置构建 Android Monitor

2017-05-11 16:50:49 461

原创 数组中只出现一次的数字

题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。时间复杂度o(n),空间复杂度o(1)public static void FindNumsAppearOnce(int[] array, int num1[], int num2[]) { int temp = 0; for (int i = 0; i < a

2017-05-05 18:19:34 663

原创 浅谈Git

概念工作区 即项目所在目录暂存区stage 每次我们都会通过git add将修改的文件加入暂存区,然后再通过commit提交到分支上版本库/.git目录 版本库中有stage暂存区,和git给我们创建的master分支,以及分支的头指针HEAD ----------------------------------------版本库——.git/objectsobjects目录中有很多文件,

2017-05-04 20:16:22 400

原创 java中子类static方法隐藏父类static方法

父类public class TestA { public static int a=0; public int b=0; public static int c=0; public static void print(){ System.out.println("我也用"); } public void hello(){

2017-04-09 17:41:14 3515 2

转载 Android广播机制

[转载](http://www.cnblogs.com/lwbqqyumidi/p/4168017.html)1.Android广播机制概述Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器)。广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间)

2017-04-06 11:50:09 292

原创 消息机制彻底解析

1 举例子public class UIActivity extends AppCompatActivity { private TextView tv; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) {

2017-04-05 10:55:42 670

转载 TCP的拥塞控制

TCP的拥塞控制慢开始与拥塞避免快重传和快恢复引言 计算机网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏。这种情况就叫做拥塞。 拥塞控制就是防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,和流量控制不同,流量控制指点对点通信量的控制。慢

2017-04-01 15:12:36 516

原创 Struct 和 Union区别

题目1:有如下结构体struct A{ long a1; short a2; int a3; int *a4;};请问在64位编译器下用sizeof(struct A)计算出的大小是多少? 内存对齐成员对齐有一个重要的条件,即每个成员按自己的方式对齐。其对齐的规则是:每个成员按其类型的对齐参数(通常是这个类型的大小)和指定对齐参数(这里默认是8字节)中较小的一个对

2017-03-31 20:18:28 473

转载 四次挥手

连接终止协议(四次挥手)由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。(1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。(2)

2017-03-31 17:18:31 342

转载 Report WebCore crash to the ErrorReportUtils at:Fri Jul 24 09:59:08 格林尼治标准时间+0800 2015

这两天发现,小米1+上,图文详情老是闪退,好吧,商品详情问题还是挺多的报错信息是:07-24 09:59:08.601: W/crash_handler(6887): Caught a crash, signum=1107-24 09:59:08.601: E/webcore(6887): Report WebCore crash to the ErrorReportUtils at:

2017-03-31 16:58:12 708

原创 c++中&含义

在C++中,&既有引用又有取地址,其实他们的区别可以用一句话概括:=号左边是引用,=号右边是取址。比如  int a=3;    int &b=a;//引用;                                                   int *p=&a; //取地址引用b,它是变量a的引用,即别名,&在此不是求地址运算,而是起标识作用,引用声明完毕后,

2017-03-30 14:58:55 11295

原创 java.lang.RuntimeException: Handler (android.os.Handler) sending message to a Handler on a dead thre

1 问题描述app内部切换Activity或者Fragment都会出现java.lang.RuntimeException: Handler (android.os.Handler) sending message to a Handler on a dead thread2 问题分析google找到类似问题,基本都是以下情况:http://stackoverflo

2017-03-29 18:09:11 8239

原创 C++深拷贝与浅拷贝

编译器在生成默认拷贝构造函数的时候使用的浅拷贝    上面被注释掉的程序就是编译器自动添加的部分。      从而导致在sayHello中向参数x传递值时,调用了bitwise  copy的拷贝构造函数,使得x对象和b对象中的值完全一致,包括p指针的值,在x离开作用域(也就是sayHello函数结束),x发生析构,调用delete  销毁了指针p,同时在main函数结束

2017-03-29 16:58:44 251

原创 C++虚函数

1.只有用virtual修饰的函数才能动态绑定 ,才有多态性  2.如果在构造函数或析构函数中调用虚函数,则运行的是为构造函数或析构函数本人类型定义的版本(c++prime 中文版第四版  p497)  因为在构造子类的时候,首先回去调用父类的默认构造函数,此时子类还是未初始化的,所以不可能调用子类函数析构函数(destructor)也是一种成员函数,但它的作用与构造函

2017-03-28 11:35:38 218

原创 &a+1详解

&a[0]:指的是a[0]的地址&a[0]+1:指的是以a[0]的地址为起始,将指针向下移动a[0]所属类型的字节数,此处为向下移4个字节(int),即为a[1]&a+1:与上面类比,指的是以a的地址为起始,将指针向下移动a所属类型的字节数,此处为向下移4*5个字节(int[5]),即为数组a后面紧跟着一个类型、长度跟a一样的数组的首地址       &a是对数组取地址,其类型为i

2017-03-28 11:15:23 4396 1

原创 Android drawable-v21文件夹下xml文件,手机版本不兼容

1 问题描述我在ImageView中引用了矢量图形@drawable/shape_quote_round,然后矢量图形是放在了drawable-v21中运行时报错,类似FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfoandroid.vi

2017-03-28 10:17:50 1275

原创 C/C++中const关键字详解

1 问题描述2 解答      const int *p1;//(1)  关键字const出现在星号左边 表示被指物是常量,而指针不是常量,可以不必须初始化   intconst*p2=&i; //(2)ok ,p2被取i的地址   p2=&j;//(3)ok,p2取j的地址   int*constp3=&i;//(4) 出现在星号右边,表示指针自身是常量,必须初始化,这里初始化为

2017-03-27 21:30:54 387

原创 Android 5.0以下出现 java.lang.NoClassDefFoundError:

1 错误描述Android 5.0以上版本运行没有问题,Android5.0以下一直报错2 分析原因这个错误是Android应用的方法总数限制造成的。Android平台的Java虚拟机Dalvik在执行DEX格式的Java应用程序时,使用原生类型short来索引DEX文件中的方法。这意味着单个DEX文件可被引用的方法总数被限制为65536。通常APK包含一个classes.dex文

2017-03-27 20:10:59 366

原创 ConcurrentHashMap原理分析

1 使用方法private final Map wordCounts = new ConcurrentHashMappublic long increase(String word) {    Long oldValue = wordCounts.get(word);    Long newValue = (oldValue == null) ? 1L : oldValue + 1

2017-03-06 19:52:22 549

原创 HashMap源码深度解析

这里新增加节点采用了头插法,新节点都增加到头部,新节点的next指向老节点这里涉及到了HashMap的扩容问题,随着HashMap中元素的数量越来越多,发生碰撞的概率就越来越大,所产生的链表长度就会越来越长,这样势必会影响HashMap的速度,为了保证HashMap的效率,系统必须要在某个临界点进行扩容处理。该临界点在当HashMap中元素的数量等于table数组长度*加载因子。但是扩容是一个非常耗时的过程,因为它需要重新计算这些数据在新table数组中的位置并进行复制处理。

2017-01-16 21:34:54 15701 8

原创 Java并发编程之ReentrantLock源码解析

JDK1.5之前只能利用synchronized实现线程同步,JDK1.5之后开始借助JNI来完成更高级的锁。JDK 5中的锁是接口java.util.concurrent.locks.Lock,并提供了相应的实现类java.util.concurrent.locks.ReentrantLock1  举栗子import java.util.concurrent.locks.Lock

2017-01-13 13:21:17 383

原创 排序算法总结

1 插入排序插入排序一定进行n趟(=n),整个过程就是把数组arr[n]中带排序的n个元素看成一个有序表和无需表,开始时有序表中只包含一个元素arr[0],无序表中包含n-1个元素arr[1]~arr[n-1],排序过程中每次从无序表中退出第一个元素,把他插入有序表中的适当位置,使之成为新的有序表,这样经过n-1次插入后,无序表就变为空表,有序表中就包含了全部n个元素,至此排序完毕。核心思

2016-12-29 23:49:54 303

原创 Android之Fragment源码级彻底解析上

trasaction.replace对应上面的OP_REPLACE,具体操作就是操作先删除全部的 fragment,然后增加新的fragment,mManager.removeFragment和mManager.addFragment都是对mAdded集合进行增删操作,上面还可以看到transaction.add() transaction.remove() transaction.addToBackStack(null);之前在网上看多很多人各种分析,但是都是基于UI结果来分析操作方法的区别,总

2016-12-28 10:44:05 2895 2

原创 Android窗口Window和WindowManager详解

Android中所有的视图都是通过Window来呈现的,不管事Activity、Dialog还是Toast,他们的视图实际都是附加在Window上的。Window是View的实际管理者,不管是View的事件分发机制还是setContentView,Window都是幕后主导。Activity的作用主要是处理一些逻辑问题,比如管理生命周期、建立窗口等Window是一个抽象类,他的具体实现是

2016-12-27 11:53:39 1823

原创 Android布局加载之LayoutInflater

和setContentView一样,LayoutInflater也算老朋友了,在分析setContentView中也多次看到了LayoutInflater。LayoutInflater主要是用来加载布局,将id资源转化为view对象,我们在Activity中加载布局用到的是setContentView(),其实setContentView内部也是使用LayoutInflater来加载布

2016-12-26 22:52:39 459

原创 Android布局加载之setContentView源码分析

setContentView方法大家再熟悉不过了,但是能说说setContentView加载原理的并不多,现在我们就来了解下这个熟悉且神秘的朋友1  源码分析(1)ActivityActivity是在onCreate方法中使用setContentView方法来加载布局的,所以当然要进入Activitypublic void setContentView(int layoutRe

2016-12-26 20:08:07 343

原创 View事件分发机制

1 常见滑动冲突举例2 View事件分发机制源码分析当一个点击操作发生时,事件最先传递给当前Activity,由Activity的dispatchTouchEvent来进行事件派发。(1)Activitypublic boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == Moti

2016-12-25 11:00:28 377

原创 View滑动体系

1 View基础(1)MotionEvent当用户触摸屏幕时,将创建一个MontionEvent对象。MotionEvent包含了关于发生触摸的位置和时间的信息,以及触摸事件的其他细节获取MontionEvent对象的方法有:1.重载Activity中的onTouchEvent(MotionEvent event)方法;2.View对象调用View.setOnT

2016-12-24 01:32:22 425

原创 Activity保存和恢复View层次结构

Activity异常生命周期中会涉及到onSaveInstanceState()   和    onRestoreInstanceState()常见的异常情况有两种:   资源相关的系统配置发生改变          系统内存不足资源相关的系统配置发生改变有:屏幕横竖屏切换,改变系统语言等Activity异常情况下被杀死并重新创建的过程中就涉及到View的 保存和恢复,下面详细

2016-12-22 11:36:02 981

原创 java类型转换问题

byte b1=1,b2=2,b3,b6; final byte b4=4,b5=6; b6=b4+b5; b3=(b1+b2); System.out.println(b3+b6);b3=b1+b2编译出错b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,

2016-12-10 09:26:59 345

原创 Android四大组件BroadcastReceiver源码分析

1 用法(1)定义广播接收者 public class MyBroadcastReceiver extends BroadcastReceiver {      @Override      public void onReceive(Context context, Intent intent) {          //TODO       } }(

2016-11-30 19:33:12 423

原创 Android四大组件Service启动源码分析

1 用法启动状态Intent intent=new Intent(this,MyService.class);startService(intent);绑定状态Intent intent=new Intent(this,MyService.class);bindService(intent,mServiceConnection,BIND_AUTO_CRE

2016-11-30 12:02:01 369

原创 Android四大组件Activity启动源码分析

1 启动方法Intent intent=new Intent(MainActivity.this,SecondActivity.class);startActivity(intent);2 源码分析先来看看Activity在应用程序内部启动的时序图(1)Activity@Override public void startActivity(Intent

2016-11-29 18:37:16 433

原创 Android线程IntentService源码分析

1 用法//创建自己的IntentService并复写onHandleIntent()方法public class CoreService extends IntentService {      @Override      protected void onHandleIntent(Intent intent) {         //TODO:该方法在子线程的looper

2016-11-27 23:02:18 314 1

原创 Android线程HandlerThread源码分析

1 用法HandlerThread thread = new HandlerThread("MyHandlerThread");thread.start();mHandler = new Handler(thread.getLooper());mHandler.post(new Runnable(){...});2 源码分析public class Handle

2016-11-27 22:28:11 309

原创 Android线程AsyncTask源码分析

AsyncTask封装了线程池和handler,用法new DownLoadFilesTask().execute(params);  /*** @param params The parameters of the task.*/ public final AsyncTask execute(Params... params) { return executeOnExe

2016-11-27 00:05:26 305

原创 Eclipse 项目导入Android Studio的几种方式

1 以非gradle方式将 Eclipse 项目导入Android Studio如下图所示是一个典型的eclipse项目在android studio中打开open工程

2016-11-02 13:05:19 14926 3

原创 Android平台安全SELinux篇

csdn博客源码

2016-11-01 13:43:20 2100

原创 Android平台安全UID篇

1 进程边界(一)进程和线程可执行文件:就是一个文件,如果没有执行,和普通的文件一样进程:可执行文件的活动表现,一次生命的历练,资源最基本的单位线程:CPU(核)的调度单位,并发的执行序列,进程的多管齐下(二)进程边界的安全围栏当一个进程出现问题的时候,系统不会因为当前的进程出现问题而导致整个系统的崩溃,这就是他的安全围栏。例如windows:

2016-10-30 18:59:10 2077

Hex_Fiend_2.8.dmg

Hex_Fiend_2.8.dmg

2019-06-20

阿里巴巴开发手册

阿里开发手册,带书签,高清

2017-05-02

JVM精讲书籍

终于发现了一本JVM好书,我花了几天时间对比了下市面上的JVM书籍,发现这本书非常适合自学者

2015-12-10

深入JAVA虚拟机

学JAVA的圣经,网上的很多资源都是非高清,看起来很模糊,这是完整高清版,看起来很舒服

2015-12-09

空空如也

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

TA关注的人

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