自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

CreativeBoy的专栏

技术狗+产品汪

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

原创 Dagger2从入门到放弃再到恍然大悟

现在Dagger2在项目里用的越来越多了,最近花了些时间学习了一下Dagger2,这篇文章主要帮助理解Dagger2的注入实现过程,如有错误,还请指正!什么是Dagger2Dagger2是Dagger的升级版,是一个依赖注入框架,现在由Google接手维护。 恩,这里有个关键字依赖注入,因此我们得先知道什么是依赖注入,才能更好的理解Dagger2。依赖注入是面向对象编程的一种设计模式,其目的是为了降

2016-05-29 10:12:27 14894 7

原创 Android从按下开机键到启动发生了什么

作为一个Android开发者,了解整个系统架构是必须的,所以这篇就总结一下Android手机从按下开机键到启动这一过程发生了什么。要了解Android手机启动过程,我们先来了解一下基于linux系统的电脑从按下电源键的那一刻起,发生了什么,这样类比可以更好的理解Android手机的启动过程。基于Linux的pc启动过程我们都知道,所有的程序软件包括操作系统都是运行在内存中的,然而我们的操作系统一般是

2016-05-10 21:34:16 3133

原创 Webview截屏三种方式

第一种方式通过调用webview.capturePicture(),得到一个picture对象,根据图像的宽和高创建一个Bitmap,再创建一个canvas,绑定bitmap,最后用picture去绘制。//获取Picture对象Picture picture = wv_capture.capturePicture();//得到图片的宽和高(没有reflect图片内容)int width =

2016-03-19 10:51:31 4697

原创 使用SparseArray代替HashMap提升性能

SparseArray翻译为稀疏数组,所谓稀疏数组就是数组中大部分的内容值都未被使用(或都为零),在数组中仅有少部分的空间使用。因此造成内存空间的浪费,为了节省内存空间,并且不影响数组中原有的内容值,我们可以采用一种压缩的方式来表示稀疏数组的内容。SparseArray主要用来替代HashMap,它比HashMap更节省内存,在某些情况下比HashMap性能更改。举个例子当这样使用HashMap

2016-02-19 16:17:01 1230

原创 广播机制小结

在Android系统中,广播是在组件之间传递数据(通信)的一种机制,这些组件可以是在不同的进程中,就像Binder机制一样,起到进程间通信的作用。广播机制是一种消息发布/订阅模式的事件驱动模型,消息的生产者发布事件,而使用者订阅感兴趣的事件。 Android中的广播主要分为两种: 1. 标准广播(Normal broadcasts):是一种完全异步执行的广播,当一条广播发出去以后,所有的广播

2016-02-19 16:12:37 893

原创 Bitmap与OOM

Bitmap所造成的OOM     图片是一个很耗内存的资源,因此经常会遇到OOM。比如从本地文件中读取图片,然后在GridView中显示出来,如果不做处理,OOM就极有可能发生。Bitmap引起OOM的原因: 1. 图片使用完成后,没有及时的释放,导致Bitmap占用的内存越来越大,而安卓提供给Bitmap的内存只有8M,   当超出该内存时,自然就发生了OOM 2. 图

2015-11-15 10:37:52 1145

原创 关于AsyncTask应该掌握的一切

AsyncTask是android为了方便处理子线程和UI线程的交互而封装的一个类,它内部的实现是Thread+Handler。 AsyncTask泛型类型: AsyncTask是一个抽象类,当我们要使用AsyncTask时,需要创建一个类继承自AsyncTask类,并且至少重写其中的一个方法——doInBackground(),在继承时为AsyncTask类指定三个泛型参数: 1

2015-11-15 10:23:16 1527

原创 Java常见面试题及答案 21-30(集合类)

21.HashMap的工作原理是什么? HashMap内部是通过一个数组实现的,只是这个数组比较特殊,数组里存储的元素是一个Entry实体(jdk 8为Node),这个Entry实体主要包含key、value以及一个指向自身的next指针。HashMap是基于hashing实现的,当我们进行put操作时,根据传递的key值得到它的hashcode,然后再用这个hashcode与数组的长度进行模运

2015-10-23 16:40:03 20404 8

原创 java常见面试题及答案 11-20(JVM)

11.JVM内存分哪几个区,每个区的作用是什么? java虚拟机主要分为以下一个区: 方法区: 1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载 2. 方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。 3. 该区域是被线程共享的。 4. 方法区里有

2015-10-13 21:40:43 72999 7

原创 java常见面试题及答案 1-10

java常见面试题及答案1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程。Java 源文件被编译成能被 Java 虚拟机执行的字节码文件。 Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。 Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令

2015-10-11 20:44:38 16664 1

原创 Android开发要掌握的基本技能(面试常考)

Android开发岗知识点清单Java 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?2.JDK和JRE的区别是什么?“static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?Java支持的数据类型有哪些?什么是自动拆装箱?Java中的方法覆盖(Overriding)和方法重载(Overloading)是什

2015-10-09 11:22:40 3155

原创 java反射机制

java反射机制java反射机制可以让我们在运行期获取类、接口、变量和方法的信息。通过反射我们可以动态的创建对象,获取类的属性(包括私有属性)、方法等信息;通过反射我们亦可以实现动态代理、动态的类加载以及与泛型相关的操作。获取类获取class对象 在获取一个类的相关信息前,我们必须首先获取它的class对象,这里有两种方式:直接通过Object.class,如下:Class myClass =

2015-10-03 11:57:49 987

原创 Java设计模式之代理模式

代理模式什么是代理模式?举个生活中的例子:代理商。我们生活中买的许多物品都是通过代理商那里购买的,比如旅行社,代理旅行、机票等业务,代理出口商品。代理商并不产生这些产品,他们是从厂家拿货,所以虽然是通过代理商那里买到了产品,实际物品还是属于厂家那里。代理商作为一种中间层,可以为消费者带来许多遍历,消费者不需要购买物品的时候跑到生产厂家。再举个例子:老板与秘书。老板一般都很忙,如果一个客户相要见老板,

2015-10-01 10:27:06 798

原创 android中实现截屏的三种思路

APP截屏功能三种实现思路:1. 基于Android SDK的截屏方法SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd_HH-mm-ss",Locale.US); Stringfname = "/sdcard/" + sdf.format(new Date()) + ".png";

2015-09-26 16:32:08 3634

原创 数据结构与算法——冒泡排序

什么是冒泡排序?  冒泡排序是一种交换排序,所谓交换,就是将相邻元素两两比较,如果反序则进行交换从而使元素有序。之所以叫冒泡排序是因为,元素是从最后开始进行两两比较,将小的元素放到最上面的位置,看上去就跟气泡网上冒一样。代码实现:#include #define MAXSIZE 10using namespace std;struct SqList { int r[MAX

2015-06-14 20:35:23 815

原创 数据结构与算法——直接插入排序

好久没写博客了,今天就简单总结下直接插入排序。什么是直接插入排序?直接插入排序就是将某一个元素与顺序表中元素进行比较,然后插入到相应的位置,使整个顺序表处于有序状态。有关数据结构的书上都会用扑克牌进行比喻说明,就跟玩扑克一样,当我们拿到几张牌时,要想整理成一个顺子,我们通常的做法就是将小的牌,插到比他大的牌的前面。具体可以看看书,想一想,还是很容易理解的。直接插入排序的思路:每次将一个

2015-06-11 16:59:39 3788

原创 数据结构与算法——二叉树的创建与遍历

这两天在看树的部分,先总结一下二叉树。什么是树?树也是一种数据结构,是由n个结点组成的具有层次关系的集合。树由根结点和子节点组成,与现实生活中的树不同,这里的树,根结点是在最上面的,叶子结点在下面,就像是将现实中的树倒着挂起来一样。树的特点:每个结点有零个或多个子结点。每一个子结点只有一个父结点。没有前驱的结点称为根结点,没有子结点的结点为叶子结点。除根结点外,每个子结点可

2015-05-23 13:33:45 5003 1

原创 数据结构与算法——链队列

总结链队列什么是链队?  队列的链式存储结构称为链队列。链队也有两个指针,队头指针和队尾指针,这样队头删除和队尾插入操作就会很方便,链式队列一般像单链表一样,有一个头结点。图示:具体实现:#include using namespace std;template struct Node { T data; struct Node *nex

2015-05-16 10:31:54 1059

原创 数据结构与算法——循环队列

今天总结循环队列。什么是队列?   队列跟栈差不多,也是一种操作受限的线性表,只允许在线性表的一端进行插入操作,在另一端进行删除操作。插入的一端称为队尾,删除的一端称为队头,插入操作称为入队,而删除操作称作出出队,不含任何数据元素的队称为空队。队列也有两种实现方式,一种就是顺序存储,用数组实现,另一种是采用链表形式。今天总结顺序存储的循环队列。什么是循环队列?   循环队列就是,当

2015-05-14 21:43:49 1596

原创 Android录音实现——使用AtudioRecord

最近在做android中录音录屏的功能,以前也是从未接触多媒体这块,然后从不会到一点点的摸索,参考大神们的代码,到现在算是入门了,今天就总结一下android中的录音部分,后面总结录屏。     在android中实现录音共有三种方式:通过意图捕获音频。这是android中最简单的一种方式,就是通过一个意图利用已有的、提供录制功能的应用程序。android系统中都会再带一个录音程序,我

2015-05-14 11:45:37 2674 2

原创 数据结构与算法——链栈

今天总结链栈。什么是链栈?链栈就是栈的链式存储结构,就跟单链表差不多。只不过头指针变成了栈顶指针,这个指针总是指向栈顶元素。栈底结点的指针域指向NULL,当top==NULL时,则栈为空.具体实现时,对比着单链表,然后结合图示,很容易就写出来了。图示:实现:#include using namespace std;template struct Node {

2015-05-12 21:41:42 815

原创 数据结构与算法——顺序栈

今天总结栈的顺序存储结构什么是栈?栈是一种线性表,其特点是限定尽在表尾进行插入和删除操作,表尾栈一段也叫栈顶,另一端就是栈底了。既然栈是线性表,那么栈也就有两种存储数据的方式,顺序存储和链式存储。今天实现的是顺序存储的栈,也就顺序栈。图示(来自百度图片):顺序栈的实现:栈的顺序存储还是比较简单的,就是对数组进行操作。#include using name

2015-05-11 17:24:48 1613 2

原创 数据结构与算法——线性表链式存储结构(静态链表)

今天总结静态链表.什么是静态链表?我理解静态链表是一种伪链表,因为它没有使用指针。静态链表使用数组实现的,这个数组是一个结构体数组,结构体由数据域和指针域构成,与单链表不同的是,这个指针域并不是指针,而是一个整数,用来指向下一个结点(数组下标)。静态链表中实际上相当于有两个链表,一个时实际数据所构成的一个链表,另一个是数组中空元素所构成的链表,称为空闲链表或备用链表,用来存放插入进来的

2015-05-10 15:08:44 919

原创 数据结构与算法——线性表链式存储(双向循环链表)

今天总结线性表中的双向循环链表。什么是双向循环链表?  看名字估计也就知道了,首相他是一个循环链表,也就是最后一个结点的指针域不为空,而是指向头结点,其次与单向循环链表相比,它是双向的。所谓双向,就是给每个结点再增加一个指针域,这个指针域指向前一个结点。 即是下面这样(来自百度图片):为什么要用双向循环链表? 无论单链表还是单向循环链表,都只有一个指针域,它们都是直

2015-05-09 08:53:48 979

原创 数据结构与算法——线性表链式存储(单循环链表)

今天总结循环单链表什么是单循环链表?单链表终端结点的指针域是指向空的,如果将其指向头结点,这样就形成了一个环,那么这种首尾相接的环就够成了单循环链表.单链表中我们都是用头指针来表示的,但是在单循环链表里,用尾指针(指向最后一个节点)。为什么要这样,因为如果用头指针,那么当查找最后一个元素的时候,就要循环遍历,时间复杂度为O(n),如果用尾指针,时间复杂度为O(1),而因为是循环的,所以

2015-05-07 11:04:12 3277

原创 数据结构与算法——线性表链式存储(单链表)

今天总结单链表的实现.什么是链表?  就是采去链式存储结构的线性表,所谓链式存储就好比火车的车厢一样,一节一节的连接起来,成为一个线性表。这种方式采用动态存储分配方式,即程序在运行时根据实际需要申请内存空间,不需要时将内存空间释放掉。  链表用一组任意的存储单元存放线性表中的各个元素,这组存储单元可以是连续的,也可以是不连续的。什么是单链表?单链表简单理解就是单向的,就像火

2015-05-06 10:55:36 758

原创 数据结构与算法——线性表顺序存储结构

今天总结一下数据结构中的线性表中的顺序存储结构,这是一种比较简单的结构。 首先,看一下什么是线性表。 什么是线性表?  线性表是一种简单的数据结构,数据元素之间是一对一的关系,即除了第一个和最后一个元素外其余元素都是首尾相接的。元素的个数称为线性表的长度,长度为零则表示线性表为空。  什么是线性表的循序存储结构?  线性表中的顺序存储结构就是把线性表中的元素按逻辑次

2015-05-05 10:27:53 1103

翻译 Service服务<二>

上篇:Service服务权限:  当服务在manifest的service>标签里声明时,那么这个服务就可以被全局访问执行。通过这样做,其他的应用程序可以在自己的manifest文件中通过声明相应的来开启,停止或绑定到这个服务。  自android2.3起,当使用Context.startService(intent)时,你可以通过设置Intent(意图).FLAG_GRANT_R

2015-05-04 11:17:12 663

原创 数据库第五章习题

学号:2013211492第二题:(1) 学生(学号,姓名,出生日期,系名,班号,宿舍区)    班级(班号,专业名,系名,系办公室地点,人数)    系(系名,系号,系办公室地点,人数)    学会(学会名,成立年份,地点,人数,入会年份)(2)     学生关系的最小函数依赖集:F={学号->姓名,学号->出生日期,学号->系名,系名->宿舍区}    存在传递依赖

2015-05-03 14:35:00 2486

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

今天学习了一下观察者模式,做一下总结。什么是观察者模式?  观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并被自动更新。 观察者模式也叫“依赖”或者“发布——订阅”模式。举一些例子来说明什么是观察者模式。   比如订阅者与报刊之间就属于目标(subject)与观察者(observer)关系。每一个订阅者相当于一个观察者,而这

2015-04-20 21:14:55 591

翻译 Service服务<一>

谷歌官方文档是学习android很好的地方,不过满篇的英文让人看着会很吃力,所以我打算将一些文档翻译出来,供大家去参考学习。当然本人的英文水平很有限,肯定有很多翻译不妥的地方,希望见谅。如果要转载,请注明出处,我会非常感激,并且努力继续做下去。概述:服务是一个应用程序组件,表示当应用程序没有和用户交互时想执行一个长时间的操作或者提供功能给其他的应用使用。每一个服务必须有相应的声明在An

2015-04-19 11:35:49 543

原创 数据库原理第三章习题作业

学号:20132114921、关系模型由哪三部分组成? 关系数据结构、关系数据操作和完整性约束2、什么是关系的实体完整性规则?基本关系的所有主关键字对应的主属性都不能取空值,例如,学生选课的关系选课(学号,课程号,成绩)中,学号和课程号共同组成为主关键字,则学号和课程号两个属性都不能为空。因为没有学号的成绩或没有课程号的成绩都是不存在的。3、什么是关系的参照完整性规则?现实

2015-04-13 19:22:35 3257

原创 数据库原理第四章习题作业

1 简述SQL的功能和特点:   1、数据定义功能:数据库的逻辑结构,包括数据表、视图、索引等。   2、数据操作功能:数据表的查询和更新等。   3、数据控制功能:包括用户授权、基本表、视图的授权,事务的控制,数据完整性和安全的控制。  特点:  1、SQL功能强大,集数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)于一体,使用同一的语法形式,完成数据定

2015-04-13 19:19:53 9342

原创 Java设计模式之单例模式

今天总结一下java设计模式中的单利模式。所谓单例模式就是一个类只能有一个实例化对象,并且提供一个全局的访问点。为什么需要单例模式?可能我们会想,一个类怎么会只有一个实例,其实这种需求还是挺多的,比如:线程池、缓存、对话框、注册表的对象以及显卡等驱动设备的对象。这些对象一般只能存在一个,如果存在多个这样的对象就会出现一些问题,比如同时出现两个显卡对象,那么这两个显卡都会控制到你电脑,那么就有可能产

2015-04-09 10:54:37 674

原创 Java I/O流小结

这几天复习了一下java中io流部分。记得第一遍学的时候,很混乱,感觉io这块东西太多了,很难记住,也不知道怎么用。这次又看了一下,将io流整理了一下,瞬间感觉清楚了许多。我觉得学习IO流这块就应该现在脑海里形成一个大的知识体系框架,然后再细分的去学习,io部分的学习,不是很难,看着很多东西,其实都很相似,比如会了Reader,那么InputStream也就差不多了,他们都有很多相似之处.下面就把

2015-04-06 18:59:15 624

原创 Java 设计模式之策略模式

要想写出可维护、可复用、可扩展的应用程序,就必须掌握一些设计模式的思想.设计模式重在设计,是一种思想层面的东西,需要细细的去领悟。今天学习了一下设计模式的第一个模式——策略模式,现在把它整理出来。策略模式:定义了算法族,分别封装起来,让他们之间可以互相转换,此模式让算法的变化独立于使用算法的用户。初次去看这么一个定义,估计很多人跟我一样,直接晕掉或者崩溃掉。完全不理解,没关系,我们由一个例子来

2015-04-01 09:49:03 602

原创 Java回调接口的理解

“回调”这个词肯定都不会陌生,会平时学习的时候,无论是看文档还是看一些教程的视频,都会提到回调。以前我听到回调只是感觉好像没什么,从来没有注意,可是现在去想回调究竟是什么,发现不是很清楚,于是就去学习了一下。  现在有两个类,一个是A,一个是B,回调就是A去调用B中的某个方法,然后B又回调A中的某个方法,这个方法就是回调方法,回调的机制是与接口分不开的。也就是A类实现一个接口,并实现接口的方法

2015-03-28 21:23:41 665

原创 Activity的四种启动模式

刚刚重新学了一下activity的四种启动模式,现在做一下小结.  Standard模式 "standard" (the default mode)  Default. The system creates a new instance of the activity in the task fromwhich it was started and routes the int

2015-03-24 19:29:19 616

原创 Java集合类之Map

这两天看了一下关于Map及子类的东西,做一下小结。 Map Map集合里存储的是具有映射关系的键值对,什么是映射关系,就跟数学当中的函数映射差不多,一个x值对应一个y值。Map中也一样,里面的“键”就相当于x值,“值”相当于y值。键值是不能重复的,每个键最多映射一个值。Map接口提供三种Collection接口,允许以键集合——KetSet,值集合——Values和键值对集合EntrySe

2015-03-24 11:05:49 764

原创 java集合类之Set

总结一下这两天看的有关Set的东西   Set是Collection的子类,当中的数据元素是无序不可重复的,Set判断两个对象是否相同不是通过“==”号,而是通过equals方法比较的,也就是说只要equals方法比较返回true,则这两个对象不能同时添加到Set中。 public class TestSet { public static void main(String[] args

2015-03-21 20:26:39 757 1

c语言参考手册

这一个简单快速的学习手册 很有用哦

2014-08-11

空空如也

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

TA关注的人

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