-
浏览器的渲染过程及document和Document的区别
2019-12-02 19:40:111,浏览器把获取到的HTML代码解析成1个DOM树,HTML中的每个标签都是DOM树中的一个节点,根节点就是常用的document对象。DOM树里包含了所有HYML标签,包括display:none隐藏,还有用js动态添加的元素等。 2.浏览器把...浏览器的渲染过程:
1,浏览器把获取到的HTML代码解析成1个DOM树,HTML中的每个标签都是DOM树中的一个节点,根节点就是常用的document对象。DOM树里包含了所有HYML标签,包括display:none隐藏,还有用js动态添加的元素等。
2.浏览器把所有样式解析成样式结果体,在解析的过程中会去掉浏览器不能识别的样式,比如IE会去掉-moz开头的样式,而FF会去掉_开头的样式。
3,DOM Tree 和样式结构体组合后构建render tree,render tree 类似于DOM tree,区别很大,render tree能识别样式,render tree中每个node都有自己的style,而且render tree不包含隐藏的节点(比如display:none的节点,还有head节点),因为这些节点不会用于呈现,而且不会影响呈现的,所以就不会包含到render tree中。注意 visibility:hidden隐藏的元素还是会包含到render tree中,因为visibility:hidden会影响布局,会占有空间。根据css2的标准,render tree中的每个节点都称为Box,理解页面元素为一个具有填充,边距,边框和位置的盒子
4一旦render tree构建完毕后,浏览器就可以根据render tree来绘制页面。所以当render tree中的一部分因为元素的尺寸,布局,隐藏等改变而需要重新构建,这就称为回流。当render tree中的一些元素需要更新属性,而这些属性只会影响元素的外观,风格,而不会影响布局,比如background-color.这就称为重绘。
注意:没个页面至少需要一次回流,就是在页面第一次加载的时候。在回流的时候,浏览器会使渲染树中受到影响的部分失效,并重新构建这部分渲染树,完成回流后,浏览器会重新绘制受影响的部分到屏幕中。document和Document的区别
1.document 代表文档
2.Document 构造函数
document —HTMLDocument.prototype—Document.prototype
1.getElementById方法是定义在Document.prototype上的,即Element节点上不能使用
2.getElementsByTagName方法定义在Document.prototype和Element,prototype
3.getElementByClassName,querySelectorAll,querySelector在Document和Eelement都定义了
4.getElementByName方法定义在HTMLDocument.prototype上的,即非html中的document以外不能使用(xml,document,Element)
5,HTMLDocument.prototype上定义一些常见的属性,body,head分别指代HTML文档中的标签
6.Document.prototype定义了documentElemnet属性,指代的是html,是文档根元素 -
Micro:bit UART SPI IIC的详解及三者的区别和联系
2018-12-08 11:46:52UART 、SPI、 IIC的详解及三者的区别和联系 UART、SPI、IIC是经常用到的几个数据传输标准,下面分别总结一下: UART(Universal Asynchronous Receive Transmitter) 也就是我们经常所说的串口,基本都用于调试...UART, SPI, IIC的详解及三者的区别和联系
I2C和SPI通信方式的讲解
Arduino - mlx90614红外温度传感器和I2C通信UART 、SPI、 IIC的详解及三者的区别和联系
UART、SPI、IIC是经常用到的几个数据传输标准,下面分别总结一下:
-
UART(Universal Asynchronous Receive Transmitter)
也就是我们经常所说的串口,基本都用于调试。主机和从机至少要接三根线,RX、 TX和GND。TX用于发送数据,RX用于接受数据(收发不是一根线,所以是全双工方式)。注意A和B通信A.TX要接B.RX,A.RX要接B.TX(A用TX发B当然要用RX来收了!)如果A是PC机,B是单片机,A和B之间还要接一块电平转换芯片,用于将TTL/CMOS(单片机电平)转换为RS232(PC机电平)。因为TTL/CMOS电平范围是01.8/2.5/3.3/5V(不同单片机范围不同),高电压表示1,低电压表示0。而RS232逻辑电平范围-12V12V,-5-12表示高电平,+5+12V表示低电平(对!你没有听错)。为什么这么设置?这就要追溯到调制解调器出生时代了,有兴趣自己去查资料!
数据协议:以PC机A给单片机B发数据为例(1为高电平,0为低电平):A.TX to B.RX。刚开始B.RX的端口保持1,当A.TX发来一个0作为起始位告诉B我要发数据了!然后就开始发数据,发多少呢?通常一次是5位、6位、7位、8位,这个双方事先要用软件设置好。PC机一般会用串口助手设置,单片机会在uart的驱动中设置。一小帧数据发送完了以后,A.TX给个高电平告诉B.RX我发完了一帧。如果还有数据,就再给个0然后重复上一步。如果双方约定由校验位,还要在发停止位1之前发送个校验位,不过现在一般都不需要校验位了,因为出错的概率太小了,而且一般用于调试。
一般在串口助手上还有个RTS/CTS流控选项,也叫握手,我从来没用过。搬一段我能理解的介绍:RTS(请求发送),CTS(清除发送)。如果要用这两个功能,那就至少要接5根线:RX+TX+GND+RTS+CTS。当A要发送数据时,置RTS有效(可能是置1),告诉B我要发送数据了。当B准备好接受数据后,置CTS有效,告诉A你可以发了。然后他们就实现了两次握手!挺耽误时间是不是?这个RTS还可以当电源使用,如果你不用它的握手功能,且电源电流在50mA以下时,就可以把它置为高电平可以当电源用喔~!
-
SPI(Serial Peripheral Interface, 同步外设接口)
是由摩托罗拉公司开发的全双工同步串行总线,该总线大量用在与EEPROM、ADC、FRAM和显示驱动器之类的慢速外设器件通信。
SPI是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI 接口由SD(串行数据输入),SDO (串行数据输出),SCK(串行移位时钟),CS(从使能信号)四种信号构成,CS 决定了唯一的与主设备通信的从设备,片选信号低电平有效。如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。通讯时,数据由SDO 输出,SDI 输入,数据在时钟的上升或下降沿由SDO 输出,在紧接着的下降或上升沿由SDI 读入,这样经过8/16 次时钟的改变,完成8/16 位数据的传输。
-
IIC(Inter Integrated Circuit)
两根线:一个时钟线SCL和一个数据线SDA。只有一根数据线,所以是半双工通信。接线不难,而且两根线上也可以挂很多设备(每个设备的IIC地址不同),数据协议比较麻烦:
还是假设A给B发数据(这里A.SCL接B.SCL, A.SDA接B.SDA)。起初SDA和SCL上的电平都为高电平。然后A先把SDA拉低,等SDA变为低电平后再把SCL拉低(以上两个动作构成了iic的起始位),此时SDA就可以发送数据了,与此同时,SCL发送一定周期的脉冲(周期和PCLK有关,一般会在IIC的控制寄存器中设置)。SDA发送数据和SCL发送脉冲的要符合的关系是:SDA必须在SCL是高电平是保持有效,在SCL是低电平时发送下一位(SCL会在上升沿对SDA进行采样)。规定一次必须传8位数据,8位数据传输结束后A释放SDA,但SCL再发一个脉冲(这是第九个脉冲),这会触发B通过将SDA置为低电平表示确认(该低电平称为ACK)。最后SCL先变为高电平,SDA再变为高电平(以上两个动作称为结束标志)如果B没有将SDA置为0,则A停止发送下一帧数据。IIC总线(即SDA和SCL)上的每个设备都有唯一地址,数据包传输时先发送地址位,接着才是数据。一个地址字节由7个地址位(可以挂128个设备)和1个指示位组成(7位寻址模式)。指示位是0表示写,1表示读。还有10位寻址模式,使用两个字节来保存地址,第一个字节的最低两位和第二个字节的8位合起来构成10位地址。详解I2C通信协议
未完待续…
-
-
UART, SPI, IIC的详解及三者的区别和联系
2017-05-17 18:07:011、UART, SPI, IIC的详解 UART、SPI、IIC是经常用到的几个数据传输标准,下面分别总结...主机和从机至少要接三根线,RX、TX和GND。TX用于发送数据,RX用于接受数据(收发不是一根线,所以是全双工方式)。注意A和B通1、UART, SPI, IIC的详解
UART、SPI、IIC是经常用到的几个数据传输标准,下面分别总结一下:
UART(Universal Asynchronous Receive Transmitter):也就是我们经常所说的串口,基本都用于调试。
主机和从机至少要接三根线,RX、TX和GND。TX用于发送数据,RX用于接受数据(收发不是一根线,所以是全双工方式)。注意A和B通信A.TX要接B.RX,A.RX要接B.TX(A用TX发B当然要用RX来收了!)
如果A是PC机,B是单片机,A和B之间还要接一块电平转换芯片,用于将TTL/CMOS(单片机电平)转换为RS232(PC机电平)。因为TTL/CMOS电平范围是0~1.8/2.5/3.3/5V(不同单片机范围不同),高电压表示1,低电压表示0。而RS232逻辑电平范围-12V~12V,-5~-12表示高电平,+5~+12V表示低电平(对!你没有听错)。为什么这么设置?这就要追溯到调制解调器出生时代了,有兴趣自己去查资料!
数据协议:以PC机A给单片机B发数据为例(1为高电平,0为低电平):A.TX to B.RX。刚开始B.RX的端口保持1,当A.TX发来一个0作为起始位告诉B我要发数据了!然后就开始发数据,发多少呢?通常一次是5位、6位、7位、8位,这个双方事先要用软件设置好。PC机一般会用串口助手设置,单片机会在uart的驱动中设置。一小帧数据发送完了以后,A.TX给个高电平告诉B.RX我发完了一帧。如果还有数据,就再给个0然后重复上一步。如果双方约定由校验位,还要在发停止位1之前发送个校验位,不过现在一般都不需要校验位了,因为出错的概率太小了,而且一般用于调试。
一般在串口助手上还有个RTS/CTS流控选项,也叫握手,我从来没用过。搬一段我能理解的介绍:RTS(请求发送),CTS(清除发送)。如果要用这两个功能,那就至少要接5根线:RX+TX+GND+RTS+CTS。当A要发送数据时,置RTS有效(可能是置1),告诉B我要发送数据了。当B准备好接受数据后,置CTS有效,告诉A你可以发了。然后他们就实现了两次握手!挺耽误时间是不是?这个RTS还可以当电源使用,如果你不用它的握手功能,且电源电流在50mA以下时,就可以把它置为高电平可以当电源用喔~!SPI(Serial Peripheral Interface, 同步外设接口)是由摩托罗拉公司开发的全双工同步串行总线,该总线大量用在与EEPROM、ADC、FRAM和显示驱动器之类的慢速外设器件通信。
SPI是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI 接口由SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟),CS(从使能信号)四种信号构成,CS 决定了唯一的与主设备通信的从设备,片选信号低电平有效。如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。通讯时,数据由SDO 输出,SDI 输入,数据在时钟的上升或下降沿由SDO 输出,在紧接着的下降或上升沿由SDI 读入,这样经过8/16 次时钟的改变,完成8/16 位数据的传输。
IIC(Inter Integrated Circuit):两根线:一个时钟线SCL和一个数据线SDA。只有一根数据线,所以是半双工通信。接线不难,而且两根线上也可以挂很多设备(每个设备的IIC地址不同),数据协议比较麻烦:还是假设A给B发数据(这里A.SCL接B.SCL, A.SDA接B.SDA)。起初SDA和SCL上的电平都为高电平。然后A先把SDA拉低,等SDA变为低电平后再把SCL拉低(以上两个动作构成了iic的起始位),此时SDA就可以发送数据了,与此同时,SCL发送一定周期的脉冲(周期和PCLK有关,一般会在IIC的控制寄存器中设置)。SDA发送数据和SCL发送脉冲的要符合的关系是:SDA必须在SCL是高电平是保持有效,在SCL是低电平时发送下一位(SCL会在上升沿对SDA进行采样)。规定一次必须传8位数据,8位数据传输结束后A释放SDA,但SCL再发一个脉冲(这是第九个脉冲),这会触发B通过将SDA置为低电平表示确认(该低电平称为ACK)。最后SCL先变为高电平,SDA再变为高电平(以上两个动作称为结束标志)如果B没有将SDA置为0,则A停止发送下一帧数据。IIC总线(即SDA和SCL)上的每个设备都有唯一地址,数据包传输时先发送地址位,接着才是数据。一个地址字节由7个地址位(可以挂128个设备)和1个指示位组成(7位寻址模式)。指示位是0表示写,1表示读。还有10位寻址模式,使用两个字节来保存地址,第一个字节的最低两位和第二个字节的8位合起来构成10位地址。
在I2C总线的应用中应注意的事项总结为以下几点 :
1) 严格按照时序图的要求进行操作,
2) 若与口线上带内部上拉电阻的单片机接口连接,可以不外加上拉电阻。
3) 程序中为配合相应的传输速率,在对口线操作的指令后可用NOP指令加一定的延时。
4) 为了减少意外的干扰信号将EEPROM内的数据改写可用外部写保护引脚(如果有),或者在EEPROM内部没有用的空间写入标志字,每次上电时或复位时做一次检测,判断EEPROM是否被意外改写。
关于IIC总线的操作注意事项
1、对IIC总线的一次操作完之后,需要等待一段时间才能进行第二次操作。否则是启动不了总线的:)
2、在时钟线(SCL)为高电平的时候,一定不能动数据线(SDA)状态,除非是启动或者结束总线2、UART, SPI, IIC的区别与联系:
第一个区别当然是名字:
UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)
SPI(Serial Peripheral Interface:串行外设接口);
I2C(INTER IC BUS)
第二,区别在电气信号线上:
SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现 多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。
如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。
I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。
如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料了解得比较少,这里的描述可能很不完备)UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。
显然,如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
第三,从第二点明显可以看出,SPI和UART可以实现全双工,但I2C不行;
第四,看看牛人们的意见吧!
wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现要简单一些,UART需要固定的波特率,就是说两位数据的间隔要相等,而SPI则无所谓,因为它是有时钟的协议。
quickmouse:I2C的速度比SPI慢一点,协议比SPI复杂一点,但是连线也比标准的SPI要少。
UART一帧可以传5/6/7/8位,IIC必须是8位。IIC和SPI都从最高位开始传。
SPI用片选信号选择从机,IIC用地址选择从机。 -
BeanFactory和FactoryBean的区别及相关分析
2020-04-22 08:19:12用于访问SpringBean容器的根接口。这是bean容器的基本客户机视图; 由BeanFactory中使用的对象实现的接口,这些对象本身就是单个对象的工厂,直接利用getbean()来获取对应的实例话bean的 注意:其中BeanFactory的F.....我所用的Spring版本是5.0.x的版本
BeanFactory和FactoryBean都是接口
1、BeanFactory
用于访问SpringBean容器的根接口。这是bean容器的基本客户机视图;
由BeanFactory中使用的对象实现的接口,这些对象本身就是单个对象的工厂,直接利用getbean()来获取对应的实例话bean的.
注意:其中BeanFactory的FACTORY_BEAN_PREFIX的属性是利用他来区分BeanFactory和FactoryBean的,如果你想获得这个bean的你需要在bean的名字前面加个"&",你才能获得对应的 FactoryBean的实现bean.
2、FactoryBean
a)如果一个bean实现了这个接口,它将被用作一个要公开的对象的工厂,而不是直接作为一个将要公开的bean实例。
注意:实现此接口的bean不能用作普通bean ,FactoryBean是以bean样式定义的,但是为bean引用公开的对象始终是getObject()创建的对象。
b) 当一个类当他的依赖关系很复杂的时候,而我们需要提供一个简单的依赖关系的时候,让外部更容易取配置的时候,可以使用FactoryBean.经典应用场景就是mybatis的SqlsessionFactoryBean对象
c)如果一个类实现了FactoryBean 那么spring容器当中存在两个对象,一个是getObject()返回的对象,另一个是当前对象 getObject得到的对象存在是当前类指定的名字,实现factoryBean对象是 "&" +当前类的名字
太抽象不多废话了直接上代码
例1如下:
TempDaoFactoryBean一个普通的bean
public class TempDaoFactoryBean { public void test(){ System.out.println("TempDaoFactoryBean"); } }
DaoFactoryBean是实现了FactoryBean接口
@Component("daoFactoryBean") public class DaoFactoryBean implements FactoryBean { public void testBean(){ System.out.println("testBean"); } @Override public Object getObject() throws Exception { return new TempDaoFactoryBean(); } @Override public Class<?> getObjectType() { return TempDaoFactoryBean.class; } @Override public boolean isSingleton() { return true; } }
3、配置中信息
@Configuration @ComponentScan("com.lquan") public class Configration { }
4、测试类
public class Test { public static void main(String[] args) { AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(Configration.class); // 注意获取factorybean的实例对象需要在对应beanname前面加"&" DaoFactoryBean daoFactoryBean = (DaoFactoryBean) annotationConfigApplicationContext.getBean("&daoFactoryBean"); daoFactoryBean.testBean(); TempDaoFactoryBean tempDaoFactoryBean = (TempDaoFactoryBean) annotationConfigApplicationContext.getBean("daoFactoryBean"); tempDaoFactoryBean.test(); } }
测试结果
注意:如果我们像不同类一样来获取factorybean的实例对象的话会报转换异常.
public class Test { public static void main(String[] args) { AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(Configration.class); // 注意获取factorybean的实例对象需要在对应beanname前面不加"&" DaoFactoryBean daoFactoryBean = (DaoFactoryBean) annotationConfigApplicationContext.getBean("daoFactoryBean"); daoFactoryBean.testBean(); } }
运行结果:
FactoryBean的应用
当一个类当他的依赖关系很复杂的时候,而我们需要提供一个简单的依赖关系的时候,让外部更容易取配置的时候,可以使用FactoryBean.经典应用场景就是mybatis的SqlsessionFactoryBean对象.
例二:
代码如下:
1、实现了FactoryBean接口的DaoFactoryBean
public class DaoFactoryBean implements FactoryBean { private String info; public void setInfo(String info) { this.info = info; } public void testBean(){ System.out.println("testBean"); } @Override public Object getObject() throws Exception { TempDaoFactoryBean tempDaoFactoryBean = new TempDaoFactoryBean(); // 统一处理 String[] infos = info.split(","); tempDaoFactoryBean.setMsg1(infos[0]); tempDaoFactoryBean.setDesc(infos[1]); tempDaoFactoryBean.setAge(infos[2]); return tempDaoFactoryBean; } @Override public Class<?> getObjectType() { return TempDaoFactoryBean.class; } @Override public boolean isSingleton() { return true; } }
2、普通的类TempDaoFactoryBean
public class TempDaoFactoryBean { private String msg1; private String desc; private String age; public String getMsg1() { System.out.println(msg1); return msg1; } public void setMsg1(String msg1) { this.msg1 = msg1; } public String getDesc() { System.out.println(desc); return desc; } public void setDesc(String desc) { this.desc = desc; } public String getAge() { System.out.println(age); return age; } public void setAge(String age) { this.age = age; } public void test(){ System.out.println("TempDaoFactoryBean"); } }
3、配置
@Configuration @ComponentScan("com.lquan.spring.xml") @ImportResource("classpath:spring.xml") public class Config { }
4、spring.xml的配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="daoFactoryBean" class="com.lquan.spring.xml.dao.DaoFactoryBean"> <property name="info" value="你好,12,描述信息"/> </bean> </beans>
运行结果:
意义:简化了配置TempDaoFactoryBean在xml中的配置,不然的话就需要在spring配置对应相关的每一条属性like this
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- <bean id="daoFactoryBean" class="com.lquan.spring.xml.dao.DaoFactoryBean"> <property name="info" value="你好,12,描述信息"/> </bean> --> <bean id="tempDaoFactoryBean" class="com.lquan.spring.xml.dao.TempDaoFactoryBean"> <property name="desc" value="描述信息"/> <property name="age" value="年龄"/> <property name="msg1" value="信息压压"/> </bean> </beans>
相比之下利用factoryBean更有利于简化配置,
总结区别:
BeanFactory是个 Factory ,也就是 IOC 容器或对象工厂, FactoryBean 是个 Bean 。在 Spring 中,所有的 Bean 都是由 BeanFactory( 也就是 IOC 容器 ) 来进行管理的。但对 FactoryBean 而言,这个 Bean 不是简单的普通Bean ,而是一个能生产或者修饰对象生成的工厂 Bean, 它的实现与设计模式中的工厂模式和修饰器模式类似.
-
== 和 equals()及hashCode()的区别及联系
2019-03-07 12:40:12equals()和hashCode()区别? equals():反映的是对象或变量具体的值,即两个对象里面包含的值–可能是对象的引用,也可能是值类型的值。 hashCode():计算出对象实例的哈希码,并返回哈希码,又称为散列函数。根类... -
WPF中的事件及冒泡事件和隧道事件的区别
2016-05-04 15:03:00WPF中的事件及冒泡事件和隧道事件的区别 冒泡事件表示事件从元素树向上到达根元素。这样您就可以在源元素的上方层级对象处理事件。例如,您可向嵌入的 Grid 元素附加一个 Button.Click 处理程序,而不是直接将其... -
DSP和ARM(STM32及C51)编译及烧录方式的区别
2019-12-08 23:23:49ARM的编译和烧录方式简介 ... 仿真器分为J-TAG和SWD仿真,SWD仿真只需要4根线(VCC、GND、CLK、DATA)就可以了,传输速率也相当更快,是仿真调试的首选。仿真器的软件设置网上一大堆,这里不再赘述。J-TA... -
Android中assets目录和raw目录的区别及其中properties资源文件的读取
2016-08-15 16:19:00assets类资源放在工程根目录的assets子目录下,它里面保存的是一些原始的文件,可以以任何方式来进行组织。这些文件最终会被原装不动地打包在apk文件中。如果我们要在程序中访问这些文件,那么就需要指定文件名来... -
UART, SPI, IIC、485、422、RS232的详解及三者的区别和联系
2017-10-29 10:58:50UART, SPI, IIC、485、422、RS232的详解及三者的区别和联系 IIC 有两根线, SCL , SDA, 主从设备都可用将控制线拉底。 数据线也要传片选地址。 是半双工总线,结构简单,总线上可以同时挂多... -
./和../的区别及使用
2019-07-16 11:23:32此篇为简单的笔记整理,供以后查阅,详细的内容请看原创: ...“./”:代表目前所在的目录。 “…/”:代表上一层目录。...根目录下有Site1和Image/Image.jpg,Site1下有Page1.html文件和Site2文件夹。Site2下有Page... -
【转载】UART, SPI, IIC的详解及三者的区别和联系
2018-12-09 20:05:161、UART, SPI, IIC的详解 UART、SPI、IIC是经常用到的几个数据传输标准,下面...主机和从机至少要接三根线,RX、TX和GND。TX用于发送数据,RX用于接受数据(收发不是一根线,所以是全双工方式)。注意A和B通信A.T... -
ClassPathXmlApplicationContext 和FileSystemXmlApplicationContext的区别及用法
2010-04-20 17:23:00* 即: 对于ClassPathXmlApplicationContext(), classpath: 前缀是不需要的, 默认... * * 对于FileSystemXmlApplicationContext(), 默认表示的是两种: * 1,没有盘符的是 项目工作路径, 即项目的根目录; * -
idea使用Tomcat部署web项目中的war和war explored的区别及原理
2019-08-08 15:35:06区别 1.war explored可以用于热部署,即改了就能用,war不可以 2.war explored部署的项目路径在你的idea工程目录下,war部署的项目路径在Tomcat中 原理 下面通过代码来查看两种部署方式的路径即可了解原理 将... -
python css和xpath_xpath定位及与css定位的区别
2020-12-10 20:20:01茉上花开:web自动化测试-如何定位百度输入框zhuanlan.zhihu.com首先普及一下绝对路径和相对路径:绝对路径:c盘从根节点开始到指定文件夹,叫绝对定位相对定位:同一目录下,我们只要输入想要的文件即可拓展知识... -
initrd和initramfs及根文件系统切换
2019-08-21 16:51:19一.initrd和initramfs区别 1.initramfs是对initrd的升级; 2.initrd将根文件系统包和Image分开,而initramfs将根文件系统与内核打包在一起; 3.initrd文件系统占用的内存得不到释放,而initramfs可以释放内存; ... -
1 spark 和2的区别_电线电缆上的3+2跟4+1的区别
2020-12-29 20:26:33一、电线和电缆的区别电线是由一根或几根柔软的导线组成,外面包以轻软的护层;电缆是由一根或几根绝缘包导线组成,外面再包以金属或橡皮制的坚韧外层。二、电线上的3+2和4+1表示一根电缆线的芯数,一根... -
__import__和import的使用及区别
2020-12-25 14:57:27我们根目录下的一个文件夹下有一个qemu_hzw4的一个文件夹,这个iplist.py文件中存放了一个iplist列表。 我们的任务就是读取里面的列表。 可以使用如下方式 env = "qemu_hzw4" a = __import__(env,globals(), locals... -
Ubuntu中redis 的启动方式方式和区别及可能出现的问题
2018-10-15 13:40:191、Ubuntu中redis 的安装 链接:... 2、redis的启动方式 进入redis的根目录 cd /etc/redis a. 加“&”号使redis以后台程序方式运行 redis-server & 默认运行6... -
Django中项目和应用程序的区别及如何创建应用程序
2021-01-07 21:18:49在Django中, 项目:被视为基于某些设置项的Django安装结果;...在项目的根目录中,可运行下列命令: python manage.py startapp blog 这将生成该应用程序的基本结构,如下所示: 上述文件具体解释如下: admin.py: -
1 spark 和2的区别_电线电缆上的3+2跟4+1的都有哪些区别
2020-12-29 20:26:37一、电线和电缆的区别电线是由一根或几根柔软的导线组成,外面包以轻软的护层;电缆是由一根或几根绝缘包导线组成,外面再包以金属或橡皮制的坚韧外层。二、电线上的3+2和4+1表示一根电缆线的芯数,一根电缆里面有... -
1 spark 和2的区别_电线电缆上3+2和4+1的都有哪些区别呢?
2020-12-25 22:05:05一、电线和电缆的区别电线是由一根或几根柔软的导线组成,外面包以轻软的护层;电缆是由一根或几根绝缘包导线组成,外面再包以金属或橡皮制的坚韧外层。二、电线上的3+2和4+1表示一根电缆线的芯数,一根电缆里面有... -
内存颗粒和闪存颗粒的区别_内存颗粒及频率知识,你真的清楚吗?
2020-12-31 01:46:38大家好我是蝶科技注意:本文只涉及民用及游戏方面,不涉及ECC等内存条是由印刷电路板(PCB)、颗粒(芯片)、SPD芯片、金手指、防伪和规格标识组成。颗粒很大程度上决定了内存的容量和性能,PCB、金手指和品控也影响其...