自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 左右摆练习的一点感悟

先声明,这个感悟没有和田老师确认过。只是自己突然想到的。也许不正确,欢迎批评。一直寻找左右摆中的空的那个点和发放的结合时机。究竟空在哪里?假定双脚开立,身体重心落在两脚中间,身体挺直。现在1.身体向左微转2.此时松腰,曲膝,形成左侧身体的空。注意,动作幅度很小。3.两个手臂自然也开始向左翻转。4....

2012-12-31 00:20:39 3144 0

原创 用Clojure编写REST service 四 读取配置文件

最好的配置文件写法是采用clj文件,下面先把前面的a.xml文件改成a.clj文件,内容如下:{:mongodb "localhost" :listen_port 7777 :login_timeout 200 :check_timeout 200}这里定义了一个map。注意,...

2012-12-30 21:29:18 3148 0

原创 用Clojure编写REST service 三 返回JSON

前面的REST API还要继续改进,因为Ajax调用通常都需要JSON格式的响应,所以修改test.clj文件如下:(ns my-website.rest.test (:require [noir.response :as response]) (:use [noir.core :only...

2012-12-29 21:09:24 3155 0

原创 用Clojure编写REST service 二 Noir创建Rest API

前面一节介绍了Noir如何非常方便的创建一个web app,但是我的实际一个项目的需求中只需要REST API开发,页面部分都交给了html和Javascript,并不需要Noir在后台渲染网页。同样无需重新启动程序,在src目录下创建rest目录,里面有一个test.clj文件:$ tree ....

2012-12-29 20:05:52 3387 0

原创 用Clojure编写REST service 一 Noir创建web app

写一个真正的互联网应用,才可以观察Clojure的威力。本文使用Noir框架,参考官方站点:http://www.webnoir.org/执行三行命令:lein new noir my-website cd my-website lein run也可以在lein run命令前运行lein deps...

2012-12-29 18:14:19 3717 0

原创 Clojure语言九:for循环

宏for可以支持循环下面继续前面的xml的例子,演示如何用for遍历xml-seq返回的sequence.user=> (for [x r] (println "^" x)) (^ {:tag :service, :attrs nil, :content [{:tag :...

2012-12-28 18:28:21 3905 0

原创 Clojure语言八:Sequence

sequence定义sequence不是一般的list,实际上实现了ISeq接口,ISeq接口定义如下:package clojure.lang; /** * A persistent, functional, sequence interface * * ISeqs are immut...

2012-12-28 12:38:43 2630 0

原创 Clojure语言七:I/O

对应stdin, stdout和stderr, Clojure默认提供了*in*, *out*和*err* 三个symbols与之对应。可以使用binding宏进行重定向。比如下面的例子将*out* 重定向到文件中:user=> (binding [*out* (java.io.FileWr...

2012-12-28 10:50:42 3222 0

原创 Clojure语言六:def & var

Clojure提供了一种函数和宏之外的操作形式,special form. 数量有限,并且不是Clojure语言本身实现的。主要是下面几个:catch,def, do, dot ('.'), finally, fn, if, let, loop, monitor-enter, ...

2012-12-28 09:55:43 4319 0

原创 Clojure语言五:StructMap

参考官方文档:http://clojure.org/data_structures很多自定义的map拥有部分或者全部相同的keys,将这些相同的keys抽出来定义成StructMap类型,可以提升性能,节省内存。下面这篇中文文档写的非常好,推荐,我的例子来自于它:http://xumingming...

2012-12-27 20:32:53 2963 0

原创 Clojure语言四:解析XML

现在假定有一个xml文件内容如下: localhost 7777 200 200 Clojure提供了clojure.xml来解析xml文件。启动REPL会话,lein repl输入下面的命令:user=> (require ...

2012-12-27 16:31:55 3903 0

原创 Clojure语言三:容器

map{:a 1 :b 2}用{ } 括起来,key都由:开头,每对key/value中间用空格分开,也可以用,分开, ,被认为等价于一个空格vector用[ ] 括起来的,比如:[1 2 3]数组中的每个元素之间用空格分开set也使用{ }括起来,但是前面多一个#符号#{:a :b :c}同时没...

2012-12-27 16:23:16 2499 0

原创 Clojure语言二:Literal

Literal中文可能应该是字面常量。字符串如果要表示字符串的话,应该用双引号括起来,比如"hello,world", 允许跨多行,并且可以使用Java的escape characters. 参考:http://docs.oracle.com/javase/specs/jls/...

2012-12-27 10:13:57 2733 0

原创 Clojure语言一:Symbol

Symbol书写方式:1.开头不能是数字2.之后可以是文字或数字和 *, +, !, -, _, ?3./ 是特殊字符,在Symbol中只能出现一次,通常/左边是namespace。比如:my-namespace/foo。4. . 也是特殊字符,可以出现在Symbol中多次。比如:java.uti...

2012-12-27 09:51:39 3415 0

原创 Emacs 配置Clojure开发环境一 clojure-mode

发现Clojure太晚了,遗憾的是我是个很不错的Java程序员,同时还擅长Emacs, 对于lisp比较熟悉。居然不知道Clojure? 错过了多少青春年华。亡羊补牢,为时未晚。现在开始吧。clojure-mode提供了基本的语法高亮和缩进,很基本,但是必不可少。首先下载clojure-mode....

2012-12-26 18:25:50 5671 4

原创 用Leiningen创建第一个Clojure工程四

这节介绍如何将Clojure程序打包成一个可以执行的standalone Java程序。也就是所有的依赖都已经在jar包中,并且Main-Class manifest 也被正确设置。首先修改代码core.clj:(ns project1.core (:gen-class)) (defn -ma...

2012-12-26 18:22:59 3225 0

原创 用Leiningen创建第一个Clojure工程三

现在来看一下前面译文中碰到的代码:第一个是nil, 和Java的null值相同,和false一样可以表达条件判断不为true的情况。下面是解释:nil nil is a possible value of any data type in Clojure. nil has the same val...

2012-12-26 17:15:47 2758 0

原创 用Leiningen创建第一个Clojure工程二

在project1工程文件中添加一个clj-http依赖:(defproject project1 "0.1.0-SNAPSHOT" :description "FIXME: write description" :url "http://...

2012-12-26 15:50:31 3595 0

原创 用Leiningen创建第一个Clojure工程一

本文内容来自:https://github.com/technomancy/leiningen/blob/preview/doc/TUTORIAL.md不过只描述最简单的部分,不会冗长而让人知难而退。运行下面的命令,就可创建第一个工程$ lein new project1 Generating a...

2012-12-25 21:02:22 5168 0

原创 Leiningen 安装

Leiningen是一个Clojure项目管理工具。安装过程如下:1. 下载lein脚本https://raw.github.com/technomancy/leiningen/preview/bin/lein2. 复制到/usr/bin目录下,并允许执行mv lein /usr/bin/ roo...

2012-12-25 17:19:29 12243 0

原创 Clojure编程环境安装

不管是用什么开发环境,先要熟悉基本的命令行的使用方式。本文参考自官方站点:http://clojure.org/downloads首先确保已经安装了JDK5以上版本。然后下载Clojure1.4版本的release包: http://repo1.maven.org/maven2/org/cloju...

2012-12-25 14:49:06 4599 0

转载 深入理解按位异或运算符

http://kapok.blog.51cto.com/517862/129941

2012-12-24 15:11:14 2600 0

原创 Ubuntu终端使用的proxy的设置

在你的当前用户下的配置文件,比如~/.bashrc中添加几行:export http_proxy=http://proxy.yourcompany.com:8081/ export ftp_proxy=http://proxy.yourcompany.com:8081/ export https_...

2012-12-19 13:08:39 17035 1

原创 用RequireJS编写JavaScript模块

模块化编写JavaScript,在web前端程序不断扩大的时候,是一个很好的重构技术。下面的例子有两个模块,artDialog模块依赖jquery和jquery.artDialog库,提供了弹出错误对话框的功能。require.config({ paths: { "jquery&q...

2012-12-17 22:01:14 3582 3

原创 复用jquery的ajax调用模块

每次都写一堆.ajax,真的很麻烦。因此封装在一个模块中比较好。第一,ajax调用出错时,自动弹出错误对话框,对话框使用的artDialog。第二,提供基本的post,get简单调用方式。参数有限,适合就好。第三,支持中英文。下面是我的代码,大家可以自己扩充:(function (window, ...

2012-12-15 19:04:08 4732 0

原创 RequireJS管理js文件依赖示例

在使用RequireJS管理依赖之前,需要在html页面上手动引入一堆js文件,要注意依赖顺序。这倒没什么,最关键的是我认为html文件中搞这么多东西显得凌乱不堪,而且会影响web美工的工作。现在看看RequireJS带来的整洁的特点:下面有个html页面: configuratio...

2012-12-13 16:02:47 5817 0

原创 enable_share_from_this功能介绍

这个类很有意思,让一个被shared_ptr管理生命周期的类能够在自己的成员函数内部访问shared_ptr。有点绕。举个例子,下面的代码在函数f内部通过this构造了shared_ptr对象,然后打印x_的值。class B { public: B(): x_(4) { ...

2012-12-11 15:07:35 8451 0

原创 weak_ptr解除循环引用

先看一下shared_ptr的正确用法:class A { public: A() { cout << "A::A()" << endl; } ~A() { cout << &...

2012-12-11 10:14:09 3995 0

原创 weak_ptr的构造函数

weak_ptr是用来解决shared_ptr的循环引用问题的。先看看如何构造weak_ptr:int main(int argc, char** argv) { shared_ptr p(new int(5)); weak_ptr q(p); weak_ptr ...

2012-12-10 22:45:54 4046 0

原创 如果喜欢我的文章就请点击里面的链接, 投我一票!

http://vote.blog.csdn.net/item/blogstar/sheismylife感谢支持!

2012-12-10 21:48:45 2316 0

原创 scoped_ptr

先看一个简单的例子:#include using namespace std; #include using namespace boost; class A { public: A() { cout << "A::A()" <...

2012-12-10 15:19:26 3045 0

原创 checked_delete提升安全性

boost提供了一个安全的用于delete模板函数,在文件checked_delete.hpp中:template inline void checked_delete(T * x) { // intentionally complex - simplification causes re...

2012-12-10 15:09:35 4608 0

原创 noncopyable

如果自己设计的一个类,不想支持复制操作,一般需要将copy constructor和copy assignment声明为private.例子:#include #include using namespace std; class A { public: A(int x = 0): ...

2012-12-09 20:36:29 5797 1

原创 function object研究之十九 bind

终于到了最后一篇(至少目前我认为是最后一篇) vector::iterator itor = std::find_if(v.begin(), v.end(), boost::bind(Foo, _1));上面的代码find_if的第三个参数是bind的返回值,看一下bind定...

2012-12-08 20:53:22 2415 0

原创 function object研究之十八 bind_t

bind_t模板定义在bind.hpp中:#ifndef BOOST_NO_VOID_RETURNS template class bind_t { public: typedef bind_t this_type; bind_t(F f, L const & l):...

2012-12-08 20:42:49 2704 1

原创 function object研究之十七 list_av_N

已经走了好远好远,现在开始回到我们的目标list_av_N模板:template struct list_av_1 { typedef typename add_value::type B1; typedef list1 type; }; template struct list...

2012-12-08 16:01:19 2194 0

原创 function object研究之十六 listN分析

list2 通过继承storage2来包含两个成员a1_和a2_struct logical_and; struct logical_or; template class list2: private storage2 { private: typedef storage2 base_...

2012-12-08 15:50:11 2179 0

原创 function object研究之十五 list1分析

首先看一下bind.hpp中的list0模板定义:class list0 { public: list0() {} template T & operator[] (_bi::value & v) const { return v.get(); } t...

2012-12-08 15:44:18 2404 1

原创 function object研究之十四 unwrap

template struct unwrapper { static inline F & unwrap( F & f, long ) { return f; } template static inline F2 & un...

2012-12-08 14:52:47 2696 0

原创 function object研究之十三 result_traits

result_traits模板定义在bind.hpp中,属于_bi namespace中。// result_traits template struct result_traits { typedef R type; }; #if !defined(BOOST_NO_TEMPLATE...

2012-12-08 14:45:24 2625 0

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