java的变量名可以是中文hoho~
星期二, 05月 29th, 2007今天上课时知道的,测试了一下挺好玩 。
import java.lang.*;
import java.io.*;
public class test{
public static void main(String argv[]){
int 年=2007;
System.out.println(年);
}
}
输出
2007
今天上课时知道的,测试了一下挺好玩 。
import java.lang.*;
import java.io.*;
public class test{
public static void main(String argv[]){
int 年=2007;
System.out.println(年);
}
}
输出
2007
今天上软件工程,才知道我们一直进行的是黑盒测试(功能测试)。突然想起了《Bleah》中的一句话。ho~ho~
“知道名字和不知道名字有天壤之别。”
挺有道理,知道一个概念后会有意识的去主动运用,而不是处于原来的无意识状态。
如果有大量重复代码,可以考虑将其改写为循环or函数
比如下面的
//deal with stat -> if ( B ) M1 stat1 N else M2 stat2 void if_stat(){ SemRecord stat2 = sem_stk.top(); sem_stk.pop(); if(SEM_DEBUG){ cout<<"pop stat2"; out_SemRecord(stat2); } SemRecord M2 = sem_stk.top(); sem_stk.pop(); if(SEM_DEBUG){ cout<<"pop M2"; out_SemRecord(M2); } SemRecord Else = sem_stk.top(); sem_stk.pop(); if(SEM_DEBUG){ cout<<"pop else"; out_SemRecord(Else); } ... }
中间有大量的重复代码,写成函数不合适,改成循环就好多了
//deal with stat -> if ( B ) M1 stat1 N else M2 stat2 void if_stat(){ //size = 11 const char* s[]={"if","(","B",")","M1","stat1","N","else","M2","stat2","stat"}; SemRecord sem[11]; for(int i=9 ; i>=0 ; i--){ sem[i] = sem_stk.top(); sem_stk.pop(); if(SEM_DEBUG){ cout<<"pop "<<s[i]; out_SemRecord(sem[i]); } } ... }
在写编译程序时遇到了以下问题:已有下列文本
#define AUTO 1 #define BREAK 2 #define CASE 3 ...
要写这样的代码:
token_map["auto"]=AUTO; token_map["break"]=BREAK; token_map["case"]=CASE; ...
用vim如何实现呢?
首先将其变为
AUTO BREAK CASE ...
:%s/#define //g :%s/ [0-9]*$//g
之后用
:%s/[A-Z]*/token_map["L"]=U\0/g;
Now it’s okay! Enjoy:)
以下是vim参考手册中change列出来的
magic nomagic 动作 ~
& & 替代为完整的匹配 s/&
& & 替代为 &
替代为完整的匹配 s/
1 替代为匹配的第一个 () 里面的内容 s/1
2 替代为匹配的第二个 () 里面的内容 s/2
.. .. s/3
9 替代为匹配的第九个 () 里面的内容 s/9
~ ~ 替代为前一个 substitute 的替代字符串 s~
~ ~ 替代为 ~ s/~
u 下一个字符成为大写 s/u
U 其后字符成为大写,直到 E 出现 s/U
l 下一个字符成为小写 s/l
L 其后字符成为小写,直到 E 出现 s/L
e 结束 u、U、l 和 L (注意: 不是 !) s/e
E 结束 u、U、l 和 L s/E
把该行在此位置一分为二
( 以 CTRL-V 方式输入) s
r 同上 s/r
插入一个回车 (CTRL-M)
( 以 CTRL-V 方式输入) s/
n 插入一个 (文件里的 )
(此处并不是换行) s/n
b 插入一个 s/b
t 插入一个 s/t
插入单个反斜杠 s/
x 其中 x 是上面没提到的任何一个字符:
保留作将来的扩展
示例:
:s/a|b/xxxxxx/g 修改 "a b" 为 "xxxaxxx xxxbxxx"
:s/([abc])([efg])/21/g 修改 "af fa bg" 为 "fa fa gb"
:s/abcde/abc^Mde/ 修改 "abcde" 为 "abc"、"de" (两行)
:s/$/^M/ 修改 "abcde" 为 "abcde^M"
:s/w+/u/g 修改 "bla bla" 为 "Bla Bla"
The Greatest News Today!

查看分区UUID命令是: ls -l /dev/disk/by-uuid
用pmount自动mount U盘: pmount /dev/sda
编译原理试验报告要画CFSM的状态图。在网上找了半天才知道这个东西叫做Graph Visualization.找到了一个开源的叫做Graphviz.
下面是一个例子

以下是代码:
digraph finite_state_machine { rankdir=LR; size="8,5" node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8; node [shape = circle]; LR_0 -> LR_2 [ label = "SS(B)" ]; LR_0 -> LR_1 [ label = "SS(S)" ]; LR_1 -> LR_3 [ label = "S($end)" ]; LR_2 -> LR_6 [ label = "SS(b)" ]; LR_2 -> LR_5 [ label = "SS(a)" ]; LR_2 -> LR_4 [ label = "S(A)" ]; LR_5 -> LR_7 [ label = "S(b)" ]; LR_5 -> LR_5 [ label = "S(a)" ]; LR_6 -> LR_6 [ label = "S(b)" ]; LR_6 -> LR_5 [ label = "S(a)" ]; LR_7 -> LR_8 [ label = "S(b)" ]; LR_7 -> LR_5 [ label = "S(a)" ]; LR_8 -> LR_6 [ label = "S(b)" ]; LR_8 -> LR_5 [ label = "S(a)" ]; }
今天将Linux下的一个程序转到windows下运行发现了一个问题
#define TERMINAL_LIM 64 #define NONTERMINAL_LIM 32 ... //in a function bool added[NONTERMINAL_LIM] ... for(int j=0 ; j<NONTERMINAL_LIM ; j++) added[j] = false; ... // 0=<i<NONTERMINAL_LIM + TERMINAL_LIM, // but it's possible i>NONTERMINAL if(!added[i]){ ... }
这段代码实际上是错误的,但在Linux g++下执行正确。
正确的代码应该是
... //in a function bool added[NONTERMINAL_LIM + TERMINAL_LIM] ... for(int j=0 ; j<NONTERMINAL_LIM + TERMINAL_LIM ; j++) added[j] = false; ...
在原来的代码中,访问了越界的added数组,应该是在Linux中越界部分正好都是false,居然就这样OK了。但在Windows下越界部分却是随机了,于是就产生了问题。
调了一个小时才发现在这里出现了问题:(
默哀。
数学建模让我认识到了快捷键的主要性:(
zz from http://tech.163.com/05/1212/10/24P09GJN00091NGR.html
常用快捷键 快捷键 作用 Ctrl+Shift+Spacebar 创建不间断空格 Ctrl+ -(连字符) 创建不间断连字符 Ctrl+B 使字符变为粗体 Ctrl+I 使字符变为斜体 Ctrl+U 为字符添加下划线 Ctrl+Shift+ 缩小字号 Ctrl+Shift+> 增大字号 Ctrl+Q 删除段落格式 Ctrl+Spacebar 删除字符格式 Ctrl+C 复制所选文本或对象 Ctrl+X 剪切所选文本或对象 Ctrl+V 粘贴文本或对象 Ctrl+Z 撤消上一操作 Ctrl+Y 重复上一操作 快捷键大全 1.用于设置字符格式和段落格式的快捷键 快捷键 作用 Ctrl+Shift+F 改变字体 Ctrl+Shift+P 改变字号 Ctrl+Shift+> 增大字号 Ctrl+Shift+< 减小字号 Ctrl+] 逐磅增大字号 Ctrl+[ 逐磅减小字号 Ctrl+D 改变字符格式("格式"菜单中的"字体"命令) Shift+F3 切换字母大小写 Ctrl+Shift+A 将所选字母设为大写 Ctrl+B 应用加粗格式 Ctrl+U 应用下划线格式 Ctrl+Shift+W 只给字、词加下划线,不给空格加下划线 Ctrl+Shift+H 应用隐藏文字格式 Ctrl+I 应用倾斜格式 Ctrl+Shift+K 将字母变为小型大写字母 Ctrl+=(等号) 应用下标格式(自动间距) Ctrl+Shift++(加号) 应用上标格式(自动间距) Ctrl+Shift+Z 取消人工设置的字符格式 Ctrl+Shift+Q 将所选部分设为Symbol字体 Ctrl+Shift+*(星号) 显示非打印字符 Shift+F1(单击) 需查看文字格式了解其格式的文字 Ctrl+Shift+C 复制格式 Ctrl+Shift+V 粘贴格式 Ctrl+1 单倍行距 Ctrl+2 双倍行距 Ctrl+5 1.5 倍行距 Ctrl+0 在段前添加一行间距 Ctrl+E 段落居中 Ctrl+J 两端对齐 Ctrl+L 左对齐 Ctrl+R 右对齐 Ctrl+Shift+D 分散对齐 Ctrl+M 左侧段落缩进 Ctrl+Shift+M 取消左侧段落缩进 Ctrl+T 创建悬挂缩进 Ctrl+Shift+T 减小悬挂缩进量 Ctrl+Q 取消段落格式 Ctrl+Shift+S 应用样式 Alt+Ctrl+K 启动"自动套用格式" Ctrl+Shift+N 应用"正文"样式 Alt+Ctrl+1 应用"标题1"样式 Alt+Ctrl+2 应用"标题2"样式 Alt+Ctrl+3 应用"标题3"样式 Ctrl+Shift+L 应用"列表"样式