from : http://hi.baidu.com/ethtech/blog/item/6cdbbedd358a0aa6cc11661e.html
定义

  ROLAP表示基于关系数据库的OLAP实现(Relational OLAP)。以关系数据库为核心,以关系型结构进行多维数据的表示和存储。ROLAP将多维数据库的多维结构划分为两类表:一类是事实表,用来存储数据和维关键字;另一类是维表,即对每个维至少使用一个表来存放维的层次、成员类别等维的描述信息。维表和事实表通过主关键字和外关键字联系在一起,形成了“星型模式”。对于层次复杂的维,为避免冗余数据占用过大的存储空间,可以使用多个表来描述,这种星型模式的扩展称为“雪花模式”。

   MOLAP表示基于多维数据组织的OLAP实现(Multidimensional OLAP)。以多维数据组织方式为核心,也就是说,MOLAP使用多维数组存储数据。多维数据在存储中将形成“立方块(Cube)”的结构,在MOLAP中对“立方块”的“旋转”、“切块”、“切片”是产生多维数据报表的主要技术。

特性分析
    从技术角度来说,ROLAP(MSTR实现)和MOLAP(Cognos等实现)各有千秋。前者基于关系型数据库,它的OLAP引擎就是将用户的OLAP操作,如上钻下钻过滤合并等,转换成SQL语句提交到数据库中执行,并且提供聚集导航功能,根据用户操作的维度和度量将SQL查询定位到最粗粒度的事实表上去。相比较而言,MOLAP事先将汇总数据计算好,存放在自己特定的多维数据库中,用户的OLAP操作可以直接映射到多维数据库的访问,不通过SQL访问。可以说ROLAP提供了更大的灵活度,MOLAP提供了更加快速的相应速度,确实相比Metacube和Cognos,前者的操作复杂些,不过这应该不成问题,是可以改善的。

    针对OLAP多维分析的应用,虽然多维数据库效率较高,但是带来的问题是,数据装载的效率非常低,因为其实就是将多维的数据预先填好,这样出报表的效率高了,装载就复杂许多了,而且仓库重新构造后,全部数据都要重新装载,并且随着数据量增量过大维护成本较高,容易引起“数据爆炸”,这是molap的大体特性。rolap就是关系性数据库,但是针对多维报表,可以通过事实表连维表的方式来构造,对于数据库性能要求比较高,各个rolap厂家针对数据仓库应用,建立索引等优化措施以减少生成报表的开销,仓库调整后,除非特别大的调整,同常都不需要重新装载全部数据。

posted @ 2009-06-01 16:28 小马歌 阅读(398) | 评论 (0)编辑 收藏
 
最近在做项目的时候,实现一个很简单的加入收藏夹的功能,网上代码多的是,如下就是我整理的一个版本

 

 

 

      注:如果该页面没有放在服务器(如tomcat)上 ,而是放在普通文件夹中(如桌面),则浏览器状态栏会报没有权限的错误,具体原因有待研究,不属于本次讨论的范围。

      我将以上代码放到服务器中并执行时,IE7浏览器状态栏报错,“找不到元素”,但同事的浏览器可以正常访问,也能添加到收藏夹。故确定是我的浏览器的问题。

Google搜到国外一个帖子,如下:

GWT not working on Internet explorer 7 (IE7) giving "Element not found" javascript error

 

GWT web application started to give "Element not found" javascript error message on Internet Explorer 7 (IE7)? This application worked fine on Internet Explorer 6 and Firefox 2. Now your best guess would be; GWT not working on IE 7 properly. Wasn't it? 

 

But the scenario became confusing and unbelievable because your application worked fine on IE7 in some machines while not on some others. Have you faced this issue? Then the below solution is for you.

 

This issue can be fixed by a making a change on windows registry. 

 

Steps to follow are;

1. Open up the Registry editor - type regedit on command prompt.

 

2. Look for the key shown below

HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0\win32

 

3. Click on the "Default" row and see the value there. If it's value is "C:\WINDOWS\system32\shdocvw.dll", then that is what causes the above mentioned issue. If you have installed Windows in a different drive; C:\ must be replaced with the that letter.

 

4. Replace that value with "C:\WINDOWS\system32\ieframe.dll".

          5. Now restart IE7, and load your GWT application.

 

    

     于是猛然想起,我之前也装过IE8的测试版,但是后来又被我卸载了,原因就在于此,按照上述方法,更改了注册表,重启IE7,运行没有问题。

 

       另外也顺便收藏了IE和FF都适用的方法:

 

 

写完手工。

posted @ 2009-05-07 17:24 小马歌 阅读(2130) | 评论 (2)编辑 收藏
 
宝安公司火车售票处 13823171068 深圳市宝安区广深公路沙井段114号
深圳宝安区石岩永安运输服务部火车售票处 13510821118 深圳市宝安区石岩镇街道办影剧院侧
深圳市宝安区公明安平火车票代理部火车售票处 0755-27735396 深圳宝安区公明镇三和百货左侧
观光乐售票处火车售票处 13510384569 深圳市宝安区创业一路西城上筑花园一期1栋
深圳市宝安区西乡宝煌售票服务部火车售票处 0755-27955909 深圳市西乡镇荔园路48号
深圳市宝安区松岗镇顺意票务部火车售票处 0755-27080217 深圳市宝安区龙华街道民治大道354号商铺
广航沙井火车售票处 13714224962 深圳市宝安区沙井街道大街20号
广航固戍火车售票处 13903028690 深圳市宝安区固戍一路龙兴市场门口侧
广安福永火车售票处 075527328786\13714272289 深圳市宝安区福永镇和平村永和路68号
深圳市观光乐票务有限公司火车售票处 0755-27927432 深圳宝安区西乡镇河东路92号永安商业城
深圳白云航空服务公司火车售票处 0755-27785999 深圳宝安区十区建安一路254#
深圳市宇鹏顺实业有限公司火车售票处 0755-27716848、133529090288 深圳宝安区松岗镇广深路松岗段309号
深圳市鹏创实业发展有限公司松岗售票处火车售票处 0755-27097099 深圳宝安区松岗镇松涛花园沿河南9号
深圳市鹏创实业发展有限公司公明售票点火车售票处 0755-27736877 深圳宝安区公明镇长春中路11号
深圳市保安捷达报关行火车售票处 0755-27860984 深圳宝安区前进一路35区安华工业区282号
广铁青旅深圳营业部火车售票处 0755-25631198 深圳市宝安区龙华镇油松富士康广场A栋106号
深圳市广安企业服务有限公司火车售票处 13543272890 深圳市宝安区龙华镇大浪南路大浪综合市场282号
深圳均祥运输服务有限公司火车售票处 0755-27348089 深圳宝安区福永镇政丰南路安德楼13号
深圳市鹏顺航空服务有限公司火车售票处 0755-28100999 深圳宝安区龙华镇东环二路东侧美丽365第A2栋商铺01号
深圳龙湘攸商务服务有限公司火车售票处 0755-27202398 深圳宝安西乡大道大益广场好又多超市
深圳市中怡盛实业发展有限公司中怡盛售票处火车售票处 0755-28031925 深圳宝安区观澜镇翠澜新村6栋102#
深圳市祥通投资有限公司火车售票处 0755-29678298 深圳市宝安区龙华镇布龙路万众城辉华大厦29店
广深铁路国际旅行社有限公司火车售票处 13802709386 深圳市宝安区石岩镇塘头大道龙马工业园[宝(临)7520278]
广深铁旅沙井售票处火车售票处 0755-27214088 深圳宝安区沙井镇新沙路万佳广场
广深铁旅福永售票处火车售票处 0755-27383506 深圳宝安区福永镇白石夏大道129号
广深铁旅宝安售票处火车售票处 0755-27780045 深圳市宝安区宝诚12区宝民1路171号
广州市环耀贸易有限公司火车售票处 13802748269 深圳市宝安区沙井新沙路424号
深圳市三快实业公司国企售票处火车售票处 0755-82129989 深圳市上步南路国企大厦A栋
深圳中广兴航服有限公司火车票代售处火车售票处 0755-83668999 深圳市福田区深南中路华联大厦
深圳市恒达科技有限公司火车售票处 0755-26635192 深圳福田区科技园中区33栋
深圳市华龙发商贸有限公司火车售票处 13602655355 深圳市福田区泰然工贸园连廊105B
深圳市邦联达票务公司火车售票处 0755-82953531 深圳福田区梅花路100号
沙尾翔龙发售票处火车售票处 0755-82047692 深圳市福田区新洲路F3号
深南万利达售票处火车售票处 0755-83678506 深圳市福田区深南路2018号
深圳市均祥运输服务有限公司火车售票处 13502866251 深圳市福田区下梅林金梅花园5栋104号
深圳市委党校招待所火车售票处 0755-25169495 深圳市福田区香蜜湖路北18号
深圳市五洲旅行社火车售票处 0755-82903251 深圳市福田区福华路购物公园
深圳市深之明商贸有限公司火车售票处 0755-83860879 深圳市福田区金田路嘉意台大厦裙楼一层北侧A铺
深圳市安达火车票服务有限公司火车售票处 0755-82901916 深圳市福田区景田路景田西6栋29号
深圳市迅发实业发展有限公司火车售票处 0755-83893311 深圳市福田区上沙村福民新苑
深圳市祥通投资有限公司火车售票处 0755-83817771 深圳市福田区石夏北一街众孚新村一栋
广深铁旅彩福售票处火车售票处 0755-28294411 深圳市福田区彩田南路彩福大夏3#
广深铁旅彩田售票处火车售票处 0755-83331000 深圳市福田区彩田路青年大厦102号
广深铁旅梅林售票处火车售票处 0755-83119911 深圳福田梅华路东方富苑9号
三通物流福华营业部火车售票处 13316908663 深圳市福田区福华路78号
深圳市三通物流实业有限公司票务中心火车售票处 0755-83255766 深圳福田区振兴西路上步工业区304栋
深圳市飞腾达票务有限公司火车售票处 13076918920 深圳布龙岗区吉镇布沙路1008
深圳市宝安区龙华镇龙煌运输服务部火车售票处 0755-27749007 深圳市龙华镇人民路328#
深圳九商实业公司布吉公园火车票代售处火车售票处 0755-28288078 深圳市布吉镇宝龙路21号布吉公园1号铺
深圳市兴邦实业发展有限公司火车售票处 0755-28838777 深圳龙岗区龙平路11号
深圳市锋盛顺达实业有限公司火车售票处 0755-28453611 深圳龙岗区平湖镇双拥街天和商场
广东省燕峰发展有限公司火车售票处 0755-28869696 深圳横岗镇松柏路商业街二街口
深圳市龙岗捷达报关行火车售票处 0755-28910304 深圳市龙岗南联植物园路泰夫人休闲中心1楼大厅
深圳市广安企业服务有限公司火车售票处 0755-27878777 深圳市龙岗区布吉镇雪象商业街1号
深圳市均祥运输服务有限公司火车售票处 0755-28891830 深圳市龙岗区布吉镇坂田村吉华路598#
广深铁旅横岗售票处火车售票处 0755-28507099 深圳龙岗区横岗六约社区深惠路天天乐百货商场门旁
广深铁旅行社有限公司坪山售票处火车售票处 0755-84605800 深圳市龙岗区坪山镇深汕路550号
广深铁旅平湖售票处火车售票处 0755-28451415 深圳龙岗区平湖镇益民路49号
广深铁旅布吉售票处火车售票处 0755-82859222 深圳市布吉镇金利路金利商业广场
广深铁旅横岗售票处火车售票处 0755-28609646 深圳市龙岗镇新光二街59号
深圳市均祥运输服务有限公司火车售票处 075-288311155 深圳市龙岗镇深惠公路五洲风情
深圳市均祥运输服务有限公司火车售票处 0755-28848765 深圳龙岗镇龙平东路金龙街18号
深圳市三通物流实业有限公司布吉营业处火车售票处 0755-24521452 深圳龙岗区布吉镇吉华路69号布吉中心广场93铺
深圳市均祥运输服务有限公司平湖经营部火车售票处 0755-28848765 深圳市平湖镇守珍街旭日广场1号
深圳市华中铁贸易有限公司火车售票处 0755-25408777 深圳罗湖区黄贝岭下村16号
深圳广铁青营业部火车售票处 0755-82326376 深圳建设路1#车站大楼二楼
深圳市阳光酒店火车售票处 0755-82295919 深圳罗湖区嘉宾路1号阳光酒店
深圳市万利达火车票代售有限公司火车售票处 0755-82410052 深圳罗湖区宝岗路笋岗村126号同德楼
深圳市迎宾馆火车售票处 0755-82236930 深圳罗湖区新园路13号
深圳贝多城实业有限公司火车售票处 0755-82331958 深圳罗湖区春风路68号江西外贸宾馆
深圳市中铁快运有限公司火车售票处 0755-82491741 深圳罗湖八卦一路鹏盛村6栋31号
深圳市芙蓉宾馆有限责任公司商务中心火车售票处 0755-82234636 深圳东门南路芙蓉宾馆一楼
深圳市亿利发实业有限公司火车售票处 0755-25657516 深圳市罗湖区翠竹北路华达园一楼
深圳市方辉实业有限公司火车售票处 0755-2547155 深圳市罗湖区金稻田路草埔综合市场5号
广铁青旅罗湖售票处火车售票处 0755-26118813 深圳市罗湖区宝安南路深港豪苑一楼
广深铁旅和平路售票处火车售票处 0755-84382803 深圳和平路1048号
广深铁旅中建售票处火车售票处 0755-82184164 深圳市罗湖区深南东路中建大厦
深圳广深铁路国际旅行社有限公司火车售票处 0755-84382079 深圳罗湖区和平路1048号
深圳广深铁路国际旅行社有限公司火车售票处 0755-84382179 深圳建设路1号车站夹层
深圳市意宸翔实业有限公司票务中心火车售票处 0755-26411129 深圳南山区东滨路市政精品城109
深圳市天域航实业公司铁路运输代理部火车售票处 0755-26560346 深圳市南山区桃园路苏豪大厦辅楼一层东
南新路順利发售票处火车售票处 0755-86034880 深圳市南山区南新路3229号鸿洲新都广场
深圳九商实业有限公司南山售票处火车售票处 0755-26664780 深圳南山区南山大道中兴公寓
深圳市招商国际旅游有限公司火车售票处 0755-26687466 深圳南山区蛇口太子路42号
深圳市天翔票务代售有限公司火车售票处 0755-86022801 深圳市南山区高新技术园区高新南一道富城科技大厦一楼
深圳市钧日工贸有限公司火车售票处 0755-83222168 深圳深南中路28#华南电力大厦
深圳市南山区西丽三鑫票务中心火车售票处 0755-26735077 深圳南山区西丽镇西丽北路金盛苑3号铺
深圳市万安顺实业有限公司火车售票处 0755-26767419 深圳市南山区白石洲沙河街金三角大厦二楼201室
广深铁旅南头售票处火车售票处 0755-26490960 深圳南山区南油大道车登路雅仕荔景苑商铺1#
广深铁旅龙华售票处火车售票处 0755-28149486 深圳市南山区蛇口新街口173号曙光花园118号铺
深圳广深铁路国际旅行社有限公司火车售票处 13602632584 深圳市南山区龙珠大道皇庭香格里花园107号
深圳沙头角捷达报关行火车售票处 0755-25354937 深圳市盐田区沙头角沙盐路2091号
深圳市飞城航空服务有限公司火车售票处 0755-25351701 深圳市盐田区沙头角沙盐路2091号
posted @ 2009-04-18 10:34 小马歌 阅读(962) | 评论 (0)编辑 收藏
 

from : http://bbs.iusesvn.com/thread-801-1-1.html

svn: Unrecognized URL scheme[已经解决,问题分析]

我在执行 SVN CO HTTP:// 的时候,出现了svn: Unrecognized URL scheme的错误:(

首先,大家可以在SVN 官方的FAQ的翻译中找到如下问题说明

Subversion 使用外掛系統來存取檔案庫. 目前有三個這樣的外掛: ra_local 可以存取本地檔案庫, ra_dav 可以透過 WebDAV 存取檔案庫, 而 ra_svn 可以透過 svnserve 伺服器來進行本地或遠端的存取. 當你想要在 Subversion 進行一個作業時, 用戶端會試著依 URL schema 動態載入一個外掛. file:// URL 會試著載入 ra_local, 而 http:// URL 會試著輸入 ra_dav, 以此類推.

你看到的這個錯誤, 表示動態連結器/載入器無法找到要載入的外掛. 這個發生的原因, 通常是因為你以共享程式庫的方式編譯 Subversion, 但是還沒有執行 make install 就要執行它. 另一個可能就是你執行了 make install, 但是程式庫把它存在動態連結器/載入器不認得的地方. 在 Linux 下, 你可以把那個程式庫目錄加進 /etc/ld.so.conf, 然後執行 ldconfig, 讓連結器/載入器可以找到程式庫. 如果你不想這麼作, 或是你沒有 root 存取權限, 你可以在 LD_LIBRARY_PATH 環境變數指定該程式庫目錄.

其次,我们可以执行一下SVN,看看ra_dav 是否加载

svn,版本 1.4.0 (r21228)
编译于 Jan  5 2007,16:31:46

Copyright (C) 2000-2006 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

可使用以下的档案库存取 (RA) 模块

* ra_svn : 使用svn网络协议访问档案库的模块。
  - handles 'svn' scheme
* ra_local : 访问本地磁盘的档案库模块。

发现我确实没有加载ra_dav 这个模块,不过按照上面的提示解决办法,我已经在 /etc/ld.so.conf 中增界了 /usr/local/svn/lib 这个目录,并且重新陨星了 ldconfg 但似乎这样还是加载不进去,,

接着,我们发现那个模块并没有加载,经过查看configure 的过程,我们发现我们需要安装一个NEON的插件

一定要下载 0.25.5 的,最新版本的不能用

然后把下载下来的东西,COPY 去 SVN的安装目录,这里记住一定要把NEON 的目录名字,从 neon.1.25.5 改成 neon 不然SVN还是不会认的。。

NEON 下载地址http://www.webdav.org/neon/

最后,发现问题解决

svn, version 1.4.2 (r22196)
   compiled Jan 11 2007, 12:10:11

Copyright (C) 2000-2006 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
  - handles 'http' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme


希望大家碰见问题,解决以后多多交流,:-)
posted @ 2009-04-17 12:59 小马歌 阅读(2728) | 评论 (0)编辑 收藏
 
  • yum install ncurses-devel   # 装mysql需要这个库文件...
  •  
  •   
  • tar zxvf mysql-5.0.51a.tar.gz   
  •   
  • tar zxvf sphinx-0.9.8.1.tar.gz   
  •   
  • cd mysql-5.0.51a   
  •   
  • cp /root/sphinx-0.9.8.1/mysqlse/sphinx.5.0.37.diff /root/mysql-5.0.51a/   
  •   
  • patch -p1 < sphinx.5.0.37.diff  
  •   
  • sh BUILD/autorun.sh   
  •   
  • cp -R /root/sphinx-0.9.8.1/mysqlse /root/mysql-5.0.51a/sql/sphinx   
  •   
  • ./configure --prefix=/usr/local/mysql --localstatedir=/var/mysql --with-sphinx-storage-engine --with-comment=Source --with-server-suffix=-Community-Server --with-mysqld-user=mysql --without-debug --with-big-tables --with-charset=utf8  --with-extra-charsets=all --with-pthread --enable-static --enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --enable-assembler --without-innodb --without-ndb-debug --without-isam   
  •   
  • make   
  • make install   
  • groupadd mysql   
  • useradd -g mysql -s /sbin/nologin mysql   
  • chown -R root /usr/local/mysql   
  •   
  • chgrp -R mysql /usr/local/mysql   
  • ./scripts/mysql_install_db --user=mysql --datadir=/var/mysql   
  • chgrp -R mysql /usr/local/mysql   
  • chown -R mysql /var/mysql   
  • chgrp -R mysql /var/mysql/   
  • cp /root/my.txt /etc/my.cnf   
  • /usr/local/mysql/share/mysql/mysql.server start   
  • cd /usr/local/mysql/bin   
  • ./mysql -uroot -p   
  • show engines;   
  • exit   
  • exit  
  • posted @ 2009-04-16 15:57 小马歌 阅读(275) | 评论 (0)编辑 收藏
     
    正则其实也势利,削尖头来把钱揣; (指开始符号^和结尾符号$)
    特殊符号认不了,弄个倒杠来引路; (指\. \*等特殊符号)
    倒杠后面跟小w, 数字字母来表示; (\w跟数字字母;\d跟数字)
    倒杠后面跟小d, 只有数字来表示;
    倒杠后面跟小a, 报警符号嘀一声;
    倒杠后面跟小b, 单词分界或退格;
    倒杠后面跟小t, 制表符号很明了;
    倒杠后面跟小r, 回车符号知道了;
    倒杠后面跟小s, 空格符号很重要;
    小写跟罢跟大写,多得实在不得了;
    倒杠后面跟大W, 字母数字靠边站;
    倒杠后面跟大S, 空白也就靠边站;
    倒杠后面跟大D, 数字从此靠边站;
    倒框后面跟大B, 不含开头和结尾;

    单个字符要重复,三个符号来帮忙; (* + ?)
    0 星加1 到无穷,问号只管0 和1; (*表0-n;+表1-n;?表0-1次重复)
    花括号里学问多,重复操作能力强; ({n} {n,} {n,m})
    若要重复字符串,园括把它括起来; ((abc){3} 表示字符串“abc”重复3次 )
    特殊集合自定义,中括号来帮你忙;
    转义符号行不通,一个一个来排队;
    实在多得排不下,横杠请来帮个忙; ([1-5])
    尖头放进中括号,反义定义威力大; ([^a]指除“a”外的任意字符 )
    1竖作用可不小,两边正则互替换; (键盘上与“\”是同一个键)
    1竖能用很多次,复杂定义很方便;
    园括号,用途多;
    反向引用指定组,数字排符对应它; (“\b(\w+)\b\s+\1\b”中的数字“1”引用前面的“(\w+)”)
    支持组名自定义,问号加上尖括号; (“(?<Word>\w+)”中把“\w+”定义为组,组名为“Word”)
    园括号,用途多,位置指定全靠它;
    问号等号字符串,定位字符串前面; (“\b\w+(?=ing\b)”定位“ing”前面的字符串)
    若要定位串后面,中间插个小于号; (“(?<=\bsub)\w+\b”定位“sub”后面的字符串)
    问号加个惊叹号,后面跟串字符串;
    PHPer都知道, !是取反的意思;
    后面不跟这一串,统统符合来报到; (“\w*d(?!og)\w*”,“dog”不符合,“do”符合)
    问号小于惊叹号,后面跟串字符串;
    前面不放这一串,统统符合来报到;
    点号星号很贪婪,加个问号不贪婪;
    加号问号有保底,至少重复一次多;
    两个问号老规矩,0次1次团团转;
    花括号后跟个?,贪婪变成不贪婪;
    还有很多装不下,等着以后来增加
    posted @ 2009-04-15 15:44 小马歌 阅读(164) | 评论 (0)编辑 收藏
     

    1、定义字符串

      在PHP中,字符串的定义可以使用单引号,也可以使用上引号。但是必须使用同一种单或双引号来定义字符串,如:‘Hello"和“Hello'为非法的字符串定义。

      定义字符串时,只有一种引号被视为定义符,即单引号或双引号。于是,如果一个字符串由双引号开始,那么只有双引号被分析器解析。这样,你就可以在双引号串中包含任何其他字符,甚至单引号。下面的引号串都是合法的:
    $s = "I am a 'single quote string' inside a double quote string";
    $s = 'I am a "double quote string" inside a single quote string';

       而串 "Why doesn't "this" work?" 则会被分为三段。如果在这个串中想要表示出双引号,则可以使用转义符"\"(反斜线),变成 "Why doesn't \"this\" work?" 即可。

    2、字符串变量中的单、双引号

      PHP允许我们在双引号串中直接包含字串变量,我们可以发现下面的两个字串的处理结果是相同的。

    $full_name = $first_name . ' ' . $last_name;
    $full_name = "$first_name $last_name";

      单引号串和双引号串在PHP中的处理是不相同的。双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符。例如:
    $foo = 2;
    echo "foo is $foo";
    // 打印结果: foo is 2
    echo 'foo is $foo'; // 打印结果: foo is $foo
    echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行)
    echo 'foo is $foo\n'; // 打印结果: foo is $foo\n

      正如你所看到的,在单引号串中甚至反斜杠也失去了他的扩展含义(除了插入反斜杠\\和插入单引号\')。所以,当你想在字串中进行变量代换和包 含\n(换行符)等转义序列时,你应该使用双引号。单引号串可以用在其他任何地方,脚本中使用单引号串处理速度会更快些,因为PHP语法分析器对单引号串 的处理方式比较单纯,而双引号的处理由于串内部也需要解析,因此更复杂些,所以处理速度略慢。

      在字符串中引用复杂的变量组合时,可能会产生一些问题,下面的代码会正常工作:
    echo "value = $foo";
    echo "value = $a[$i]";

      而下面的代码却不能得到我们希望的结果:
    echo "value = $a[$i][$j]";
    //我们希望打印二维数组$a的某个元素。

      为避免这些字串使用中的潜在问题,我们通常把复杂的变量从字串中分离开来,就像这样:
    echo 'value = ' . $a[$i][$j
    ];//字符串的连接用点(.)

      还有一种办法是将复杂变量用花括号括起来,语法分析器就能正确辨认了:
    echo "value = {$a[$i][$j]}" //打印二维数组$a的某个元素

      这样,又出现新问题了。当我们想在字串中引用花括号字符本身时,就要记得使用转义符了:
    $var = 3;
    echo "value = {$var}";
    // 打印结果 "value = 3"
    echo "value = \{$var}"; // 打印结果 "value = {3}"

    3、在SQL语句中

      这是会经常遇到的问题,在插入数据库的SQL语句是采用单引号来定义字符串,如果要将一个含有单引号的字符串插入数据库,这个SQL语句就会出错。如:
    $sql="insert into userinfo (username,password) Values('O'Kefee','123456')"

      此时,处理的方法之一是在SQL语句中加入转义符反斜线,即:……Values('O\'Kefee',……

      当然也可以使用函数 addslashes(),该函数的功能就是加入转义符,即:
    $s = addslashes("O'Kefee")                       ……Values('".$s."',……

      还有一种方法是设置php.ini中的magic-quotes选项,打开该选项,则通过表单提交的信息中如果有单引号是,将会自动加上如转义符。因此不用使用其他函数了。

    该文章是转载滴,觉得好棒,这是原始出处和作者信息:www.mryang.org/logs/23060199.html

    补充:

    这就要从双引号和单引号的作用讲起:
    双引号里面的字段会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,直接输出。例如:
    $abc='I love u';
    echo $abc //结果是:I love u
    echo '$abc' //结果是:$abc
    echo "$abc" //结果是:I love u
    所以在对数据库里面的SQL语句赋值的时候也要用在双引号里面SQL="select a,b,c from ..."
    但是SQL语句中会有单引号把字段名引出来
    例如:select * from table where user='abc';
    这里的SQL语句可以直接写成SQL="select * from table where user='abc'"
    但是如果象下面:
    $user='abc';
    SQL1="select * from table where user=' ".$user." ' ";对比一下
    SQL2="select * from table where user=' abc ' "
    我把单引号和双引号之间多加了点空格,希望你能看的清楚一点。
    也就是把'abc' 替换为 '".$user."'都是在一个单引号里面的。只是把整个SQL字符串分割了。
    SQL1可以分解为以下3个部分
    1:"select * from table where user=' "
    2:$user
    3:" ' "
    字符串之间用 . 来连接,这样能明白了吧。

    posted @ 2009-04-15 14:24 小马歌 阅读(317) | 评论 (0)编辑 收藏
     
    from :http://www.blogjava.net/Skynet/archive/2009/04/07/264259.html
    当手边没有IDE,面对着python调试犯愁时,你就可以参考下本文;(pdb 命令调试)
    参考:http://docs.python.org/library/pdb.html
    和 (pdb)help

    首先你选择运行的 py
    python -m pdb myscript.py
    (Pdb) 会自动停在第一行,等待调试,这时你可以看看 帮助
    (Pdb) h
        说明下这几个关键 命令

    >断点设置 
       (Pdb)b  10 #断点设置在本py的第10行
       或(Pdb)b  ots.py:20 #断点设置到 ots.py第20行
       删除断点(Pdb)b #查看断点编号
                (Pdb)cl 2 #删除第2个断点
        
    >运行
        (Pdb)n #单步运行
        (Pdb)c #跳到下个断点
    >查看
        (Pdb)p param #查看当前 变量值
        (Pdb)l #查看运行到某处代码
        (Pdb)a #查看全部栈内变量


       上面一般的调试工具大体上都能解决了,还有其他什么 调试时修改变量值,回到某断点等 ,可以在 pdb 中 help 下 (其实我也不太明白)
        望那位知道的,能一起补全这篇文章。
    posted @ 2009-04-09 14:18 小马歌 阅读(215) | 评论 (0)编辑 收藏
     

    在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。

    Rsync的命令格式可以为以下六种:

      rsync [OPTION]... SRC DEST

      rsync [OPTION]... SRC [USER@]HOST:DEST

      rsync [OPTION]... [USER@]HOST:SRC DEST

      rsync [OPTION]... [USER@]HOST::SRC DEST

      rsync [OPTION]... SRC [USER@]HOST::DEST

      rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

      对应于以上六种命令格式,rsync有六种不同的工作模式:

      1)拷贝本地文件。当SRCDES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -a /data /backup

      2)使用一个远程shell程序(rshssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src

      3)使用一个远程shell程序(rshssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data

      4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack

      5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www

      6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www

     

    rsync参数的具体解释如下:

     

    -v, --verbose 详细模式输出
    -q, --quiet 精简输出模式
    -c, --checksum 打开校验开关,强制对文件传输进行校验
    -a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
    -r, --recursive
    对子目录以递归模式处理
    -R, --relative 使用相对路径信息
    -b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
    --backup-dir 将备份文件(~filename)存放在在目录下。
    -suffix=SUFFIX 定义备份文件前缀
    -u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
    -l, --links
    保留软链结
    -L, --copy-links 想对待常规文件一样处理软链结
    --copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
    --safe-links 忽略指向SRC路径目录树以外的链结
    -H, --hard-links 保留硬链结
    -p, --perms 保持文件权限
    -o, --owner 保持文件属主信息
    -g, --group 保持文件属组信息
    -D, --devices 保持设备文件信息
    -t, --times 保持文件时间信息
    -S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
    -n, --dry-run现实哪些文件将被传输
    -W, --whole-file 拷贝文件,不进行增量检测
    -x, --one-file-system 不要跨越文件系统边界
    -B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
    -e, --rsh=COMMAND 指定使用rshssh方式进行数据同步
    --rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
    -C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
    --existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
    --delete 删除那些DSTSRC没有的文件
    --delete-excluded 同样删除接收端那些被该选项指定排除的文件
    --delete-after 传输结束以后再删除
    --ignore-errors 及时出现IO错误也进行删除
    --max-delete=NUM 最多删除NUM个文件
    --partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
    --force 强制删除目录,即使不为空
    --numeric-ids 不将数字的用户和组ID匹配为用户名和组名
    --timeout=TIME IP超时时间,单位为秒
    -I, --ignore-times 不跳过那些有同样的时间和长度的文件
    --size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
    --modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
    -T --temp-dir=DIR
    DIR中创建临时文件
    --compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
    -P 等同于 --partial
    --progress
    显示备份过程
    -z, --compress 对备份的文件在传输时进行压缩处理
    --exclude=PATTERN 指定排除不需要传输的文件模式
    --include=PATTERN 指定不排除而需要传输的文件模式
    --exclude-from=FILE 排除FILE中指定模式的文件
    --include-from=FILE 不排除FILE指定模式匹配的文件
    --version 打印版本信息
    --address 绑定到特定的地址
    --config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
    --port=PORT 指定其他的rsync服务端口
    --blocking-io 对远程shell使用阻塞IO
    -stats
    给出某些文件的传输状态
    --progress 在传输时现实传输过程
    --log-format=formAT 指定日志文件格式
    --password-file=FILE FILE中得到密码
    --bwlimit=KBPS 限制I/O带宽,KBytes per second
    -h, --help
    显示帮助信息

    posted @ 2009-03-28 11:28 小马歌 阅读(257) | 评论 (0)编辑 收藏
     
    rsync是一套挺不錯的備份機制,使用rsync演算法(嗯...有說跟沒說一樣),快速的將資料將本地(locale)和遠端(remote)兩端資料同步。由samba維護,官方網站http://samba.anu.edu.au/rsync/,裡面有不少的資料可以看,要使用這工具的時候,可以好好閱讀一番,雖然這樣說,不過我也只看了一小部份....。
    首先就是server的安裝,除了可以在linux上安裝之外,也可以在windows上安裝。整體的設定幾乎都一樣。不過在windows上必須安裝cwrsync server

    這裡先筆記在linux上安裝 rsync server
    以fedora來安裝的話,有幾個功能必須先確定有無裝上去了。
    首先是xinetd
    安裝很簡單就
    #yum install xinetd
    如果rsync沒有安裝也是一樣
    #ymo install rsync
    如果是用ubuntu 那就
    apt get install rsync
    ubuntu啟動rsync是在intd.d裡所以不需要在安裝xinetd
    安裝完之後,
    需要編輯一下rsync的啟動設定
    fedora的設定,把

    #vi /etc/xinetd.d/rsync
    disable = yes 改成 no

    ubuntu的設定

    #vi /etc/init.d/rsync
    RSYNC_ENABLE= false 改成 true

    這樣開機的時候就會自動啟動rsync server

    接著是設定rsyncd.conf以及rsyncd.secrets
    這兩個檔案本身是不存在的,所以必須另外編輯

    #vi /etc/rsyncd.conf


    [backup1]                                            //module name
               comment = backup dmz web     //說明
    path = /home/rsync/backup1 //存放備份資料的路徑
    auth users = backup1 //認證帳號(設定在rsyncd.secrets的帳號)
    uid = backup1 //以uid backup1來啟動rsync server(所以 /home/rsync/backup1 的 owner 要設為 backup1)
    gid = backup1 //以gid backup1來啟動rsync server(所以 /home/rsync/backup1 的 group 要設為 backup1)
    secrets file = /etc/rsyncd.secrets //密碼檔存放路徑
    read only = no

    可以根據自己的需求來新增備份的方案 ,也就是增加module name
    認證帳號的部份也是需要編輯,不過檔名的部份可以根據自己的喜好來更換。

    #vi /etc/rsyncd.secrets

    backup1:backup1
    id:pw
    沒看錯密碼檔就是這麼簡單,第一個是id第二個是密碼。有多少使用者就這樣新增下去。
    但是當編輯完畢之後,這個檔案的屬性必須更動為600

    #chmod 600 rsyncd.secrets

    否則認證的時候會出現問題。
    設定完畢之後就重新啟動rsync server

    在fedora 下

    #/etc/init.d/xinetd restart

    在ubuntu 下

    #/etc/init.d/rsync restart

    這樣就重新啟動了 rsync

    最基本的rsync server的設定也就此完畢,接著就這是設定client端。
    posted @ 2009-03-28 11:26 小马歌 阅读(675) | 评论 (0)编辑 收藏
    仅列出标题
    共95页: First 上一页 68 69 70 71 72 73 74 75 76 下一页 Last