本文链接:http://codingstandards.iteye.com/blog/840055

用途说明

Graphviz (Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。它也提供了供其它软件使用的库。 Graphviz是一个自由软件,其授权为Common Public License。其Mac版本曾经获得2004年的苹果设计奖。Graphviz包括很多命令行工具,dot命令是一个用来将生成的图形转换成多种输出格 式的命令行工具,其输出格式包括PostScript,PDF,SVG,PNG,含注解的文本等等。neato命令用于spring model的生成(在Mac OS版本中称为energy minimized)。twopi命令用于放射状图形的生成。circo命令用于圆形图形的生成。fdp命令另一个用于生成无向图的工具。dotty命令 一个用于可视化与修改图形的图形用户界面程序。lefty命令是一个可编程的(使用一种被EZ影响的语言[4])控件,它可以显示DOT图形,并允许用户 用鼠标在图上执行操作。Lefty可以作为MVC模型的使用图形的GUI程序中的视图部分。 DOT语言是一种文本图形描述语言。它提供了一种简单的描述图形的方法,并且可以为人类和计算机程序所理解。DOT语言文件通常是具有.gv或是.dot 的文件扩展名。本文将主要介绍从源代码安装Graphviz工具以及dot命令的使用方式。

常用参数

格式:dot -T<type> -o<outfile> <infile.dot>

输入文件是<infile.dot>,生成的格式由<type>指定,生成的文件是<outfile>。

其中-T<type>包括:

-Tps (PostScript),

-Tsvg -Tsvgz (Structured Vector Graphics),

-Tfig (XFIG  graphics),

-Tmif  (FrameMaker graphics),

-Thpgl (HP pen plotters),

-Tpcl (Laserjet printers),

-Tpng -Tgif (bitmap graphics),

-Tdia (GTK+ based diagrams),

-Timap (imagemap files for httpd servers for each node or edge  that  has a non-null "href" attribute.),

-Tcmapx (client-side imagemap for use in html and xhtml).

下面简单介绍下DOT语言的语法:

无向图 :在最简单的应用中,DOT语言可以用来描述一张无向图。无向图显示了对象间最简单的关系,例如人之间的友谊。使用关键字graph开始一张无向图的定义,并用大括号包含要描述的节点,双连字号(--)被用来描述节点间的关系。另外,一行的末尾需要加上分号(;)。
 graph graphname {
     a -- b -- c;
     b -- d;
 }

有向图
:类似于无向图,DOT语言也可以用来描述一张有向图,类似于流程图和树状图。其语法与无向图相似,但要在图的最开始使用关键字'digraph',并用箭头(->)表示节点直接的关系。
 digraph graphname {
     a -> b -> c;
     b -> d;
 }
属性
:DOT语言中,可以对节点和边添加不同的属性。这些属性可以控制节点和边的显示样式,例如颜色,形状和线形。可以在语句和句尾的分号间放置一对方括号,
并在其中中放置一个或多个属性-值对。多个属性可以被逗号和空格(, )分开。节点的属性被放置在只包含节点名称的表达式后。
 graph graphname {
     // label属性可以改变节点的显示名称
     a [label="Foo"];
     // 节点形状被改变了
     b [shape=box];
     // a-b边和b-c边有相同的属性
     a -- b -- c [color=blue];
     b -- d [style=dotted];
 }
注释
:DOT语言支持C语言与C++风格的单行与多行注释。另外,也支持Shell脚本风格的以#开头的注释。
 // 单行注释
 /* 多行
    注
    释 */
 # 如此的行也会被忽略。

使用示例

示例一 从源代码安装Graphviz

[root@jfht setup]# wget "http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.26.3.tar.gz"

--2010-12-12 09:10:26--  http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.26.3.tar.gz

正在解析主机 www.graphviz.org... 192.20.225.20

Connecting to www.graphviz.org|192.20.225.20|:80... 已连接。

已发出 HTTP 请求,正在等待回应... 200 OK

长度:17092429 (16M) [application/x-gzip]

Saving to: `graphviz-2.26.3.tar.gz'

100%[==========================================================================================>]
17,092,429   174K/s   in 1m 44s

2010-12-12 09:12:10 (161 KB/s) - `graphviz-2.26.3.tar.gz' saved [17092429/17092429]

[root@jfht setup]# tar zxf graphviz-2.26.3.tar.gz

[root@jfht setup]# cd graphviz-2.26.3

[root@jfht graphviz-2.26.3]# ls

aclocal.m4       builddate.h      config.h.in    configure.old 
dot.demo     graphviz.sln        INSTALL      makearch      plugin

ast_common.h     ChangeLog        config.h.old   contrib       
Doxyfile     graphviz.spec       INSTALL.old  Makeargs      README

ast_common.h.in  cmd              config.iffe    COPYING       
Doxyfile.in  graphviz.spec.in    lib          Makefile.am   rtest

AUTHORS          compat_getopt.h  Config.mk.old  cpl1.0.txt    
features     graphviz.vcproj     libltdl      Makefile.in   share

autogen.sh       compat.h         configure      debian        
graphs       graphviz_version.h  m4           Makefile.old  tclpkg

awk              config           configure.ac   doc           
graphviz.7   iffe                macosx       NEWS          windows

[root@jfht graphviz-2.26.3]# ./configure --prefix=/usr

checking build system type... i686-pc-linux-gnu

checking host system type... i686-pc-linux-gnu

checking for a BSD-compatible install... /usr/bin/install -c

checking whether build environment is sane... yes

checking for a thread-safe mkdir -p... /bin/mkdir -p

checking for gawk... gawk

checking whether make sets $(MAKE)... yes

checking for style of include used by make... GNU

checking for gcc... gcc

checking for C compiler default output file name... a.out

checking whether the C compiler works... yes

省略输出

----------------------------------------------------------------

graphviz-2.26.3 will be compiled with the following:

options:

cgraph:        No (disabled by default - experimental)

digcola:       Yes

expat:         No (missing library)
  fontconfig:    No (missing fontconfig-config)

freetype:      No (missing freetype-config)

glut:          No (missing GL/glut.h)

gts:           No (gts library not available)

ipsepcola:     No (disabled by default - C++ portability issues)

ltdl:          Yes

ortho:         No (disabled by default - experimental)

png:           No (missing png.h)

jpeg:          No (missing header)

sfdp:          Yes

shared:        Yes

static:        No (disabled by default)

commands:

dot:           Yes (always enabled)

neato:         Yes (always enabled)

fdp:           Yes (always enabled)

circo:         Yes (always enabled)

twopi:         Yes (always enabled)

gvpr:          Yes (always enabled)

lefty:         No (missing Xaw headers)

smyrna:        No (disabled by default - experimental)

plugin libraries:

dot_layout:    Yes (always enabled)

neato_layout:  Yes (always enabled)

core:          Yes (always enabled)

devil:         No (missing library)

gd:            Yes (internal)

gdiplus:       No (disabled by default - Windows only)

gdk_pixbuf:    No (gdk_pixbuf library not available)

ghostscript:   No (missing headers)

glitz:         No (disabled by default - incomplete)

gtk:           No (gtk library not available)

lasi:          No (lasi library not available)

ming:          No (disabled by default - incomplete)

pangocairo:    No (pangocairo library not available)

quartz:        No (disabled by default - Mac only)

rsvg:          No (rsvg library not available)

visio:         No (disabled by default - experimental)

xlib:          No (disabled or unavailable)

language extensions:

gv_sharp:      No (swig not available)

gv_guile:      No (swig not available)

gv_io:         No (disabled by default - no swig support yet)

gv_java:       No (swig not available)

gv_lua:        No (swig not available)

gv_ocaml:      No (swig not available)

gv_perl:       No (swig not available)

gv_php:        No (swig not available)

gv_python:     No (swig not available)

gv_python23:   No (disabled by default - for multiversion installs)

gv_python24:   No (disabled by default - for multiversion installs)

gv_python25:   No (disabled by default - for multiversion installs)

gv_python26:   No (disabled by default - for multiversion installs)

gv_R:          No (swig not available)

gv_ruby:       No (swig not available)

gv_tcl:        No (tcl not available)

tcldot:        No (tcl not available)

tclpathplan:   No (tcl not available)

gdtclft:       No (tcl not available)

tkspline:      No (tk not available)

[root@jfht graphviz-2.26.3]#

[root@jfht graphviz-2.26.3]# make && make install

test -z "/usr/share/graphviz/doc/html" || /bin/mkdir -p "/usr/share/graphviz/doc/html"

test -z "/usr/share/man/man7" || /bin/mkdir -p "/usr/share/man/man7"

/usr/bin/install -c -m 644 'graphviz.7' '/usr/share/man/man7/graphviz.7'

test -z "/usr/include/graphviz" || /bin/mkdir -p "/usr/include/graphviz"

/usr/bin/install -c -m 644 'graphviz_version.h' '/usr/include/graphviz/graphviz_version.h'

test -z "/usr/share/graphviz/doc" || /bin/mkdir -p "/usr/share/graphviz/doc"

/usr/bin/install -c -m 644 'AUTHORS' '/usr/share/graphviz/doc/AUTHORS'

/usr/bin/install -c -m 644 'COPYING' '/usr/share/graphviz/doc/COPYING'

/usr/bin/install -c -m 644 'ChangeLog' '/usr/share/graphviz/doc/ChangeLog'

/usr/bin/install -c -m 644 'NEWS' '/usr/share/graphviz/doc/NEWS'

/usr/bin/install -c -m 644 'cpl1.0.txt' '/usr/share/graphviz/doc/cpl1.0.txt'

make[2]: Leaving directory `/root/setup/graphviz-2.26.3'

make[1]: Leaving directory `/root/setup/graphviz-2.26.3'

You have new mail in /var/spool/mail/root

[root@jfht graphviz-2.26.3]#

示例二 操作系统的进程状态转换图

下面的例子来自http://www.graphviz.org/Gallery/undirected/process.html

[root@jfht ~]# cat process.gv

graph G {

run -- intr;

intr -- runbl;

runbl -- run;

run -- kernel;

kernel -- zombie;

kernel -- sleep;

kernel -- runmem;

sleep -- swap;

swap -- runswap;

runswap -- new;

runswap -- runmem;

new -- runmem;

sleep -- runmem;

}

[root@jfht ~]# dot -Tpng -oprocess.png process.gv

Format: "png" not recognized. Use one of: canon cmap cmapx cmapx_np dot
eps fig gd gd2 gif gv imap imap_np ismap plain plain-ext ps ps2 svg svgz
tk vml vmlz wbmp xdot

[root@jfht ~]# dot -Tgif -oprocess.gif process.gv

[root@jfht ~]# dot -Tsvg -oprocess.svg process.gv

[root@jfht ~]#

示例三 中文支持

要想在dot文件中使用中文,必须要安装有fontconfig-devel和freetype-devel。如示例一所示的安装中就没有这两项,

fontconfig:    No (missing fontconfig-config)

freetype:      No (missing freetype-config)

先得安装上,先把Linux安装盘挂载上。安装步骤如下

[root@jfht software]# find . -name "*fontconfig*"

./Server/fontconfig-devel-2.4.1-7.el5.i386.rpm
./Server/fontconfig-2.4.1-7.el5.i386.rpm
[root@jfht software]#
[root@jfht software]#
[root@jfht software]# rpm -qa | grep fontconfig

fontconfig-2.4.1-7.el5
[root@jfht software]# rpm -ivh ./Server/fontconfig-devel-2.4.1-7.el5.i386.rpm

warning: ./Server/fontconfig-devel-2.4.1-7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
        freetype-devel >= 2.1.4 is needed by fontconfig-devel-2.4.1-7.el5.i386
[root@jfht software]# find . -name "freetype-devel*rpm"

./Server/freetype-devel-2.2.1-21.el5_3.i386.rpm
[root@jfht software]# rpm -ivh ./Server/freetype-devel-2.2.1-21.el5_3.i386.rpm ./Server/fontconfig-devel-2.4.1-7.el5.i386.rpm

warning: ./Server/freetype-devel-2.2.1-21.el5_3.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:freetype-devel         ########################################### [ 50%]
   2:fontconfig-devel       ########################################### [100%]
[root@jfht software]#

安装好这两个rpm包之后,再到graphviz源代码目录,执行

./configure --prefix=/usr

make && make install

这样dot就可以支持中文了。首先我们编写一个简单的dot文件。

[root@jfht ~]# cat cn.gv

graph G {
        中文    --   英文
}

[root@jfht ~]# dot -Tgif -ocn.gif cn.gv

Error: Invalid 2-byte UTF8 found in input. Perhaps "-Gcharset=latin1" is needed?

要注意的是:dot不支持gbk编码的中文,但可以支持UTF8的中文,所以先把它转换成UTF8编码的。

[root@jfht ~]# iconv -f GBK -t UTF8 cn.gv >cn8.gv

[root@jfht ~]# dot -Tgif -ocn8.gif cn8.gv

[root@jfht ~]#

示例四 改变中文字体

默认的中文字体是宋体的,如果想改成仿宋、黑体、幼圆或别的字体,在Linux下可能没有,那么可以在Windows下找到相应的字体文件,上传的LInux上使用。步骤如下:

到C:\Windows\Fonts下找到simyou.ttf,用sftp上传到Linux下的/usr/share/fonts/chinese/TrueType目录。

[root@jfht ~]# cd /usr/share/fonts/chinese/TrueType

[root@jfht TrueType]# mkfontscale


[root@jfht TrueType]# mkfontdir


[root@jfht TrueType]# fc-cache


[root@jfht TrueType]# cat fonts.dir

注意下面内容中粗体部分。

62
fangsong.ttf -misc-fangsong_gb2312
-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
fangsong.ttf -misc-fangsong_gb2312-medium-r-normal--0-0-0-0-p-0-iso10646-1
simhei.ttf -misc-simhei
-medium-r-normal--0-0-0-0-p-0-cns11643-1
simhei.ttf -misc-simhei-medium-r-normal--0-0-0-0-p-0-cns11643-2
simhei.ttf -misc-simhei-medium-r-normal--0-0-0-0-p-0-cns11643-3
simhei.ttf -misc-simhei-medium-r-normal--0-0-0-0-p-0-gb18030.2000-0
simhei.ttf -misc-simhei-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
simhei.ttf -misc-simhei-medium-r-normal--0-0-0-0-p-0-iso10646-1
simhei.ttf -misc-simhei-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
simhei.ttf -misc-simhei-medium-r-normal--0-0-0-0-p-0-jisx0208.1990-0
simsun.ttc -misc-simsun
-medium-r-normal--0-0-0-0-p-0-ascii-0
simsun.ttc -misc-simsun-medium-r-normal--0-0-0-0-p-0-cns11643-1
simsun.ttc -misc-simsun-medium-r-normal--0-0-0-0-p-0-cns11643-2
simsun.ttc -misc-simsun-medium-r-normal--0-0-0-0-p-0-cns11643-3
simsun.ttc -misc-simsun-medium-r-normal--0-0-0-0-p-0-gb18030.2000-0
simsun.ttc -misc-simsun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
simsun.ttc -misc-simsun-medium-r-normal--0-0-0-0-p-0-iso10646-1
simsun.ttc -misc-simsun-medium-r-normal--0-0-0-0-p-0-iso8859-1
simsun.ttc -misc-simsun-medium-r-normal--0-0-0-0-p-0-jisx0208.1983-0
simsun.ttc -misc-simsun-medium-r-normal--0-0-0-0-p-0-jisx0208.1990-0
simsun.ttc -misc-simsun-medium-r-normal--0-0-0-0-p-0-koi8-r
simyou.ttf -misc-youyuan
-medium-r-normal--0-0-0-0-m-0-cns11643-2
simyou.ttf -misc-youyuan-medium-r-normal--0-0-0-0-m-0-gb2312.1980-0
simyou.ttf -misc-youyuan-medium-r-normal--0-0-0-0-m-0-iso10646-1
stcaiyun.ttf -misc-stcaiyun
-medium-r-normal--0-0-0-0-p-0-ascii-0
stcaiyun.ttf -misc-stcaiyun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
stcaiyun.ttf -misc-stcaiyun-medium-r-normal--0-0-0-0-p-0-iso10646-1
stcaiyun.ttf -misc-stcaiyun-medium-r-normal--0-0-0-0-p-0-iso8859-1
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-ascii-0
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-big5-0
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-big5.eten-0
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-cns11643-1
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-cns11643-2
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-iso10646-1
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-iso8859-10
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-iso8859-13
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-iso8859-15
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-iso8859-16
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-iso8859-1
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-iso8859-2
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-iso8859-3
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-iso8859-4
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-iso8859-9
ukai.ttf -misc-ar pl zenkai uni-medium-r-normal--0-0-0-0-p-0-suneu-greek
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-ascii-0
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-big5-0
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-big5.eten-0
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-cns11643-1
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-cns11643-2
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-iso10646-1
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-iso8859-10
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-iso8859-13
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-iso8859-15
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-iso8859-16
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-iso8859-1
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-iso8859-2
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-iso8859-3
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-iso8859-4
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-iso8859-9
uming.ttf -misc-ar pl shanheisun uni-medium-r-normal--0-0-0-0-p-0-suneu-greek
[root@jfht TrueType]#

上面粗体标出的部分就是中文字体的名称,比如
fangsong_gb2312、
simhei、
simsun、
youyuan、
stcaiyun。

[root@jfht ~]# dot -Nfontname=fangsong_gb2312 -Tgif -ocn8_fangsong_gb2312.gif cn8.gv

[root@jfht ~]# dot -Nfontname=simhei -Tgif -ocn8_simhei.gif cn8.gv
                             
[root@jfht ~]# dot -Nfontname=simsun -Tgif -ocn8_simsun.gif cn8.gv
     
[root@jfht ~]# dot -Nfontname=youyuan -Tgif -ocn8_youyuan.gif cn8.gv
           
[root@jfht ~]# dot -Nfontname=stcaiyun -Tgif -ocn8_stcaiyun.gif cn8.gv
             
[root@jfht ~]# ls -l cn8*

-rw-r--r-- 1 root root 922 12-12 15:58 cn8_fangsong_gb2312.gif
-rw-r--r-- 1 root root 902 12-12 15:38 cn8.gif
-rw-r--r-- 1 root root  35 12-12 15:35 cn8.gv
-rw-r--r-- 1 root root 926 12-12 16:00 cn8_simhei.gif
-rw-r--r-- 1 root root 866 12-12 16:01 cn8_simsun.gif
-rw-r--r-- 1 root root 974 12-12 16:03 cn8_stcaiyun.gif
-rw-r--r-- 1 root root 876 12-12 16:02 cn8_youyuan.gif
[root@jfht ~]#

问题思考

相关资料

【1】维基百科   Graphviz

【2】维基百科   DOT语言

【3】啄木鸟社区  Graphviz

【4】age的个人空间  用Dot绘图

【5】海贼’blog   linux dot 绘图

【6】daxuxu   graphviz dot简介

【7】openstudy  英文版linux安装中文字体

返回 我使用过的Linux命令系列总目录

Linux命令之dot - 绘制DOT语言脚本描述的图形的更多相关文章

  1. linux命令行下使用R语言绘图

    系统:centos 6.4 64bit 环境安装参考:http://hi.baidu.com/solohac/item/4a18e78f1bef9b5825ebd99c 在R语言中可以使用png()等 ...

  2. 【改造Linux命令之rm - 删除文件或目录-】

    用途说明 rm命令是常用的命令,用来删除文件或目录(remove files or directories).它也是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比 ...

  3. 十年linux命令总结

    十年linux命令总结 本文链接: http://codingstandards.iteye.com/blog/786653 关于命令类型划分 本表中列出了我穷尽了我所有的记忆整理出来的Linux命令 ...

  4. shell脚本语言与linux命令的联系与区别

    使用linux肯定是要会使用命令的,就算提供有用户界面,绝大部分功能还是要通过命令行去操作的.而shell脚本语言也是运行在linux上的脚本语言,对于服务器运维人员也是几乎必须要掌握的.而shell ...

  5. 【读书笔记】Linux命令行与Shell脚本编程大全

    Linux命令行与Shell脚本编程大全 5.2 shell 的父子关系 命令分组 Command Grouping 主要有两种形式: 一种以小括号包括,命令之间以冒号分隔.也被称为 进程列表: 注意 ...

  6. 《Linux命令行与shell脚本编程大全》 第一、二章 学习笔记

    第一章:初识Linux shell Linux内核负责以下4个主要功能: 1.系统内存管理 2.软件程序管理 3.硬件设备管理 4.文件系统管理 1.系统内存管理 内核不仅管理服务器上的可用物理内存, ...

  7. Linux命令行与Shell脚本编程大全

    快来参加<Linux命令行与Shell脚本编程大全>学习吧,提升技能,展示自我. 点击链接即可进入学习:https://s.imooc.com/WTmCO6H 课程亮点适合零基础读者,从零 ...

  8. 绘制dot 图

    常用参数 格式:dot -T<type> -o<outfile> <infile.dot> 输入文件是<infile.dot>,生成的格式由<ty ...

  9. 《Linux命令行与shell脚本编程大全 第3版》

    第一部分 Linux 命令行 第1章  初识Linux she1.1   什么是Linux 21.1.1 深入探究Linux 内核 31.1.2 GNU 工具 61.1.3 Linux 桌面环境 81 ...

随机推荐

  1. FTP原理和cent OS vsFTPd架设

    1.ftp为明码传输 2.客户端和服务端采用两条链路来分别进行命令和数据的传输.数据传输的模式分为主动链接和被动链接. 3.客户端在需要数据的时候,会告知服务器端采取主动或者被动的方式来链接. 4.如 ...

  2. [BZOJ 3942] [Usaco2015 Feb] Censoring 【KMP】

    题目链接:BZOJ - 3942 题目分析 我们发现,删掉一段 T 之后,被删除的部分前面的一段可能和后面的一段连接起来出现新的 T . 所以我们删掉一段 T 之后应该接着被删除的位置之前的继续向后匹 ...

  3. SAAS相关技术要点

    这篇文章本来是我们开发组内部用的一个小文档.因为我们公司以前没有做SAAS的经验,就成立了一个小组做一做这方面的技术前探,我是成员之一.这篇文档想从宏观的层面把开发一个SAAS应用所要用到的技术点稍微 ...

  4. jQuery&HTML&CSS3实现垂直手风琴折叠菜单方法讲解

    在网页制作中我们常常需要折叠式的菜单,在折叠菜单中,手风琴特效的菜单是非常受欢迎,下面就讲解使用jQuery+HTML+CSS3实现垂直手风琴折叠菜单的方法. jQuery实现垂直手风琴折叠菜单示例代 ...

  5. android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事

    1.1 手机常见分辨率: 4:3VGA     640*480 (Video Graphics Array)QVGA  320*240 (Quarter VGA)HVGA  480*320 (Half ...

  6. TCP/IP FTP/TFTP

    引言 从一台计算机向另一台计算机传送文件是在连网或互联网环境中最常见的任务.而FTP和TFTP就是这样的协议. 关于文件传输协议FTP? 端口21使用服务TCP [FTP模型] FTP连接? 1.控制 ...

  7. ClassNotFoundException

    在 java socket 通信,使用 ObjectInputStream 的 readObject 时, 出现了问题. ServerProject 问题描述是这样的: java.lang.Class ...

  8. SolrJ总结

    1.solrJ概念 solrJ是Java连接solr进行查询检索和索引更新维护的jar包. 2.项目引入solrJ相关jar包 对于maven工程,直接将下面内容加入到pom文件中即可. <de ...

  9. HDOJ/HDU 2566 统计硬币(公式~遍历~)

    Problem Description 假设一堆由1分.2分.5分组成的n个硬币总面值为m分,求一共有多少种可能的组合方式(某种面值的硬币可以数量可以为0). Input 输入数据第一行有一个正整数T ...

  10. Android学习笔记(六)Fragment的生命周期

    在上一篇博文中对Fragment做了简单的介绍,现在再来探讨一下Fragment的生命周期. 一.Fragment的几种状态: 与Activity类似,Fragment也有一下几种状态: · 活动状态 ...