有很多人,都说自已的计算机如何慢、如何慢,其实令自已的计算机慢的原因,如果将所有原因算出来,简直多的是!不过我会在这里简介一下令计算机慢的主因!
1、在开机时加载太多程序
2、桌面上开启桌布
3、没有定期清理硬磁盘和重组硬磁盘
以下的,我就会很详细地说明一下如何加速计算机和令计算机慢的病征!解决七大常见影响计算机表现的原凶当计算机忽然慢下来时,你可能会怀疑自己是否做错了甚么而引致损害了计算机?其实不必太介怀,因为一个小小改变,都可能会影响到计算机运作表现,而且在使用计算机的过程中,无可避免地都会引起各种些微的改变。任何问题总有方法可以解决的,就让我细细道出七大常见影响计算机表现的原因,解决了它们之后,便可以安心享用计算机的高性能。
4、删除常驻程序
何谓常驻程序呢?常驻程序就是在开机时加载的程序,而那些程序就叫做常驻程序。常驻程序不但拖慢开机时的速度,而且更快地消耗计算机资源以及内存,但你可能会问:那些程序全都有用的耶!那我可以答你的就是:你想要那些有用的程序来牺牲速度,还是不要那些程序来回复速度呢?自己想一想吧!一般来说,如果想删除常驻程序,可去"启动"清单中删除,但如果想详细些,例如是icq、popkiller 之类的软件,是不能在"启动"清单中删除的,要去"附属应用程序",然后去 "系统工具",再去"系统信息",进去后,按上方工具列的"工具",再按"系
统组态编辑程序",进去后,在"启动"的对话框中,就会详细列出在启动电
脑时加载的常驻程序了!
5、桌面上不要摆放桌布和关闭activedesktop
不知大家有否留意到,我们平时一直摆放在桌面的桌布,其实是很浪费计算机资源的!不但如此,而且还拖慢计算机在执行应用程序时的速度!本想美化桌面,但又拖慢计算机的速度,在这时,你是否会有一种"不知怎样"的感觉呢?还有一点,不知大家有否试过,就是当开启桌布时,每逢关闭一个放到最大的窗口时,窗口总是会由上而下、慢慢、慢慢地落,如果有这种情况出现,你必须关闭桌布!方法是:在桌面上按鼠标右键,再按内容,然后在"背景"的对话框中,选"无",建议在"外观"的对话框中,在桌面预设的青绿色,改为黑色......至于关闭activedesktop,即是叫你关闭从桌面上的web画面,例如在桌面上按鼠标右键,再按内容,然后在"背景"的对话框中,有一幅桌布,名为windows98,那副就是web画面了!所以千万不要开启。依我所说,布只可拿四个字来形容,就是"红颜祸水"!
6、删除一些不必要的字型
系统运行得慢的其中一个原因,就是字型多少的关系!安装的字型愈多,就占用愈多的内存,从而拖慢计算机的速度!所以我们要删除一些不必要的字型。要删除一些不必要的字型,你可到控制台,再进去一个叫"字型"的数据夹,便可删除字型,但,要怎样才知道,那些字有用,那些字没用呢?例如:如果你不常到 ms_dos模式的话,就删除dos 字型!因为各个人都可能喜爱某种字型,所以我也不能确定要删除那些
字型,不过我在此,有个秘决教你,如果你有华康粗黑字型,且又有新
细明体的字型,建议你删除华康粗黑字型,如果你有新细明体,且又有细明体,就删除细明体吧!
7、定期重组硬磁盘
计算机硬盘中最细小的单位是扇区,一个档案通常会占用若干扇区,每当硬盘用久了,无数次的新增、更改和删除档案后,就会造成很多断断续续的扇区,因而非连续性的档案便会愈来愈多,硬盘磁头便需要花更多时间跳来跳去来读取数据,这就导致硬盘速度减慢。有见及此,windows才会有"重组磁盘"出现。只要执行"重组磁盘",所有非连续性的档案都会被重新编排得整整齐齐,至于执行时间,大约一星期左右执行一次便可了。
8、设定虚拟内存
硬盘中有一个很宠大的数据交换文件,它是系统预留给虚拟内存作暂存的地方,很多应用程序都经常会使用到,所以系统需要经常对主存储器作大量的数据存取,因此存取这个档案的速度便构成影响计算机快慢的非常重要因素!一般win98预设的是由系统自行管理虚拟内存,它会因应不同程序所需而自
动调校交换档的大小,但这样的变大缩小会给系统带来额外的负担
,令系统运作变慢!有见及此,用家最好自定虚拟内存的最小值和最大值,避免经常变换大小。要设定虚拟内存,在"我的计算机"中按右键,再按内容,到"效能"的对话框中,按"虚拟内存",然后选择"让自已设定虚拟内存设定值",设定"最小值"为64,因为我的计算机是32mbram,所以我就设定为64,即是说,如果你的内存是64mbram,那在"最小值"中,就设为128。顺带一提,在"效能"的对话框中,选择"档案",将原先设定的" 桌上型计算机",改为"网络服务器",是会加快系统运作的;还有,在"磁盘"的对话框中,不要选"每次开机都搜寻新的磁盘驱动器",是会加快开机速度的!
9、更改开机时的设定
虽然你已知道了如何新增和移除一些常驻程序,但你又知不知道,在开机至到进入win98的那段时间,计算机在做着什么呢?又或者是,执行着什么程序呢?那些程序,必定要全部载完才开始进入win98,你有否想过,如果可删除一些不必要的开机时的程序,开机时的速度会否加快呢?答案是会的!想要修改,可按"开始",选"执行",然后键入win.ini,开启后,可以把以下各段落的内容删除,是删内容,千万不要连标题也删除!它们包括:[compatibility]、[compatibility32]、[imecompatibility]、[compatibility95]、[modulecompatibility]和。
10、彻底删除程序
大家都知道,如果想移除某些程序,可到"新增/移除程序"中移除,但大家又知不知道,它只会帮你移除程序,而不会帮你移除该程序的注册码和一些登录项目呢?这不是win98蠢,而是它在这方面不够专业,要彻底删除程序,要找回些"专业"删除软件来移除才成事!先前symantec公司出品的nortonuninstall(以下简称为nud),因为有某部份破坏了某些删除软件的版权,故此全世界已停止出售,正因如此,symantec才出了cleansweep(以下简称为cs),不过论功能上,还是nud更胜一寿!言归正传,其实除了这两个软件外,还有很多同类软件都能有效地移除程序,既然nud已绝版,那我就说cs吧。下载并安装后,如果你想移除程序,只要用cs来移除,它便会一拼移除该程序的登录项目和注册码!我在此帮"新增/移除程序"改了个别名,就是"新增垃圾、移除程序"!垃圾是指被遗弃的登录项目和注册码,程序就是程序啰!
做好以上十点,相信你的爱机已经是健步如飞了。当然了,如果还是很慢的话,那就应该考虑硬件升级了
2009年5月10日星期日
一招!杜绝autorun病毒
一招!杜绝autorun病毒
1. 运行CMD,进入DOS界面,因为这个非法的文件夹只能在DOS下创建。
2. 输入“X:”回车(不含引号,下同),其中X表示盘符,比如你有C、D、E等硬盘分区,或者把U盘插上后的盘符,记得不要试图在光驱盘符上操作哟。
3. 输入“md autorun.inf”,创建autorun.inf文件夹;
4. 输入“cd autorun.inf”,进入autorun.inf文件夹;
5. 输入“md haha..\”,haha可随意起各其他名字,但不要太长,三五字符个即可。注意这是关键的一步,haha的后面一定要输入两个点和一个反斜杠,这样建立的就是一个含有非法字符的文件夹,windows下无法进入也无法删除了。
6. 回到窗口界面,试试删除这个文件夹~ 嘿嘿,一般方法删不掉的哦~
此方法能对付大部分的autorun病毒!
1. 运行CMD,进入DOS界面,因为这个非法的文件夹只能在DOS下创建。
2. 输入“X:”回车(不含引号,下同),其中X表示盘符,比如你有C、D、E等硬盘分区,或者把U盘插上后的盘符,记得不要试图在光驱盘符上操作哟。
3. 输入“md autorun.inf”,创建autorun.inf文件夹;
4. 输入“cd autorun.inf”,进入autorun.inf文件夹;
5. 输入“md haha..\”,haha可随意起各其他名字,但不要太长,三五字符个即可。注意这是关键的一步,haha的后面一定要输入两个点和一个反斜杠,这样建立的就是一个含有非法字符的文件夹,windows下无法进入也无法删除了。
6. 回到窗口界面,试试删除这个文件夹~ 嘿嘿,一般方法删不掉的哦~
此方法能对付大部分的autorun病毒!
巧妙破解Windows XP登陆口令
Windows XP强大而友好的系统界面博得了越来越多用户的青睐,然而它对用户安全性的审核即是非常严格的,要是你忘记了设置的口令(密码),可别以为能够像Windows 98那样选择“取消”同样可以进入系统--这一点相信安装Windows XP的你,是很清楚的。当然这也是有过痛苦的经历后,才被我们重视的。
由于没有登陆口令,无法进入系统;起初的方法总是选择重新安装Windows XP,但这种方法但繁琐,而且费时费力,经过多次实验之后,终于找到了一个可以不需要任何其它软件,就可破解Windows XP登录口令的方法:
但是破解登陆口令,需要有两个必要的前提:
1.安装Windows XP的分区必须采用FAT32文件系统;
2.用户名中没有汉字。
在确认满足这两个条件后,即可执行以下步骤,来破解登陆口令。
1.开机启动Win XP,当运行到“正在启动Windows XP”的提示界面时,按“F8”键调出系统启动选择菜单,选择“带命令行安全模式”;
2.当运行停止后,会列出“Administrator”和其它用户的选择菜单(本例的其他用户以xpuser01为例),选择“Administrator”后回车,进入命令行模式;
3.键入命令““net user xpuser01 1234/ADD”这是更改该用户密码的命令,命令中的“1234”是更改后的新密码,如果键入的用户不存在(xpuser01),那么系统会自动添加这个用户。
4.另外还可以使用“net 1oca1group administrator xpuser01 /ADD”命令把xpuser01这个用户升为超级用户,即可拥有所有权限。
5.最后一步,就是重新启动计算机,在登录窗口中输入刚刚更改的新密码便可成功登陆。
如果你正在为丢失了登陆口令而烦恼的话,不妨试一试此方法
由于没有登陆口令,无法进入系统;起初的方法总是选择重新安装Windows XP,但这种方法但繁琐,而且费时费力,经过多次实验之后,终于找到了一个可以不需要任何其它软件,就可破解Windows XP登录口令的方法:
但是破解登陆口令,需要有两个必要的前提:
1.安装Windows XP的分区必须采用FAT32文件系统;
2.用户名中没有汉字。
在确认满足这两个条件后,即可执行以下步骤,来破解登陆口令。
1.开机启动Win XP,当运行到“正在启动Windows XP”的提示界面时,按“F8”键调出系统启动选择菜单,选择“带命令行安全模式”;
2.当运行停止后,会列出“Administrator”和其它用户的选择菜单(本例的其他用户以xpuser01为例),选择“Administrator”后回车,进入命令行模式;
3.键入命令““net user xpuser01 1234/ADD”这是更改该用户密码的命令,命令中的“1234”是更改后的新密码,如果键入的用户不存在(xpuser01),那么系统会自动添加这个用户。
4.另外还可以使用“net 1oca1group administrator xpuser01 /ADD”命令把xpuser01这个用户升为超级用户,即可拥有所有权限。
5.最后一步,就是重新启动计算机,在登录窗口中输入刚刚更改的新密码便可成功登陆。
如果你正在为丢失了登陆口令而烦恼的话,不妨试一试此方法
让你的电脑达到最强安全的配置
1.察看本地共享资源
运行CMD输入net share,如果看到有异常的共享,那么应该关闭。但是有时你关闭共享下次开机的时候又出现了,那么你应该考虑一下,你的机器是否已经被黑客所控制了,或者中了病毒。
2.删除共享(每次输入一个)
net share admin$ /delete
net share c$ /delete
net share d$ /delete(如果有e,f,……可以继续删除)
3.删除ipc$空连接
在运行内输入regedit,在注册表中找到 HKEY_LOCAL_MACHINE SYSTEM CurrentControSet Control LSA 项里数值名称RestrictAnonymous的数值数据由0改为1。
4.关闭自己的139端口,ipc和RPC漏洞存在于此。
关闭139端口的方法是在“网络和拨号连接”中“本地连接”中选取“Internet协议(TCP/IP)”属性,进入“高级TCP/IP设置”“WinS设置”里面有一项“禁用TCP/IP的NETBIOS”,打勾就关闭了139端口。
5.防止rpc漏洞
打开管理工具——服务——找到RPC(Remote Procedure Call (RPC) Locator)服务——将故障恢复中的第一次失败,第二次失败,后续失败,都设置为不操作。
XP SP2和2000 pro sp4,均不存在该漏洞。
6.445端口的关闭
修改注册表,添加一个键值
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NetBT\Parameters在右面的窗口建立一个SMBDeviceEnabled 为REG_DWORD类型键值为 0这样就ok了
7.3389的关闭
XP:我的电脑上点右键选属性-->远程,将里面的远程协助和远程桌面两个选项框里的勾去掉。
Win2000server 开始-->程序-->管理工具-->服务里找到Terminal Services服务项,选中属性选项将启动类型改成手动,并停止该服务。(该方法在XP同样适用)
使用2000 pro的朋友注意,网络上有很多文章说在Win2000pro 开始-->设置-->控制面板-->管理工具-->服务里找到Terminal Services服务项,选中属性选项将启动类型改成手动,并停止该服务,可以关闭3389,其实在2000pro 中根本不存在Terminal Services。
8.4899的防范
网络上有许多关于3389和4899的入侵方法。4899其实是一个远程控制软件所开启的服务端端口,由于这些控制软件功能强大,所以经常被黑客用来控制自己的肉鸡,而且这类软件一般不会被杀毒软件查杀,比后门还要安全。
4899不象3389那样,是系统自带的服务。需要自己安装,而且需要将服务端上传到入侵的电脑并运行服务,才能达到控制的目的。
所以只要你的电脑做了基本的安全配置,黑客是很难通过4899来控制你的。
9、禁用服务
打开控制面板,进入管理工具——服务,关闭以下服务
1.Alerter[通知选定的用户和计算机管理警报]
2.ClipBook[启用“剪贴簿查看器”储存信息并与远程计算机共享]
3.Distributed File System[将分散的文件共享合并成一个逻辑名称,共享出去,关闭后远程计算机无法访问共享
4.Distributed Link Tracking Server[适用局域网分布式链接? 倏突Ф朔馷
5.Human Interface Device Access[启用对人体学接口设备(HID)的通用输入访问]
6.IMAPI CD-Burning COM Service[管理 CD 录制]
7.Indexing Service[提供本地或远程计算机上文件的索引内容和属性,泄露信息]
8.Kerberos Key Distribution Center[授权协议登录网络]
9.License Logging[监视IIS和SQL如果你没安装IIS和SQL的话就停止]
10.Messenger[警报]
11.NetMeeting Remote Desktop Sharing[netmeeting公司留下的客户信息收集]
12.Network DDE[为在同一台计算机或不同计算机上运行的程序提供动态数据交换]
13.Network DDE DSDM[管理动态数据交换 (DDE) 网络共享]
14.Print Spooler[打印机服务,没有打印机就禁止吧]
15.Remote Desktop Help& nbsp;Session Manager[管理并控制远程协助]
16.Remote Registry[使远程计算机用户修改本地注册表]
17.Routing and Remote Access[在局域网和广域往提供路由服务.黑客理由路由服务刺探注册信息]
18.Server[支持此计算机通过网络的文件、打印、和命名管道共享]
19.Special Administration Console Helper[允许管理员使用紧急管理服务远程访问命令行提示符]
20.TCP/IPNetBIOS Helper[提供 TCP/IP 服务上的 NetBIOS 和网络上客户端的 NetBIOS 名称解析的支持而使用户能够共享文件、打印和登录到网络]
21.Telnet[允许远程用户登录到此计算机并运行程序]
22.Terminal Services[允许用户以交互方式连接到远程计算机]
23.Window s Image Acquisition (WIA)[照相服务,应用与数码摄象机]
如果发现机器开启了一些很奇怪的服务,如r_server这样的服务,必须马上停止该服务,因为这完全有可能是黑客使用控制程序的服务端。
10、账号密码的安全原则
首先禁用guest帐号,将系统内建的administrator帐号改名~~(改的越复杂越好,最好改成中文的),而且要设置一个密码,最好是8位以上字母数字符号组合。 (让那些该死的黑客慢慢猜去吧~)
如果你使用的是其他帐号,最好不要将其加进administrators,如果加入administrators组,一定也要设置一个足够安全的密码,同上如果你设置adminstrator的密码时,最好在安全模式下设置,因为经我研究发现,在系统中拥有最高权限的帐号,不是正常登陆下的adminitrator帐号,因为即使有了这个帐号,同样可以登陆安全模式,将sam文件删除,从而更改系统的administrator的密码!而在安全模式下设置的administrator则不会出现这种情况,因为不知道这个administrator密码是无法进入安全模式。权限达到最大这个是密码策略:用户可以根据自己的习惯设置密码,下面是我建议的设置(关于密码安全设置,我上面已经讲了,这里不再罗嗦了。
打开管理工具.本地安全设置.密码策略
1.密码必须符合复杂要求性.启用
2.密码最小值.我设置的是8
3.密码最长使用期限.我是默认设置42天
4.密码最短使用期限0天
5.强制密码历史 记住0个密码
6.用可还原的加密来存储密码 禁用
11、本地策略:
这个很重要,可以帮助我们发现那些心存叵测的人的一举一动,还可以帮助我们将来追查黑客。
(虽然一般黑客都会在走时会清除他在你电脑中留下的痕迹,不过也有一些不小心的)
打开管理工具
找到本地安全设置.本地策略.审核策略
1.审核策略更改 成功失败
2.审核登陆事件 成功失败
3.审核对象访问 失败
4.审核跟踪过程 无审核
5.审核目录服务访问 失败
6.审核特权使用 失败
7.审核系统事件 成功失败
8.审核帐户登陆时间 成功失败
9.审核帐户管理 成功失败
&nb sp;然后再到管理工具找到
事件查看器
应用程序:右键>属性>设置日志大小上限,我设置了50mb,选择不覆盖事件
安全性:右键>属性>设置日志大小上限,我也是设置了50mb,选择不覆盖事件
系统:右键>属性>设置日志大小上限,我都是设置了50mb,选择不覆盖事件
12、本地安全策略:
打开管理工具
找到本地安全设置.本地策略.安全选项
1.交互式登陆.不需要按 Ctrl+Alt+Del 启用 [根据个人需要,? 但是我个人是不需要直接输入密码登陆的]
2.网络访问.不允许SAM帐户的匿名枚举 启用
3.网络访问.可匿名的共享 将后面的值删除
4.网络访问.可匿名的命名管道 将后面的值删除
5.网络访问.可远程访问的注册表路径 将后面的值删除
6.网络访问.可远程访问的注册表的子路径 将后面的值删除
7.网络访问.限制匿名访问命名管道和共享
8.帐户.(前面已经详细讲过拉
运行CMD输入net share,如果看到有异常的共享,那么应该关闭。但是有时你关闭共享下次开机的时候又出现了,那么你应该考虑一下,你的机器是否已经被黑客所控制了,或者中了病毒。
2.删除共享(每次输入一个)
net share admin$ /delete
net share c$ /delete
net share d$ /delete(如果有e,f,……可以继续删除)
3.删除ipc$空连接
在运行内输入regedit,在注册表中找到 HKEY_LOCAL_MACHINE SYSTEM CurrentControSet Control LSA 项里数值名称RestrictAnonymous的数值数据由0改为1。
4.关闭自己的139端口,ipc和RPC漏洞存在于此。
关闭139端口的方法是在“网络和拨号连接”中“本地连接”中选取“Internet协议(TCP/IP)”属性,进入“高级TCP/IP设置”“WinS设置”里面有一项“禁用TCP/IP的NETBIOS”,打勾就关闭了139端口。
5.防止rpc漏洞
打开管理工具——服务——找到RPC(Remote Procedure Call (RPC) Locator)服务——将故障恢复中的第一次失败,第二次失败,后续失败,都设置为不操作。
XP SP2和2000 pro sp4,均不存在该漏洞。
6.445端口的关闭
修改注册表,添加一个键值
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NetBT\Parameters在右面的窗口建立一个SMBDeviceEnabled 为REG_DWORD类型键值为 0这样就ok了
7.3389的关闭
XP:我的电脑上点右键选属性-->远程,将里面的远程协助和远程桌面两个选项框里的勾去掉。
Win2000server 开始-->程序-->管理工具-->服务里找到Terminal Services服务项,选中属性选项将启动类型改成手动,并停止该服务。(该方法在XP同样适用)
使用2000 pro的朋友注意,网络上有很多文章说在Win2000pro 开始-->设置-->控制面板-->管理工具-->服务里找到Terminal Services服务项,选中属性选项将启动类型改成手动,并停止该服务,可以关闭3389,其实在2000pro 中根本不存在Terminal Services。
8.4899的防范
网络上有许多关于3389和4899的入侵方法。4899其实是一个远程控制软件所开启的服务端端口,由于这些控制软件功能强大,所以经常被黑客用来控制自己的肉鸡,而且这类软件一般不会被杀毒软件查杀,比后门还要安全。
4899不象3389那样,是系统自带的服务。需要自己安装,而且需要将服务端上传到入侵的电脑并运行服务,才能达到控制的目的。
所以只要你的电脑做了基本的安全配置,黑客是很难通过4899来控制你的。
9、禁用服务
打开控制面板,进入管理工具——服务,关闭以下服务
1.Alerter[通知选定的用户和计算机管理警报]
2.ClipBook[启用“剪贴簿查看器”储存信息并与远程计算机共享]
3.Distributed File System[将分散的文件共享合并成一个逻辑名称,共享出去,关闭后远程计算机无法访问共享
4.Distributed Link Tracking Server[适用局域网分布式链接? 倏突Ф朔馷
5.Human Interface Device Access[启用对人体学接口设备(HID)的通用输入访问]
6.IMAPI CD-Burning COM Service[管理 CD 录制]
7.Indexing Service[提供本地或远程计算机上文件的索引内容和属性,泄露信息]
8.Kerberos Key Distribution Center[授权协议登录网络]
9.License Logging[监视IIS和SQL如果你没安装IIS和SQL的话就停止]
10.Messenger[警报]
11.NetMeeting Remote Desktop Sharing[netmeeting公司留下的客户信息收集]
12.Network DDE[为在同一台计算机或不同计算机上运行的程序提供动态数据交换]
13.Network DDE DSDM[管理动态数据交换 (DDE) 网络共享]
14.Print Spooler[打印机服务,没有打印机就禁止吧]
15.Remote Desktop Help& nbsp;Session Manager[管理并控制远程协助]
16.Remote Registry[使远程计算机用户修改本地注册表]
17.Routing and Remote Access[在局域网和广域往提供路由服务.黑客理由路由服务刺探注册信息]
18.Server[支持此计算机通过网络的文件、打印、和命名管道共享]
19.Special Administration Console Helper[允许管理员使用紧急管理服务远程访问命令行提示符]
20.TCP/IPNetBIOS Helper[提供 TCP/IP 服务上的 NetBIOS 和网络上客户端的 NetBIOS 名称解析的支持而使用户能够共享文件、打印和登录到网络]
21.Telnet[允许远程用户登录到此计算机并运行程序]
22.Terminal Services[允许用户以交互方式连接到远程计算机]
23.Window s Image Acquisition (WIA)[照相服务,应用与数码摄象机]
如果发现机器开启了一些很奇怪的服务,如r_server这样的服务,必须马上停止该服务,因为这完全有可能是黑客使用控制程序的服务端。
10、账号密码的安全原则
首先禁用guest帐号,将系统内建的administrator帐号改名~~(改的越复杂越好,最好改成中文的),而且要设置一个密码,最好是8位以上字母数字符号组合。 (让那些该死的黑客慢慢猜去吧~)
如果你使用的是其他帐号,最好不要将其加进administrators,如果加入administrators组,一定也要设置一个足够安全的密码,同上如果你设置adminstrator的密码时,最好在安全模式下设置,因为经我研究发现,在系统中拥有最高权限的帐号,不是正常登陆下的adminitrator帐号,因为即使有了这个帐号,同样可以登陆安全模式,将sam文件删除,从而更改系统的administrator的密码!而在安全模式下设置的administrator则不会出现这种情况,因为不知道这个administrator密码是无法进入安全模式。权限达到最大这个是密码策略:用户可以根据自己的习惯设置密码,下面是我建议的设置(关于密码安全设置,我上面已经讲了,这里不再罗嗦了。
打开管理工具.本地安全设置.密码策略
1.密码必须符合复杂要求性.启用
2.密码最小值.我设置的是8
3.密码最长使用期限.我是默认设置42天
4.密码最短使用期限0天
5.强制密码历史 记住0个密码
6.用可还原的加密来存储密码 禁用
11、本地策略:
这个很重要,可以帮助我们发现那些心存叵测的人的一举一动,还可以帮助我们将来追查黑客。
(虽然一般黑客都会在走时会清除他在你电脑中留下的痕迹,不过也有一些不小心的)
打开管理工具
找到本地安全设置.本地策略.审核策略
1.审核策略更改 成功失败
2.审核登陆事件 成功失败
3.审核对象访问 失败
4.审核跟踪过程 无审核
5.审核目录服务访问 失败
6.审核特权使用 失败
7.审核系统事件 成功失败
8.审核帐户登陆时间 成功失败
9.审核帐户管理 成功失败
&nb sp;然后再到管理工具找到
事件查看器
应用程序:右键>属性>设置日志大小上限,我设置了50mb,选择不覆盖事件
安全性:右键>属性>设置日志大小上限,我也是设置了50mb,选择不覆盖事件
系统:右键>属性>设置日志大小上限,我都是设置了50mb,选择不覆盖事件
12、本地安全策略:
打开管理工具
找到本地安全设置.本地策略.安全选项
1.交互式登陆.不需要按 Ctrl+Alt+Del 启用 [根据个人需要,? 但是我个人是不需要直接输入密码登陆的]
2.网络访问.不允许SAM帐户的匿名枚举 启用
3.网络访问.可匿名的共享 将后面的值删除
4.网络访问.可匿名的命名管道 将后面的值删除
5.网络访问.可远程访问的注册表路径 将后面的值删除
6.网络访问.可远程访问的注册表的子路径 将后面的值删除
7.网络访问.限制匿名访问命名管道和共享
8.帐户.(前面已经详细讲过拉
2009年5月3日星期日
JAVA基本字符串
其实字符串是没有的,它是从字符型中衍生出来的,我们借助String类来生成相应的字符串。
在字符串中我们要以双引号做为定界符号,并注意转义字符的使用,例如以下字符串是全法的:
“Hello Word” “” “\n” “Hello”+”Word”
一、 字符串的创建:可以使用赋值运算符或是使用类的构造函数
1、 使用赋值运算符:“=”
例:以下是合法的:
String s1=”Hello Word”;
String s2=”everybody”;
String s3=s1+s2;
但通过上节课的学习我们知道,直接将一个其它类型的值赋值给字符串是不合法的,如:
float f=3.12;
String s=f;
需要通过类的toString()方法实现
Float F=new float(3.12);
String s=F.toString();
2、使用String类的构造函数:一共七种如下
构造方法 功能描述
String() 创建一个空字符串
String(String s) 根据字符串创建一个新字符串
String(char[] charArray) 根据字符数组创建一个新字符串
String(char[] charArray,int off,int len) 根据字符数组的指定部分创建一个新字符串
off为起始位置,len为字符数
String(byte[],int highbyte) 根据字符数组创建一个新字符串,highbyte为高
位字节
String(byte[],int highbyte,int off,int len) 根据字节数组的指定部分创建一个新字符串
String(StringBuffer) 根据StringBuffer对象创建一个新字符串
我们看下面的例子:
public class StringTest{
public static void main(String args[]){
char charArray[]={'P','R','O','G','R','A','M'};
String s0=new String(); //等同于String s0=""
String s1=new String("PROGRAM"); //等同于String s1="PROGRAM"
String s2=new String(s1); //等同于String s2=s1
String s3=new String(charArray);
String s4=new String(charArray,2,4); //从第二位后的4 位
System.out.println(s0);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
}
}
二、 字符串连接
(1) 通过”+”号直接连接两个字符串,当第一个是字符串而第二个是数值时,则后者转换成字符串后进行连接。看下面例子:
public class StringConnect{
public static void main(String args[]){
String s1="Hello Word";
String s2="everyone!";
String s3=s1+s2;
int i=500;
String s4=s3+i;
System.out.println(s3);
System.out.println(s4);
}
}
(2) 利用concat()方法实现连接,如下例:
public class StringConnect{
public static void main(String args[]){
String s1="Hello ";
String s2="word!";
String s3=s1.concat(s2);
System.out.println(s3);
在字符串中我们要以双引号做为定界符号,并注意转义字符的使用,例如以下字符串是全法的:
“Hello Word” “” “\n” “Hello”+”Word”
一、 字符串的创建:可以使用赋值运算符或是使用类的构造函数
1、 使用赋值运算符:“=”
例:以下是合法的:
String s1=”Hello Word”;
String s2=”everybody”;
String s3=s1+s2;
但通过上节课的学习我们知道,直接将一个其它类型的值赋值给字符串是不合法的,如:
float f=3.12;
String s=f;
需要通过类的toString()方法实现
Float F=new float(3.12);
String s=F.toString();
2、使用String类的构造函数:一共七种如下
构造方法 功能描述
String() 创建一个空字符串
String(String s) 根据字符串创建一个新字符串
String(char[] charArray) 根据字符数组创建一个新字符串
String(char[] charArray,int off,int len) 根据字符数组的指定部分创建一个新字符串
off为起始位置,len为字符数
String(byte[],int highbyte) 根据字符数组创建一个新字符串,highbyte为高
位字节
String(byte[],int highbyte,int off,int len) 根据字节数组的指定部分创建一个新字符串
String(StringBuffer) 根据StringBuffer对象创建一个新字符串
我们看下面的例子:
public class StringTest{
public static void main(String args[]){
char charArray[]={'P','R','O','G','R','A','M'};
String s0=new String(); //等同于String s0=""
String s1=new String("PROGRAM"); //等同于String s1="PROGRAM"
String s2=new String(s1); //等同于String s2=s1
String s3=new String(charArray);
String s4=new String(charArray,2,4); //从第二位后的4 位
System.out.println(s0);
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
System.out.println(s4);
}
}
二、 字符串连接
(1) 通过”+”号直接连接两个字符串,当第一个是字符串而第二个是数值时,则后者转换成字符串后进行连接。看下面例子:
public class StringConnect{
public static void main(String args[]){
String s1="Hello Word";
String s2="everyone!";
String s3=s1+s2;
int i=500;
String s4=s3+i;
System.out.println(s3);
System.out.println(s4);
}
}
(2) 利用concat()方法实现连接,如下例:
public class StringConnect{
public static void main(String args[]){
String s1="Hello ";
String s2="word!";
String s3=s1.concat(s2);
System.out.println(s3);
学习C++的最大难度
学习C++的最大难度
困难度之一
“C++ 是个难学易用的语言”,这句话相信很多人都心有戚戚。C++的学习难度,一在于语言本身太多的“幕”,另一个就在于 "paradigm shift" (思考模式的移转)。
传统语言如 C, Pascal, Basic, Fortran...,除了模样看起来稍有不同,基本上都是函式 call 来 call 去,大同小异,很容易掌握。你想做的动作,在 code 中都看得一清二楚。你所看不到的,也不过就是编译器为你的函式加上用以处理堆叠的一小段码(prologue 和 epilogue),这一小段码基本上做的是 housekeeping 工作,你没看到也没有关系,并不影响你对程式逻辑的思考。
C++ 不一样,C++ 有太多和程式逻辑息息相关的动作是编译器为我们加上去的。换句话说 C++ 编译器为我们“加码”。如果不识清这一节,学习C++ 有如雾里看花,雾非雾,花非花。
编译器为我们的 C++ 程式加了什么码呢?很多!物件诞生时 ctor 会被唤起,物件死亡时 dtor 会被唤起,这都是加码的结果。ctor 中设定vtpr 和 vtbl,这也是加码的结果。new 单一物件时会产生 memory block cookie,new 物件阵列时会产生一个内部结构记录着 object size 和 class ctor...,这也都是布幕后的工作。可以说,程式码中看不到而却必须完成的所有与程式逻辑有关的动作,统统都是 C++ 编译器加码后的结果。
当“继承”发生,整个情况变得稍微复杂起来。“多重继承”又更复杂一些,“虚拟继承”又再更复杂一些。
这些布幕后的主题,统可归类为所谓的 C++ object model(物件模型)。如果不知道这些底层机制,你就只能够把 "make destructors virtual in base classes"或 "never treat arrays polymorphically"这类规则硬背下来,却不明白它的道理。用一样东西,却不明白它的道理,林语堂如是说:“不高明”。只知道 how,不知道 why。
困难度之二
C++ 的第二个学习难度在于 "paradigm shift"(思考模式的移转)。别说自己设计classes 了,光使用别人的classes,就都是一种思考模式和行为模式的移转。MFC(或 OWL 或 VCL)programmer 必然能够领略并体会其中的意思。
使用所谓的 application framework(一种大型的、凝聚性强的、有着物件导向公共基础建设的 class library),你的码和 framework 之间究竟是怎样的关系呢?framework 提供的一大堆可改写的虚拟函式的意义与价值究竟在哪里呢?为什么 framework 所设计的种种美好性质以及各式各样的演算法竟然可以施行于我们自己设计的 class types 身上呢?framework 被设计时,也并不知道我们的存在。这正是物件导向中的多型(polymorphism)的威力。
稍早所说的 C++ 物件模型,偏属程式设计的低层面;这里所说的思考模式移转,则是程式设计的高层面。能够把新思维模式的威力发挥得最淋漓尽致的,当推物件导向的 polymorphism(多型)和 generalization(泛型)。如果你没有使用这两项特性,等于入 C++ 宝山却空手而归。
反覆磨炼,循环震荡
想像 C++ 是一把用来解决程式问题的刀,要它坚轫,要它锋利,就必须经过多次的回火,在高热和骤冷之间——炼。
初学 C++ 语法(syntax)之后,你应该尽快尝试体验 polymorphism(大致而言也就是虚拟函式的运用)。等到对 OOP 的精神有了大局掌控的能力,但对 C++ 的许多小细节不甚清楚,就是回到C++ 物件模型 炼的时机。
成长,是在高阶(polymorphism)和低阶(object model)之间反覆震荡,才能够震荡到更高的位阶,而不是平平庸庸于中阶(C++ syntax)的一滩死水。
困难度之一
“C++ 是个难学易用的语言”,这句话相信很多人都心有戚戚。C++的学习难度,一在于语言本身太多的“幕”,另一个就在于 "paradigm shift" (思考模式的移转)。
传统语言如 C, Pascal, Basic, Fortran...,除了模样看起来稍有不同,基本上都是函式 call 来 call 去,大同小异,很容易掌握。你想做的动作,在 code 中都看得一清二楚。你所看不到的,也不过就是编译器为你的函式加上用以处理堆叠的一小段码(prologue 和 epilogue),这一小段码基本上做的是 housekeeping 工作,你没看到也没有关系,并不影响你对程式逻辑的思考。
C++ 不一样,C++ 有太多和程式逻辑息息相关的动作是编译器为我们加上去的。换句话说 C++ 编译器为我们“加码”。如果不识清这一节,学习C++ 有如雾里看花,雾非雾,花非花。
编译器为我们的 C++ 程式加了什么码呢?很多!物件诞生时 ctor 会被唤起,物件死亡时 dtor 会被唤起,这都是加码的结果。ctor 中设定vtpr 和 vtbl,这也是加码的结果。new 单一物件时会产生 memory block cookie,new 物件阵列时会产生一个内部结构记录着 object size 和 class ctor...,这也都是布幕后的工作。可以说,程式码中看不到而却必须完成的所有与程式逻辑有关的动作,统统都是 C++ 编译器加码后的结果。
当“继承”发生,整个情况变得稍微复杂起来。“多重继承”又更复杂一些,“虚拟继承”又再更复杂一些。
这些布幕后的主题,统可归类为所谓的 C++ object model(物件模型)。如果不知道这些底层机制,你就只能够把 "make destructors virtual in base classes"或 "never treat arrays polymorphically"这类规则硬背下来,却不明白它的道理。用一样东西,却不明白它的道理,林语堂如是说:“不高明”。只知道 how,不知道 why。
困难度之二
C++ 的第二个学习难度在于 "paradigm shift"(思考模式的移转)。别说自己设计classes 了,光使用别人的classes,就都是一种思考模式和行为模式的移转。MFC(或 OWL 或 VCL)programmer 必然能够领略并体会其中的意思。
使用所谓的 application framework(一种大型的、凝聚性强的、有着物件导向公共基础建设的 class library),你的码和 framework 之间究竟是怎样的关系呢?framework 提供的一大堆可改写的虚拟函式的意义与价值究竟在哪里呢?为什么 framework 所设计的种种美好性质以及各式各样的演算法竟然可以施行于我们自己设计的 class types 身上呢?framework 被设计时,也并不知道我们的存在。这正是物件导向中的多型(polymorphism)的威力。
稍早所说的 C++ 物件模型,偏属程式设计的低层面;这里所说的思考模式移转,则是程式设计的高层面。能够把新思维模式的威力发挥得最淋漓尽致的,当推物件导向的 polymorphism(多型)和 generalization(泛型)。如果你没有使用这两项特性,等于入 C++ 宝山却空手而归。
反覆磨炼,循环震荡
想像 C++ 是一把用来解决程式问题的刀,要它坚轫,要它锋利,就必须经过多次的回火,在高热和骤冷之间——炼。
初学 C++ 语法(syntax)之后,你应该尽快尝试体验 polymorphism(大致而言也就是虚拟函式的运用)。等到对 OOP 的精神有了大局掌控的能力,但对 C++ 的许多小细节不甚清楚,就是回到C++ 物件模型 炼的时机。
成长,是在高阶(polymorphism)和低阶(object model)之间反覆震荡,才能够震荡到更高的位阶,而不是平平庸庸于中阶(C++ syntax)的一滩死水。
C语言指针使用方法
为初学者服务。这是本文的宗旨。指针是c和c++中的难点和重点。有些程序员们精通dos下的basic。c语言的其它各种特性,在basic中都有类似的东西。只有指针,是baisc所不具备的。指针是c的灵魂。
我不想重复大多数书上说得很清楚的东西,我只是把我看过的书中说得不清楚或没有说,而我又觉得我理解得有点道理的东西写出来。
1、指针的概念
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。
先声明几个指针放着做例子:
例一:
复制内容到剪贴板代码:
(1)int*ptr;
(2)char*ptr;
(3)int**ptr;
(4)int(*ptr)[3];
(5)int*(*ptr)[4];
1、指针的类型
从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:
复制内容到剪贴板代码:
(1)int*ptr;
//指针的类型是int*
(2)char*ptr;
//指针的类型是char*
(3)int**ptr;
//指针的类型是int**
(4)int(*ptr)[3];
//指针的类型是int(*)[3]
(5)int*(*ptr)[4];
//指针的类型是int*(*)[4]
怎么样?找出指针的类型的方法是不是很简单?
2、指针所指向的类型
当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。
从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。例如:
复制内容到剪贴板代码:
(1)int*ptr;
//指针所指向的类型是int
(2)char*ptr;
//指针所指向的的类型是char
(3)int**ptr;
//指针所指向的的类型是int*
(4)int(*ptr)[3];
//指针所指向的的类型是int()[3]
(5)int*(*ptr)[4];
//指针所指向的的类型是int*()[4]
在指针的算术运算中,指针所指向的类型有很大的作用。指针的类型(即指针本身的类型)和指针所指向的类型是两个概念。当你对C越来越熟悉时,你会发现,把与指针搅和在一起的"类型"这个概念分成"指针的类型"和"指针所指向的类型"两个概念,是精通指针的关键点之一。
3、指针的值,或者叫指针所指向的内存区或地址
指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32位程序里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。
指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。
指针所指向的内存区和指针所指向的类型是两个完全不同的概念。在例一中,指针所指向的类型已经有了,但由于指针还未初始化,所以它所指向的内存区是不存在的,或者说是无意义的。
以后,每遇到一个指针,都应该问问:这个指针的类型是什么?指针指向的类型是什么?该指针指向了哪里?
4、指针本身所占据的内存区
指针本身占了多大的内存?你只要用函数sizeof(指针的类型)测一下就知道了。在32位平台里,指针本身占据了4个字节的长度。指针本身占据的内存这个概念在判断一个指针表达式是否是左值时很有用。
第二章 指针的算术运算
指针可以加上或减去一个整数。指针的这种运算的意义和通常的数值的加减运算的意义是不一样的。例如:
例二:
复制内容到剪贴板代码:
1.chara[20];
2.int*ptr=a;
...
...
3.ptr++;
在上例中,指针ptr的类型是int*,它指向的类型是int,它被初始化为指向整形变量a。接下来的第3句中,指针ptr被加了1,编译器是这样处理的:它把指针ptr的值加上了sizeof(int),在32位程序中,是被加上了4。
由于地址是用字节做单位的,故ptr所指向的地址由原来的变量a的地址向高地址方向增加了4个字节。由于char类型的长度是一个字节,所以,原来ptr是指向数组a的第0号单元开始的四个字节,此时指向了数组a中从第4号单元开始的四个字节。我们可以用一个指针和一个循环来遍历一个数组,看例子:
例三:
复制内容到剪贴板代码:
intarray[20];
int*ptr=array;
...
//此处略去为整型数组赋值的代码。
...
for(i=0;i<20;i++)
{
(*ptr)++;
ptr++;
}
这个例子将整型数组中各个单元的值加1。由于每次循环都将指针ptr加1,所以每次循环都能访问数组的下一个单元。
再看例子:
例四:
复制内容到剪贴板代码:
1.chara[20];
2.int*ptr=a;
...
...
3.ptr+=5;
在这个例子中,ptr被加上了5,编译器是这样处理的:将指针ptr的值加上5乘sizeof(int),在32位程序中就是加上了5乘4=20。由于地址的单位是字节,故现在的ptr所指向的地址比起加5后的ptr所指向的地址来说,向高地址方向移动了20个字节。
在这个例子中,没加5前的ptr指向数组a的第0号单元开始的四个字节,加5后,ptr已经指向了数组a的合法范围之外了。虽然这种情况在应用上会出问题,但在语法上却是可以的。这也体现出了指针的灵活性。
如果上例中,ptr是被减去5,那么处理过程大同小异,只不过ptr的值是被减去5乘sizeof(int),新的ptr指向的地址将比原来的ptr所指向的地址向低地址方向移动了20个字节。
总结一下,一个指针ptrold加上一个整数n后,结果是一个新的指针ptrnew,ptrnew的类型和ptrold的类型相同,ptrnew所指向的类型和ptrold所指向的类型也相同。ptrnew的值将比ptrold的值增加了n乘sizeof(ptrold所指向的类型)个字节。就是说,ptrnew所指向的内存区将比ptrold所指向的内存区向高地址方向移动了n乘sizeof(ptrold所指向的类型)个字节。
一个指针ptrold减去一个整数n后,结果是一个新的指针ptrnew,ptrnew的类型和ptrold的类型相同,ptrnew所指向的类型和ptrold所指向的类型也相同。ptrnew的值将比ptrold的值减少了n乘sizeof(ptrold所指向的类型)个字节,就是说,ptrnew所指向的内存区将比ptrold所指向的内存区向低地址方向移动了n乘sizeof(ptrold所指向的类型)个字节。
我不想重复大多数书上说得很清楚的东西,我只是把我看过的书中说得不清楚或没有说,而我又觉得我理解得有点道理的东西写出来。
1、指针的概念
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。
先声明几个指针放着做例子:
例一:
复制内容到剪贴板代码:
(1)int*ptr;
(2)char*ptr;
(3)int**ptr;
(4)int(*ptr)[3];
(5)int*(*ptr)[4];
1、指针的类型
从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:
复制内容到剪贴板代码:
(1)int*ptr;
//指针的类型是int*
(2)char*ptr;
//指针的类型是char*
(3)int**ptr;
//指针的类型是int**
(4)int(*ptr)[3];
//指针的类型是int(*)[3]
(5)int*(*ptr)[4];
//指针的类型是int*(*)[4]
怎么样?找出指针的类型的方法是不是很简单?
2、指针所指向的类型
当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。
从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。例如:
复制内容到剪贴板代码:
(1)int*ptr;
//指针所指向的类型是int
(2)char*ptr;
//指针所指向的的类型是char
(3)int**ptr;
//指针所指向的的类型是int*
(4)int(*ptr)[3];
//指针所指向的的类型是int()[3]
(5)int*(*ptr)[4];
//指针所指向的的类型是int*()[4]
在指针的算术运算中,指针所指向的类型有很大的作用。指针的类型(即指针本身的类型)和指针所指向的类型是两个概念。当你对C越来越熟悉时,你会发现,把与指针搅和在一起的"类型"这个概念分成"指针的类型"和"指针所指向的类型"两个概念,是精通指针的关键点之一。
3、指针的值,或者叫指针所指向的内存区或地址
指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32位程序里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。
指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。
指针所指向的内存区和指针所指向的类型是两个完全不同的概念。在例一中,指针所指向的类型已经有了,但由于指针还未初始化,所以它所指向的内存区是不存在的,或者说是无意义的。
以后,每遇到一个指针,都应该问问:这个指针的类型是什么?指针指向的类型是什么?该指针指向了哪里?
4、指针本身所占据的内存区
指针本身占了多大的内存?你只要用函数sizeof(指针的类型)测一下就知道了。在32位平台里,指针本身占据了4个字节的长度。指针本身占据的内存这个概念在判断一个指针表达式是否是左值时很有用。
第二章 指针的算术运算
指针可以加上或减去一个整数。指针的这种运算的意义和通常的数值的加减运算的意义是不一样的。例如:
例二:
复制内容到剪贴板代码:
1.chara[20];
2.int*ptr=a;
...
...
3.ptr++;
在上例中,指针ptr的类型是int*,它指向的类型是int,它被初始化为指向整形变量a。接下来的第3句中,指针ptr被加了1,编译器是这样处理的:它把指针ptr的值加上了sizeof(int),在32位程序中,是被加上了4。
由于地址是用字节做单位的,故ptr所指向的地址由原来的变量a的地址向高地址方向增加了4个字节。由于char类型的长度是一个字节,所以,原来ptr是指向数组a的第0号单元开始的四个字节,此时指向了数组a中从第4号单元开始的四个字节。我们可以用一个指针和一个循环来遍历一个数组,看例子:
例三:
复制内容到剪贴板代码:
intarray[20];
int*ptr=array;
...
//此处略去为整型数组赋值的代码。
...
for(i=0;i<20;i++)
{
(*ptr)++;
ptr++;
}
这个例子将整型数组中各个单元的值加1。由于每次循环都将指针ptr加1,所以每次循环都能访问数组的下一个单元。
再看例子:
例四:
复制内容到剪贴板代码:
1.chara[20];
2.int*ptr=a;
...
...
3.ptr+=5;
在这个例子中,ptr被加上了5,编译器是这样处理的:将指针ptr的值加上5乘sizeof(int),在32位程序中就是加上了5乘4=20。由于地址的单位是字节,故现在的ptr所指向的地址比起加5后的ptr所指向的地址来说,向高地址方向移动了20个字节。
在这个例子中,没加5前的ptr指向数组a的第0号单元开始的四个字节,加5后,ptr已经指向了数组a的合法范围之外了。虽然这种情况在应用上会出问题,但在语法上却是可以的。这也体现出了指针的灵活性。
如果上例中,ptr是被减去5,那么处理过程大同小异,只不过ptr的值是被减去5乘sizeof(int),新的ptr指向的地址将比原来的ptr所指向的地址向低地址方向移动了20个字节。
总结一下,一个指针ptrold加上一个整数n后,结果是一个新的指针ptrnew,ptrnew的类型和ptrold的类型相同,ptrnew所指向的类型和ptrold所指向的类型也相同。ptrnew的值将比ptrold的值增加了n乘sizeof(ptrold所指向的类型)个字节。就是说,ptrnew所指向的内存区将比ptrold所指向的内存区向高地址方向移动了n乘sizeof(ptrold所指向的类型)个字节。
一个指针ptrold减去一个整数n后,结果是一个新的指针ptrnew,ptrnew的类型和ptrold的类型相同,ptrnew所指向的类型和ptrold所指向的类型也相同。ptrnew的值将比ptrold的值减少了n乘sizeof(ptrold所指向的类型)个字节,就是说,ptrnew所指向的内存区将比ptrold所指向的内存区向低地址方向移动了n乘sizeof(ptrold所指向的类型)个字节。
mySQL+PHP 乱码原理与解决
mysql+php产生乱码原因:
mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.
MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.
如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.
PHP页面字符集不正确.
PHP连接MYSQL数据库语句指定的编码不正确.
注意:
很多人都怀疑mysql版本不一致会导致乱码,相信看了本说明你就不会这样认为了.
平时你在某些网站看到的文字可能有几种编码, 如你看到一个繁体字,它有可能是big5编码,也有 可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点.
如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法:
将网站编码设为 utf-8,这样可以兼容世界上所有字符,
如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为 GBK, GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK.
使用mysql+php产生乱码的原因都了解得很清楚了,那么解决就不困难了.
mysql+php产生乱码的解决办法:
如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题
修改数据库编码,如果是数据库编码不正确,可以在phpmyadmin 执行如下命令:
ALTER DATABASE ’test’ DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是将test数据库的编码设为utf8.
修改表的编码:
ALTER TABLE ’category’ DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是将一个表category的编码改为utf8.
修改字段的编码:
ALTER TABLE ’test’ CHANGE ’dd’ ’dd’ VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
以上命令就是将test表中 dd的字段编码改为utf8.
如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可.
这种情况也是修改页面charset即可.
在连接数据库的语句中.
mysql_connect(’localhost’,’user’,’password’);
mysql_select_db(’my_db’);
mysql_query(“set names utf8;“); //select 数据库之后加多这一句
为了避免PHP页面乱码的发生,PHP页面开始第一句
header(“content-type:text/html; charset=utf-8“);
//强行指定页面的编码,以避免乱码
注意:
照以上方法修改以后只能保证你新插入的数据不会乱码,举个例:如果你用户已提交的数据是BIG5,你却想通过以上方法改为可以在GB2312的网页正确显示是不可能的, 这种文字内码的变换只能通过另写程序来解决。
mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.
MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.
用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.
如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.
PHP页面字符集不正确.
PHP连接MYSQL数据库语句指定的编码不正确.
注意:
很多人都怀疑mysql版本不一致会导致乱码,相信看了本说明你就不会这样认为了.
平时你在某些网站看到的文字可能有几种编码, 如你看到一个繁体字,它有可能是big5编码,也有 可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点.
如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法:
将网站编码设为 utf-8,这样可以兼容世界上所有字符,
如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为 GBK, GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK.
使用mysql+php产生乱码的原因都了解得很清楚了,那么解决就不困难了.
mysql+php产生乱码的解决办法:
如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题
修改数据库编码,如果是数据库编码不正确,可以在phpmyadmin 执行如下命令:
ALTER DATABASE ’test’ DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是将test数据库的编码设为utf8.
修改表的编码:
ALTER TABLE ’category’ DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是将一个表category的编码改为utf8.
修改字段的编码:
ALTER TABLE ’test’ CHANGE ’dd’ ’dd’ VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
以上命令就是将test表中 dd的字段编码改为utf8.
如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可.
这种情况也是修改页面charset即可.
在连接数据库的语句中.
mysql_connect(’localhost’,’user’,’password’);
mysql_select_db(’my_db’);
mysql_query(“set names utf8;“); //select 数据库之后加多这一句
为了避免PHP页面乱码的发生,PHP页面开始第一句
header(“content-type:text/html; charset=utf-8“);
//强行指定页面的编码,以避免乱码
注意:
照以上方法修改以后只能保证你新插入的数据不会乱码,举个例:如果你用户已提交的数据是BIG5,你却想通过以上方法改为可以在GB2312的网页正确显示是不可能的, 这种文字内码的变换只能通过另写程序来解决。
64 位机上的 64 位类型是什么样的?
64 位机上的 64 位类型是什么样的?
C99 标准定义了 long long 类型, 其长度可以保证至少 64 位, 这种类型在某些编译器上实现已经颇有时日了。其它的编译器则实现了类似 __longlong 的扩展。 另一方面, 也可以实现 16 位的短整型、 32 位的整型和 64 位的长整型, 有些编译器正是这样做的。
C99 标准定义了 long long 类型, 其长度可以保证至少 64 位, 这种类型在某些编译器上实现已经颇有时日了。其它的编译器则实现了类似 __longlong 的扩展。 另一方面, 也可以实现 16 位的短整型、 32 位的整型和 64 位的长整型, 有些编译器正是这样做的。
怎样定义和声明全局变量和函数最好?
怎样定义和声明全局变量和函数最好?
首先, 尽管一个全局变量或函数可以 (在多个编译单元中) 有多处 ``声明'', 但是 ``定义'' 却只能允许出现一次。定义是分配空间并赋初值 (如果有) 的声明。最好的安排是在某个相关的 .c 文件中定义, 然后在头文件 (.h) 中进行外部声明, 在需要使用的时候, 只要包含对应的头文件即可。定义变量的 .c 文件也应该包含该头文件, 以便编译器检查定义和声明的一致性。
这条规则提供了高度的可移植性: 它和 ANSI C 标准一致, 同时也兼容大多数 ANSI 前的编译器和连接器。Unix 编译器和连接器通常使用 ``通用模式'' 允许多重定义, 只要保证最多对一处进行初始化就可以了; ANSI C 标准称这种行为为 ``公共扩展'', 没有语带双关的意思。
可以使用预处理技巧来使类似
DEFINE(int, i);
的语句在一个头文件中只出现一次, 然后根据某个宏的设定在需要的时候转化成定义或声明。但不清楚这样的麻烦是否值得。
如果希望让编译器检查声明的一致性, 一定要把全局声明放到头文件中。特别是, 永远不要把外部函数的原型放到 .c 文件中: 通常它与定义的一致性不能得到检查, 而矛盾的原型比不用还糟糕。
首先, 尽管一个全局变量或函数可以 (在多个编译单元中) 有多处 ``声明'', 但是 ``定义'' 却只能允许出现一次。定义是分配空间并赋初值 (如果有) 的声明。最好的安排是在某个相关的 .c 文件中定义, 然后在头文件 (.h) 中进行外部声明, 在需要使用的时候, 只要包含对应的头文件即可。定义变量的 .c 文件也应该包含该头文件, 以便编译器检查定义和声明的一致性。
这条规则提供了高度的可移植性: 它和 ANSI C 标准一致, 同时也兼容大多数 ANSI 前的编译器和连接器。Unix 编译器和连接器通常使用 ``通用模式'' 允许多重定义, 只要保证最多对一处进行初始化就可以了; ANSI C 标准称这种行为为 ``公共扩展'', 没有语带双关的意思。
可以使用预处理技巧来使类似
DEFINE(int, i);
的语句在一个头文件中只出现一次, 然后根据某个宏的设定在需要的时候转化成定义或声明。但不清楚这样的麻烦是否值得。
如果希望让编译器检查声明的一致性, 一定要把全局声明放到头文件中。特别是, 永远不要把外部函数的原型放到 .c 文件中: 通常它与定义的一致性不能得到检查, 而矛盾的原型比不用还糟糕。
通过 API 实现 C# 对硬件的控制
函数一: RegisterDeviceNotification
功能:注册设备或者设备类型,在指定的窗口返回相关的信息
原型:
HDEVNOTIFY WINAPI RegisterDeviceNotification(
__in HANDLE hRecipient,
__in LPVOID NotificationFilter,
__in DWORD Flags
);
参考说明文档:http://msdn2.microsoft.com/en-us/library/aa363431.aspx。
转为C#后的代码为:
[DllImport(“user32.dll“, CharSet = CharSet.Auto)]
public static extern IntPtr RegisterDeviceNotification(IntPtr hRecipient, DEV_BROADCAST_DEVICEINTERFACE NotificationFilter, UInt32 Flags);
[StructLayout(LayoutKind.Sequential)]
public class DEV_BROADCAST_DEVICEINTERFACE
...{
public int dbcc_size;
public int dbcc_devicetype;
public int dbcc_reserved;
}
函数二:UnregisterDeviceNotification
功能:通过名柄,关闭指定设备的信息。(主要应用于清理非托管资源,并与RegisterDeviceNotification配对使用)
原型:
BOOL WINAPI UnregisterDeviceNotification(
__in HDEVNOTIFY Handle
);
参考说明文档:http://msdn2.microsoft.com/en-us/library/aa363475(VS.85).aspx。
转为C#后的代码:
[DllImport(“user32.dll“, CharSet = CharSet.Auto)]
public static extern uint UnregisterDeviceNotification(IntPtr hHandle);
函数三:SetupDiGetClassDevs
功能:获取一个指定类别或全部类别的所有已安装设备的信息。
原型:
HDEVINFO SetupDiGetClassDevs( IN LPGUID ClassGuid, OPTIONAL IN PCTSTR Enumerator, OPTIONAL IN HWND hwndParent, OPTIONAL IN DWORD Flags );
参考说明文档:http://msdn2.microsoft.com/en-us/library/ms792959.aspx。
转为C#后的代码:
[DllImport(“setupapi.dll“, SetLastError = true)]
public static extern IntPtr SetupDiGetClassDevs(ref Guid gClass, UInt32 iEnumerator, IntPtr hParent, UInt32 nFlags);
函数四:SetupDiDestroyDeviceInfoList
功能:销毁一个设备信息集合,并且释放所有关联的内存。
原型:
WINSETUPAPI BOOL WINAPI SetupDiDestroyDeviceInfoList( IN HDEVINFO DeviceInfoSet );
参考说明文档:http://msdn2.microsoft.com/en-us/library/ms792991.aspx。
转为C#后的代码:
[DllImport(“setupapi.dll“, SetLastError = true)]
public static extern int SetupDiDestroyDeviceInfoList(IntPtr lpInfoSet);
函数五:SetupDiEnumDeviceInfo
功能:枚举指定设备信息集合的成员,并将数据放在SP_DEVINFO_DATA中。
原型:
WINSETUPAPI BOOL WINAPI SetupDiEnumDeviceInfo(
IN HDEVINFO DeviceInfoSet,
IN DWORD MemberIndex,
OUT PSP_DEVINFO_DATA DeviceInfoData );
参考说明文档:http://msdn2.microsoft.com/en-us/library/ms792983.aspx。
转为C#后的代码:
[DllImport(“setupapi.dll“, SetLastError = true)]
public static extern bool SetupDiEnumDeviceInfo(IntPtr lpInfoSet, UInt32 dwIndex, SP_DEVINFO_DATA devInfoData);
/**//// 〈summary〉
/// 设备信息数据
/// 〈/summary〉
[StructLayout(LayoutKind.Sequential)]
public class SP_DEVINFO_DATA
...{
public int cbSize;
public Guid classGuid;
public int devInst;
public ulong reserved;
};
函数六:SetupDiGetDeviceRegistryProperty
功能:获取指定设备的属性。
原型:
WINSETUPAPI BOOL WINAPI SetupDiGetDeviceRegistryProperty(
IN HDEVINFO DeviceInfoSet,
IN PSP_DEVINFO_DATA DeviceInfoData,
IN DWORD Property,
OUT PDWORD PropertyRegDataType,
OPTIONAL OUT PBYTE PropertyBuffer,
IN DWORD PropertyBufferSize,
OUT PDWORD RequiredSize OPTIONAL );
参考说明文档:http://msdn2.microsoft.com/en-us/library/ms792967.aspx。
转为C#后的代码:
[DllImport(“setupapi.dll“, SetLastError = true)]
public static extern bool SetupDiGetDeviceRegistryProperty(IntPtr lpInfoSet, SP_DEVINFO_DATA DeviceInfoData, UInt32 Property, UInt32 PropertyRegDataType, StringBuilder PropertyBuffer, UInt32 PropertyBufferSize, IntPtr RequiredSize);
函数七:SetupDiSetClassInstallParams
功能:停用设备。
原型:
WINSETUPAPI BOOL WINAPI
SetupDiSetClassInstallParams(
IN HDEVINFO DeviceInfoSet,
IN PSP_DEVINFO_DATA DeviceInfoData,
OPTIONAL IN PSP_CLASSINSTALL_HEADER ClassInstallParams,
OPTIONAL IN DWORD ClassInstallParamsSize );
参考说明文档:http://msdn2.microsoft.com/en-us/library/ms792876.aspx。
转为C#后的代码:
[DllImport(“setupapi.dll“, SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool SetupDiSetClassInstallParams(IntPtr DeviceInfoSet, IntPtr DeviceInfoData, IntPtr ClassInstallParams, int ClassInstallParamsSize);
函数八:SetupDiCallClassInstaller
功能:启用设备。
原型:
WINSETUPAPI BOOL WINAPI
SetupDiCallClassInstaller(
IN DI_FUNCTION InstallFunction,
IN HDEVINFO DeviceInfoSet,
IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL );
参考说明文档:http://msdn2.microsoft.com/en-us/library/ms792989.aspx。
转为C#后的代码:
[DllImport(“setupapi.dll“, CharSet = CharSet.Auto)]
public static extern Boolean SetupDiCallClassInstaller(UInt32 InstallFunction, IntPtr DeviceInfoSet, IntPtr DeviceInfoData);
功能:注册设备或者设备类型,在指定的窗口返回相关的信息
原型:
HDEVNOTIFY WINAPI RegisterDeviceNotification(
__in HANDLE hRecipient,
__in LPVOID NotificationFilter,
__in DWORD Flags
);
参考说明文档:http://msdn2.microsoft.com/en-us/library/aa363431.aspx。
转为C#后的代码为:
[DllImport(“user32.dll“, CharSet = CharSet.Auto)]
public static extern IntPtr RegisterDeviceNotification(IntPtr hRecipient, DEV_BROADCAST_DEVICEINTERFACE NotificationFilter, UInt32 Flags);
[StructLayout(LayoutKind.Sequential)]
public class DEV_BROADCAST_DEVICEINTERFACE
...{
public int dbcc_size;
public int dbcc_devicetype;
public int dbcc_reserved;
}
函数二:UnregisterDeviceNotification
功能:通过名柄,关闭指定设备的信息。(主要应用于清理非托管资源,并与RegisterDeviceNotification配对使用)
原型:
BOOL WINAPI UnregisterDeviceNotification(
__in HDEVNOTIFY Handle
);
参考说明文档:http://msdn2.microsoft.com/en-us/library/aa363475(VS.85).aspx。
转为C#后的代码:
[DllImport(“user32.dll“, CharSet = CharSet.Auto)]
public static extern uint UnregisterDeviceNotification(IntPtr hHandle);
函数三:SetupDiGetClassDevs
功能:获取一个指定类别或全部类别的所有已安装设备的信息。
原型:
HDEVINFO SetupDiGetClassDevs( IN LPGUID ClassGuid, OPTIONAL IN PCTSTR Enumerator, OPTIONAL IN HWND hwndParent, OPTIONAL IN DWORD Flags );
参考说明文档:http://msdn2.microsoft.com/en-us/library/ms792959.aspx。
转为C#后的代码:
[DllImport(“setupapi.dll“, SetLastError = true)]
public static extern IntPtr SetupDiGetClassDevs(ref Guid gClass, UInt32 iEnumerator, IntPtr hParent, UInt32 nFlags);
函数四:SetupDiDestroyDeviceInfoList
功能:销毁一个设备信息集合,并且释放所有关联的内存。
原型:
WINSETUPAPI BOOL WINAPI SetupDiDestroyDeviceInfoList( IN HDEVINFO DeviceInfoSet );
参考说明文档:http://msdn2.microsoft.com/en-us/library/ms792991.aspx。
转为C#后的代码:
[DllImport(“setupapi.dll“, SetLastError = true)]
public static extern int SetupDiDestroyDeviceInfoList(IntPtr lpInfoSet);
函数五:SetupDiEnumDeviceInfo
功能:枚举指定设备信息集合的成员,并将数据放在SP_DEVINFO_DATA中。
原型:
WINSETUPAPI BOOL WINAPI SetupDiEnumDeviceInfo(
IN HDEVINFO DeviceInfoSet,
IN DWORD MemberIndex,
OUT PSP_DEVINFO_DATA DeviceInfoData );
参考说明文档:http://msdn2.microsoft.com/en-us/library/ms792983.aspx。
转为C#后的代码:
[DllImport(“setupapi.dll“, SetLastError = true)]
public static extern bool SetupDiEnumDeviceInfo(IntPtr lpInfoSet, UInt32 dwIndex, SP_DEVINFO_DATA devInfoData);
/**//// 〈summary〉
/// 设备信息数据
/// 〈/summary〉
[StructLayout(LayoutKind.Sequential)]
public class SP_DEVINFO_DATA
...{
public int cbSize;
public Guid classGuid;
public int devInst;
public ulong reserved;
};
函数六:SetupDiGetDeviceRegistryProperty
功能:获取指定设备的属性。
原型:
WINSETUPAPI BOOL WINAPI SetupDiGetDeviceRegistryProperty(
IN HDEVINFO DeviceInfoSet,
IN PSP_DEVINFO_DATA DeviceInfoData,
IN DWORD Property,
OUT PDWORD PropertyRegDataType,
OPTIONAL OUT PBYTE PropertyBuffer,
IN DWORD PropertyBufferSize,
OUT PDWORD RequiredSize OPTIONAL );
参考说明文档:http://msdn2.microsoft.com/en-us/library/ms792967.aspx。
转为C#后的代码:
[DllImport(“setupapi.dll“, SetLastError = true)]
public static extern bool SetupDiGetDeviceRegistryProperty(IntPtr lpInfoSet, SP_DEVINFO_DATA DeviceInfoData, UInt32 Property, UInt32 PropertyRegDataType, StringBuilder PropertyBuffer, UInt32 PropertyBufferSize, IntPtr RequiredSize);
函数七:SetupDiSetClassInstallParams
功能:停用设备。
原型:
WINSETUPAPI BOOL WINAPI
SetupDiSetClassInstallParams(
IN HDEVINFO DeviceInfoSet,
IN PSP_DEVINFO_DATA DeviceInfoData,
OPTIONAL IN PSP_CLASSINSTALL_HEADER ClassInstallParams,
OPTIONAL IN DWORD ClassInstallParamsSize );
参考说明文档:http://msdn2.microsoft.com/en-us/library/ms792876.aspx。
转为C#后的代码:
[DllImport(“setupapi.dll“, SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool SetupDiSetClassInstallParams(IntPtr DeviceInfoSet, IntPtr DeviceInfoData, IntPtr ClassInstallParams, int ClassInstallParamsSize);
函数八:SetupDiCallClassInstaller
功能:启用设备。
原型:
WINSETUPAPI BOOL WINAPI
SetupDiCallClassInstaller(
IN DI_FUNCTION InstallFunction,
IN HDEVINFO DeviceInfoSet,
IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL );
参考说明文档:http://msdn2.microsoft.com/en-us/library/ms792989.aspx。
转为C#后的代码:
[DllImport(“setupapi.dll“, CharSet = CharSet.Auto)]
public static extern Boolean SetupDiCallClassInstaller(UInt32 InstallFunction, IntPtr DeviceInfoSet, IntPtr DeviceInfoData);
经典笑话:99%的人看完后当场含笑而死
1:男女朋友睡一个房间,女的画了条线说:“过线的是禽兽。”醒来发现男的真的没过线,女的狠狠的打了男的一巴掌:“你连禽兽都不如。”
次日 男女有同睡一房女的照旧画了条线警告,男的有了上次的教训深夜打算过线,结果因为紧张而未果。天亮后,女的有打男的一巴掌说:“没想到你不如禽兽。”
2:在医院里,一家喜得贵子,孩子刚生下来就回说话,孩子说:“爷爷。”爷爷啊的一声就死了。孩子又说:“奶奶。”奶奶啊的一声死了。孩子又说:“爸爸。”他爸爸啊的一声,一看自己没死,这个时候,孩子的老叔啊的一声死了。
3:袋鼠和青蛙去嫖鸡,袋鼠三下两下完事,只听隔壁的青蛙整夜一二三嘿!一二三嘿!袋鼠好羡慕,次日,袋鼠说:“哇!~~蛙兄,你好棒哦!。”青蛙说:“操,老子一夜都没跳上床!~~”
4:我那天在超市看见一个看帖不回帖的人,他悄悄D把手放在条码扫描器上,只见屏幕显示:猪蹄 8元,他以为机器坏了,把脸凑过去,结果屏幕上显示:猪头肉 5元
5:一只大象问骆驼:‘你的咪咪怎么长在背上?’骆驼说:‘死远点,我不和鸡鸡长在脸上的东西讲话!
6:幼儿园女教师领学生游泳,不慎露出一根X毛,一学生问:老师,那是什么啊?女教师一狠心将其拔掉,说:线头!
7:小女孩总是向小男孩炫耀自己的新玩具.小男孩没办法,只好脱掉裤子说:这个你永远没有!女孩也脱掉裤子说:我妈说只要有这个,你那玩意儿要多少有多少!
8:一排妓女在街边等客,一位八旬老妇见到了,好奇的问:你们在等什么?妓女没好气的说:等棒棒糖!老妇也就排队加入队伍等糖,结果被警察抓,警察问老妇:你牙都没了也能干?老妇笑着曰:我可以舔的!!!
9:司机送领导参加文艺晚会,领导进了会场,司机被保安拦住,司机说:我跟领导是一个系统的,保安说:鸡X跟蛋也是一个系统的,鸡X进去了,蛋能进去吗?
10:一日,某君的老婆生小孩,他急急忙忙跑到医院看望,等了n个小时,产房里传来了哭声,他高兴大喊,我做爸爸了!这时医生满脸愁容走出来,告诉他,小孩子先天畸形。某君呆在那,还没明白什么原因,忽然产房里传来了他老婆的喊叫:都怪那天杀的,看贴老不回贴,报应呀 99%的人看完后当场含笑而死.....如果你没有倒地那你就是1%
次日 男女有同睡一房女的照旧画了条线警告,男的有了上次的教训深夜打算过线,结果因为紧张而未果。天亮后,女的有打男的一巴掌说:“没想到你不如禽兽。”
2:在医院里,一家喜得贵子,孩子刚生下来就回说话,孩子说:“爷爷。”爷爷啊的一声就死了。孩子又说:“奶奶。”奶奶啊的一声死了。孩子又说:“爸爸。”他爸爸啊的一声,一看自己没死,这个时候,孩子的老叔啊的一声死了。
3:袋鼠和青蛙去嫖鸡,袋鼠三下两下完事,只听隔壁的青蛙整夜一二三嘿!一二三嘿!袋鼠好羡慕,次日,袋鼠说:“哇!~~蛙兄,你好棒哦!。”青蛙说:“操,老子一夜都没跳上床!~~”
4:我那天在超市看见一个看帖不回帖的人,他悄悄D把手放在条码扫描器上,只见屏幕显示:猪蹄 8元,他以为机器坏了,把脸凑过去,结果屏幕上显示:猪头肉 5元
5:一只大象问骆驼:‘你的咪咪怎么长在背上?’骆驼说:‘死远点,我不和鸡鸡长在脸上的东西讲话!
6:幼儿园女教师领学生游泳,不慎露出一根X毛,一学生问:老师,那是什么啊?女教师一狠心将其拔掉,说:线头!
7:小女孩总是向小男孩炫耀自己的新玩具.小男孩没办法,只好脱掉裤子说:这个你永远没有!女孩也脱掉裤子说:我妈说只要有这个,你那玩意儿要多少有多少!
8:一排妓女在街边等客,一位八旬老妇见到了,好奇的问:你们在等什么?妓女没好气的说:等棒棒糖!老妇也就排队加入队伍等糖,结果被警察抓,警察问老妇:你牙都没了也能干?老妇笑着曰:我可以舔的!!!
9:司机送领导参加文艺晚会,领导进了会场,司机被保安拦住,司机说:我跟领导是一个系统的,保安说:鸡X跟蛋也是一个系统的,鸡X进去了,蛋能进去吗?
10:一日,某君的老婆生小孩,他急急忙忙跑到医院看望,等了n个小时,产房里传来了哭声,他高兴大喊,我做爸爸了!这时医生满脸愁容走出来,告诉他,小孩子先天畸形。某君呆在那,还没明白什么原因,忽然产房里传来了他老婆的喊叫:都怪那天杀的,看贴老不回贴,报应呀 99%的人看完后当场含笑而死.....如果你没有倒地那你就是1%
不娶美女的经济学原因
美丽的姑娘是一道风景,可风景是放在外面看的,属于大众福利,不能随便带回家。 下面,我们就从经济学角度,对娶漂亮姑娘当老婆的不适应性进行分析。
一漂亮女孩子都是众星捧月的对象,即使你先下手为强,哪能保证别人的小心肝从此就不再乱跳?套一句前几年的流行语“有男朋友又怎样?只要没有结婚”。男人基本上不能容忍自己心爱的女人身边老是飞着一群绿头苍蝇。而且,说不定哪天你的爱情悄悄改朝换代,自己还被蒙在鼓里。毕竟,比你强的男人有很多。
点评:管理成本太高
二“三分长相七分打扮”。也就是说,漂亮的女孩不一定长得有多漂亮,多数时间是用化妆品堆出来。爱打扮的女孩子,都有两个特点:一是喜欢逛街,二是喜欢购物。说道逛街,我想无数须眉听了都会腿软。女人是一种神奇的动物,神奇到几乎推翻能量守恒定律:她们吃得不多,可是逛起街来,体力的爆发是惊人的。
点评:维护保养费高昂。
三 漂亮女孩子都是上得厅堂而下不了厨房的。因为油烟是皮肤的天敌,这可是名正言顺的。如果你想吃点什么,要么出去吃,要么自己动手做吧。以次类推,既然不下厨房,那么,家里的卫生保洁什么的,也只能你来代劳。
点评:使用价值不高
四 凡是漂亮女孩子身边,总会有不少仰慕者。仰慕者一多,难免惯养去一堆大小姐的坏毛病。臭脾气。不知道你受不受得了这些毛病和脾气。也许一两天可一忍住气,但是十年八年一辈子呢?你愿意一辈子当个窝囊废吗?
点评:保质期短。
五 无论你是第一个追她的人,还第十个追她的人,女人都会有对象来比较,尤其是漂亮的女人。比较某某某有能力啊,是不是比某某有本事啊,是不是比某某有钱啊……你不要塞着耳朵啊,还没有比完呢……
点评:这是考验你的心理承受能力的附加题。
六因为追求或者拥有一个没有良知的、可共富贵不可共患难的美女,而丧失与“我很丑但我很温柔”的女生交往,是男人的悲哀。美女,自知美而不肯控制自己的膨胀心理的多得是,等到哪天你混得一旦不如人意,她一脚把你踢开,看你什么感受?!兄弟们。
点评:娶美女的机会成本高,风险系数比较大。
但是有美女做老婆以上困难还是可以克服的
一漂亮女孩子都是众星捧月的对象,即使你先下手为强,哪能保证别人的小心肝从此就不再乱跳?套一句前几年的流行语“有男朋友又怎样?只要没有结婚”。男人基本上不能容忍自己心爱的女人身边老是飞着一群绿头苍蝇。而且,说不定哪天你的爱情悄悄改朝换代,自己还被蒙在鼓里。毕竟,比你强的男人有很多。
点评:管理成本太高
二“三分长相七分打扮”。也就是说,漂亮的女孩不一定长得有多漂亮,多数时间是用化妆品堆出来。爱打扮的女孩子,都有两个特点:一是喜欢逛街,二是喜欢购物。说道逛街,我想无数须眉听了都会腿软。女人是一种神奇的动物,神奇到几乎推翻能量守恒定律:她们吃得不多,可是逛起街来,体力的爆发是惊人的。
点评:维护保养费高昂。
三 漂亮女孩子都是上得厅堂而下不了厨房的。因为油烟是皮肤的天敌,这可是名正言顺的。如果你想吃点什么,要么出去吃,要么自己动手做吧。以次类推,既然不下厨房,那么,家里的卫生保洁什么的,也只能你来代劳。
点评:使用价值不高
四 凡是漂亮女孩子身边,总会有不少仰慕者。仰慕者一多,难免惯养去一堆大小姐的坏毛病。臭脾气。不知道你受不受得了这些毛病和脾气。也许一两天可一忍住气,但是十年八年一辈子呢?你愿意一辈子当个窝囊废吗?
点评:保质期短。
五 无论你是第一个追她的人,还第十个追她的人,女人都会有对象来比较,尤其是漂亮的女人。比较某某某有能力啊,是不是比某某有本事啊,是不是比某某有钱啊……你不要塞着耳朵啊,还没有比完呢……
点评:这是考验你的心理承受能力的附加题。
六因为追求或者拥有一个没有良知的、可共富贵不可共患难的美女,而丧失与“我很丑但我很温柔”的女生交往,是男人的悲哀。美女,自知美而不肯控制自己的膨胀心理的多得是,等到哪天你混得一旦不如人意,她一脚把你踢开,看你什么感受?!兄弟们。
点评:娶美女的机会成本高,风险系数比较大。
但是有美女做老婆以上困难还是可以克服的
几个关于美女的笑话
1、晚宴上,火箭专家向大家透露:“最近,我们要把几只老鼠送到火星上去。”话音未落,一个美女插嘴说:“这样灭鼠,成本太高啦!”
女人凭直觉办事,觉得事情是什么样就是什么样,不调查研究,不进行理性思考。毛主席说过,没有调查研究,就没有发言权。没有发言权,女人照样发言。她们自我感觉良好,根本不把别人的意见当回事,漂亮女人尤其如此。
2、女教师在黑板上画了一个苹果,然后提问:“孩子们,这是什么呀?”孩子们异口同声地回答:“屁股!”女教师哭着跑出教室,找校长告状:“孩子们嘲笑人。”校长走进教室,表情严肃地说:“你们怎么把老师气哭了?啊!还在黑板上画了个屁股!”
把苹果画成了屁股,还好意思哭,还好意思告状,了不起。一事当前,女人喜欢从别人身上找毛病,总是越想越委屈。常言说,人非圣贤,孰能无过?圣贤会有过错,女人不会有。她们永远正确,即使错了,也是一副对的姿态。
3、女儿告诉妈妈,因为妈妈反对她和男朋友恋爱,她的男朋友服安眠药自杀了。母亲一惊:“自杀啦?”女儿说:“还好,他吃错了药,没死。”母亲说:“我早就说过,他这个人马马虎虎,大大咧咧,成不了大事。你看,连这点小事都搞错,怎么能托付终身呢?”
不要指望女人认错,她们没有认错的习惯。错一千回,她们就有一千个理由为自己开脱。人命关天又怎样?正确的依然是她。
4、一个女人走进邮局,要了一张电报纸,写完后扔了。又要第二张,写完后又扔了。第三张写好后,她递给报务员,并嘱咐尽快发出。女人走后,报务员对这三份电报发生了兴趣。第一份上写着:一切都结束了,再也不想见到你。第二份上写着:别再打电话,休想再见到我。第三份的内容是:乘最近的一班火车速来,我等你。
如果前两封电报发出去,一切都结束了。可发出去的是第三封,终点又成了起点。邱吉尔说,世上有两件事最难对付,一是倒向这边的墙,一是倒向另一边的女人。假如女人真地倒向了另一边,干脆放手就是了。可有时候,她们摇摆不定。她说恨你时,也许心里已经有了你;她说不恨你时,也许已经不把你放在心上了。你没法把她的话当真。因为反复无常,跟她们打交道得凭运气。
5、一个金发碧眼的女人上了飞机,在头等舱坐下。空姐过来检票,告诉她:“您的机票是普通舱的,不能坐在这里。”女人说:“我是白种人,是美女,我要坐头等舱去洛杉矶。”空姐无可奈何,只好报告组长。组长对美女解释说:“很抱歉!您买的不是头等舱的票,所以只能坐到普通舱去。”“我是白种人,是美女,我要坐头等舱去洛杉矶。”美女仍然重复着那句话。组长没办法,又找来了机长。机长俯身对美女耳语了几句,美女立马站起身,大步向普通舱走去。空姐惊讶不已,忙问机长跟美女说了些什么。机长回答:“我告诉她头等舱不到洛杉矶。”
这样的智商还想坐头等舱,真是岂有此理!有人说,漂亮女人不读书。不读书,靠什么混呢?靠脸蛋。白种人、美女,凭这两条,就敢往头等舱里混,而且理直气壮。
6、一个漂亮的女推销员上门推销洗涤用品,获得巨大成功。有人向她讨教推销技巧,她眼里闪着亮光说:“很简单。我专捡夫妇两人都在家时去拜访,对那位丈夫说明来意,详细介绍产品的性能和特点。最后告诉他,不必马上买,可以等下次来时再说。这时,旁边的女主人往往表现出积极的态度,赶忙买下我的东西。”
也许你能找到不吃饭的女人,但绝对找不到不吃醋的女人。醋的滋养,使女人成精。也许她们没有太高的智慧,但有的是花招儿和心眼儿。
7、两个女人在街上相遇。甲说:“我收到一张法院的传票,说有件重要的案子要我明天出庭作证。”乙问:“你觉得紧张吗?”甲说:“非常紧张,我不知道穿什么衣服好。”
女人善于把大事变小,小到只剩下穿衣、化妆、男欢女爱之类的细节。男人读伟人传记,看的是政治斗争;女人读伟人传记,看的是后宫私情。男人把事业当生活,女人把生活当事业。时尚而体面的衣着是女人永恒的话题,她们从那里找到自信、满足和快乐。
8、女人有一儿一女,但她只给女儿买新衣,让儿子穿旧的。有人笑她偏心,她解释说:“外销的,要特别讲究包装。”
此人若从商,一定发财。婚姻交易也需要商业头脑,所以她的智慧并非没有用武之地。那天看电视,一个漂亮女人以一种玩世不恭的口吻对她的女伴儿说:“我们女人不就是男人的一件衣裳吗?”话说得不太好听,却也不无道理。其一,女人藏在衣裳里,她们离不开这种包装。其二,女人追求衣裳,男人追求女人。
9、一个女人把她的结婚证书装进档案袋里,然后不无幽默地写上四个字:长期饭票。
有一种流行的说法,叫做干得好不如嫁得好。嫁好是一条捷径,一切想要的东西“得来全不费工夫”。当然,你得有嫁好的资本。通常的情况是,女人用自己的青春和美貌去交换男人的财富和权力。仅仅交换到一张“长期饭票”的女人,一定不是美女。否则,她可以交换到一部自动提款机。
10、一个球迷兴致勃勃地对女朋友说:“踢足球就和搞对象一样,得有缠的功夫。假如一双脚能像牛皮糖一样粘在足球上,就成功了。”女朋友说:“然后呢,一脚踢开!”
女人没有安全感,总是担心被抛弃。为什么男人没有这种忧虑呢?因为男人的人格和生活是独立的。那么,女人为什么不能独立呢?为什么非要依附于别人呢?
女人凭直觉办事,觉得事情是什么样就是什么样,不调查研究,不进行理性思考。毛主席说过,没有调查研究,就没有发言权。没有发言权,女人照样发言。她们自我感觉良好,根本不把别人的意见当回事,漂亮女人尤其如此。
2、女教师在黑板上画了一个苹果,然后提问:“孩子们,这是什么呀?”孩子们异口同声地回答:“屁股!”女教师哭着跑出教室,找校长告状:“孩子们嘲笑人。”校长走进教室,表情严肃地说:“你们怎么把老师气哭了?啊!还在黑板上画了个屁股!”
把苹果画成了屁股,还好意思哭,还好意思告状,了不起。一事当前,女人喜欢从别人身上找毛病,总是越想越委屈。常言说,人非圣贤,孰能无过?圣贤会有过错,女人不会有。她们永远正确,即使错了,也是一副对的姿态。
3、女儿告诉妈妈,因为妈妈反对她和男朋友恋爱,她的男朋友服安眠药自杀了。母亲一惊:“自杀啦?”女儿说:“还好,他吃错了药,没死。”母亲说:“我早就说过,他这个人马马虎虎,大大咧咧,成不了大事。你看,连这点小事都搞错,怎么能托付终身呢?”
不要指望女人认错,她们没有认错的习惯。错一千回,她们就有一千个理由为自己开脱。人命关天又怎样?正确的依然是她。
4、一个女人走进邮局,要了一张电报纸,写完后扔了。又要第二张,写完后又扔了。第三张写好后,她递给报务员,并嘱咐尽快发出。女人走后,报务员对这三份电报发生了兴趣。第一份上写着:一切都结束了,再也不想见到你。第二份上写着:别再打电话,休想再见到我。第三份的内容是:乘最近的一班火车速来,我等你。
如果前两封电报发出去,一切都结束了。可发出去的是第三封,终点又成了起点。邱吉尔说,世上有两件事最难对付,一是倒向这边的墙,一是倒向另一边的女人。假如女人真地倒向了另一边,干脆放手就是了。可有时候,她们摇摆不定。她说恨你时,也许心里已经有了你;她说不恨你时,也许已经不把你放在心上了。你没法把她的话当真。因为反复无常,跟她们打交道得凭运气。
5、一个金发碧眼的女人上了飞机,在头等舱坐下。空姐过来检票,告诉她:“您的机票是普通舱的,不能坐在这里。”女人说:“我是白种人,是美女,我要坐头等舱去洛杉矶。”空姐无可奈何,只好报告组长。组长对美女解释说:“很抱歉!您买的不是头等舱的票,所以只能坐到普通舱去。”“我是白种人,是美女,我要坐头等舱去洛杉矶。”美女仍然重复着那句话。组长没办法,又找来了机长。机长俯身对美女耳语了几句,美女立马站起身,大步向普通舱走去。空姐惊讶不已,忙问机长跟美女说了些什么。机长回答:“我告诉她头等舱不到洛杉矶。”
这样的智商还想坐头等舱,真是岂有此理!有人说,漂亮女人不读书。不读书,靠什么混呢?靠脸蛋。白种人、美女,凭这两条,就敢往头等舱里混,而且理直气壮。
6、一个漂亮的女推销员上门推销洗涤用品,获得巨大成功。有人向她讨教推销技巧,她眼里闪着亮光说:“很简单。我专捡夫妇两人都在家时去拜访,对那位丈夫说明来意,详细介绍产品的性能和特点。最后告诉他,不必马上买,可以等下次来时再说。这时,旁边的女主人往往表现出积极的态度,赶忙买下我的东西。”
也许你能找到不吃饭的女人,但绝对找不到不吃醋的女人。醋的滋养,使女人成精。也许她们没有太高的智慧,但有的是花招儿和心眼儿。
7、两个女人在街上相遇。甲说:“我收到一张法院的传票,说有件重要的案子要我明天出庭作证。”乙问:“你觉得紧张吗?”甲说:“非常紧张,我不知道穿什么衣服好。”
女人善于把大事变小,小到只剩下穿衣、化妆、男欢女爱之类的细节。男人读伟人传记,看的是政治斗争;女人读伟人传记,看的是后宫私情。男人把事业当生活,女人把生活当事业。时尚而体面的衣着是女人永恒的话题,她们从那里找到自信、满足和快乐。
8、女人有一儿一女,但她只给女儿买新衣,让儿子穿旧的。有人笑她偏心,她解释说:“外销的,要特别讲究包装。”
此人若从商,一定发财。婚姻交易也需要商业头脑,所以她的智慧并非没有用武之地。那天看电视,一个漂亮女人以一种玩世不恭的口吻对她的女伴儿说:“我们女人不就是男人的一件衣裳吗?”话说得不太好听,却也不无道理。其一,女人藏在衣裳里,她们离不开这种包装。其二,女人追求衣裳,男人追求女人。
9、一个女人把她的结婚证书装进档案袋里,然后不无幽默地写上四个字:长期饭票。
有一种流行的说法,叫做干得好不如嫁得好。嫁好是一条捷径,一切想要的东西“得来全不费工夫”。当然,你得有嫁好的资本。通常的情况是,女人用自己的青春和美貌去交换男人的财富和权力。仅仅交换到一张“长期饭票”的女人,一定不是美女。否则,她可以交换到一部自动提款机。
10、一个球迷兴致勃勃地对女朋友说:“踢足球就和搞对象一样,得有缠的功夫。假如一双脚能像牛皮糖一样粘在足球上,就成功了。”女朋友说:“然后呢,一脚踢开!”
女人没有安全感,总是担心被抛弃。为什么男人没有这种忧虑呢?因为男人的人格和生活是独立的。那么,女人为什么不能独立呢?为什么非要依附于别人呢?
2009年5月1日星期五
快速切换更改ip地址的方法
不用工具但要用建立bat批处理程序来处理..具体设置如下:
1.分别导出公司与家庭的网络配置,分别命名为net1.txt,net2.txt
netsh -c interface dump >c:\net1.txt
netsh -c interface dump >c:\net2.txt
2.建立导入不同网络配置的批处理程序..分别名为net1.bat,net2.bat.其具体内容分别为
net1.bat:
引用:
netsh -f c:\net1.txt
net2.bat:
引用:
netsh -f c:\net2.txt
当在公司时运行net1.bat,在家时运行net2.bat即可切换不同网络..
1.分别导出公司与家庭的网络配置,分别命名为net1.txt,net2.txt
netsh -c interface dump >c:\net1.txt
netsh -c interface dump >c:\net2.txt
2.建立导入不同网络配置的批处理程序..分别名为net1.bat,net2.bat.其具体内容分别为
net1.bat:
引用:
netsh -f c:\net1.txt
net2.bat:
引用:
netsh -f c:\net2.txt
当在公司时运行net1.bat,在家时运行net2.bat即可切换不同网络..
设置本地网卡,提高上网速度
设置本地网卡,提高上网速度
一、设置
请参照以下步骤设置:
“网上邻居”\“属性”\“本地连接”图标\“属性”\“常规”\“配置”\“高级”\“Link Speed & Duplex”\选中“100Mbps/Full Duplex”选项或“10Mbps/Full Duplex”选项\“确定”。
二、原理(没兴趣的可以不读以下内容)
在局域网中通过网络通道传输、交流共享文件,是一项常见的操作;按理来说,在目前的10MB、100MB传输环境中,传输容量不大的共享文件,应该要不了几秒钟就能完成;可事实上,我们在传输一些容量只有几个KB的共享内容时,有时要等上几分钟的时间,要是传输大容量文件时,那等待的时间可就更长了。虽然引起网络传输速度缓慢的原因有很多,可是仔细琢磨、总结之后,我们会发现网卡参数设置不当,特别容易导致网络传输速度缓慢;为此,当我们排除引起网络传输速度缓慢的各项可能因素后,仍然无法提高网络传输速度时,我们就应该将目光转向网卡设置方面,以便向网卡设置要速度!
目前的局域网使用的传输介质一般都是速率为100MB的双绞线,而工作站使用的网卡设备传输速度目前主要有10MB、100MB以及10/100MB自适应这几个标准;调查显示,现在的工作站中网卡设备大部分采用都是10Mbps/100Mbmps自适应标准,即传输速率在10MB和100MB之间自动匹配。当工作站使用这种网卡设备传输共享文件时,常常会遇到一个几MB容量的文件在网络中传输时,需要等待很长时间,很显然这种现象是不正常的。引起这种现象的主要原因,其实就是网卡每次传输内容时都需要耗费时间去动态决定使用什么标准的速度进行信息传输,这样一来就会降低网卡的工作效率。
我们知道,安装了10Mbps/100Mbmps自适应标准网卡设备的工作站,每次与目标工作站的网卡设备进行通信时,都需要经过协商选择两者都能接受的传输速率。要是目标工作站的网卡设备使用的是100MB标准,那么自适应网卡就要与目标网卡设备反复协商、交流,直到确定选用100MB速度进行通信为止;同样地要是目标工作站使用的网卡设备是10MB标准的,那么自适应网卡设备也会经过协商、交流的过程,来确定选用10MB速度来通信,这种协商、交流的过程可能需要反复多次,以保证网络信号能够稳定地进行传输。
由于若干次协商、交流,肯定会消耗一定的时间,这样一来我们就会感觉到网络传输速度不怎么快了。为了提高网络传输速度,我们可以根据对方网卡设备的通信速度,来采用手工方法固定本地自适应标准网卡设备的传输速度,确保它们之间互相通信时不要经过反复协商、交流的过程,而直接使用指定的速度进行快速交流。
例如,要是目标工作站使用了100M的网卡设备,那么要与该工作站进行快速通信时,我们就需要对本地工作站的网卡设备进行设置,强制本地网卡也采用100M速度进行工作;如果局域网中既有100M标准的网卡设备,也有10M标准的网卡设备,那么从稳定的角度出发,我们可以将本地自适应标准网卡设备的传输速度强行设置为10MB标准。
一、设置
请参照以下步骤设置:
“网上邻居”\“属性”\“本地连接”图标\“属性”\“常规”\“配置”\“高级”\“Link Speed & Duplex”\选中“100Mbps/Full Duplex”选项或“10Mbps/Full Duplex”选项\“确定”。
二、原理(没兴趣的可以不读以下内容)
在局域网中通过网络通道传输、交流共享文件,是一项常见的操作;按理来说,在目前的10MB、100MB传输环境中,传输容量不大的共享文件,应该要不了几秒钟就能完成;可事实上,我们在传输一些容量只有几个KB的共享内容时,有时要等上几分钟的时间,要是传输大容量文件时,那等待的时间可就更长了。虽然引起网络传输速度缓慢的原因有很多,可是仔细琢磨、总结之后,我们会发现网卡参数设置不当,特别容易导致网络传输速度缓慢;为此,当我们排除引起网络传输速度缓慢的各项可能因素后,仍然无法提高网络传输速度时,我们就应该将目光转向网卡设置方面,以便向网卡设置要速度!
目前的局域网使用的传输介质一般都是速率为100MB的双绞线,而工作站使用的网卡设备传输速度目前主要有10MB、100MB以及10/100MB自适应这几个标准;调查显示,现在的工作站中网卡设备大部分采用都是10Mbps/100Mbmps自适应标准,即传输速率在10MB和100MB之间自动匹配。当工作站使用这种网卡设备传输共享文件时,常常会遇到一个几MB容量的文件在网络中传输时,需要等待很长时间,很显然这种现象是不正常的。引起这种现象的主要原因,其实就是网卡每次传输内容时都需要耗费时间去动态决定使用什么标准的速度进行信息传输,这样一来就会降低网卡的工作效率。
我们知道,安装了10Mbps/100Mbmps自适应标准网卡设备的工作站,每次与目标工作站的网卡设备进行通信时,都需要经过协商选择两者都能接受的传输速率。要是目标工作站的网卡设备使用的是100MB标准,那么自适应网卡就要与目标网卡设备反复协商、交流,直到确定选用100MB速度进行通信为止;同样地要是目标工作站使用的网卡设备是10MB标准的,那么自适应网卡设备也会经过协商、交流的过程,来确定选用10MB速度来通信,这种协商、交流的过程可能需要反复多次,以保证网络信号能够稳定地进行传输。
由于若干次协商、交流,肯定会消耗一定的时间,这样一来我们就会感觉到网络传输速度不怎么快了。为了提高网络传输速度,我们可以根据对方网卡设备的通信速度,来采用手工方法固定本地自适应标准网卡设备的传输速度,确保它们之间互相通信时不要经过反复协商、交流的过程,而直接使用指定的速度进行快速交流。
例如,要是目标工作站使用了100M的网卡设备,那么要与该工作站进行快速通信时,我们就需要对本地工作站的网卡设备进行设置,强制本地网卡也采用100M速度进行工作;如果局域网中既有100M标准的网卡设备,也有10M标准的网卡设备,那么从稳定的角度出发,我们可以将本地自适应标准网卡设备的传输速度强行设置为10MB标准。
清除Windows登录密码方法
光盘的自动运行法
方法很简单,只需在光驱中放置一张带有自驱动并具有执行安装程序功能光盘,在程序安装到百分之一百的时候,弹出光盘,此时系统会出现"非法操作"的提示,只要在这时候按一下ESC键,然后在桌面底部出来的系统状态栏中点击"开始"-"注销"就可以轻松搞掂了.
清楚Windows登录密码
Windows操作系统可以设置登录密码,系统正常启动后首先进入登陆页面,需要输入正确地密码才能够登陆系统.然而很多方法可以绕过登录密码来进行登陆得,这虽然为忘记密码时候登陆提供可行的方法,也为非法进入者的登陆提供了机会.下面来看看哪些方法能够清楚Windows操作系统的登陆密码.
1.删除SAM文件清楚管理员密码
直接清楚用户口令文件的操作步骤如下:
step1 使用Windows2000或XP启动的修复功能,或者其他以引导进入DOS状态的光盘引导系统,并进入DOS状态.
step2 进入%root%\system32\config\目录(其中%root%指Windows主目录,一般是C盘的Windows目录),手动删除该目录下的SAM文件即刻.
step3 重新启动计算机,当系统再次进入windows的时候,不需要密码便可以管理员身份直接进入了.
2.利用系统输入法漏洞
当忘记系统密码时,这时无任何用户账号(包括管理员Administrator的账号)可以登录时,但在登陆是打开输入法,利用输入法工具条进入到输入法的帮助界面.
step1 在紫光输入法工具条上单击鼠标右键,单击"帮助"按钮.
step2 在打开的"联机帮助"对话框中,单击左上角的图标,选择"跳至URL".
step3 弹出:跳转URL"对话框中,在"跳至该URL(J):"方框中出入"C:"(假设系统在C盘)
step4 C盘呈现在"联机帮助"对话框中.此时我们已管理员的身份攻入系统,并可以任意运行程序,添加,修改文件,也很容易修改管理员密码了.
方法很简单,只需在光驱中放置一张带有自驱动并具有执行安装程序功能光盘,在程序安装到百分之一百的时候,弹出光盘,此时系统会出现"非法操作"的提示,只要在这时候按一下ESC键,然后在桌面底部出来的系统状态栏中点击"开始"-"注销"就可以轻松搞掂了.
清楚Windows登录密码
Windows操作系统可以设置登录密码,系统正常启动后首先进入登陆页面,需要输入正确地密码才能够登陆系统.然而很多方法可以绕过登录密码来进行登陆得,这虽然为忘记密码时候登陆提供可行的方法,也为非法进入者的登陆提供了机会.下面来看看哪些方法能够清楚Windows操作系统的登陆密码.
1.删除SAM文件清楚管理员密码
直接清楚用户口令文件的操作步骤如下:
step1 使用Windows2000或XP启动的修复功能,或者其他以引导进入DOS状态的光盘引导系统,并进入DOS状态.
step2 进入%root%\system32\config\目录(其中%root%指Windows主目录,一般是C盘的Windows目录),手动删除该目录下的SAM文件即刻.
step3 重新启动计算机,当系统再次进入windows的时候,不需要密码便可以管理员身份直接进入了.
2.利用系统输入法漏洞
当忘记系统密码时,这时无任何用户账号(包括管理员Administrator的账号)可以登录时,但在登陆是打开输入法,利用输入法工具条进入到输入法的帮助界面.
step1 在紫光输入法工具条上单击鼠标右键,单击"帮助"按钮.
step2 在打开的"联机帮助"对话框中,单击左上角的图标,选择"跳至URL".
step3 弹出:跳转URL"对话框中,在"跳至该URL(J):"方框中出入"C:"(假设系统在C盘)
step4 C盘呈现在"联机帮助"对话框中.此时我们已管理员的身份攻入系统,并可以任意运行程序,添加,修改文件,也很容易修改管理员密码了.
教您在XP建立“终极隐藏”文件
Windows XP中的这个方法不是右键改属性为隐藏,也不是进入DOS下修改属性。做起来不难,效果也非常有趣,谁也想不到,就在你电脑桌面上堂而皇之的藏有你的“机密文件”吧?
1、在桌面建一个文件夹
2、右键,自定义图标为横向12排,纵向第2排的空白图标
3、这下图标隐形了
4、选择文件夹的名称,按下F2,点鼠标右键,选择插入unicode控制字符
1、在桌面建一个文件夹
2、右键,自定义图标为横向12排,纵向第2排的空白图标
3、这下图标隐形了
4、选择文件夹的名称,按下F2,点鼠标右键,选择插入unicode控制字符
电脑出现蓝屏的解释
使用Windows出现蓝色屏幕是经常的事,而且每每因为不清楚错误的来源而频繁重新安装系统,劳神费时。下列的一些Windows死机
代码,供大家参考。
0x0000 操作完成
0x0001 不正确的函数
0x0002 系统找不到指定的文件
0x0003 系统找不到指定的路径
0x0004 系统无法打开文件
0x0005 拒绝存取
0x0006 无效的代码
0x0007 内存控制模块已损坏
0x0008 内存空间不足,无法处理这个指令
0x0009 内存控制模块地址无效
0x000a 环境不正确
0x000b 尝试载入一个格式错误的程序
0x000c 存取码错误
0x000d 资料错误
0x000e 内存空间不够,无法完成这项*作
0x000f 系统找不到制定的硬盘
0x0010 无法移除目录
0x0011 系统无法将文件移到其他的硬盘
0x0012 没有任何文件
0x0019 找不到指定的扇区或磁道
0x001a 指定的磁盘或磁片无法存取
0x001b 磁盘找不到要求的扇区
0x001c 打印机没有纸
0x001d 系统无法将资料写入制定的磁盘
0x001e 系统无法读取指定的装置
0x001f 连接到系统的某个装置没有作用
0x0021 文件的一部分被锁定
0x0024 开启的分享文件数量太多
0x0026 到达文件结尾
0x0027 磁盘已满
0x0036 网络繁忙
0x003b 网络发生意外的错误
0x0043 网络名称找不到
0x0050 文件已经存在
0x0052 无法建立目录或文件
0x0053 int24失败
0x006b 因为代用的磁盘尚未插入,所以程序已经停止
0x006c 磁盘正在使用中或被锁定
0x006f 文件名太长
0x0070 硬盘空间不足
0x007f 找不到指定的程序
0x045b 系统正在关机
0x045c 无法种植系统关机,因为没有关机的动作在进行中
0x046a 可用服务器储存空间不足,无法处理这项指令
0x047e 指定的程序需要新的Windows版本
0x047f 指定的程序不是Windows或MS-DOS程序
0x0480 指定的程序已经启动,无法再启动一次
0x0481 指定的程序是为旧版的Windows所写的
0x0482 执行此应用程序所需的程序库文件之一毁坏
0x0483 没有应用程序与此项*作的指定文件建立关联
0x0484 传送指令到应用程序发生错误
0x04b0 指定的装置名称无效
0x05a2 窗口不是子窗口
0x05aa 系统资源不足,无法完成所要求的服务
0x05ab 系统子还不足,无法完成所需要的服务
0x05ac 系统资源不足,无法完成所要求的服务
0x06b9 资源不足,无法完成操作
希望大家看完能又点帮助呵呵~!!!
代码,供大家参考。
0x0000 操作完成
0x0001 不正确的函数
0x0002 系统找不到指定的文件
0x0003 系统找不到指定的路径
0x0004 系统无法打开文件
0x0005 拒绝存取
0x0006 无效的代码
0x0007 内存控制模块已损坏
0x0008 内存空间不足,无法处理这个指令
0x0009 内存控制模块地址无效
0x000a 环境不正确
0x000b 尝试载入一个格式错误的程序
0x000c 存取码错误
0x000d 资料错误
0x000e 内存空间不够,无法完成这项*作
0x000f 系统找不到制定的硬盘
0x0010 无法移除目录
0x0011 系统无法将文件移到其他的硬盘
0x0012 没有任何文件
0x0019 找不到指定的扇区或磁道
0x001a 指定的磁盘或磁片无法存取
0x001b 磁盘找不到要求的扇区
0x001c 打印机没有纸
0x001d 系统无法将资料写入制定的磁盘
0x001e 系统无法读取指定的装置
0x001f 连接到系统的某个装置没有作用
0x0021 文件的一部分被锁定
0x0024 开启的分享文件数量太多
0x0026 到达文件结尾
0x0027 磁盘已满
0x0036 网络繁忙
0x003b 网络发生意外的错误
0x0043 网络名称找不到
0x0050 文件已经存在
0x0052 无法建立目录或文件
0x0053 int24失败
0x006b 因为代用的磁盘尚未插入,所以程序已经停止
0x006c 磁盘正在使用中或被锁定
0x006f 文件名太长
0x0070 硬盘空间不足
0x007f 找不到指定的程序
0x045b 系统正在关机
0x045c 无法种植系统关机,因为没有关机的动作在进行中
0x046a 可用服务器储存空间不足,无法处理这项指令
0x047e 指定的程序需要新的Windows版本
0x047f 指定的程序不是Windows或MS-DOS程序
0x0480 指定的程序已经启动,无法再启动一次
0x0481 指定的程序是为旧版的Windows所写的
0x0482 执行此应用程序所需的程序库文件之一毁坏
0x0483 没有应用程序与此项*作的指定文件建立关联
0x0484 传送指令到应用程序发生错误
0x04b0 指定的装置名称无效
0x05a2 窗口不是子窗口
0x05aa 系统资源不足,无法完成所要求的服务
0x05ab 系统子还不足,无法完成所需要的服务
0x05ac 系统资源不足,无法完成所要求的服务
0x06b9 资源不足,无法完成操作
希望大家看完能又点帮助呵呵~!!!
订阅:
博文 (Atom)

