QNX简介<转载>

QNX  QNX是由QNX软件系统有限公司开发的实时操作系统。

http://blog.csdn.net/happyhell/article/details/7087199

基本特征
  * QNX是一个分布式、嵌入式、可规模扩展的实时操作系统。它遵循POSIX.1
(程序接口)和POSIX.2
(Shell和工具)、部分遵循POSIX.1b(实时扩展)。它最早开发于1980年,到现在已相当成熟

体系结构
  *
QNX是一个微内核实时操作系统,其核心仅提供4种服务:进程调度、进程间通信、底层网络
通信和中断处理,其进程在独立的地址空间运行。所有其它OS服务,都实现为协作的用户进
程,因此QNX核心非常小巧(QNX4.x大约为12Kb)而且运行速度极快。
  [编辑]调度策略
  QNX 提供POSIX.1b标准进程调度:
  * 32个进程优先级;
  * 抢占式的、基于优先级的正文切换;
  * 可选调度策略:FIFO、轮转策略、适应性策略。
系统服务
  QNX的系统服务:
  *
多种资源管理器,包括各种文件系统和设备管理,支持多个文件系统同时运行,包括提供完
全POSIX.1及UNIX语法的POSIX文件系统,支持多种闪存设备的嵌入式文件系统,支持对多种
文件服务器(如Windows NT/95、LAN
Manager等)的透明访问的SMB文件系统、DOS文件系统、CD-ROM文件系统等。
  * 设备管理。在进程和终端设备间提供大吞吐量、低开销接口服务。
  * 图形/窗口支持。包括QNX Windows、X Window System for QNX、对MS Windows
NT/95和X Window系统的远程图形连接。
  * TCP/IP for QNX。
  *
高性能、容错型QNX网络——FLEET,使得所有连入网络的计算机变成一个逻辑上的超级计算
机。
  *
透明的分布式处理。FLEET网络处理与消息传递和进程管理原语的集成,将本地和网络IPC统
一起来,使得网络对IPC而言是透明的。
  [编辑]系统开放性
  QNX的开放性:
  * QNX的POSIX兼容性和其提供的UNIX特色的编译器、调试器、X
Window和TCP/IP都是UNIX程序员所熟悉的。
  * 支持多种CPU:AMD ElanSC300/310/400/410、Am386 DE/SE、Cyrix
MediaGX、x86处理器(386以上)、Pentium系列、STMicroelectronics 的STPC。
  * 多种总线:CompactPCI、EISA、ISA 、MPE (RadiSys)、STD、STD
32、PC/104、PC/104-Plus、PCI、PCMCIA、VESA、VME。
  * 各种外设:多种SCSI设备、IDE/EIDE驱动器、10M/100M以太网卡、Token
Ring网卡、FDDI接口卡、多种PCMCIA设备、闪存、声卡等等。
  QNX结构:
  QNX是业界公认的X86平台上最好的嵌入式实时操作系统之一。它具有独一无二的微内核
实时平台,建立在微内核和完全地址空间保护基础之上,实时、稳定、可靠,已经完成到Po
werPC、MIPS、ARM等内核的移植,成为在国内广泛应用的嵌入式实时操作系统。
  1 QNX内核简介
  QNX的微内核结构是它区别于其它操作系统的显著特点。
  平板式内存结构,如图1所示,所有的程序都使用同一个地址空间,不加保护;应用程
序可以自由访问所有空间,效率较高,但是任何应用程序指针错误都可能会导致内核崩溃。
  大内核内存结构,如图2所示,操作系统内核和各种驱动程序、网络协议在同一个地址
空间,应用程序在单独空间;内核模块同处于一个保护空间,运行效率高,应用程序无法直
接访问保护空间,系统稳定性大大提高。缺点是,由于内核模块(例如网络驱动)处于保护
空间,因此调试困难,任何驱动程序的修改都要重新编译内核,无法做到驱动的动态加载和
卸载。
  QNX的微内核结构,内核独立自处于一个被保护的地址空间;驱动程序、网络协议和应
用程序处地程序空间中。
  微内核结构的优点:①驱动程序、网络协议、文件系统等操作系统模块和内核相互独立
,任何模块的故障都不会导致内核的崩溃;②驱动程序、网络协议、文件系统和应用程序都
处于程序空间,都调用相同的内核API,开发与调试和应用程序没有区别;③操作系统功能
模块可以根据需要动态地加载或卸载,不需要编译内核。在高可靠性要求的情况下,可以编
写监视模块,对可靠性要求高的模块进行监视,必要的时候重新启动或重新加载而无须重启
系统。高可靠性的内核结构使QNX具备了高可靠性嵌入式操作系统的本质特征。
  在具有高可靠性内核的基础上,QNX的创新设计使它同样具有很高的效率。QNX最为引人
注目的地方是,它是UNIX的同胞异构体,保持了和UNIX的高度相似性,绝大多数UNIX或LINU
X应用程序可以在QNX下直接编译生成。这意味着为数众多的稳定成熟的UNIX、LINUX应用可
以直接移植到QNX这个更加稳定高效的实时嵌入式平台上来。
  2 QNX网络结构
  QNZ网络子系统由三个部分组成:网络管理模块(io-net)、网络协议模块(npm-qnet.
so、npm-tcpip.so)、网络设备驱动模块(devn-ne2000.so)。
  每个模块各自具有不同的功能,但是它们具有一些相同的属性。如:网络设备驱动、TC
P/IP协议栈分别对上层io-net模块和应用程序产生数据,两者都可以被看作数据源;同时它
们也接受上层发来的数据,又可以同时被看作数据的消费者。过滤模块对向上的数据进行筛
选,分协议进行处理;对向下的数据则进行相应的转换,如进行网络地址转换NAT。转换模
块负责不同协议帧结构的转换,在以太网的工作环境下,它就负责对IP数据报进行以太网帧
的封装和解包。
  和QNX其它服务进程一样,QNX的网络子系统也在内核外部空间运行。应用程序面对的是
一个统一的网络接口,硬件相关的内容被完全包装在网络子系统内。
  QNX网络子系统的三个子模块按层次分开,io-net模块处于中心,是QNX网络的核心和重
点,其它模块都挂接在它上面。数据和信息的流动都必须经由io-net调度与转发,所有其它
模块所面对的就是一个单一主体。这样的中心交换结构,屏蔽了各个模块间相互协调的复杂
细节,在很大程序上方便了模块的编写工作;同时,io-net还是QNX的网络管理中心。任何
网络协议和网络设备驱动程序都必须向io-net注册,由它来加载,并接受io-net的配置和管
理,用户对网络状态的查询和管理也是通过io-net来实现的。
  3 QNX网络设备驱动
  QNX网络设备驱动模块处于网络硬件和io-net模块之间。驱动模块负责配置硬件使其正
常工作,向io-net报告数据收发情况,接收和传递数据,接受io-net的调度和管理。QNX网
络设备驱动程序依照以上功能,分为初始化、接收发送数据、网络设备信息统计几个功能块
。要使网络设备工作正常,驱动程序就要对它进行一定的寄存器配置,同时,还要向QNX网
络子系统注册自己,表明网络设备的存在和网络通信能力,才能为系统和应用程序所用。在
初始化工作完成以后,网络设备就进入了工作状态,收发数据。设备信息的统计也是由设备
驱动程序来完成的。
  (1)初始化
  初始化包括两个方面,一方面是初始化网络设备,使其正常工作;另一个方面,是向io
-net正确注册驱动模块,表明自己的属性,方便上层正确操作。网络设备的初始化工作和硬
件紧密相关,这里就不一一描述。
  驱动模块向io-net加载自己的时候,系统遵循如下工作流程:
  ①io-net搜索全局的符合io_net_dll_entry。它定义了驱动的初始化函数,io-net会直
接调用这个函数。
  ②初始化函数向io-net注册驱动和相应的函数。
  ③初始化函数告诉io-net和它的模块自己的通信能力。
  经过以上流程以后,io-net中就建立起有关此驱动程序的数据和函数调用列表。驱动程
序必须正确编写初始化函数,并将该函数正确链接至io_net_dll_entry。
  (2)从网络设备接收数据
  当有包到达网络设备的时候,网络设备就会用某种方式通知驱动程序(例如中断),此
时,驱动程序就要采取某种策略来处理到来的帧或数据。通常驱动程序这时候需要做以下工
作:
  ①通过DMA将包取回来;
  ②做相应的必要处理,如通知网络设备释放当前帧的缓存,配置寄存器让网络设备等待
下一帧到来等;
  ③通过调用io-net的tx_up_start()函数把包传递给上层模块。
  当上层所有的模块都完成对这个包的处理以后,io-net调用我们驱动中的tx_done()
函数,它来做最后的处理工作。
  tx_up_start()函数是设备驱动中比较关键的函数,下面简要部分一下这个函数的入
口参数。
  npkt_t*(*tx_up_start)(int registrant_hdl,
  nptk_t *npkt,
  int off,
  int framelen_sub,
  uint16_t cell,
  uint 16_t endpoint,
  uint16_t iface,
  void *done_hdl)
  其中:int registrant_hdl--本驱动在io-net中的句柄,注册时由io-net生成;
  nptk_t *npkt --需要处理的包的指针;
  int off--底层协议包头长度,如以太网帧头部长度;
  int framelen_sub--尾部填充的长度,对于以太网这个值为零;
  uint16_t cell、uint16_t
endpoint--endpoint和cell是io-net在注册的时候分配的用来区别不同的驱动;
  uint16_t iface--接口号,可以让同一个驱动负现多个相同硬件;
  void *done_hdl--该指针指向tx_done()函数需要的额外数据。
  (3)向网络设备发送数据
  当上层模块需要硬件传送包的时候,会调用io-net管理器的rx_down()函数。
  int(*rx_down)(npkt_t*npkt,
  void *func_hdl)
  rx_down函数入口参数中,npkt是指向需要传送的数据的结构指针,func_hdl是相应驱
动模块在io-net中的句柄。其中npt结构包含许多成员,其中的重要成员如:
  cell、endpoint、iface 需要处理该包的硬件标识
  buffers 指向包的指针
  tot_iov 包含数据包的所有I/O矢量
  Framelen 所有数据的长度,以字节为单位
  驱动模块在接收到io-net的调用后,就要配置网络设备,让它完成数据的发送工作。网
络设备发送数据所需要的信息都会在相应的数据结构中,如net_buf_t结构中保存了等待传
送的数据包的链接列表,配置DMA所需的物理地址在net_iov_t中等。驱动模块要等待硬件完
成这些包的传送,并调用io-net的tx)done()函数通知上层模块驱动程序已经完成了数据
的发送。
  4 网络设备信息的统计
  应用程序或者用户可以通过网络信息接口nicinfo工具来了解网络工作状态。信息的查
询都是通过io-net来进行的。驱动程序必须维护相应的状态数据,方便io-net的查询。网络
设备有一些共同的状态属性,如收到和发出的包的个数、发送错误的包的个数等,不同的网
络设备还会具有不同的属性和状态,这些都可以在驱动程序中用数据结构详细列明。
  需要维护的数据结构中,主要的是Nic_t,它包括四个子结构;
  CustNicStats--网络信息入口;
  EthernesStats_t--以太网状态;
  GenStats_t--常用统计信息;
  NetStats_t--网络信息(包含常用统计信息)。
  以上是驱动程序需要维护的数据。当用户或应用程序要查询这些信息的时候,它们就通
过Nicinfo工具对/dev/io-net/en0调用devctl()函数来取得网络信息。信息的取得是必须通
过io-net来完成的,io-net对信息的查询则是通过调用io_net_register_funs_t结构中所指
向的函数来取得信息的。例:
  #include<sys/nic.h>
  int generic_eth_devctl(void *hdl,int dcmd,void *data,size_t size,int
*ret)
  {
  Nic_t *nic=(Nic_t *)hdl;
  int status;
  status=EOK;
  switch(dcmd){
  case DCMD_IO_NET_NICINFO;
  memcpy(data,nic,min(size,sizeof(Nic_t)));
  break;
  default:
  status=ENOTSUP;
  break;
  }
  return(status);
  }
  结束语
  网络设备的驱动是网络系统的最低层和最基础的模块,是如今嵌入式开发中首先要解决
的问题之一。由于QNX具有微内核的特点,其网络设备驱动程序的开发不需要内核调试,更
适合初学者掌握。本文对QNX操作系统及网络设备驱动程序的介绍,可以帮助读者对相关内
容作初步了解。
  QNX用户评价:
  QNX有一个非常华丽的图形界面,并且号称运行速度比Windows或Linux更快。不用不知
道,一用你会忘不掉:P
  垄断的微软Windows操作系统和自由的Linux操作系统都是很多朋友熟知的计算机主要的
操作系统。但是您听说过QNX计算机操作系统吗?如果我告诉您QNX操作系统运行的速度比Wi
ndows或Linux还快,而且用户界面也十分华丽,您相信吗?
  别以为QNX是刚刚诞生的计算机操作系统,它早就在20年前就诞生了,但是QNX作为一种
专业的操作系统,至今它还未能进入普通用户的计算机为我们服务。其中的原因无疑是很复
杂的。
  QNX的发音也十分有趣,大家知道Linux用汉语发音就是“里讷克斯”,而QNX的发音就
是“cue-nix”:)。如果您使用的是Pentium处理器系列的计算机,那么在这台计算机的硬
盘上安装QNX操作系统是很容易的事情,QNX可以在Windows下安装,它和Linux一样,是一种
类UNIX的操作系统。另人惊异的是QNX也是免费的操作系统,可以直接到QNX的网站上下载这
个原版操作系统。当然,购买一张QNX的CD-ROM也是很方便的。一张QNX的安装盘CD-ROM售价
为30美圆。在QNX的主页上有很详细的介绍和资料,还有关于QNX的新闻及应用软件可供用户
阅读下载。
  有了QNX,您计算机里的操作系统不只是Windows独霸了,QNX完全可以取代霸道的Windo
ws平台。很多初学计算机的朋友因为接触最多的是Windows平台,以至于他们误认为Windows
98就是“OS”的唯一选择。现在不同了,使用QNX同样也能很好的管理计算机了。
  简单的说,操作系统就是给计算机一个灵活的大脑,一个强健的心脏和突出的个性。没
有操作系统,计算机什么也做不了,只能是一堆废物。
  QNX是由一家位于加拿大的QNX软件系统公司(简称QSSL)推出的。该公司位于渥太华(
加拿大城市)的市郊。最近从该公司传来好消息说,该公司已经面向普通用户推出了可以免
费使用、非商业用的个人用户版本的QNX实时平台或称作QNX
RTP,最小的在Windows下安装文件只有24MB。当这个版本正式向公众推出的时候,大约有40
0000人次从网上下载了这个QNX
RTP版本。这大大出乎了意料,没有想到竟然有这么多人对这个操作系统感兴趣。因为很多
人在以前根本就没有听说过世界上还有这么一个免费的QNX操作系统。
  现在要在这么一台电脑上试装这个QNX操作系统。电脑的硬件配置为233 MHZ AMD K6
处理器,96MB内存,ATI All-in-Wonder Pro显示卡,Sound Blaster AWE 32
声卡,两个硬盘驱动器和两个CD-ROM驱动器,一个SCSI硬盘和一块标准的网卡。
  在安装的过程中除了遇到一个小故障之外,一切还算顺利。那块SCSI卡没有能被QNX自
动配置。查阅QSSL公司的资料,该公司说他们正在努力的修正这个SCSI的问题。
  如果您是一位有经验的Linux用户,那么QNX会使您很快就能上手。虽然它和Linux有很
大的区别。QNX
RTP使用的命令和操作是和Linux的许多“shell”命令是兼容的。更令人满意的是QNX的文件
分级目录(组织,文件名和目录)和Linux几乎是一样的。可以说QNX
RTP和旧的Linux是十分相象的。这对许多喜欢Linux,对Linux有一定实际操作经验的用户来
说无疑是一个福音。QNX在他们手里很快就能玩转。
  但QNX和Linux最大的不同就是QNX的图形用户界面设计的十分漂亮。尽管Linux使用的是
经久世故的X
Window系统,但是和QNX的称为“Photon”的图形用户界面相比还是显得QNX略省一筹。 
  不用不知道,一用忘不掉:QNX RTP的图形用户界面-Photon MicroGUI非常酷
  QNX的Photon
MicroGUI窗口系统是最“酷”的GUI(图形用户界面)。安装QNX后,你就会发现QNX的默认
桌面背景“炫”得让你晕倒,得让人给你叫个医生来了:)。
  另外要提到的是,QNX RTP
的运行速度是那样的快,是否所有的用户都能够接受?没有错,在同样的电脑硬件配置情况
下,QNX确实运行速度要比其他的Windows系统要快得多。在使用鼠标和窗口的操作界面下,
QNX的运行速度确实是让人满意的。给人以一种“豪爽”的感觉。
  以上关于QNX的优点介绍得让你立刻想鼓掌,狠不得马上下载一个QNX试一试,但是有些
问题是要说清楚的。QNX尽管是非常好的一个操作系统。但是你平时主要工作如果需要处理
电子表格,管理金融等等,那么QNX可能不太适合你。因为能在QNX下运行的应用软件并不多
。这也是制约QNX发展的一个重要原因了。
  但是也不必太担心软件不够用的问题,起码QNX能让你进行很多基本的操作。你可以用Q
NX来计算数据,播放CD音乐,使用电子邮件程序,进行文字处理工作,简单的图象浏览,还
有一些Linux上已经除去的屏幕保护程序,桌面背景转换,软件的安装管理功能等等。甚至
你还可以在QNX上添加专用版本的Real
Player软件,喜欢玩游戏的朋友还可以安装Quake这个著名的游戏。所有在QNX上玩过Quake
的朋友都说Quake在QNX上的运行速度比任何操作系统都要快。这确实是一个对游戏迷来说是
非常好的消息。
  好了,现在我们来总结一下QNX的所有优点:
  速度极快:QNX的运行速度非常快,其他的操作系统没有办法和它相比。
  系统非常安全:QNX上没有计算机病毒,这是和Linux一样的,所以QNX
RTP不存在被病毒破坏资料的危险,只有在微软Windows系统中才会有被病毒感染的噩梦。另
外,QNX的用户管理相当出色,它绝对不会让一个没有输入正确密码的人闯入计算机系统中

  QNX有一个最好的网页浏览器:QNX里的网页浏览器叫做“Voyager”,浏览网页的速度
快得象火箭。和Voyager相比,微软的IE和网景公司的NC浏览器简直就是一辆破旧的老爷车
。但是这个Voyager浏览器目前还有些臭虫,QSSL公司的软件工程师正在改进它。
  QNX的最大不同:QNX完全不像Windows,那是一件好事情。它是免费的操作系统,可以
在网上下载安装使用。它的使用和操作也十分的容易。

=============================================================
QNX Neutrino  QNX Neutrino 实时操作系统
  从1980年起,生产商就开始把QNX的操作系统使用在他们重要的应用上。从医药器材、
互联网路由器到电讯系统、911报警装置、处理控制系统、甚至航天系统,凡是需要一天24
小时不间断运行的系统都离不开QNX实时操作系统。因为QNX实时操作系统给他们提供标准的
稳定性,容错性和兼容性。
  是什么使得QNX Neutrino
实时操作系统如此的杰出?那是因为它是一个真正的微内核操作系统。在QNX Neutrino
实时操作系统 (QNX Neutrino Real time Operating System)
里的每一个驱动程序、应用、协议栈和文件系统都在内核的外部运行。因为如此,当以上任
何一个系统发生问题时,实时操作系统会立即使此项运行停止,并重新启动这项系统,与此
同时,其他所有的系统和内核的运行不会因此而受影响。QNX
Neutrino是目前市场上唯一一个拥有以上功能的实时操作系统。
  功能和优点
  QNX Neutrino 实时操作系统给您带来:
  ·
设计能够随时进行现场升级,从而延长系统生存周期并扩展具有系统机能的高稳定性系统。
  ·
完善的自治愈系统使整个操作系统本身能很快地进行纠错并排错,从而大大提高了操作系统
的可利用率。
  ·
按照各个应用的需要,选择您所需的元件进行操作,也可利用内置的对称式多重处理器,来
增强双处理器的性能。
  ·
拥有设计简单的容错集群,只要在网络上再多连接一台中央处理器,多台处理器间就能各自
独立地进行分布处理,这样一来就提高了系统的工作效率。
  · 通过快速准确地实时响应来优化系统的性能。
  ·
通过对POSIX标准的可扩充性的支持,增强了应用的可移植性,使客户从Linux,Unix和其他
开放资源程序上,更快地移植到QNX上来。
  ·
通过对较先进的网络浏览器、多层显示和三维立体显示的支持,来呈现更好的图表用户界面

  ·
通过可扩增到4G的内存容量,使PowerPC、MIPS和X86的处理器的物理地址的范围大大扩大了

  ·
为您的操作系统寻觅最好的硬件平台,通过运行支持和适合的常见芯片(如:MIPS,PowerPC
,SH-4,ARM,StrongArm,XScale和X86)的开发包,使系统能更快地启动和操作。

时间: 2024-10-29 19:13:35

QNX简介<转载>的相关文章

Android提供的LruCache类简介[转载]

转自:here 1 package android.util; 2 3 import java.util.LinkedHashMap; 4 import java.util.Map; 5 6 /** 7 * A cache that holds strong references to a limited number of values. Each time 8 * a value is accessed, it is moved to the head of a queue. When a

北大ACM题库习题分类与简介(转载)

在百度文库上找到的,不知是哪位大牛整理的,真的很不错! zz题 目分类 Posted by fishhead at 2007-01-13 12:44:58.0 -------------------------------------------------------------------------------- acm.pku.edu.cn 1. 排序 1423, 1694, 1723, 1727, 1763, 1788, 1828, 1838, 1840, 2201, 2376, 23

Java 理论与实践: 非阻塞算法简介--转载

在不只一个线程访问一个互斥的变量时,所有线程都必须使用同步,否则就可能会发生一些非常糟糕的事情.Java 语言中主要的同步手段就是synchronized 关键字(也称为内在锁),它强制实行互斥,确保执行 synchronized 块的线程的动作,能够被后来执行受相同锁保护的synchronized 块的其他线程看到.在使用得当的时候,内在锁可以让程序做到线程安全,但是在使用锁定保护短的代码路径,而且线程频繁地争用锁的时候,锁定可能成为相当繁重的操作. 在 “流行的原子” 一文中,我们研究了原子

XMPP 简介 转载

XMPP : The Extensible Messaging and Presence Protocol 中文全称:可扩展通讯和表示协议 简介:可扩展通讯和表示协议 (XMPP) 可用于服务类实时通讯.表示和需求响应服务中的XML数据元流式传输.XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议.XMPP is the IETF's formalization of the base XML streaming protocols for instant messag

HttpClient 与 HtmlParser 简介 转载

转载地址:https://www.ibm.com/developerworks/cn/opensource/os-cn-crawler/ 本小结简单的介绍一下 HttpClinet 和 HtmlParser 两个开源的项目,以及他们的网站和提供下载的地址. HttpClient 简介 HTTP 协议是现在的因特网最重要的协议之一.除了 WEB 浏览器之外, WEB 服务,基于网络的应用程序以及日益增长的网络计算不断扩展着 HTTP 协议的角色,使得越来越多的应用程序需要 HTTP 协议的支持.虽

Linux文件系统简介----转载

原文地址:Linux文件系统 文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分区和目录.挂载基本原理.文件存储结构.软链接硬链接.和常见目录的介绍.相信有了这些知识对于深入的学习linux会有一定的帮助.文章例子主要是基于ubuntu发行版. 如有不对之处请大家多多指出. 1.Linux磁盘分区和目录 Linux发行版本之间的差别很少,差别主要表现在系统管理的特色工具以及软件包管理方式的不

ubuntu各文件夹简介 [转载]

原文地址:ubuntu各文件夹简介作者:SuperZhy ubuntu各文件夹简介 /bin 二进制可执行命令/dev 设备文件(硬盘/光驱等)/etc 系统管理和配置文件/etc/rc.d 启动的配置文件和脚本/home 用户主目录,下面会有以登录用户名作为文件夹名的各文件夹/lib 标准程序设计库又叫动态链接共享库,作用类似windows里的.dll文件/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序/tmp 公用的临时文件存储点/root 系统管理员的主目录/mnt 系统提供

来自苹果的编程语言——Swift简介转载】

关于 这篇文章简要介绍了苹果于WWDC 2014发布的编程语言--Swift. 原文作者: Lucida Blog 新浪微博 豆瓣 转载前请保留出处链接,谢谢. 前言 在这里我认为有必要提一下Brec Victor的Inventing on Principle,Swift编程环境的大部分概念都源自于Brec这个演讲. 接下来进入正题. Swift是什么? Swift是苹果于WWDC 2014发布的编程语言,这里引用The Swift Programming Language的原话: Swift

PowerMock 简介--转载

原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-powermock/ EasyMock 以及 Mockito 都因为可以极大地简化单元测试的书写过程而被许多人应用在自己的工作中,但是这 2 种 Mock 工具都不可以实现对静态函数.构造函数.私有函数.Final 函数以及系统函数的模拟,但是这些方法往往是我们在大型系统中需要的功能.PowerMock 是在 EasyMock 以及 Mockito 基础上的扩展,通过定制类加载器等技术,Po