举例说明:什么软件可?

  看到很多人,特别是初学者对感兴趣,想学,但又十分困惑,痛苦, 因此,我觉得有必要抽空写些东西来"普渡众生",当然我不是佛,用"普渡众生"这个词不大合适,但一时也找不到合适的词了,先将就一下吧. 还有就是别叫我大神, 我不是大神,一介草民而已,只不过暂时在这方面懂得比有些人多一点而已,其它方面,他们比我懂,因此,大家是平等的。下面就随嵌入式小编一起来了解一下相关内容吧。

既然是一介草民,因此,我也不打算遵循那么多条条框 框的限制了。我平生最讨厌教科书以及其它一些所谓"老师"文邹邹的说教,因此,我打算用草民都能听懂的话来写这个系列的东西,如果用这种方式你能把 嵌入式搞明白的话,从一个侧面也说明嵌入式其实并不是相象中的那么难,当然也不简单。

  什么是嵌入式技术? 简单通俗直白的说:就是实现嵌入式系统的技术。

  哪什么是嵌入式系统?

  网上或书上泛滥成灾的定义是:嵌入式系统是针对某个应用,软硬件可裁减的,对体积,功耗,成本等等有严格要求的一个计算机系统。看起很复杂很抽象,其实就两点:

  第一,嵌入式系统是一个计算机系统

  第二,嵌入式系统是针对某个应用的,也就是通常所说的“专用的”。

  也就是说,嵌入式系统说白了,就是针对某个应用的计算机系统!

  其它什么的:软硬件可裁减的,对体积,功耗,成本等等有严格要求的这堆修饰词,是做好一个嵌入式系统所需要考虑的因素,注意是做好,做好跟做出来是两码事,当然,真要做好一个嵌入式系统,考虑这些还远远不够,还有其它很多的需要考虑,这个,我计划写完这个系列后,再写个怎么做好嵌入式系统的"章回体",我写了个嵌入式产品研发过程管理系统,这个系统是基于CMMI3规范的,按照哪个系统讲如何做好嵌入式产品开发应该就足够了。

  大家都知道PC,或者笔记本电脑,PC或笔记本电脑是一个计算机系统,只不过是一个通用的计算机系统。通用的意思,是指没有特定的用途,什么都可以干,比如你可以拿笔记本来上网,来听歌,来看电影,来看照片,甚至还可以开发程序,做服务器等等....,反正你想干什么就干什么,没有强制的特定得用途。因此,是通用的,但嵌入式系统是专用的。

  怎么来理解这个专用呢?专用就是针对某个特定的用途。

  刚才不是说在PC上可以看照片吗?把看照片的应用扣出来,做成一个计算机,就是针对某个应用的计算机了,作出来后,这个计算机叫什么名字?叫数码像框,电脑城一堆一堆的。按照刚才说的定义,不难看出,数码像框是嵌入式系统!

  把听歌的应用扣出来,做成一个计算机,这个计算机叫什么?叫mp3播放器。mp3播放器是针对听音乐的计算机,因此,mp3播放器也是嵌入式系统!

  把看电影的应用扣出来,做成一个计算机,这个计算机叫什么?叫mp4播放器。mp4播放器是针对看电影的计算机,因此,mp4播放器也是嵌入式系统!

  从这里,我们可以看得出来PC和嵌入式的一个大致区别了,对嵌入式系统应该也有个大致的印象了.

  但是不是说,嵌入式系统就只能基于PC来应用呢?

  不是,如果只是这样的话,嵌入式就没有存在的必要了,除了来自PC的应用外,嵌入式系统更N的应用,应该就是除PC外的其它各行各业了! 我们吼了好多年的信息化社会,信息化社会,什么是信息化社会? 我认为信息化社会不是指能上个网就是信息化社会,而是所有东西都数字化、信息化,那才叫信息化社会,这个,应该就是嵌入式的用武之地了!

  还是先从每个人都见过的东西入手来说,这样你好理解!

  POS机大家应该都见过把,就是去超市,去家x福和沃x玛买东西时结账收银的那个东西。哪个东西就是POS机,典型的嵌入式系统: 首先,POS机确实是一个计算机,有主板有CPU有操作系统有软件,具备计算机的核心特征,因此是一个计算机。其次,它是针对一个专门应用的计算机,这个专门应用就是结账收银! 按照我们之前对嵌入式系统的定义,不难理解,POS机就是一个嵌入式系统!

  我们把这个POS机(先说原始的大头的POS机)跟PC比较一下。大家对PC都很熟,因此,以PC为参照和基准进行比较!

  我们从硬件和软件两方面来比较:

  先说硬件:PC上的硬件有哪些呢?有CPU,内存,显卡,声卡,硬盘,网卡,键盘,鼠标等东西,如果我们要参照PC来做一个POS机的话,该怎么做呢?

  看看POS机上都需要哪些东西:CPU,内存是必须的,网卡、显卡和键盘应该是要的,声卡和鼠标应该就没太大的必要了。因此,如果要基于PC来做POS机的话,就要去掉声卡和鼠标,同时,增加一个显示屏(pos机有两个屏的),一个打印机.去掉一些硬件,加一些硬件,这就是硬件可裁减。硬件要工作,是需要软件支持的,至少需要驱动支持,因此,去掉一些硬件添加一些硬件,软件也必须跟着要去掉一些,添加一些,这就是软件可裁减, 加一起,就是嵌入式系统定义里面的那句话了:嵌入式系统是针对某个应用,软硬件可裁减的,xxxxxx的计算机系统。可裁减的意思理解了吧?

  上面的:xxxxx 是定义中的:体积,功耗和成本。体积和功耗,其实在POS机中感觉还不是太明显,因为这种大头的POS机对体积不敏感,放它的空间有滴是(当然也不能极品的整得太大),对功耗也不是太敏感,交流电供电,每天都要关机发热也不大.这两点在手机之类的手持设备的嵌入式产品中是很敏感的。你的手机做成砖头那么大,估计你就不想买了(除非女同胞防身用),如果功耗很大,充满电只能用1个小时,无论如何你肯定是不会买的,因此,嵌入式系统的定义中,说:对体积和功耗有严格要求,就是这个意思,大致理解了吧?

  再说成本,这个非常敏感。简单举个例你就一下明白了: 假如你是苹果公司的老板,一年卖了1000万部IPHONE,如果iphone的某个元器件能够省10块钱,卖1000万部就节省1个亿,节省出来的钱就相当于是赚的钱,如果实在不想赚钱的话,拿去给员工发奖金也好阿! 因此,嵌入式设备对成本是非常敏感的!

  基于对成本敏感的这一点,你要明白: 我们做嵌入式产品,不是哪个CPU 牛X 就用哪个CPU,而是要综合多方面的因素来选择,arm9能搞定的,就不用arm11,就不用a8,就不用a9。不选贵的,只选对的,然也!

    以上是关于嵌入式中-通俗易懂!牛人是这么解释嵌入式系统概念的的相关介绍,如果想要了解更多相关信息,请多多关注eeworld,eeworld电子工程将给大家提供更全、更详细、更新的资讯信息。

  1、事务的基本概念

语句的时候,会要求该系列操作必须全部执行,而不能仅执行一部分。例如,一个转账操作:

  这两条SQL语句必须全部执行,或者,由于某些原因,如果第一条语句成功,第二条语句失败,就必须全部撤销。

  这种把多条语句作为一个整体进行操作的功能,被称为数据库事务。数据库事务可以确保该事务范围内的所有操作都可以全部成功或者全部失败。如果事务失败,那么效果就和没有执行这些SQL一样,不会对数据库数据有任何改动。

  2、数据库事务的四个特性(原子性、一致性、隔离性、持久性)

  数据库事务具有ACID这4个特性:

  A:Atomic,原子性,将所有SQL作为原子工作单元执行,要么全部执行,要么全部不执行;

  C:Consistent,一致性,事务完成后,所有数据的状态都是一致的,即A账户只要减去了100,B账户则必定加上了100;

  I:Isolation,隔离性,如果有多个事务并发执行,每个事务作出的修改必须与其他事务隔离;例如同时有T1和T2两个并发事务,从T1角度来看,T2要不在T1执行之前就已经结束,要么在T1执行完成后才开始。将多个事务隔离开,每个事务都不能访问到其他事务操作过程中的状态。

  D:Duration,持久性,即事务完成后,对数据库数据的修改被持久化存储。

  对于单条SQL语句,数据库系统自动将其作为一个事务执行,这种事务被称为隐式事务。

  要手动把多条SQL语句作为一个事务执行,使用BEGIN开启一个事务,使用COMMIT提交一个事务,这种事务被称为显式事务。COMMIT是指提交事务,即试图把事务内的所有SQL所做的修改永久保存。如果COMMIT语句执行失败了,整个事务也会失败。多条SQL语句要想作为一个事务执行,就必须使用显式事务。

  例如,把上述的转账操作作为一个显式事务:

  有些时候,我们希望主动让事务失败,这时,可以用ROLLBACK回滚事务,整个事务会失败:

  数据库事务是由数据库系统保证的,我们只需要根据业务逻辑使用它就可以。

  2.1、多用户并发可能发生的问题(脏读、不可重复读、幻读)

  对于两个并发执行的事务,如果涉及到操作同一条

的时候,可能会发生问题。在没有数据库隔离性的情况下,多用户并发操作可能会发生以下问题,包括脏读、不可重复读、幻读等。

  脏读是指一个事务读取了另一个未提交事务在执行过程中的数据,该数据可能并不是数据库最终的数据。

  例如:当一个事务的操作正在多次修改数据,而在该事务还未提交的时候,另外一个并发事务来读取了数据,就会导致读取到的数据并非是最终持久化之后的数据,这个数据就是脏读的数据。

  最典型的例子就是银行转账,从A账户转账100到B账户,脚本命令为:

  在这个事务执行过程中,另外一个事务读取结果发现B账户中的钱已经到账,提示B钱已到账,B就进行了下一步的操作。但是假设最终转账事务失败了,导致操作回滚。实际上B并未收到钱,但是进行了下一步的操作,造成了损失,这就是脏读。

  不可重复读是指对于数据库中的某个数据,一个事务在执行过程中多次查询返回了不同的查询结果,这是由于在查询间隔,被另一个事务修改并提交了。

  例如事务T1正在读取某一数据,而事务T2立马修改了这个数据并且提交事务给数据库,事务T1再次读取该数据时就得到了不同的结果,由此就发生了不可重复读。

  不可重复读同脏读的区别在于,脏读是一个事务读取了另一未完成的事务执行过程中的数据,而不可重复读是一个事务执行过程中,另一事务提交并修改了当前事务正在读取的数据。

  在某些情况下,不可重复读并不是问题,比如我们多次查询某个数据当然以最后查询得到的结果为主。但在另一些情况下就有可能发生问题,例如对于同一个数据A和B依次查询就可能不同,A和B就可能打起来了……

  幻读是事务非独立执行时发生的一种现象。例如事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。

  幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。

  3、数据库提供的四种隔离级别

  当多个线程都开启事务操作数据库中的数据时,数据库系统要能进行隔离操作,以保证各个线程获取数据的准确性。数据库系统提供了隔离级别来让我们有针对性地选择事务的隔离级别,避免数据不一致的问题。

  ①Serializable(串行化):可避免脏读、不可重复读、幻读的发生。

  ②Repeatableread(可重复读):可避免脏读、不可重复读的发生。

  ③Readcommitted(读已提交):可避免脏读的发生。

  ④Readuncommitted(读未提交):最低级别,任何情况都无法保证。

  4种隔离级别分别对应可能会出现的数据不一致的情况如下:

  3.1Readuncommitted隔离级别(无法避免数据不一致问题)

  ReadUncommitted是隔离级别最低的一种事务级别。在这种隔离级别下,一个事务会读到另一个事务更新后但未提交的数据,如果那另一个事务进行了回滚,那么当前事务读到的数据就是脏数据,这就是脏读(DirtyRead)。

  在ReadCommitted隔离级别下,一个事务可能会遇到不可重复读(NonRepeatableRead)的问题。不可重复读是指,在一个事务内,多次读同一数据,在这个事务还没有结束时,如果另一个事务恰好修改了这个数据,那么,在第一个事务中,两次读取的数据就可能不一致。

  3.3Repeatableread隔离级别(可避免脏读和不可重复读,默认隔离级别)

  在RepeatableRead隔离级别下,一个事务可能会遇到幻读(PhantomRead)的问题。幻读是指,在一个事务中,第一次查询某条记录,发现没有,但是,当试图更新这条不存在的记录时,竟然能成功,并且,再次读取同一条记录,它就神奇地出现了。

  如果没有指定隔离级别,数据库就会使用默认的隔离级别。在MySQL中,如果使用InnoDB,默认的隔离级别是RepeatableRead。

  3.4、Serializable(可避免脏读、不可重复读、幻读)

  Serializable是最严格的隔离级别。在Serializable隔离级别下,所有事务按照次序依次执行,因此,脏读、不可重复读、幻读都不会出现。虽然Serializable隔离级别下的事务具有最高的安全性,但是,由于事务是串行执行,所以效率会大大下降,应用程序的性能会急剧降低。如果没有特别重要的情景,一般都不会使用Serializable隔离级别。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-7),我们将立即处理


打印机基于主机的驱动程序和软件安装程序有何区别吗?

答: 系统自带的打印机驱动是一种通用的程序,兼容性较强,能够应付一般的打印.... 随机配来的安...

我要回帖

更多关于 简述常见的应用软件 的文章

 

随机推荐