MyEclipse不更新JSP

为了测试系统中的一个小功能,我很开心的修改了系统时间
然后,我发现,无论我怎么修改JSP,在Tomcat中浏览就是没有任何效果,整个一大悲剧啊

于是,我纠结了整整一下午,最后,想起来修改了系统时间
文件修改时间比修改前的还要早,当然不会去刷新啦,唉,悲剧。

将系统时间调好,删掉Tomcat下编译好的JSP目录
系统就正常啦

面壁去了~~

CMD常用命令05Cluster切换时丢失网关

公司在一家医院做实施,将Tomcat,存储,Oracle都做好了Cluster

但好景不长:
切换几次后,总会有一台服务器连不上,ping都ping不通,只好再手工切回去

后来发现,切换后把网关给丢掉了
在cmd下ipconfig -all,网关为空,但在连接属性的TCP/IP设置里,网关仍健在

唉,在google未果的情况下,只好做了件很无奈的事情,
写了个脚本,去设置网关

Rem Hansen
set myinterface=本地连接
set mygateway=192.168.100.1
netsh interface ip set address name="%myinterface%" gateway="%mygateway%" gwmetric=1
pause

居然还算管用,将就一下吧,唉

VB6使用.net控件

1.为.net控件增加StrongName

生成签名密钥

sn –k Target.snk

在工程属性中指定snk文件
或在程序中增加

[assembly:AssemblyKeyFile(" Target.snk ")]

重新编译即可

2.注册控件

regasm Target.dll

3.生成Target.tlb

tlbexp Target.dll

4.将Target.dll放到全局程序集中

gacuti.exe  /i Target.dll

5.在VB6中引用Target.tlb即可

小红伞与gcc

昨天试着用MinGW编译FFMPEG,网上资料是很多,但我遇到了一个很让人郁闷的问题:

只要一./configure …
就显示gcc测试失败

纠结了一整天,最后发现居然是小红伞把测试gcc时生成的exe当成病毒处理掉了,晕
关闭小红伞,一切太平了

希望大家不要遇到这种问题

测试用例:
源码a.c

int main(){return 0;}

编译

gcc -o a.exe a.c

小红伞会报a.exe为病毒

CMD常用命令03Windows实用命令

1.Tasklist

作用: 显示当前运行在本地或远程计算机上的应用程序、服务以及进程 ID (PID) 的列表

语法:TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter] [/FO format] [/NH]

参数列表:
  /S   system          指定连接到的远程系统。
  /U   [domain/]user   指定应该在哪个用户上下文执行这个命令。
  /P   [password]      为提供的用户上下文指定密码。如果忽略,提示输入。
  /M   [module]        列出所有其中符合指定模式名的DLL模块的所有任务。如果没有指定模块名,则显示每个任务加载的所有模块
  /SVC                 显示每个进程中的服务。
  /V                   指定要显示详述信息。
  /FO   format         指定输出格式。有效值: "TABLE"、"LIST"、"CSV"。
  /NH                  指定栏标头不应该在输出中显示。只对 "TABLE" 和 "CSV" 格式有效。
  /?                   显示帮助/用法。

列出了系统的进程,包括PID,内存使用大小.
加上了参数/svc ,这样就列出了每个进程所调用的服务

2.Taskkill

作用:结束一个或多个任务或进程。可以根据进程 ID 或图像名来结束进程。

语法:TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] [/PID processid | /IM imagename] } [/F] [/T]

参数列表:
  /S   system          指定要连接到的远程系统。
  /U   [domain/]user   指定应该在哪个用户上下文执行这个命令。
  /P   [password]      为提供的用户上下文指定密码。如果忽略,提示输入。
  /F                   指定要强行终止进程。
  /PID process id      指定要终止的进程的PID。
  /IM   image name     指定要终止的进程的图像名。通配符 '*'可用来指定所有图像名。
  /T                   终止指定的进程和任何由此启动的子进程。
  /?                   显示帮助/用法。

3.Ntsd

第一步:打开进程管理器窗口,找到进程PID
第二步:输入ntsd -c q -p PID回车即可终止该进程。
只有System、SMSS.EXE和CSRSS.EXE进程不能被该命令杀死。前两个是纯内核态的,最后那个是Win32子系统,ntsd本身需要它。

4.ping

用来检测一帧数据从当前主机传送到目的主机所需要的时间

ping命令的格式如下:
ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS] [-r count] [-scount] [[-j host-list] | [-k host-list]] [-w timeout] destination-list

其中的参数说明如下:
-t 使当前主机不断地向目的主机发送数据,直到使用Ctrl-C中断;
-a 以IP地址格式(不是主机名形式)显示网络地址;
-n count 指定要做多少次ping,其中count为正整数值;
-l size 发送的数据包的大小; -f 设置回声分组不会由中间网关分组;
-i TTL 指定ping分组时限域,TTL是指在停止到达的地址前应经过多少个网关;
-v TOS 服务的类型; -r count 指出要记录路由的轮数(去和回);
-s count 指定当使用-r参数时,用于每一轮路由的时间;
-j host-list 指定希望分组的路由;
-k host-list 与-j参数基本相同,只是不能使用额外的主机;
-w timeout 指定超时时间间隔(单位为毫秒),缺省为1000;

一般我们使用得较多的参数为-t、-n、-w。 

5.ipconfig

用来显示主机内IP协议的配置信息。

ipconfig的命令格式如下:
ipconfig [/? | /all | /release [adapter] | /renew [adapter]]

其中的参数说明如下:
/? 显示ipconfig的格式和参数的英文说明;
/all 显示所有的配置信息;
/release 为指定的适配器(或全部适配器)释放IP地址(只适用于DHCP);
/renew 为指定的适配器(或全部适配器)更新IP地址(只适用于DHCP)。

使用不带参数的ipconfig命令可以得到以下信息:IP地址、子网掩码、默认网关。
而使用ipconfig /all,则可以得到更多的信息:主机名、DNS服务器、节点类型、网络适配器的物理地址、主机的IP地址、子网掩码以及默认网关等。

6.tracert

判定数据包到达目的主机所经过的路径、显示数据包经过的中继节点清单和到达时间。

tracert命令的格式如下:
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name 其中的

参数说明如下:
-d 不解析主机名;
-h maximum_hops 指定搜索到目的地址的最大轮数;
-j host-list 沿着主机列表释放源路由; -w timeout 指定超时时间间隔(单位毫秒)。

7.netstat

显示当前活动的网络连接的详细信息,如协议类型、当前主机与远端相连主机的IP地址以及它们之间的连接状态等。

netstat的命令格式如下:
netstat [-a] [-e] [-n] [-s] [-p proto] [-r] [interval] 其中的参数说明如下:

-a 显示所有主机的端口号;
-e 显示以太网统计信息;
-n 以数字表格形式显示地址和端口;
-p proto 显示特定的协议的具体使用信息;
-r 显示本机路由表的内容;
-s 显示每个协议的使用状态(包括TCP、UDP、IP);
interval 重新显示所选的状态,每次显示之间的间隔数(单位秒),按Ctrl+C中止重新显示。

8、arp

arp的命令格式如下:
arp -s inet_addr eth_addr [if_addr]
arp -d inet_addr [if_addr]
arp -a [inet_addr] [-N if_addr]

参数说明如下:
inet_addr IP地址;
eth_addr 以太网卡地址;
-a 显示某个IP地址的网卡地址(不加IP地址,显示所有已激活的IP地址的网卡地址)(使用该参数前应该先ping通某一个IP地址);
-d 删除指定IP地址的主机;
-s 增加主机和与IP地址相对应的以太网卡地址。

9.Fixmbr

重新构造主引导扇区。只修改主引导扇区记录,对其他扇区不进行写操作。

其基本命令格式如:
Fixmbr[Drive][/A][/D][/P][/Z][/H]

/A:Active DOS partition(激活基本DOS分区)
/D:Display MBR(显示主引导记录内容)
/P:Display partition(显示DOS分区的结构)
/Z:Zero MBR (将主引导记录区清零)
/H:Help (帮助信息)

如果直接键入FixMbr后按回车键,缺省的情况下将执行检查主引导区结构的操作。如果发现系统不正常,将出现是否进行修复的提示。
回答Yes后将搜索分区,当搜索到相应的分区以后,系统会提示是否修改主引导区,回答YES则会开始修复。如果搜索的结果不对,可使
用/Z开关符,重新启动系统将主引导区恢复到原来的状态。

10.Diskpart

利用它可实现对硬盘的分区管理,包括创建分区、删除分区、合并(扩展)分区。

Active:将一个分区标为 Aactive,让它成为系统盘。
Delete:删除分区。
Exit:退出Diskpart状态。
Extend:将分区的容量扩大。
Help:显示帮助信息。
List:列出磁盘或分区。
Select:选择要操作的对象,如一个磁盘或分区等。

CMD常用命令02定期备份Oracle

项目实施后,为了以防万一,决定每天夜里备份数据库
虽然Oracle本身就有自动备份的功能,但我仍然不放心于是用bat和windows的任务计划进行了备份

REM HANSEN 2011-03-31
REM 用于备份Oracle数据库
color 2

set FilePath=S:/Backup/
set UserName=user
set PassWord=pwd
set ServiceName=orcl

if not exist "%FilePath%" (exit)

set FileName=%DATE:~0,10%-%TIME:~0,8%
set FileName=%FileName::=-%

set FileName=%FileName: =0%
set DBFile=%FilePath%%FileName%.dmp
set LogFile=%FilePath%%FileName%.log

echo ORACLE数据库备份开始
echo %DATE:~0,10% %TIME:~0,8%
echo ORACLE数据库备份数据保存到%DBFile%
echo ORACLE数据库备份日志保存到%LogFile%

exp %UserName%/%PassWord%@%ServiceName% file=%DBFile% log=%LogFile% compress=y direct=n rows=y 
owner='%UserName%' consistent=n constraints=y grants=y indexes=y triggers=y

另外又加了个定期删除的bat,但这个有些问题的,就是只考虑了备份文件的创建时间,并没有考虑到要保留几个备份
换句话说,当连续7天备份失败后,就没有备份了,所以请修改一下再用

Rem Delete Files Older Than One Week
set FilePath=E:/Backup/
forfiles /p %FilePath% /s /m *.dmp /d -7 /c "cmd /c del @file
forfiles /p %FilePath% /s /m *.log /d -7 /c "cmd /c del @file

Linux常用命令10Vim常用操作

0.基本操作
0.1多行复制
0.1.1、复制方法一
A、将光标移动到要复制的起始行
B、如果复制1行,则按下yy,如果是复制n行,则按下nyy
C、光标移动到粘贴地点,按下p

0.1.2、复制方法二
A、ESC,:进入命名模式
B、start_line_no,end_lin_no co target_line_no

0.1.3、复制方法三(方法二+标签)
A、将光标移动到要复制的起始行,输入ma
B、将光标移动到要复制的结束行,输入mb
C、将光标移动到要复制的目标行,输入mc
D、ESC,:进入命名模式
E、’a,’b co ‘c

0.1.4、剪切方法一
A、将光标移动到要剪切的起始行
B、如果剪切1行,则按下dd,如果是剪切n行,则按下ndd
C、光标移动到粘贴地点,按下p

0.1.5、剪切方法二
A、ESC,:进入命名模式
B、start_line_no,end_lin_no m target_line_no

0.1.6、剪切方法三(方法二+标签)
A、将光标移动到要剪切的起始行,输入ma
B、将光标移动到要剪切的结束行,输入mb
C、将光标移动到要剪切的目标行,输入mc
D、ESC,:进入命名模式
E、’a,’b m ‘c

1.正则表达式
1.1.行首、行尾及空格
1.1.1 符号具体含义

^表示行首
$表示行尾
\s表示空格

1.1.2 应用举例

在全局范围内删除开始空格
:%s/^\s\+/

删除末尾空格
:%s/\s\+$/

删除空行
:g/^$/d

删除空白行
:g/^\s\+$/d

删除-开始的行
:g/^-/d

2.Table与空格互转
2.1、空格转TAB

:set ts=8
:set expandtab
:%retab!

2.2、TAB转空格

:set ts=8
:set noexpandtab
:%retab!

3.删除重复行
3.1、方法一

先排序
:sort
然后删除的重复项的后面一项
:g/\%(^\1$\n\)\@<=\(.*\)$/d

3.2、方法二

先排序
:sort
然后删除重复项的前面一项
:g/^\(.*\)$\n\1$/d

3.3、方法三

先排序
:sort
然后将所有重复记录替换为第一条
:%s/^\(.*\)\(\n\1\)\+$/\1/

4.奇偶行
4.1、删除奇数行

%s/\(^.*$\)\n\(^.*$\)/\1

4.2、删除偶数行

%s/\(^.*$\)\n\(^.*$\)/\2

4.3、奇偶行合并,以tab分隔

%s/\(^.*$\)\n\(^.*$\)/\1\t\2

%s/\n\(.*\n\)/\t\1

5.生成行号
5.1、方法1

:r !seq 1 100

5.2、方法2

:let n=0 | g/^/s//\=n/|let n+=1 

6、每行首字母大写

%s/^\([a-z]\)/\U\1/

7.将行调整为固定宽度

:s/\v(.{80})/\1\r/g

CMD常用命令01%1的用法两则

1.新建个bat文件
然后在里面写上:
attrib +h +s %1
然后把任意文件或文件夹拖放到上面,
就可以把其设成系统+隐藏属性了。

2.新建鼠标右键菜单
名称:用记事本打开
命令:notepad %1
这样就能随时用记事本打开文件了。

还有,不仅%1呢,%2,%3都可以的,
比如一次想把很多文件设成隐藏属性时,
一起拖拽到文件图标上就好了,自己试试吧。

attrib +h +s %1
attrib +h +s %2
attrib +h +s %3
attrib +h +s %4
attrib +h +s %5
attrib +h +s %6
attrib +h +s %7
attrib +h +s %8
attrib +h +s %9

一个有趣的VC6题目

在VC6 Debug环境下,要求填补一段代码,使输入与输出一致。

    #Include <Stdio.h>  
    void test()  
    {  
        int t;  
        scanf("%d", &t);  
       /*  
       在这里填写代码…… 
       */  
    }  
    int main()  
    {  
        int m;  
        test();  
        printf("%d", m);  
    }  

方法一:

    int* pt = &t;  
    pt += 22;  
    *pt = t  

方法二:

    #Include <windows.h>  
    DWORD addrEbp;  
    _asm  
    {  
        mov addrEbp,ebp;  
    }  
    DWORD *pm=(DWORD *)(addrEbp + 0x80-0x28 -4);  
    *pm=t;  

两种方法都是直接修改了内存,呵呵,还是蛮有意思的啦。