2007年6月29日星期五
写给红颜知己
2007年6月26日星期二
(Cpp) 5矮人分果
// from http://www.cppblog.com/mythma/archive/2007/06/25/26923.html
/**题:
* 话说有五个小矮人上山摘野果,摘回来后平均分,可是怎么也分不下去.因为分不平均.
* 到了晚上,一个小矮人爬起来,从里面扔了一个, 刚好能平均分成五份.然后他把自己的那份藏起来,就睡觉去了.
* 第二个小矮个也爬了起来,也把果子扔了一个后刚好分成5份,他也把自己那份藏了起来.然后睡觉,
* 余下3 个小矮人都是这样做的,过程完全一样. 请问,最初这堆果子至少有多少个?
*/
/**解:
* 设共有total个野果;
* 第1个矮人拿走 (total-1)/5 个野果,此时剩下 (total - 1)/5*4 个野果;
* 第2个矮人拿走 ((total-1)/5*4 - 1)/5 个野果,剩下 ((total-1)/5*4 - 1)/5*4 个野果;
* 以此类推...
*/
#include <iostream>
using namespace std;
int getTotal(){
int total = 1; // 设初始野果总数1个
while (true){
int _t = total;
for (int i = 1; i <= 5; i++){
if ((_t - 1) % 5 == 0){ // 条件:扔掉1个能够5等分
_t = (_t - 1) / 5 * 4; // 第i个矮人拿走1/5后剩下的继续循环
if (i == 5){ // 如果5个矮人都拿到野果
return total;
}
}
}
total ++; // 不满足则野果总数加1
}
}
int main(){
cout << getTotal() << endl;
return 0;
}
输出:3121
2007年6月25日星期一
配置Editplus工具,用来编译和运行C++
这里假设Dev-C++安装目录为C:\Dev-Cpp。选择Editplus菜单"工具->配置用户工具...",在"工具->用户工具"分支下,选择一个未使用的群组与工具项目,可以更改群组名称为Cpp。
2007年6月21日星期四
(regedit) Windows文件关联
例如要将后缀为.ht的文件关联到记事本应用程序。
2007年6月11日星期一
(java) Overriding, Overloading
package org.xianyun.j2se.override;
public class Father {
public String fun(){
return "string";
}
}
package org.xianyun.j2se.override;从 I 处可以看出,系统判断覆写(Overriding)的凭据是方法名和传入参数。如果是覆写,则判断返回参数。
public class Children extends Father {
public void fun(){
// I : 父类返回String,子类返回void。Eclipse报错:返回类型与 Father.fun() 不兼容。
}
public void fun(String str){
// II : 这里是重写(overloading)。
}
public String fun(){ // III : Eclipse报错:存在重复的方法 fun()
return "";
}
}
II 处,正常,属于重写(Overloading),此时Children类多了void fun(String)方法。
III 处证明,判断是同一个方法的依据是方法名和传入参数,不参照返回参数。
注:代码在sun jdk下尝试结果相同。
借此再温习一下覆写和重写:
Overriding (覆写)
方法与父类方法同名同参同返回。,即同方法名,同传入参数,同返回参数类型。
Overloading (重载)
方法与父类方法同名,不同传入参数(个数或/和类型),同/不同返回参数类型。
另,在网络技术交流群小学一招,使桌面上图标文本的默认阴影消失:
我的电脑 -> 属性 -> 高级 -> 性能 -> 设置 选中"在桌面上为图标标签使用阴影"。
2007年6月10日星期日
脚本的力量 - 碎片整理与磁盘格式转换
利用命令shell的力量。Use the Power of Command Shells.学习一种文本操纵语言。Learn a Text Manipulation Language.不要使用手工流程。Don't Use Manual Procedures.from《程序员修炼之道》The Pragmatic Programmer
defrag.exe c: -f -v >"d:\defrag_report_c.txt"其中 c:,d:等表示你要整理的驱动盘符,详细说明可以Google搜索关键字" windows 碎片整理 命令行",并且在我的Google搜索历史中2007年6月6日的标星记录里都是不错的链接。
defrag.exe d: -f -v >"d:\defrag_report_d.txt"
...
CONVERT D: /FS:NTFS
2007年6月1日星期五
Resin:JDK版本问题
后来装了JavaEE SDK 1.5,发现Resin运行JSP程序时,总是出现"com/sun/tools/javac/Main (Unsupported major.minor version 49.0)"错误信息,甚至resin-doc(.xtp)都无法正常编译运行。上网一查,了解到是版本问题。
我遇到的问题与Resin无法启动类似,但是我用了不同的方法解决。
很简单,不需要任何重装(当然,注册Resin为Windows服务例外)。
1. 在path中设置好需要的JDK版本。
2. 进入命令行模式,cd到Resin安装目录。
3. 运行如下命令,将Resin Web Server从Windows服务中去除。
> httpd -remove
如果运行正常,继续。
(注:不同的resin版本,httpd可运行程序可能会在不同的子目录。我用的是resin3.0.17 for Windows)
4. 然后运行下面的命令再将Resin注册为Windows服务。
> httpd -install
5. ok。
至于原因,Resin官方网说得很清楚:
If you have moved JDK or Resin manually, you get the error from Resin
because the data Resin once get from the registry and the real location
of the executables doesn't match. Reinstall jdk and, then, reinstall
Resin. That will solve this problem.
事后我有研究了一下注册表,在 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Resin] 中有一个名为"ImagePath"的"可扩充字符串值",值中有一个参数"-java_home "D:\jdk1.5.0""就是设置Resin使用的JDK路径的。( 注意:可扩充字符串值导出的并不是字符串,而是十六进制数据,所以导入注册表时需要注意。)
六一儿童节
六一国际儿童节百度Logo。(哎,看来也别打百度Logo的主意)
Google的节日Logo好久都没动静了,这个国际性的节日也一样,似乎有点说不过去。
看了百度百科:六一儿童节才知道,六一国际儿童节并不是那么国际化,各国并不相同。不过谷歌中国难道不能本地化吗?