精华内容
下载资源
问答
  • 【StringUtils】isEmpty()和isBlank()的区别举例说明

    万次阅读 热门讨论 2021-06-03 14:05:14
    isEmpty()和isBlank()的区别

    点赞再看,养成好习惯

    哈喽,大家好,我是一条。

    昨天写代码遇到一个坑,字符串的非空的判断,特此记录。

    简介

    StringUtils在commons-lang-2.2.jar包中org.apache.commons.lang.StringUtils;

    顾名思义,StringUtils主要的操作对象是字符串,共有130多个静态方法,所以我们可以直接用StringUtils.xxx()调用。

    isEmpty()

    上源码

        public static boolean isEmpty(CharSequence cs) {
       
            return cs == null
    展开全文
  • TCP是传输控制协议,提供的是面向连接的、可靠的字节流服务。当客户和服务器彼此交换数据前,...发信者收信者之间没有通路,靠邮局联系。发信到时可能过了很久,也可能根本没到。先发的未必先到,后发的未必后到。

    TCP是传输控制协议,提供的是面向连接的、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发、丢弃重复数据、校验数据、流量控制等功能,保证数据能从一端传递到另一端。

    例,TCP连接就像是打电话,两者之间必须有一条不间断的通路,数据不到达对方,对方就一直在等待,除非对方直接挂断电话。先说的话先到,后说的后到,有顺序。

    UDP是用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传递给IP层的数据报发送出去,但是并不保证它们能够到达目的地。由于UDP在传输数据报之前不用在客户端和服务器之间建立一个连接,而且没有超时重发等机制,故传输速度很快。

    例,UDP就像是寄一封信,发信者只管发,不管到。但是在信封上必须写明对方的地址。发信者与收信者之间没有通路,靠邮局联系。发信到时可能过了很久,也可能根本没到。先发的未必先到,后发的未必后到。

    展开全文
  • 举例说明同步通信异步通信

    千次阅读 2010-07-28 11:45:00
    同步和异步的区别  举个例子:普通B/S模式(同步)AJAX技术(异步) 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事 异步: 请求通过事件触发->服务器处理...

    同步和异步的区别

     举个例子:普通B/S模式(同步)AJAX技术(异步)
    同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
    异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕
    --------------------------------------------------------------------------------------------------------------------
    同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
    异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。

    所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。
    --------------------------------------------------------------------------------------------------------------------
    举个例子 打电话时同步 发消息是异步

     

    来源:http://ilinux.javaeye.com/blog/190028

    展开全文
  • 用int&转换时,不会产生任何临时对象,完全是使用int类型强制解释被转换的内存空间,而不是基于数值上的转换,同样用float转换成int举例: float 1.0在内存中存储为: 符号位 阶(指数) 尾数 0 01111111 ...

    《C++ Primer中文版》(第4版)的5.12.6节介绍static_cast、const_cast、reinterpret_cast的用法:

    1、static_cast,编译器隐式执行的任何类型转换都可以由static_cast显示完成,如:

    double d=97.0
    char c1=d;//warning
    char c2=static_cast<char>(d);//ok

    也就是说,static_cast可以把编译器的warning关掉。当需要将一个较大的算数类型赋值给较小的类型时,使用static_cast强制转换非常有用。


    2、const_cast,添加或删除const特性,如:

    const int &val=13;
    int &ncref=const_cast<int>(&val);//删除const特性
    int &cref=const_cast<const int&>(ncref);//添加const特性
    

    注意,可以给const变量使用const_cast<const XXX>转换,也可以给非const继续使用const_cast<XXX>转换,不会报错。

    const_cast只能用来添加或删除const特性,不能作他用,否则编译报错,如:

    const int &val=13;
    int &ncref=const_cast<int>(val);//error,不能将const int转换成int
    

    而此时换成static_cast编译正常:

    const int &val=13;
    const int &ncref=static_cast<int>(val);//ok
    注意,在G++中,此时的ncref必须定义成const(因为static_cast在转换时产生了一个临时变量),否则报错;

    在VS2005中不用定义成const,不产生临时对象,不报错……


    因为int和int&是不相同的类型:

    用int转换时,会产生int型临时对象,该对象是编译器对被转换的内存空间按照某一规则进行的数值上的转换,如将float转换成int时,就是对float占据的内存空间里的数据进行的基于IEEE浮点数定义的规则上的转换,0.0->0,1.0->1,2.5->2等。

    用int&转换时,不会产生任何临时对象,完全是使用int类型强制解释被转换的内存空间,而不是基于数值上的转换,同样用float转换成int举例:

    float   1.0在内存中存储为: 
    符号位     阶(指数)       尾数 
    0               01111111       00000000000000000000000 
    
    关于浮点数存储可以参见有关标准。 
    
    转化为int&后,数据就变为00111111100000000000000000000000   =   1065353216

    3、interpret_cast通常为操作数的位模式提供较低层次的重新解释。

    /*将float转成int&是对原float变量所占用内存空间的重新解释(以int类型读取float的二进制形式的数据)
    **由于这种转换不会由编译器自动完成,所以使用static_cast<int&>报错
    **应该使用reinterpret_cast<int&>,
    **而static_cast<int>在此处相当于(int)fval,是基于IEEE的浮点数规范的转换,保持了数值的一致性
    **/
    float fval=1.0f;
    cout<<"reinterpret_cast<int&>="<<reinterpret_cast<int&>(fval)//1065353216
    	<<",static_cast<int>(dval)="<<static_cast<int>(fval)<<endl;//1


    综上,

    1、static_cast只能用来完成编译器能自动完成的或出现warning的类型转换,将一个较大的算数类型赋值给较小的数据类型(double=>int,int=>char等),

    或在相同大小的数据类型间转换(int&=>int,double&=>double等)(在G++中,static_cast<int>时会产生临时对象,static_cast<int&>时不会产生临时对象;在VS2005中都不会产生临时对象……)

    但是,static_cast不会完成const到非const的转换,也不会把一个float值所占的内存空间当成int来操作(如static_cast<int&>(1.0f)),因为编译器也不会这么干的!


    2、const_cast仅用来添加或删除const特性,而不能用于类型转换,注意int和int&不是同一个类型!


    3、reinterpret_cast用于二进制层次的重新解释,如将float或double所占的内存空间当成int来解释,而不是基于IEEE浮点数定义规则上的转换。


    以上3种命名的强制类型转换是C++语言规范的一部分,而不是C里的,因为C++兼容C,所以,C里的强制类型转换语法在C++中也适用:

    const int &val=2;
    float fval=1.0f;
    
    //const_cast<int&>
    int &ncref1=(int&)(val);//ok
    ncref1=10;
    //int &ncref2=val;//error,不能将const变量赋值给非const引用
    cout<<"ncref1="<<ncref1<<",val="<<val<<endl;
    
    //static_cast<int>
    int ival1=(int)fval;//ok
    int ival2=fval;//ok,float与int位数相等;如果将double赋值给int,则出现warning
    
    //reinterpret_cast<int&>
    int &iref1=(int&)fval;
    cout<<"iref1="<<iref1<<endl;
    
    //static_cast<int>
    const int &iref2=(int)fval;//由于返回的是临时int变量,所以必须使用const修饰
    cout<<"iref2="<<iref2<<endl;

    上面代码中,关于const_cast的代码段,如果修改成:

    const int val=2;
    
    //const_cast<int>
    int &ncref1=(int&)(val);//ok,VS2005中偶尔运行时报错,G++中编译运行都不报错
    //上式等价于int &ncref1=const_cast<int&>(static_cast<const int&>(val));
    
    ncref1=10;
    //ncref1=10,val=2
    cout<<"ncref1="<<ncref1<<",val="<<val<<endl;

    则得不到预期的效果:ncref1=10,val=10,因为val被声明为const,就无法改变它的值。注意之前用const_cast删除const特性的例子,用的都是引用(int&),有什么区别呢?

    const int & val=2;表示我分配了一个int变量的空间,这个空间没有名字,其值为2,然后我用val这个名字来指代这个空间,由于我在定义这个名字的时候,用了const定义,所以,我不能通过这个这个名字(val)去修改对应内存空间的值。但是,我可以通过别的名字来修改这个内存空间的值,只要将val的地址告诉别的引用或者指针就行了!

    const int val=2;表示我分配了一个int变量的空间,这个空间的名字叫val,而且这个空间是const的,不能通过这个名字(val)或其他任何名字来修改这个内存空间的值!


    参考资料:

    1、C/C++左值性精髓(二)哪些表达式是左值,哪些是右值?--- 函数调用表达式和强制转换

    2、一道C++的题目 关于(int)与(int &)

    3、(int)a、&a、(int)&a、(int&)a的区别


    附上剩余实验代码:

    void test(){
    	const char *pc_str="hello";
    	char *pc=(char*)(pc_str);
    	//pc[0]='w';//error,不可以赋值,因为pc[0]指向的毕竟是常量字段区("hello")
    
    	int i=13;
    	int j=13;
    	int k=13;
    	const int &val=13;//用常量给const引用赋值时,应该是分配了变量存储空间
    	const int &cref=val;
    
    	/*(int&)val是将val的内存空间直接按照int型读取(不进行数值上的转换,不可以完成float到int的数值上的转换)
    	**(int)val是将val的内存空间里的数据按照IEEE规则转换数值(如可以完成float到int在数值上的转换)
    	**参见:
    	**http://topic.csdn.net/u/20070618/15/64bf9e83-c422-43aa-a451-5deed812e947.html
    	**和
    	**http://talentluke.iteye.com/blog/789841
    	**/
    	int &ncref1=(int&)val;
    	int &ncref2=const_cast<int&>(val);
    	//const_cast<const int&>(val);//可以将const转换成const;同理,也可以将非const转换成非const
    
    	//这个转换应该使用const_cast完成
    	//int &ncref3=static_cast<int&>(val);//error,static_cast只能做编译器默认进行的转换
    	
    	//在下面两句话中,(int)与static_cast<int>功能相同
    	//int &ncref4=(int)val;//在VS2005中ok;在G++中error,因为(int)强转时,生成了临时变量,是const型的
    	//int &ncref5=static_cast<int>(val);//在VS2005中ok;在G++中error,原因同上
    
    	//int &ncref6=const_cast<int>(val);//error,const_cast只能增/删const属性,不能转换类型(int&转int)
    	//int &ncref7=static_cast<int&>(val);//error,不能把const int&转换成int
    	//int &ncref8=val;//error,不能把const int&转换成int&
    
    	cout<<&i<<","<<&j<<","<<&k<<","<<&val<<","<<&cref<<","<<&ncref2<<endl;
    
    	cout<<"初始值:"<<endl;
    	cout<<"i="<<i<<",val="<<val<<",cref="<<cref<<",ncref1="<<ncref1<<",ncref2="<<ncref2<<endl;
    
    	/*数值都被改变
    	**C++中的const属性只是限制程序通过const变量修改某内存空间,
    	**但是可以通过其他非const变量修改这块内存空间
    	**/
    	ncref2=10;
    	cout<<"结果值:"<<endl;
    	cout<<"i="<<i<<",val="<<val<<",cref="<<cref<<",ncref1="<<ncref1<<",ncref2="<<ncref2<<endl;
    
    	/*将float转成int&是对原float变量所占用内存空间的重新解释(以int类型读取float的二进制形式的数据)
    	**由于这种转换不会由编译器自动完成,所以使用static_cast<int&>报错
    	**应该使用reinterpret_cast<int&>,
    	**而static_cast<int>在此处相当于(int)fval,是基于IEEE的浮点数规范的转换,保持了数值的一致性
    	**/
    	float fval=1.0f;
    	cout<<"reinterpret_cast<int&>="<<reinterpret_cast<int&>(fval)
    		<<",static_cast<int>(dval)="<<static_cast<int>(fval)<<endl;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int i(1);
    	
    	test();
    
    	cin>>i;
    	return 0;
    }


    展开全文
  • 定点数浮点数区别

    千次阅读 2018-07-30 18:36:02
    最近HDR时,经常要用NV提供的16位纹理,它的说明书16位能达到24位的精度,就很奇怪?一直搞不懂浮点数的精度怎么算的?今天认真看了一下IEEE float point的标准,终于明白是什么了1.
  • 看到 @林木然 的答案,用Mathematica 了下试验,效果没有有这么好。 首先输入图像 离散傅里叶变换: data = ImageData[ColorSeparate[image][[1]]]; {nRow, nCol} = Dimensions[data] fw = Fourier...
  • 支付宝APP支付JAVA后台流程demo举例及文档说明 一、文档地址:  1. 支付宝APP支付API文档: https://docs.open.alipay.com/204/105297/  2. 服务端SDK说明文档: https://docs.open.alipay.com/54/103419/  3...
  • 验证(Verification)确认(Validation)的区别 验证:我们正确地构造了产品吗?(注重过程-由QA负责) 确认:我们构造了正确的产品吗?(注重结果-由QC负责) 说法一: (2)“验证(Verification)”的涵义 通过...
  • JavaC++区别

    千次阅读 2011-01-20 14:44:00
    Java和C++区别
  • 感性负载容性负载的区别

    万次阅读 2018-11-08 11:45:28
    感性负载容性负载的区别 目录 感性负载容性负载的区别 (1)感性无功功率 (2)容性无功功率 (3)无功功率补偿的原理 有功功率: 无功功率 视在功率: 阻性负载: 感性负载: 容性负载: 线圈负载叫...
  • 区别: (一)面向对象上不同:   需求分析说明书往往面向业务人员、用户   需求规格说明书往往面向设计、开发人员。  (二)生成阶段不同:   一般先有需求分析说明书,后有需求...
  • Collection Collections 的区别

    千次阅读 2007-07-09 17:18:00
    初学java,就一些面试中经常用的,容易混淆的概念一个总结。Colletion 是一个接口,位于java.util下面...下面举例说明比如 Collections 中的sort 方法,实现了对集合的排序。import java.util.ArrayList;import
  • DTM、DEMDSM的区别

    万次阅读 2017-01-12 10:07:11
    DTM、DEMDSM的区别
  • dll和so文件区别与构成

    千次阅读 2018-07-26 16:47:52
    dll和so文件区别与构成 动态链接,在可执行 文件 装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执行文件包含一个叫做import ...
  • 分辨率精度的区别

    千次阅读 2019-06-17 10:40:19
    对于传感器的分辨率精度的理解,可以拿千分尺为例,分辨率代表千分尺最多可以读到小数点后几位,但精度还尺子的加工精度,测量方法有关系。 同样的,在旋转编码器的使用中,分辨率精度是完全不同的两个概念。...
  • 传值传址的区别

    千次阅读 热门讨论 2017-08-31 23:42:39
    前言:  方法的传值传地址一直是困扰很多初学者的问题,下面通过距离来向大家说明一下我的理解。
  • JavaScriptjava语法区别

    千次阅读 2019-04-06 10:35:15
    JavaScriptjava的区别 ** 特点 ** ** Java ** ** JavaScript ** 面向对象 面向对象编程语言 基于对象,不完全面向过程。有部分面向对象 的特点 运行方式 编译型语言,...
  • 过去式过去分词的用法与区别

    千次阅读 2012-04-21 09:36:49
    用于完成时,have和had分别构成现在完成(进行 时和过去完成(进行)时,谓语。 例:She has gone to school. 2). be构成被动语态。 例:He is beaten by his father. 3). 非谓语动词之一,表示被动,完成的...
  • HiveSQL相似促使 其成为Hadoop其他BI工具结合的理想交集。 Pig赋予开发人员在大数据集领域更多的灵活性,并允许开发简洁的脚本用于转换数据流以便嵌入到较大的 应用程序。 Pig相比Hive相对轻量,它...
  • 简述重载重写的区别

    千次阅读 2017-12-12 23:29:46
    Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义,参数名和返回值类型无关。 调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法 例子:...
  • 同步通信异步通信区别

    千次阅读 2015-01-11 20:45:25
    串行通信的数据是逐位传送的,...为此,串行通信对传送数据的格式了严格的规定。不同的串行通信方式具有不同的数据格式。下面简单介绍一下常用的两种基本串行通信方式:同步通信和异步通信及其数据传送格式。  
  • 定点数浮点数的区别

    千次阅读 2017-03-15 11:21:30
    对很多人造成的困惑,有些文章经常以 7.5 位来说明单精度浮点数的精度问题。 提示: 这里采用的浮点数舍入规则有时被称为舍入到偶数(Round to Even)。相比简单地逢一半则进的舍入规则,舍入到偶数有助于从...
  • KVM vbox的区别

    千次阅读 2013-08-11 16:13:36
    说明几点:/path/to/boot-media.iso 只是个举例。具体为你的系统盘镜像位置。-m 为虚拟机内存大小,单位是M,默认(不写这个选项)为128M。当然,自己看着给吧。 建议如果虚拟的是xp系统,把页面缓存给关了。老版本...
  • 皮尔森相似度计算举例(R语言)

    万次阅读 2014-10-12 14:52:52
    对于中心化过的数据 (也就是说, 数据移动一个样本平均值以使其均值为0), 相关系数也可以被视由两个随机变量 向量 夹角theta 的余弦值(见下方)。 3)存在问题 这也就是为什么会导致User1和User4更为相似的原因了...
  • 静态编译动态编译的区别

    千次阅读 2016-11-30 21:38:15
    静态编译动态编译的区别  动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统...
  • TCP的流量控制 TCPUDP的区别

    千次阅读 2016-11-02 21:41:55
    http://www.cnblogs.com/Jessy/p/3536163.html http://www.cnblogs.com/Jessy/p/3536163.html ... TCPUDP的区别 1. 理解:窗口和滑动窗口 TCP的流量控制 TCP使用窗
  • 单片机CYOV的区别

    千次阅读 2013-11-13 13:07:51
    CY(Carry): 用于表示加法进算中的进位和减法运算中的借位,加法运算中有进位或减法运算中有借位则CY位置1,否则为0 OV: 表示运算过程中是否发生了溢出,若运算结果超过...“OV位是C6位进位C7位进位的异或”,说法对
  • CAsyncSocketCSocket的区别 MFC网络编程

    千次阅读 2012-04-30 16:25:00
    一、CAsyncSocketCSocket的区别 前者是异步通信,后者是同步通信;前者是非阻塞模式,后者是阻塞 模式。另外,异步非阻塞模式有时也被称为长连接,同步阻塞模式则 被称为短连接。为了更明白地讲清楚两者的区别...
  • 1,三极管放大电路的原理举例、粗解、细解 2,使用2个三极管制作音频放大电路(扩音器) ----------------------- 【视频】面包板入门电子制作(第9集) 主讲:杜洋 时间:31分钟 1,芯片外观、引脚顺序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 53,549
精华内容 21,419
关键字:

做与作的区别举例说明