delete from user_daily where day=date(now() - interval 4 day);
SELECT date( now( ) - INTERVAL 4 DAY ) ;
安装好:Visual Studio6,除了VB VC FOXPRO,安装好后:
打开IE,工具--》Internet选项--》高级--》去掉显示友好HTTP错误信息--》显示每个脚本错误的信息打开--》禁用脚本调试-》禁用脚本调试其他给关闭掉。

然后,适当看看下文:阅读全文
4个字符

字符串的长度:
长度的单位为字符。一个多字节字符算作一个单字符。

MySQL字符串函数:
对于一个包含五个二字节字符集, LENGTH()返回值为 10, 而CHAR_LENGTH()的返回值为5。

也就是说:
对于一个汉字和一个字母都是一个字符。遵循CHAR和VARCHAR定义规范。也与数据库本身设置的字符集有关。

mysql的char和varchar字段不区分unicode还是别的什么编码,统统按照ascii来存,所以一个汉字占用2个字节。

CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

CHAR和VARCHAR类型声明的长度表示你想要保存的最大字符数。例如,CHAR(30)可以占用30个字符。

CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。

VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。

char是定长字符数据,所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度。
CHAR是固定字符数量,储存时不足部分用空格补齐,搜起来比较快,占用空间相对就多
VARCHAR是不固定字符数量,占用空间小,不过需要记录字符数。
char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:

  char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).

使用的一般规则:

1.      经常变化的字段用char

2.      知道固定长度的用char

3.      尽量用varchar

4.      超过255字节的只能用varchar或者text

5.      能用varchar的地方不用text
阅读全文
vi /etc/rc.d/init.d/iptables
1-1024, 3306, 36000, 56000,  這些都是高危端口, 不能隨便開的
http://www.ibm.com/developerworks/cn/web/wa-lo-comet/
背景:其实服务端用epoll进行Post及其Get解析的依据,Post先:\r\n\r\n后面的数据长度由Content-Length指定:Content-Length: 26\r\n
\r\n
HTML Form URL Encoded: application/x-www-form-urlencoded
name=1234567&button=Submit
....Post数据内容段....
上面是Post,讲下get更简单,其实就是\r\n\r\n结尾即算完成了(Get没有Post的数据后面为空),此时服务端可以关闭了。
Connection: keep-alive\r\n
\r\n
———————————————————————————————————————————————————————————

function httpRequestGET($url){
  $url2 = parse_url($url);
  $url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]);
  $url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]);
  $host_ip = @gethostbyname($url2["host"]);
  $fsock_timeout=20;
  if(($fsock = fsockopen($host_ip, 80, $errno, $errstr, $fsock_timeout)) < 0){
    return false;
  }
  
  $request =  $url2["path"] . ($url2["query"] != "" ? "?" . $url2["query"] : "") . ($url2["fragment"] != "" ? "#" . $url2["fragment"] : "");
  $in  = "GET " . $request . " HTTP/1.0\r\n";
  $in .= "Accept: */*\r\n";
  $in .= "User-Agent: Payb-Agent\r\n";
  $in .= "Host: " . $url2["host"] . "\r\n";
  $in .= "Connection: Close\r\n\r\n";
  if(!@fwrite($fsock, $in, strlen($in))){
    fclose($fsock);
    return false;
  }
  unset($in);
  
  $out = "";
  while($buff = @fgets($fsock, 2048)){
    $out .= $buff;
  }
  fclose($fsock);
  $pos = strpos($out, "\r\n\r\n");
  $head = substr($out, 0, $pos);    //http head
  $status = substr($head, 0, strpos($head, "\r\n"));    //http status line
  $body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body
  if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches)){
    if(intval($matches[1]) / 100 == 2){
      return $body;  
    }else{
      return false;
    }
  }else{
    return false;
  }
}
function httpRequestPOST($url,$post_data){
  $url2 = parse_url($url);
  $url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]);
  $url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]);
  $host_ip = @gethostbyname($url2["host"]);
  $fsock_timeout=20;//秒
  if(($fsock = fsockopen($host_ip, 80, $errno, $errstr, $fsock_timeout)) < 0){
    return false;
  }
  
  $request =  $url2["path"] . ($url2["query"] != "" ? "?" . $url2["query"] : "") . ($url2["fragment"] != "" ? "#" . $url2["fragment"] : "");
  
  $needChar = false;
  
  foreach($post_data as $key => $val)  {
    
    $post_data2 .= ($needChar ? "&" : "") . urlencode($key) . "=" . urlencode($val);
    $needChar = true;
  }
  $in  = "POST " . $request . " HTTP/1.0\r\n";
  $in .= "Accept: */*\r\n";
  $in .= "Host: " . $url2["host"] . "\r\n";
  $in .= "User-Agent: Lowell-Agent\r\n";
  $in .= "Content-type: application/x-www-form-urlencoded\r\n";
  $in .= "Content-Length: " . strlen($post_data2) . "\r\n";
  $in .= "Connection: Close\r\n\r\n";
  $in .= $post_data2 . "\r\n\r\n";
  
  unset($post_data2);
  if(!@fwrite($fsock, $in, strlen($in))){
    fclose($fsock);
    return false;
  }
  unset($in);
  
  $out = "";
  while($buff = fgets($fsock, 2048)){
    $out .= $buff;
  }
  
  fclose($fsock);
  $pos = strpos($out, "\r\n\r\n");
  $head = substr($out, 0, $pos);    //http head
  $status = substr($head, 0, strpos($head, "\r\n"));    //http status line
  $body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body
  if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches)){
    if(intval($matches[1]) / 100 == 2){
      return $body;
    }else{
      return false;
    }
  }else{
    return false;
  }
}


函数调用:

$post_data = array("name"=>"xd","sex"=>"man");
httpRequestPOST("http://localhost/post.php",$post_data);

socket写的顺序:

POST /post.php HTTP/1.0
Accept: */*
Host: localhost
User-Agent: Lowell-Agent
Content-type: application/x-www-form-urlencoded
Content-Length: 15
Connection: Close
name=xd&sex=man


普通POST的结果演示:
POST/?username=111&password=222HTTP/1.1
Host:127.0.0.1:8000
User-Agent:Mozilla/5.0(Windows;U;WindowsNT5.2;zh-CN;rv:1.9.0.1)Gecko/2008070208Firefox/3.0.1
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language:zh-cn,zh;q=0.5
Accept-Encoding:gzip,deflate
Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7
Keep-Alive:300
Connection:keep-alive
Referer:http://127.0.0.1:8000/?username=111&password=222
Content-Type:application/x-www-form-urlencoded
Content-Length:25
username=111&password=222

阅读全文
原文:

main()
{
  char *src="hello,world";
  char *dest = NULL;
  int len=strlen(src);
  dest = (char*)malloc(len);
  char *d = dest;
  char *s = src[len];//它出题意图是指向最后,然后再减减到开始处,但是C语言是不能这样直接指向的,必须这样:    s = src+len-1;  而且两边的类型也不等,一边是指针,一边是一个数值,写对: char *s = &src[len];
  while(len-- != 0)
  {
    d++ = s--;
    printf("%s",dest);

  }
}
改错:


#include <stdio.h>
#include <string.h>

int main()
{
    char *src="hello,world";
    char *dest = NULL;
    int len=strlen(src);

    printf("src =[%s]\n", src);
    dest = (char*)malloc(len+1);
    char *d = dest;
    char *s = NULL;
    int i =0;

    s = src+len-1;
    //s = &src[len]-1; //这个操作就是对内存指针很了解的情况下进行的:取到地址,然后减少一个char类型地址的偏移量。

   //s = &src[len-1];  //直接取到不是\0的前一个字符地址。

    while (len-- != 0)
    {
        *d++ = *s--;
    }

    *d = 0;

    printf("dest=[%s]\n",dest);
    return 0;
}

Q2:


char str[] = "I love sina china";
char *p;
p=str;
printf("%c",*p);//是把这个地址的内容给取出来,传的是一个地址指向的内容!
printf("%s",p+2);//把这个首地址的内容取出来,然后加二个地址偏移,然后打印出这个地址以及后面的内容,这儿传入的是一个地址!

/data/www/XXXX/bak/20220926
drw-rw-rw-    2 www   www   512 Sep 26 23:17 20220926. # 666

PHP以www用户运行时无法读取止在日期目录里面的文件内空,经
chmod -R 755 /data/www/XXXX/bak/20220926 后:

drwxr-xr-x     2 www   www   512 Sep 26 23:17 20220926.   #755

可以读取了,于是用:

u - 表示用户 (user)      g - 表示用户组 (group)       o - 表示其它 (others)        a - 表示所有 (all)

chmod u+x,g-x,o-x 20220926

====================================
-r-xr-xr-x 1 root root      1177 07-31 01:13 mysql.conf
想修改为和下面一样:
-rw-r--r-- 1 root root      2533 07-30 18:23 ngixd.conf
-rw-r--r-- 1 root root       984 07-30 18:24 ngixd_fcgi.conf
-rw-r--r-- 1 root root       101 07-30 18:28 ngixd_service_autorun.conf
-rw-r--r-- 1 root root      5834 07-30 18:15 ngix_php_config.conf

chmod 644 mysql.conf  
即可:
--- --- --- 左到右对应:
u g o :用户,组,其它!
R w X :读  ,写,执行!
4 2 1 : 4    , 2 ,   1   !

进一步细说下关于u,g,o,a的情况:
who   用户类型   意义
u   User   文件的所有者
g   Group   与文件相关联的组
o   Other   所有其他用户
a   All           相当与ugo,所有用户

operator 运算符意义
+   为指定的用户类型添加权限
-   为指定的用户类型删除权限
=   设定或重置指定用户类型的权限

实践示例,777修改为755(根据:W=4,R=2,X=1,相当于去掉写权限:7-2=5,相当于:755,chmod -R 755 xdxp.cn):
drwxrwxrwx. 13 766 www 4096 7月  26 00:18 xdxp.cn
chmod -R g-w xdxp.cn
chmod -R o-w xdxp.cn
变为:
drwxr-xr-x. 13 766 www 4096 7月  26 00:18 xdxp.cn

--wxrw--wt 1 www   www   4492291 Jun  6 17:40 fd80a538-ce8c-11e2-b12d-001e0bdc11a2.mp4
t 代表  restricted  deletion  flag or sticky bit  ,限制删除标记或者粘滞位,
u 代表 the user who owns it


chmod +t
代表sticky binary (也作text bit),这个东西有两种意义:
1. 对于二进制文件,表示当该程序退出后,文字段(text segment)依然驻留内存,以缩减下次启动的时间,
2. 对于目录,该目录中的所有文件只有文件的所有者可以删除,其它人即使有对该文件的所有操作权限也无法删除(为所欲为的超级用户除外)。

来源:
http://www.cnblogs.com/healthy-tree/archive/2011/11/08/2240509.html

Nginx 以www运行nginx的upload上传组件放到一个挂载的磁盘后是这个权限:
估计和这个:upload_store_access user:r;  有关,如下:

-r----x--t 1 www www 815235 Jun  7 10:15 /upload/video/user/abc.mp4

[root@test user]# ls -lart ~+/138e38be-cf18-11e2-b12d-001e0bdc11a2.mp4
-rwxrwxrwx 1 www www 815235 Jun  7 10:15 /upload/video/user/abc.mp4
来源:http://www.siteduzero.com/forum-83-383262-p1-class-crud.html
SPDO.php:阅读全文

PDO

WEB2.0 jackxiang 2009-7-29 11:20
http://www.siteduzero.com/forum-83-383262-p1-class-crud.html
基于DS80C400的嵌入式网络传感器的研究与设计

awk命令详解

WEB2.0 jackxiang 2009-7-28 18:10
AWK指令详解:阅读全文
#cat filename.txt:
www|200|date1
Medie|400|date2
DV|800|date3

awk -F"|" '{(total+=$2)};END{print total}' filename.txt


awk -F "|" '{total+=$2}END{print total}' filename.txt

//Output:
1400


在Shell中,我们可以用awk实现按列求和的功能,非常简单。看下面的例子:
1.简单的按列求和
[linux@test /tmp]$ cat test
123.52
125.54
126.36
[linux@test /tmp]$ awk '{sum += $1};END {print sum}' test
375.42
2.对符合某些条件的行,按列求和
[linux@test /tmp]$ cat test
aaa 123.52
bbb 125.54
aaa 123.52
aaa 123.52
ccc 126.36
对文件test中 第一列为aaa的行求和
[linux@test /tmp]$ awk '/aaa/ {sum += $2};END {print sum}' test
370.56
awk 处理文本还是很方便的。
# cat lastlog
1008520650 天津 http://www.aibang.com/abc/a.jpg 0.015
1008522118 天津 http://www.aibang.com/abc/a.jpg 0.015
1008520646 天津 http://www.aibang.com/abc/a.jpg 0.015
1999853994 沈阳 http://www.aibang.com/abc/a.jpg 0.015
1008520650 天津 http://www.aibang.com/abc/a.jpg 0.015
1008522118 天津 http://adad.ada.con/da 0.018
1008520646 天津 http://adadad/dad/dd.abc 0.016
1999853994 沈阳 http://www.sohu.com/abc/d.jif 1.14

# cat lastlog|grep "天津"|awk '{print$NF}' |awk '{sum += $1};END{print sum}'
0.094
我的NF是最后一个字段
#awk '/天津/{sum += $NF};END {print sum}' lastlog



打印某行的某列:
[root@bogon diff]# cat A.txt
111 21
222
333
444
555
666
777
888


[root@bogon diff]# awk '{if(NR==5)print $1}' A.txt  
555
今天想使用这一句php来判断一个文件是否存在:  

echo is_file('/var/downloads/donkey/incoming/[当地球停止转动].The.Day.The.Earth.Stood.Still.DVDRip.XviD-DMT.avi')?"true":"false";  

结果总是报false  
估计原因是php的编码格式和操作系统的文件名编码格式不统一,所以就超市使用如下语句:

echo is_file(iconv('UTF-8','GB2312','/var/downloads/donkey/incoming/[当地球停止转动].The.Day.The.Earth.Stood.Still.DVDRip.XviD-DMT.avi'))?"true":"false";  

结果成功,但是找来找去,找不到php获得操作系统默认编码格式的函数,所以只能写死了。
背景:本来想自己写的,算了,这个哥们写得更好,引用得了,http://www.cnblogs.com/xia520pi/p/3697099.html 。
官方文档说include和require唯一的区别就是出现找不到文件后会不会直接执行区别,条件引用说法不对,include和require两者的不同,不同点2经测试好像不是太明显。
英文:
The include construct will emit a warning if it cannot find a file; this is different behavior from require, which will emit a fatal error.
中文:
include触发警告,require触发错误,也就是说include没有发现文件会继续运行,而require发现没有文件则会停止运行,require ~once 会造成程序终止,如果要回滚事务什么的就完了,或者后面要关闭数据库链接什么的:
深究:include触发警告,require触发错误 为什么?问写php底层的人,为毛这样搞。
示例:在include找不到文件时程序继续运行,而require则不会继续运行。
[root@iZ25dcp92ckZ php]# cat include2.php

[root@iZ25dcp92ckZ php]# php include2.php    
abc
[root@iZ25dcp92ckZ php]# cat include3.php

[root@iZ25dcp92ckZ php]# php include3.php    
[root@iZ25dcp92ckZ php]#

include和require两者的不同点二:
.require 不管require语句有没有执行,程序执行包含文件都被加入进来 include只有执行的时候文件才会被包含
   在 判断 函数里面,用include显然是比较好的




====================================================================

php提供了两种包含外部文件的方法:include()和require()。include()语句是一个常规的php函数;而require()是一种特殊的语言结构,它的使用受到一些限制。对这两者来说,不管使用哪个语句来包含文件,解析程序都将退出php模式并在目标文件的开头进入HTML模式。这意味着目标文件中的所有应该作为php脚本执行的代码都必须被包含在有效的php起始标记和终止标记中。
  在同一脚本中,每次出现include()函数,它都会被执行,它甚至有可能被包含在循环或条件语句中。这意味着通过使用条件判断是否包含一个文件,它还可以使用循环结构包含一组文件。include()语句对文件的处理将终止。
  require()语句与include()语句是不同的,它不能受任何控制结构的控制。这说明使用require()不能有条件的包含文件。如果这个语句出现在循环中,或者位于取值为假的条件语句中,它也都会执行,并且只执行一次。另一个区别是,使用require()语句包含的文件不能有返回值。试图在require()语句中返回值将会产生一个解析错误

0.require加上判断并没有进入程序逻辑也包含进去了:http://www.cnblogs.com/dyllen/archive/2013/03/08/2950826.html

1.性能上,没有差别

2.require 不管require语句有没有执行,程序执行包含文件都被加入进来 include只有执行的时候文件才会被包含
   在 判断 函数里面,用include显然是比较好的

3.循环体:  require()不能在循环体中根据条件的不同而包含不同的文件。require()语句只会在第一次执行时调用它所包含的文件中的内容替换本身这条语句,当再次被执行时只能执行第一次所包含的语句。但是include()语句可以在循环体中来包含不同的文件。
Php代码





    补充 require 文件在程序执行过程中只能被包含一次,而include每次执行,文件都重新被包含,选择include的话,

保证包含文件多次包含不会出错,举例:
Php代码
conn.php:  
    

conn.php:



   在第二次调用的时候会出错,但是把 include 换成 require 就不会出问题。

  因为 require 文件只在读到该页面的时候调用一次,而 include 在每次调用含有   fun 的地方都调用,所以就出现了数据库连接还没关闭就再次连接的错误。

  因此在循环中只要调用一次的用 require ,其他地方这两个都可以用。

    4.报警:如果被包含的文件不存在,require:程序终止  include:报警,继续执行
    
    5.require include 比 file_get_content慢
1 开源的目的是什么,你是否支持开源,如果你加入开源项目组,你是否会开源自己的代码?
2 强命名并不能让人方便地保护程序,除引用WEB服务外,有无其他程序保护方法?目的是保护组件不被他人利用或是被反编译.
3 你认为就中国而言,未来的软件将有什么特点趋势,以及有什么令人惊喜的成果?
4 你是否在开发中把自己比作客户对象,而不是以一个无知的电脑新手为客户目标?
5 你是否考虑过客户可能不喜欢你的布局或是你的配色,你是否会将此作为重点解决目标之一?


1 开源的目的是什么,你是否支持开源,如果你加入开源项目组,你是否会开源自己的代码?
  1开源的目的是为了支持我喜欢的语言,让大家都来学习我喜欢的语言。
  如果网络上有很多VB.NET的开源项目,那么这种语言会有很多人来学习。因为学习资料很多。
  2为了提高知名度,得到社区的支持和赞同
  3为了商业目的,开源的东西,很多大公司愿意使用,安全,廉价,可以修改代码,定制软件。
  如果很多大公司用了我的开源软件,那个时候,就靠服务,技术支持赚钱了。
2 强命名并不能让人方便地保护程序,除引用WEB服务外,有无其他程序保护方法?目的是保护组件不被他人利用或是被反编译.
  这个没有研究过,不过,以后不是卖软件,是卖服务,卖标准
3 你认为就中国而言,未来的软件将有什么特点趋势,以及有什么令人惊喜的成果?
  基本上,中国软件已经死了。外包,看式样书写程序的人太多了。
  没有自己的技术,核心。不需要算法,只要外国人给项目。
  所有人研究DB,但是只限于SQL语法。
  不肯老老实实从头开发,节约成本,拿来主义。
  别人的控件,用得开心,设置控件属性,就是写程序。
  不考虑效率,只要正确,不优化代码,不重构,没有设计模式。
  我发现,很多真正的高手的本职工作,可能和他的上班的工作完全不一样的。兴趣才是好的程序员的土壤
4 你是否在开发中把自己比作客户对象,而不是以一个无知的电脑新手为客户目标?
  我写的东西,最好是我妈妈都容易使用的。这个最重要。
  不要搞得很高深的样子。
5 你是否考虑过客户可能不喜欢你的布局或是你的配色,你是否会将此作为重点解决目标之一?
  用户界面很重要的。第一眼给人的印象非常重要的。我愿意使用漂亮的,但不一定是最完美的软件。
php的mbstring扩展模块提供了多字节字符的处理能力,平常最常用的就是用mbstring来切分多字节的中文字符,这样可以避免出现半个字符的情况,由于是php的扩展,它的性能也要比一些自定义的多字节切分函数要好上一些。

mbstring extension提供了几个功能类似的函数,mb_substr和mb_strcut,看看手册上对它们的解释。

mb_substr
mb_substr() returns the portion of str specified by the start and length parameters.

mb_substr() performs multi-byte safe substr() operation based on number of characters. Position is counted from the beginning of str. First character's position is 0. Second character position is 1, and so on.

mb_strcut
mb_strcut() returns the portion of str specified by the start and length parameters.

mb_strcut() performs equivalent operation as mb_substr() with different method. If start position is multi-byte character's second byte or larger, it starts from first byte of multi-byte character.

It subtracts string from str that is shorter than length AND character that is not part of multi-byte string or not being middle of shift sequence.

举个例子来说,有一段文字, 分别用mb_substr和mb_strcut来做切分:

PLAIN TEXT
CODE:
$str = '我是一串比较长的中文-www.webjx.com';

echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8');

echo "
";

echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
?>
输出结果如下:

mb_substr:我是一串比较
mb_strcut:我是
分页: 213/272 第一页 上页 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 下页 最后页 [ 显示模式: 摘要 | 列表 ]