- 博客(26)
- 资源 (7)
- 收藏
- 关注
原创 用bitmap做排序
每个bit位都有0和1这两个状态,与此同时对于动态分配的一块内存是由一串bit流表示的,如果将第n个比特位为1理解成int类型的数n当前是存在的。我们就有了一个大数处理的方法,这种方法不仅效率高,而且非常节约内存。 它有很多应用,目前我想到几个,下午先完成了用bitmap对整数数列排序的方法。要求:排序的数列必须是整数,数列中没有重复的数。 用到位域结构体,将每个字节都展现出
2013-03-30 17:13:24 1817
原创 写个堆排序,快速排序等一些排序算法
堆排序堆的存储数据结构就是一个数组,根据当前元素的index,可以计算出其父节点和子节点的index。首先要建立一个堆,具体过程是按照完全二叉树的方式不断插入新元素,并同时向上调整堆。然后做堆排序,具体过程是取出堆顶元素,和最后一个元素交换,同时做堆的向下调整。如果是大顶堆,每次都取出堆顶元素和最后一个元素交换,最后就能得到一个从小到到的排序。 代码如下: //大顶
2013-03-28 01:05:10 1122 2
原创 system与exec区别
1. linux 的fork()函数(1)头文件#include #include (2)函数原型pid_t fork(void);返回值:成功调用返回两个值,子进程返回0.父进程返回子进程的pid,出错返回-1(3)函数说明一个现有的进程可以调用fork产生一个新的子进程。子进程拥有父进程的数据段,堆栈等资源的一个副本。linux将父进程的地址空间复制给子进程
2013-03-25 21:13:34 3795
原创 最近写的一个makefile,可以配置编成elf,静态库,动态库
#environmentSHELL=/bin/bashMAKE=make#compilerCC=gccAR=arCR=cr#directoryMAKE_DIR=$(PWD)SRC_DIR=$(MAKE_DIR)/src/OBJ_DIR=$(MAKE_DIR)/obj/LIB_DIR=$(MAKE_DIR)/lib/INCLUDE_DIR=$(MA
2013-03-19 23:59:08 2279
原创 报错总结
invalid conversion from `const void*' to `void*'使用memcpy()时将一个const指针传入导致错误。 啊,C++是支持指定类型转换的,用const_cast这个类型转换运算符就能实现const指针转换成非const指针,const引用转换成非const引用。例如:class A{public: int
2013-03-10 09:59:15 1629
原创 在linux上开启一个socket服务(一)
之前写过一个socket的服务程序,只使用了accept进行处理,缺点是程序是阻塞的。总结当时的思路是:用listen监听请求,循环accept得到客户端句柄。为了实现多客户端共享该服务,我开辟了一个用于保存客户端句柄的数组,并为每个请求建立一个线程去处理。值得注意的是需要考虑多线程的同步与互斥。主线程A用于填充数组,由主线程开启的线程B负责循环读取数组,当数组有元素时会为客户端句柄创建处
2012-05-07 23:12:40 4990
原创 日志系统(二)改进与应用
上次简单地把日志系统从windows上移植到linux中,并修复其中bug,使其功能基本可行。现在我又做了一个小小的socket应用程序,将日志系统嵌入进去,基本上能使用,但仍然存在不足,经过一系列修复后,自我感觉算是能小用一把了。 日志系统的改进:1. 用锁机制实现了多线程对日志接口的异步调用。2. 增加根据日志等级输出打印信息的功能,外部应用程序能控制日志打印的等级。3
2012-04-18 23:52:01 1076
原创 Log日志系统(一)
前一段时间在windows上开发出一个小小的日志系统,能够记录代码中的打印信息。思路是:提供一个对外的打印接口,用户可以格式化输入需要打印的信息,最后信息记录在文件中。要求:1. 用户可以不同级别的信息,如:FATAL, ERROR, DEBUG, INFO, VERBOSE2. 用户可以输入任意类型的数据,如%d, %c, %s等。3. 用于记录用户的打印的文件大小不是无限大
2012-04-07 19:05:55 2919
原创 Android中的状态机(续)
上周有点累,这次终于把未完成的代码给写完了,并调试完毕。 代码仍有待改进的地方:1. 内部类的使用,提高代码的隐藏性以及类之间的密切关联程度(外围类与内部类之间的互访问)。2. 其它的,希望大家多多提出建议。 联系 QQ 402320131 上次承诺要谈谈
2011-10-17 23:49:01 2826
原创 Android中的状态机 机制
前面说过消息注册机制是MessageHandler的一个应用,它的好处就是能在程序中自如地控制消息注册和消息发送两个步骤。 但是很多情况下,问题的解决是在很多个环节完成的,每个环节理解成特定的状态,在每个状态下都会有新消息的发送或者新状态的切换。那么设计就需要考虑如何将M
2011-10-13 00:25:44 3199 2
原创 Android中的消息注册Registrant机制
前面说过MessageHandle机制,它保证了android上层代码线程间的通信。 消息注册机制更加丰富了MessageHandle的流程,它把过程严格阶段化了,分成消息注册和通知消息处理两个部分,让人一目了然。 消息注册机制的总体思想是:一个对象中开辟一个空
2011-10-12 00:25:13 6273
原创 Android中的MessageHandler机制二
昨天写的程序有点差强人意,既然是这个机制是多线程操作的,就要多用用线程的概念。准备知识:1. obj.notify() 与 obj.wait()分别表示:释放等待队列中等待在obj对象上的线程;当前线程因需要等待obj对象而进入等待队列 2. Thre
2011-10-09 23:41:41 1935
原创 Android中的MessageHandler机制一
总体思想就是两个(多个)线程共享一块存储区域,它们并发地操作这块内存。 下面是我自己初步写的模拟程序,有需要程序者可以联系我QQ402320131哈~:这里仅贴上Hander, HandlerThread, Looper2 package com.z
2011-10-08 22:55:52 1108
原创 面向对象vs非面向对象
<br />非面向对象更关注功能,它将一个大的问题细分成很多小功能,每个功能就表现为一个函数,通过函数之间的相互连接,完成问题的求解。使用这种功能分解方式编程会出现一个问题:当需求发生改变时,必须要修改某个函数或模块,模块的变化同时会引起其他依赖该模块的程序的正常运行,因此带来了程序不易维护和扩展的缺点。<br /> <br />面向对象编程用对象封装解决了上面的问题。利用面向对象的基本特征,并灵活使用设计模式,能给程序带来良好的可复用性、可扩展性以及可维护性。<br /> <br />面向对象有4个主要特
2011-02-17 22:11:00 1678
转载 JAVA之——GC
<br />摘要:GC采用有向图方式记录和管理堆中的所有对象,通过这种方式确定哪些对象是可到达的,哪些是不可到达的。对于不可到达的对象,GC有责任释放其内存空间,但是并非立即释放。对于不同的JVM,会采用不同的回收算法。本文主要从以下几个方面介绍了GC:(1)增量式GC;(2)finalize函数;(3)强引用与弱引用;(4)JAVA编码在GC方面的注意问题。<br /> <br />(1)增量式GC。有这样的事实,GC在JVM中是由一个或一组进程实现的。那么GC在运行的时候就会占用相应的CPU。这时就会出
2011-02-11 18:33:00 619
原创 JAVA之——List,Set,Map
<br />java集合类主要分为以下三类:<br />第一类:Array、Arrays <br />第二类:Collection :List、Set<br />第三类:Map :HashMap、HashTable <br /> <br />覆盖对象的HashCode()与equals()方法时遵守原则:equals()相等的两个对象,其hashCode值一定相等;hashCode相等的两个对象,equals()不一定相等。<br />谈到hashCode()与equals()时,不得不提到它们在HashS
2011-02-10 18:07:00 834
原创 JAVA之——字符串
<br />摘要:JAVA中的字符串对象可以在两个地方创建,一个是在字符串长量池中,另一个是在堆中。+号表示两个字符串的连接,生成的新字符串对象是在堆中创建的。<br /> <br />先来看一个例子,代码如下:Java代码 public class Test { public static void main(String[] args) { String str = "abc"; String str1 = "abc"; Strin
2011-02-10 00:58:00 585
转载 C语言之——static
<br />在摘抄之前,我先总结下:<br />静态局部变量,非静态局部变量(自动变量)-->区别在于生命周期<br />静态全局变量,非静态全局变量(外部变量)-->区别在于作用范围<br />静态函数(内部函数),非静态函数(外部函数)-->区别在于作用范围<br /> <br /> <br />用static 声明的变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别<br />一.静态局部变量<br />静态局部变量属于静态存储方式,它具
2011-02-08 00:28:00 2542
原创 C语言之——Binary Tree
<br />算是对C语言的一次总结复习了,在参考一篇二叉树的文章后,自己实现了二叉树的一系列操作。时间有点晚了,就贴上参考文章和代码吧,感觉这里递归思想用的很多,我全部用递归写的。<br /> <br />http://cslibrary.stanford.edu/110/BinaryTrees.html<br /> <br />#define NULL 0<br />#include <stdlib.h><br />struct node{<br /> int data;<br /> struct nod
2011-02-07 23:54:00 1595
原创 C语言之——strlen()与sizeof()
<br />strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'/0'为止,然后返回计数器值。<br /> <br />函数原型:extern unsigned int strlen(const char *s);<br />头文件:string.h<br /> <br />与sizeof()的区别:<br />strlen(char *)函数求的是字符串的实际长度,它求得方法是从字符串首地址开始扫描
2011-02-01 17:56:00 527
原创 怎样追MM
<br />最近没干些正经事,一天时间多半在睡觉和看电视剧,自我慰藉为轻松和放纵自己一段时间。但我也越来越体会到内心的真正放下才是真正的放松。看来还是要为以后上班做些必要的准备。<br /> <br />刚才休闲看了一篇关于如何追MM的文章,感觉对自己有用,决定记录下来,以备以后以身试法。到现在还没女朋友呢,看来是要学习下这个秘籍了。<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br />引导语:有一女生说,任何一个女孩子在被人追的时候,心理都是很复杂的
2010-12-30 21:57:00 674
原创 虚度的定义
<br />刚才看到李开复的博客写关于虚度年华的教诲,记录一下偶像的格言。<br /> <br />人的一生两个最大的财富是:我们的才华和我们的时间。才华越来越多,时间越来越少。我们的一生可以说就是用时间换取才华。如果一天天过去了,时间不断的减少,而才华却没有增加,那就是虚度了时光。——李开复<br /> <br />下面这个是我联想到的。<br />《钢铁是怎样炼成的》——奥斯特洛夫斯基<br />人最宝贵的是生命,<br />生命对每个人来说只有一次,<br />一个人的生命应该是这样度过的:<br /
2010-12-02 19:16:00 650
原创 C语言——源码、反码、补码
<br /> 大家都知道数据在计算机中都是按字节来储存了,1个字节等于8位(1Byte=8bit),而计算机只能识别0和1这两个数,所以根据排列,1个字节能代表256种不同的信息,即28(0和1两种可能,8位排列),比如定义一个字节大小的无符号整数(unsigned char),那么它能表示的是0~255(0~28-1)这些数,一共是256个数,因为,前面说了,一个字节只能表示256种不同的信息。别停下,还是一个字节的无符号整数,我们来进一步剖析它,0是这些数中最小的一个,我们先假设它在计算机内部就用8
2010-12-02 16:47:00 14595 3
原创 C语言——位运算
1. 基础知识运算符 含义 运算符 含义 & 按位与 ~ 取反| 按位或 ∧ 按位异或 >> 右移注意:(1)位运算符中除~以外,均为二目(元)运算符,即要求两侧各有一个运算量。(2)运算量只能是整型或字符型的数据,不能为实型数据。按位与的使用技巧:(1)清0. 若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其满足原来数中为1的位,新数中相应位为0.然后让二者进行&运算。(2
2010-12-02 14:42:00 778
原创 C语言——文件读写2
<br />ASCII文件和二进制文件的比较:<br />ASCII文件便于对字符进行逐个处理,也便于输出字符。但一般占存储空间较多,而且要花费转换时间。二进制文件把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放,一个字节并不对应一个字符,不能直接输出字符形式。<br /><br />根据文件类型的不同,C语言对文件的操作也不同。<br /><br /><br />1. 字符输入输出函数(fputc()和fgetc())<br /><br /> 函数调用:<br /> fputc
2010-12-01 22:59:00 957
原创 C语言——文件读写1
<br />1. printf()<br />是控制台格式化输入函数,用来向标准输出设备(屏幕)写数据。<br />printf()函数的调用格式为: printf("<格式化字符串>", <参量表>); <br />━━━━━━━━━━━━━━━━━━━━━━━━━━ <br /> 符号 作用 <br />────────────────────────── <br /> %d 十进制有符号整数 <br /> %u
2010-12-01 21:27:00 634
classloader
2010-08-31
struts经典案例--广告信息系统
2009-04-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人