自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张勤一

echo "are you happy ?" | cut -d ' ' -f 3 | tr -d '\r\n '

  • 博客(160)
  • 资源 (11)
  • 问答 (2)
  • 收藏
  • 关注

原创 C语言--测试电脑存储模式(大端存储OR小端存储)

相信大家都知道大端存储和小端存储的概念,这在平时,我们一般不用考虑,但是,在某些场合,这些概念就显得很重要,比如,在 Socket 通信时,我们的电脑是小端存储模式,可是传送数据或者消息给对方电脑时,恰巧,对方的电脑是大端存储,那么,如果你直接的传输,那么对方解析的肯定就是乱码了,所以,我们需要在传输数据之前转换成网络顺序。     这篇文章的目的不是解决上述的处理字节顺序的问题,而是,用C语言实

2013-07-29 12:16:44 5090 12

原创 为学Android,我看了这些书

刚刚开始新的学习生活时,很容易走错方向,然后,这意味着不知道该学习什么,不知道该怎样学习,很显然,我写下这句话意味着我走过这样的路,为此,就付出了不小的代价,浪费了很多时间。      这篇文章当然不是回忆那些走错了的路,而是写下我学习Android的历程,当然,可能不一定适合每一个人,但是,个人认为这条路还算走的通。      首先,移动开发现在是很火的方向,做这方面的人很多,如果,你也想学这个

2013-07-26 09:26:52 14257 26

原创 为学Linux,我看了这些书

去年开始,抱着学习的态度开始了我的Linux学习,到现在,差不多一年了,收获很多,不敢说精通Linux,但是,还是对得起“略懂”这两个字的。这一年里我看了很多书,细细数下,大概15本左右,其中包含了两个方面,一个是Android,另一个就是Linux。当然,在学习之初,遇到了不少瓶颈,在这里,还要感谢师兄师姐的指导。写这篇文章的目的有两个: 1.分享自己的学习经验 2.记录下我的学习历程

2013-07-22 10:20:04 22391 127

转载 C++_友元函数

1、为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率      具体来说:为了使其他类的成员函数直接访问该类的私有变量      即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数      优点:能够提高效率,表达简单、清晰      缺点:友元函数破环了封装机制,尽量不使用成员函数,除非不得已的情况下才使用友元函数。2、什么时候使用友元函数:

2013-07-31 20:24:06 1689

转载 浅谈C++中的友元关系

在封装中C++类数据成员大多情况是private属性;但是如果接口采用多参数实现肯定影响程序效率;然而这时候如果外界需要频繁访问这些私有成员,就不得不需要一个既安全又理想的“后门”——友元关系;C++中提供三种友元关系的实现方式,友元函数、友元成员函数、友元类。友元函数:既将一个普通的函数在一个类中说明为一个friend属性;其定义(大多数会访问该类的成员)应在类后;友元成员函数:既然是成员函数,

2013-07-31 20:23:14 1319

转载 C++中友元详解

问题的提出  我们已知道类具备封装和信息隐 藏的特性。只有类的成员函数才能访问类的私有成员,程式中的其他函数是无法访问私有成员的。非成员函数能够访问类中的公有成员,但是假如将数据成员都定义 为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,特别是在对某些成员函数多次调用时,由于参数传递,类型检查和安全性检查等都需要时间开 销,而影响程式的运行效率。  为了解决上述问题,提出一种使用友元的

2013-07-31 20:22:01 1476

原创 Linux下使用Eclipse开发C/C++程序

相信好多人和我一样困惑,在网上查各种安装配置方法,可是试了所有的方法也还是没有成功,其实,这个并不能怪网上的方法不对,可能只是你没有点击一个键的原因,下面,我就来讲下怎样使用Eclipse开发C/C++程序。      首先,你需要安装JDK,这个没什么好说的,因为,方法和步骤实在是太多了,那么,我就不在这废话了。      接下来,你需要去elcipse官网下载Eclipse IDE for C

2013-07-31 16:07:47 5277 1

原创 UNIX/LINUX程序设计教程(1)-- 获取系统信息

1.主机标识每一台机器都有一个主机名,主机名由系统管理员指定,在网络中主机名可能是一个网络域名。函数 gethostname() 和 sethostname() 可以用来获取和设置主机名。函数原型如下所示:#includeint gethostname(char *name, size_t size);int sethostname(const char *name, size_t leng

2013-07-31 11:15:29 2789

转载 C语言--指针函数和函数指针

指针函数和函数指针指针函数其实是一个简称,是指带指针的函数,它本质上是一个函数,只是返回的是某种类型的指针。其定义的格式为:类型标识符 *函数名(参数表) 函数指针,从本质上说是一个指针,只是它指向的不是一般的变量,而是一个函数。因为每个函数都有一个入口地址,函数指针指向的就是函数的入口地址。其定义的格式为:类型标识符 (*指针变量名)(形参列表) 接下来,通过分析下面的代码加深读者对指针函数和函

2013-07-29 18:40:57 1556

转载 数组指针与指针数组的区别

一、数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a;        //将该二维数组的首

2013-07-29 16:29:14 994

原创 C语言--对数组地址的解析

在C编程中,我们进程会用到数组,这看起来很简单,因为,数组就是存储相同类型元素的集合嘛,不过,当你还没考虑到数组的地址问题时,一切都是简单的,如果你接触了数组中的地址概念,也许你会改变你的想法。下面,我列出几个例子,看看这些例子输出的会是什么:       首先给出数组的定义:int a[10];    1.  cout    2. cout    3.  cout    4.  cout    

2013-07-29 13:54:03 1612

转载 C语言中extern关键字的使用

C语言中extern关键字的使用,直接上代码。file1.c文件#include extern long power(int); int A = 2; int main() { int n = 10 ,total; total = power(n); printf("total = %d",total);

2013-07-29 13:19:02 1164

转载 浅谈C语言 extern 指针与数组

/* * d.c * * Created on: Nov 15, 2011 * Author: root */#include "apue.h"int a[] = {3,2};void hello(){ printf("d.c %d",a);}/* ======================================================

2013-07-29 13:01:45 1534

转载 Java:使用匿名内部类在方法内部定义并启动线程

下面的代码展示了在一个方法中,通过匿名内部类定义一个Thread,并Override它的run()方法,之后直接启动该线程。这样的代码可用于在一个类内部通过另起线程来执行一个支线任务,一般这样的任务并不是该类的主要设计内容。public class StartFromMethod { private Thread t; private int number; private

2013-07-28 14:56:50 4447

转载 java中的匿名内部类总结

匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法abstract class Person { public abstract void eat();} class Child extends Person { public

2013-07-28 14:42:34 1370

转载 C语言中堆和栈的区别

一.前言:C语言程序经过编译连接后形成编译、连接后形成的二进制映像文件由栈,堆,数据段(由三部分部分组成:只读数据段,已经初始化读写数据段,未初始化数据段即BBS)和代码段组成,如下图所示:1.栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等值。其操作方式类似于数据结构中的栈。2.堆区(heap):一般由程序员分配释放,若程序员不释放,则可能会引起内存泄漏。注堆和数据结构中的

2013-07-28 12:19:13 1252

转载 C语言中volatile关键字的作用

一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变

2013-07-28 12:15:41 1090

原创 C语言--const修饰指针解析

这种例子在我们平时编程时可能会很少用,但是在面试时被问的可能性就很大了。用const修饰指针,常见的情况可以分为四种: 1.const int *p; // p 可变,p 指向的对象不可变 2.int const *p; // p 可变,p 指向的对象不可变 3.int *const p; // p 不可变,p 指向的对象可变 4.const int *const p; //指针p 和p 指向的对

2013-07-27 21:39:41 1587

原创 C语言--返回局部变量的地址

我们可能会经常写出这样的代码:int  add(int  a , int  b){ return  a + b;}当然,这是合理的写法,使函数的返回值为 int ,所以,调用函数后会返回一个int型的值。今天,我想讨论的问题当然不是这个,请看下面这段代码:char* Func_1(void){ char str[30] = "Bruce"; cout return str;     //????

2013-07-27 13:02:36 5827

转载 浅谈java异常

一. 异常的定义在《java编程思想》中这样定义 异常:阻止当前方法或作用域继续执行的问题。虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常。绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败。之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意。记得当初学习java的时候,异常总是搞不太清楚,不知道这个异常是什么

2013-07-26 23:11:04 1501 4

转载 java中重载与重写的区别

首先我们来讲讲:重载(Overloading)    (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。    (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方

2013-07-26 21:08:05 1659

转载 C语言--枚举

在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任

2013-07-26 16:08:26 1356 2

转载 C语言--共用体

定义使几个不同的变量共占同一段内存的结构称为 “共用体”类型的结构. 定义共用体类型变量:union 共用体名              {                                  成员表列                }变量表列; union data                         { int i;                          

2013-07-26 16:02:27 1477

转载 C语言--结构体

结构体是由不同数据类型组织在一起而构成的一种数据类型,因而一个结构体有多个数据项,每个数据项的类型可不相同。一、结构体的说明及变量的定义1.结构体类型的说明由于结构体类型不是C语言提供的标准类型,为了能够使用结构体类型,必须先说明结构体类型,描述构成结构体类型的数据项(也称成员),以及各成员的类型。其说明形式为:     struct  结构体名       {  数据类型    成员1;   数

2013-07-26 15:58:26 1407

转载 C++虚函数表解析

前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。  关于虚函数的使用方法,我在这里不做

2013-07-26 10:48:15 1334

转载 C++之多态性与虚函数

面向对象程序设计中的多态性是指向不同的对象发送同一个消息,不同对象对应同一消息产生不同行为。在程序中消息就是调用函数,不同的行为就是指不同的实现方法,即执行不同的函数体。也可以这样说就是实现了“一个接口,多种方法”。  从实现的角度来讲,多态可以分为两类:编译时的多态性和运行时的多态性。前者是通过静态联编来实现的,比如C++中通过函数的重载和运算符的重载。后者则是通过动态联编来实现的,在C++中运

2013-07-25 20:23:19 1521

转载 Java中Integer和String浅谈

Java中的基本数据类型有八种:int、char、boolean、byte、long、double、float、short。Java作为一种面向对象的编程语言,数据在Java中也是一种对象。我们用基本数据类型创建的对象,如 int x = 0;这里的x只有值这个属性,没有(或者很少)有其他的方法。这在一些需要对数据进行操作时变的很不方便,程序员需要自己编写很多代码去实现一些常用的功能,增加了工作量

2013-07-25 16:09:28 2362

转载 Java之泛型编程

1.概念  泛型就是参数化类型。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。2.案例1)先看下面案例://不适用泛型编程Apple app0=new Apple();Apple app1=new Apple(); List li = new ArrayList();li.add(app0); //添加非需要类型时发现不了错误。

2013-07-25 16:05:03 1403

转载 #pragma once

【1】#pragma once这个宏有什么作用?为了避免同一个文件被include多次,C/C++中有两种宏实现方式:一种是#ifndef方式,一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别,但两者仍然有一些细微的区别。【2】两者的使用方式有何区别?示例代码如下://方式一:#ifndef __SOMEFILE_H__#define __SOM

2013-07-25 11:00:05 1689

转载 木马和病毒的区别

虽然木马和病毒的危害性难分伯仲,甚至现在已经把木马作为病毒的一种进行归类,但实际上在互联网普及之前,木马和病毒是并驾齐驱的。早期的木马和病毒的主要区别,就是病毒具有自传播性,即能够自我复制,而木马则不具备这一点。这主要是因为,病毒的创造者当时主要是为了炫耀自己天才的创意,而可以自我复制传播并做出不可思议的效果(花屏、死机、甚至仅仅是一些有趣的画面),仿佛具有生命的电脑病毒,极大地满足了他们的成就感

2013-07-25 10:38:16 5004

转载 java设计模式---访问者模式

Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Visitor(访问者)模式是比较常用的一个模式.   应用场景:对于某对象结构中各元素的操作。如果需要在不修改各元素类的前提下定义作用于这些元素的新操作,也就是动态的增加新的方法

2013-07-24 21:32:46 1469

转载 java设计模式---访问者模式

访问者模式实现的基本思路:  定义一个就接口来代表要新加入的功能,为了通用,也就是定义一个通用的功能方法来代表新加入的功能。在对象结构上添加一个方法,作为通用的方法,也就是可以代表要添加的功能,在这个方法中传入具体的实现新功能的对象。在对象实现的具体实现对象中实现这个方法,回调传入具体的实现新功能的对象,就相当于调用到新功能上了。访问者的功能:能给一系列对象透明第添加新功能,从而避免在维护期间对一

2013-07-24 20:22:05 1030

转载 java设计模式---迭代器模式

定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。类型:行为类模式类图:       如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模式,而是迭代器模式,先来看一段代码吧:public static void print(Collection coll){ Iterator it = coll.iterator();

2013-07-24 17:06:47 1231

转载 java设计模式---装饰器模式

装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。具体被装饰者和抽象装饰类都继承于抽象被装饰者类,继承的是类型,而不是行为。行为来自装饰者和基础组件,或与其他装饰者之间的组合关系。装饰者通常是用其他类似于工厂或生成器这样的模式创建的。           具体例子抽象被继承者类:Beverage.javapackage com.designpattern.de

2013-07-24 16:17:32 1087

转载 java设计模式---装饰器模式

Decorator装饰器,顾名思义,就是动态地给一个对象添加一些额外的职责,就好比为房子进行装修一样。因此,装饰器模式具有如下的特征:它必须具有一个装饰的对象。它必须拥有与被装饰对象相同的接口。它可以给被装饰对象添加额外的功能。用一句话总结就是:保持接口,增强性能。装饰器通过包装一个装饰对象来扩展其功能,而又不改变其接口,这实际上是基于对象的适配器模式的一种变种。它与对象的适配器模式的异同点如下。

2013-07-24 16:13:20 1131

转载 java设计模式---命令模式

1.概念  将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参数化。用于“行为请求者”与“行为实现者”解耦,可实现二者之间的松耦合,以便适应变化。分离变化与不变的因素。   在面向对象的程序设计中,一个对象调用另一个对象,一般情况下的调用过程是:创建目标对象实例;设置调用参数;调用目标对象的方法。但在有些情况下有必要使用一个专门的类对这种调用过程加以封装,我们把这种专门的类称作co

2013-07-24 15:22:38 1072

转载 java设计模式---命令模式

Command 命令模式Intent:Encapsulate a request as an object , thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.瞎谈:其实很好理解。命令模式,关心的就是命令(

2013-07-24 14:38:48 1259

转载 java设计模式---策略模式

1,什么是策略模式?策略模式,又叫算法簇模式,就是定义了不同的算法族,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 2,策略模式有什么好处?     策略模式的好处在于你可以动态的改变对象的行为。 3,设计原则       设计原则是把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口(c++z中可以用虚类),然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意

2013-07-24 10:56:10 1183

转载 java设计模式---策略模式

策略模式(Strategy Pattern)体现了两个非常基本的面向对象设计的原则      1、封装变化的概念;      2、编程中使用接口,而不是对接口的实现。  策略模式定义了一个共同的抽象算法接口,其子类实现这个接口定义的方法,并且都有各自不同的实现,这些算法实现可以在客户端调用它们的时候互不影响的变化。   子算法之间是弱连接的关系,提高了软件的可扩展性与可重用性。 策略模式组成   

2013-07-24 10:46:52 1158

转载 java设计模式---策略模式

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets the algorithm v

2013-07-24 10:26:52 1177

C语言排序算法

这里包含了一些面试中会遇到的算法,个人感觉实现比较简单,浅显易懂

2014-10-23

面试题目集锦--二叉树

面试的时候,我们会经常碰到二叉树之类的题目,这里,我对二叉树算法进行了许多的总结,希望能对一两位朋友有帮助

2014-10-22

链表算法集锦

这是一个关于链表算法的类,里面收集的算法还是比较全面的,当然,由于本人水平有限,可能在算法中存在一些错误,欢迎大家指正

2014-10-21

适配器模式

适配器模式设计,这里用的用例代码是Java,有助于更好的学习设计模式

2013-07-17

教师信息和学生成绩管理系统

这是一个管理系统,实现教师信息和学生的成绩管理

2013-03-28

二维码生成

这个例子实现的是使用Android代码结合Google提供的开源项目ZXing实现二维码的生成,其中包含条形码的生成和解码

2013-02-16

一个Demo学习Android中所有的Service

这个例子包含了Android开发中常用到的Service,是学习Service的典例

2013-02-11

Android所有组件学习

这个例子几乎包含了Android内的所有组件,是安卓初学者学习的典例

2013-02-11

100多个Android Demo的集合

几乎涵盖Android的所有组件,来自“安卓巴士”,感谢作者的奉献

2013-02-11

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

TA关注的人

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