计算机科学与技术
文章平均质量分 73
iteye_8220
这个作者很懒,什么都没留下…
展开
-
JavaScript内核系列 第15章 服务器端的JavaScript
第15章已经在icodeit上发布,这一章分为上/下两篇,请朋友们移步此处,及此处阅读。 目录如下: 事实上,这章中有很多主题都很值得讨论的,如网络服务器的一些常见模型,以及基于事件的网络服务器,NoSQL,map/reduce等等。写完之后发现,这些问题虽然有所涉及,但是都写得很浅,只好在随后的文章中再详细讨论了。 ...2012-02-12 21:39:58 · 203 阅读 · 0 评论 -
Swing小应用(Todo-list)之二
前言用过vim, emacs的人都知道,这两个工具中都有很好用的增量搜索(incremental search)功能,所谓增量搜索,就是随着你的关键字的输入,结果在不断的进行刷新匹配,现在的很多web搜索框都提供类似的功能,最著名的当然是Google的,速度快,匹配率比较高(要不然也不会令人“心神不宁”了,哈哈)。 最近开发的那个小型的todo管理软件stodo, 其中涉及到t...2009-09-17 22:04:54 · 182 阅读 · 0 评论 -
JavaScript内核系列 第2章 基本概念
第二章 基本概念本章将聚焦于JavaScript中的基本概念,这些概念与传统语言有比较大的不同,因此单独列出一章来做专门描述,理解本章的概念对书中后续章节的概念,代码的行为等会有很大的帮助,读者不妨花比较大的时间在本章,即使你对JavaScript已经比较熟悉,也建议通读本章。本章主要讲述JavaScript中的数据类型(基本类型与引用类型),变量(包括变量的作用域),操作符...2010-04-03 19:44:31 · 117 阅读 · 0 评论 -
JavaScript内核系列 第1章 前言及概述
前言从2006年第一次接触JavaScript至今,算来也有四年时间了。上大学的时候,有一段时间沉迷于函数式编程,而那时候对JavaScript的理解仅仅局限在这是用来做网页的一种脚本,那些很恶心的弹出窗口和不断在页面上漂浮的黄色广告就是用JavaScript做出来的。工作之后,由于我们产品本身就是基于WEB展现的,而这个时候Ajax已经复兴数年了,但是于我,则只有“Ajax可以实现页面的局部...2010-04-01 23:15:38 · 227 阅读 · 0 评论 -
一个Swing的小应用(Todo-List)
前言 以前开发过一些简单的UI程序,大多都是借助IDE完成所有的工作,比如用DELPHI,或者C++ Builder等构筑,在这些工具中,UI是很容易开发的,但是在Java中就不一样了。Swing,在计算机科学界来说,其设计思想,整个体系的内涵,都是无以伦比的,但是要快速的用Swing开发一个能用的程序出来,还是比较困难的,其一,没有一个IDE支持(netbeans的高版本确实可以支持,但...2009-09-10 22:52:05 · 283 阅读 · 0 评论 -
人脸检测原理及示例(OpenCV+Python)
前言关于opencvOpenCV是Intel开源计算机视觉库(ComputerVersion)。它由一系列C函数和少量 C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV 拥有包括 300 多个C函数的跨平台的中、高层 API。它不依赖于其它的外部库——尽管也可以使用...2009-09-06 19:22:35 · 796 阅读 · 0 评论 -
Lisp之根源
原文链接:http://daiyuwen.freeshell.org/gb/rol/roots_of_lisp.html 转载原因:此文过于经典,不转太过可惜此文所在的网站的不太稳定,不转有可能想看的人看不到自己学习原文版权归paul graham所有,译文版权归Dai Yuwen所有,特此声明。 Lisp之根源保罗格雷厄姆(paul...原创 2009-08-25 13:47:41 · 99 阅读 · 0 评论 -
用graphviz画图
前言关于graphviz的介绍,我前面已经有专门的一篇文章了:http://abruzzi.iteye.com/blog/429042 ,还没有接触过的可以去看一看。 基本概念计算机科学中的数据结构中,图算是最为复杂的一种数据结构了,图G由顶点(vertex),以及连接这些顶点的边(edge)组成,表示为G(V,E),其中V表示顶点的集合,E表示边的集合。图有着非常广阔的应...2009-07-26 16:18:13 · 182 阅读 · 0 评论 -
基于总线的消息服务(BBMS)的设计与实现
前言异步事件的通知机制在比较有规模的软件设计中必然会有涉及,比如GUI程序中的事件监听器,应用程序模块之间的通信,以及分布式应用中的消息机制等。如果使用语言原生的对象注册通信,则耦合度不可避免的会增大,也就是说,当时间发生时,A要通知B,则A必须知道B的存在。耦合度的增大在一定程度上必然会影响灵活性。所以,另一种模式就是今天要说的总线模式(BUS Based),即所有的监听器将自己挂在总线上,...2009-07-25 22:19:00 · 315 阅读 · 0 评论 -
RMI的简单例子
Java的远程方法调用(Remote Method Invocation)是为了分布式计算而提出来的,最近做一个项目需要用到,所以学习了一番,现在将一个简单的demo贴出来,以便想要学习RMI的同志可以快速上手。 RMI的调用是基于接口的,这个接口的定语需要客户知道,客户程序运行时需要一个实现该接口的类的存根(stub)。RMI的内部使用了TCP/IP连接方式,因此需要一个安全机制,且需要...原创 2008-12-02 16:37:42 · 156 阅读 · 0 评论 -
遗传算法(原理及简单应用)
在维基(wiki)中关于自然选择的词条的搜索结果如下: 写道自然选择(Natural selection)也称为天择。指生物的遗传特征在生存竞争中,由于具有某种优势或某种劣势, 因而在生存能力上产生差异,并进而导致繁殖能力的差异,使得这些特征被保存或是淘汰。 基因是遗传特征的基础,也是自然选择的单位,自然选择则是演化的主要机制。经过自然选择而能够称成功生存, 称为“适应”;当一个物种中的不同族...原创 2008-11-13 16:40:53 · 1002 阅读 · 0 评论 -
JavaScript内核系列 第3章 对象与JSON
第三章 对象与JSONJavaScript对象与传统的面向对象中的对象几乎没有相似之处,传统的面向对象语言中,创建一个对象必须先有对象的模板:类,类中定义了对象的属性和操作这些属性的方法。通过实例化来构筑一个对象,然后使用对象间的协作来完成一项功能,通过功能的集合来完成整个工程。而Javascript中是没有类的概念的,借助JavaScript的动态性,我们完全可以创建一个空的对象(而...2010-04-12 09:12:31 · 130 阅读 · 0 评论 -
JavaScript内核系列 第4章 函数
第四章 函数函数,在C语言之类的过程式语言中,是顶级的实体,而在Java/C++之类的面向对象的语言中,则被对象包装起来,一般称为对象的方法。而在JavaScript中,函数本身与其他任何的内置对象在低位上是没有任何区别的,也就是说,函数本身也是对象。总的来说,函数在JavaScript中可以: 被赋值给一个变量被赋值为对象的属性作为参数被传入别的函数...2010-04-18 17:31:55 · 112 阅读 · 0 评论 -
Java脚本技术应用实例
前言一直以来都很喜欢可以自由扩展的软件,这一点应该已经在很多文章里提到,也重复过很多次了。但是,可扩展性,灵活性是开发人员最喜欢的东西了,本性难改。平时使用的开发环境如vim/emacs, IDE中的Eclipse/Netbeans, 浏览器FF/Chrome都具有强大而灵活的可扩展支持。而关于Java的脚本支持,我已经在数篇文章中提及,大多是关于JavaScript引擎rhino和宿主Jav...2011-01-22 11:24:30 · 319 阅读 · 0 评论 -
可编程计算器(phoc)的设计与实现
前言借助JavaScript脚本引擎Rhino,可以很容易的实现一个计算逻辑与界面相分离,且很容易扩展的可编程计算器。界面部分使用Swing及Netbeans的SAF(Swing Application Framework),计算部分使用Rhino引擎,来实现基本表达式的计算,以及变量,函数的定义等,绘图采用另外一个开源的库jmathtools(http://code.google.com/p...2011-01-17 11:34:44 · 1021 阅读 · 0 评论 -
使用vim开发python及graphviz绘图
基本需求使用vim中的autocmd命令可以很容易的将正在编辑的文件与外部的程序关联起来,从而使得开发效率更高。比如经常会用到这样的功能:编写一段python脚本,需要快速的查看该脚本的运行结果(最好是能做到一键完成)使用dot脚本绘制系统的模块关系等,需要即时预览结果(比如调整色彩,模块间的连线等)autocmd命令简介通过vim的autocmd可以很容易的做到这点...2011-12-23 14:49:19 · 303 阅读 · 0 评论 -
JavaScript内核系列 第9章 函数式的Javascript
第九章 函数式的Javascript要说JavaScript和其他较为常用的语言最大的不同是什么,那无疑就是JavaScript是函数式的语言,函数式语言的特点如下:函数为第一等的元素,即人们常说的一等公民。就是说,在函数式编程中,函数是不依赖于其他对象而独立存在的(对比与Java,函数必须依赖对象,方法是对象的方法)。函数可以保持自己内部的数据,函数的运算对外部无副作用...2010-05-13 19:20:27 · 127 阅读 · 0 评论 -
JavaScript内核系列 第8章 面向对象的JavaScript(下)
接上篇:JavaScript内核系列 第8章 面向对象的JavaScript(上)8.4实例:事件分发器这一节,我们通过学习一个面向对象的实例来对JavaScript的面向对象进行更深入的理解,这个例子不能太复杂,涉及到的内容也不能仅仅为继承,多态等概念,如果那样,会失去阅读的乐趣,最好是在实例中穿插一些讲解,则可以得到最好的效果。本节要分析的实例为一个事件分发器(Even...2010-05-06 09:40:43 · 147 阅读 · 0 评论 -
JavaScript内核系列 第8章 面向对象的JavaScript(上)
第八章 面向对象的Javascript面向对象编程思想在提出之后,很快就流行起来了,它将开发人员从冗长,繁复,难以调试的过程式程序中解放了出来,过程式语言如C,代码的形式往往如此:Component comp;init_component(& comp, props); 而面向对象的语言如Java,则会是这...2010-05-06 09:26:52 · 107 阅读 · 0 评论 -
JavaScript内核系列 第7章 闭包
第七章 闭包闭包向来给包括JavaScript程序员在内的程序员以神秘,高深的感觉,事实上,闭包的概念在函数式编程语言中算不上是难以理解的知识。如果对作用域,函数为独立的对象这样的基本概念理解较好的话,理解闭包的概念并在实际的编程实践中应用则颇有水到渠成之感。在DOM的事件处理方面,大多数程序员甚至自己已经在使用闭包了而不自知,在这种情况下,对于浏览器中内嵌的JavaScript引...2010-05-04 08:48:39 · 159 阅读 · 0 评论 -
JavaScript内核系列 第6章 正则表达式
第六章 正则表达式正则表达式是对字符串的结构进行的形式化描述,非常简洁优美,而且功能十分强大。很多的语言都不同程度的支持正则表达式,而在很多的文本编辑器如Emacs,vim,UE中,都支持正则表达式来进行字符串的搜索替换工作。UNIX下的很多命令行程序,如awk,grep,find更是对正则表达式有良好的支持。JavaScript同样也对正则表达式有很好的支持,RegExp是...2010-04-27 19:44:36 · 136 阅读 · 0 评论 -
JavaScript内核系列 第5章 数组
第五章 数组JavaScript的数组也是一个比较有意思的主题,虽然名为数组(Array),但是根据数组对象上的方法来看,更像是将很多东西混在在一起的结果。而传统的程序设计语言如C/Java中,数组内的元素需要具有相同的数据类型,而作为弱类型的JavaScript,则没有这个限制,事实上,JavaScript的同一个数组中,可以有各种完全不同类型的元素。 方法...2010-04-24 15:17:05 · 120 阅读 · 0 评论 -
Swing小应用(Todo-List)之三
前言去年9月份开发的那个小工具sTodo,只是做到了能用,但是还很不好用,比如没有定时的提醒功能,整个框架比较死板,不方便扩展,虽然设计之初就考虑要使用脚本语言进行脚本化,提供更强的定制能力,但是一直因为工作上事情太多,没有经历投入而悬停。 不明真相的可以参看以前的两篇文章:Swing小应用(Todo-List)之一Swing小应用(Todo-List)之二 sTodo...2010-04-22 20:47:06 · 225 阅读 · 0 评论 -
一个同步打印机的简单实现
内部机制打印机内部设有缓冲区,当有新任务来到的时候,打印机只是简单的从任务中取出需要打印的消息,然后将其存入自身的缓冲区,然后返回,具体的打印任务交给一个线程来处理,打印线程从缓冲区中读消息,打印,然后等待,直到有别的线程唤醒它。其结构如图所示: 单例模式作为一个系统硬件的模拟,在一个项目中有一个打印机就够用了,在项目中任何需要打印消息的地方,需要使用SyncPrint...原创 2008-11-12 20:50:55 · 323 阅读 · 0 评论 -
事件监听器模式(一个简单的例子)
事件监听器模式(一个简单的例子)在GUI程序设计中,在设计时通常不会知道用户的动作什么时候会发生,如用户可能点击某一个按钮,也可能不点击,而且点击按钮的时机在运行时才可能知道。如果用传统的程序控制方式,则很难做到准确的响应。通常这种情况或者类似的情况下,我们可以使用事件/监听器模式。将一个监听器(listener)与特定的控件(如按钮等)绑定起来,当发生用户点击等事件(Event)时,...原创 2008-11-12 14:06:04 · 598 阅读 · 0 评论 -
对Java中匿名类的一些思考
引言Java中的匿名类是比较有意思的一种编程方式,在swing中关于监听器的注册时,经常可见到这样的代码: iexit.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { int y = JOptionPane.showConfirmDialog( ...2009-12-02 20:40:41 · 115 阅读 · 0 评论 -
Java反射机制的一个实例
JSP的规范中,有个表达式语言(Expression Language, 简称EL),可以算是一个微型的语言,其中对request, page, session, application中预存的JavaBean对象的引用方式很是简单。最近正好需要写一个支持简单EL的taglib,所以就研究了下Java中的反射机制,目前基本上实现了多级bean的属性的访问,经测试,还是可以用的。 如: pub...2009-04-03 17:20:18 · 88 阅读 · 0 评论 -
Python图形图像处理库的介绍之ImageFilter模块(滤镜)
ImageFilter模块 ImageFilter是PIL的滤镜模块,当前版本支持9中加强滤镜,通过这些预定义的滤镜,可以方便的对图片进行一些过滤操作,从而去掉图片中的噪音(部分的消除),这样可以降低将来处理的复杂度(如模式识别等)。 滤镜名称含义ImageFilter.BLUR模糊滤镜ImageFilter.CONTOUR轮廓ImageFilter.EDGE...2009-03-10 12:01:16 · 836 阅读 · 0 评论 -
面向对象浅谈及MVC模型
面向对象面向对象的概念,已经提出几十年了(在上个世纪八十年代提出,可能更早),但是好像不太好理解,我觉得没有学过计算机的人理解起来反而容易些。对计算机原理性质的课程研究的时间一长觉得面向过程的程序设计简直就是天经地义了。 面向对象里有些概念,当然,任何一个理论都需要有概念。概念定义了理论的模型和讨论问题的一些术语,仅此而已。下面稍稍说一下面向对象里的概念问题,当然,不会像《面向对象的程序设计...2008-06-20 02:15:10 · 379 阅读 · 0 评论 -
Python图形图像处理库的介绍之ImageEnhance模块(图像增强)
ImageEnhance模块import ImageEnhanceenhancer = ImageEnhance.Sharpness(image)for i in range(8): factor = i / 4.0 enhancer.enhance(factor).show() 所有的图片增强类都实现了一个通用接口,这个接口只包含一个方法:enhance(fac...2009-03-04 13:28:30 · 3254 阅读 · 3 评论 -
Python图形图像处理库的介绍之ImageChops模块
ImageChops 模块这个模块主要包括对图片的算术运算,叫做通道运算(channel operations)。这个模块可以用于多种途径,包括一些特效制作,图片整合,算数绘图等等方面。但是到目前为止,通道运算只支持8位图片("L"和"RGB"模式,可参看前文)。 这次的图片主要来源于网络上的一些关于黑客帝国的壁纸:Matrix Revolution,同样,如有侵权行为情快速联系...2009-03-03 23:07:51 · 564 阅读 · 0 评论 -
OpenCV库的简介
OpenCV全程open source computer vision library.是Intel开发的一个计算机视觉库,包含了多种计算机图形图像处理的库,目前版本为V1.0,可以在商业和研究领域免费实用。主要用于处理图像处理计算机视觉模式识别物体识别(人脸识别,Object识别)运动跟踪等等方面,源库由C和一少部分C++写成。包含了很多算法的实现,而且而且,她有python版...2009-01-21 16:25:55 · 822 阅读 · 0 评论 -
Python图形图像处理库的介绍之Image模块
Image模块的介绍创建一个新的图片Image.new(mode, size)Image.new(mode, size, color) 层叠图片层叠两个图片,img2和img2,alpha是一个介于[0,1]的浮点数,如果为0,效果为img1,如果为1.0,效果为img2。当然img1和img2的尺寸和模式必须相同。这个函数可以做出很漂亮的效果来,而图形的算术加减后边会说到。Image....2009-01-12 16:13:16 · 1104 阅读 · 0 评论 -
python图形处理库PIL(Python Image Library)的介绍
关于PIL库的一些概念pil能处理的图片类型pil可以处理光栅图片(像素数据组成的的块)。通道一个图片可以包含一到多个数据通道,如果这些通道具有相同的维数和深度,Pil允许将这些通道进行叠加模式1 1位像素,黑和白,存成8位的像素L 8位像素,黑白P 8位像素,使用调色板映射到任何其他模式RGB 3×8位像素,真彩RGBA 4×8位像素,真彩+透明通道...2009-01-11 22:36:38 · 1221 阅读 · 0 评论 -
Python图形图像处理(使用PIL)
Python是一个神奇的语言,上手极快,而且可以找到很多写的非常优秀的模块。这几天在给单位做CSS Sprites时,需要将一些图片先进行缩略,然后拼成一张大图,这样虽然数据量的传输没有降低,但是可以减少链接请求数,从而提高WEB服务的速度。一时没有找到顺手的图形处理工具,(photoshop, GIMP太专业,而且体积太大,如果为了处理几百张图片就要装,未免浪费)于是自己用python写了一个...2009-01-05 23:18:08 · 143 阅读 · 0 评论 -
Javascript执行器(Rhino)
引言前一段时间用swing开发了sTodo(http://code.google.com/p/stodo/),对swing开发GUI的基本流程算是熟悉了,所以也常用swing来写些小东西。在实际的开发或者学习中,经常遇到这样的场景:想要执行一段javascript脚本,验证一些想法,这可能需要你打开编辑器,建立一个新的html页面,然后写一堆标签,然后用script标签将脚本包起来,执...2009-12-03 22:53:39 · 1887 阅读 · 0 评论 -
函数式编程(javascirpt)
前言Javascript,有人称其为C+LISP,C只怕是尽人皆知,但是一直活跃在人工智能领域的另一个古老而优美的语言LISP,掌握的恐怕不是很多.这个倒不是因为这个语言太难或者用途不广泛,而是大多数人在接受计算机语言启蒙的时候都走的是图灵机模式,而LISP,做为一种函数式编程语言,是另一个体系:lambda演算体系.这个体系的运算能力跟图灵机的运算能力是相当的。所以Javascript...2009-04-18 22:18:00 · 93 阅读 · 0 评论 -
Java 一个线程池的示例
用途及用法 网络请求通常有两种形式:第一种,请求不是很频繁,而且每次连接后会保持相当一段时间来读数据或者写数据,最后断开,如文件下载,网络流媒体等。另一种形式是请求频繁,但是连接上以后读/写很少量的数据就断开连接。考虑到服务的并发问题,如果每个请求来到以后服务都为它启动一个线程,那么这对服务的资源可能会造成很大的浪费,特别是第二种情况。因为通常情况下,创建线程是需要一定的耗时的,设这...2008-11-08 07:38:18 · 221 阅读 · 0 评论 -
graphviz工具及其原理
Graphviz介绍graphviz是贝尔实验室几个计算机牛人设计的一个开源的图表(计算机科学中数据结构中的图)可视化项目,主要用C语言实现,主要实现了一些图布局算法。通过这些算法,可以将图中的节点在画布上比较均匀的分布,缩短节点之间的边长,并且尽量的减少边的交叉。 graphviz提供命令式的绘图方式,它提供一个dot语言用来编写绘图脚本,然后对这个脚本进行解析,分析出其中的...2009-07-19 21:44:17 · 276 阅读 · 0 评论 -
基于总线模式的消息服务
前言一直以来,都对异步事件很感兴趣,比如一个应用在运行一个耗时的过程时,最好的方式是提交这个耗时的过程给一个专门的工作线程,然后立即返回到主线程上,进行其他的任务,而工作线程完成耗时任务后,异步的通知主线程,这个过程本身是很有意思的。传统的事件-监听器模型可以较好的解决这个问题,不过事件和监听器两者的耦合往往略显紧密,所以需要另一种实现,使得这两者的耦合尽量小,那样模块可以比较通用。 ...2009-07-14 23:05:41 · 209 阅读 · 0 评论