关于作者

用户名:larryzhu
笔名:朱之光
地区: 上海
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



google ad

访问统计:
文章个数:210
评论个数:28
留言条数:4




Powered by BlogDriver 2.1

WHED-Work Hard Every Day!

 

记录人生点点滴滴

文章

关闭linux终端和VI的喇叭声(转)

关闭linux终端和VI的喇叭声(转)

http://www.linuxidc.com/Linux/2007-07/6189.htm


针对BASH

vi /etc/inputrc
或者
vi /$HOMEDIR/.inputrc

set bell-style none


对VIM

:set vb
或者
vi /$HOMEDIR/.vimrc

set vb

- 作者: 朱之光 2008年10月4日, 星期六 18:20  回复(0) |  引用(0) 加入博采

计算机中的回车换行(CRLF)详解

计算机中的回车换行(CRLF)详解


作者:朱之光

编过C程序的人都知道\n是换行符。在字符串中插入\n,就可以多行打印在屏幕上。如:printf(“hello\nWorld\n”);

可是为什么要叫做“回车换行”?

 

起源

首先要从打字机说起,打字机当前行打满后,要到下一行起始处开始打字需要两个步骤。
第一步,将纸卷从最右边推到最左边,这个叫回车(Carriage Return,缩写为CR);
第二步,将纸卷下卷一行,这个叫换行(Linefeed,缩写为LF)。

 

为什么要分成回车换行两步?为什么打字机不设计成一步完成?

因为打字机不像计算机,打错后删除字符就可以。一旦打错就是白纸黑字改不了。只能将纸卷推回到打错的地方打上一个错误标记,再在后面接着打正确的。而在有些情况下,为了打出一些特殊的格式,打字员还会只换行不回车。比如:打一斜列的’*’

回车换行符在ASCII码表中对应0x0A0x0D两个数字。对应C语言转义字符为’\r’’\n’。在编写计算机程序中很多人会用一个换行(LF)代替整个回车换行操作。也就是’\n’。这个要求计算机的显示系统能够正确处理并显示,显示的结果要根据不同的操作系统/软件环境来决定。
打印到控制台最好把'\r\n'写全。如果是要保存到文件,请看下面的“不同平台下的文本文件”章节。

 

回车还有用吗?

做一个试验:printf(“1111\r222”); => 输出结果为:2221,因为其中有一个回车符,将光标移动到了屏幕最左端。使得222覆盖了前面的111。最后一个1因没有被覆盖而被保留下来。

 

不同平台下的文本文件

Unix中的文本文件以一个换行符(\n)作为每一行结束的标记;

MS-DOS/Windows中的文本文件以一个回车加换行(\r\n)作为每一行结束的标记;

Macintosh中的文本文件以一个回车符(\r)作为每一行结束的标记。

- 作者: 朱之光 2008年09月15日, 星期一 18:34  回复(1) |  引用(0) 加入博采

Joomla 去除 Category 中的文章过滤列表
Joomla 去除 Category 中的文章过滤列表

作者:朱之光

Joomla 中的Category显示的时候总会显示一个带有过滤器的文章列表。如图:



尽管是一个有用的功能,可是在一些场合下并不需要显示给用户。
在Joomla设置中寻找良久也没有找到可以设置的地方。那么只有到源码中去走一趟了。

见代码:
Joomlas2go 1.5.3\htdocs\joomlas2go\components\com_content\views\category\view.html.php

Line 52处定义了许多参数。

        // Parameters
        $params->def('num_leading_articles',     1);
        $params->def('num_intro_articles',         4);
        $params->def('num_columns',                2);
        $params->def('num_links',                 4);
        $params->def('show_headings',             1);
        $params->def('show_pagination',            2);
        $params->def('show_pagination_results',    1);
        $params->def('show_pagination_limit',    1);
        $params->def('filter',                    1);


在其定义之后,立即为以下四个参数设置相应值。
        $params->set( 'show_headings', 0 );
        $params->set( 'show_pagination', 0 );
        $params->set( 'show_pagination_limit', 0 );
        $params->set( 'filter', 0 );

保存,再浏览页面,上图中的过滤器就不再显示了。


- 作者: 朱之光 2008年09月11日, 星期四 06:21  回复(0) |  引用(0) 加入博采

成员模版函数 Member template function
成员模版函数 Member template function

class A
{
public:
    template <class T>
    void print(T val)
    {
        cout << val << endl;
    }
};

void Test2()
{
    A a;

    a.print(1234);
    a.print("1234");
    a.print(22.33);
}

- 作者: 朱之光 2008年09月8日, 星期一 02:16  回复(0) |  引用(0) 加入博采

Staged Event Driven Architecture (SEDA) 介绍
摘要:Staged Event Driven Architecture (SEDA) 是加州大学伯克利分校研究的一套优秀的高性能互联网服务器架构模型。其设计目标是:支持大规模并发处理、简化系统开发、支持处理监测、支持系统资源管理。本文会先对两种目前被广泛使用的网络服务器架构模型进行介绍。然后对SEDA进行详细描述。 查看全文

- 作者: 朱之光 2008年08月12日, 星期二 16:31  回复(0) |  引用(0) 加入博采

Emacs 基本概念和基本命令

Emacs 基本概念和基本命令

作者:朱之光

Emacs有两个最重要的概念:Buffer和Window。

Buffer表示一份数据。可以是文件加载到内存后形成,也可以是一个尚未命名的草稿(类似MFC中的CDocument)

Window是显示Buffer的界面区,同时也是用户编辑Buffer的界面。整个Emacs界面就是由多个Window组成。(类似MFC中的View)

Emacs可以同时打开多个Buffer,用户可以自己确定哪些Buffer显示/隐藏。一个Window同一时间只能显示一个Buffer,但一个Buffer可以同时显示在多个Window上。(类似MFC中的多文档/多视图)

如下图所示:

Emacs提供了丰富的命令来进行相关操作。

Buffer commands:
 C-x C-f  Find file
 C-x C-s  Save file
 C-x k  Close file
 C-x s  Save some buffers
 C-x C-b  List buffers
 C-x b  Switch buffer

Editing commands:
 C-x u  Undo
 C-_  Undo
 C-s   forward search
 C-r   reverse search
 M-x replace-string/replace-regexp
   replace string/regexp
 M-%  replace while searching

Window commands:
 C-x o  Switch between windows
 C-x 1  Delete all but one window
 C-x 2  HSplit current window into 2 windows
 C-x 3  VSplit current window into 2 windows

System commands:
 C-x C-c  Quit Emacs

- 作者: 朱之光 2008年08月3日, 星期日 09:22  回复(0) |  引用(0) 加入博采

Vim编辑器配合ctags实现函数原型快速定位介绍 (摘)

Vim编辑器配合ctags实现函数原型快速定位介绍 (摘)

找一个源码目录,在终端上运行如下命令,会生成一个tags文件。

ctags -R

然后打开vi,输入类似如下的指令,tags=后面为刚才生成的tags文件的全路径名。
:set tags=/Your/Path/To/tags

或者 vim -t /Your/Path/To/tags

然后就可以尝试跳转了。如果是经常使用的工程,将上面的set一行写在你的.vimrc文件里即可。

查阅标识符原型:
光标移动到标识符上,按下Ctrl-]键。Vim会打开原型声明所在的文件,并定位到具体的行列。

Ctrl-t键,Vim将跳回刚才的位置。

g]键(先按g再按]):如果有同名的多个tag,可以用这两个键进行跳转,会提示选择序号。

- 作者: 朱之光 2008年07月30日, 星期三 17:58  回复(0) |  引用(0) 加入博采

vi 替换命令用法详解 (转)

vi 替换命令用法详解 (转)

转自:http://www.domsn.net/exurl.php/reply/641.html

格式
:[range]s/[pattern1]/[pattern2]/[g]

说明:

1、range 是命令执行范围的指定,可以使用百分号(%)表示所有行,使用点(.)表示当前行,使用美元符号($)表示最后一行。你还可以使用行号,例如10,20表 示第10到20行,.,$表示当前行到最后一行,.+2,$-5表示当前行后两行直到全文的倒数第五行,等等。

2、s 表示其后是一个替换命令。

3、pattern1 这是要查找的一个正则表达式,这篇文章中有一大堆例子。

4、pattern2 这是希望把匹配串变成的模式的正则表达式,这篇文章中有一大堆例子。

5、g 可选标志,带这个标志表示替换将针对行中每个匹配的串进行,否则则只替换行中第一个匹配串。

- 作者: 朱之光 2008年07月30日, 星期三 15:58  回复(0) |  引用(0) 加入博采

apt-get 介绍

apt的镜像源存放在/etc/apt/sources.list中。可以根据所在地区网络情况对文件进行修改。

http://ubuntu.cn99.com/ubuntu/对于中国地区速度非常理想。

apt-get命令介绍

apt-get update
更新同步本地package数据库。(每次修改/etc/apt/sources.list后需要执行)

apt-get clean && apt-get autoclean
清除本地package缓存

apt-get upgrade
尝试更新本地已经安装的所有package

apt-get dist-upgrade
更新整个发布版本到另外一个版本

apt-get dselect-upgrade
dselect更新

apt-get install mozilla-firefox
安装package

apt-get remove mozilla-firefox
删除package

apt-get --purge remove mozilla-firefox
删除package,包括所有配置文件

apt-get source mozilla-firefox
获取源码

apt-get build-dep mozilla-firefox
更新源码包依赖的源码

- 作者: 朱之光 2008年07月21日, 星期一 14:19  回复(0) |  引用(0) 加入博采

OpenSSL 编译

OpenSSL 编译

作者:朱之光

步骤:

1、安装Perl;

2、下载OpenSSL并解压到e:\work\openssl;

3、启动VS command prompt控制台;

4、cd e:\work\openssl

5、perl Configure VC-WIN32 --prefix=d:\openssl

6、ms\do_ms.bat

7、修改ms\nt.mak和ms\ntdll.mak

去掉CFLAG定义中的/WX。(/WX表示treat warning as error,该开关会导致openssl无法编译)

8、执行编译

nmake -f ms\nt.mak install             <-- Static Library

make -f ms\ntdll.mak install         <-- Dynamic Library

注意:
如果跳过第7步,会导致编译错误。如下:
.\crypto\cversion.c(105) : error C2220: warning treated as error - no 'object' file generated

- 作者: 朱之光 2008年07月17日, 星期四 16:32  回复(0) |  引用(0) 加入博采

.Net Framework自带的微型WebServer

.Net Framework自带的微型WebServer

在调试Asp.net网站程序的时候VS会启动一个WebServer协助调试,而不需要使用IIS。

这个WebServer就是随同.Net Framework一起发布的WebDev.WebServer。下面是其使用方法。

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer.EXE /port:1091 /path:"" /vpath:"/MyApp"

这个WebServer甚至可以随同你自己的应用程序一起发布:)。

使用限制:

WebDev.WebServer.exe仅接受本机访问。

- 作者: 朱之光 2008年07月13日, 星期日 19:32  回复(0) |  引用(0) 加入博采

Singleton -- fully lazy instantiation

Singleton -- fully lazy instantiation

public sealed class Singleton
{
    Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            return Nested.instance;
        }
    }
    
    class Nested
    {
        // Explicit static constructor to tell C# compiler
        // not to mark type as beforefieldinit
        static Nested()
        {
        }

        internal static readonly Singleton instance = new Singleton();
    }
}

- 作者: 朱之光 2008年06月30日, 星期一 18:03  回复(0) |  引用(0) 加入博采

OpenMP 介绍

OpenMP 介绍

 

作者:朱之光 (larry1zhu@gmail.com)

 

1、  简介

2、  Hello world!

3、  循环优化

4、  其他

5、  参考网址

 

简介

OpenMP是一种面向共享内存以及分布式共享内存的多处理器多线程并行编程接口。

SGI发起。官方网站www.openmp.org

 

Microsoft VC++ 从版本2005起加入了OpenMP支持。使得我们可以很轻易的写出并行运算的程序。

 

先看一个简单例子(Hello world!)

1、  创建一个简单的Windows Console工程;

2、  启用OpenMP支持

工程属性->C/C++->Language->OpenMP Support: Yes

3、  编写如下代码

  

4、  执行结果

5、  调整并行执行数量

设置环境变量:OMP_NUM_THREADS=10

(设置10个并行执行线程,也可以在程序内部调用omp_set_threads_num(10);实现。)

6、  再执行一次

  

下面对程序进一步说明。

1、  OpenMP需要包含omp.h,启用OpenMP支持后,编译器会自动引用vcomp.lib

2、  #pragma omp parallel是一个编译器指引,指导编译器生成相应代码;

3、  #pragma omp parallel 告诉编译器,后面{}中的程序块需要分配多个线程并行执行;

#pragma omp parallel

{

//此处的程序块会被多个线程并行执行

}

4、  进入程序块后OpenMP库代码会被执行,最终产生OMP_NUM_THREADS个工作程,并行执行程序块中的代码;

5、  只有所有线程都执行完后才会结束程序块,执行后面的代码。后面的代码将是单线程执行;

 

 

循环优化

循环优化是并行计算中的重要课题。OpenMP对循环优化提供了部分支持。

参看如下代码:

由于程序设置了并行线程数量为3,所以0-100的循环会被分割为三个部分:0-3334-6667-100。分别由三个线程并发执行。

结果如下:

 

 

其他

并行计算和多线程编程一样,主要需要考虑两个问题:数据访问的互斥和线程间的同步

OpenMP对此提供了相应的支持。请参考文后提供的网址。

 

 

参考网址

http://msdn.microsoft.com/en-us/library/tt15eb9t.aspx

 

- 作者: 朱之光 2008年06月10日, 星期二 15:29  回复(0) |  引用(0) 加入博采

Raid 介绍
摘要:Raid 0, Raid 1, Raid 5 介绍 查看全文

- 作者: 朱之光 2008年05月21日, 星期三 17:43  回复(0) |  引用(0) 加入博采

英文中精确时间表示

second                1 sec

millisecond          10^-3 sec

microsecond        10^-6 sec

nanosecond        10^-9 sec

- 作者: 朱之光 2008年05月6日, 星期二 10:16  回复(0) |  引用(0) 加入博采