残剑

Stop walking today and you'll have to run tomorrow!

我们为什么败了

| Comments

当我问出“为之奈何?”时,我已经作出了决定——宣布我们的事业失败。就在昨天晚上正式结束了。原本没有死心,想看看7月26日的状况,可是没有人“买单”了,问题已经很明显,根本没有必要强撑着了。

推荐一本好书《货币战争》

| Comments

如果你酷爱金融或者不想让自己在未来的金融大战中灭亡的话,看一下这本书是绝对没有错的。在本学期我所看过的书中,《货币战争》我认为是很不错的。世纪大战的可能性现在几乎很小,可是有另外的一种战场,那就是金融大战,它的毁坏能力超过了战争。

中国的股市需要你们

| Comments

如果你认为炒股是不对的话,那将是一个极大的错误。你们肯定是会反对我的,理由很简单:炒股会影响到学习,我们没有资金,炒股需要学习相关的很多知识…但我认为你们的理由只对了一部分,不是全部。

静悄悄的危机正在侵袭中国

| Comments

作为一个发展迅速的大国,一直是美国打击的对象,它不容得任何的新势力动摇它的霸权地位。80年代的广场协议迫使日本货币升值,还有97年的东南亚金融危机,无不跟美国有关系。

扩大内需对当前的中国非常有必要

| Comments

中国当前的消费模式:赚钱,存钱,有了足够的钱之后就是买房,买了房后口袋里的钱几乎就剩下不多了,接下来的问题就要考虑养老问题了,这时候已经到了一定的年龄阶段,过去的激情已经不再存在,一生所赚的钱几乎大部分都花在了这两个方面,其它的消费就是在生活必需品上了,剩下的消费少得可怜!

Log10的实现

| Comments

在项目中要使用到log10计算,可所用系统的标准库里并没有移植该功能,需要自己实现。请问,采用什么算法实现该功能?

在网上找了一个例子,但不确定能否在嵌入式的一些平台使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
double my_log10(double x)
{
    register double ret;

       __asm__(
  "fldlg2\n\t" 
  "fxch\n\t" 
  "fyl2x"
  :"=t"(ret)
          :"0"(x)
      );
   return ret;
}

kfifo.c中in和out的溢出问题

| Comments

先上内核循环缓冲结构体的定义:

1
2
3
4
5
6
7
struct kfifo {
    unsigned char *buffer;        /* the buffer holding the data */
    unsigned int size;        /* the size of the allocated buffer */
    unsigned int in;        /* data is added at offset (in % size) */
    unsigned int out;        /* data is extracted from off. (out % size) */
    spinlock_t *lock;        /* protects concurrent modifications */
};

如果对“Linux内核中的循环缓冲区”不是很了解的话,可以先参考 这里 。内核中有关kfifo.c和kfifo.h两个文件的源码以及该问题的具体情况,可以查看 这里

Linux管道的实现机制

| Comments

在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为:

  • 限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K字节,使得它的大小不像文件那样不加检验地增长。使用单个固定缓冲区也会带来问题,比如在写管道时可能变满,当这种情况发生时,随后对管道的write()调用将默认地被阻塞,等待某些数据被读取,以便腾出足够的空间供write()调用写。

  • 读取进程也可能工作得比写进程快。当所有当前进程数据已被读取时,管道变空。当这种情况发生时,一个随后的read()调用将默认地被阻塞,等待某些数据被写入,这解决了read()调用返回文件结束的问题。

注意:从管道读数据是一次性操作,数据一旦被读,它就从管道中被抛弃,释放空间以便写更多的数据。