2016年4月25日星期一

回行命令\r

#include <stdio.h>
#include <windows.h>

void main() {

for (int i = 0; i <10; i++) {
printf("operating: %d%%\r", i);
Sleep(100);
}

}


\r的作用为回行覆写,可以模拟类似加载率的效果。

要输出%号要利用%%的写法转义。

Sleep(milisecond) 函数可以让代码块休眠,此函数包含在windows.h头文件中。

除法小数点后不能正常显示的问题

例如:

#include <stdio.h>

void main() {
float num = 17 / 13;
printf("The result is %.2f \n", num);
}

这段程序输出的结果为1.00.

导致这种情况出现的原因是除法表达式17/13在编译器中默认为两个integer相除,所以会自动抛去小数点后面的数字。

应该进行如下修改:

#include <stdio.h>

void main() {
float num = 17.0 / 13.0;
printf("The result is %.2f \n", num);
}

2016年4月24日星期日

servlet的encodeURL()方法

如果用户浏览器禁用了cookie,会使session也无法使用。
因为服务器是以接受从用户浏览器发送过来的cookie中的jsessionid属性来获取session的。
为了在这种情况下也能跟踪用户状态,可以考虑使用重写URL地址,将sessionid一并带入request。

java专门提供了encodeURL(String url)方法来实现。

encodeURL(String url)方法一经调用,会首先检测:

① servlet是否有request.getSession()。如果没有,则直接返回url。
② 用户浏览器是否禁用了cookie。如果没有,则直接返回url。
③ 如果以上条件都不满足,则返回加上jsessionid的url。


for循环内的变量

在for循环内定义的局部变量是不能在其他代码块直接访问的。
原因是for循环结束时,其内部的变量会失效。
如果要访问循环内的局部变量,需要先将之定义为全局变量。

例如:

int num = 0;

for(int i=0; i<10; i++) {

  num++;

}

System.out.println(num);