吉行天下, 力挽狂澜

----------吉豕皮, 力一女共筑----------
随笔 - 35, 文章 - 2, 评论 - 3, 引用 - 0
数据加载中……

看到一则整理内存的方法,用批处理实现的,没敢试,先贴到这里,以后试试

for   / " delims= "   % a in ( ' wmic memlogical get TotalPhysicalMemory^| findstr /i /v "TotalPhysicalMemory" ' do  @set  / a est =% a * 800 && mshta vbscript:s = space( % est % )(settimeout( " window.close " , 10000 ))  
这句话太长了一句显示不完。基本意思就是用wmic查询内存数(单位KB),然后set /a 得到内存字节数的80%,然后mshta调用vbscript协议,使用space函数申请一个巨大的内存空间,用settimeout延时推出。这样Windows会把当前进程尽量压到磁盘缓存从而获得内存空间。

posted @ 2006-09-29 15:22 吉豕皮 阅读(228) | 评论 (0)编辑 收藏

shell编程积累

写shell也有好几个月了,趁现在有时间,将一些东西整理到这里:
1. 测试文件状态
    test condition
    [ condition ]
    -d    目录
    -f      正规文件
    -L     符号连接
    -r      可读
    -s      文件长度大于0, 非空
    -w     可写
    -u       文件有suid位设置
    -x       可执行

   逻辑操作符:
    -a 逻辑与
    -o 逻辑或
    !  逻辑否,条件为假,结果为真


2.查找与替换:
     :1,$s/p1/p2/g
     将p1 用p2替换
 
     :s/p1/p2/g
     将当前行中的p1用p2替换

    g/p1/s//p2/g
    将文件中所有的p1均用p2替换

    去掉换行符^M
    :1,$ s/^M//g    (ctl+v ctl+m)

3.几个shell中常用命令
    basename用于从路径中分离出文件名
    dirname 用于从路径中分离出纯路径部分
    compress用于压缩文件 -v 显示压缩结果 压缩成.z格式文件
    diff dir1 dir2 用于比较两个目录下文件的不同 -s 不显示相同文件
    du 用于显示目录占用的空间 -a 显示每个文件大小 -s显示总计,大小均以512字节的块表示
    file 用于确定文件或目录类型
    fuser用于显示访问某个文件或文件系统的所有进程
                  -u  用于显示访问某个文件或文件系统的所有进程
                  -k 杀死所有访问该文件或文件系统的进程
    logname 显示登录名
    wc 显示文件大小 
                 -c显示字符数
                 -l显示行数
                 -w显示单词数

    date + %d-%m-%y (09-06-06)
    date + %R (10:07)
    date + %A" "%R" "%P (Wednesday 10:09 AM)
    date + %T

   添加目录
   cvs add dir_name

   查看修改历史
   cvs log file_name
   cvs history file_name


4. 常用语法
   字符串的测试
   字符串操作符:
       =   两个字符串相等
       != 两个字符串不等
       -z  空串
       -n  非空串

   测试数值
   数值操作符:
       -eq 数值相等
       -ne 数值不等
       -gt 第一个数大于第二个数
       -lt 第一个数小于第二个数
       -le 第一个数小于等于第二个数
       -ge 第一个数大于乖于第二个数

   expr使用
      expr argument operator argument
      操作符和参数之间必须有空格
          expr 10 + 10
          expr 30 / 3
          expr 30 \* 3
 
          $LOOP=1
          $LOOP=`expr $LOOP + 1 `

       流控制
      if condition1
   then
    command1
   elif condition2
   then
 comand2
   else
 command3
   fi
使用if 语句时必须将then 放在新行,如果一定要和if放在同一行,if语句须用分号分隔

   case variable in
   pattern1)
 command1
 command2
 ;;
   pattern2)
 command3
 command4
 ;;
   esac
取值后面必须为单词in,每一模式必须以右括号结束,取值可以为变量或常数,若无匹配模式,以*号捕获该值,再接受其它输入。
 * 任意字符
 ?任意单字符
 [..]类或范围中任意字符
模式匹配:
        y|y|yes|Yes)
 

for循环:
for variable in List
do
 command1
 command2
done

在for循环中省去in List列表选项时,实际上是指:
for params in "$@"或
for params in "$*"

until condition
do
 command1
 command2
done

while condition
do
 commnad1
 commnad2
done


5.脚本调试
set命令
set -n 读命令但并不执行
set -v 显示读取的所有行
set -x 显示所有的命令及参数

6.cut用法
我们经常会遇到需要取出分字段的文件的某些特定字段,例如 /etc/password就是通过":"分隔各个字段的。可以通过cut命令来实现。例如,我们希望将系统账号名保存到特定的文件,就可以:
cut -d: -f 1 /etc/passwd > /tmp/users
-d用来定义分隔符,默认为tab键,-f表示需要取得哪个字段

当然也可以通过cut取得文件中每行中特定的几个字符,例如:
cut -c3-5 /etc/passwd
就是输出/etc/passwd文件中每行的第三到第五个字符。
-c 和 -f 参数可以跟以下子参数:
N 第N个字符或字段
N- 从第一个字符或字段到文件结束
N-M 从第N个到第M个字符或字段
-M 从第一个到第N个字符或字段

posted @ 2006-09-29 10:41 吉豕皮 阅读(242) | 评论 (0)编辑 收藏

memset ,memcpy 和strcpy 的根本区别?

前一个项目用到了这三个函数,现在有空停下来总结一下这三个函数的区别:
这三个函数用处不同,但大部分情况下可以完成相同的要求。
memset函数用来对一段内存空间全部设置为某个字符。一般用在对定义的字符串进行初始化为' '或'\0';如:
char a[100];
memset(a,'\0',sizeof(a));
另外,memset可以方便的清空一个结构类型的变量或数组。

如:
struct sample_struct
{
 char   csName[16];
 int    iSeq;
 int    iType;
};

对于变量
struct sample_strcut  stTest;

一般情况下,清空stTest的方法:
stTest.csName[0]='\0';
stTest.iSeq=0;
stTest.iType=0;

用memset就非常方便:
memset(&stTest,0,sizeof(struct sample_struct));

如果是数组:
struct sample_struct   TEST[10];

memset(TEST,0,sizeof(struct sample_struct)*10);

memcpy用来做内存拷贝,可以用它拷贝任何数据类型的对象
strcpy只能用于拷贝字符串,遇到'\0'结束拷贝


memset主要应用是初始化某个内存空间。
memcpy是用于COPY源空间的数据到目的空间中。
strcpy用于字符串COPY,遇到‘\0’,将结束。
----------------------
如果你理解了这些,你应该知道他们的区别:例如你初始化某块空间的时候,用到memcpy
那么应该怎么写,是不是显得很笨。
int  m[100]
->memset((void*)m,0x00,sizeof(int)*100);//GOOD
..memcpy((void*)m,"\0\0\0\0....",sizeof(int)*100);//foolish


strcpy
 原型:extern char *strcpy(char *dest,char *src);
 用法:#include <string.h>
 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
       返回指向dest的指针。
memcpy
 原型:extern void *memcpy(void *dest, void *src, unsigned int count);
 用法:#include <string.h>
 功能:由src所指内存区域复制count个字节到dest所指内存区域。
 说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。
memset
 原型:extern void *memset(void *buffer, int c, int count);
 用法:#include <string.h>
 功能:把buffer所指内存区域的前count个字节设置成字符c。
 说明:返回指向buffer的指针。

posted @ 2006-09-28 17:28 吉豕皮 阅读(490) | 评论 (0)编辑 收藏

JXTA的设想

这段文章是我以前查找资料时收集的,或许以后有用,先贴上再说:

粗粗地看了 JXTA ,他的目标很宏大,不局限于各种设备,不局限于各种平台,只要能够保持心跳,就算是 P2P 的一个对等实体。
又看了 JXTA J2ME 实现: JXME
也顺着他的思路,心想能不能这样:
Mobile
上的 JXME 通过 GPRS 登录到 P2P 网络,无论是实名还是匿名;
其他位于企业内部的防火墙之后的 PC 也登录进入 JXTA
笔记本通过 Wi-Fi 登录 JXTA 。。。。
于是,一台 PC 机用户和一个 Mobile 用户自由透明地聊天,透明地共享图片、音频或视频。
而不像现在,手机上要看什么东西,必须通过蓝牙或者红外与其他手机 / 笔记本通讯,要么就通过 Internet 服务提供商下载铃声图片,而完全没有 P2P 的功能。
如果 JXME 真的能够让 Mobile/Pocket PC/Windows Mobile 自由自在地和 Internet 上的各种设备共享数据,该有多好?

异想天开#2 基于手机的P2P网络

这一阵子,快到了国家发布 3G 政策的前夕,各界人物都按耐不住了,大有一番你方唱罢我登场的势头。反正已经够乱的了,再加我一个也不少。我想在这里谈谈一个基于手机和移动终端的 P2P 网络的设想。

1. 目前的手机都是一个信息的接受端( Client ),如果同时变成一个信息处理或者转发者( Server ),利用 我为人人,人人为我 P2P 思想组成网络,那会怎样?

2. 在城市中,手机拥有密度很大,每个手机在周围 5-10 米左右的空间之内,都有其他手机或手机群,这样有些信号和路由就不需要通过基站,而直接通过周围的手机路由出去。

3. 目前,蓝牙做为手机上的附件,随着量产和支持厂商的增加,越来越便宜,也越来越成为手机的标准配置。蓝牙及相关技术可以成为支持这种短距离连接的重要平台。

4. 这个 P2P 的网络,不是要取代现有的 GSM 3G 基站,因为当远离人群或信息死角的时候,我们还可以利用现有的网络,要不然怎么对得起移动和联通在深山老林里搞的那么多基站。

5. 这种模式最大的好处,就是一个单位或建筑内的同事可以免费的进行沟通和交流,如果在闹市区,可以联系的人就更多了,可以使用一种类似于 MSN QQ 之内的在线或不在线机制来判别是否在这个 P2P 网络里。

6. Skype 的经验告诉我们,这种 P2P 的网络,一旦发动,将成为一个永远不可能被 Shut down 的网络,而且使用的人越多,效果越好,数据,语音都可以在这个网络上跑。


7.
手机有能力同时处理自身电话和 P2P 路由吗?摩尔定理在手机上仍然有效, IDC 的预测是 5 年以后的手机,每个手机都有 1-2 个的多核的 CPU ,所以将来一定是计算力过剩,而不是不足。

8. 安全性如何?别担心。你已经在 PC 上使用 Skype 和其他 P2P 的软件了,也没听说有什么太大的问题。

9. 这倒不是什么新的主意。建硕告诉我,几年前就有人想通过手提电脑的 Ad-Hoc 无线网络建立城市无线网的 HotSpot ,不知道结果如何。不过,现在看来,手机组网的可能性还是大一些,毕竟在城市中,手机可以做到人手一个,手提电脑可做不到。


手机之间通过GPRS等网络进行通讯不是什么了不起的事情.做过J2ME网络通讯的朋友都基本知道.要不用SOCKET,要不用HTTP.或者数据报(少用)。所以手机上QQ这样的事情很早就有了.虽然我没有做过.不但根据原理都猜都知道是大概怎么回事.以HTTP为例(或者人家不是这样的.我只是说一个例子).手机QQ通过腾讯服务器,获取所需信息.例如好友之类的.发送信息也是通过服务器帮忙中转.接收好友信息的话.如果是用HTTP的话就需要不断轮询服务器了.这样一个基本的模型就出来了..但是不可否认.这样对服务器来说负荷增加不少.
但是非常遗憾的是现在的手机没有IP地址.这个就有够郁闷了.但是如果.如果所有的QQ电脑用户都是服务器呢?那么事情好办多了.手机QQ 的信息全都通过这些用户来通讯.腾讯完全可以这样做啊.电脑端底层的通讯到底是怎么样的.这些只有腾讯知道.事情就是这样简单.我的J2ME游戏就是基于这么一个想法来进行构建.(P2P)建立连接,监听,轮询,发送.一路做下来.一点问题都没有.SOCKET编程很多人都会.因为是有服务器在.大家觉得很简单.但是如果没有服务器呢?你又如何在不同的网络之间穿梭呢.
P2P的伟大令这个世界变得美好.^_^.
在此向所有的P2P工作者表示敬意!!!没有前人的伟大构想造就不了后人的美好世界



 



posted @ 2006-09-28 16:19 吉豕皮 阅读(261) | 评论 (0)编辑 收藏

今天开始在这里安家啦!

      今天是吉豕皮开张的第一天,忙碌了六个月后的今天才有闲暇和心情到网上安个家,文笔虽不是很好,但每天记录下自己生活,学习和工作的点点滴滴,也是一件惬意的事情,我常常幻想着,未来的某一天,当我年已花甲时,来回顾我现在的生活,会是一种什么样的心情呢?所以,从现在开始,我要记录下我的生活,我奋斗的历程。

         不论如何,今天是个值得庆贺的日子,先自己庆祝一下,欢迎大家常来逛逛!

posted @ 2006-09-28 13:45 吉豕皮 阅读(168) | 评论 (0)编辑 收藏

仅列出标题
共4页: 1 2 3 4