代码改变世界

随笔档案-2012年03月

关于算法学习的总结和感悟(原创)

2012-03-26 22:43 by htc开发, 412 阅读, 收藏,
摘要: 时隔一年重读《算法导论》,去年读到了二叉查找树就搁浅了,今年从头捡起,希望能走的更远一些。算上大学时的数据结构与算法课,今年可以算是第三波学习攻势了。随着学习的深入,对算法的学习渐渐有了些自己的看法和感悟。一.为什么学习算法?记得初学算法时不明白为什么费力分析程序的执行步骤后,还要用公式表达出来并求极值。一遍遍的学习渐渐有了领悟:算法研究是用来做大事的!之所以分析效率还求极限,是因为各种算法和数据结构都要研究其在海量输入数据或最坏最不利的情况下的效率表现。如果只是我们每天乏味工作中那三两个数的排序,几十个数值对的哈希,那其实怎样实现都无所谓了。所以个人觉得,学习算法能提高分析代码、洞察效率的能 阅读全文

android发送含有附件的邮件

2012-03-26 22:23 by htc开发, 162 阅读, 收藏,
摘要: 如何在Android系统中发送带附件的电子邮件呢? 其实通过Intent可以很方便的发送Email,只需要短短10行代码就可以处理,这里Android开发网就以在sdcard上的android123.cwj文件为例,通过Intent来发送电子邮件。完整代码如下File file =new File("\sdcard\android123.cwj"); //附件文件地址Intent intent = new Intent(Intent.ACTION_SEND);intent.putExtra("subject", file.getName()); //in 阅读全文

C++构造函数语义——默认构造函数

2012-03-26 15:19 by htc开发, 188 阅读, 收藏,
摘要: 0、前言 《The C++ ARM》告诉我们:“默认构造函数会在需要的时候自动生成(被编译器)。”然后“在需要的时候”是一个很抽象的概念,本文主要描述的问题也正是这些需要的情况。 我们看看下面的代码片段:class Foo { public: int val; Foo *pnext; }; void foo_bar() { Foo bar; if (bar.val || bar.pnext) { cout << bar.val << endl; cout << bar.pnext << endl; } }用... 阅读全文

vim 高亮和自动缩进设置

2012-03-26 13:48 by htc开发, 229 阅读, 收藏,
摘要: 1、配置文件的位置在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件。2、设置语法高亮显示1) 打开vimrc,添加以下语句来使得语法高亮显示:syntax on2) 如果此时语法还是没有高亮显示,那么在/etc目录下的profile文件中添加以下语句:export TERM=xterm-color 3、设置Windows风格的C/C++自动缩进(添加以下set语句到vimrc中)1)设置(软)制表符宽度为4 阅读全文

javascript 俄罗斯方块 游戏

2012-03-25 21:42 by htc开发, 331 阅读, 收藏,
摘要: 0、前言 最近在玩js,感知js确是一个强大的脚本语言,加之html5这样一个准标准的推出,相信js在未来的web app中发挥的作用会越来越大。过去几年时间都在做后台方面的一些开发,很少会触及到web方面的开发,作为一名软件工程师,多补充一点新的知识,为自己充充电还是很有必要,且有趣的。一、游戏设计思想 是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。 在网页中设计这样一款游戏: 1.在界面 阅读全文

《算法导论》第12章 二叉查找树 (3)基数树

2012-03-25 13:38 by htc开发, 246 阅读, 收藏,
摘要: 基数树与二叉查找树和Trie树很相似。它像BST一样是二叉的,向左表示0而不是BST的小于,而向右则表示1而不是大于。它像Trie一样共享相同的结点来保存字符串中相同的前缀,从而节省了空间,但它不像Trie那样每个结点有很多孩子(可以是26个,表示a到z),它用来处理只包含0和1的字符串。基数树和Trie都用来保存和排列字符串,那么现在来看看字典序,关于字典序有两条规则:1. 字符串长度相同时,从左向右逐个字符比较。如011 < 100。2. 字符串长度不同时,长度长的在字典序中值更大。如100 < 1011。因此,根结点 < 左子树结点 < 右子树结点。#includ 阅读全文

《算法导论》第12章 二叉查找树 (2)查找、插入与删除

2012-03-25 11:48 by htc开发, 202 阅读, 收藏,
摘要: 1. 查找利用二叉查找树左小右大的性质,可以很容易实现查找任意值和最大/小值。BSTNode * bst_search(BSTNode *node, int key) { while (node && key != node->key) { if (key < node->key) node = node->left; else node = node->right; } return node; } BSTNode * bst_minimum(BSTNode *... 阅读全文

《算法导论》第12章 二叉查找树 (1)遍历

2012-03-24 22:49 by htc开发, 130 阅读, 收藏,
摘要: 二叉查找树的效率在二叉查找树中执行的基本操作的时间与树的高度成正比。最坏情况,树的高度是N,像链表一样,而较好情况高度是lgN。因此,树的高度是关键。下一章将要学习的红黑树是对二叉查找树的改进,通过保持树的高度从而保证红黑树上的操作有很好的效率。各种遍历算法中序遍历算法:子树根的关键字在输出时介于左子树和右子树的关键字之间。即按排列顺序输出树中的所有关键字。相应的,前序遍历就是子树根的关键字在左右子树之前输出。在后面的基数树中,前序遍历(而非中序遍历)是二进制串的排序输出。用递归方式可以很轻松地实现二叉树的遍历。// 包含卫星数据的二叉树结点定义 struct _BSTNode { ... 阅读全文

Iphone将window的跟视图替换成自定义的TabBar视图

2012-03-17 21:44 by htc开发, 253 阅读, 收藏,
摘要: 今天感觉很累了,就只将代码添出来,然后简单的做下说明:我们在项目中应该会遇到UINavigationController和UITabBarController不能同时存在于window视图,但是往往项目是这样的,先需要UINavigationController视图作为根视图(比如说登录界面,登录界面是不需要下面的tabbar的),然后登录进去后就需要一个UITabBarController视图,所以让人比较的纠结,下面将解决这个问题,先建一个基于Navigation的项目,项目会自动将UINavigationController加入window根视图中,然后在rootviewcontroll 阅读全文

web framework---cherrypy学习笔记1

2012-03-15 13:33 by htc开发, 378 阅读, 收藏,
摘要: 一、安装环境 cherrypy是基于python的web framework框架,首先需要安装python运行环境,笔者的环境是目前最新的python3.2,下载地址是www.python.org/download. cherrypy的下载地址是http://download.cherrypy.org/cherrypy/3.2.2/。 1.安装python 在安装完python之后,进入cmd命令行,验证是否安装成功,如图所示: 如果安装成功,在命令行中输入python可以看到python的版本号等基本信息,并进入python的交互输入界面。 如不出现该界面,首先考虑是否设置环境变量。比如:将 阅读全文

Iphone——使用SQLite3进行简单的数据库操作

2012-03-13 22:20 by htc开发, 238 阅读, 收藏,
摘要: 1.新建一个View-based Application项目。2.右击项目中Frameworks文件夹,在其中添加libsqlite3.dylib库。3.在.h头文件中声明一个类型为sqlite3的变量以及一个获取Documents文件夹下数据库文件目录的方法:#import <UIKit/UIKit.h> #import "sqlite3.h" @interface SQLiteDataBase : UIViewController { sqlite3 *db;//数据库对象 } -(NSString *)getDocumentsPath;//获取Docume 阅读全文

《算法导论》第11章 散列表 (3)开放寻址

2012-03-12 21:34 by htc开发, 177 阅读, 收藏,
摘要: 前一节介绍是最简单的冲突解决方法-链接法。开放寻址与链接法不同,所有元素都放在散列表内。在这种方法中,散列表可能会被填满。开放寻址不需要指针,只需要计算出要存取的各个槽。由于不用存储指针而节省的空间可以提供更多的槽。有三种技术常用来计算开放寻址法中的探查序列:线性探查、二次探查和双重探查。下面的实现中,三种方法的差别只在计算探查序列的那一行代码。#include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 20 typedef struct _Entry { char *key 阅读全文

Iphone UIPickerView的一个小例子

2012-03-12 20:30 by htc开发, 146 阅读, 收藏,
摘要: 1.在.h头文件里面添加以下代码:#import <UIKit/UIKit.h> @interface PickerView : UIViewController { IBOutlet UIPickerView * mypickerView;//连接的时候记得连上delegate IBOutlet UILabel * mylabel; NSArray *pickerViewData;//pickerView的数据 } @property(nonatomic,retain) UIPickerView * mypickerView; @property(no... 阅读全文

Iphone UIPageControl的简单使用

2012-03-12 17:37 by htc开发, 197 阅读, 收藏,
摘要: 我们需要用UIPageControl控制三个view,下面轻看步骤和代码:1.在.h头文件里面添加如下代码:#import <UIKit/UIKit.h> @interface PageControl : UIViewController { IBOutlet UIView *oneView;//第一个view IBOutlet UIView *twoView;//第二个view IBOutlet UIView *threeView;//第三个view IBOutlet UIPageControl * pageControl;//页面控制视图 ... 阅读全文

Iphone隐藏和显示TabBar的方法

2012-03-12 16:57 by htc开发, 182 阅读, 收藏,
摘要: 1.隐藏TabBar:- (void)hideTabBar { if (self.tabBarController.tabBar.hidden == YES) { return; } UIView *contentView; if ( [[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] ) contentView = [self.tabBarController.view.subviews objectAtIn... 阅读全文

Iphone之UIAlertView和UIActionSheet

2012-03-12 16:35 by htc开发, 172 阅读, 收藏,
摘要: UIAlertView和UIActionSheet的用法很简单,直接看代码:1.UIAlertView:.h头文件:#import <UIKit/UIKit.h> @interface DialogControl : UIViewController<UIAlertViewDelegate> {//注意要实现这个协议 UIAlertView *alertView1;//多个dialog的点击事件需要区分是哪一个dialog UIAlertView * al; } -(IBAction) showDialog; -(void)alertView:(UIAlertView 阅读全文

Intent在Android中的几种用法

2012-03-12 09:18 by htc开发, 168 阅读, 收藏,
摘要: 转自东方尚智沈大海csdn博客:如果是从BroadcastReceiver 启动一个新的Activity ,不要忘记i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); public class MyReceiver extends BroadcastReceiver{ public static final String action="acc";public void onReceive(Context context, Intent intent) {Intent i=new Intent(context,Receivered.clas 阅读全文

Android应用自动更新功能的实现!!! .(转自魏祝林博客)

2012-03-11 20:22 by htc开发, 235 阅读, 收藏,
摘要: 一个好的应用软件都是需要好的维护,从初出版本到最后精品,这个过程需要版本不停的更新,那么如何让用户第一时间获取最新的应用安装包呢?那么就要求我们从第一个版本就要实现升级模块这一功能。自动更新功能的实现原理,就是我们事先和后台协商好一个接口,我们在应用的主Activity里,去访问这个接口,如果需要更新,后台会返回一些数据(比如,提示语;最新版本的url等)。然后我们给出提示框,用户点击开始下载,下载完成开始覆盖安装程序,这样用户的应用就保持最新的拉。为了让大家容易理解,我像往常一样准备一个小例子,这里为了方便我就省去了和后台交互部分了。步骤分别如下:第一步:新建一个Android工程命名为:U 阅读全文

Iphone文件处理——使用属性列表(plist)

2012-03-11 14:48 by htc开发, 281 阅读, 收藏,
摘要: 先在Resources文件夹下新建一个Movies.plist文件,然后往里面添加一些内容。然后在viewDidLoad方法里面添加如下内容,这样就可以做到如果Documents文件夹下有Movies文件那么就将其内容打印出来,如果没有就修改Resources文件下的Movies文件,然后将其复制到Documents文件夹下:- (void)viewDidLoad //下面这两句获取Documents文件夹路径 NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomai... 阅读全文

Service与Activity通信

2012-03-11 14:41 by htc开发, 186 阅读, 收藏,
摘要: 一:思想在Android中,Activity的类可以看成是“可见”的逻辑处理类,拥有用户界面与用户进行互动操作,但如果这个Acitvity失去了“焦点”,则它的逻辑处理随即停止,那样如果我们需要进行一些后台类的操作,既与用户当前操作的焦点无关,可以在背后一直运行,为相应的应用程序提供服务,Android中这种逻辑处理类称为Service。一般继承自Service类。Service类是没有用户界面,但只作为一种后台逻辑处理,为表层Activity提供相应的服务操作,所以Service类处理后的数据要交回给Activity,Activity也要获得Service的服务逻辑,即两者之间要进行交互。而 阅读全文

《算法导论》第11章 散列表 (2)散列表

2012-03-10 23:05 by htc开发, 180 阅读, 收藏,
摘要: 用散列表来解决直接寻址表的那两个问题。但由此带来的散列值的碰撞问题。最简单的解决方法是链接法,以及下一节介绍的开放寻址法。链接法,即把散列到同一槽中的所有元素都放在一个链表中。链表是无序的,在查找一个元素时需要遍历链表。对于删除函数,假如参数是要删除的结点,那么如果链表是双向的,删除操作可以O(1)内完成。在下面的删除函数中,参数是关键字,这样更为方便。#include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 20 // 链表结点的定义 typedef struct _Li 阅读全文

Iphone文件处理——使用Documents文件夹

2012-03-10 22:32 by htc开发, 426 阅读, 收藏,
摘要: Documents文件夹是存储应用程序所用文件的地方,下面这个例子是向Documents文件夹添加一个txt文件并写入内容,然后读取这个文件的内容到屏幕上(在下面那幅图中,先在上面那个文本筐中输入内容,然后点击“点击保存到Documents文件夹中”按钮,这样就会将输入在文本筐中的内容保存到文件中,当点击“点击读取保存的文件内容”按钮时就会将文件中的内容显示在下面的文本标签中):1.新建一个View-based Application项目,在Interface Builder中添加一些视图控件,如下图所示:2.在.h文件中添加如下代码(控件和成员变量之间的连接就省了):#import < 阅读全文

Iphone屏幕旋转

2012-03-10 21:53 by htc开发, 276 阅读, 收藏,
摘要: 该示例是想在手机屏幕方向发生改变时重新定位视图(这里是一个button)1.创建一个View—based Application项目,并在View窗口中添加一个Round Rect Button视图,通过尺寸检查器设置其位置,然后单击View窗口右上角的箭头图标来旋转窗口方向,重新定位button,这两个位置随便定义,只要能区分在不同位置即可,记住这两个位置的数据,因为在代码里面会用到。2.在.h头文件里面定一个UIButton,并添加两个方法,后面会解释这两个方法:#import <UIKit/UIKit.h> @interface ChangeOrientation : UIV 阅读全文

Iphone表视图的简单操作

2012-03-10 21:14 by htc开发, 292 阅读, 收藏,
摘要: 下午到打了几个小时的球,回来洗了个燥,觉得全身都很舒服,感觉体内一周的毒素全部排除体外,哈哈,还是得多运动运动,特别是我们这些做程序员的,进入正题:1.创建一个Navigation—based—Application项目,这样Interface Builder中会自动生成一个Table View,然后将Search Bar拖放到表示图上,以我们要给表示图添加搜索功能,不要忘记将Search Bar的delegate连接到File‘s Owner项,然后将Search Bar与searchBar变量连接。2.在Resources文件夹下创建一个Movies.plist文件,然后为该文件添加一些数 阅读全文

Iphone在ScrollView下点击TextField使文本筐不被键盘遮住

2012-03-10 14:07 by htc开发, 274 阅读, 收藏,
摘要: 今天星期六,一觉睡到十一点,本来还想睡的,想起还要写博客,就起来了,唉,好不容易老天不下雨,下午还打算去打球,好吧加油,这是第二篇了。废话不多说,新建项目就不多说了,直接从编辑xib文件说起:1.拖一个Scroll View视图填充View窗口,将Scroll View视图拖大一些,使其超出屏幕。2.向Scroll View拖(添加)多个Label视图和Text View视图。3.在.h头文件中添加如下代码:#import <UIKit/UIKit.h> @interface ShowTextFiled : UIViewController { IBOutlet UIScrollV 阅读全文

Iphone代码创建视图

2012-03-10 12:32 by htc开发, 214 阅读, 收藏,
摘要: 很久没写博客了,所以这两天打算把前段时间学到的东西全部记录下来,也当作一种复习。要想以编程的方式创建视图,需要使用视图控制器中定义的viewDidLoad方法,只有在运行期间生成UI时才需要实现该方法。在此只贴出viewDidLoad方法的代码,因为只需要在这个方法里面编写代码:- (void)viewDidLoad { self.navigationItem.title = @"动态创建UI"; UIView *myview = [[UIView alloc]initWithFrame:[UIScreen mainScreen].applicationFrame]; .. 阅读全文

《算法导论》第11章 散列表 (1)直接寻址表

2012-03-07 22:54 by htc开发, 193 阅读, 收藏,
摘要: (一)直接寻址表关键字集合U = { 0, 1, ..., m - 1 },实际的关键字集合K。用一个数组T[0..m - 1],其中每个位置对应U中的一个关键字。直接寻址表的问题:(1)如果U很大,要保存|U|大小的一张表T有点不实际。(2)实际存储的关键字集合K相对U来说可能很小,因而分配给T的大部分空间都要浪费掉。(二)位向量位向量 (bit vector)是一种仅包含0和1的数组,所占空间比包含指针的数组少得多。一个32位的整型,每一位用0和1表示key是否存在,这样一个整数就可以表示32个key。key / 32表示key应保持在数组哪个下标的整数中,而key % 32则表示key应 阅读全文

《算法导论》第10章 基本数据结构 (2)链表

2012-03-05 22:21 by htc开发, 114 阅读, 收藏,
摘要: 《算法导论》里实现的是无序双向链表。源文件 list.h:链表的接口,定义链表和结点的类型,以及链表支持的操作。typedef int DATA_TYPE; // 注意将结构声明为新类型的语法 struct tagNode { DATA_TYPE data; struct tagNode *prev, *next; }; typedef struct tagNode Node; typedef struct { Node *head; } List; List * list_create(void); Node * node_create(DATA... 阅读全文

Android Activity总结

2012-03-05 11:33 by htc开发, 356 阅读, 收藏,
摘要: 内容概要• Activity的继承关系• Android 中 Context介绍• Acitivy实际是如何实例化的• Activity生命周期• Activity的启动方式,Task&Back Stack,进 程和线程,Intent.FLAG_ACTIVITY*• Activity,Window,View的关系• Android消息内容Activity是什么• 是个应用程序的组件,提供⼀一个可以让用户 交互的屏幕。它本身并不是界面。Activity的继承关系• java.lang.Object• ↳ android.content.Context• ↳ andr 阅读全文

Typedef与Struct

2012-03-04 16:27 by htc开发, 180 阅读, 收藏,
摘要: 原文地址:http://blog.csdn.net/gungod/article/details/1400936当用下面的代码定义一个结构时,编译器报了一个错误,为什么呢?莫非C语言不允许在结构中包含指向它自己的指针吗?请你先猜想一下,然后看下文说明:typedef struct tagNode{ char *pItem; pNode pNext;} *pNode; 答案与分析: 1、typedef的最简单使用typedef long byte_4; 给已知数据类型long起个新名字,叫byte_4。 2、 typedef与结构结合使用typedef struct tagMyStruc... 阅读全文

Python 网站开发(一)环境搭建

2012-03-03 21:16 by htc开发, 480 阅读, 收藏,
摘要: 前些天看到小阳买回来的一本 Python 基础教程,于是就产生了使用 Python 来开发一个小博客的想法。这个 Python 网站开发系列文章将不会过多说Python 基本语法,主要是面向实践的。使用 Python 2.7、框架为 Django 1.3、数据库为 Sql Server(没有用过 MySql)。当然,使用任何一门语言,如果对基本语法不了解的话,开发肯定会显得无从下手。在这里提供一些 Python、Django 方面的电子书资料,这些电子书包括:《征服Python:语言基础与典型应用》、《Django Web开发指南》、《Djangodoc-1.3》(英文)、《Learning 阅读全文