自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (2)
  • 收藏
  • 关注

原创 IntentFilter

启动Activity有显示调用和隐式调用。 显示调用需要明确指定启动对象的组件信息,包括包名和类名,这里主要介绍隐式调用。隐式调用需要Intent能够匹配目标组件的IntentFilter中做设置的过滤信息,有action、category、data. action:是一个字符串,要求Intent中的action存在且必选和过滤规则中的**其中一个**action相同,且action区分大小写。

2017-08-05 15:37:40 212

原创 类加载机制

当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化来对该类进行初始化。 类的加载:由类加载器完成,类加载器通常由JVM提供。也可以继承ClassLoader基类来创建自己的类加载器。 类的连接:验证、准备、解析。 类的初始化:声明类变量时指定初始值;使用静态初始化块为类变量指定初始值。若没有指定初始值,默认为0.类加载器: 根类加载器。 扩展类加载器。 系

2017-05-31 22:44:49 219

原创 网络编程

计算机网络 OSI分层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层:物理+数据链路层、网络层、传输层、应用层。 IP地址:用于唯一地标识网络上的一个通信实体。是数字型,是一个32位整数。 端口:16位整数,用于表示数据交给哪个通信程序处理。0-65535InetAddress InetAddress类来代表IP地址。URLDe

2017-05-31 22:11:00 212

原创 线程池

池的本质就是一种缓存技术,牺牲空间换取时间。 Java5新增了一个Executors工厂类来产生线程池,以下几个静态工厂方法创建线程池: 1、newCachedThreadPool():具有缓存功能的线程池。 2、newFixedThreadPool(int nThreads):创建一个可复用的、具有固定线程数的线程池。 3、newSingleThreadExecutor():只有单线程的线

2017-05-31 19:30:45 243

原创 多线程

操作系统可以同时执行多个任务,每个任务就是进程;进程可以同时执行多个任务,每个任务就是线程。 线程的划分尺度小于进程,使得多线程程序的并发性高。进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。 多线程优点: 线程之间不能共享内存,但线程间共享内存非常容易; 系统创建进程需要为该进程重新分配系统资源,但创建线程则代价小的多,因此使用多线程来实现多任务并发

2017-05-31 16:57:15 190

原创 JDBC

JDBC:Java Database Connectivity,Java数据库连接,它是一种可执行SQL语句的Java API。 JDBC开发的数据库不仅可以跨平台运行,而且可以跨数据库。 1、建立与数据库的连接 2、执行SQL语句 3、获得SQL语句的执行结果。 数据库系统: 网状型数据库 层次型数据库 关系型数据库 面向对象数据库SQL语句几种类型: 查询语句:主要select

2017-05-27 22:46:15 210

原创 异常处理

异常分为:Checked异常和Runtime异常。 Checked异常都是可以在编译阶段被处理的异常,所以强制程序处理所有的Checked异常,要么声明(throws)抛出,要么显示用catch来捕捉。只有Java语句提供了Checked异常。 1、try…catch捕获异常 把系统的业务实现代码放在try块中定义,所有异常处理逻辑放在catch块中进行处理。 Java7提供多捕获异常:

2017-05-27 15:45:21 159

原创 泛型

Java的参数化类型被成为泛型。允许程序在创建集合是指定集合元素的类型。 Java7以前:List<String> strList = new ArrayList<String>(); Java7以后:List<String> strList = new ArrayList<>();所谓泛型就是在定义类、接口、方法时使用类型形参,类型形参可以在整个接口、类体内当成类型使用。 注意: 1、当创

2017-05-26 22:18:34 257

原创 集合

Java集合类主要是由两个接口派生而出:Collection和Map. Collection : Set、Queue、List。 Set集合:无序,不可重复。 HashSet类 1、不能保证元素的排列顺序,顺序可能与添加顺序不同,顺序也有可能发生变化。 2、HashSet不是同步的,如果多个线程同时访问一个HashSet,则必须通过代码来保证其同步。 3、集合元素可以是null。 当向

2017-05-26 21:18:18 217

原创 正则表达式

一个强大的字符串处理工具,可以对字符串进行查找、提取、分割、替换等操作。是一个用于匹配字符串的模板。 使用Pattern和Matcher来使用正则表达式: Pattern对象是正则表达式编译后在内存中的表示形式。因此,正则表达式字符串必须先被编译为Pattern对象,然后再利用该Pattern对象创建对应的Matcher对象。执行匹配所涉及的状态保留在Matcher对象中,多个Matcher对象

2017-05-26 11:15:22 147

原创 String、StringBuffer和StringBuilder类

都实现了CharSequence接口。 String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象的字符序列是不可改变的,直至这么对象被销毁。 StringBuffer对象则代表一个字符序列可变的字符串,通过它提供的append()、insert()、reverse()、setChartAt()等方法可以改变这个字符串对象的字符序列。最后调用它的toString()方法将其转

2017-05-26 10:38:46 141

原创 引用方式

1、强引用 当一个对象被一个或一个以上的引用变量所引用时,它处于可达状态,不可能被系统回收机制回收。 2、软引用 对于只有软引用的对象,当系统内存空间足够时,它不会被回收,程序也可使用该对象,但当内存空间不足时,系统可能会回收它。常用于对内存敏感的程序中。 3、弱引用 当垃圾回收机制运行时,不管内存空间够不够,总会回收该对象占用的内存。 4、虚引用 完全类似于没有引用。主要用于跟踪对象

2017-05-25 22:44:30 196

原创 垃圾回收

当程序创建对象、数组等引用类型实体时,系统都会在对内存为之分配一块内存区,对象保存在这块内存区。当这块内存区不再被任何引用变量引用时,这块内存就变成垃圾,等待垃圾回收机制回收。 垃圾回收机制特点: 1、垃圾回收机制只负责回收堆内存里的对象,不会回收任何物理资源(数据库连接等)。 2、程序无法精确控制垃圾回收的运行,会在合适的时候进行。 3、在回收之前,会先调用对象的finalize()方法,

2017-05-25 22:21:07 131

原创 枚举类

一个类的对象是有限而且固定的,成为枚举类。java新增了一个enum关键字。 枚举类是一种特殊的类,它一样可以有自己的成员变量、方法,可以实现一个或者多个接口,也可以有与普通类自己的构造器。 区别: 默认继承java.lang.Enum类,实现了java.lang.Serializable和java.lang.Comparable两个接口。 使用enum定义、非抽象的枚举类默认使用使用fin

2017-05-25 21:52:46 124

原创 内部类

定义在其他类内部的类就被称为内部类,包含内部类的类也被成为外部类。 作用: 1、内部类提供了更好的封装。 2、内部类成员可以直接访问外部类的私有数据,因为内部类被当成外部类成员,同一个类的成员之间可以相互访问。但外部类不能访问内部类的实现细节,比如内部类的成员变量。 3、匿名内部类适合用于创建那些仅需一次使用的类。 静态内部类与外部类的区别: 1、内部类比外部类可以多使用3个修饰符:p

2017-05-25 21:22:10 145

原创 接口

【修饰符】interface 接口名 extends 父接口1,父接口2… { 0-N常数定义 0-N抽象方法定义 0-N内部类、接口、枚举定义 0-N默认方法或类方法定义 } 修饰符可以是public或省略。 接口定义的是一种规范,因此接口里不能包含构造器和初始化块定义。 接口可实现多继承,即一个接口可以有多个直接接口。 接口的主要用途: 定

2017-05-25 19:23:12 149

原创 抽象类

抽象方法是只有方法签名,没有方法实现的方法。abstract修饰的类或方法叫抽象类或抽象方法。 有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法。 1、抽象方法不能有方法体。 2、抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类实例。 3、抽象类可以包含成员变量,方法,构造器,初始化块,内部类5种成分。抽象类的构造器不能用于创建实例,主要用于被子类调用。抽象类

2017-05-25 16:24:07 119

原创 final

final关键字可用于修饰类、变量和方法,用于表示修饰的类、变量和方法不可见。 final 成员变量: 成员变量是随类初始化或对象初始化而初始化的,初始化时系统会为该类的类(实例)变量分配内存,并分配默认值。 final修饰的成员变量必须由程序员显示地指定初始值。 final修饰的类变量、实例变量能指定初始值的地方如下: 1、类变量:必须在静态初始化块中指定初始值或声明该类变量时指定初始值

2017-05-25 16:00:46 218

原创 包装类

Java是面向对象的编程语言,但也包括了8种基本数据类型,这8种不支持面向对象的编程机制,基本数据类型的数据也不具备“对象”的特性:没有成员变量方法可以调用。 举个栗子:如果某个方法需要Object类型的参数,但实际需要的值却是2、3等数值。Java提供了包装类来解决这一问题。 基本数据类型 包装类 byte

2017-05-25 13:26:04 172

原创 初始化快

与构造器的作用类似,也可以对java 对象进行初始化操作。 【修饰符】{ //可执行代码 } 一个类里可以有多个初始化块,相同类型的初始化块有顺序,前面的先执行。 初始化块的修饰符只能是static。 若一个类中既包括初始化块,又包括构造器,创建java对象时,系统总是先调用初始化。 初始化块没有名字也没有标识,因此无法通过类、对象来调用初始化快,只能在创建ja

2017-05-24 22:44:22 194

原创 instanceof运算符

在进行强制类型转换之前,先用instanceof运算符判断是否可以成功转换。从而避免异常,保证程序的健壮性。 例: objPri变量实际类型是Integer, String str = (String)objPri;出现ClassCastException异常。应该: if(objPri instanceof String){ String str = (String)objPri;

2017-05-24 22:12:23 128

原创 多态

java引入变量有编译时类型和运行时类型。 编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给改变量的对象决定。 当编译时类型和运行时类型不一致时,就出现多态。 BaseClass bc = new SubClass(); 编译时类型BaseClss,运行时类型SubClass。 引用变量只能调用声明该变量时所用类包含的方法,例如,bc只能调用BaseClass类的

2017-05-24 22:01:32 112

原创 继承

java子类不能获得父类的构造器。 每个类最多只有一个直接父类。若未显示指定这个类的直接父类,则这个类默认扩展java.lang.Object类。 重写:子类包含与父类同名方法的现象被称为方法重写(Override),也称为方法覆盖。 “两同两小一大”:方法名相同,形参列表相同,子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等,

2017-05-24 21:08:48 115

原创 访问控制级别

private—>default—>protected—>public default没有对应的访问控制符 private:当前类的访问权限,用于修饰成员变量最合适,使用它来修饰成员变量就可以把成员变量隐藏在该类的内部。 default:包访问权限,可以被相同包下的其他类访问。 protected:子类访问权限,可以被同一个包中的其他类访问,也可以被不同包中的子类访问。通常情况下,使用pro

2017-05-23 22:41:08 852 1

原创 成员变量和局部变量

成员变量: 实例变量(不以static修饰) 类变量(以static修饰)。 类变量从类的准备阶段开始存在,知道系统完全销毁这个类,类变量的作用域与这个类的生存范围相同;而实例变量则从该类的实例被创建起开始存在,直到系统完全销毁这个实例,实例变量的作用域与对应实例的生存范围相同。 类.类变量 、 实例.实例变量 、实例.类变量。 当系统加载类或创建该类的实例时,系统自动为成员变量分配内存

2017-05-23 22:05:51 134

原创 做题笔记

gets是得到一整行的字符串; getchar是得到一个字符; scanf(“%s”)是得到一个连续的字符串,遇到空格、回车会自动终止。bash环境中:Ctrl+C–停止程序 Ctrl+Z–后台挂起查看本系统支持shell类型:/bin 二进制文件目录 /sbin

2017-05-23 21:29:03 308

原创 this和super关键字

this关键字总是指向调用该方法的对象。 根据this出现位置不同,this作为对象的默认引用有两种情形: 1、构造器中引用该构造器正在初始化的对象; 2、在方法中引用调用该方法的对象。 this可以代表任何对象,当this出现在某个方法体中时,它所代表的对象是不确定的,但它的类型是确定的:它所代表的只能是当前类的实例;只有当这个方法被调用时,它所代表的对象才被确定下来,谁

2017-05-23 16:12:57 152

原创 数据保存位置

1)寄存器。最快的保存区域,位于处理器内部,数量十分有限,根据需要由编译器分配。 2)堆栈。驻留于常规RAM(随机访问存储器)区域,是一种特别快、特别有效的数据保存方式,仅次于寄存器。保存某些java数据,特别是对象句柄,但java对象并不放在其中。 3)堆。也在RAM(随机访问存储器)区域,其中保存了java对象。与堆栈不同,编译器不需要知道要从堆里分配多少存储空间,也不必知道存储的数据要

2017-05-22 14:13:12 403

原创 数据结构(2)——大话数据结构

线性表(List) 零个或多个数据元素的有限序列。 线性表的顺序存储结构:用一段地址连续的存储单元一次存储线性表的数据元素。 数组的长度:存放线性表的存储空间的长度,存储分配后这个量一般是不变的。 线性表的长度:是线性表中数据元素的个数。 线性表的长度<= 数组的长度 地址计算方法: 待续。。。。

2017-05-18 14:15:56 142

原创 数据结构(1)——大话数据结构

1、数据 可以输入到计算机中。 能被 计算机程序处理。 2、数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。 逻辑结构:集合结构、线性结构、树形结构、图形结构 物理结构:指数据的逻辑结果在计算机中的存储形式。顺序存储结构和链式存储结构 3、算法 输入输出:具有零个或多个输入,一个或多个输出。 有穷性 确定性:每一步骤都是具有确定的含义,不会出现二义性。 可行性:每一步

2017-05-17 15:17:01 237

原创 性能优化——Android群英传

1、布局优化 1)避免Overdraw 2)优化布局层级 降低View树的高度。 3)避免嵌套过多无用布局 4)使用<include>标签重用Layout 5)使用<ViewStub>实现View的延迟加载,是一个轻量级的组件,不仅不可视,而且大小为0.需要的时候再显示。两种方式显示这个View。 mViewStub.setVisibility(View.VISIBLE); View

2017-05-16 22:30:25 168

原创 Android安全机制

五道防线: 1、代码安全机制——代码混淆proguard。 2、应用接入权限控制——AndroidMainifest文件权限声明、权限检查机制。缺点:被授予的权限无法停止。在应用声明App使用权限时,用户无法针对部分权限进行限制。权限的声明机制与用户的安全理念相关。 3、应用签名机制——数字证书。 4、Linux内核安全机制——Uid、访问权限控制。 5、Android虚拟机沙箱机制——沙

2017-05-16 21:38:37 202

原创 Intent Flag启动模式——Android群英传

系统提供了两种方式设置一个Activity的启动模式: 一个是通过在AndroidMainifest文件中的属性android:launchMode来设置 另一种就是本文要介绍的通过Intent的flag来设置。 1、Intent.FLAG_ACTIVITY_NEW_TASK 使用一个新的Task来启动一个Activity,但启动的每个Activity都将在一个新的Task中。通常使用在从

2017-05-15 21:34:09 338

原创 Android 5.X SVG矢量动画机制——Android群英传

SVG : Scalable Vector Graphics 可伸缩矢量图形 与Bitmap比较:Bitmap通过在每个像素点上存储色彩信息来表达图像,而SVG是个绘图标准,最大的优点就是放大不会失真,不需像Bitmap需要为不同分辨率设计多套图标。<path>标签 就像用指令的方式来控制一只画笔常用指令: L:绘制直线 M:移动 A:绘制弧线SVG编辑器 编辑SVG图形 http:

2017-05-13 22:43:34 259

原创 预防一些类还没初始化就被调用

先看下面代码,会出现什么情况呢?public class HelloActivity extends BaseActivity {@Override protected void onCreate(Bundle savedInstanceState) { baiduMap.addHearMap(null); super.onCreate(sav

2017-05-13 20:51:56 263

原创 Android动画

视图动画 Android 3.0之前 透明度动画AlphaAnimation、旋转动画RotateAnimation、位移动画TranslateAnimation、缩放动画ScaleAnimation,AnimationSet动画集合 缺点:不具备交互性,当某个元素发生视图动画后,其响应事件的位置还依然还在动画前的地方。 优点:效率比较高使用方便属性动画 Android 3.0之后 待补

2017-05-13 20:35:50 128

原创 SurfaceView与View——Android群英传

区别: View主要适用于主动更新的情况下,而SurfaceView主要适用于被动更新,例如频繁的刷新 View在主线程对画面进行刷新,而SurfaceView通常会通过一个子线程 View在绘图时没有使用双缓冲机制,而SurfaceView在底层实现机制中已经实现了双缓冲机制SurfaceView使用 1、创建SurfaceView 自定义的继承SurfaceView,实现两个接口的方法

2017-05-12 22:14:13 157

原创 绘图——Android群英传

2D绘图基础 Canvas对象提供绘图方法: canvas.drawPoint(x,y,paint) 绘制点 canvas.drawLine(startX,startY,endX,endY,paint) 直线 DrawLines多条直线 canvas.drawRect(left,top,right,bottom,paint); 绘制矩形 canvas.drawRoundRect(left

2017-05-12 21:57:51 146

原创 单位转换

px转换为dip或dp值,保证尺寸大小不变 public static int px2dip(Context context,float pxValue){ final float scale = context.getResources().getDisplayMetrics().density; return (int)(pxValue/scale+0.5f);

2017-05-12 21:16:37 152

原创 Android Scroll——Androi群英传

1、layout方法 ACTION_MOVE中:layout(getLeft()+offsetX,getTop+offsetY,getRight()+offsetX,getBottom()+offsetY); offsetX,offsetY是偏移量 2、offsetLeftAndRight(offsetX)与offsetTopAndBottom(offsetY) 对左右、上下移动的API的封

2017-05-12 20:54:26 284

notepad++.exe

Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。

2017-12-06

软件测试中文第二版

软件测试入门好书,带你进入软件测试的大门,从小白到大神。

2017-10-01

空空如也

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

TA关注的人

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