愤怒的话梅
===========================================================
正则表达式使用详解(转贴)
===========================================================
 正则表达式使用详解(转贴)

    如果我们问那些UNIX系统的爱好者他们最喜欢什么,答案除了稳定的系统和可以远程启动之外,
    十有八九的人会提到正则表达式;
    如果我们再问他们最头痛的是什么,可能除了复杂的进程控制和安装过程之外,还会是正则表达式。
    那么正则表达式到底是什么?如何才能真正的掌握正则表达式并正确的加以灵活运用?
    本文将就此展开介绍,希望能够对那些渴望了解和掌握正则表达式的读者有所助益。


    入门简介

      简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。
    我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,
    例如,vi编辑器,Perl或PHP 脚本语言,以及awk或sed shell程序等。
    此外,象JavaScript这种客户端的脚本语言也提供了对正则表达式的支持。
    由此可见,正则表达式已经超出了某种语言或某个系统的局限,成为人们广为接受的概念和功能。

      正则表达式可以让用户通过使用一系列的特殊字符构建匹配模式,
    然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。

      举例来说,正则表达式的一个最为普遍的应用就是用于验证用户在线输入的邮件地址的格式是否正确。如果通过正则表达式验证用户邮件地址的格式正确,用户所填写的表单信息将会被正常处理;反之,如果用户输入的邮件地址与正则表达的模式不匹配,将会弹出提示信息,要求用户重新输入正确的邮件地址。由此可见正则表达式在WEB应用的逻辑判断中具有举足轻重的作用。

    查看全文
cc5416 发表于:2005.04.06 10:26 ::分类: ( 愤怒的学习 ) ::阅读:(663次) :: 评论 (0)
===========================================================
简单的unix下共享内存的例子(完善中)
===========================================================
//小例子,参考:Linux 系统分析与高级编程技术
#include
#include
#include
#include
using namespace std;
#define SEGSIZE 100
int main(int argc,char * argv[])
{
cout<<"the Program of testROM run ........."<<'n';

cout<<<'n';
key_t key;
int shmid;
int cntr;
char *segptr;
key = ftok("..",0);
cout<<"key : "<<<'n';
if(argc == 1)
{

}

//划分内存准备使用
if((shmid = shmget( key, SEGSIZE, IPC_CREAT|0666))==-1)
{
cout<<"shmget"<<'n';
if(( shmid = shmget( key, SEGSIZE, 0))==-1)
{
cout<<"shmget"<<'n';
exit(1);
}
}
else
{
cout<<"Creating new shared memory"<<'n';
}

//变量绑定
if((int)( segptr = (char *)shmat( shmid, 0, 0) )==-1)
{
cout<<"shmat"<<'n';

}

cout<<"[shmid]"<<" : "<<<'n';

//释放内存
shmctl(shmid, IPC_RMID,0);
cout<<"shared memory segment marked for deletion"<<'n';
return 1;
}
 查看全文
cc5416 发表于:2005.03.10 15:24 ::分类: ( 愤怒的学习 ) ::阅读:(1243次) :: 评论 (1)
===========================================================
关于plsql的入门和sql语言的入门
===========================================================
-----注$打头为变量
--删除分区
alter table $dept truncate partition $d3;

select * from test for update of test.a;(test表的a列)
-------------------------------------------
上面的一句跟上for update又是什么意思呀? 
应该是在查询记录时给记录加锁.~
加了行级锁保证你对该行数据的修改权,其它用户无法更改该行数据。
给记录加了行级锁,只有自己能查询、修改这些记录,处于独占状态,
别的用户无权修改这些数据,直到锁释放
 
日期函数:
1、SYSDATE:返回当前的系统日期和时间
举例:SELECT sysdate FROM dual;
说明:结果为30-3月-03(下同)
2、ADD_MONTHS(d,n):在指定日期上增加月数
参数:d —— 指定日期数据
      n —— 可以是任意整数
举例:SELECT add_months(sysdate,5) FROM dual;
说明:如果sysdate为30-3月-03则结果为30-8月-03
3、LAST_DAY(d):返回指定日期所处月份的最后一天
举例:SELECT last_day('10-8月-03') FROM dual;
说明:结果为31-8月-03
4、MONTHS_BETWEEN(d1,d2):返回日期d1和d2之间相差的月数。如果d1小于d2,则返回负数;如果日期d1和d2的天数相同或都是月底,则返回为整数;否则Oracle一每月31天为准,计算结果的小数部分。
举例:SELECT months_between(sysdate,'31-8月-1998') FROM dual;
说明:结果为54.9811578
5、NEXT_DAY(d,char):返回指定日期后第一个工作日(由char指定)所对应的日期。
举例:SELECT next_day(sysdate,'星期一') FROM dual;
说明:结果为31-3月-03

常用函数:
1、DECODE(expr,search1,result1[,search2,result2,...][,default])
功能:该函数类似于高级语言的IF...THEN...ELSE语句,
如果expr匹配于search1,则返回result1;
如果expr匹配与search2,则返回result2,依此类推。
如果expr不匹配于任何search,则返回default;
如果没有指定default,则在不匹配于任何search时,返回NULL。

2、NVL(expr1,expr2):将NULL转变为实际值。
如果expr1是null,则返回expr2;
如果expr1不是null,则返回expr1。
参数expr1和expr2可以是任意数据类型,
但二者数据类型必须匹配。

3、NVL2(expr1,expr2,expr3):Oracle9i新增加的函数,
该函数也是用于处理NULL。如果expr1不是null,则返回expr2;
如果expr1是null,则返回expr3。
参数expr1可以是任意数据类型,
而expr2和expr3可以是除LONG之外的任何数据类型。
但是要注意,expr2、expr3的数据类型必须与expr1的数据类型匹配。
 查看全文
cc5416 发表于:2005.03.08 11:43 ::分类: ( 愤怒的学习 ) ::阅读:(1986次) :: 评论 (1)
===========================================================
关于Shell的小心得
===========================================================
用shell连接操作数据库
例子1,结果直接显示在屏幕上
$ORACLE_HOME/bin/sqlplus -s username/password@db<<EOF
set escape off
set head off
set verify off
select to_char(SYSDATE,'YYYY-MM-DD') from dual;
exit
EOF

例子2,调用脚本
$ORACLE_HOME/bin/sqlplus -s 'billac/billac@local'<<EOF
set escape off
set head off
set verify off
@CityIfOver.sql;
exit
EOF

 查看全文
cc5416 发表于:2005.03.08 11:27 ::分类: ( 愤怒的学习 ) ::阅读:(697次) :: 评论 (0)
===========================================================
关于OTL的应用
===========================================================

vc下连接otl接口,

number(16)

关键代码如下

 otl_stream i( 100,
   "SELECT user_id f1 :#1<char[100]>FROM subtotal_bill where month=12 and home_city = 592", 
         db );

unsigned short f1[18];

while ( !i.eof() )
  {
      i>> (unsigned char*)f1;


     string s ;
     for( int j=0;f1[j]!=0;++j)
     {    
       s+=f1[j];
     } 
    cout<<s<<endl;
  }


cc5416 发表于:2005.01.06 15:22 ::分类: ( 愤怒的学习 ) ::阅读:(940次) :: 评论 (2)
===========================================================
WTL学习手记(1)
===========================================================

刚刚知道wtl这个界面库,感觉很有学习的必要性;

要想在wtl中触发事件要在#include "MainFrm.h"的

BEGIN_MSG_MAP_EX(CMainFrame)
  //此处添加代码
 END_MSG_MAP()

MESSAGE_HANDLER( WM_CREATE, OnCreate)创建标准按钮

PostMessage(WM_CLOSE);//关闭窗口

#define STRICT
#define WIN32_LEAN_AND_MEAN
#define _WTL_USE_CSTRING
 
#include <atlbase.h>       // 基本的ATL类
#include <atlapp.h>        // 基本的WTL类
extern CAppModule _Module; // WTL 派生的CComModule版本
#include <atlwin.h>        // ATL 窗口类
#include <atlframe.h>      // WTL 主框架窗口类
#include <atlmisc.h>       // WTL 实用工具类,例如:CString
#include <atlcrack.h>      // WTL 增强的消息宏

cc5416 发表于:2005.01.05 15:38 ::分类: ( 愤怒的学习 ) ::阅读:(30474次) :: 评论 (6)
切换风格
新闻聚合
博客日历
文章归档...
最新发表...
博客统计...
网站链接...