Tomcat启动过程原理详解
说完常用的数据类型,再来说下运算符。运算符用于将各种类型的数据进行运算,让静态的数据跑起来。
编程语言中的运算大致分为以下几个大类:
- 算术运算, 用于加减乘除等数学运算
- 赋值运算,用于接收运算符或方法调用返回的结果
- 比较运算, 用于做大小或等值比较运算
- 逻辑运算,用于做 与、或、非运算
- 位运算, 用于二进制运算
每种运算中所包含的符号称为相应的运算符,如 算术运算符、比较运算符等。
一、算术运算
运算(符) | 说明 | 实例 |
---|---|---|
+ | 两个对象相加 | 2 + 3 结果为 5 |
- | 两个对象相减 | 3 - 2 结果为 1 |
* | 两个数相乘或返回一个重复若干次的序列 | 2 * 3 结果为 6; 'abc' * 2 结果为 'abcabc' |
/ | 两个数相除 | 3 / 2 结果为 1.5 |
// | 整除,返回商的整数部分 | 3 // 2 结果为 1,3 // 2.0 结果为 1.0 |
% | 求余/取模,返回除法的余数 | 3 % 2 结果为 1,3 % 2.0 结果为 1.0 |
** | 求幂/次方 | 2 ** 3 结果为 8 |
二、赋值运算
运算(符) | 描述 | 实例 |
---|---|---|
= | 简单赋值运算符 | a = 5, b = 3, c = a - b |
+= | 加法赋值运算符 | a += b 相当于 a = a + b |
-= | 减法赋值运算符 | a -= b 相当于 a = a -b |
*= | 乘法赋值运算符 | a = b 相当于 a = a b |
/= | 除法赋值运算符 | a /= b 相当于 a = a / b |
//= | 取整除赋值运算符 | a //= b 相当于 a = a // b |
%= | 取模赋值运算符 | a %= b 相当于 a = a % b |
**= | 幂赋值运算符符 | a = b 相当于 a = a b |
三、比较运算
Python有8中比较操作,它们具有相同的优先级。比较操作可以被任意连接,比如 x< y <= z 等同于 x < y and y <= z,只是第一种形式下的y只被评估一次。另外,当 x < y不成立时,这两种形式下的z都不会被评估。
运算(符) | 说明 | 实例 |
---|---|---|
< | 严格小于 | 3 < 5 结果为True,5 < 5 结果为False |
<= | 小于或等于 | 3 <= 5 结果为True,5 <= 5 结果为True |
> | 严格大于 | 5 > 3 结果为True,5 > 5 结果为False |
>= | 大于或等于 | 5 >= 3 结果为True,5 >= 5 结果为True |
== | 等于 | 1 == 1.0 == True 结果为True |
!= | 不等于 | |
is | 判断两个标识符是否引用自一个对象 | x is y, 如果id(x) == id(y),即x也y的指向同一个内存地址,则结果为1,否则结果为0 |
is not | 判断两个标识符是否引用自不同对象 | x is not y, 如果id(x) != id(y),即x和y指向不同的内存地址,则结果为1,否则结果为0 |
说明:
a) 不同类型的对象进行比较,从来不会相等(不同的数字类型除外);
b) 当把<、<=、> 和 >=操作符在这几种情况下会抛出TypeError异常: (1) 用于复数和另外的内置数字类型进行比较时;(2) 比较的对象为不同类型,无法进行比较时;(3) 未定义的其他情况下;
c) 一个类的不同实例通常是不相等的,除非该类定义了__eq__()方法;
d) 一个类的实例不能相对于同一类或其他类的的其他实例进行排序,除非该类定义了足够的方法__lt__(), __le__(), __gt__(), __ge__()。如果想要比较运算符的常规含义, __lt__()和__eq__()就足够了;
e) is 和 is not操作符的行为是不能自定义的;另外,它们可以被应用到两个不同类型的对象,不会已发异常。
f) 另外两个具有相同句法优先级的操作是 in 和 not in,它们支持序列、集合和映射类型的对象。
g) 比较运算的结果为布尔值:True 或 False
四、逻辑运算
“真”值测试(Truth Value Testing)
在讲解“布尔运算”之前,我们先来说下Python中的一个特殊操作--“真”值测试。
Python中的任何一个对象都可以被测试“真”值。这里说的“真”值测试可以这样理解:Python中的任何一个对象都可以转换为一个布尔值,而这个“真”值测试就是获取一个对象对应的布尔值的过程。
Python中只有下面这些值对应的布尔值为False:
- None
- False
- 数字类型中的0,如:0, 0.0, 0j
- 任意空序列,如:'', (), []
- 任意一个空映射,如:{}
- 一个用户自定义类的实例--该用户自定义类中定义了一个__bool__()或__len__()方法,且实例调用该方法时返回整数0或布尔值False
除此之外,所有的其它值对应的布尔值都是True, 因此许多类型的对象永远是True。
"真"值测试可以被用在 if或while条件中,也可以作为布尔操作的操作数。
布尔运算(Boolean Operations)
Python中的逻辑运算称为“布尔运算(Boolean Operations)”,操作符包括:and(与)、or(或)、not(非)。
下面按照他们的优先级升序顺序进行说明:
运算 | 结果 |
---|---|
x or y | 如果x的Truth值测试结果为False,那么该操作的结果为y的值,否则为x的值 |
x and y | 如果x的Truth值测试结果为False, 那么该操作的结果为x的值,否则为y的值 |
not x | 如果x的Truth值测试结果为False, 那么该操作的结果为True,否则结果为False |
说明:
a)or是一个短路操作符,也就是说,只有第一个参数的评估结果为False时,第二个参数才会被评估;
b) and也是一个短路操作符,也就是说,只有第一个参数的评估结果为True时,第二个参数才会被评估;
c) not操作符比非布尔操作符优先级低,因此,not a == b 被解释为 not (a == b);如果写成 a == not b会包语法错误。
五、位运算
按位运算是指把数字转换为二进制来进行计算,位运算符包括以下几种:
假设:
a = 60,对应的二进制格式为 0011 1100
b = 13, 对应的二进制格式为 0000 1101
运算符 | 说明 | 实例 |
---|---|---|
& | 按位与:参与运算的两个值,如果相应的二进制位都为1,则该位结果为1,否则为0 | a & b 对应的二进制结果为 0000 1100,十进制为12 |
竖杠 | 按位或:参与运算的两个值,只要对应的二进制位由一个为1时,该位结果就为1 | a 竖杠 b 对应的二进制结果为 0011 1101,十进制为61 |
^ | 按位异或:参与运算的两个值,当对应的二进制位不同时,该为结果为1,否则改为结果为0 | a ^ b 对应的二进制结果为 0011 0001, 十进制为49 |
~ | 按位取反:这个是单目运算符,只有一个值参与运算,运算过程是对每个二进制位取反,即把1变0,把0变1 | ~a 的二进制结果为 1100 0011,十进制数为-61 |
<< | 左移运算符:运算数的各二进制位全部左移若干位,高位丢弃,低位补0,结果相当于运算数乘以2的n次方,正负符号不发生改变 | a << 2 的二进制结果为 1111 0000,十进制数为240 |
>> | 右移运算符:运算数的各二进制位全部右移若干位,结果相当于运算数除以2的n次方,正负符号不发生改变 | a >> 2 的二进制结果为 0000 1111,十进制为15 |
Tomcat启动过程原理详解的更多相关文章
- Tomcat启动过程原理详解 -- 非常的报错:涉及了2个web.xml等文件的加载流程
Tomcat启动过程原理详解 发表于: Tomcat, Web Server, 旧文存档 | 作者: 谋万世全局者 标签: Tomcat,原理,启动过程,详解 基于Java的Web 应用程序是 ser ...
- Tomcat负载均衡原理详解及配置(Apache2.2.19+Tomcat7.0.12)
结构图 JAVA项目一般直接用Tomcat作为Web服务器.为了增加tomcat的性能和稳定性,我们一般采用balance和session同步机制. 下图列出了我们常用也是最简单的解决方案. 说明 1 ...
- TOMCAT原理详解及请求过程(转载)
转自https://www.cnblogs.com/hggen/p/6264475.html TOMCAT原理详解及请求过程 Tomcat: Tomcat是一个JSP/Servlet容器.其作为Ser ...
- Tomcat服务器原理详解
[目录]本文主要讲解Tomcat启动和部署webapp时的原理和过程,以及其使用的配置文件的详解.主要有三大部分: 第一部分.Tomcat的简介和启动过程 第二部分.Tomcat部署webapp 第三 ...
- Apache + Tomcat集群配置详解 (1)
一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 Tomcat 6.0 : http://to ...
- Influxdb原理详解
本文属于<InfluxDB系列教程>文章系列,该系列共包括以下 15 部分: InfluxDB学习之InfluxDB的安装和简介 InfluxDB学习之InfluxDB的基本概念 Infl ...
- Tomcat配置(二):tomcat配置文件server.xml详解和部署简介
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Tomcat(二):tomcat配置文件server.xml详解和部署简介
Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务 ...
- Namenode HA原理详解(脑裂)
转自:http://blog.csdn.net/tantexian/article/details/40109331 Namenode HA原理详解 社区hadoop2.2.0 release版本开始 ...
随机推荐
- 使用grep恢复被删除文件内容【转】
http://www.cnblogs.com/ggjucheng/archive/2012/10/07/2714311.html Unix/Linux下,最危险的命令恐怕就属rm命令了,每次在root ...
- 论文笔记之:Multiple Feature Fusion via Weighted Entropy for Visual Tracking
Multiple Feature Fusion via Weighted Entropy for Visual Tracking ICCV 2015 本文主要考虑的是一个多特征融合的问题.如何有效的进 ...
- 让PHP代码更危险----使用别的系统命令--如sql语句--exec(),system()方法甚至html的js语句
如题,所以涉及到别的语言时,程序就可能更加不安全.
- Iaas-cloudstack
http://cloudstack.apt-get.eu/systemvm/4.6/ 模板地址 http://cloudstack.apt-get.eu/centos7/4.6/ 代理及管理地址 ht ...
- Android 如何全局获取Context
有时,在处理业务逻辑的时候,需要Context对象,但在某些情况下,并非容易获取,这时就需要一些巧妙的手段来管理Context. 在Android中,提供了一个类Application,当应用程序启动 ...
- linux设置系统日期时间
设置当前日期: date -s 08/06/2015 设置当前时间:date -s 10:03:00 写入BIOS: clock -w 显示当前日期时间: date
- shiro权限验证标签
实例: spring-shiro.xml /admin/repairType/index = roles["ROLE_ADMIN"] /admin/user=roles[" ...
- 200多个js技巧代码
1.文本框焦点问题 onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后,产生该文件 Onchange:当文字值改变时,产生该事件 Onselect:当文字加亮后,产生该文件 & ...
- ORA-01109:数据库未打开
ORA-01109:数据库未打开 在此之前做了这样一操作,在plsql创建了2表空间,由于装的是oracle精简版所以创建表空间大小超过4G就不能创建,然后我就手动把表空间给删除了,回收站也给删了,问 ...
- [MVC] 深入浅出Spring MVC
[MVC] 深入浅出Spring MVC 转:http://4925054.blog.51cto.com/4915054/1176855 Spring MVC主要包括以下要点: 1:由Dispatch ...