- 博客(28)
- 收藏
- 关注
原创 C语言常见排序算法
#include void swap (int *x, int *y){ int temp; temp = *x; *x = *y; *y = temp;}// 插入排序 升序void insertsort(int arr[], i
2011-09-15 17:39:49 691
翻译 Lisp.定义函数
多数人通过defun来学习怎样定义函数。下面的表达式定义了一个叫做double的函数,这个函数返回它参数的两倍。[1]> (defun double (x) (* x 2))DOUBLE将这些传递给Lisp之后,我们可以在其它函数中调用double,或者直接在最高
2011-09-13 23:10:46 5516
翻译 Lisp.函数作为数据
两样东西使得Lisp函数不同。第一,上面提到的,Lisp自身就是一个函数的集合。这意味着我们可以向Lisp中加入我们自己的操作符。另外一个我们需要知道的关于函数的东西是它们是Lisp对象。Lisp提供了其它语言中能找到的多数的数据类型。我们知道整形和浮点型数字,字符串
2011-09-12 13:47:51 892
翻译 Lisp.函数
函数是Lisp程序的构建块。它们也是Lisp的构建块。在多数的语言中+操作符和用户自定义函数是非常不同的。但是在Lisp中有一个单一模型,函数应用,来描述一个程序所要做的全部计算。Lisp的+操作符是一个函数,和你自己定义的函数一样。事实上,除了一小部分叫做特殊形式的
2011-09-12 12:51:28 602
翻译 Lisp.为什么使用Lisp
这些新的可能性并不是来自于一个新的神奇元素。在这个方面,Lisp就像是一个架构。到底是哪块楔形的石头(拱石)来管控这个架构呢?这个问题本身就是错误的;它们都在做。像一个架构,Lisp是一个连锁特征的集合。我们可以列出其中的一些特征——动态存储分配和垃圾回收,运行时类型,作为对象的
2011-09-12 00:19:03 979
翻译 Lisp.扩展Lisp
有两种方式来给Lisp添加新的操作符:函数和宏。在Lisp中,你定义的函数和内置的那些有一样的状态。如果你想要一个mapcar的变体,你可以自己定义一个,并像使用mapcar一样使用它。比如,如果你想要一个函数应用于1到10的变量后返回的一列值,你可以创建一个新的列表并将它传递给
2011-09-11 13:03:40 928
翻译 Lisp.可扩展的软件
Lisp风格的编程是随着软件复杂度的增长而增长的。高端用户现在要求程序做那么多的事情,以至于我们不能满足他们所有的需求。他们自己也不能完全满足他们自己的需求。但是如果我们不能给他们满足他们完全需求的软件,我们可以给他们可扩展的软件。我们将我们的软件从一个单一的程序编程一个编程语言
2011-09-10 15:46:51 683
翻译 Lisp.自下而上的编程
一个程序的函数元素不能太大是一个长期存在的编程风格原则。如果程序的某些组件增长到读难以理解的成都,它就变成一大堆的复杂东西,它们隐藏错误就像一个大城市隐藏逃亡者一样简单。这样的软件将很难读、很难测试、很难杀臭虫。遵循这个原则,一个大的程序必须被分成很多片,一个程序越大
2011-09-10 15:06:00 844
翻译 Lisp.演进设计
因为Lisp给你自己定义你自己操作符的自由,你可以把它铸造成适合你需求的语言。如果你正在写一个文本编辑器,你可以将Lisp转化成一个写编辑器的语言。如果你正在写一个CAD程序,你可以将Lisp转化成写CAD程序的语言。如果你不知道你在写什么类型的程序,使用Lisp也是安全的尝试。
2011-09-09 19:11:10 599
翻译 Lisp.可扩展的语言
不久前,如果你问LISP是用来做什么的,许多人将回答:“做人工智能的”。事实上,Lisp和AI的关系仅仅是一个历史的巧合。John Mcarthy发明了LISP,他也提出了了“人工智能”的概念。他的学生和同事都用LISP来写程序,然后LISP就被称为一门AI语言。这条线在20世纪
2011-09-09 17:42:10 735
原创 R语言,一些数据操作
我们首先创建一些向量> manager > date > contry > gender > age > q1 > q2 > q3 > q4 > q5 然后我们把这些向量组成一个数据帧> leadership > leade
2011-08-31 15:46:50 925
翻译 R语言,图形
本章包含:创建和保存图个性化符号、线、颜色和坐标轴用文本和标题注释控制一个图的维度合并多个图到一个很多时候,我想客户通过数字和文字展示精心准备好的统计结果,得到的只是他们发呆的样子。同样的客户,当我以图形的形式展示给他们同样的信息的时候,通常得到的
2011-08-29 22:53:25 4889
原创 Canopy聚类算法说明
Canopy聚类算法是一个将对象分组到类的简单、快速、精确地方法。每个对象用多维特征空间里的一个点来表示。这个算法使用一个快速近似距离度量和两个距离阈值 T1>T2来处理。基本的算法是,从一个点集合开始并且随机删除一个,创建一个包含这个店的Canopy,并在剩余的点集合上迭代。对
2011-08-04 14:11:36 5101
原创 C语言实现二分查找算法
#include int binsearch(int x, int v[], int n){ int low, high, mid; low = 0; high = n - 1; while (low mid = (low + high) / 2; if (
2011-07-10 16:22:31 966
翻译 Hadoop 任务分解
<br />从高层看,有四个独立的实体:<br /> <br />- 客户端,提交MapReduce任务<br />- jobtracker,协调任务的运行。jobtracker是一个Java应用,它的主类是JobTracker<br />- tasktrackers,运行被分割的任务。tasktrackers是一个Java应用,它的主类是TaskTracker<br />- 分布式文件系统(通常是HDFS),用来在其它实体之间共享文件<br /> <br />Job提交<br /> <br />JobCl
2011-04-22 10:38:00 2491
翻译 MapReduce工作流
当处理变得非常复杂的时候,复杂性通过更多MapReduce任务,而不是更多的map和reduce函数来适应。换句话说,作为一个经验规则,考虑添加更多的jobs,而不是添加更多的复杂性给jobs。对于更复杂的问题,值得考虑高层语言来代替MapReduce,像是Pig,Hive或者是Cascading。一个显而易见的好处是,这把你从把问题翻译成MR任务的过程中解放出来,允许你精力放在本身算法上。将问题分解为MapReduce任务让我们看一个更加复杂的问题,我们将它转换为一个MapReduce工作流。假如我们想要
2011-04-19 15:14:00 1068
翻译 Node.js——梗概
一个用Node写成的web服务器,返回“Hello World”:var http = require('http');http.createServer(function(request, response){response.writeHead(200, {'Content-Type':'text/plain'});response.end('Hello World/n');}).listen(8124)console.log('Server running at http://127.0.0.1:81
2011-04-18 14:51:00 524
翻译 关于Node.js
<br />Node的目标是为构建可扩展的网络程序提供一种简单的方式。在上面的 “hello world”web服务器示例中,很多客户端连接可以被并行处理。Node告诉操作系(通过epoll,kqueue,/dev/pool,或者是select),当一个新的连接创建时它应该被通知,然后就sleep。如果一些新人的来连接,然后它就执行回调。每个连接仅仅是一个小的堆分配。<br /> <br />这和当今常用的并发模型相反,现在的并发模型是使用操作系统线程。基于线程的网络是低效的并且很难使用。Node将在高负载
2011-04-15 13:34:00 718
原创 JavaScript计算日期的函数
<br />注意:Date对象获得的月份是从0开始记的,这个让我耽误了不少时间:<br /> function addDays(nd){ var day = new Date(); var newtimems = day.getTime() + (nd * 24 * 60 * 60 * 1000); day.setTime(newtimems); var xyear = day.getFullYear(); var xmonth = day.getMonth
2011-04-04 21:17:00 512
原创 C语言统计每行的字符数
<br />#include<limits.h><br />#include<stdio.h><br /><br />#define MAXLINE 1000<br /><br />int getxline(char s[], int lim)<br />{<br /> int c, i;<br /> for(i = 0; i < lim-1 &&(c = getchar()) != EOF && c != '/n'; ++i)<br /> s[i] =
2011-04-04 21:14:00 858
原创 C语言外度变量
<br />下面的例子将两个通用的函数给特化了,这种情况下不应该使用外部变量,仅仅作为说明:<br /> <br />#include<stdio.h><br /><br />#define MAXLINE 1000<br /><br />int max;<br />char line[MAXLINE];<br />char longest[MAXLINE];<br /><br />int getxline();<br />void copy();<br /><br />int
2011-04-04 18:32:00 623
原创 C语言实现指数计算
这个问题的关键点在确定初始值#includeint power(int m, int n);int main(){ int i; for(i = 0; i printf("%d %d %d/n", i, power(2, i), power(-3, i)); return 0;}int power(int base, int n){ int i, p; p = 1; for(i = 1; i
2011-04-03 20:39:00 10853
原创 C语言统计输入行数、单词数、字符数
这个问题的关键在于统计单词的个数:状态的转变定义了一个单词#include#define IN 1#define OUT 0main(){ int c, nl, nw, nc, state; state = OUT; nl = nw = nc = 0; while((c = getchar()) != '0') { ++nc; if(c == '/n') ++nl;
2011-04-03 11:30:00 1902 1
原创 C语言替换特定字符
<br />这个问题的思路应该从字符从字符的角度展开,不能一蹴而就。<br /> <br />int execise3()<br />{<br /> int c; // the character currently input<br /> while((c = getchar()) != '0')<br /> {<br /> if(c == '/t')<br /> {<br /> putchar('//');<
2011-04-03 11:20:00 818
原创 C语言去除特定字符
这个是C编程语言中的一个题目,一开始看上去这个很无从下手,其实最重要的是把握问题的本质:状态。根据不同的状态做出不同的操作。以下是第一遍思路实现的结果,显然有很多应该去掉的代码。int execise2(){ int c; int b = 1; // 0 for blank and 1 for non-blank while((c = getchar()) != '0') { if(c == ' ' && b == 1) {
2011-04-03 11:00:00 1289
原创 C语言计算字符个数
#includeint main(){ long nc; nc = 0; while(getchar() != '0') { ++nc; } printf("%ld/n", nc);}gcc char_counting.c -o char_counting.o一种通常的调用方式:[root@myhost c]# ./char_counting.o 123450[回车]6通过linux
2011-04-02 00:10:00 1575
原创 jquery.cookie.js的使用
$.cookie(‘the_cookie’); // 读取 cookie$.cookie(‘the_cookie’, 'the_value’); // 存储 cookie$.cookie(‘the_cookie’, 'the_value’, { expires: 7 }); // 存储一个带7天期限的 cookie$.cookie(‘the_cookie’, '', { expires: -1 }); // 删除 cookie
2011-02-26 15:08:00 509
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人