自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AAAA的专栏

学习如逆水行舟,不进则退

  • 博客(47)
  • 资源 (3)
  • 收藏
  • 关注

原创 Android提交Http请求时,显示对话框进度条并修改UI元素

网上找了很多关于Android在后台进行数据操作,界面显示进度条资料时,发现90%网上的博客、资料都是相同的内容,没有一点实质性的可用代码,真怀疑大家都是抄袭的API Demo中的。现在正好也用到在Android客户端提交数据量大的Http请求,想通过在提交服务器,并在处理时显示进度条,以及处理完后接收返回的结果,根据界面修改主线程UI界面。把相关代码贴出来供大家参考.在Android SDK1.5以上,Android SDK为我们提供了一个后台任务的处理工具AsyncTask。AsyncTask就是一个封

2010-09-02 10:45:00 5351 2

转载 Asp.Net中动态实现图片水印

 一.引言    目前的许多网站,为了保护着作权,通常需在图片上嵌入水印.嵌入水  印可以通过图像编辑软件(如PhotoShop)直接手工在原始图片上进行修改,但  这种方法费时又费力,几乎任何网站都不会采用此方法;或通过GUI+编写程序来  批量处理图片.但这这些方法都将破坏原始图片的完整性.本文介绍的方法,利  用了HttpHandler处理Http请求的机制,只将要呈现在Web页上的图片嵌入水印,  而不会对文件系统中的原始图片做任何修改,有效地保证了原始图片的完整性.  二.相关技术  1. ASP

2010-08-09 11:03:00 2610

原创 CDMA 短消息的彩信通知解码(代码实现)

关于CDMA短消息的彩信通知解码原理,网络上找到两篇博客:http://netsin.blog.hexun.com/34791040_d.html;http://blog.lytsing.org/archives/203.html。这里就不加以详细说明,协议格式可以参考TIA-EIA-637-A标准中的4.5.1 Message Identifier和4.5.2 User Data这两部分。MMS-NOTIFICATION的协议格式可以参考wap-209-mmsencapsulation-20020105-

2010-08-07 09:51:00 3265

原创 TPL 和传统 .NET 异步编程一

TPL即任务并行库,是.NET Framework 4版本中的新鲜物,是System.Threading 和 System.Threading.Tasks 命名空间中的一组公共类型和 API。TPL 的目的在于简化向应用程序中添加并行性和并发性的过程,从而提高开发人员的工作效率。 TPL 会动态地按比例调节并发程度,以便最有效地使用所有可用的处理器。此外,TPL 还处理工作分区、ThreadPoo

2010-05-28 17:47:00 4828 1

原创 WPF中模型-视图-视图模型模式介绍

在目前开发中,流行的开发模式有MVC(模型-视图-控制器)和MVP(模型-视图-表示器),其中MVC模式常见于java web开发中,比如Struts2、Struts2,后来微软也推出了MVC模式的开发框架。MVP模式是从MVC演变过来的,作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Contro

2010-05-21 11:21:00 2656 1

原创 MapReduce简介以及F#的实现

MapReduce是一个最先由Google提出的分布式编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map"和"Reduce",以及他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 对于大数据量的计算,通常采用的处理手法就是并行计算,对许多开发人员来说,并行计算还

2010-03-04 11:13:00 1677

原创 通过EPMD来获取Erlang Node的Port

 在Erlang分布式中,各个节点之间的通讯都是通过Erlang的EPMD (Erlang Port Mapper Daemon)来实现的。首先,节点在EPMD注册节点名称,然后客户端或者另外一个节点与注册的节点通讯时,发送请求数据到EPMD,然后EPMD根据请求内容返回相应的相应信息,客户端或者另外一个节点再根据返回信息与服务节点通讯,详细的Erlang分布式协议可以通过http://www

2010-02-23 13:51:00 3509

原创 利用OTP.NET框架来实现C#与Erlang Node之间的通讯

OTP.NET库是Erlang中Jinterface的.NET实现,Jinterface是Erlang开发的用来实现与Java通讯的开源库,出了Jinterface 外,还开发了与C通讯的库。关于OTP.NET的代码可以从http://jungerl.cvs.sourceforge.net/viewvc/jungerl/jungerl/lib/otp.net/下载得到,由于OTP.NET是Java

2010-02-08 09:27:00 4101 2

原创 利用Socket来实现Erlang与C#之间的通讯

由于Erlang在处理数据时在性能上具有一定的优越性,特别是在处理并发计算的时候。于是想着能不能实现C#与Erlang之间的通讯,经过一天的编码,终于有所收获。 首先要注意的是,在Erlang与C#之间,进行数据交换之前,都必须把数据转换成UTF8的格式后,再获取其二进制数据,同时获取时也需要以UTF8的格式获取,否则会出现乱码的现象,在这次实现的两者之间的Socket通讯,不仅可以传送字

2010-02-07 01:22:00 3101

原创 在ErlyWeb中处理中文字符

在Erlang的老版本中,是不支持Unicode(utf8)字符的,不过幸运的是在R13版本上,已经提供支持了。有兴趣的朋友可以在http://erlang-china.org/misc/erlang_r13_unicode.html找到示例。 自然,由于之前的Erlang版本没有提供unicode的支持,所以在利用ErlyWeb开发Web应用时处理中文字符的输入,就变得是一件很复杂的事情

2010-02-05 14:56:00 1273

原创 F#程序设计-异常处理

每个程序员都不能保证自己写的成员会按照理想状态去运行,就算是高手、大侠,也不能保证他的程序就是完美的。编写软件是一项复杂的事情,正式如此,所以即使是最好的软件也经常伴随着各种各样的问题,有的时候问题是糟糕的代码引起的(比如数组索引的溢出、未能判断空指针),有的时候未考虑用户数据的输入导致的(比如该输入数字时输入了字母),不管如何,任何引发的错误都影响到了程序的正常执行。不过,对于.NET来说,

2010-01-02 16:13:00 734

原创 F#程序设计-面向对象编程之访问修饰符

封装是类的一大特性,它把抽象的、复杂的事物封装了在内部,调用者无法看到它的内部操作。然而,由于类的调用者能够接触到类暴露出来的任何属性和方法,也能够随意的修改类的属性,改变类的状态,这也导致意外的BUG出现。幸好,F#与.NET其他的语言一样,对于类的属性和方法提供了可访问控制,允许用户可以操作哪些方法或者属性。F#的可访问修饰符跟其它的.NET语言一样,提供了private、public、i

2010-01-01 16:46:00 738

原创 F#程序设计-面向对象编程之继承

一、继承基类 在F#中,继承一个基类,需要用到的关键字是inherit。在隐式定义类与显式定义类的继承上,两者之间略有差异。在使用隐式定义类的方式中实现继承时,只需要简单的在申明继承的后面立即加上基类的主要构造函数,并且确保提供基类的主构造函数需要的参数,比如:type BaseClass =        val m_field1 : int        new(x) = { m_fi

2009-12-31 18:04:00 811

原创 F#程序设计-面向对象编程之属性和方法

类通过他们的方法和属性被赋予内涵。方法是一种动作,属于动词,描述类可以做什么或者它能这样做;属性,另一方面,则是形容词,它有助于类的描述。 一、定义属性 属性有三种不同的操作形式:只读、只写、读写。属性的读操作通过get关键字来定义,并且返回属性的值,而写操作,则是通过set关键字来更新属性的值。对于定义一个只读的属性,在语法上只需简单的定义一个方法并且无需参数。而另一种方式是,可以提

2009-12-31 08:54:00 969

原创 F#程序设计-面向对象编程之类的定义

F#的面向对象编程与其他的.NET语言总体上没有什么多大的区别,除了语法上有些区别之外。在用户自定义类型当中,类(class)可能定义最频繁的类型吧,F#有两个独特的语法来定义类的构造函数:显式构造与隐式构造。前者更符合F#简单而又简洁的语法,而后者允许更明确的控制类是如何产生的。一、显式构造显式构造是相对于隐式构造来说虽然看来没有那么灵活,但是它提供了最大的控制。

2009-12-29 08:59:00 713

原创 F#程序设计-函数式编程之值的可变性

在.NET中,变量的存放可以放在两个地方堆栈(stack)和堆(heap)中,放在堆栈的变量类型被称为值类型,而放在堆中的被称作为引用类型。值类型就是在堆栈中拥有固定大小的空间,比如int、float类型,引用类型,在堆栈上仅仅存储一个指针,指向堆中内容的地址。尽管虽然指针具有固定的大小,比如4个字节或者8个字节,但是它指向堆中存放的内容可以是更大的。 在F#中,变量的存放机制跟.NET的

2009-12-28 10:25:00 697

原创 利用C#的动态类型来实现与rails类似的元编程(2)

在上一篇的文章中,主要介绍了利用CodeDom来动态生成数据库表到实体的映射关系以及利用C#的动态类型来操作实体的属性。这篇主要是实现了实体类的数据库CRUD的操作。 在目前的ORM映射框架中,对于操作数据库的最后一个步骤就是动态生成操作数据库的SQL语句,而这无非也就是利用实体属性中的自定义映射机制来实现的,或者就是直接把实体类的属性名对应表的字段名,在本示例中,就是采用的后者。 

2009-12-27 11:40:00 3263 1

原创 利用C#的动态类型来实现与rails类似的元编程(1)

熟悉ruby on rails的开发员都知道,在ruby中,有一个很重要的特性,就是能够实现元编程,特别是在用于开发Web应用的rails框架中,用的特别多。在rails中,要创建一个动态方法并与数据库表字段相关联,主要的的步骤大概有这些:1、首先配置好数据库的连接。2、创建一个ActiveRecord模型,这个模型与数据库的表名称有一定的关系(具体的可以参考相关rails文档)3、创

2009-12-25 17:43:00 3317 5

原创 F#程序设计-函数式编程之惰性加载

在日常软件开发中,大部分编写的代码进行一些计算、求值都是属于"热切"的,意思就是说,只要你执行一个计算,结果就会马上返回给你,不管你现在用不用得着。在F#中,当然也是这样的,然而,就像前面说的,有时你仅仅是预先定义执行的代码,然后等需要用到的时候再执行,获取值,这种情况,在F#中叫做惰性加载。 关于惰性加载,熟悉Hibernate的程序员应都很了解,它其中一个重要的地方,就是惰性加载,惰性

2009-12-24 13:48:00 1195

原创 Erlang-Web的Data flow

在Web应用程序中,大部分每次客户端的Http请求都需要,服务端都需要执行多个动作,不仅如此,有时候我们还需要多个动作之间具有一定的执顺序。比如用户新增一条记录到数据库,正常情况下的步骤是:1、判断用户是否登录;2、判断用户是否具有新增的权限;3、就是对用户输入的数据进行逻辑验证;最后一步才是把数据写入数据库中,简单的流程如下图:在上图中,如果一个环节不通过,就不能继续执行下一个环节,

2009-12-24 09:52:00 679

原创 Erlang-Web的Validation

我们都知道,作为一个与用户交互的系统,都存在找数据的交互。然后,由于用户输入的数据都是千变万化的,有时可能不是系统所期望的数据,比如用户输入非数字类型等。即使我们认为所有用户输入的数据都是正确的,但是我们还是需要验证用户输入的值。 在Erlang-Web中,验证用户输入数据的基本类型是通过wpart_valid模块来实现的,它收集用户的输入数据,并对数据的基本类型进行验证,比如判断一个数据

2009-12-23 10:07:00 963

原创 F#程序设计-函数式编程之函数组合(Function Composition)

一旦你完全掌握了函数运用,就可以开始把他们结合形成更大、更强的函数。这就是所谓的函数组成,也是函数编程的另一个宗旨。在我们介绍函数组成功能之前,先让我们看看利用传统的编程方式,是怎么来解决问题的,下面的示例演示了统计一个指定的路径下的所有文件大小:let sizeOfFolder folder =    // Get all files under the path    let

2009-12-22 13:45:00 1160

原创 Erlang-Web的Dispatcher原理

在每个Web服务中,页面的路由请求是非常重要一个方面。主要有两个原因:一是提供用户友好的URL,二是通过服务控制获取服务内容,比如Struts2中的struts.xml,就是为了这而产生的。在Erlang-Web中,是利用E_dispatcher来实现的在Erlang-Web中,为了实现Url的映射(View到Control的映射),我们必须在dispatch.conf配置文件作配置(disp

2009-12-22 10:47:00 1438

原创 F#程序设计-函数式编程之用函数风格来编程(2)

递归函数(Recursive Functions)我们都知道,所谓递归函数就是函数自己调用自己,在函数式编程语言中,这是非常有用的。在F#语言中, 定义一个递归函数,只需要在函数名前面有一个关键字rec来申明,比如下面拿一个经典的列子斐波那契数列来编写一个递归函数:> let rec factorial x =-     if x -         1-    

2009-12-21 13:17:00 713

原创 ErlangWEb应用的目录结构

ErlangWeb是建立在OTP的基础上的,意味着在跟OTP平台上存在着一些共同点。目录的结构就是其中之一,在Web项目中,至少要包含以下的这些目录:• config• docroot• lib• log• pipes• priv• releases• templates 下面来分析下每个目录代表的含义。config这个目下下面是放置所有应用程序

2009-12-19 14:11:00 1049

原创 F#程序设计-函数式编程之用函数风格来编程(1)

不变性在F#语言中,不存在像其他语言如 C#中那样有"变量"这一说话,起而代之的是"值"。其原因是,在函数编程中,你定义的任何事物的名称在默认下是不可改变的,也就是说它们的值不能被改变,而我们知道,变量是可以随时被改变的。如果一个函数改变了程序的某种状态,比如写入一个文件或者改变内存中的全局变量,就被称为"副作用"。比如调用printfn函数返回一个unit类型,但是这里有一个副作

2009-12-19 09:57:00 817

原创 Erlang-Web下载,编译以及创建Web应用并运行

ErlangWeb是一个开源的基于Http协议的应用框架,主要是利用Erlang语言来快速、简洁的建立Web应用程序,不过目前这个框架只支持基于Linux平台上。它的官方站点是http://erlang-web.org/.以下将介绍从它的网站上下载源代码并且编译,然后利用框架来搭建一个Web应用程序:一 、下载从http://wiki.erlang-web.org/Download

2009-12-18 13:17:00 1669

原创 F#程序设计-函数式编程之Records

当你想把数据组成一个结构化的格式,而不需要太复杂的语法时,你可以使用F#中的Record类型。Record类型与C语言的Struct类型基本一样,存储一组类型的值,通过字段的值来获取。定义一个Record类型很简单,只需要在大括号内定义系列的名称/类型就可以。要实例化一个Record,只需要提供对应的字段以及值即可,剩下的类型推断系统会根据你的输入来自动判断,比如:> type PersonR

2009-12-17 13:31:00 717

原创 F#程序设计-函数式编程之Discriminated Unions

discriminated union是函数式编程中的一个基础类型,要定义discriminated union类型,需要用到type关键字,后面接着的是discriminated union类型的名字,然后用"|"分隔每一个值。在discriminated union类型中的每一个值都被称作为union case。例如一套扑克有四种牌,红桃、方块、梅花、黑桃。我们可以定义一套牌的discrimi

2009-12-15 13:38:00 882

原创 F#程序设计-函数式编程之模式匹配

模式匹配所有程序都需要通过筛选和排序数据;在函数编程中做这些需要用到模式匹配。模式匹配有点像C#和C++中的switch,但是它比switch更强大。模式匹配就是根据输入的数据匹配定义好的一系列规则,如果匹配成功,则执行。该模式匹配表达式然后返回认为是符合规则的结果,因此,在模式匹配的所有规则必须返回相同的类型。如果要执行模式匹配,你可以使用match和with关键字,并在在wit

2009-12-14 14:51:00 1745

原创 Abstract Form--动态生成和修改module

前面,我们简单描述了Abstract Form的基本组成。现在,我们来看看如何利用Abstract Form动态生成和修改module。在介绍Erlang Abstract Form--生成和获取,已经提到过,要获得Abstract Form有两种方法,一种读取beam文件中的debug_info,另一种方法就是直接解析源代码。 提供源代码文本修改一个modul

2009-12-13 11:18:00 1348

原创 Erlang Abstract Form--生成和获取

 Erlang Abstract Form--生成和获取 Smerl通过修改Erlang的内部解析树,并重新编译这棵解析树实现meta programming。为了理解Smerl,我们首先需要理解Erlang内部解析树的生成、表达形式和获取、修改的方法。Erlang把解析树称为Abstract Form,要获得某一个模块的AbstractForm有两种方法:    * 从已经编

2009-12-12 14:11:00 2459

原创 Erlang Abstract Form--Module声明和Form

前面已经介绍了,ErlyWeb中的Smerl已经具备了和Ruby样的元组编程,本文将会介绍实现元组编程的基本原理,在Smerl中,主要是用到了Erlang的Abstract Form来实现的,我们将具体考察Erlang Abstract Form的组成。方法很简单,参考Eralng文档的Abstract Form一节,用实际的例子加以验证。Abstract FormAbst

2009-12-11 22:22:00 1259

原创 Erlang 元编程

众所周知,Ruby具有一个特性,即元编程(meta programming)。在web开发中,它能够在处理数据库表与实体之间的映射,不仅能够在运行时生成Ruby实体类,而且还封装了数据库的操作,如添加、删除、修改、查询,这样在开发过程中能够省去不少代码的编写工作。所幸的是,ErlyWeb的作者Yariv Sadan在他的ErlyWeb框架利用Smerl实现了这个功能。 实际上Erlang和

2009-12-11 14:15:00 1472

原创 F#程序设计-F#语言基础之剖析一个F#程序

现在,通过前面的系列介绍,你可能想知道怎么把在FSI交互中的输入的F#代码转换成一个F#程序,但事实上,你在前看看到的每个每个代码片段都是一个全面的项目。大多数其他语言,如C#,需要一个明确的程序入口点,通常称为main方法,然而我们的F#程序迄今尚未定义任何特殊的标记,表明该程序应开始,在F#,单文件应用中代码文件的内容执行顺序是从上到下的,这个跟C语言有点类似,就是如果在一个函数中调用本代

2009-12-11 08:59:00 678

原创 F#程序设计-F#语言基础之核心类型(2)

聚合操作尽管list提供了一些方法来把数据组合在一起,但是没有什么特别,真正充满魔力的还是list的聚合操作,这个一个非常强大的功能,对于任何的集合来说,下面将介绍几个聚合函数。 1、List.mapList.map是根据提供的一个函数来创建一个新的list,新list的中每个元素都是根据提供的函数产生的值创建的,它的类型是:(a -> b) -> a l

2009-12-10 09:30:00 660

原创 在Ubuntu中配置ErlyWeb环境

由于更换使用了Winddows 7操作系统,在以前windows 2003上能正常开发的ErlyWeb在Win 7下面由于没有安装OpenSSL的缘故,而且主要的还是erlang的mysql驱动在windows系统下不能很好的工作,经常连接不上,需要重复执行N(N>3)次命令,很是恼火,由于Erlang大部分都是在Linux使用,所以想着在Linux下开发。在选择Linux时,考虑到Fedor

2009-12-09 23:24:00 1770

原创 F#程序设计-F#语言基础之核心类型(1)

前面,我们介绍了.NET平台提供的基本类型,但这些单独的类型不足以建立有效的程序。在F#库包括几个核心类型,让你组织,操作和处理数据,下面列出了一套在你的F#应用程序中需要用到的基本类型:SignatureNameDescriptionExampleunitUnitA unit value

2009-12-09 09:08:00 621

原创 F#程序设计-F#语言基础之函数(2)

3、函数的生命周期   在函数内定义的每个值都有一个特定的范围,也即是它使用的生命周期。默认情况下,定义后的值作用范围在于它所在的模块内,意味着值一旦申明后就可以在任意地方使用。然后,如果指定义在函数内,则它的作用范围仅限于它的函数内。因此,一个函数可以任何函数外面定义的值,但函数外面的其它地方则不能引用一个函数内部定义的值。下面,我们将定义一个在模块范围内的值moduleValue并使用在一个函

2009-12-08 08:43:00 537

原创 F#程序设计-F#语言基础之函数(1)

函数     到目前为止,我们已经介绍完了F#的基本类型,接下来将要介绍的是怎么定义并且使用函数。     定义函数跟定义值在方式上都是一样的,除了函数名后面带的值被称作参数外,下面定义了一个函数square,作用的将x作为参数,并且返回它的平方:> let square x = x * x;;val square : int -> int> square 4;;val it : in

2009-12-07 21:33:00 819

F# programe

微软最新推出来的函数式编程语言F#,文档为英文,里面详细描述了F#的类型结构、函数式编程以及面向对象编程

2010-03-26

GTK+ 2.0 教程.chm

GTK+ 2.0 教程.chm,介绍了在Linux系统下GTK的编程,是一个快速入门的好资料

2009-02-16

设计模式迷你手册.chm

设计模式迷你手册,介绍了几种常用的设计模型的实现

2009-02-16

空空如也

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

TA关注的人

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