在C++程序中,有下面五”类”内存:

  • 在栈上创建。在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,一般使用寄存器来存取,效率很高,但是分配的内存容量有限。
  • 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete来释放内存。动态内存的生存期由程序员自己决定,使用非常灵活。
  • 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。
  • 文字常量分配在文字常量区,程序结束后由系统释放。
  • 程序代码区。
Tags: ,.

使用优化选项编译:

1
$ g++ test.cpp -o test -O2

此时的运行时间:

real	0m0.008s
user	0m0.000s
sys	0m0.004s

so amazing!
g++有四个级别的优化选项,分别对应于 -O1, -O2, -O3, -O4.

Tags: ,.

比较下面两段代码:

1
2
3
4
for(int i = 0; i < n; i++)
{
     //~ do something;
}
1
2
3
4
for(int i = 0; i < n; ++i)
{
    //~ the same thing;
}
Tags: .
1
2
3
4
5
6
7
8
9
10
11
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <iostream>
#include <limits>
#include <string>
#include <sstream>
 
 
#include "matrix.hpp"
#include "vector.hpp"
Tags: ,.
1
2
3
4
5
6
//! 作者:Hou Fenglin
//! 程序名:euler.cpp
//! euler预测-校正法解微分方程
#include <iostream>
#include <cmath>
#include <iomanip>
Tags: .

与其说计划,倒不如说是给自己制定一个目标和任务。
大约三周的生产实现,料定不会有什么新花样,看透了“培养计划”里面的这些课程,从来都不会有实质性的东西。sucks!但是无论如何这都是必须要完成的任务,积极面对吧。无聊的“生产实习”:I love you game!
三周,一定要把操作系统过一遍,一定能弄清楚很多以前觉得模模糊糊、似懂非懂的概念,第一遍能有一个整体的把握即可。昨天在当当定了一本《深入理解Linux内核》,经典制作,学完操作系统后再从这本书中挑出几个模块来学习,肯定受益良多!线性代数,接下来的一个月内也必须得吃透了,有很多东西确实是忘的一干二净了。

Tags: .

windows中的记事本,可恶,用它写的程序、文本,用其他编辑器(Editplus,vim)打开后出现很奇怪的换行。我用indent对一个C++文件进行格式调整,无论如何都调整不到最佳:
用vim打开才发现,里面有很多的”^M”,不知道这是个啥玩意儿。一顿搜索后:
windows中的换行是”\r\n”,而不是”\n”,有很多解决办法,但是我用dos2unix却不行(这个命令我用过很多次,但从来都不见效,囧),最终还是这个命令见效了:在vim中,在命令模式下用替换命令,将”\r”去掉:

1
$ :%s/\r//g
Tags: ,.

  事情是这样子的,理查德·范曼同学在微软找工作,下面是面试官同他的对话:

  面试官:现在我们要问一个问题,看看你的创造性思维能力。不要想得太多,运用日常生活中的常识,描述一下你的想法。这个问题是,下水道的井盖为什么是圆的?
  范曼:它们并不都是圆的,有些是方的,的确有些圆井盖,但我也看过方的,长方的。
  面试官:不过我们只考虑圆形的井盖,他们为什么是圆的?
  范曼:如果我们只考虑圆的,那么它们自然是圆的。
  面试官:我的意思是,为什么会存在圆的井盖?把井盖设计成圆形的有什么特殊的意义吗?
  范曼:是有特殊意义,当需要覆盖的洞是圆形时,通常盖子也是圆的。用一个圆形的盖子盖一个圆形的洞,这是最简单的办法。

Tags: ,.

find
这里只介绍两个选项:-name 和 -exec。
实例:

1
$ find . -name "*.html" -exec rm {} \;

查找当前目录下所有的.html(-name指定)文件,并删除(-exec指定)这些文件,其中{}代表find的查找结果(集),“\;”是语法要求。
sed
sed是一个用来处理文本的相当强大的工具:

1
$ sed -i "s/hte/the/g" test.html

-i 表示在源文件上面直接修改,”s/hte/the/g”表示将源文件中所有的hte替换成the,其中g表示全局。
find+sed

1
$ find . -name "*.html" -exec sed {} -i "s/hte/the/g"\;

这一行就是find和sed结合起来使用的了。
最后,需要注意的是,在替换选项”s/hte/the/g”中一些特殊字符必须用”\”来转义,比如:/\!”等。

Tags: .

∞ infinity 无限大号
∝ varies as 与…成比例
√ (square) root 平方根
∵ since; because 因为
∴ hence 所以
∷ equals, as (proportion) 等于,成比例
∠ angle 角
⌒ semicircle 半圆
⊙ circle 圆
○ circumference 圆周
π pi 圆周率
△ triangle 三角形
⊥ perpendicular to 垂直于

Tags: .