当前位置:  编程技术>移动开发
本页文章导读:
    ▪关于运放的共模抑制比的思忖        关于运放的共模抑制比的思考共模抑制比(CMRR) 是指差分放大器对同时加到两个输入端上的共模信号的抑制能力。更确切地说,CMRR是产生特定输出所需输入的共模电压与产生同样输出所需输入.........
    ▪ java正则表达式证验邮箱、IP地址、手机号码        java正则表达式验证邮箱、IP地址、手机号码1.java验证IP地址: Pattern pattern = Pattern.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?! \\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4].........
    ▪ 字符装置与块设备的区别       字符设备与块设备的区别在LINUX里面,设备类型分为:字符设备、块设备以及网络设备, PCI是一种和ISA为一类的总线结构,归属于网络驱动设备~~~ 字符设备、块设备主要区别是:在对字符设.........

[1]关于运放的共模抑制比的思忖
    来源: 互联网  发布时间: 2014-02-18
关于运放的共模抑制比的思考

共模抑制比(CMRR) 是指差分放大器对同时加到两个输入端上的共模信号的抑制能力。更确切地说,CMRR是产生特定输出所需输入的共模电压与产生同样输出所需输入的差分电压的比值。

 

差分放大器共模响应,是指放大器中共模电压Vcm引起的差模电压Vcm_diff。根据CMRR 的定义,设Vcm_diff为差模下对应的电压:

 

Vo= Vcm_diff× Adiffm= Vcm ×Acm

重新组合公式:

Adiffm/Acm = Vcm/Vcm_diff=CMRR(作为增益比)

 

显然可得:

 

CMRR = Vcm/Vcm_diff

 

其中:Acm为共模增益,Adiffm为差模增益,Vcm_diff为共模电压引起的运放差分偏移,Vcm为共模电压(测试信号)。后一个方程可使我们更为确切地了解CMRR 参数的含义,即CMRR 与放大器的增益和频率无关。

 

然而在实际电路中,由于电阻或线路的不对称性,共模抑制比比手册中给出的要小。一般正常的情况下,能小到20~60dB。所以,运放内部引起的共模基本忽略不计。主要考虑片外精阻不对称引起的共模偏差。


当输入均是Vcm时,输出Vout的电压值是:


如果R3=R4,R2= R1,共模抑制比会无穷大。放大倍率为1,但如果每个电阻使用0.5%的10K电阻,写个简单的Matlab程序,代码如下:

clc,clear

 

r1 = 10000;

r2 = 10000;

r3 = 10000;

r4 = 10000;

alpha = 0.5 / 100;

 

CMmax = -1000;

CMmin = 1000;

Dmax = -1000;

Dmin = 1000;

Kcmrmax = -100000;

Kcmrmin = 100000;

for rr1=[r1*(1-alpha) r1 r1 * (1+alpha)]

    for rr2=[r2*(1-alpha) r2 r2 * (1+alpha)]

        for rr3=[r3*(1-alpha) r3 r3 * (1+alpha)]

            for rr4=[r4*(1-alpha) r4 r4*(1+alpha)]

                Cratio = (rr3 * rr2 - rr1 *rr4) / (rr1 + rr3) / rr2;

                Dratio = (rr3 * rr2 + rr3 *rr4) / (rr1 + rr3) / rr2;

                Kcmr = 20 *log10(abs(Dratio/Cratio));

                if (Cratio > CMmax)

                    CMmax = Cratio;

                    CMmax_ = [rr1 rr2 rr3 rr4Cratio Dratio Kcmr];

                end

                if (Cratio < CMmin)

                    CMmin = Cratio;

                    CMmin_ = [rr1 rr2 rr3 rr4Cratio Dratio Kcmr];

                end

                if (Dratio > Dmax)

                    Dmax = Dratio;

                    Dmax_ = [rr1 rr2 rr3 rr4 Cratio Dratio Kcmr];

                end

                if (Dratio < Dmin)

                    Dmin = Dratio;

                    Dmin_ = [rr1 rr2 rr3 rr4Cratio Dratio Kcmr];

                end

                if (Kcmr > Kcmrmax)

                    Kcmrmax = Kcmr;

                    Kcmrmax_ = [rr1 rr2 rr3 rr4Cratio Dratio Kcmr];

                end

                if (Kcmr < Kcmrmin)

                    Kcmrmin = Kcmr;

                    Kcmrmin_ = [rr1 rr2 rr3 rr4Cratio Dratio Kcmr];

                end

            end

        end

    end

end

format short g;

CMmax_,CMmin_,Dmax_,Dmin_,Kcmrmax_,Kcmrmin_

 

计算结果:

依次是(r1,r2,r3,r4在电路中的实际值,共模放大率,差模放大率,共模抑制比)

CMmax_ = 9950   10050  10050  9950    0.0099502  1            40.043

CMmin_ = 10050   9950  9950   10050   -0.01005    1            39.956

Dmax_  = 9950   9950   10050 10050   0           1.0101       Inf

Dmin_  =10050   10050  9950   9950   0           0.99005       Inf

Kcmrmax_ =9950   9950  9950   9950    0          1             Inf

Kcmrmin_ =10050  9950   9950   10050  -0.01005      1            39.956

 

最差的情况下,如果有1V的共模,将在输出端最大产生10mV (或-10mV) 的电压。这里注意,Kcmr计算输出是Inf,是无穷大的意思。实际上当电阻匹配时,共模抑制比很大,但不会无穷大,最多也就是由运放手册提供的CMRR参数决定。这个参数一般在实际工程上是很难达到的。

 

在实际电路设计中,可以使用高精度万用表测出低漂移的电阻,使得R1=R2, R3=R4,这样,可以是运放的共模抑制比大幅度提升。




    
[2] java正则表达式证验邮箱、IP地址、手机号码
    来源: 互联网  发布时间: 2014-02-18
java正则表达式验证邮箱、IP地址、手机号码
1.java验证IP地址:
Pattern pattern = Pattern.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!


\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])


\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b");
Matcher matcher = pattern.matcher("127.400.600.2"); //以验证127.400.600.2为例
System.out.println(matcher.matches());


2. java验证日期时间,解决润月:
Pattern pattern = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?


((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-


\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}


(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?


[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|


(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-


9])((\\s)|(\\:([0-5]?[0-9])))))?$");
Matcher matcher = pattern.matcher("2000-02-29 23:59:59");
System.out.println(matcher.matches());


3.java验证邮箱格式:
Pattern pattern = Pattern.compile("^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0


-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
Matcher matcher = pattern.matcher("a@aa.com");
System.out.println(matcher.matches());


 
根据实际开发于2009年9月7日最新统计:
 中国电信发布中国3G号码段:中国联通185,186;中国移动188,187;中国电信189,180共6个号段。
 3G业务专属的180-189号段已基本分配给各运营商使用, 其中180、189分配给中国电信,187、188归中国


移动使用,185、186属于新联通。
 中国移动拥有号码段:139、138、137、136、135、134、159、158、157(3G)、152、151、150、188(


3G)、187(3G);14个号段
 中国联通拥有号码段:130、131、132、155、156(3G)、186(3G)、185(3G);6个号段
 中国电信拥有号码段:133、153、189(3G)、180(3G);4个号码段
 移动:
     2G号段(GSM网络)有139,138,137,136,135,134(0-8),159,158,152,151,150
     3G号段(TD-SCDMA网络)有157,188,187
     147是移动TD上网卡专用号段.
 联通:
     2G号段(GSM网络)有130,131,132,155,156
     3G号段(WCDMA网络)有186,185
 电信:
     2G号段(CDMA网络)有133,153
     3G号段(CDMA网络)有189,180


检验手机号码和邮箱的类
package com.ccit.networld.ccs.common.util;
import java.io.IOException;  
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  
import org.apache.log4j.Logger;
 
public class ClassPathResource { 
 private static final Logger logger = Logger.getLogger(ClassPathResource.class);
    public static boolean isMobileNO(String mobiles){     
        Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");     
        Matcher m = p.matcher(mobiles);     
        logger.info(m.matches()+"---");     
        return m.matches();     
    } 
   
    public static boolean isEmail(String email){     
     String str="^([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)*@([a-zA-Z0-9]*[-_]?[a-zA-Z0-9]+)+[\\.][A-


Za-z]{2,3}([\\.][A-Za-z]{2})?$";
        Pattern p = Pattern.compile(str);     
        Matcher m = p.matcher(email);     
        logger.info(m.matches()+"---");     
        return m.matches();     
    } 
    public static void main(String[] args) throws IOException {     
        System.out.println(ClassPathResource.isEmail("121212121212@12-12.co-m.cn"));     
    }  
} 



    
[3] 字符装置与块设备的区别
    来源: 互联网  发布时间: 2014-02-18
字符设备与块设备的区别

在LINUX里面,设备类型分为:字符设备、块设备以及网络设备, PCI是一种和ISA为一类的总线结构,归属于网络驱动设备~~~
字符设备、块设备主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了,而块设备则不然,它利用一块系统内存作为缓冲区,当用户进程对设备请求能满足用户的要求时,就返回请求的数据,如果不能就调用请求函数来进行实际的I/O操作,因此,块设备主要是针对磁盘等慢速设备设计的,以免消耗过多的CPU时间来等待~~~

 

系统中能够随机(不需要按顺序)访问固定大小数据片(chunks)的设备被称作块设备,这些数据片就称作块。最常见的块设备是硬盘,除此以外,还有软盘驱动器、CD-ROM驱动器和闪存等等许多其他块设备。注意,它们都是以安装文件系统的方式使用的——这也是块设备的一般访问方式。

  另一种基本的设备类型是字符设备。字符设备按照字符流的方式被有序访问,像串口和键盘就都属于字符设备。如果一个硬件设备是以字符流的方式被访问的话,那就应该将它归于字符设备;反过来,如果一个设备是随机(无序的)访问的,那么它就属于块设备。

     这两种类型的设备的根本区别在于它们是否可以被随机访问——换句话说就是,能否在访问设备时随意地从一个位置跳转到另一个位置。举个例子,键盘这种设备提供的就是一个数据流,当你敲入"fox" 这个字符串时,键盘驱动程序会按照和输入完全相同的顺序返回这个由三个字符组成的数据流。如果让键盘驱动程序打乱顺序来读字符串,或读取其他字符,都是没有意义的。所以键盘就是一种典型的字符设备,它提供的就是用户从键盘输入的字符流。对键盘进行读操作会得到一个字符流,首先是"f",然后是"o",最后是"x",最终是文件的结束(EOF)。当没人敲键盘时,字符流就是空的。硬盘设备的情况就不大一样了。硬盘设备的驱动可能要求读取磁盘上任意块的内容,然后又转去读取别的块的内容,而被读取的块在磁盘上位置不一定要连续,所以说硬盘可以被随机访问,而不是以流的方式被访问,显然它是一个块设备。

  内核管理块设备要比管理字符设备细致得多,需要考虑的问题和完成的工作相比字符设备来说要复杂许多。这是因为字符设备仅仅需要控制一个位置—当前位置—而块设备访问的位置必须能够在介质的不同区间前后移动。所以事实上内核不必提供一个专门的子系统来管理字符设备,但是对块设备的管理却必须要有一个专门的提供服务的子系统。不仅仅是因为块设备的复杂性远远高于字符设备,更重要的原因是块设备对执行性能的要求很高;对硬盘每多一分利用都会对整个系统的性能带来提升,其效果要远远比键盘吞吐速度成倍的提高大得多。另外,我们将会看到,块设备的复杂性会为这种优化留下很大的施展空间。

  简单来讲,块设备可以随机存取,而字符设备不能随机存取,那裸设备又该如何解释呢?

  难道裸设备,如磁盘裸设备也不能随机读取吗?那在数据库中用裸设备建一个2g的数据文件,为了存取最后一个数据块,难道ORACLE还要把前面的所有数据块都读一遍,显然不符合事实,如果这样解释呢,操作系统不能随机读取,并不意味着数据库也不能随机读取。

  块设备通过系统缓存进行读取,不是直接和物理磁盘读取。字符设备可以直接物理磁盘读取,不经过系统缓存。(如键盘,直接相应中断)

字符设备是裸设备 通过查看 ll /dev/vg00/ 下的内容 若开头带c字符的则为字符设备
块设备是文件设备 通过查看 ll /dev/vg00/ 下的内容 若开头带b字符的则为块符设备

在使用上,只要在对数据库方面的应用需要考虑是选择快设备还是字符设备。一般数据库厂商会建议你建库时使用裸设备(字符设备),空间管理完全由数据库引擎进行管理,这样所有数据和日志直接写盘,当发生系统故障时,系统安全性较强,不至于丢失数据。但还有一种说法是使用块设备便于管理维护人员的系统管理,因为使用裸设备在第一次分配出去之后,这个设备的空间就不能做任何其他用途了,但块设备则不然,你想使用多少空间就分配多少,你可以进行自由的扩展,而无需一次性的全部分配出去。所以我建议在创建数据库master库使用裸设备,而业务数据库及tempdb则使用块设备。


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3