自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android_Ape

正是阳和春复后,时来铁也变成金!

  • 博客(61)
  • 资源 (2)
  • 收藏
  • 关注

原创 模仿手机QQ以视频流背景的登录界面

1. 思路:很简单,VideoView播放视频。布局方式如下:<RelativeLayout android:id="@+id/activity_video_view_background" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.

2017-08-01 21:57:45 9267 7

原创 关于DrawText的基准线纵坐标的计算

我们在自定义View的时候经常会用到drawText 这个函数来绘制文本, 它绘制文本的时候有点特别,是以基准线为准来绘制的,通常在对齐居中的时候要计算下它的纵坐标,这里小结下。                如上图标注,通常用FontMetrics的top, bottom变量就可以算出基准线的坐标。top是相对于BaseLine偏移量,因为它在基准线上面,所以为负数,bottom是相对于

2017-08-02 20:19:20 846

原创 解决IDEA编译通过能运行但是出现红色下划线的问题idea cant resolve symbol"xxx"

能编译通过说明SDK导入正确,但是为啥我们点击每一个Java文件会出现好多红色的下划线 ,并提示idea cant resolve symbol原因就是可能没有清除原来的历史缓存,导致一些错误,解决方法是 File-Invalidate Caches 然后重启IDEA,OK~困扰多年的问题解决!

2016-01-26 09:36:18 14886 2

原创 解决在Fragment中不能自动弹出软键盘的问题

1.在Activity中,EditText 无法自动弹出软键盘,可以在尝试在AndroidManifest中设置android:windowSoftInputMode=adjustResize也可以edit.setFocusable(true);edit.setFocusableInTouchMode="true" edit.requestFocus();2.2.在Fr

2015-12-17 19:38:29 8189

原创 android启动一个应用程序大概流程

启动一个应用无非都是通过这个startActivity()函数来完成,通常我们启动一个app都是在桌面点击Launcher图标,大概流程主要是以下几个步骤:1.Launcher通过Binder进程间通信机制通知ActivityManagerService,它要启动一个Activity。2.ActivityManagerService通过Binder进程间通信机制通知Launcher进入

2015-10-05 16:39:48 611

原创 Serial,Parallel,CMS,G1四大GC收集器特点小结

1.Serial收集器一个单线程的收集器,在进行垃圾收集时候,必须暂停其他所有的工作线程直到它收集结束。特点:CPU利用率最高,停顿时间即用户等待时间比较长。适用场景:小型应用通过JVM参数-XX:+UseSerialGC可以使用串行垃圾回收器。2.Parallel收集器采用多线程来通过扫描并压缩堆特点:停顿时间短,回收效率高,对吞吐量要求高。适用场景:大型应用

2015-09-28 11:39:41 17678 3

原创 JNI 字符串拼接方法

上代码://拼接字符串的方法JNIEXPORT jstring JNICALL Java_cn__DataProvider_sayHelloInC(JNIEnv * env , jobjectobj , jstring jstr){//把java中的string 转化成 c语言里面的char数组char* cstr = Jstring2CStr(env,jstr);char*

2015-09-06 17:33:19 10636 1

原创 FIFO、LRU、OPT这三种置换算法的缺页次数

考虑下述页面走向:          1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6     当内存块数量分别为3时,试问FIFO、LRU、OPT这三种置换算法的缺页次数各是多少?   答:缺页定义为所有内存块最初都是空的,所以第一次用到的页面都产生一次缺页。       当内存块数量为3时:

2015-09-05 14:26:41 1508

原创 C++中数据类型的字节数

32位char  1个字节short int  2个字节int   4个字节unsigned int  4个字节unsigned long  4 个字节float  4个字节long  4个字节double  8个字节long long 8个字节char * 指针变量4个字节(指针都是4)16位char 1个字节short int 2

2015-08-18 20:53:26 696

原创 SurfaceView和View区别总结

一、View简介View一般在onDraw方法里面绘图,onDraw在UI主线程执行。onDraw默认只在View初始化的时候调用一遍,所以View不会自动刷新画面,一般要调用invalidate或者postInvalidate来重新执行onDraw里面的代码进行刷新画面。UI主线程一般用来渲染组件、处理组件与用户之间的交互事件,比如说按钮的点击事件、文本框的输入事件。如果你的画图任务相当繁重

2015-08-18 15:23:34 894

原创 new,malloc区别

1.malloc/free是c++/c语言标准库函数,new/delete是c++运算符,都可以申请动态内存和释放内存2.new出来的指针是直接带类型信息,malloc申请内存需要类型转换,new不用。3.对非内部数据类型的对象, malloc/free 无法满足动态对象的要求。由于malloc/free是库函数,在非内部,不能自动执行类的构造函数,free时候不能执行析构

2015-08-16 22:22:45 455

原创 设计模式面试大集锦

一、入门级程序员的面试题:这些软件设计和设计模式的先关问题大多会出现在初学者面试情景中,什么是设计模式?特定的设计模式又是什么?等等这些概念,也许你很轻易回答这些概念,但文内提供的这些问题也许能给你带来更多价值。1. 什么是设计模式?在你编码过程中使用了哪些设计模式?每位程序员都会利用自身经历来回答这些特定的设计问题。设计模式是代码重用的扩展。2. 你能说出在标准的

2015-08-14 11:44:24 705 1

原创 java设计模式之适配器模式

概述:将一个已存在的类/接口进行复用,将其转换/具体化成客户希望的另外的一个类/接口。适应性:      1.你想使用一个已经存在的类,而它的接口不符合你的需求。      2.你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口      可能不一定兼容的类)协同工作。      3.(仅适用于对象Adapter)你想使用一些已经存在的

2015-08-12 11:47:13 418

原创 java设计模式之原型模式

概述:用原型实例指定创建对象的种类,并通过原型拷贝创建新的对象适应场景:          1.当一个系统应该独立于它的产品创建、构成和表示时。          2.当要实例化的类是在运行时刻指定时,例如,通过动态装载。          3.为了避免创建一个与产品类层次平行的工厂类层次时。         4.当一个类的实例只能有几个不同状态

2015-08-12 11:06:39 401

原创 java设计模式之建造者模式

概述: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。适应性:          1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。           2.当构造过程必须允许被构造的对象有不同的表示时。思路:           1.Builder                为创建一个Product对象的各

2015-08-12 10:51:59 315

原创 java设计模式之观察者模式

概述:定义对象间的一对多的依赖关系,当一个对象发生改变时,所以依赖它的对象得到通知并作出相应更新。适应场景:用于一对多依赖关系对象间,当被依赖者变化时,通知依赖者全部进行更新,被依赖者(Subject)应该有添加/删除依赖者(Observer)的方法,且可以把添加的依赖者放到一个容器中,且有一个方法去通知依赖者进行更新(update())。思想:建立目标(Subject)和观察者(Obse

2015-08-11 21:27:35 333

原创 ListView性能优化问题总结

我们经常会遇到 ListView滑动的时候出现卡顿现象,这样我们该如何解决呢?我们可以从以下几个方面进行优化:1.重用convertView,每次滑动list,view回收,当需要显示新的item时候,可以重用回收器的view。2.避免在getView中重复调用findViewById,使用静态ViewHolder,然后保存在View的 tag中。3.利用好View Type,

2015-08-08 17:27:58 669

原创 java二叉树非递归之中序遍历

思路:使用辅助栈改写递归程序,中序遍历没有前序遍历好写,其中之一就在于入栈出栈的顺序和限制规则。我们采用「左根右」的访问顺序可知主要由如下四步构成。步骤:1.首先需要一直对左子树迭代并将非空节点入栈2.节点指针为空后不再入栈3.当前节点为空时进行出栈操作,并访问栈顶节点4.将当前指针p用其右子节点替代步骤2,3,4对应「左根右」的遍历结构,只是此时的步骤2取的左值为空。

2015-08-05 12:29:32 663

原创 java二叉树非递归之前序遍历

思路:采用栈来实现非递归遍历步骤:1.对root进行异常处理2.将root压入栈3.循环终止条件为栈s为空,所有元素均已处理完4.访问当前栈顶元素(首先取出栈顶元素,随后pop掉栈顶元素)并存入最终结果5.将右、左节点分别压入栈内,以便取元素时为先左后右。6.返回最终结果/** * Definition for a binary tree node.

2015-08-05 12:14:41 438

原创 OSI七层模型作用

看图详解:-----------各层作用---------------------------------------------------------------------------------------------------------------------------------第一层: 物理层  ---------以二进制数据形式在物理媒体上传输数据 ISO21

2015-08-05 10:21:36 556

原创 Android多线程中UI线程和其他线程进行交互的几种方法小结

阿里二面的时候被问到这个问题,自己答的不全,所以总结下,问题是Android多线程中UI线程怎么和其他线程进行交互?5个方法:1、handler2、Activity.runOnUIThread(Runnable)3、View.Post(Runnable)4、View.PostDelayed(Runnabe,long)5、AsyncTask方法

2015-08-02 21:56:01 1272

原创 单例模式之懒汉式和饿汉式

单例设计模式:解决一个类在内存中只有一个对象,多个程序使用统一配置信息对象时,需要保证该对对象的唯一性。保证唯一性步骤:                      1.将构造函数私有化:为了避免其他程序过多建立该对象,禁止其他程序调用该对象。                      2.在类中创建一个本类对象:为了让其他程序可以访问该类对象                   

2015-07-24 09:59:24 535

原创 二进制1的个数

看代码:public static int countone(int n){ int count=0; while(n!=0){ n=n&(n-1); count++; } return count; }n&(n-1)将n末尾1消去,神器。

2015-07-24 09:25:40 439

原创 Message、Handler、MessageQueue、Looper之间关系图文总结

看图Looper是一个消息分发器,在主线程创建的时候就会创建一个Looper对象messageQueue :消息队列,是由message组成的一个 队列handler:从messageQueue中获取到message,然后执行动作,可以再主线程和子线程中互相传递数据看了源码之后大概的说一下他们的关系:        在主线程创建之后会创建一个Loop

2015-07-20 16:38:02 877

原创 Java多线程面试常见核心问题总结

1. 有T1、T2、T3三个线程,如何怎样保证T2在T1执行完后执行,T3在T2执行完后执行?使用join方法。join方法的功能是使异步执行的线程变成同步执行。即调用线程实例的start方法后,该方法会立即返回,如果调用start方法后,需要使用一个由这个线程计算得到的值,就必须使用join方法。如果不使用join方法,就不能保证当执行到start方法后面的某条语句时,这个线程一

2015-07-20 16:07:05 1044

原创 Android启动模式图文详解

一、启动模式介绍  启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置;  启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;讲解启动模式之前,有必要先讲解一下“任务栈”的概念;  任务栈  每个应用都有

2015-07-20 11:08:36 437

原创 Android系统启动及zygote总结

1.Android系统框架图2.Android系统启动框图 ------------------> Init进程启动:         system\core\init\init.c:函数执行文件夹建立,挂载,rc文件解析,属性设置,启动服务,执行动作,socket监听…… Key Process:1) rc文件解析----

2015-07-18 15:37:43 649

原创 Java线程中sleep(),wait(),notifyAll()的区别

不同点: 1.Thread类的方法:sleep(),yield()等 Object的方法:wait()和notify()等 2.每个对象都有一个锁来控制同步访问。Synchronized关键字可以和对象的锁交互,来实现线程的同步。 sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。 3.wait,notify和notifyAll只能在同步

2015-07-17 17:21:44 576

原创 一些大公司面试题整理

腾讯面试题1.int a = 1;int result = a+++32.int a = 2;int result = (a++ > 2)?(++a):(a+=3);3.int a = 1234567;int b = 0x06;int result = a&b;4.Integer a = 34556;Integer b = 34556;boo

2015-07-16 11:44:50 2334

原创 Android系统中GC什么情况下会出现内存泄露?

1.数据库的cursor没有关闭2.构造adapter时,没有使用缓存contentview 衍生listview 的优化问题-----减少创建view的对象,充分使用contentview,可以使用一静态类来优化处理getview的过程。3.Bitmap对象不使用时采用recycle()释放内存4.activity中的对象的生命周期大于activi

2015-07-08 16:33:31 1974

原创 二分查找算法

public class BinarySearch { public static int binarySearch(int[] a, int start, int end, int des) { while (start <= end) { int middle = (start + end) / 2; if (des == a[middle]) { return

2015-07-08 15:02:18 437

原创 Minimum Depth of Binary Tree Java

Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node./** * Definition for a binary tre

2015-07-08 11:43:10 377

原创 Maximum Depth of Binary Tree Java

Given a binary tree, find its maximum depth.The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node./** * Definition for a binary tre

2015-07-08 11:40:36 380

转载 关于JVM的GC总结(涉及GC算法)

一、基础概念数据类型Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。基本类型包括:byte、short、int、long、char、float、double、Boolean、returnAd

2015-07-08 09:41:20 2592 1

原创 Object有哪些基本的方法

1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。2.getClass方法final方法,获得运行时类型。3.toString方法该方法用得比较多,一般子类都有覆盖。4.finalize方法该方法用于释放资源。因为无法确定该方法什么

2015-07-08 09:27:52 6002

原创 完全二叉树与满二叉树的区别(有图)

先看图:完全二叉树:设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边满二叉树:深度为k且有2^k-1个结点的二叉树称为满二叉树

2015-07-08 08:45:32 68679 22

转载 Android-Universal-Image-Loader的缓存处理机制研究

讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西。看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓存处理机制。看了UIL中的缓存实现,才发现其实这个东西不难,没有太多的进程调度,没有各种内存读取控制机制、没有各种异常处理。反正UIL中不单代码写的简单,连处理都简单。但是这个类库这么好用,又有这么多人用,那么非

2015-07-07 15:57:23 520

原创 fastjson核心简要总结

1.支持JDK各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。2.主要使用入口Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。public static final Object parse(String text); // 把JSON文

2015-07-07 11:27:41 772

原创 Binary Tree Preorder Traversal Java版本

二叉树先序遍历思路:     不使用递归前序遍历,可以借助栈的帮助实现。对于一个特定节点,前序遍历顺序为: 根,左,右。所以入栈顺序为 右,左,根。由于根节点的遍历和展开(研究其右节点和左  节点)是同时的,所以根节点出栈的同时即可加入遍历结果中,然后研究其右节点和左节点,如果不为空即可入栈。/** * Definition for a binary tree node. * pu

2015-07-06 16:57:45 377

原创 Number of 1 Bits

Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).For example, the 32-bit integer ’11' has binary representation 000000

2015-07-06 15:31:46 457

QRCODE二维码生产

二维码生成与解析,有源代码。能根据输入的信息生成相应的二维码,还能把二维码解析为具体的信息-Two-dimensional code generated with the analytical

2014-03-11

空空如也

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

TA关注的人

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