July 21, 2010
| 作者:白菜
|
分类:编程算法
下面这篇文章是从StackOverflow来的。LZ面试的时候遇到了一道面试题:“如果有三个Bool型变量,请写出一程序得知其中有2个以上变量的值是true”,于是LZ做了下面的这样的程序:
1 boolean atLeastTwo(boolean a, boolean b, boolean c) {
2 if ((a && b) || (b && c) || (a && c)) {
3 return true;
4 } else {
5 return false;
6 }
7 }
面试官接着问到,请对你的这个程序改进一下,但LZ不知道怎么改进,于是上StackOverflow上问了一下,下面是 StackOverflow上的众网友的回答。再往下看的时候,希望你自己能先想一想怎么改进。
有人说,如果你有下面这样的代码?
1 if (someExpression) {
2 return true;
3 } else {
4 return false;
5 }
你应该改成:
1 return someExpression;
所以,LZ的代码应该写成:
1 return ((a && b) || (b && c) || (a && c));
当然,解法不单单只有一种,还有下面的这些解决:
阅读剩余部分...
July 21, 2010
| 作者:白菜
|
分类:编程算法
下面是一些比较重要的算法,原文罗列了32个,但我觉得有很多是数论里的,和计算机的不相干,所以没有选取。下面的这些,有的我们经常在用,有的基本不用。有的很常见,有的很偏。不过了解一下也是好事。也欢迎你留下你觉得有意义的算法。(注:本篇文章并非翻译,其中的算法描述大部份摘自Wikipedia,因为维基百科描述的很专业了)
- A*搜寻算法
俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。该算法像Dijkstra算法一样,可以找到一条最短路径;也像BFS一样,进行启发式的搜索。
- Beam Search
束搜索(beam search) 方法是解决优化问题的一种启发式方法,它是在分枝定界方法基础上发展起来的,它使用启发式方法估计k 个最好的路径,仅从这k 个路径出发向下搜索,即每一层只有满意的结点会被保留,其它的结点则被永久抛弃,从而比分枝定界法能大大节省运行时间。束搜索于20 世纪70 年代中期首先被应用于人工智能领域,1976 年Lowerre 在其称为HARPY的语音识别系统中第一次使用了束搜索方法,他的目标是并行地搜索几个潜在的最优决策路径以减少回溯,并快速地获得一个解。
阅读剩余部分...
July 21, 2010
| 作者:白菜
|
分类:编程算法
对我来说,一个好的程序员的定义应该是追求无错的代码。 一些人也许认为好的程序员是那些懂得多门编程语言,懂得很牛技术的程序员,是的,这在某些情况下是对的。但归根到底,无论你用什么样的技术,什么样的语言,所有的程序被写出来,其功能都要尽可能地没有错误。 我们可以想像一下,如果一个能力普通的程序员有足够多的时间来做测试,那么,其也可以保证他的代码的质量。所以,要达到质量高的代码只需要有足够多的时间来做测试。
但是,很明显,所有的已经开发出来项目都是在不完美的条件下开发出来的,一般来说,几乎所有的项目都是在最大化程序员软件的开发速度。而且,很多情况下,我们似乎对深度测试和压力测试并不是很关心,所以,我们总是在精神上期望那些赶工出来的代码可以正常工作。 其实,开发速度和软件产品质量并不矛盾。。下面是是五个程序员可以在这种不完美的情况下做得更好的观点(它们都和语言和技术没什么关系,只不过是一种你的工作行为,能够和所有的行业相通),这五个观点也许可以让你成为这样的好程序员。
阅读剩余部分...
July 21, 2010
| 作者:白菜
|
分类:随便侃侃
问答
Q:你是怎么区分一个内向的程序员和一个外向的程序员的?
A:外向的程序员会看着你的鞋和你说话时。
Q:为什么程序员不能区分万圣节和圣诞节?
A:这是因为Oct 31 == Dec 25!(八进制的31==十进制的25)
刹车失灵
有一个物理学家,工程师和一个程序员驾驶着一辆汽车行驶在阿尔卑斯山脉上,在下山的时候,忽然,汽车的刹车失灵了,汽车无法控制地向下冲去,眼看前面就是一个悬崖峭壁,但是很幸运的是在这个悬崖的前面有一些小树让他们的汽车停了下来,而没有掉下山去。三个惊魂未定地从车里爬了出来。
物理学家说,“我觉得我们应该建立一个模型来模拟在下山过程中刹车片在高温情况下失灵的情形”。
工程师说,“我在车的后备厢来有个扳手,要不我们把车拆开看看到底是什么原因”。
程序员说,“为什么我们不找个相同的车再来一次以重现这个问题呢?”
关于编程语言
如果C++是一把锤子的话,那么编程就会变成大手指头。
如果你找了一百万只猴子来敲打一百万个键盘,那么会有一只猴子会敲出一段Java程序,而其余的只会敲出Perl程序。
一阵急促的敲门声,“谁啊!”,过了5分钟,门外传来“Java”。
如果说Java很不错是因为它可以运行在所有的操作系统上,那么就可以月工交很不错,因为其可以使用于所有的性别上。
阅读剩余部分...
July 21, 2010
| 作者:白菜
|
分类:网页前端
本文是在tutsplus网站上看到的,觉得很有意思,特与各位分享。
这里的区分浏览器主要是利用了css hack,可能有人已经知道了IE6和IE7的方法,但是今天我们加入一种区分IE8的方法。
IE8 和 IE8以下版本
区分它们的关键是在样式后面添加“\9”。
1.body {
2. color: red; /* all browsers, of course */
3. color : green\9; /* IE8 and below */
4.} 需要注意的是必须使用“\9”,我尝试过使用“\8”,都不能起作用,必须是“\9”。IE7 和 IE7 以下版本
区分它们的关键是在样式前面添加“*”符号,如下:
1.body {
2. color: red; /* all browsers, of course */
3. color : green\9; /* IE8 and below */
4. *color : yellow; /* IE7 and below */
5.}
IE6
很多设计师可能已经熟悉了样式前面使用下划线的方式来区分IE6,它不比“*”符号,因为它仅仅用来区分IE6的。
1.body {
2. color: red; /* all browsers, of course */
3. color : green\9; /* IE8 and below */
4. *color : yellow; /* IE7 and below */
5. _color : orange; /* IE6 */
6.} 慎用CSS Hacks
我们不主张在任何场合都使用css hacks,而是推荐使用条件注释。但是了解css hacks也不是一点用都没有,至少能够给别人秀一下~~
慎用css hacks,因为它并不会向前兼容,也许最新的浏览器不买帐,那你的页面就要遭殃了。如果你只是为了改变一两个属性来适用兼容IE6,如果改动比较大,还是建议使用条件注释。
July 21, 2010
| 作者:白菜
|
分类:编程算法,C语言
这几天,本站推出了几篇关于C语言的很多文章如下所示:
我们可以看到很多C语言相关的一些东西。比如《语言的歧义》主要告诉了大家C语言中你意想不到的错误以及一些歧义上的东西。而《谁说C语言很简单》则通过一些看似你从来不可能写出的代码来告诉大家C语言并不是一件容易事情。《6个变态的hello world》和《如何弄乱C的源代码》则以一种极端的方式告诉大家,不要以为咱们自己写不出混乱的代码,每个程序员其实都有把代码搞得一团乱的潜质。通过这些文章,相信你对编程或是你觉得很简单的C语言有了一些了解。是的,很不容易吧,以前是不是低估了编程和C语言?今天是否我们又在低估C++和Java呢?
本篇文章《C语言的谜题》展示了14个C语言的迷题以及答案,代码应该是足够清楚的,而且我也相信有相当的一些例子可能是我们日常工作可能会见得到的。通过这些迷题,希望你能更了解C语言。如果你不看答案,不知道是否有把握回答各个谜题?让我们来试试。
阅读剩余部分...
July 21, 2010
| 作者:白菜
|
分类:php
1、用file_get_contents或者fopen、file、readfile等函数读取url的时候,会创建一个名为$http_response_header的变量来保存http响应的报头,使用fopen等函数打开的数据流信息可以用 stream_get_meta_data来获取。
2、php5中新增的参数context使这些函数更加灵活,通过它我们可以定制http请求,甚至post数据。
示例代码1:
<?php
$html = file_get_contents('http://www.example.com/');
print_r($http_response_header);
$fp = fopen('http://www.example.com/', 'r');
print_r(stream_get_meta_data($fp));
fclose($fp);
?>
示例代码2:
<?php
$data = array ('foo' => 'bar');
$data = http_build_query($data);
$opts = array (
'method' => 'POST',
'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .
"Content-Length: " . strlen($data) . "\r\n",
'content' => $data
),
);
$context = stream_context_create($opts);
$html = file_get_contents('http://www.example.com', false, $context);
echo $html;
?>
http://cn.php.net/manual/zh/function.file-get-contents.php
http://cn.php.net/manual/en/function.stream-context-create.php
http://cn.php.net/manual/zh/wrappers.http.php
July 21, 2010
| 作者:白菜
|
分类:php
重点推荐下,顺便我自己也做个整理。
sys_getloadavg()
这个函数返回当前系统的负载均值信息(当然 Windows 下不适用),详细文档可以翻阅 PHP 的相关文档。文档中有段示例代码,基本上也就能看出它的用途了。
阅读剩余部分...