❶ android中有几种布局技术,各自优缺点
在4.0以前版本中一共有五种布局,都是ViewGroup的子类。分别是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。而TableLayout是LinearLayout的子类。(中文分别是:绝对布局、相对布局、线性布局念弊敏、帧布局、表格布局)。
在2.2作业系统中将AbsoluteLayout过期。而目前FrameLayout、TableLayout也逐渐少用。
在4.0之后又新增GridLayout。(GridLayout最经典的案例是计算器接口)
总之,Android中一共有六种布局。目前推荐使用RelativeLayout、LinearLayout、GridLayout三种布局。
一般简单的布局就用LinearLayout,复杂点的用RelativeLayout(可以防止多层巢状),像FrameLayout,里面的控制元件是重叠的,AbsoluteLayout里面控制元件位置是绝对的,在萤幕适配方面就不行了。
xml布局简单,推荐使用;程式码布局可以实现更丰富的功能。
具体使用根据你自己专案的需求来选择。
RAID是“Rendant Array of Independent Disk”的缩写,中文意思是独立冗余磁盘阵列。
主要包含RAID 0~RAID 7等数个规范,它们的侧重点各不相同,常见的规范有如下几种:
RAID 0:无差错控制的带区组
要实现RAID0必须要有两个以上硬盘驱动器,RAID0实现了带区组,资料并不是储存在一个硬盘上,而是分成资料块储存在不同驱动器上。因为将资料分布在不同驱动器上,所以资料吞吐率大大提高,驱动器的负载也比较平衡。如果刚好所需要的资料在不同的驱动器上效率最好。它不需要计算校验码,实现容易。它的缺点是它没有资料差错控制,如果一个驱动器中的资料发生错误,即使其它盘上的资料正确也无济于事了。不应该将它用于对资料稳定性要求高的场合。如果使用者进卜派行图象(包括动画)编辑和其它要求传输比较大的场合使用RAID0比较合适。同时,RAID可以提高资料传输速率,比如所需读取的档案分布在两个硬盘上,这两个硬盘可以同时读取。那么原来读取同样档案的时间被缩短为1/2。在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能的,如果一个磁盘(物理)损坏,则所有的资料都无法使用。
RAID 1:镜象结构
raid1对于使用这种RAID1结构的装置来说,RAID控制器必须能够同时对两个盘进行读操作和对两个镜象盘进行写操作。通过下面的结构图您也可以看到必须有两个驱动器。因为是镜象结构在一组盘出现问题时,可以使用镜象,提高系统的容错能力。它比较容易设计和实现。每读一次盘只能读出一块资料,也就是说资料块传送速率与单独的盘的读取速率相同。因为RAID1的校验十分完备,因此对系统的处理能力有很大的影响,通常的RAID功能由软体实现,而这样的实现方法在服务器负载比较重的时候会大大影响服务器效率。当您的系统需要极高的可靠性时,如进行资料统计,那么使用RAID1比较合适。而且RAID1技术支援“热替换”,即不断电的情况下对故障磁盘进行更换,更换完毕只要从映象盘上恢复资料即可。当主仔枝硬盘损坏时,映象硬盘就可以代替主硬盘工作。映象硬盘相当于一个备份盘,可想而知,这种硬盘模式的安全性是非常高的,RAID 1的资料安全性在所有的RAID级别上来说是最好的。但是其磁盘的利用率却只有50%,是所有RAID级别中最低的。
RAID2:带海明码校验
从概念上讲,RAID 2 同RAID 3类似,两者都是将资料条块化分布于不同的硬盘上, 条块单位为位或字 节。然而RAID 2 使用一定的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复资讯,使得RAID 2技术实施更复杂。因此,在商业环境中很少使用。下图右边的各个磁盘上是资料的各个位,由一个数据不同的位运算得到的海明校验码可以储存另一组磁盘上,具体情况请见下图。由于海明码的特点,它可以在资料发生错误的情况下将错误校正,以保证输出的正确。它的资料传送速率相当高,如果希望达到比较理想的速度,那最好提高储存校验码ECC码的硬盘,对于控制器的设计来说,它又比RAID3,4或5要简单。没有免费的午餐,这里也一样,要利用海明码,必须要付出资料冗余的代价。输出资料的速率与驱动器组中速度最慢的相等。
RAID3:带奇偶校验码的并行传送
raid3这种校验码与RAID2不同,只能查错不能纠错。它访问资料时一次处理一个带区,这样可以提高读取和写入速度,它像RAID 0一样以并行的方式来存放资料,但速度没有RAID 0快。校验码在写入资料时产生并储存在另一个磁盘上。需要实现时使用者必须要有三个以上的驱动器,写入速率与读出速率都很高,因为校验位比较少,因此计算时间相对而言比较少。用软体实现RAID控制将是十分困难的,控制器的实现也不是很容易。它主要用于图形(包括动画)等要求吞吐率比较高的场合。不同于RAID 2,RAID 3使用单块磁盘存放奇偶校验资讯。如果一块磁盘失效,奇偶盘及其他资料盘可以重新产生资料。如果奇偶盘失效,则不影响资料使用。RAID 3对于大量的连续资料可提供很好的传输率,但对于随机资料,奇偶盘会成为写操作的瓶颈。利用单独的校验盘来保护资料虽然没有映象的安全性高,但是硬盘利用率得到了很大的提高,为(n-1)/n。
RAID4:带奇偶校验码的独立磁盘结构
raid4RAID4和RAID3很像,不同的是,它对资料的访问是按资料块进行的,也就是按磁盘进行的,每次是一个盘。在图上可以这么看,RAID3是一次一横条,而RAID4一次一竖条。它的特点和RAID3也挺像,不过在失败恢复时,它的难度可要比RAID3大得多了,控制器的设计难度也要大许多,而且访问资料的效率不怎么好。
RAID5:分散式奇偶校验的独立磁盘结构
RAID5清晰图片从它的示意图上可以看到,它的奇偶校验码存在于所有磁盘上,其中的p0代表第0带区的奇偶校验值,其它的意思也相同。RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性,允许单个磁盘出错。RAID 5也是以资料的校验位来保证资料的安全,但它不是以单独硬盘来存放资料的校验位,而是将资料段的校验位互动存放于各个硬盘上。这样,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的资料。硬盘的利用率为n-1。但是它对资料传输的并行性解决不好,而且控制器的设计也相当困难。RAID 3 与RAID 5相比,重要的区别在于RAID 3每进行一次资料传输,需涉及到所有的阵列盘。而对于RAID 5来说,大部分资料传输只对一块磁盘操作,可进行并行操作。在RAID 5中有“写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的资料及奇偶资讯,两次写新的资料及奇偶资讯。RAID-5的话,优点是提供了冗余性(支援一块盘掉线后仍然正常执行),磁盘空间利用率较高(N-1/N),读写速度较快(N-1倍)。RAID5最大的好处是在一块盘掉线的情况下,RAID照常工作,相对于RAID0必须每一块盘都正常才可以正常工作的状况容错效能好多了。因此RAID5是RAID级别中最常见的一个型别。RAID5校验位即P位是通过其它条带资料做异或(xor)求得的。计算公式为P=D0xorD1xorD2…xorDn,其中p代表校验块,Dn代表相应的资料块,xor是数学运算子号异或。
RAID5校验位演算法详解
P=D1 xor D2 xor D3 … xor Dn (D1,D2,D3 …Dn为资料块,P为校验,xor为异或运算)
XOR(Exclusive OR)的校验原理如下表:
A值 B值 Xor结果
0 0 0
1 0 1
0 1 1
1 1 0
这里的A与B值就代表了两个位,从中可以发现,A与B一样时,XOR(非或又称"非异或")结果为0,A与B不一样时,XOR结果就是1,如果知道XOR结果,A和B中的任何两个数值,就可以反推出剩下的一个数值。比如A为1,XOR结果为1,那么B肯定为0,如果XOR结果为0,那么B肯定为1。这就是XOR编码与校验的基本原理。
RAID6:两种储存的奇偶校验码的磁盘结构
raid6名字很长,但是如果看到图,大家立刻会明白是为什么,请注意p0代表第0带区的奇偶校验值,而pA代表资料块A的奇偶校验值。它是对RAID5的扩充套件,主要是用于要求资料绝对不能出错的场合。当然了,由于引入了第二种奇偶校验值,所以需要N+2个磁盘,同时对控制器的设计变得十分复杂,写入速度也不好,用于计算奇偶校验值和验证资料正确性所花费的时间比较多,造成了不必须的负载。我想除了军队没有人用得起这种东西。
常见的RAID6组建型别RAID 6(6D + 2P)
1 RAID 6(6D + 2P)原理
和RAID 5相似,RAID 6(6D + 2P)根据条带化的资料生成校验资讯,条带化资料和校验资料一起分散储存到RAID组的各个磁盘上。在图1中,D0,D1,D2,D3,D4和D5是条带化的资料,P代表校验资料,Q是第二份校验资料。
RAID 6(6D + 2P)根据条带化的资料生成校验资讯,条带化资料和校验资料一起分散储存到RAID组的各个磁盘上
RAID 6校验资料生成公式(P和Q):
P的生成用了异或
P = D0 XOR D1 XOR D2 XOR D3 XOR D4 XOR D5
Q的生成用了系数和异或
Q = A0*D0 XOR A1*D1 XOR A2*D2 XOR A3*D3 XOR A4*D4 XOR A5*D5
D0~D5:条带化资料
A0~A5:系数
XOR:异或
*:乘
在RAID 6中,当有1块磁盘出故障的时候,利用公式1恢复资料,这个过程是和RAID 5一样的。而当有2块磁盘同时出故障的时候,就需要同时用公式1和公式2来恢复资料了。
各系数A0~A5是线性无关的系数,在D0,D1,D2,D3,D4,D5,P,Q中有两个未知数的情况下,也可以联列求解两个方程得出两个未知数的值。这样在一个RAID组中有两块磁盘同时坏的情况下,也可以恢复资料。
上面描述的是校验资料生成的算法。其实RAID 6的核心就是有两份检验资料,以保证两块磁盘同时出故障的时候,也能保障资料的安全。
RAID7:优化的高速资料传送磁盘结构
RAID7所有的I/O传送均是同步进行的,可以分别控制,这样提高了系统的并行性,提高系统访问资料的速度;每个磁盘都带有高速缓冲储存器,实时作业系统可以使用任何实时操作晶片,达到不同实时系统的需要。允许使用SNMP协议进行管理和监视,可以对校验区指定独立的传送通道以提高效率。可以连线多台主机,因为加入高速缓冲储存器,当多使用者访问系统时,访问时间几乎接近于0。由于采用并行结构,因此资料访问效率大大提高。需要注意的是它引入了一个高速缓冲储存器,这有利有弊,因为一旦系统断电,在高速缓冲储存器内的资料就会全部丢失,因此需要和UPS一起工作。当然了,这么快的东西,价格也非常昂贵。
RAID10/01:高可靠性与高效磁盘结构
这种结构无非是一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充,达到既高效又高速还可以互为映象的目的。大家可以结合两种结构的优点和缺点来理解这种新结构。这种新结构的价格高,可扩充性不好。主要用于容量不大,但要求速度和差错控制的资料库中。
其中可分为两种组合:RAID10和RAID01
RAID 10是先镜射再分割槽资料。是将所有硬盘分为两组,视为是RAID 0的最低组合,然后将这两组各自视为RAID 1运作。RAID 10有着不错的读取速度,而且拥有比RAID 0更高的资料保护性。
RAID 01则是跟RAID 10的程式相反,是先分割槽再将资料镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0运作。RAID 01比起RAID 10有着更快的读写速度,不过也多了一些会让整个硬盘组停止运转的机率;因为只要同一组的硬盘全部损毁,RAID 01就会停止运作,而RAID 10则可以在牺牲RAID 0的优势下正常运作。
RAID 10巧妙的利用了RAID 0的速度以及RAID 1的保护两种特性,不过它的缺点是需要的硬盘数较多,因为至少必须拥有四个以上的偶数硬盘才能使用。
RAID 50:被称为分布奇偶位阵列条带
同RAID 10相仿的,它具有RAID 5和RAID 0的共同特性。它由两组RAID 5磁盘组成(每组最少3个),每一组都使用了分散式奇偶位,而两组硬盘再组建成RAID 0,实验跨磁盘抽取资料。RAID 50提供可靠的资料储存和优秀的整体效能,并支援更大的卷尺寸。即使两个物理磁盘发生故障(每个阵列中一个),资料也可以顺利恢复过来。
RAID 50最少需要6个驱动器,它最适合需要高可靠性储存、高读取速度、高资料传输效能的应用。这些应用包括事务处理和有许多使用者存取小档案的办公应用程式。
RAID 53:称为高效资料传送磁盘结构
结构的实施同Level 0资料条阵列,其中,每一段都是一个RAID 3阵列。它的冗余与容错能力同RAID 3。这对需要具有高资料传输率的RAID 3配置的系统有益,但是它价格昂贵、效率偏低。
RAID 1.5:一个新生的磁盘阵列方式
它具有RAID 0+1的特性,而不同的是,它的实现只需要2个硬盘。
从表面上来看,组建RAID 1.5后的磁盘,两个都具有相同的资料。当然,RAID 1.5也是一种不能完全利用磁盘空间的磁盘阵列模式,因此,两个80GB的硬盘在组建RAID 1.5后,和RAID 1是一样的,即只有80GB的实际使用空间,另外80GB是它的备份资料。如果把两个硬盘分开,分别把他们执行在原系统,也是畅通无阻的。但通过实际应用,我们发现如果两个硬盘在分开执行后,其资料的轻微改变都会引起再次重组后的磁盘阵列,没法实现完全的资料恢复,而是以资料较少的磁盘为准。
:ke../view/7102.htm
一是基于端口的静态vlan,一是基于mac地址的动态vlan,
布局最好是根据电路的原理先把元器件布局好,布线的话,数位电路用自动布线加手工调整,也可以先把关键的部分手工布好,再自动走其他的线,最后手工调整,类比电路、高频电路都是需要手工布线的 自动的快,手动的是合理
一般是先自动后再用手动更改自动布线效率高,手工布线更合理
air sole:元祖级气垫,厚1/2英寸,具有一定减震力现在常常用于入门级球鞋中。分为内建和外接。
zoom air:在一个较薄的气垫中加入立体织物,以增强其弹性,多用于前掌内建,以增加启动速度。
zoom cage:zoom air的加大版本,在强调弹性的同时加强了缓震性,但是由于设计因素,因此外部基本上加上龙骨作为支撑。多用于跑鞋。
air max:气体容量大,缓震效果一流,内部分隔为不同气室,气压不同,以增强稳定性。多用于中锋鞋或者后掌。脚感较硬,沉重。
total max:理解为巨型max就可以了。
tuned air:一种非常好的气垫,内部半圆形球体可以调节气压,缓震效果一流,但是成本太高,已经几乎绝迹,但是有的跑鞋上貌似还有使用的说。
shox:工程橡胶一体铸成的圆柱体结构,机械缓震体系,依赖形变来缓冲并反弹,目前唯一经过证实可以提高弹跳的科技。
impax:另外一种机械缓震系统,依靠拱形结构在运动中的形变来吸收冲击力。实际应用效果远不如理论效果,缓震较差,硬。
i.p.s:jordan系列自主研发的最新科技,根据运动中足底受力点来安置不同密度的phylon柱来提供缓震,用于jordan鞋。
phylon:就是你看见的nike的鞋子的白色鞋底
单提马:中路防守薄弱 可以起横车在六路和四路加强中路防与攻 注意对手一般会从中路进攻 比如盘头马。 窝心炮:炮窝心不宜太久,如果出不去了会造成麻烦 一般是为了强行吃对方中路的兵或进五路兵。 巡河车:对掉兵卒,活马路,并且保马,要注意如果你是车 马 兵这样的位置,对方进炮拴住你车和马 那就相当麻烦了,所以进巡河车一定注意对方的炮。 夹炮屏风:炮在士角的位置 然后上两个正马,一般走成士角炮 和 过宫炮 局,灵活运用炮,攻守兼备。但要注意对方会出车骚扰你的阵型 特别是没有跟的马。 仙人指路:第一步走三路或七路兵,应付对仙人指路有同样进兵卒,有顽强凶狠的直接运炮打兵。所以要看对方怎么走,这种开局比较考棋力。初学者一般不建议走。 飞相局:首着飞相,比较注重防守,可以走成很多布局。。
一般的分旱秧和水秧,这个前期秧苗耐旱点且工作简单一些,但是浪费种子多一点秧苗没有水秧苗好。至于很详细的东西就不好说了。
动态布局,也就是可以根据业务的需求改变接口。实际上就是用程式码写出接口,程式码量比较大。而且维护起来十分的繁琐。特别是一些接口空间比较多的时候。静态的布局,是通过xml来实现的,适用于页面比较固定的情况。但是维护起来比较方便。
喷墨印表机优点:整机价格相对彩色镭射机便宜,较低的一次性购买成本获得彩色照片级输出的效果,缺点:使用耗材为墨盒,成本较高,长时间不用容易堵头;
镭射印表机优点:耗材单张打印成本低,耗材为墨粉,长时间不用也不用担心堵头的问题,打印速度快,高阶产品可以满足高负荷企业级输出以及图文输出,缺点:中低端彩激的彩色打印效果不如喷墨机,可使用的打印介质较少;
针式印表机优点:可以复写打印(发票及多联单据),可以超厚打印(存折证书打印),耗材为色带,耗材成本低,缺点:工作噪音大,体积不可能缩小,打印精度不如喷墨及镭射机。
❷ Android音视频系列(七):PCM音频单声道与双声道的相互转换
上一篇我们已经学习了PCM音频的保存格式,这一篇我们通过掌握的知识,完成PCM音频的单声道和双声道的互相转换。
首先我们把上一篇的最核心部分贴出来:
我们首先完成单声道转双声道的操作。
单声道转双声道的基本原理:
首先我录制了一个音频保存到ArrayList中:
录制的是16位的数据,所以我们每一个采样的数据会占据两位,所以在拷贝的过程桥庆中,我们也要每两位拷贝一次敏庆握:
单声道转声道的操作就完成了。
双声道转单声道的原理:
我们可以按照单声道双声道的做法,每四位取前两位或后两位的数据即可。但是这里我们换一种做法。
这里我们使用了ByteBuffer帮助我们把Byte转成Short。其中有一个很重要的坑,就是设置Byte转Short的规则:
所以我们一定要确保高低位的顺序,否则得到的Short一定是错的,经过测试,录制的音频是低位在前,所以我们修改ByteBuffer默认的高位在前的配置:
相同的原理,我们需要Byte转Int都可以借助对应的Buffer进行读取,非常的方便。
基本流程和第一种方法一样,如果是你用的java,你还可以通过位运算进行Short和Byte的转换,但是kotlin的对应的运算符却无法正确转换,具体原因还不清楚,这也是为什差梁么我使用了Buffer进行转换的原因。
只要我们掌握了PCM的保存格式,单声道和双声道的互相转换还是非常轻松的,下一篇我们来了解一下新的音频格式:WAV。
❸ Android开发问题怎么解决
R.java消失或解析异常
自定义title栏
SQLite isFirst和isBeforeFirst方法的区别
eclipse删除空行
getX()和getRawX()的区别
imagView居中显示问题
synchronized引发了 java.util.
获取随机颜色
去掉Activity的标题栏,全屏显示
如何修改应用名称及应用图标
关于调试方法
Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
android.content.res.Resources.loadXmlResourceParser
android.content.res.Resources$NotFoundException
交互性的button定义的方法
在超级终端中执行程序报错-Permission deny
从svn导入工程项目有惊叹号
从svn导入工程项目有惊叹号
首次进入带有EditText的Activity不自动弹出软键盘,再次点击才弹
Gallery中OnItemClickListener与OnItemSelectedListener的区别
Eclipse中签名导出apk崩溃,手动签名
android.view.InflateException: Binary XML file line #异常的解决
判断是否有root权限
最简单的Root 模拟器的方法
新版ADT开启eclipse提示 "Running Android Lint" has encountered a problem
新版ADT开启eclipse提示cannot open libstdc++.so.6..
无法升级ADT
❹ android中=和|=有什么区别在线等,多谢各位大神了
1、=符号,就是赋值
baseNF.defaults = Notification.DEFAULT_SOUND;
意思:只有在这种情况下,才会弹出通知。
2、|=符号,a|=b的意思就是把a和b按位或然后赋值给a 按位或的意思就是先把a和b都换成2进制,然后用或操作,相当于a=a|b
意思:这边系统自己通过定义,baseNF.defaults =Notification.DEFAULT_SOUND|Notification.DEFAULT_VIBRATE;得出来的值,就是2种情况下,都会通知的意思。
❺ 定位服务在哪里打开 苹果安卓操作各不一样
1、苹果iOS系统手机定位:在手机点击【设置】,或者在主界面下拉打开搜索栏点击输入【设置】,点击进入;进入设置页面以后,往下拉,找到【隐私】,点击进入隐私页面;第一项就是【定位服务】,点击进入之后将【定位服务】的开关打开即可;如果是某个软件没有打开定位,可以在【设置】下面拉到底部找到对应的软件,点击进入之后就可以看到【位置】选项,一般会有【永不】、【使用应用期间】两种选择,选择后者即可打开;
2、安卓手机定位:打开设置,在安全和隐私里面有定位服务点进去以后就可以看见GPS选项了,打开就可以了;或者有的手机下滑屏幕打开快捷开关界面,按一下GPS的按钮,即可打开GPS。