拳不离手、曲不离口 - Speak with your code, my friend, not your word.

jsp是如何处理它的元素的.

During the translation phase each type of data in a JSP page is treated differently. Static data is
transformed into code that will emit the data into the response stream. JSP elements are treated
as follows:
■ Directives are used to control how the web container translates and executes the JSP page.
■ Scripting elements are inserted into the JSP page’s servlet class. See Chapter 9, “Scripting in
JSP Pages,” for details.
■ Expression language expressions are passed as parameters to calls to the JSP expression
evaluator.
■ jsp:[set|get]Property elements are converted into method calls to JavaBeans
components.
■ jsp:[include|forward]elements are converted into invocations of the Java Servlet API.
■ The jsp:plugin element is converted into browser-specific markup for activating an applet.
■ Custom tags are converted into calls to the tag handler that implements the custom tag.

[PHP]如何给一个变量赋长字符串

 

$summary = <<< summary
In the latest installment of the ongoing Developer.com PHP series,
I discuss the many improvements and additions to
<a href="http://www.php.net">PHP 5's</a> object-oriented architecture.
summary;

 

 

[PHP]如何去除字符串中的whitespace.

首先是whitespace的定义:任何在印刷术当中显示为空白的字符。包括以下:

Unicode记法

  • U+0009–U+000D (control characters, containing Tab, CR and LF)
  • U+0020 SPACE
  • U+0085 NEL (control character next line)
  • U+00A0 NBSP (NO-BREAK SPACE)
  • U+1680 OGHAM SPACE MARK
  • U+180E MONGOLIAN VOWEL SEPARATOR
  • U+2000–U+200A (different sorts of spaces)
  • U+2028 LS (LINE SEPARATOR)
  • U+2029 PS (PARAGRAPH SEPARATOR)
  • U+202F NNBSP (NARROW NO-BREAK SPACE)
  • U+205F MMSP (MEDIUM MATHEMATICAL SPACE)
  • U+3000 IDEOGRAPHIC SPACE

在php种,去除的方法主要有三种,这三种适用情况也不同。

1, trimStrip whitespace (or other characters) from the beginning and end of a string

trim()这个函数只会去除字符串开头结尾部分的部分whitespace,如下:

  • " " (ASCII 32 (0x20)), an ordinary space.
  • "\t" (ASCII 9 (0x09)), a tab.
  • "\n" (ASCII 10 (0x0A)), a new line (line feed).
  • "\r" (ASCII 13 (0x0D)), a carriage return.
  • "\0" (ASCII 0 (0x00)), the NUL-byte.
  • "\x0B" (ASCII 11 (0x0B)), a vertical tab.

但不会去除中间的whitespace,这一定要注意。

2, preg_replacePerform a regular expression search and replace

用正则表达式来去除whitespace,这个就可以比较彻底了,去除一个字符串中所有的whitespace。具体代码如下:

 

<?php
$str = 'foo      o';
$str = preg_replace('/\s/', '', $str);
// This will be 'fooo' now
echo $str;
?>

 3, str_replace(' ',”,$string);

 适合去除space,而非whitespace

Coding Style...

以下是我使用的coding style,如果觉得好就借鉴一下吧.

面向过程语言:主要指c或者汇编,用gnu coding style.www.gnu.org/prep/standards/standards.html

面向对象语言:主要指c++或者obj-c,用google coding style.code.google.com/p/google-styleguide/

[玩转kernel系列]中断

ARM里的中断通常是指IRQFIQ,以IRQ来讲,ARMIRQ的处理过程大概是这样:  

外部设备遇到某一事件发出一个IRQ中断给中断控制器,中断控制器对这个IRQ进行硬件上的处理,把一些信息记在中断控制器的寄存器上,然后中断控制器通过IRQ中断线给ARM发一个信号。ARM收到信号,开始进行以下处理:  

1)将当前状态的cpsr拷贝到IRQ状态的spsr中。  

2)将pc拷贝到IRQ状态的lr中。  

3)屏蔽cpsr中的IRQ位和FIQ位。  

4)跳转入中断向量表的IRQ表项执行(改变pc的值)。

 以上都是ARM cpu做的事,不需要程序员插手,程序员编的代码需要接在后面处理。

 程序员需要做的是接下来的步骤:

(5) 备份上下文。

e.g.:

       sub         lr, lr, #4

       stmfd      sp!, {r0 - r12, lr}

(6)跳入handler。

 e.g.:

        bl IRQ_Handler

 (7):恢复上下文。

 e.g.:

        ldmfd      sp!, {r0 - r12, sp}^

 就这么简单!

 来看kernel对应的代码

 

继续阅读

[玩转kernel系列]从今天起,我开一个《玩转kernel》系列,同时期待大家的讨论。

其实我也是刚接触kernel的,在学习过程中的一些心得体会,我想以这种形式写出来,既是对自己学习的一种总结,也为了回馈网络上其他网友对我在学习中的帮助,大家共同学习,共同进步。

介绍一下《玩转kernel》这个系列的样式。所涉及到的硬件平台是ARM。我会将kernel分成若干块来讲,kernel代码量很大,但大体可分为进程管理、存储管理、文件系统、设备驱动以及网络这几个大块,另外还有其他一些东东可以拿出来单独看,比如中断、系统调用等。《玩转kernel》会一块一块来讲,但不会一下子全讲,因为我的能力还有限,另外这不是一个科学的学习方法。我很崇拜c++ primer里的一句话,那就是分而治之、逐步求精。所以这个系列尽量按照这个原则讲。另外基本概念不讲,所以你可能需要一点基础才能看懂,这些基础可以去看大学的课本,我主要还是讲kernel的具体代码实现。

每个专题只有一个总文档(level 1),其他都是不同level的分文档,在总文档里我会把最重要的,最有代表性的代码拿出来讲,而不会讲细节以及运用到的技巧。我的目的,通过总文档,大家可以一览kernel中某个机制的框架,以及代码实现。总文档是一个专题的入口,然后细节以及运用到的技巧会以超链接的方式链到各个分文档中,并且在分文档中也会用到总分的概念。这样的一个专题,就很像一个树,这个树由于本人能力以及时间有限,不会一下子写完,可能会长期处于一个待续的状态。有兴趣的朋友可以经常来看看。好,关于这个系列的具体情况,还要看具体的文章,简单的介绍就讲到这里。