面试
lilie008
这个作者很懒,什么都没留下…
展开
-
单例解析
1、普通单例public class Singleton { //用一个静态变量来记录Singleton类的唯一实例 private static Singleton uniqueInstance; private Singleton() {} //注意这个方法也是静态的 public static Single转载 2016-12-27 16:12:15 · 332 阅读 · 0 评论 -
java学习之编译时类型和运行时类型
Java中的许多对象(一般都是具有父子类关系的父类对象)在运行时都会出现两种类型:编译时类型和运行时类型,例如:Person person = new Student();这行代码将会生成一个person变量,该变量的编译时类型是Person,运行时类型是Student。 说明一下编译时类型和运行时类型: Java的引用变量有两个类型,一个是编译时类型,一个是运行时类型转载 2014-11-20 13:36:38 · 406 阅读 · 0 评论 -
圆形切图
本来想在网上找个圆角的例子看一看,不尽人意啊,基本都是官方的Demo的那张原理图,稍后会贴出。于是自己自定义了个View,实现图片的圆角以及圆形效果。效果图:第一个是原图,第二个是圆形效果,第三第四设置了不同的圆角大小。准备改变一个博客的风格,首先给大家讲一下原理,让大家明白了,然后再贴代码,不然可以直接看那么长的代码也比较痛苦,核心代码其实就那么几行:核心代码转载 2014-08-28 10:03:47 · 1627 阅读 · 0 评论 -
Android内存回收策略优先级
Android系统会对进程的重要性进行评估,并将重要性以“oom_adj”这个数值表示出来,赋予各个进程。系统会根据“oom_adj”来判断需要优先结束哪些进程,一般来说,“oom_adj”的值越大,该进程被系统选中终止的可能就越高,前台程序的“oom_adj”值为0,这意味着它不会被系统终止。Android将进程分为6个等级,foreground(前台进程)、visible(可见进程)、seco转载 2014-08-20 15:24:00 · 958 阅读 · 0 评论 -
堆和栈
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教转载 2014-08-18 21:05:05 · 336 阅读 · 0 评论 -
Android中的进程通信之Broadcast
广播是一种被动跨进程通讯的方式。当某个程序向系统发送广播时,其他的应用程序只能被动地接收广播数据。这就象电台进行广播一样,听众只能被动地收听,而不能主动与电台进行沟通。在应用程序中发送广播比较简单。只需要调用sendBroadcast方法即可。该方法需要一个Intent对象。通过Intent对象可以发送需要广播的数据。 先建一个android工程:sendbroadcast。在转载 2014-08-18 20:42:16 · 451 阅读 · 0 评论 -
Android中的进程通信之Content Provider
Android应用程序可以使用文件或SqlLite数据库来存储数据。Content Provider提供了一种在多个应用程序之间数据共享的方式(跨进程共享数据)。应用程序可以利用Content Provider完成下面的工作1. 查询数据2. 修改数据3. 添加数据4. 删除数据 虽然Content Provider也可以在同一个应用程序中被访问,但这么做转载 2014-08-18 20:42:14 · 582 阅读 · 0 评论 -
Android进程通信之AIDL
1.什么是aidl:aidl是 Android Interface definition language的缩写,一看就明白,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口icp:interprocess communication :内部进程通信转载 2014-08-18 20:02:19 · 326 阅读 · 0 评论 -
Android中跨进程通信之Activity
在Android应用开发中,会用到跨进程通信的方式,什么是跨进程通信,例如,在第三方应用中调用拨号、短信、邮件等,在这个过程中发生数据的传递,当前应用(一个进程)调用另一个应用(第二个进程),这就是Android中的跨进程通信。在Android中,一共有四种跨进程通信的方式,分别是通过Activity、BroadcastReceiver、ContentProvider和AIDL(Android转载 2014-08-18 19:41:54 · 576 阅读 · 0 评论 -
JNI的基本介绍
首先,我们都知道Android的内核是修改过的linux内核,然后Android应用是用Java的方言写的。 JNI(Java Native Interface)是Dalvik(包括其他JVM)和Linux之间的一个接口,JNI可以使得Java程序直接调用OS上原生语言开发的lib。Java追求平台无关性,但JVM不是万能的。当我们出于开发效率、执行效率的目的希望使用原生lib的时转载 2014-08-14 11:51:13 · 492 阅读 · 0 评论 -
引用及传值的解析
在Java中的引用类型,是指除了基本的变量类型之外的所有类型,所有的类型在内存中都会分配一定的存储空间(形参在使用的时候也会分配存储空间,方法调用完成之后,这块存储空间自动消失), 基本的变量类型只有一块存储空间(分配在stack中), 而引用类型有两块存储空间(一块在stack中,一块在heap中), 方法形参的值传递(引用)是指形参和传进来的参数指向同一个值的内存(heap)中;java是转载 2014-08-14 11:34:13 · 371 阅读 · 0 评论 -
java oo的理解
1)父类构造函数java中当调用某个类的构造方法的时候,系统总会调用父类的非静态初始化块进行初始化,这个调用是隐式的,而且父类的静态初始化代码块总是会被执行,接着调用父类的一个或者多个构造器执行初始化,这个调用也可以通过super进行显式调用。例如:父类代码如下:public class Creature {//父类{//非静态代码块Syst转载 2014-11-20 18:14:13 · 605 阅读 · 0 评论 -
Java 多态
面向对象编程有三个特征,即封装、继承和多态。 封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。 继承是为了重用父类代码,同时为实现多态性作准备。那么什么是多态呢? 方法的重写、重载与动态连接构成多态性。Java之所以引入多态的概念,原因之一是它在类的继承问题上和C++不同,后者允许多继承,这确实给其带来的非常强大的功能,但是转载 2014-11-21 11:21:47 · 331 阅读 · 0 评论 -
接口和类的区别
1,抽象类里可以有构造方法,而接口内不能有构造方法。 2,抽象类中可以有普通成员变量,而接口中不能有普通成员变量。 3,抽象类中可以包含非抽象的普通方法,而接口中所有的方法必须是抽象的,不能有非抽象的普通方法。 4,抽象类中的抽象方法的访问类型可以是public ,protected和默认类型,但接口中的抽象方法只能是public类型的,并且默认即为public转载 2014-11-21 13:38:23 · 345 阅读 · 0 评论 -
android中Invalidate和postInvalidate的区别
android中Invalidate和postInvalidate的区别Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用。 Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android U转载 2014-07-03 15:01:14 · 366 阅读 · 0 评论 -
Android 屏幕适配相关解决方案
什么是屏幕尺寸、屏幕分辨率、屏幕像素密度? 什么是dp、dip、dpi、sp、px?他们之间的关系是什么? 什么是mdpi、hdpi、xdpi、xxdpi?如何计算和区分?在下面的内容中我们将介绍这些概念。屏幕尺寸屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米比如常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等转载 2015-07-08 17:47:11 · 1117 阅读 · 0 评论 -
自定义控件开发流程
1、写一个类继承View或你想扩展功能的控件(比如TextView)。 public class CustomView extends View { };2、在/res/value下创建一个attr.xml文件。没有这个文件自定义控件照样能显示出来,但只能使用所继承的父类中包含的属性,有了这个文件可以增加自定义的命名空间,来设置自定义的属性(其中format可转载 2015-04-30 17:15:39 · 363 阅读 · 0 评论 -
serialVersionUID JAVA的序列化机制
serialVersionUID适用于JAVA的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx转载 2015-01-19 11:37:18 · 482 阅读 · 0 评论 -
IOS atomic与nonatomic,assign,copy与retain的定义和区别
atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。 atomic 设置成员变量的@property属性时,默认为atomic,提供多线程安全。 在多线程环境下,原子操作是必要的,否则有可能引起错误的结果。加了atomic,setter函数会变成下转载 2015-01-13 11:16:35 · 390 阅读 · 0 评论 -
try、catch 相关问题
try {int x = 0;float y = 0;float z = x / y;System.out.println("11");try {int a[] = new int[3];a[3] = x;System.out.println("22");return;} catch (Exception e) {System.out.println("转载 2014-12-16 12:02:10 · 421 阅读 · 0 评论 -
new一个类对象和使用类名创建一个对象有什么区别?LinkList和ArrayList的区别
存储空间上不同。 new出来的在堆上 直接定义的在栈上 .用法似乎高手都喜欢用new,因为堆的内存大嘛,我喜欢用栈,方便点,不用指来指去,还要回收内存.栈在递归可能会遇到溢出,因为内存有限制.而且new出来的可以用很多动态重载的特性.转载 2014-12-16 11:11:26 · 947 阅读 · 0 评论 -
throw和throws有何不同?如何使用
这两者虽然看起来只有一个s的区别,但是作用完全不一样/////java处理异常方式///////////////////////////////在java代码中如果发生异常的话,jvm会抛出异常对象,导致程序代码中断,这个时候jvm在做的操作就是:创建异常对象,然后抛出,比如:int i= 1;int j = 0;int res = 0;res = i/j;//除0错误System转载 2014-12-16 10:57:21 · 613 阅读 · 0 评论 -
view、SurfaceView和GLSurfaceView
Android游戏当中主要的除了控制类外就是显示类View。SurfaceView是从View基类中派生出来的显示类。android游戏开发中常用的三种视图是:view、SurfaceView和GLSurfaceView。 View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢。 SurfaceView:基于view视图进转载 2014-12-16 10:47:54 · 589 阅读 · 0 评论 -
jni编译过程中的问题
通过JNI实现Java和C++的相互调用一、从Java调用C++的DLL1. 创建Java文件创建名为TestNative的Java文件,注意包名。package org.druze.test;publicclass TestNative { publicnativevoid sayHello(); publicvoid sayHello2(){转载 2014-08-13 12:09:49 · 379 阅读 · 0 评论 -
jni字段描述符
“([Ljava/lang/String;)V” 它是一种对函数返回值和参数的编码。这种编码叫做JNI字段描述符(JavaNative Interface FieldDescriptors)。一个数组int[],就需要表示为这样"[I"。如果多个数组double[][][]就需要表示为这样 "[[[D"。也就是说每一个方括号开始,就表示一个数组维数。多个方框后面,就是数组 的类型。如果以一转载 2014-08-12 11:48:46 · 429 阅读 · 0 评论 -
Android四大基本组件及其生命周期
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。一:了解四大基本组件Activity :应用程序中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。在Int转载 2014-07-28 11:03:03 · 409 阅读 · 0 评论 -
Android在Http连接中设置超时和代理
Http连接的超时机制能够防止连接线程的无限期等待,一般可分为connect timeout和socket timeout,在Android中可以使用HttpClient和HttpURLConnection建立Http连接,因此存在两种设置超时的方式,首先Socket等待建立连接的超时时间和Socket输入流等待数据到达的超时时间设置如下:private static final in转载 2014-07-04 10:05:00 · 646 阅读 · 0 评论 -
设计模式之Singleton
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。转载 2014-07-03 16:29:46 · 328 阅读 · 0 评论 -
View绘制流程相关分析
前言: 本文是我读《Android内核剖析》第13章----View工作原理总结而成的,在此膜拜下作者 。同时真挚地向渴望了解 Android 框架层的网友,推荐这本书,希望你们能够在Android开发里学到更多的知识 。 整个View树的绘图流程是在ViewRoot.java类的performTraversa转载 2014-07-03 16:01:09 · 361 阅读 · 0 评论 -
synchronized,wait,notify
sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)"醒来"的线程具有更高的优先级。 (b)正在运行的线程因为其它原因而阻塞。 wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到转载 2014-07-03 14:52:19 · 344 阅读 · 0 评论 -
ContentProvider
(一) 前言ContentProvider是android组件之一,可以提供数据的跨应用程序访问,提供数据的跨进程无缝隙访问,所以是非常重要的东东。使用方法一般是复制内容到剪贴板代码:getContentResolver().query(Uri uri, String[] projection, String selection, String[] selectionArg转载 2014-06-11 12:14:22 · 480 阅读 · 0 评论 -
tatic{}(即static块)
会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法,下面我们详细的讨论一下该语句块的特性及应用。 一、在程序的一次执行过程中,static{}语句块中的内容只被执行一次,看下面的示例:示例一[java] view plaincopyclass Test{ public static in转载 2014-06-11 11:44:46 · 669 阅读 · 0 评论 -
Activity的生命周期
横竖屏切换时候Activity的生命周期转载 2014-06-10 10:39:47 · 340 阅读 · 0 评论 -
Android Service与Activity之间通信的几种方式
转自:在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activity中启动后台Service,通过Intent来启动,Intent中我们可以传递数据给Service,而当我们Service执行某些操作之后想要更新UI线程,我们应该怎么做呢?接下来我就介转载 2014-05-30 12:20:11 · 510 阅读 · 0 评论 -
Android适配
众所周知,Android机型尺寸各种各样,于是屏幕适配就成了Android开发中很重要的一环。Android屏幕适配可能一些开发者都会遇到这样的问题,今天就来分享下屏幕适配,你会发现其实Android屏幕适配也可以很简单。基本概念Android屏幕适配必须要理解的一些概念,这部分可能比较枯燥,但是俗话说的好“工欲善其事,必先利器”,翻译过来就是“有什么样的枪,决定你打什么样的鸟”,转载 2014-07-28 11:22:17 · 340 阅读 · 0 评论 -
Android Fragment的使用
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/13171191我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述。但是Activity也有它的局限性,同样的界面在手机上显示可能很好看,在平板上就未必了,因为平板的屏幕非转载 2014-07-28 11:43:56 · 297 阅读 · 0 评论 -
TCP/IP协议
物理层:数据链路层:网络层:传输层:yingy原创 2014-08-05 15:31:40 · 321 阅读 · 0 评论 -
java的几种同步方法
1 wait方法: 该方法属于Object的方法,wait方法的作用是使得当前调用wait方法所在部分(代码块)的线程停止执行,并释放当前获得的调用wait所在的代码块的锁,并在其他线程调用notify或者notifyAll方法时恢复到竞争锁状态(一旦获得锁就恢复执行)。 调用wait方法需要注意几点: 第一点:wait被调用的时候必须在拥有转载 2014-08-10 12:32:44 · 386 阅读 · 0 评论 -
C关于内存分配的错误解析
GetMemory 改错试题4:void GetMemory( char *p ){ p = (char *) malloc( 100 );}void Test( void ){ char *str = NULL; GetMemory( str ); strcpy( str, "hello world" ); printf( st转载 2014-08-07 21:04:57 · 420 阅读 · 0 评论 -
Linux Makefile
目的: 基本掌握了 make 的用法,能在Linux系统上编程。环境: Linux系统,或者有一台Linux服务器,通过终端连接。一句话:有Linux编译环境。准备: 准备三个文件:file1.c, file2.c, file2.h file1.c: #include转载 2014-08-07 11:27:22 · 314 阅读 · 0 评论