Shuhai Shen

You may find more about me @ http://leonax.net/about/

 

Windows中删除文件的操作大家都会,对着文件(或文件夹)的图标按“Delete”键嘛,这样被删除的文件(默认)就进了回收站,要么就是按Shift+Delete使文件不经过回收站直接被删除。这样文件是否真的被删除了呢?

答案是否定的。Delete操作只是让你在资源管理器(或我的电脑)中看不到某个文件,但这个文件的内容,还依然保存在硬盘上。

Windows出于性能的考虑,在删除文件的时候,并不会完整地删除文件内容,而是在文件的开头部位标记了一下,说这个文件被删掉了,之后在浏览文件夹的时候,这个文件就不会被显示出来。所以说,即使误删了一些重要文件,不要慌,使用某些文件还原工具就可以找回被删掉的文件。

接下去就是另一个重要的问题了:如何彻底删除一个文件。(想象一下陈老师,后果很严重呀……)基本上有以下几种方法:

  1. 创建一个新文件去覆盖被删掉的文件。由于系统认为之前那个文件已经无效了,新写入的文件有可能被写在之前那个文件所处的位置上,当然这个是看RP的,系统有自己的策略来决定新文件写在哪里。比较安全的方法是把整个分区(盘)填满,这样就能保证删除的文件都被覆盖掉了。
  2. 格式化。Windows提供了2种格式的方法:快速格式化和完整格式化。顾名思义,快速格式化不会真正地删除磁盘上的内容,只是重写了某些标记。而完整格式化是会把整个分区清理掉的。所以如果你需要确保安全的话,请在格式化的时候,不要勾选“快速格式化”的选项。
  3. 使用安全删除工具,如微软提供的SDelete。这些工具通常会在删除文件的同时,在那个文件的位置上写入一个垃圾内容,从而清理掉原来的文件内容。

附:SDelete是一个命令行工具,它的参数是:
sdelete [-p 次数] [-s] [-q] <文件名或文件夹名>
sdelete [-p 次数] [-z|-c] [盘符]

-c 将空闲空间置零(对于优化虚拟磁盘有好处)
-p 次数 复写文件的次数
-s 递归删除子目录
-q 不打印错误信息(安静模式)
-z 清理多余空间

 

在我读大学的时候,C++课程是完全讲解理论知识的,连最后的考试也是纯笔试,所以我对类似《编程方法》课中的习题一直都很感兴趣。

《编程方法》第二课讲完之后,需要完成习题1(Assignment 1):《编程方法》习题1 (2011年1月) [198.02 kB]

一共有4道题目,都是关于Karel的,在做题目之前,你需要下载一个Standford特制的Eclipse并安装Java RE 1.6,然后下载习题1的模板并导入进Eclipse,然后就可以开始做题目了。

由于时间原因,我只完成了第4题。题意很简单,在地图的第一行的中间位置摆放一个Beeper,如果有双数列,放在中间两列中任一列皆可。地图保证高度大于等于宽度。

以下内容为剧透,请慎重。

Continue reading »

 

《编程方法》系列课程

  1. 《编程方法》第一课 欢迎来到CS106A
  2. 《编程方法》第二课 Karel的世界
  3. 《编程方法》第三课 Karel与Java
  4. 《编程方法》习题1
  5. 《编程方法》第四课 计算机科学发展史
  6. 《编程方法》第五课 变量

如果你喜欢这门课程,请在新开学网站上支持一下,使译者更有积极性。顺便也请支持一下《算法导论》课程,非常希望这门课能推广出去……

以下视频来自优酷:http://v.youku.com/v_show/id_XMjI2ODU1MzQ0.html

以下是我的笔记:
[00:40] Karel程序文件都以.java结尾
[03:20] 死循环(Infinite Loop)
[05:20] “少一”(Off By One Bug)错误
[08:10] 注释,在程序中用来向程序员作解释的语法,并不影响程序的运行
[11:30] 注释中可以写清楚方法的前置和后置状态,也就是说这个方法假设在运行之前,系统已处于某个(前置)状态,并且保证运行之后,系统必然处于某个(后置)状态。
[16:40] 程序的分解,抽象->细化,自顶向下 / 自下向上
[20:00] 双倍程序的演示
[21:20] Algorithm一词的来历
[25:30] 用原始的方法来实现计数器。
[35:00] 地图上的每个点,对于Karel来说,实际上是一个整型的计数器,所以它可以作所有类型的数学计算。
[35:50] 格式不好的代码的例子。编程风格对于软件工程来说非常重要。
[38:20] 在Java中方法名以小写字母开头,被称为骆驼表示法,Camel Case。Camel Case分为两种,Upper Camel Case(首字母大写)和Lower Camel Case(首字母小写),Upper Camel Case又称Pascal表示法。还有他提到的用下划线连接的小写单词,是标准C++的表示法。还有一种很恶心的是小写单词但不用下划线……
[40:00] Java对方法定义的顺序没有要求,以C#一样,但C++和C是有的。
[40:30] 程序分解的原则:一个方法解决一个问题;方法的长度在1行到15行之间(传统的要求是一个方法要能完整得在屏幕中显示出来);方法名描述了它在干什么;注释很重要
[45:00] 清理房间的Karel程序
[49:30] 使用turnAround巧妙地解决了程序死循环的问题

 
Kaley Cuoco

这几天在重温Prison Break,发现了一个熟悉的身影:

S02E15 The Message中Kaley Cuoco饰演Sasha,和怪人Haywire聊过几句,后来她继父被Haywire干掉了。看上去有点小胖,到了The Big Bang Theory中就正常一点了:

另外附一张Kaley的艳照(点击看大图):

 

 

《编程方法》系列课程

  1. 《编程方法》第一课 欢迎来到CS106A
  2. 《编程方法》第二课 Karel的世界
  3. 《编程方法》第三课 Karel与Java
  4. 《编程方法》习题1
  5. 《编程方法》第四课 计算机科学发展史
  6. 《编程方法》第五课 变量

如果你喜欢这门课程,请在新开学网站上支持一下,使译者更有积极性。顺便也请支持一下《算法导论》课程,非常希望这门课能推广出去……

以下视频来自优酷:

以下是我的笔记:
[04:30] 之前的都是废话
[04:50] Karel只懂4种指令(method):move (前移一格)、turnLeft(左转)、pickBeeper、putBeeper(捡起或放下Beeper)
[07:40] Karel程序的演示
[09:00] 第一个Karel程序
[10:30] 算法和程序的区别:算法是做事情的步骤,程序是符合编程语言的规则合法组织的语句。
[12:00] 算法->合法的Java程序,讲解了一下Java程序的结构
[16:00] class的继承
[18:10] Import的语法和意义。顺便说一句,美国的学生很喜欢提问题,尽管问题的命案很简单,但这些问题可以开拓思路。
[19:30] 运行第一个Karel程序
[21:30] 创建一个新的指令:turnRight (右转)
[28:10] 非常强大的对于for语句的解释
[29:50] 老师对程序的格式讲解地很详细,尽管多数编程语言对格式的要求不高,但养成良好的编程风格是非常重要的。
[30:15] 这里他讲错了,左转6次相当于向后转,左转7次才等价于右转。
[31:30] while循环
[35:20] if/else语句
[37:30] else前后的空格并不是必须的
[37:50] 语句嵌套
[39:50] 使用讲解过的语句来写个新程序
[42:20] 把程序分解成多个函数,会增强可读性。编程中很重要的一点是,程序不仅要让机器能理解,也要让其他人能读懂,这是软件工程的必备条件。
[47:30] 程序的通用性:程序要在任何环境下都能运行,不能仅局限于种特定情况。

 

科普系列

  1. 内存 vs 硬盘
  2. 32位 vs 64位
  3. Byte vs bit
  4. 高清 vs 1080p
  5. ARM vs x86
  6. 多核 vs 超线程
  7. IPv4 vs IPv6
  8. HDD vs SSD

这几天关于IPv4地址耗尽的报道几乎天天有啊……这东西倒底和我们的生活有什么关系呢?

IPv4是指IP(Internet Protocol)协议第4版,IPv6就是第6版了(至于第5版是什么,有兴趣的同学可以自己查查)。IP协议是网络通信中的一个基础协议。每一个连上网(无论是局域网还是英特网)的设备,都会有一个IP地址,作用和电话号码一样。在浏览网站(如http://leonax.net)的时候,浏览器会先得到这个网站的IP地址,如182.50.148.163,向这个地址来发送请求,然后网站向你的电脑所使用的IP发回网页数据。想像一下你打电话订餐的流程,差不多。

IPv4中的地址格式由4个0到255的整数组成(形如x.x.x.x),就一共可能有256的4次方(即4294967296)种变化。尽管其中有一些特殊用途的地址,比如常见的127.0.0.1和192.168.0.1,英特网中可用的IPv4地址数量在42亿以上。听上去数字蛮吓人的,但仔细想想其实不多啦,全世界人口已经超过60亿了,每人一台设备,地址就分配不过来了……

于是IPv6就产生了,它的地址格式由8个0到65535的整数组成(形如x:x:x:x:x:x:x:x),数量是IPv4地址数量的4次方,具体多少不高兴算了,反正IPv6号称可以给地球上每一粒沙子分配一个地址。取之不尽,用之不竭啊……

既然这样,还用IPv4干啥呀,大家一起上v6不就得了。IPv6在设计的时候并没有考虑兼容性的问题,也就是说IPv4并不能平滑地迁移到IPv6,迁移过程中需要电信运营商、网站等各种机构开展大量的工作,而他们却从中得不到什么好处,于是大家就都拖着,耗到IPv4用完没办法了,才开始着手解决。

那在迁移过程中,家庭用户需要做些什么呢?简单来说:什么都不用做。个人电脑(PC)上,主流的操作系统(Windows / Mac / Linux)都已支持IPv6;而手机所用的3G协议似乎不受IPv6的影响(3G协议不熟,请高手指点)。咱们就坐等电信(或者长宽啥的)的客服上门升级IPv6吧……

*温习一下:IP协议处于OSI 7层协议中的第3层网络层,OSI 7层协议从下到上从别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

 

有时候还是蛮有用的:P

十进制十六进制字符注释
00NULLNull字符 (\0)
11SOHStart of Heading
22STXStart of Text
33ETXEnd of Text
44EOTEnd of Transmission
55ENQEnquiry
66ACKAcknowledge
77BELBell
88BSBackspace
99TABHorizontal Tab (\t)
10ALFLine Feed (\n)
11BVTVertical Tab
12CFFForm Feed
13DCRCarriage Return (\r)
14ESOShift Out
15FSIShift In
1610DLEData Link Escape
1711DC1Device Control 1
1812DC2Device Control 2
1913DC3Device Control 3
2014DC4Device Control 4
2115NAKNegative Acknowledge
2216SYNSynchronous Idle
2317ETBEnd of Transmission Block
2418CANCancel
2519EMEnd of Medium
261ASUBSubstitute
271BESCEscape
281CFSFile Separator
291DGSGroup Separator
301ERSRecord Separator
311FUSUnit Separator
3220空格
3321!
3422
3523#
3624$
3725%
3826&
3927
4028(
4129)
422A*
432B+
442C,
452D-
462E.
472F/
48300
49311
50322
51333
52344
53355
54366
55377
56388
57399
583A:
593B;
603C<
613D=
623E>
633F?
6440@
6541A
6642B
6743C
6844D
6945E
7046F
7147G
7248H
7349I
744AJ
754BK
764CL
774DM
784EN
794FO
8050P
8151Q
8252R
8353S
8454T
8555U
8656V
8757W
8858X
8959Y
905AZ
915B[
925C\
935D]
945E^
955F_
9660`
9761a
9862b
9963c
10064d
10165e
10266f
10367g
10468h
10569i
1066Aj
1076Bk
1086Cl
1096Dm
1106En
1116Fo
11270p
11371q
11472r
11573s
11674t
11775u
11876v
11977w
12078x
12179y
1227Az
1237B{
1247C|
1257D}
1267E~
1277FDEL
 

由于种种原因,常见的媒体格式中,Windows Media Player只支持少数的几种,比如.wma、.wmv、.mp3等,但许多其它常用的,比如.rmvb、.mkv,都不能在Media Player中播放,这就使得在Windows上看片子很不方便,解决方法通常有两种,一是装一个第三方的播放器,另一种是安装解码器。我选后一种,因为我不喜欢电脑里有功能重复的软件……

那么就找一个好用的解码器吧,推荐使用来自Shark007.net的解码器,它支持更多的格式,如amr、m4b、mkv、rmvb等,并支持64位Windows:

  1. Shark007 Codec v339 (x86) [26.57 MB]
  2. Shark007 Codec v339 (x64) [15.58 MB]

如果你使用32位Windows的话,只需要安装第一个;如果你想使用64位,那2项都需要安装。

安装完成之后,可以使用它的推荐设置来达到最优效果,如下图:

*注:这个解码器仅可在Windows 7中使用。

历史版本:

Shark007 Codec v273 (x86) [23.03 MB]

Shark007 Codec v277 (x64) [11.56 MB]
 

IIS安装完成之后,会创建一个注册表键来保存一些设置:

HKLM\Software\Microsoft\InetStp

而在没有安装IIS的系统上是没有这个键的,所以可以通过这个注册表键来判断IIS是否已经安装,比如:

1
2
REG QUERY HKLM\Software\Microsoft\InetStp > NUL
IF "%ErrorLevel%" == "0" GOTO :EOF

至于如何使用命令行安装IIS,请参考这篇文章

© 2004 - 2011 Leona+Suffusion theme by Sayontan Sinha