Profil de Stephen喜欢天空的蓝色PhotosBlogListesPlus Outils Aide

Stephen HUO

Occupation
Lieu
La liste est vide.
Photo 1 sur 7
Autres albums (1)

喜欢天空的蓝色

希望
28 octobre

多页面共享子窗口

这是来自论坛上的一个问题,问题要求多个不同的页面,在打开子页面时,要共用同一个窗口,并且子窗口不能刷新。这跟google音乐里面的添加音乐,然后播放的效果类似。因为在播放音乐的时候,如果子页面刷新了,那么音乐必须从头来播放,自然效果不尽人意。类似的情况也会出现在视频的网站上。
下面,我们使用简单的Javascript代码来实现这一功能。本代码在目前所有主流浏览器里测试通过。
下面,先创建一个测试主页面,Test1.htm
XML/XHTML 代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title></title>
  <script type="text/javascript">
    function winOpen() {
      window.open("winA.htm?music=From_Test1_" + (new Date()).toLocaleString(), "mxh", "width=600,height=300")
    }
  </script>
</head>
<body>
  <input type="button" onclick="winOpen()" value="打开子窗口" />
</body>
</html>
接下来,创建WinA.htm
XML/XHTML 代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Window A</title>
</head>
<body>
<h1>这里是Window A</h1>
<script type="text/javascript">
  if (window.location.href == window.top.location.href) {
    self.top.location.href = "winB.htm" + window.location.search
  }
  else {
    window.parent.frames["mxh2"].setMusic(window.location.search.substr(1))
  }
</script>
</body>
</html>
接下来是WinB.htm
XML/XHTML 代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Window B</title>
</head>
<body>
<iframe name="mxh2" src="winC.htm" style="width:600px;height:400px;" frameborder="0"></iframe>
<iframe name="mxh" src="winD.htm" style='display:none'></iframe>
<script type="text/javascript">
  alert("页面刷新检测器")
</script>
</body>
</html>
WinC.htm
XML/XHTML 代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Window C</title>
</head>
<body>
<div id="showContent">初始化的内容</div>
    <script type="text/javascript">
      function setMusic(str) {
        document.getElementById("showContent").innerHTML += "<br/>" + str
      }
    </script>
</body>
</html>
WinD.htm
XML/XHTML 代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Window D</title>
</head>
<body>
  <script type="text/javascript">
    window.name = "mxh";
    window.top.name = "";
    window.top.focus();
  </script>
</body>
</html>
然后可以创建多个测试用的页面Test2.htm
XML/XHTML 代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title></title>
  <script type="text/javascript">
    function winOpen() {
      window.open("winA.htm?music=From_Test2_" + (new Date()).toLocaleString(), "mxh", "width=600,height=300")
    }
  </script>
</head>
<body>
  <input type="button" onclick="winOpen()" value="打开子窗口" />
</body>
</html>
在不同的窗口里,打开测试页面,则,都会将内容显示在Window B所在的主体窗口内。并且页面是不刷新的。其原理就是将新开的页面在隐藏的窗口里打开,然后取出来传递的参数,使用javascript来进行数据的传递。其中窗口WinD.htm中的脚本不能少,而且是很关键的地方。
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/net_lover/archive/2009/10/27/4735224.aspx
10 septembre

Win32应用程序中进程间通信方法分析与比较

[转载]Win32应用程序中进程间通信方法分析与比较
http://www.cnblogs.com/erwin/archive/2007/04/16/715084.html

Win32应用程序中进程间通信方法分析与比较

来源:Intetnet

 

1 进程与进程通信

 

  进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API)提供了大量支持应用程序间数据共享和交换的机制,这些机制行使的活动称为进程间通信(InterProcess Communication, IPC),进程通信就是指不同进程间进行数据共享和数据交换。
  正因为使用Win32 API进行进程通信方式有多种,如何选择恰当的通信方式就成为应用开发中的一个重要问题,下面本文将对Win32中进程通信的几种方法加以分析和比较。

 

2 进程通信方法

2.1 文件映射
  文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O操作,只需简单的指针操作就可读取和修改文件的内容。
  Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。通过使用这些指针,不同进程就可以读或修改文件的内容,实现了对文件中数据的共享。
  应用程序有三种方法来使多个进程共享一个文件映射对象。
  (1)继承:第一个进程建立文件映射对象,它的子进程继承该对象的句柄。
  (2)命名文件映射:第一个进程在建立文件映射对象时可以给该对象指定一个名字(可与文件名不同)。第二个进程可通过这个名字打开此文件映射对象。另外,第一个进程也可以通过一些其它IPC机制(有名管道、邮件槽等)把名字传给第二个进程。
  (3)句柄复制:第一个进程建立文件映射对象,然后通过其它IPC机制(有名管道、邮件槽等)把对象句柄传递给第二个进程。第二个进程复制该句柄就取得对该文件映射对象的访问权限。
  文件映射是在多个进程间共享数据的非常有效方法,有较好的安全性。但文件映射只能用于本地机器的进程之间,不能用于网络中,而开发者还必须控制进程间的同步。
2.2 共享内存
  Win32 API中共享内存(Shared Memory)实际就是文件映射的一种特殊情况。进程在创建文件映射对象时用0xFFFFFFFF来代替文件句柄(HANDLE),就表示了对应的文件映射对象是从操作系统页面文件访问内存,其它进程打开该文件映射对象就可以访问该内存块。由于共享内存是用文件映射实现的,所以它也有较好的安全性,也只能运行于同一计算机上的进程之间。
2.3 匿名管道
  管道(Pipe)是一种具有两个端点的通信通道:有一端句柄的进程可以和有另一端句柄的进程通信。管道可以是单向-一端是只读的,另一端点是只写的;也可以是双向的一管道的两端点既可读也可写。
  匿名管道(Anonymous Pipe)是在父进程和子进程之间,或同一父进程的两个子进程之间传输数据的无名字的单向管道。通常由父进程创建管道,然后由要通信的子进程继承通道的读端点句柄或写端点句柄,然后实现通信。父进程还可以建立两个或更多个继承匿名管道读和写句柄的子进程。这些子进程可以使用管道直接通信,不需要通过父进程。
  匿名管道是单机上实现子进程标准I/O重定向的有效方法,它不能在网上使用,也不能用于两个不相关的进程之间。
2.4 命名管道
  命名管道(Named Pipe)是服务器进程和一个或多个客户进程之间通信的单向或双向管道。不同于匿名管道的是命名管道可以在不相关的进程之间和不同计算机之间使用,服务器建立命名管道时给它指定一个名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信。
  命名管道提供了相对简单的编程接口,使通过网络传输数据并不比同一计算机上两进程之间通信更困难,不过如果要同时和多个进程通信它就力不从心了。
2.5 邮件槽
  邮件槽(Mailslots)提供进程间单向通信能力,任何进程都能建立邮件槽成为邮件槽服务器。其它进程,称为邮件槽客户,可以通过邮件槽的名字给邮件槽服务器进程发送消息。进来的消息一直放在邮件槽中,直到服务器进程读取它为止。一个进程既可以是邮件槽服务器也可以是邮件槽客户,因此可建立多个邮件槽实现进程间的双向通信。
  通过邮件槽可以给本地计算机上的邮件槽、其它计算机上的邮件槽或指定网络区域中所有计算机上有同样名字的邮件槽发送消息。广播通信的消息长度不能超过400字节,非广播消息的长度则受邮件槽服务器指定的最大消息长度的限制。
  邮件槽与命名管道相似,不过它传输数据是通过不可靠的数据报(如TCP/IP协议中的UDP包)完成的,一旦网络发生错误则无法保证消息正确地接收,而命名管道传输数据则是建立在可靠连接基础上的。不过邮件槽有简化的编程接口和给指定网络区域内的所有计算机广播消息的能力,所以邮件槽不失为应用程序发送和接收消息的另一种选择。
2.6 剪贴板
  剪贴板(Clipped Board)实质是Win32 API中一组用来传输数据的函数和消息,为Windows应用程序之间进行数据共享提供了一个中介,Windows已建立的剪切(复制)-粘贴的机制为不同应用程序之间共享不同格式数据提供了一条捷径。当用户在应用程序中执行剪切或复制操作时,应用程序把选取的数据用一种或多种格式放在剪贴板上。然后任何其它应用程序都可以从剪贴板上拾取数据,从给定格式中选择适合自己的格式。
  剪贴板是一个非常松散的交换媒介,可以支持任何数据格式,每一格式由一无符号整数标识,对标准(预定义)剪贴板格式,该值是Win32 API定义的常量;对非标准格式可以使用Register Clipboard Format函数注册为新的剪贴板格式。利用剪贴板进行交换的数据只需在数据格式上一致或都可以转化为某种格式就行。但剪贴板只能在基于Windows的程序中使用,不能在网络上使用。
2.7 动态数据交换
  动态数据交换(DDE)是使用共享内存在应用程序之间进行数据交换的一种进程间通信形式。应用程序可以使用DDE进行一次性数据传输,也可以当出现新数据时,通过发送更新值在应用程序间动态交换数据。
  DDE和剪贴板一样既支持标准数据格式(如文本、位图等),又可以支持自己定义的数据格式。但它们的数据传输机制却不同,一个明显区别是剪贴板操作几乎总是用作对用户指定操作的一次性应答-如从菜单中选择Paste命令。尽管DDE也可以由用户启动,但它继续发挥作用一般不必用户进一步干预。DDE有三种数据交换方式:
  (1) 冷链:数据交换是一次性数据传输,与剪贴板相同。
  (2) 温链:当数据交换时服务器通知客户,然后客户必须请求新的数据。
  (3) 热链:当数据交换时服务器自动给客户发送数据。
  DDE交换可以发生在单机或网络中不同计算机的应用程序之间。开发者还可以定义定制的DDE数据格式进行应用程序之间特别目的IPC,它们有更紧密耦合的通信要求。大多数基于Windows的应用程序都支持DDE。
2.8 对象连接与嵌入
  应用程序利用对象连接与嵌入(OLE)技术管理复合文档(由多种数据格式组成的文档),OLE提供使某应用程序更容易调用其它应用程序进行数据编辑的服务。例如,OLE支持的字处理器可以嵌套电子表格,当用户要编辑电子表格时OLE库可自动启动电子表格编辑器。当用户退出电子表格编辑器时,该表格已在原始字处理器文档中得到更新。在这里电子表格编辑器变成了字处理器的扩展,而如果使用DDE,用户要显式地启动电子表格编辑器。
  同DDE技术相同,大多数基于Windows的应用程序都支持OLE技术。
2.9 动态连接库
  Win32动态连接库(DLL)中的全局数据可以被调用DLL的所有进程共享,这就又给进程间通信开辟了一条新的途径,当然访问时要注意同步问题。
  虽然可以通过DLL进行进程间数据共享,但从数据安全的角度考虑,我们并不提倡这种方法,使用带有访问权限控制的共享内存的方法更好一些。
2.10 远程过程调用
  Win32 API提供的远程过程调用(RPC)使应用程序可以使用远程调用函数,这使在网络上用RPC进行进程通信就像函数调用那样简单。RPC既可以在单机不同进程间使用也可以在网络中使用。
  由于Win32 API提供的RPC服从OSF-DCE(Open Software Foundation Distributed Computing Environment)标准。所以通过Win32 API编写的RPC应用程序能与其它操作系统上支持DEC的RPC应用程序通信。使用RPC开发者可以建立高性能、紧密耦合的分布式应用程序。
2.11 NetBios函数
  Win32 API提供NetBios函数用于处理低级网络控制,这主要是为IBM NetBios系统编写与Windows的接口。除非那些有特殊低级网络功能要求的应用程序,其它应用程序最好不要使用NetBios函数来进行进程间通信。
2.12 Sockets
  Windows Sockets规范是以U.C.Berkeley大学BSD UNIX中流行的Socket接口为范例定义的一套Windows下的网络编程接口。除了Berkeley Socket原有的库函数以外,还扩展了一组针对Windows的函数,使程序员可以充分利用Windows的消息机制进行编程。
  现在通过Sockets实现进程通信的网络应用越来越多,这主要的原因是Sockets的跨平台性要比其它IPC机制好得多,另外WinSock 2.0不仅支持TCP/IP协议,而且还支持其它协议(如IPX)。Sockets的唯一缺点是它支持的是底层通信操作,这使得在单机的进程间进行简单数据传递不太方便,这时使用下面将介绍的WM_COPYDATA消息将更合适些。
2.13 WM_COPYDATA消息
  WM_COPYDATA是一种非常强大却鲜为人知的消息。当一个应用向另一个应用传送数据时,发送方只需使用调用SendMessage函数,参数是目的窗口的句柄、传递数据的起始地址、WM_COPYDATA消息。接收方只需像处理其它消息那样处理WM_COPY DATA消息,这样收发双方就实现了数据共享。
  WM_COPYDATA是一种非常简单的方法,它在底层实际上是通过文件映射来实现的。它的缺点是灵活性不高,并且它只能用于Windows平台的单机环境下。

 

3 结束语

  Win32 API为应用程序实现进程间通信提供了如此多种选择方案,那么开发者如何进行选择呢?通常在决定使用哪种IPC方法之前应考虑下一些问题,如应用程序是在网络环境下还是在单机环境下工作等。

17 décembre

重载insertAdjacentElement (兼容ie、firefox)

if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement)
{
 HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)
 {
  switch (where){
  case 'beforeBegin':
   this.parentNode.insertBefore(parsedNode,this)
   break;
  case 'afterBegin':
   this.insertBefore(parsedNode,this.firstChild);
   break;
  case 'beforeEnd':
   this.appendChild(parsedNode);
   break;
  case 'afterEnd':
   if (this.nextSibling)
   {
    this.parentNode.insertBefore(parsedNode,this.nextSibling);
   }
   else
   {
    this.parentNode.appendChild(parsedNode);
   }
   break;
  }
 }

 HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr)
 {
  var r = this.ownerDocument.createRange();
  r.setStartBefore(this);
  var parsedHTML = r.createContextualFragment(htmlStr);
  this.insertAdjacentElement(where,parsedHTML)
 }


 HTMLElement.prototype.insertAdjacentText = function(where,txtStr)
 {
  var parsedText = document.createTextNode(txtStr)
  this.insertAdjacentElement(where,parsedText)
 }
}

吃水不忘挖井人!
16 septembre

让颈椎受到保护

专家简介:

杨宏建,北京市健美协会副主席,十运会举重比赛裁判,美国纽约州立大学科特兰学院体育系硕士,北京国际体育交流中心职员。1996年,代表中国参加了亚特兰大奥运会火炬接力。

上班族最苦恼的莫过于日益紧张的颈椎了。尤其到了下午,看看周围,你经常会发现自己的同事在按摩颈椎放松。事实上,颈椎既是人体非常脆弱的部位,而它周围的肌肉又非常难练。北京市健美协会副主席、美国纽约州立大学科特兰学院体育系硕士杨宏建先生说,即使对于健美运动员来说,颈部的肌肉也是不容易练的部位。对于上班族来说,颈部肌肉的健康直接影响了他们颈椎的健康状况。他为本报读者提供了一套训练颈部肌肉柔韧性的方案。

一、“米字形”弯曲。脖子绕环法不可取,脖子向四周做环绕动作,容易造成颈椎扭伤,因为这个动作对脖子来说,属于非常规动作。他建议做“米字形”颈部弯曲动作,顺序如下:先做“十字形”弯曲,即头部依次向前弯―复位―向左弯―复位―向后弯―复位―向右弯―复位;然后依次做“左前弯―复位―左后弯―复位―右后弯―复位―右前弯―复位”。

二、低头抻拉颈部肌肉,持续30秒。如果已经有颈椎病了,往后仰头会不舒服,不要做令脖子不舒服的动作。

杨宏建教练说,除了提高颈部肌肉的柔韧性外,颈部肌肉的力量也要加强。这个部位的力量练习有一些特殊的方法,但对于普通人来说,通常是通过练习颈部下方的斜方肌,来达到加固颈部的功能。如果一个人斜方肌弱,就容易含胸,颈椎就处于前屈位,容易劳损。为此,他推荐了3个练习斜方肌的方案:

一、直立划船。手握哑铃,两脚开立,身体站直,挺胸抬头,肩后展同时提肘,将哑铃提至胸前,缓缓发下,如此反复,第一组做20次,第二组做14―15次即可。注意保持身体正直,不要用腰发力,而是用颈后下方、两块肩胛骨之间的斜方肌发力。提起时(发力时)呼气,放下时吸气。

二、耸肩。把肩使劲往上耸,争取去碰耳朵,然后放下,做2组,每组十几次。

三、肩绕环。上身正直,两臂下垂,让双肩后展,做以肩关节为中心的绕环动作。2组,每组十几次。

四、单杠悬垂。双手握住单杠,将身体悬吊在杠下,由于重力作用,脊椎等关节得到拉伸。
10 août

常见排序算法 之 Javascript版

用JavaScript实现的常见排序算法:冒泡排序,选择排序,插入排序,谢尔排序,快速排序(递归),快速排序(堆栈),归并排序,堆排序。
具体代码及比较如下所示:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> 常见排序算法 之 JavaScript版 </title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="排序,算法,JavaScript排序" />
<meta name="description" content="用JavaScript实现的常见排序算法:冒泡排序,选择排序,插入排序,谢尔排序,快速排序(递归),快速排序(堆栈),归并排序,堆排序" />
<script type="text/javascript">
 Array.prototype.swap = function(i, j)
 {
 var temp = this[i];
 this[i] = this[j];
 this[j] = temp;
 }
 Array.prototype.bubbleSort = function()
 {
 for (var i = this.length - 1; i > 0; --i)
 {
 for (var j = 0; j < i; ++j)
 {
 if (this[j] > this[j + 1]) this.swap(j, j + 1);
 }
 }
 }
 Array.prototype.selectionSort = function()
 {
 for (var i = 0; i < this.length; ++i)
 {
 var index = i;
 for (var j = i + 1; j < this.length; ++j)
 {
 if (this[j] < this[index]) index = j;
 }
 this.swap(i, index);
 }
 }
 Array.prototype.insertionSort = function()
 {
 for (var i = 1; i < this.length; ++i)
 {
 var j = i, value = this[i];
 while (j > 0 && this[j - 1] > value)
 {
 this[j] = this[j - 1];
 --j;
 }
 this[j] = value;
 }
 }
 Array.prototype.shellSort = function()
 {
 for (var step = this.length >> 1; step > 0; step >>= 1)
 {
 for (var i = 0; i < step; ++i)
 {
 for (var j = i + step; j < this.length; j += step)
 {
 var k = j, value = this[j];
 while (k >= step && this[k - step] > value)
 {
 this[k] = this[k - step];
 k -= step;
 }
 this[k] = value;
 }
 }
 }
 }
 Array.prototype.quickSort = function(s, e)
 {
 if (s == null) s = 0;
 if (e == null) e = this.length - 1;
 if (s >= e) return;
 this.swap((s + e) >> 1, e);
 var index = s - 1;
 for (var i = s; i <= e; ++i)
 {
 if (this[i] <= this[e]) this.swap(i, ++index);
 }
 this.quickSort(s, index - 1);
 this.quickSort(index + 1, e);
 }
 Array.prototype.stackQuickSort = function()
 {
 var stack = [0, this.length - 1];
 while (stack.length > 0)
 {
 var e = stack.pop(), s = stack.pop();
 if (s >= e) continue;
 this.swap((s + e) >> 1, e);
 var index = s - 1;
 for (var i = s; i <= e; ++i)
 {
 if (this[i] <= this[e]) this.swap(i, ++index);
 }
 stack.push(s, index - 1, index + 1, e);
 }
 }
 Array.prototype.mergeSort = function(s, e, b)
 {
 if (s == null) s = 0;
 if (e == null) e = this.length - 1;
 if (b == null) b = new Array(this.length);
 if (s >= e) return;
 var m = (s + e) >> 1;
 this.mergeSort(s, m, b);
 this.mergeSort(m + 1, e, b);
 for (var i = s, j = s, k = m + 1; i <= e; ++i)
 {
 b[i] = this[(k > e || j <= m && this[j] < this[k]) ? j++ : k++];
 }
 for (var i = s; i <= e; ++i) this[i] = b[i];
 }
 Array.prototype.heapSort = function()
 {
 for (var i = 1; i < this.length; ++i)
 {
 for (var j = i, k = (j - 1) >> 1; k >= 0; j = k, k = (k - 1) >> 1)
 {
 if (this[k] >= this[j]) break;
 this.swap(j, k);
 }
 }
 for (var i = this.length - 1; i > 0; --i)
 {
 this.swap(0, i);
 for (var j = 0, k = (j + 1) << 1; k <= i; j = k, k = (k + 1) << 1)
 {
 if (k == i || this[k] < this[k - 1]) --k;
 if (this[k] <= this[j]) break;
 this.swap(j, k);
 }
 }
 }
 function generate()
 {
 var max = parseInt(txtMax.value), count = parseInt(txtCount.value);
 if (isNaN(max) || isNaN(count))
 {
 alert("个数和最大值必须是一个整数");
 return;
 }
 var array = [];
 for (var i = 0; i < count; ++i) array.push(Math.round(Math.random() * max));
 txtInput.value = array.join("\n");
 txtOutput.value = "";
 }
 function demo(type)
 {
 var array = txtInput.value == "" ? [] : txtInput.value.replace().split("\n");
 for (var i = 0; i < array.length; ++i) array[i] = parseInt(array[i]);
 var t1 = new Date();
 eval("array." + type + "Sort()");
 var t2 = new Date();
 lblTime.innerText = t2.valueOf() - t1.valueOf();
 txtOutput.value = array.join("\n");
 }
</script>
</head>
<body onload="generate();">
<table style="font-size:12px;">
<tr>
 <td align="right">
 <textarea id="txtInput" style="width:120px;height:500px;" readonly></textarea>
 </td>
 <td width="150" align="center">
 随机数个数<input id="txtCount" value="500" style="width:50px" /><br /><br />
 最大随机数<input id="txtMax" value="1000" style="width:50px" /><br /><br />
 <button onclick="generate()">重新生成</button><br /><br /><br /><br />
 耗时(毫秒):<label id="lblTime"></label><br /><br /><br /><br />
 <button onclick="demo('bubble');">冒泡排序</button><br /><br />
 <button onclick="demo('selection');">选择排序</button><br /><br />
 <button onclick="demo('insertion');">插入排序</button><br /><br />
 <button onclick="demo('shell');">谢尔排序</button><br /><br />
 <button onclick="demo('quick');">快速排序(递归)</button><br /><br />
 <button onclick="demo('stackQuick');">快速排序(堆栈)</button><br /><br />
 <button onclick="demo('merge');">归并排序</button><br /><br />
 <button onclick="demo('heap');">堆排序</button><br /><br />
 </td>
 <td align="left">
 <textarea id="txtOutput" style="width:120px;height:500px;" readonly></textarea>
 </td>
</tr>
</table>
</body>
</html>

  

3 juillet

食物之间的禁忌

1 【爱心小贴士】不能一起吃的食物
中国有句古话:民以食为天。足以见得“食”在人心中的重要地位。在中医里,认为食物有“四气”(寒、热、温、凉)和“五味”(辛、甘、酸、苦、咸),食物搭配的原则就是寒与热、辛与甘等达到平衡。

而相克的食物不但不会平衡营养,反而会威胁人的生命。


QUOTE:
下列食物不可同时烹煮或同时服食,否则会引起或发生中毒,甚至有生命危险,千万不可疏忽大意。

      1、团鱼(水鱼、脚鱼)与苋菜食则死亡。吃空习菜汁可解救。
      2、鲤鱼与甘草食则死亡。吃麻油二两可解救。
      3、蜂糖与生葱食则死亡。米炒焦研末甘草二两煎服解救。
      4、狗肉与绿豆食则肚腹肿大。甘草二两煎水解救。
      5、黄瓜与花生食则肚泻。吃霍香丸十克解救。
      6、蚕豆与田螺食则绞肠痛。服童小便一茶杯解救。
      7、鸡肉与菊花食则死亡。细辛一钱、川莲五分煎水解救。
      8、蛇肉与萝卜食则死亡。吃鸡血一两解救。
      9、杨梅与鸭肉食则死亡。吃妇人乳汁100克解救。
      10、鹿肉与南瓜食则胀肚难受。
      11、芥菜与兔肉食则中毒。吃杨梅水50克煎水解救。
      12、冬笋与龟肉食则中毒。甘草二两煎水服可解救。
      13、冬瓜与鲫鱼食则脱水。吃空心菜汁一茶杯可解救。
      14、猪肉与芝麻花食则死亡。空心菜汁一茶杯解救。
      15、牛肉与香附子食则生九子疮。甘草二两煎水服解救。
      16、羊肉与西瓜食则中毒。
      17、洋葱与癞蛤蟆食则中毒。车前子50克煎水服可解救。
      18、油煎鸡蛋不可放糖精食则中毒。牛黄五分温开水吞服。
      19、鸡蛋吃后不能吃消炎片,食则中毒。吃黄泥水解救。
      20、孕妇不能多吃螃蟹,食则流产。
      21、吃桃子不能与白酒同服,多服会令人昏倒。
      22、发牙的马铃著(土豆)不可吃,食则中毒。

                               ————解救只是一时,如遇中毒,切记还是要到大医院进行诊治,勿耽误病情





QUOTE:
在日常生活中,为了方便起见常把某些食物放在一起。然而,有些食物是不宜存放在一起的,倘若硬要放在一起,会发生反应,甚至产生毒素,危害人体健康。

         1:鲜蛋与生姜、洋葱: 蛋壳上有许多小气孔,生姜、洋葱的强烈气味会钻入气孔内,加速鲜蛋的变质,时间稍长,蛋就会发臭。 
         2:米与水果:米易发热,水果受热则容易蒸发水分而干枯,而米亦会吸收水分后发生霉变或生虫。 
         3:面包与饼干:饼干干燥,也无水分,而面包的水分较多,两者放在一起,饼干会变软而失去香脆,面包则会变硬难吃。 
         4:咸鱼——乳酸饮料:咸鱼不宜与乳酸饮料搭配食用,由于咸鱼制品中的硝酸盐在乳酸菌的作用下被还原成亚硝酸盐,而在唾液中的硫氰酸根催化下,产生致癌物,可能引起胃肠、肝等消化器官癌变。




QUOTE:
不能一起吃的食物 

         红薯和柿子——会得结石              鸡蛋和糖精——容易中毒 
         洋葱和蜂蜜——伤害眼睛              豆腐和蜂蜜——引发耳聋 
         萝卜和木耳——皮肤发炎              芋头和香蕉——腹胀 
         花生和黄瓜——伤害肾脏              牛肉和栗子——引起呕吐 
         兔肉和芹菜——容易脱发              螃蟹和柿子——腹泻 
         鲤鱼和甘草——会中毒 




QUOTE:
谚语:

         1.猪肉菱角若共食,肚子疼痛不好受.         2.牛肉栗子一起吃,食后就会发呕吐. 
         3.羊肉滋补大有用,若遇西瓜定相侵.         4.狗肉滋补需注意,若遇绿豆定伤身. 
         5.兔肉芹菜本不合,同食之后头发脱.         6.鸡肉芹菜也相忌,同食就会伤元气. 
         7.鹅肉鸡蛋不同窝,一同入胃伤身体.         8.鲤鱼甘草性相反,兼食而之定伤身. 
作者: 58.45.159.*  2007-6-16 11:32   回复此发言  

2 【爱心小贴士】不能一起吃的食物
         9.黄鳝皮蛋皆佳肴,不可同桌结伴行.        10.鸡蛋若遇消炎片,同室操戈两相争. 
         11.鸡蛋糖精更相克,同食中毒更伤身.       12.柿子红薯若同吃,体内结石易形成. 
         13.柿子螃蟹也相背,同食之后会腹泻.       14.柿子白酒更不合,食后使你心发闷. 
         15.豆腐蜂蜜伴着吃,味道虽好耳要聋.       16.洋葱蜂蜜也不合,同食就会伤眼睛. 
         17.香蕉芋头本不合,同时入胃腹胀痛.       18.香蕉相克马铃薯,同食面部要起斑. 
         19.黄瓜生熟都可以,进食之际忌花生.       20.萝卜木耳不同食,食了容易生皮炎. 
         21.萝卜水果更相背,甲状腺肿会诱发.




QUOTE:
1、萝卜:严禁与桔子同食,同食患甲状腺肿;忌何首乌、地黄;服人参时忌食;忌与胡萝卜同食。 
2、胡萝卜:不宜和西红柿、萝卜、辣椒、石榴、莴苣、木瓜等水果同吃。最好单独吃或和肉类烹调。 
3、黄瓜:不宜和维生素c含量高的蔬菜如西红柿、辣椒等同烹调。 
4、甘薯:(红薯、白薯、地瓜、山芋);不能与柿子同食,二者相聚会形成胃柿石,引起胃胀、腹痛、呕吐,严重时可导致胃出血等,危及生命;也不宜与香蕉同吃。 
5、韭菜:不可与菠菜同食,二者同食有滑肠作用,易引起腹泻;不可与蜂蜜同食,同食则令人心痛;不可与牛肉同食,同食令人发热动火。 
6、茄子:忌与黑鱼、蟹同食,同食有损肠胃;过老熟的茄子不宜食,易中毒。 
7、菠菜:忌韭菜;不宜与豆腐同食,同食使人缺钙。 
8、小白菜:忌兔肉。 
9、南瓜:不可与羊肉同食,否则易发生黄疸和脚气;不可与富含维生素c 的蔬菜、水果同食。 
10、竹笋:不宜与豆腐同食,同食易生结石;不可与鹧鸪肉同食,同食令人腹胀;不可与糖同食;不宜与羊肝同食。 
11、辣椒:忌与羊肝、南瓜同食。 
12、香菜:不可与一切补药同食;忌白术、牡丹皮。 
13、莼菜:忌与醋同食。 
14、茭白:不宜与豆腐同食,否则易形成结石。 
15、芹菜:忌同醋食,否则易损齿;不宜与黄瓜同食。 
16、芥菜:忌与鲫鱼同食,否则易引发水肿。 
17、蕨菜:忌与黄豆、花生、毛豆等同吃。 
18、菜瓜:忌与牛奶、奶酪、鱼类同食,否则易生疾病。 
19、山药:忌鲫鱼、甘遂。 
20、豆腐(豆浆):不要与牛奶同食;不要与菠菜同烹调;忌用豆浆冲鸡蛋;忌与四环素同用。 
21、木耳:忌与田螺、雉鸡、野鸭、鹌鹑肉同食;忌与四环素同服 
22、苋菜:不宜与菠菜、蕨粉同食 
23、苦菜:不可与蜂蜜同食 
24、花生:忌蕨菜、毛蟹、黄瓜。 
25、马齿苋:不宜与鳖甲同食。 
26、香瓜:忌与蟹、田螺、油饼同吃 
27、猪肉:忌与鹌鹑同食,同食令人面黑;忌与鸽肉、鲫鱼、虾同食,同食令人滞气;忌与荞麦同食,同食令人落毛发;忌与菱角、黄豆、蕨菜、桔梗、乌梅、百合、巴豆、大黄、黄连、苍术同食;忌与牛肉、驴肉、羊肝同食。 
28、猪脑髓:不可与酒、盐同食,影响男子性功能; 
29、羊肉:忌与豆酱、荞麦面、乳酪、南瓜、醋、赤豆、梅干菜同食;忌铜、丹砂。 
30、鸡肉:老鸡鸡头不能吃,因毒素滞留在脑细胞内,民间有“十年鸡头生砒霜”的说法;忌与糯米、李子、大蒜、鲤鱼、鳖鱼、虾、兔肉同食;忌芥末、菊花。 
31、猪油:不宜与梅子同食。 
32、牛肉:不可与鱼肉同烹调;不可与栗子、黍米、蜂蜜同食;不宜与韭菜、白酒、生姜同食。 
33、猪肝:忌与荞麦、黄豆、豆腐同食,同食发痼疾;忌与鱼肉同食,否则令人伤神;忌与雀肉、山鸡、鹌鹑肉同食。 
34、牛肝:忌鲍鱼、鲇鱼;不宜与富含维生素c的食物同食。 
35、鸭肉:反木耳、胡桃;不宜与鳖肉同食,同食令人阴盛阳虚,水肿泄泻。 
36、狗肉:忌与绿豆、杏仁、菱角、鲤鱼、泥鳅同食;忌用茶;不宜与大蒜同食。 
37、猪血:忌黄豆,同食令人气滞;忌地黄、何首乌。 
38、羊心、羊肝:忌与生椒、梅、赤豆、苦笋、猪肉同食;不宜与富含维生素c的蔬菜同食。 
作者: 58.45.159.*  2007-6-16 11:32   回复此发言  

3 【爱心小贴士】不能一起吃的食物
39、驴肉:忌荆芥;不宜与猪肉同食,否则易致腹泻。 
40、马肉:不宜与大米(粳米)、猪肉同食;忌生姜、苍耳。 
41、鹅肉:不宜与鸭梨同吃。 
42、鹿肉:不宜与雉鸡、鱼虾、蒲白同食 
43、雀肉:春夏不宜食,冬三月为食雀季节。不宜与猪肝、牛肉、羊肉同食;忌李子、白术。 
44、鸡蛋:忌与柿子同食,同食可引起腹痛、腹泻,易形成“柿结石”;不宜与兔肉、鲤鱼、豆浆同食;民间有吃“毛蛋”之习,其实“毛蛋”中含有大量病菌,易中毒。 
45、鸭蛋:不宜与李子、桑椹子同食。 
46、野鸭:忌与木耳、核桃、荞麦同食 
47、鹧鸪肉:忌与竹笋同食 
48、水獭肉:忌与兔肉、柿子同吃 
49、獐肉:不宜与虾、生菜、梅子、李子同食 
50、鹌鹑肉:不宜与猪肉、猪肝、蘑菇、木耳同食。 
51、雉鸡(野鸡):不宜与猪肝、鲇鱼、鲫鱼、木耳、胡桃、荞麦同食 
52、猫肉:忌藜芦;猫肉有伤胎之弊,孕妇忌服。 
53、虾:严禁同时服用大量维生素c。否则,可生成三价砷,能致死;不宜与猪肉同食,损精;忌与狗、鸡肉同食;忌糖。 
54、鲤鱼:忌朱砂、狗肉。葵菜、赤小豆、咸菜不宜与狗肉同食。 
55、泥鳅:不宜与狗肉同食。 
56、海带:不宜与甘草同食。 
57、鲫鱼:不宜与芥菜、猪肝、猪肉、蒜、鸡肉、鹿肉等同食;忌山药、厚朴、麦冬、甘草。 
58、鳖肉:忌猪肉、兔肉、鸭蛋、苋菜;忌与薄荷同煮;忌与鸭肉同食,久食令人阴盛阳虚,水肿泄泻。 
59、带鱼、平鱼、银鱼、黄花鱼:忌用牛、羊油煎炸;凡海味均禁甘草;反荆芥。 
60、龟肉:不宜与酒、果、瓜、猪肉、苋菜同食。 
61、蜗牛:忌蝎子。 
62、田螺:忌与香瓜、木耳、蛤蚧、冰糖同食;忌与四环素同用。 
63、鲶鱼:不宜与牛肝同食;忌用牛、羊油煎炸;不可与荆芥同用。 
64、鳝鱼:忌狗血、狗肉,同食助热动风;忌荆芥,同食令人吐血;青色鳝鱼有毒,黄色无毒。有毒鳝鱼一次吃250克,可致死。 
65、海鳗鱼:不宜与白果、甘草同食。 
66、青鱼:忌用牛、羊油煎炸;不可与荆芥、白术、苍术同食。 
67、牡蛎肉:不宜与糖同食。 
68、枣:不可与海鲜同食,否则令人腰腹疼痛;不可与葱同食,否则令人脏腑不合,头胀。 
69、苹果:不宜与海味同食(海味与含有鞣酸的水果同吃,则易引起腹痛、恶心、呕吐等)。 
70、鸭梨:忌鹅肉、蟹;忌多吃;忌与油腻、冷热之物杂食。 
71、桔子:忌与萝卜同食,同食诱发甲状腺肿;忌与牛奶、蟹、蛤同食。 
72、山楂、石榴、木瓜、葡萄:不宜与海鲜类、鱼类同食;服人参者忌用;忌铁器;忌和四环素同吃。 
73、桃子:不宜与鳖肉、龟肉同食。 
74、香蕉:不宜与白薯同食。 
75、柿子:忌与蟹、水獭肉同食,同食腹痛、大泻;忌与红薯、酒同食。 
76、杨梅:忌生葱;不宜与羊肛,鳗鱼同食。 
77、杏:忌与小米同食,否则令人呕泻。 
78、芒果:忌与大蒜等辛物同食。 
79、银杏(白果):严禁多吃,婴儿吃10颗左右可致命,三、五岁小儿吃30~40颗可致命;不可与鱼同吃,同食则产生不利于人体的生化反应,小儿尤忌。 
80、柑子:忌与蟹同食。 
81、大米(粳米):不可与马肉同食,不可与苍耳同食,同食心痛; 
82、黄豆:不宜与猪血、蕨菜同食;服四环素时忌用。 
83、绿豆:不宜与狗肉、榧子同食。 
84、小米(粟米):不可与杏同食,同食易使人呕吐、泄泻;气滞者忌用。 
85、黑豆:忌与厚朴、蓖麻籽、四环素同用。 
86、红豆:忌与米同煮,食之发口疮;不宜与羊肉同食;蛇咬伤,忌食百日;多尿者忌用。 
87、葱:不宜与杨梅、蜜糖同食,同食易气壅胸闷;忌枣、常山、地黄。 
88、醋:忌丹参、茯苓;不宜与海参、羊肉、奶粉同食;忌壁虎,可致死。 
89、糖:忌虾;不可与竹笋同煮;不宜与牛奶、含铜食物同食。 
90、酒:忌与汽水、啤酒、咖啡、奶、茶、糖同饮,不然对胃肠、肝、肾脏器官有严重的损害;不宜与牛肉、柿同食。 
作者: 58.45.159.*  2007-6-16 11:32   回复此发言  

4 【爱心小贴士】不能一起吃的食物
91、茶:贫血病人服用铁剂时,忌饮茶。不宜与狗肉同食;服人参等滋补药品时忌用。 
92、蒜:一般不与补药同服。忌蜜、地黄、何首乌、牡丹皮; 
93、花椒:忌防风、附子、款冬。 
94、牛奶:忌牛奶中放钙粉;勿用牛奶冲鸡蛋;不宜与巧克力、桔子,四环素同食。 
95、蜜:不宜与葱、蒜、韭菜、莴苣、豆腐同食,不然易引起腹泻 。




QUOTE:
哪些食物不能和牛奶一起吃 
经常喝牛奶对健康好处多多,但食物总有互相抵触发生反应的时候,在日常生活中我们要留点神,记住哪些食物不可一起食用,以免危害你的身体健康,下面介绍一下牛奶和哪些食物不可同时服用? 

<<橘子>>在喝牛奶前后1小时左右,不宜吃橘子。因为牛奶中所含的蛋白质与橘子中的果酸相遇后,就会发生凝固,从而影响人体对牛奶的消化与吸收,在服用牛奶这个时间段里同样不宜食用其他酸性水果。 
<<果汁>>牛奶中的蛋白质80%为酪蛋白,牛奶的酸碱度在4.6以下时,大量的酪蛋白便会发生凝集、沉淀,难以消化吸收,严重者还可能导致消化不良或腹泻。所以牛奶中不宜添加果汁等酸性饮料。 
<<糖>>牛奶中含有的赖氨酸在加热条件下能与果糖反应,生成有毒的果糖基赖氨酸,有害于人体。鲜牛奶在煮沸时不要加糖,煮好牛奶后等牛奶稍凉以后再加糖。 
<巧克力>>牛奶含有丰富蛋白质和钙,而巧克力含有草酸,两者同食会结合成不溶性草酸钙,极大影响钙的吸收。甚至出现头发干枯、腹泻、生长缓慢等现象。 
<<药>>有人喜欢用牛奶代替白开水服药,其实,牛奶会明显地影响人体对药物的吸收。由于牛奶容易在药物的表面形成一个覆盖膜,使奶中的钙、镁等矿物质与药物发生化学反应,形成非水溶性物质,从而影响药效的释放及吸收。因此,在服药前后1小时也不要喝奶。 




QUOTE:
小米(粟米)   不可与杏同食,同食易使人呕吐、泄泻;气滞者忌用。
黑豆    忌与厚朴、蓖麻籽、四环素同用。 
糯米    (1)不宜食用冷指来水所煮的饭                                  (2)不宜常吃剩油炒饭 
高梁    (1)不宜常吃加热后放置的高粱米饭或煮剩的高梁米饭    (2)不宜加碱煮食 
黄豆    (1)不宜多食炒熟的黄豆                                           (2)对黄豆过敏者不宜食用
          (3)服用四环素类药物时不宜食用                               (4)服用红霉素、灭滴灵、甲氰咪胍时不宜食用 
          (5)服用左旋多巴时不宜食用                                     (6)不宜煮食时加碱 
          (7)食用时不宜加热时间过长                                     (8)服用铁制剂时不宜食用
          (9)服氨茶碱等茶碱类药时不宜食用                            (10)不宜与猪血、蕨菜同食 
          (11)不宜多食
豆浆    (1)饮用时加热时间不宜过短                                     (2)不易和鸡蛋同时煮食 
          (3)豆浆不易加红糖饮用                                           (4)暖水瓶装豆浆不宜饮用
          (5)喝豆浆时不宜食红薯或橘子                                  (6)不宜多饮
绿豆    (1)服温热药物时不宜食用                                        (2)服用四环素类药物时不宜食用 
          (3)服甲氰咪胍、灭滴灵、红霉素时不宜食用                (4)服用铁制时不宜食用 
          (5)煮食时不宜加碱                                                 (6)老人、病后体虚者不宜食用
          (7)不宜与狗肉、榧子同食。
红豆    (1)忌与米同煮,食之发口疮                                     (2)不宜与羊肉同食 
          (3)蛇咬伤,忌食百日                                              (4)多尿者忌用




QUOTE:
啤酒忌白酒啤酒中含有大量的二氧化碳,容易挥发,如果与白酒同饮,就会带动酒精渗透。有些朋友常常是先喝了啤酒再喝白酒,或是先喝白酒再喝啤酒,这样做实属不当。想减少酒精在体内的驻留,最好是多饮一些水,以助排尿。 
酒精忌咖啡酒中含有的酒精,具有兴奋作用,而咖啡所含咖啡因,同样具有较强的兴奋作用。两者同饮,对人产生的刺激甚大。如果是在心情紧张或是心情烦躁时这样饮用,会加重紧张和烦躁情绪;若是患有神经性头痛的人如此饮用,会立即引发病痛;若是患有经常性失眠症的人,会使病情恶化;如果是心脏有问题,或是有阵发性心跳过速的人,将咖啡与酒同饮,其后果更为不妙,很可能诱发心脏病。一旦将二者同时饮用,应饮用大量清水或是在水中加入少许葡萄糖和食盐喝下,可以缓解一下不适症状。 
解酒忌浓茶有些朋友在醉酒后,饮用大量的浓茶,试图解酒。殊不知茶叶中含有的咖啡碱与酒精结合后,会产生不良的后果,不但起不到解酒的作用,反而会加重醉酒的痛苦。 
鲜鱼忌美酒含维生素 D高的食物有鱼、鱼肝、鱼肝油等,吃此类食物饮酒,会减少人对维生素 D吸收量的6—7成。人们常常是鲜鱼佐美酒,殊不知这种吃法却丢了上好的营养成分。 
虾蟹类忌维生素虾、蟹等食物中含有五价砷化合物,如果与含有维生素 C的生果同食,会令砷发生变化,转化成三价砷,也就是剧毒的“砒霜”,危害甚大。长期食用,会导致人体中毒,免疫力下降。 
牛奶煮沸时忌加糖牛奶中所含的赖氨酸在高温下与果糖结合成果糖基赖氨酸,不易被人体消化。食用后会出现肠胃不适、呕吐、腹泻病症,影响健康。 
菠菜忌豆腐菠菜中所含的草酸,与豆腐中所含的钙产生草酸钙凝结物,阻碍人体对菠菜中的铁质和豆腐中蛋白的吸收。 
牛奶忌朱古力朱古力中含有草酸,与牛奶中所含的蛋白质、钙质结合后产生草酸钙。一些人食用后会发生腹泻现象。 

吃,真是一门很大的学问。各种美食之间,常常相冲相撞。如果将这些相冲撞的食物同食,不但不会得到美的享受,反而会损害身体。所以我们在饱口服时也一定要注意合理的饮食和搭配,不但要吃出美味,更要吃出健康^_^ 
23 mars

格言 -- 关于人生的思考

我们每个人都是一座山,
   世上,最难攀跃的上其实是自己
   往上走,即使一小步也有新高度,
   做最好的自己。加油!
                                                                                                                         ---- 王石