#
常用万能正则表达式整理


1。^d+$  //匹配非负整数(正整数 + 0)  
2。^[0-9]*[1-9][0-9]*$  //匹配正整数  
3。^((-d+)|(0+))$  //匹配非正整数(负整数 + 0)  
4。^-[0-9]*[1-9][0-9]*$  //匹配负整数  
5。^-?d+$    //匹配整数  
6。^d+(.d+)?$  //匹配非负浮点数(正浮点数 + 0)  
7。^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$  //匹配正浮点数  
8。^((-d+(.d+)?)|(0+(.0+)?))$  //匹配非正浮点数(负浮点数 + 0)  
9。^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$  //匹配负浮点数  
10。^(-?d+)(.d+)?$  //匹配浮点数  
11。^[A-Za-z]+$  //匹配由26个英文字母组成的字符串  
12。^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串  
13。^[a-z]+$  //匹配由26个英文字母的小写组成的字符串  
14。^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串  
15。^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串  
16。^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$    //匹配email地址  
17。^[a-zA-z]+://匹配(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$  //匹配url  
18。匹配中文字符的正则表达式: [u4e00-u9fa5]  
19。匹配双字节字符(包括汉字在内):[^x00-xff]  
20。应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)String.prototype.len=function(){returnthis.replace([^x00-xff]/g,"aa").length;}  
21。匹配空行的正则表达式:n[s| ]*r  
22。匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/  
23。匹配首尾空格的正则表达式:(^s*)|(s*$)*  

正则表达式用例  
 1、^S+[a-z A-Z]$ 不能为空 不能有空格 只能是英文字母  
 2、S{6,} 不能为空 六位以上  
 3、^d+$ 不能有空格 不能非数字  
 4、(.*)(.jpg|.bmp)$ 只能是jpg和bmp格式  
 5、^d{4}-d{1,2}-d{1,2}$ 只能是2004-10-22格式  
 6、^0$ 至少选一项  
 7、^0{2,}$ 至少选两项  
 8、^[s|S]{20,}$ 不能为空 二十字以上  
 9、^+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(.|-))+[a-z]{2,6}$邮件  
 10、w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*([,;]s*w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*)* 输入多个地址用逗号或空格分隔邮件  
 11、^(([0-9]+))?[0-9]{7,8}$电话号码7位或8位或前面有区号例如(022)87341628  
 12、^[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(.[a-z A-Z 0-9 _]+)+(,[a-z A-Z 0-9 _]+@[a-z A-Z 0-9 _]+(.[a-z A-Z 0-9 _]+)+)*$ * 只能是字母、数字、下划线;必须有@和.同时格式要规范 邮件   
 13 ^w+@w+(.w+)+(,w+@w+(.w+)+)*$上面表达式也可以写成这样子,更精练。  
 14 ^w+((-w+)|(.w+))*@w+((.|-)w+)*.w+$  

一些总结,供以后使用查找:  
匹配中文字符的正则表达式: [u4e00-u9fa5]     
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了     

匹配双字节字符(包括汉字在内):[^x00-xff]     
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)     

匹配空白行的正则表达式:ns*r     
评注:可以用来删除空白行     

匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />     
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力     

匹配首尾空白字符的正则表达式:^s*|s*$     
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式     

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*     
评注:表单验证时很实用     

匹配网址URL的正则表达式:[a-zA-z]+://[^s]*     
评注:网上流传的版本功能很有限,上面这个基本可以满足需求     

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$     
评注:表单验证时很实用     

匹配国内电话号码:d{3}-d{8}|d{4}-d{7}     
评注:匹配形式如 0511-4405222 或 021-87888822     

匹配腾讯QQ号:[1-9][0-9]{4,}     
评注:腾讯QQ号从10000开始     

匹配中国邮政编码:[1-9]d{5}(?!d)     
评注:中国邮政编码为6位数字     

匹配身份证:d{15}|d{18}     
评注:中国的身份证为15位或18位     

匹配ip地址:d+.d+.d+.d+     
评注:提取ip地址时有用     

匹配特定数字:     
^[1-9]d*$    //匹配正整数     
^-[1-9]d*$   //匹配负整数     
^-?[1-9]d*$   //匹配整数     
^[1-9]d*|0$  //匹配非负整数(正整数 + 0)     
^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)     
^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数     
^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数     
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数     
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)     
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)     
评注:处理大量数据时有用,具体应用时注意修正     

匹配特定字符串:     
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串     
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串     
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串     
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串     
^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串     
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+___FCKpd___0quot;    //email地址     
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?___FCKpd___0quot;  //url     

匹配中文字符的正则表达式: [u4e00-u9fa5]  
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了  

匹配双字节字符(包括汉字在内):[^x00-xff]  
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)  

匹配空白行的正则表达式:ns*r  
评注:可以用来删除空白行  

匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />  
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力  

匹配首尾空白字符的正则表达式:^s*|s*$  
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式  

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*  
评注:表单验证时很实用  

匹配网址URL的正则表达式:[a-zA-z]+://[^s]*  
评注:网上流传的版本功能很有限,上面这个基本可以满足需求  

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$  
评注:表单验证时很实用  

匹配国内电话号码:d{3}-d{8}|d{4}-d{7}  
评注:匹配形式如 0511-4405222 或 021-87888822  

匹配腾讯QQ号:[1-9][0-9]{4,}  
评注:腾讯QQ号从10000开始  

匹配中国邮政编码:[1-9]d{5}(?!d)  
评注:中国邮政编码为6位数字  

匹配身份证:d{15}|d{18}  
评注:中国的身份证为15位或18位  

匹配ip地址:d+.d+.d+.d+  
评注:提取ip地址时有用  

匹配特定数字:  
^[1-9]d*$    //匹配正整数  
^-[1-9]d*$   //匹配负整数  
^-?[1-9]d*$   //匹配整数  
^[1-9]d*|0$  //匹配非负整数(正整数 + 0)  
^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)  
^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数  
^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数  
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数  
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)  
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)  
评注:处理大量数据时有用,具体应用时注意修正  

匹配特定字符串:  
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串  
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串  
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串  
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串  
^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串  
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+___FCKpd___0quot;    //email地址    
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?___FCKpd___0quot;  //urlview plaincopy to clipboardprint?  
正则几个基本概念:     

正则几个基本概念:view plaincopy to clipboardprint?  
1.贪婪:+,*,?,{m,n}等默认是贪婪匹配,即尽可能多匹配,也叫最大匹配     
如果后面加上?,就转化为非贪婪匹配,需要高版本支持     

1.贪婪:+,*,?,{m,n}等默认是贪婪匹配,即尽可能多匹配,也叫最大匹配  
如果后面加上?,就转化为非贪婪匹配,需要高版本支持view plaincopy to clipboardprint?  
2.获取:默认用(x|y)是获取匹配,很多时候只是测试,不一定要求得到所匹配的数据,尤其在嵌套匹配或大数据中就要用非获取匹配(?:x|y),这样提高了效率,优化了程序。     

2.获取:默认用(x|y)是获取匹配,很多时候只是测试,不一定要求得到所匹配的数据,尤其在嵌套匹配或大数据中就要用非获取匹配(?:x|y),这样提高了效率,优化了程序。view plaincopy to clipboardprint?  
3.消耗:默认是消耗匹配,一般在预查中是非消耗匹配。     
举个例子,2003-2-8要变为2003-02-08     
如果用/-(d)-/第二次匹配将从8开始,从而只替换第一个2,错误     
如果用/-(d)(?=-)/则第二次匹配从第二个-开始,即不消耗字符-     

3.消耗:默认是消耗匹配,一般在预查中是非消耗匹配。  
举个例子,2003-2-8要变为2003-02-08  
如果用/-(d)-/第二次匹配将从8开始,从而只替换第一个2,错误  
如果用/-(d)(?=-)/则第二次匹配从第二个-开始,即不消耗字符-view plaincopy to clipboardprint?  
4.预查:js中分为正向预查和负向预查     
如上面的(?=pattern)是正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。还有(?!pattern)是负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。负向预查有时会用在对[^]的扩充,[^]只是一些字符,而?!可以使整个字符串。     

4.预查:js中分为正向预查和负向预查  
如上面的(?=pattern)是正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。还有(?!pattern)是负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。负向预查有时会用在对[^]的扩充,[^]只是一些字符,而?!可以使整个字符串。view plaincopy to clipboardprint?  
5.回调:一般用在替换上,即根据不用的匹配内容返回不用的替换值,从而简化了程序,需要高版本支持     

5.回调:一般用在替换上,即根据不用的匹配内容返回不用的替换值,从而简化了程序,需要高版本支持view plaincopy to clipboardprint?  
6.引用:num 对所获取的第num个匹配的引用。     
例如,'(.)11' 匹配AAA型。'(.)(.)21' 匹配ABBA型。     

6.引用:num 对所获取的第num个匹配的引用。  
例如,'(.)11' 匹配AAA型。'(.)(.)21' 匹配ABBA型。view plaincopy to clipboardprint?  
正则表达式保留字     
^ (carat)     
. (period)     
[ (left bracket}     
$ (dollar sign)     
( (left parenthesis)     
) (right parenthesis)     
| (pipe)     
* (asterisk)     
+ (plus symbol)     
? (question mark)     
{ (left curly bracket, or left brace)     
 backslash     

正则表达式保留字  
^ (carat)    
. (period)    
[ (left bracket}    
$ (dollar sign)    
( (left parenthesis)    
) (right parenthesis)    
| (pipe)    
* (asterisk)    
+ (plus symbol)    
? (question mark)    
{ (left curly bracket, or left brace)    
 backslash view plaincopy to clipboardprint?  
构造 匹配于     

构造 匹配于 view plaincopy to clipboardprint?  
字符     
x 字符 x     
\ 反斜线字符     
n 八进制值的字符0n (0 <= n <= 7)     
nn 八进制值的字符 0nn (0 <= n <= 7)     
mnn 八进制值的字符0mnn 0mnn (0 <= m <= 3, 0 <= n <= 7)     
xhh 十六进制值的字符0xhh     
uhhhh 十六进制值的字符0xhhhh     
t 制表符('u0009')     
n 换行符 ('u000A')     
r 回车符 ('u000D')     
f 换页符 ('u000C')     
a 响铃符 ('u0007')     
e 转义符 ('u001B')     
cx T对应于x的控制字符 x     

字符    
x 字符 x    
\ 反斜线字符    
n 八进制值的字符0n (0 <= n <= 7)    
nn 八进制值的字符 0nn (0 <= n <= 7)    
mnn 八进制值的字符0mnn 0mnn (0 <= m <= 3, 0 <= n <= 7)    
xhh 十六进制值的字符0xhh    
uhhhh 十六进制值的字符0xhhhh    
t 制表符('u0009')    
n 换行符 ('u000A')    
r 回车符 ('u000D')    
f 换页符 ('u000C')    
a 响铃符 ('u0007')    
e 转义符 ('u001B')    
cx T对应于x的控制字符 x view plaincopy to clipboardprint?  
字符类     
[abc] a, b, or c (简单类)     
[^abc] 除了a、b或c之外的任意 字符(求反)     
[a-zA-Z] a到z或A到Z ,包含(范围)     
[a-z-[bc]] a到z,除了b和c : [ad-z](减去)     
[a-z-[m-p]] a到z,除了m到 p: [a-lq-z]     
[a-z-[^def]] d, e, 或 f     

字符类    
[abc] a, b, or c (简单类)    
[^abc] 除了a、b或c之外的任意 字符(求反)    
[a-zA-Z] a到z或A到Z ,包含(范围)    
[a-z-[bc]] a到z,除了b和c : [ad-z](减去)    
[a-z-[m-p]] a到z,除了m到 p: [a-lq-z]    
[a-z-[^def]] d, e, 或 f view plaincopy to clipboardprint?  
预定义的字符类     
. 任意字符(也许能与行终止符匹配,也许不能)     
d 数字: [0-9]     
D 非数字: [^0-9]     
s 空格符: [ tnx0Bfr]     
S 非空格符: [^s]     
w 单词字符: [a-zA-Z_0-9]     
W 非单词字符: [^w]     

 

不知不觉离决赛都过去一个月了,一直忙于各种事情,都忘记整理一份试题。当作回忆也好。

1\.  

标题:好好学习  

    汤姆跟爷爷来中国旅游。一天,他帮助中国的小朋友贴标语。他负责贴的标语是分别写在四块红纸上的四个大字:“好、好、学、习”。但是汤姆不认识汉字,他就想胡乱地贴成一行。  

    请你替小汤姆算一下,他这样乱贴,恰好贴对的概率是多少?  

    答案是一个分数,请表示为两个整数比值的形式。例如:1/3 或 2/15 等。  
    如果能够约分,请输出约分后的结果。
> 这道题很简单,我当时是直接列出来,送分题。
2.

标题:埃及分数

    古埃及曾经创造出灿烂的人类文明,他们的分数表示却很令人不解。古埃及喜欢把一个分数分解为类似: 1/a + 1/b 的格式。

    这里,a 和 b 必须是不同的两个整数,分子必须为 1

    比如,2/15 一共有 4 种不同的分解法(姑且称为埃及分解法):

1/8 + 1/120
1/9 + 1/45
1/10 + 1/30
1/12 + 1/20

    那么, 2/45 一共有多少个不同的埃及分解呢(满足加法交换律的算同种分解)? 请直接提交该整数(千万不要提交详细的分解式!)。

    请严格按照要求,通过浏览器提交答案。
    注意:只提交分解的种类数,不要写其它附加内容,比如:说明性的文字

用FOR循环嵌套即可,但是要注意浮点数在计算机系统的表示方式,不能用=号来判定,应该用NUM1 - NUM2 < 0.000000001 || NUM1 - NUM2 > -0.00000000001来判断 没什么难度

3.

标题:金蝉素数

    考古发现某古墓石碑上刻着一个数字:13597,后研究发现:

    这是一个素数!

    并且,去掉首尾数字仍是素数!

    并且,最中间的数字也是素数!

    这样特征的数字还有哪些呢?通过以下程序的帮助可以轻松解决。请仔细阅读代码,并填写划线部分缺失的代码。

public class A
{
    static boolean isPrime(int n)
    {
        if(n<=1) return false;
        for(int i=2; i*i<=n; i++){
            if(n%i==0) return false;
        }
        return true;
    }

    static void f(int[] x, int k)
    {
        if(_____________________________){  // 填空位置
            if(isPrime(x[0]*10000 + x[1]*1000 + x[2]*100 + x[3]*10 + x[4]) &&
                isPrime(x[1]*100 + x[2]*10 + x[3]) &&
                isPrime(x[2]))
                System.out.println(""+x[0]+x[1]+x[2]+x[3]+x[4]);
            return;
        }

        for(int i=k; i

看看有那个变量没用到,然后带入数值推测即可。

4.

标题:横向打印二叉树

    二叉树可以用于排序。其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交给左子树继续处理,否则交给右子树。

    当遇到空子树时,则把该节点放入那个位置。 

    比如,10 8 5 7 12 4 的输入顺序,应该建成二叉树如图1所示。 

    本题目要求:根据已知的数字,建立排序二叉树,并在标准输出中横向打印该二叉树。 

    输入数据为一行空格分开的N个整数。 N<100,每个数字不超过10000。
    输入数据中没有重复的数字。 

    输出该排序二叉树的横向表示。 对应上例中的数据,应输出:

   |-12
10-|
   |-8-|
       |   |-7
       |-5-|
           |-4

    为了便于评卷程序比对空格的数目,请把空格用句点代替:
...|-12
10-|
...|-8-|
.......|...|-7
.......|-5-|
...........|-4

例如:
用户输入:
10 5 20
则程序输出:
...|-20
10-|
...|-5

再例如:
用户输入:
5 10 20 8 4 7
则程序输出:
.......|-20
..|-10-|
..|....|-8-|
..|........|-7
5-|
..|-4

资源约定:
峰值内存消耗(含虚拟机) < 64M
CPU消耗  < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.6及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。

首先写一个二叉树类,然后把输入的数据添加到类中,然后按顺序输出出来。主要是要输出目录结构,用递归,(有左节点,有右节点,无节点,两个节点都有)各种情况都要考虑。这道题浪费了我不少时间,最终还是拿下了~!!

5.

标题:危险系数

    抗日战争时期,冀中平原的地道战曾发挥重要作用。

    地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。

    我们来定义一个危险系数DF(x,y):
    对于两个站点x和y (x != y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x,y的关键点。相应的,对于任意一对站点x和y,危险系数DF(x,y)就表示为这两点之间的关键点个数。

    本题的任务是:已知网络结构,求两站点之间的危险系数。

    输入数据第一行包含2个整数n(2 <= n <= 1000), m(0 <= m <= 2000),分别代表站点数,通道数;
    接下来m行,每行两个整数 u,v (1 <= u, v <= n; u != v)代表一条通道;
    最后1行,两个数u,v,代表询问两点之间的危险系数DF(u, v)。

    输出:一个整数,如果询问的两点不连通则输出-1.

例如:
用户输入:
7 6
1 3
2 3
3 4
3 5
4 5
5 6
1 6
则程序应该输出:
2

资源约定:
峰值内存消耗(含虚拟机) < 64M
CPU消耗  < 2000ms
> 当时数据结构没学好 ,,,这道题没思路,直接跳过了~!!!郁闷。

6.

标题:公式求值

输入n, m, k,输出图1所示的公式的值。其中C_n^m是组合数,表示在n个人的集合中选出m个人组成一个集合的方案数。组合数的计算公式如图2所示。

输入的第一行包含一个整数n;第二行包含一个整数m,第三行包含一个整数k。

计算图1所示的公式的值,由于答案非常大,请输出这个值除以999101的余数。

【样例输入1】

3

1

3

【样例输出1】

162

【样例输入2】

20

10

10

【样例输出2】

359316

【数据规模与约定】

对于10%的数据,n≤10,k≤3;

对于20%的数据,n≤20,k≤3;

对于30%的数据,n≤1000,k≤5;

对于40%的数据,n≤10^7,k≤10;

对于60%的数据,n≤10^15,k ≤100;

对于70%的数据,n≤10^100,k≤200;

对于80%的数据,n≤10^500,k ≤500;

对于100%的数据,n在十进制下不超过1000位,即1≤n<10^1000,1≤k≤1000,同时0≤m≤n,k≤n。

【提示】

999101是一个质数;

当n位数比较多时,绝大多数情况下答案都是0,但评测的时候会选取一些答案不是0的数据;

资源约定:

峰值内存消耗(含虚拟机) < 128M

CPU消耗 < 2000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意:不要使用package语句。不要使用jdk1.6及以上版本的特性。

注意:主类的名字必须是:Main,否则按无效代码处理。

这道题主要是考算法优化。思路逻辑基本没什么难度。我最终的优化大概能拿67成的分,再高的就拿不了。idea有限。 对于重复算的数值只计算一次,对于重复算的公式就尽量优化计算速度,还有计算的数值按大小分类计算,提高效率。

6道题全做了,但是其中第5道题是不会的,写了个HelloWorld上去,也表现了我对HelloWorld的热衷吧!

比赛结果 : 一等奖,至少没白去北京一趟,也算给导师一个交代吧!

 

程序员必看的十大电影

 

不同的行业领域中很多时候都分享着共同的思想和理念。比如,大量的计算机编程中涉及到的概念都被运用到了电影里。有些概念出现在电影里后变得如此之 酷,甚至反过来能帮助我们程序员更好的理解这些概念。下面就是我最喜欢的10大电影,它们都在某方便帮助了我理解编程中的某些概念。

 

1. 骇客帝国(1999)

概念:在线/离线,递归,循环,矩阵等。

这部具有革命性的电影。一种文明的结束是另一种文明的开始。它成了后来的很多电影效仿的对象。

2. 环形使者(2012)

概念:循环

如果生活变成了一种无休无止的循环,如何终止它?

3. 创:战记(2010)

概念:虚拟和现实

很多到了年纪的计算机科学家都会承认,他们对计算机计算或战争游戏的热爱来自一种憧憬。

4. 遇见未来(2007)

概念:递归

这部电影运用到了计算机里递归的概念,特别是最后的搜索那部分,那是在一个树数据上进行递归搜索。

5. 死神来了 1, 2, 3, 4, 5

概念: if else jump

6. 盗梦空间(2010)

概念:虚拟机,嵌套

盗梦空间这部影片看的糊里糊涂,主要是里面的梦境嵌套的太多了,人物在各个梦境里来回穿越,弄的我不知道究竟他们在第几层梦境。关于这部电影一则笑话却非常的有意思,如果你是个真正的程序员,你一定会哈哈大笑:

盗梦空间的主要思想是:如果你在虚拟机(VM)里的虚拟机里的虚拟机里安装了一个虚拟机,那所有的东西都会变的死慢。

7. 云图(2012)

概念:并行

看似无关的几个线索其实是有内部联系的,就像是并行计算其实都是为了解决同一个任务,甚至还会共享一些变量。

8. Flatland 2: Sphereland (2012)

概念:2D

9. 源代码(2011)

概念:多线程重进入(Reentrancy)机制

我很好奇这些源代码是在什么上运行的。如果关闭电源,那另外一个世界就会消失?

10. 恐怖游轮 (2009)

概念:死循环

上面这些电影就是我最喜欢的一些电影。

当然,还有很多跟软件编程相关的电影,如果你在评论里给我提示,我会把它们补充到这个列表里。

###
 

[![](http://www.qiushurong.cn/wp-content/uploads/2014/02/未命名-300x229.jpg "工资高低")](http://www.qiushurong.cn/wp-content/uploads/2014/02/未命名.jpg)

<span style="color:#000000;">&nbsp; &nbsp; 为什么互联网的</span><span style="color: rgb(0, 0, 0); line-height: 1.6em;">工程师的平均工资要比写传统软件的工程师多一些。</span>


    以一个笑话来说: 一个摩托修理工,帮一个心脏外科医生修理摩托车发动机,发牢骚说:"同样都是修理心脏,您的收入怎么比我高这么多呢?" ,心脏外科大夫拍拍袖口,说:“嗯,你要试试不停摩托车修理发动机吗?”

#
日常办公室人际关系9大关卡

<span style="font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; `&nbsp;`同在一个单位,或者就在一个办公室,搞好同事间的关系是非常重要的。关系融洽,心情就舒畅,这不但利于做好工作,也有利于自己的身心健康。倘若关系不和,甚至有点紧张,那就没滋没味了。导致同事关系不够融洽的原因,除了重大问题上的矛盾和直接的利害冲突外,平时不注意自己的言行细节也是一个原因。那么,哪些言行会影响同事间的关系呢?</span>

&nbsp;

**  有好事儿不通报**

  单位里发物品、领奖金等,你先知道了,或者已经领了,一声不响地坐在那里,像没事似的,从不向大家通报一下,有些东西可以代领的,也从不帮人领一下。这样几次下来,别人自然会有想法,觉得你太不合群,缺乏共同意识和协作精神。以后他们有事先知道了,或有东西先领了,也就有可能不告诉你。如此下去,彼此的关系就不会和谐了。

&nbsp;

 ** 明知而推说不知**

  同事出差去了,或者临时出去一会儿,这时正好有人来找他,或者正好来电话找他,如果同事走时没告诉你,但你知道,你不妨告诉他们;如果你确实不知,那不妨问问别人,然后再告诉对方,以显示自己的热情。明明知道,而你却直通通地说不知道,一旦被人知晓,那彼此的关系就势必会受到影响。外人找同事,不管情况怎样,你都要真诚和热情,这样,即使没有起实际作用,外人也会觉得你们的同事关系很好。

&nbsp;

**  进出不互相告知**

  你有事要外出一会儿,或者请假不上班,虽然批准请假的是领导,但你最好要同办公室里的同事说一声。即使你临时出去半个小时,也要与同事打个招呼。这样,倘若领导或熟人来找,也可以让同事有个交待。如果你什么也不愿说,进进出出神秘兮兮的,有时正好有要紧的事,人家就没法说了,有时也会懒得说,受到影响的恐怕还是自己。互相告知,既是共同工作的需要,也是联络感情的需要,它表明双方互有的尊重与信任。

&nbsp;

**  不说可以说的私事**

  有些私事不能说,但有些私事说说也没有什么坏处。比如你的男朋友或女朋友的工作单位、学历、年龄及性格脾气等;如果你结了婚,有了孩子,也就有了关了于爱人和孩子方面的话题。在工作之余,都可以顺便聊聊,它可以增进了解,加深感情。倘若这些内容都保密,从来不肯与别人说,这怎么能算同事呢?无话不说,通常表明感情之深;有话不说,自然表明人际距离的疏远。你主动跟别人说些私事,别人也会向你说,有时还可以互相帮帮忙。你什么也不说,什么也不让人知道,人家怎么信任你?信任是建立在相互了解的基础之上的。

&nbsp;

**  有事不肯向同事求助**

  轻易不求人,这是对的。因为求人总会给别人带来麻烦。但任何事物都是辩证的,有时求助别人反而能表明你对别人的信赖,能融洽关系,加深感情。比如你身体不好,你同事的爱人医生,你不认识,但你可以通过同事的介绍去找,以便诊得快点,诊得细点。倘若你偏不肯求助,同事知道了,反而会觉得你不信任人家。你不愿求人家,人家也就不好意思求你;你怕人家麻烦,人家就以为你也很怕麻烦。良好的人际关系是以互相帮助为前提的。因此,求助他人,在一般情况下是可以的。当然,要讲究分寸,尽量不要使人家为难。

&nbsp;

**  拒绝同事的&ldquo;小吃&rdquo;**

  同事带点水果、瓜子、糖之类的零食到办公室,休息时分吃,你就不要推,不要以为难为情而一概拒绝。有时,同事中有人获了奖或评上了职称什么的,大家高兴,要他买点东西请客,这也是很正常的,对此,你可以积极参与。你不要冷冷坐在旁边一声不吭,更不要人家给你,你却一口回绝,表现出一副不屑为伍或不稀罕的神态。人家热情分送,你却每每冷拒,时间一长,人家有理由说你清高和傲慢,觉得你难以相处。

&nbsp;

**  常和一人&ldquo;咬耳朵&rdquo;**

  同办公室有好几个人,你对每一个人要尽量保持平衡,尽量始终处于不即不离的状态,也就是说,不要对其中某一个特别亲近或特别疏远。在平时,不要老是和同一个人说悄悄话,进进出出也不要总是和一个人。否则,你们两个也许亲近了,但疏远的可能更多。有些人还以为你们在搞小团体。如果你经常在和同一个人&ldquo;咬耳朵&rdquo;,别人进来又不说了,那么别人不免会产生你们在说人家坏话的想法。

&nbsp;

**  热衷于探听家事**

  能说的人家自己会说,不能说的就别去挖它。每个人都有自己的秘密。有时,人家不留意把心中的秘密说漏了嘴,对此,你不要去探听,不要想问个究竟。有些人热衷于探听,事事都想了解的明明白白,根根梢梢都想弄清楚,这种人是要被别人看轻的。你喜欢探听,即使什么目的也没有,人家也会忌你三分。从某种意义上说,爱探听人家私事,是一种不道德的行为。

&nbsp;

**  喜欢嘴巴上占便宜**

  在同事相处中,有些人总想在嘴巴上占便宜。有些人喜欢说<span style="line-height: 1.7;">人的笑话,讨人家的便宜,虽是玩笑,也绝不肯以自己吃亏而告终;有些人喜欢争辩,有理要争理,没理也要争三分;有些人不论国家大事,还是日常生活小事,一见对方有破绽,就死死抓住不放,非要让对方败下阵来不可;有些人对本来就争不清的问题,也想要争个水落石出;有些人常常主动出击,人家不说他,他总是先说人家。</span>

Update History & Use Case

网站更新历史 & 使用例子

 

2014-02-16 增加图片点击放大插件:lightbox-2点击文章中的图片即可放大显示,点击图片外即可取消放大
2014-02-16 增加文章脚注插件:wp-footnotes使用标签footnote来注释脚注内容
2014-02-18 编辑器修改了几个按钮,JS位置/wp-includes/js/quicktags.js和/wp-includes/js/quicktags.dev.js
2014-02-18 增加了文章的分页功能.使用!–nextpage–来对内容进行分页
2014-02-19 正式绑定域名www.qiushurong.cn
2014-02-19 修改wp-login.php78 登录页面图片链接信息
2014-02-19 修复3个应用宝提示的漏洞-添加IP 219.232.254.89 为黑名单,原因:尝试攻击被拦截。
2014-02-19 停止应用宝防火墙,明天更换新的防火墙
2014-02-20 修改源代码,让主页的文章优先显示more,其次显示摘要,代码如下


2014-02-21 废弃所有代码高亮插件,重新采用更强大便捷的Crayon Syntax Highlighter插件
2014-02-23 添加虾米音乐盒
2014-03-10 优化首页,安装no-ping-wait插件,加快速度
2014-03-12 修改文章回复,不使用额外插件,修改文章编辑器,详情看第3条修改
2014-03-13 替换成BAE空间,安装为3.8版本的wordpress,导入原SAE的数据库,替换数据库的图片链接地址,源代码如下:

UPDATE wp_postmeta SET meta_value=REPLACE(meta_value,’2014/02’,’http://bcs.duapp.com/qsuron/blog/2014/02‘)

2014-03-14 修改为TECHNETCAL 虚拟主机空间,重建最新版的wordpress,导入原数据库并完善页面
2014-03-14 修改登录页面LOGO,方法如下:

//找到主题文件夹下的funtion.php,增加如下代码

function custom_loginlogo() {
echo ‘<style type=”text/css”>.login h1 a {background-image: url(/wp-admin/images/wordpress-logo.png);width:325px;height:100px;background-size: 325px 100px;}</style>’;
}
add_action(‘login_head’, ‘custom_loginlogo’);

2014-03-16 添加插件 - 浮动联系方式 ,修改5个图标和相应的响应
2014-03-19 添加WP-STATE CNZZ站点统计
2014-03-21 把网站DNS改成主机空间的DNS解析服务器
2014-03-23 网站被K了,估计是最近修改太多了,只能慢慢恢复了!
2014-04-22 升级到Wordpress 3.9 版本
2014-04-23 优化首页文章显示的结构,添加文章浏览数插件,添加默认随机浏览数!

add_action(‘publish_post’, ‘bigfa_default_views’);
add_action(‘publish_page’, ‘bigfa_default_views’);
function bigfa_default_views($post_ID) {
global $wpdb;
$num= rand (42,300);
if(!wp_is_post_revision($post_ID)) {
add_post_meta($post_ID, ‘views’, $num, true);
}
}

2014-04-23 添加文章预计阅读时间

//计算字数,预计阅读时间
function count_words () {
global $post;
$text = $post->post_content;
if (mb_strlen($output, ‘UTF-8’) < mb_strlen($text, ‘UTF-8’)) $output .= mb_strlen(preg_replace(‘/\s/‘,’’,html_entity_decode(strip_tags($post->post_content))),’UTF-8’);
return $output;
}

function read_time( $return = false) {
$wordcount = round(count_words(), -2);
$minutes = ceil($wordcount / 300);
if ($wordcount <= 150) {
$output = ‘小于 1 分钟’;
} else {
$output = $minutes.’ 分钟’;
}
echo $output;
}&#23
〓 阅读时间:

2014-04-25 虚拟主机由 TR-00 升级至 TR-01 ,使用优惠码: GEEKZU - 10.00% Discount
2014-05-01 添加背景音乐插件
2014-05-01 去除WordPress 网站前台加载语言包,方法如下:

修改 wp-config.php 文件来阻止 WordPress 在前台加载语言包。

  先打开打开 wp-config.php 文件,找到

require_once(ABSPATH . ‘wp-settings.php’);
  改成下面的代码:

if(WP_ADMIN === true){
define(‘WPLANG’,’xxxxxxxxx’);
}
require_once(ABSPATH .’wp-settings.php’);

  这个方法原理是通过改变 WPLANG 常量使 WordPress 不能正确加载语言包从而提高运行速度。我们在去除语言包后,WordPress

2014-05-09 添加文章目录功能,并修改样式和初始显示状态

一级目录

二级目录

二级目录

一级目录

2014-05-15 ~ 2014-05-18 升级主题,优化css,重构代码include,文章循环读取提取到qsuron.php中。

2014-05-19 优化背景图片 image/bg.png 64 kb –> 3kb

2014-05-20 修复文章置顶时格式显示错误的BUG,并美化置顶效果,效果如下:
置顶效果
2014-06-08 修复主页页码显示错误:style.css 由 width:22px 修改为 min-width:22px

2014-06-08 修复google字体css文件读取不到的问题。修复方法:

新建google-font.css 放在\wp-includes\css目录中(附该css文件的内容如下)
@font-face {
font-family: ‘Open Sans’;
font-style: normal;
font-weight: 300;
src: local(‘Open Sans Light’), local(‘OpenSans-Light’), url(../fonts/google/DXI1ORHCpsQm3Vp6mXoaTRa1RVmPjeKy21_GQJaLlJI.woff) format(‘woff’);
}
@font-face {
font-family: ‘Open Sans’;
font-style: normal;
font-weight: 400;
src: local(‘Open Sans’), local(‘OpenSans’), url(../fonts/google/u-WUoqrET9fUeobQW7jkRT8E0i7KZn-EPnyo3HZu7kw.woff) format(‘woff’);
}
@font-face {
font-family: ‘Open Sans’;
font-style: normal;
font-weight: 600;
src: local(‘Open Sans Semibold’), local(‘OpenSans-Semibold’), url(../fonts/google/MTP_ySUJH_bn48VBG8sNSha1RVmPjeKy21_GQJaLlJI.woff) format(‘woff’);
}
@font-face {
font-family: ‘Open Sans’;
font-style: italic;
font-weight: 300;
src: local(‘Open Sans Light Italic’), local(‘OpenSansLight-Italic’), url(../fonts/google/PRmiXeptR36kaC0GEAetxrsuoFAk0leveMLeqYtnfAY.woff) format(‘woff’);
}
@font-face {
font-family: ‘Open Sans’;
font-style: italic;
font-weight: 400;
src: local(‘Open Sans Italic’), local(‘OpenSans-Italic’), url(../fonts/google/xjAJXh38I15wypJXxuGMBtIh4imgI8P11RFo6YPCPC0.woff) format(‘woff’);
}
@font-face {
font-family: ‘Open Sans’;
font-style: italic;
font-weight: 600;
src: local(‘Open Sans Semibold Italic’), local(‘OpenSans-SemiboldItalic’), url(../fonts/google/PRmiXeptR36kaC0GEAetxmWeb5PoA5ztb49yLyUzH1A.woff) format(‘woff’);
}
修改 \wp-includes\script-loader.php 文件,找到

$open_sans_font_url = “//fonts.233.wiki/css?family=Open+Sans:300italic,400italic,600italic,300,400,600&subset=$subsets”;
替换成

$open_sans_font_url = “/wp-includes/css/google-font.css”;

2014-07-12 修复font-awesome CSS读取速度慢的问题。修复方法:

add_action( ‘wp_enqueue_scripts’, ‘load_fontawesome_styles’ );

function load_fontawesome_styles(){
global $wp_styles;
//wp_dequeue_style(‘font-awesome’);
wp_deregister_style(‘font-awesome’);
wp_register_style(‘font-awesome’, get_template_directory_uri().’/font-awesome-i.css’);
wp_enqueue_style(‘font-awesome’, get_template_directory_uri().’/font-awesome-i.css’);
}
修改到的文件如下:

wp-content/themes/tangstyle/functions.php : 517-525

wp-admin/admin-header.php : 73-75

 

 

 

.

 

 

 

 

 

漫漫IT路,谈谈基础 – 九句良言胜敲十年代码

 

此刻,夜深人静,时间已超过凌晨零点,散仙还在读张龙老师的一篇博客,特别是读到如下的一段话,感触颇深,内心思绪良久,觉得此段话若能在25岁之前领悟,其价值真胜敲过十年代码,下面,散仙会把张龙老师的这段领悟,原样贴在下面,供各位道友,细细品味。

1. 基础的重要性。

我总是不断强调基础的重要性,因为我是有切身体会的。基础的东西可以让你受用一生。struts出来了,webwork出来,tapestry出来了,jsf出来了,struts2也出来了,等等等等。但是这些框架或者标准都是新东西吗?其实每个人都知道并不是的,他们都是基于HTTP协议的,换句话说都是构建在jsp与servlet基础之上的,有很多人连这两个基础都没掌握好,就去学这些框架,这真是难以想象的。有了好的基础会让你学习新东西更快,也更扎实,走的也更远,否则你永远都是在跟着别人的脚步。

2. 还是基础。我们都知道Spring是非常优秀的框架,也是很多公司采用的技术选型。但是你是否真的了解Spring的核心IOC与AOP了吗?适当看些设计模式的书会让你受益匪浅。其实你只要掌握了java的动态代理对于AOP的理解就是自然而然的事情了。

3. 舍得投入。 有时间的话买些书看看,好书可以让你系统的学习一些技术,而不是一些支离破碎的技术点。

4. 抓紧时间。 将游戏的时间控制的少一些,把精力放在学习上吧,如果你想投身IT行业,做好不断学习的准备

5. 要有激情。 没有激情的人生是惨淡的人生。生活和学习要有激情,否则你体会不到淋漓尽致的快乐与苦痛。

6. 要有耐心。 没有耐心是无法成为一个优秀的程序员的。其实写程序的时候大部分时间是与错误、异常相伴的,不要幻想一下就能将程序写对,优秀的程序实际上是不断重构的过程。

7. 要能耐得住寂寞。 很多时候我们都是与计算机为伴的,如果你没有对程序的兴趣与热情,时间长了你会坐不住的。

8. 英语的重要性,如果你想进外企的话,那么英语是必须要过的一关(主要体现在听说上)。

9. 最后一点,坚持学习。活到老学到老是对程序开发人员最好的描述。
最后,散仙再唠叨几句的自己的心得体会,张龙老师说基础非常重要,散仙也是最近才领悟出来,以前一直都是处于,知其然不知其所以然的感觉,比如说某个技术或框架,Lucene也好,Hadoop也罢,只要是由Java写的东西,散仙愚见,只要你Java SE足够熟练,那么上手起来其实是非常容易的,关于Java EE方法,张龙老师说的,只要你Servlet和Jsp拿下了,其他的一些Struts,JSF,Spring MVC诸如此类的框架,学习起来,非常简单,这就很想散仙想说的另外一个例子,只要你JDBC真正的拿下了,其他的一些JPA,Hibernate,MyBatis,JDO,学习起来也是如此,对想学习全文检索的朋友们,散仙建议只要你把lucene拿下了,其他的一些像solr,ES,Compass,hibernate search,掌握起来,也是易如反掌。

如果你想做到在基于Java这个平台下的世界里,随心所欲,游刃有余,那么请你一定认真学好并真正掌握,那个经常被大部分人忽视而不起眼的Java SE的一系列技术。

#
修改linux系统默认启动级别


修改系统启动级别:修改系统默认启动到3 多用户状态

 


在Linux中有7种启动级别,默认是X-Window,像是Windows的窗口模式,而Linux的操作和配置一般我们都采用输入命令的方式来完成,像DOS操作系统一样,如何让Linux一启动就进入这种模式呢?
以管理员身份进入Linux,修改文件:/etc/inittab文件 找到&ldquo;id:5:initdefault:&rdquo;,其中的5就是X-Window,为默认运行级别,我们把5改为3即可。

一共有7种启动级别,分别为:
  •  0 - halt (Do NOT set initdefault to this)

  •  1 - Single user mode

  •  2 - Multiuser, without NFS (The same as 3, if you do not have networking)

  •  3 - Full multiuser mode

  •  4 - unused

  •  5 - X11

  •  6 - reboot (Do NOT set initdefault to this)

各个运行级的详细解释:

0 为停机,机器关闭。

1 为单用户模式,就像Win9x下的安全模式类似。

2 为多用户模式,但是没有NFS支持。

3 为完整的多用户模式,是标准的运行级。

4 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。

5 就是X11,进到X Window系统了。

6 为重启,运行init 6机器就会重启。

0和6一般不用;
运行startx可启动到级别5。

&nbsp;

小树技术博客 公元2014年2月15日 正式开通
经过5天的站内优化和域名绑定,现于2014-02-20正式发布。漫漫IT旅程,我,与你携手共进,Fight !

 

网站PC端域名:www.qiushurong.cn,取于笔者姓名“邱树荣”的拼音,支持手机端:网站同时支持手机端,自动识别移动设备,提供最优质的移动设备显示效果。
 
用心写每一篇文章,在各个方面封面,标签,代码,图片,分类,摘要都争取写好了再发布。
网站更新动态 - 网站历史
关于我 - 关于博客,关于小树

欢迎您的光临,有任何意见请回复!谢谢!
小树