自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(181)
  • 资源 (4)
  • 收藏
  • 关注

原创 android整合--notification推送通知

到目前为止,想必大家已经都熟悉使用Toast去给用户显示信息了。尽管使用Toast很方便,但是Toast显示的通知并不是永久存储的。它只在屏幕上显示一小段时间,然后就消失了。如果它包含一些特别重要的信息,如果用户没有观察屏幕,那么用户就很容易错过它。对于那些重要的信息,应该采用一种更加持久保存的方法。在这种情况下,应该使用NotificationMnanger(消息管理器)去显示一个长久的

2013-09-16 20:25:03 4676 1

转载 UML类图符号简介

1. 类(Class):使用三层矩形框表示。 第一层显示类的名称,如果是抽象类,则就用斜体显示。 第二层是字段和属性。 第三层是类的方法。 注意前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。 2. 接口:使用两层矩形框表示,与类图的区别主要是顶端有>显示。 第一行是接口名称。 第二行是接口方法。 3. 继承类(e

2013-09-13 21:34:03 2699

转载 Android 异步更新UI----AsyncTask

我们可以使用handler作为thread和UI线程的桥梁,android本身也给我们提供来一个异步更新的方法AsyncTask, 其中AsyncTask比hander更轻量级一些。在Android1.5中提供了AsyncTask。它使创建需要与用户界面交互的长时间运行的任务变得更简单。AsyncTask 的优势体现在:•线程的开销较大,如果每个任务都要创建一个线程,那么应用程

2013-09-13 14:04:17 1075

原创 【Java进阶】Java中抽象类和接口区别

在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之

2013-09-13 13:48:18 1151

转载 Java中常见的几种异常

算术异常类:ArithmeticExecption空指针异常类:NullPointerException类型强制转换异常:ClassCastException数组负下标异常:NegativeArrayException数组下标越界异常:ArrayIndexOutOfBoundsException违背安全原则异常:SecturityException文

2013-09-13 13:43:57 1600

转载 Android 异步更新UI----handler+thread

android应用是单线程模式的。单线程模式需要记住两条:一、防止UI线程阻塞二、确保只在UI线程中访问Android UI工具包在开发Android应用时必须遵守单线程模型的原则:Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。每个Android应用程序都运行在一个dalvik虚拟机进程中,进程开始的时候会启动一个主线程(Ma

2013-09-13 10:18:45 5629

转载 【C++进阶】C++虚函数及虚函数表解析

虚函数的定义:  虚函数必须是类的非静态成员函数(且非构造函数),其访问权限是public(可以定义为private or proteceted, 但是对于多态来说,没有意义。),在基类的类定义中定义虚函数的一般形式:  virtual 函数返回值类型 虚函数名(形参表)  { 函数体 }  虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚

2013-09-12 22:52:54 1619 1

原创 两分钟彻底让你明白Android Activity生命周期(图文)!

大家好,今天给大家详解一下Android中Activity的生命周期,我在前面也曾经讲过这方面的内容,但是像网上大多数文章一样,基本都是翻译Android API,过于笼统,相信大家看了,会有一点点的帮助 ,但是还不能完全吃透,所以我今天特意在重新总结一下.首先看一下Android api中所提供的Activity生命周期图(不明白的,可以看完整篇文章,在回头看一下这个图,你会明白的):

2013-09-11 13:43:30 937

原创 Android Activity 各函数解析

Android 中Activity里面 onCreate, onDestory, onStart, onPause, onStop,onResume函数的作用

2013-09-11 11:45:28 2738 1

原创 解决Android中Can't create handle inside thread问题

[java] view plaincopyprint?new Thread()  {      public void run()      {               .....       }  }.start();  如果在上述代码中省略号处面创建一个Dialog的话会出现Can't create handle

2013-09-11 11:09:02 5562

转载 Android APK 安装过程及原理详解

应用程序包的安装是android的特点APK为AndroidPackage的缩写Android应用安装有如下四种方式:1.系统应用安装――开机时完成,没有安装界面2.网络下载应用安装――通过market应用完成,没有安装界面3.ADB工具安装――没有安装界面。4.第三方应用安装――通过SD卡里的APK文件安装,有安装界面,由         pack

2013-09-05 10:35:14 1319

转载 C语言深度解剖读书笔记(3.预编译处理)

本节知识点:1.编译过程的简介:   预编译:a.处理所有的注释,以空格代替。b.将所以#define删除,并展开所有的宏定义,字符串替换。c.处理条件编译指令#if,#ifdef,#elif,#else,#endifd.处理#include,并展开被包含的文件,把头文件中的声明,全部拷贝到文件中。e.保留编译器需要使用的#pragm

2013-09-03 13:22:43 1084

转载 C语言深度解剖读书笔记(2.字符的技巧)

本节接触了,C语言中的三大蛋疼:符号优先级  ++i顺序点  贪心法  (其实这里面好多都是跟编译器有关的,而且有好多问题都是可以通过良好的编程习惯避免的)本节知识点:1.注释问题:    注释不能把关键字弄断,如:in/*注释*/t    注释不是简单的剔除,而是使用空格替换    编译器认为双引号括起来的内容都是字符串,双斜杠也不例外。如:char *p

2013-09-03 13:21:06 994

转载 C语言深度解剖读书笔记(1.关键字的秘密)

开始本节学习笔记之前,先说几句题外话。其实对于C语言深度解剖这本书来说,看完了有一段时间了,一直没有时间来写这篇博客。正巧还刚刚看完了国嵌唐老师的C语言视频,觉得两者是异曲同工,所以就把两者一起记录下来。等更新完这七章的学习笔记,再打算粗略的看看剩下的一些C语言的书籍。本节知识:1.c语言中一共有32个关键字,分别是:auto、int、double、long、char、short、

2013-09-03 13:19:13 1277

原创 C++结构体:默认构造函数,复制构造函数,重载=运算符

C++结构体提供了比C结构体更多的功能,如默认构造函数,复制构造函数,运算符重载,这些功能使得结构体对象能够方便的传值。比如,我定义一个简单的结构体,然后将其作为vector元素类型,要使用的话,就需要实现上述三个函数,否则就只能用指针了。#include #include using namespace std;struct ST{ int a;

2013-08-29 17:22:07 37729 2

转载 MySQL存储引擎:InnoDB和MyISAM的差别/优劣评价/评测/性能测试

InnoDB和MyISAM简介MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的 顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物

2013-08-29 00:03:40 7518

原创 C++: Accessing the virtual table directly(盗版)

This post is not intended for beginners. To understand the content of this topic, you need to have basic understanding of what virtual functions are.We know that the run time binding or virtual

2013-08-27 23:53:55 1144

原创 回调函数的分析及应用

1 什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户

2013-08-27 23:34:52 1690

转载 设计模式六大原则:迪米特法则

定义:一个对象应该对其他对象保持最少的了解。问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。解决方案:尽量降低类与类之间的耦合。         自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。低耦合的优点不言而喻,但是怎么

2013-08-18 12:59:57 907

转载 设计模式六大原则:接口隔离原则

定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:

2013-08-18 12:56:53 1097

转载 设计模式六大原则:依赖倒置原则

3.1 依赖倒置原则的定义     依赖倒置原则(Dependence Inversion Principle,简称DIP)这个名字看着有点别扭,“依赖”还“倒置”,这到底是什么意思?依赖倒置原则的原始定义是:High level modules should not depend upon low level modules. Both should depend upon abstra

2013-08-18 00:19:42 1850

转载 设计模式六大原则:里氏代换原则

2.1 爱恨纠葛的父子关系     在面向对象的语言中,继承是必不可少的、非常优秀的语言机制,它有如下优点:代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;提高代码的重用性;子类可以形似父类,但又异于父类,“龙生龙,凤生凤,老鼠生来会打洞”是说子拥有父的“种”,“世界上没有两片完全相同的叶子”是指明子与父的不同;提高代码的可扩展性,实现父类的方法就可以“为所欲为”了,君不

2013-08-18 00:16:26 1273

转载 设计模式六大原则:单一职责原则

1.1 我是“牛”类,我可以担任多职吗     单一职责原则的英文名称是Single Responsibility Principle,简称是SRP。这个设计原则备受争议,只要你想和别人争执、怄气或者是吵架,这个原则是屡试不爽的。如果你是老大,看到一个接口或类是这样或那样设计的,你就问一句:“你设计的类符合SRP原则吗?”,保准对方立马“萎缩”掉,而且还一脸崇拜地看着你,心想:“老大确实英

2013-08-18 00:05:05 1198

转载 设计模式六大原则:开闭原则

定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。         开闭原则是面

2013-08-16 14:41:23 1038

原创 开放-封闭原则

开放-封闭原则(The Open-Closed Principle,简称OCP)或者叫开-闭原则,意思是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。即对于扩展时开放的(Open for extension),对于更改是关闭的(Closed for modification)。       这样的设计可以实现面对需求的不断改变却可以保持相对稳定,从而使得系统可以在第一个版本以

2013-08-16 14:19:09 1469

原创 程序员要要养成自己的习惯

作为一个程序员一定要有自己的习惯。        一旦形成一种的良好的习惯时,会给自己在以后的工作中带来很多便利。        这些习惯可以很具体,大到平时开发中遇到的系统架构的掌握和积累,例如程序开发中自己写的一些功能函数,慢慢的积累形成一个属于自己的lib库,逐渐成熟稳定;小到一些编程细节,例如平时自己在获取文件夹路径的时候会不会给文件的路径最后加上一个“\”作为路径的结尾。诸如此类

2013-08-16 12:45:04 1404 2

转载 cdecl、stdcall、fastcall函数调用约定区别

在C语言中,假设我们有这样的一个函数:    int function(int a,int b)  调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传

2013-08-15 00:20:35 986

原创 C++中各种数据类型的大小

数据存储是以“字节”(Byte)为单位,数据传输是以“位”(bit)为单位,一个位就代表一个0或1(即二进制),每8个位(bit)组成一个字节(Byte)。      今天在自己win32机器上对c++的数据类型的大小进行了一次测试,测试工具为VS2012。下面即为对应数据类型的大小sizeof(char)= 1sizeof(short)= 2sizeof(floa

2013-08-07 22:14:00 5163 1

转载 理解A*寻路算法具体过程

理解A*寻路算法具体过程        这两天研究了下 A* 寻路算法, 主要学习了这篇文章, 但这篇翻译得不是很好, 我花了很久才看明白文章中的各种指代. 特写此篇博客用来总结, 并写了寻路算法的代码, 觉得有用的同学可以看看. 另外因为图片制作起来比较麻烦, 所以我用的是原文里的图片.        当然寻路算法不止 A* 这一种, 还有递归, 非递归, 广度优

2013-08-07 12:00:55 1003

转载 快速排序

快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 算法过程:设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数

2013-08-07 11:00:23 904

转载 四人过桥

微软的过桥问题说的是4个人在晚上过一座小桥,过桥时必须要用到手电筒,只有一枚手电筒,每次最多只可以有两人通过, 4个人的过桥速度分别为1分钟、2分钟、5分钟、10分钟,试问最少需要多长时间4人才可以全部通过小桥?这个问题如果用图论来建模的话,就可以以4个人在桥两端的状态来作为节点来构造一个有向图,如下图所示,以已经过桥了的人的状态作为图的节点,初始时没有人过桥,所以以空表示,第一轮有两个人

2013-08-07 00:44:16 1236

转载 如何分配内存 内存碎片处理技术

内存碎片是一个很棘手的问题。如何分配内存决定着内存碎片是否会、何时会、如何会成为一个问题。  即使在系统中事实上仍然有许多空闲内存时,内存碎片还会最终导致出现内存用完的情况。一个不断产生内存碎片的系统,不管产生的内存碎片多么小,只要时间足够长,就会将内存用完。这种情况在许多嵌入式系统中,特别是在高可用性系统中是不可接受的。有些软件环境,如 OSE 实时操作系统已经备有避免内存碎片的良好工具

2013-08-06 22:43:31 1727

转载 【C++进阶】C++函数调用过程深入分析

C++函数调用过程深入分析0. 引言  函数调用的过程实际上也就是一个中断的过程,那么C++中到底是怎样实现一个函数的调用的呢?参数入栈、函数跳转、保护现场、回复现场等又是怎样实现的呢?本文将对函数调用的过程进行深入的分析和详细解释,并在VC 6.0环境下进行演示。分析不到位或者存在错误的地方请批评指正,请与作者联系。  首先对三个常用的寄存器做一下说明,EIP

2013-08-06 21:36:30 1277 1

转载 strcpy,memcpy,memmove,memset,strncpy

strcpy,memcpy,memmove,memset,strncpy,一.函数分别介绍:1、memcpy:原型:extern void *memcpy(void *dest, const void *src, unsigned int count);用法:#include功能:由src所指内存区域复制count个字节到dest所指内存区域。说明:src和dest所指内存

2013-08-05 23:53:09 926

转载 什么时候要用虚析构函数?

什么时候要用虚析构函数?      通过基类的指针来删除派生类的对象时,基类的析构函数应该是虚的。否则其删除效果将无法实现。      一般情况下,这样的删除只能够删除基类对象,而不能删除子类对象,形成了删除一半形象,从而千万内存泄漏。原因:      在公有继承中,基类对派生类及其对象的操作,只能影响到那些从基类继承下来的成员。如果想要用基类对非继承成员进行操作,则要把基类的这个

2013-08-05 23:42:42 1724

转载 C++中参数传递方式讨论

众所周知,在C++中调用函数时有三种参数传递方式: (1)传值调用; (2)传址调用(传指针); (3)引用传递; 实际上,还有一种参数传递方式,就是全局变量传递方式。这里的“全局”变量并不见得就是真正的全局的,所有代码都可以直接访问的,只要这个变量的作用域足够这两个函数访问就可以了,比如一个类中的两个成员函数可以使用一个成员变量实现参数传递,或者使用static关键字定义,或者使

2013-08-05 23:01:53 2050

原创 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?

格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error! 注意事项:(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在

2013-08-04 15:49:06 931

原创 变量定义和声明的区别(整理)

变量的声明有两种情况:1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。2、另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。声明是向编译器介绍名字--标识符。它告诉编译器“这个函数或变量在某处可找到,它的模样象什么”。而定义是说:“在这里建立变量”或“在这里建立函数”。它为名字分配存储空

2013-08-02 12:25:27 902

转载 字符串函数汇总

面试中常常会要求写一些基本的库函数,尤其以字符串库函数考的最多,所以本文汇总了一些常见的字符串库函数的实现。此外,把与内存相关的操作函数也汇总到了一起。Cpp代码  //求字符串长度  int strlen(const char *s) {      int n = 0;      while (*s++ != '\0')          n+

2013-07-31 13:34:36 816

原创 c++ 本地磁盘判断

c++对于磁盘有如下宏定义#define DRIVE_UNKNOWN 0#define DRIVE_NO_ROOT_DIR 1#define DRIVE_REMOVABLE 2#define DRIVE_FIXED 3#define DRIVE_REMOTE 4#define DRIVE_CDROM 5#define DRIVE_RAM

2013-07-30 10:03:13 4008 3

C/C++经典面试题

涉及到IT行业最经常问的50大C++面试题 里面有批注和解释 适合巩固基础知识

2013-10-18

C++ 冒泡排序

C++ 实现的冒泡排序算法,解压后main.cpp里面的代码既是冒泡排序的源代码

2012-12-15

线索二叉树的构建与遍历

线索二叉树 先序构建 中序线索化 中序遍历

2010-04-30

空空如也

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

TA关注的人

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