MySQL 判断语句 条件函数 case when、if、ifnull

在MySQL中,需要用到条件判断函数,例如 case when、if、ifnull。

一、方法分类

条件函数 方法分类

二、具体方法

(1)if

if(expr,result_true,result_false)

注意: 一个条件表达式两个结果

  • expr :条件表达式;
  • 如果结果为true,则返回result_true,否则返回result_false。

(2)ifnull

ifnull(result,value)

注意: 如果查询结果是null,就转换为特定的值

  • result :查询结果;
  • value:如果查询结果为null,则返回value,否则返回result。

(3)case when

case
	when 条件1 then 结果1
	when 条件2 then 结果2
	...
	when 条件n then 结果n
	else 结果m
end

注意: 在同一条判断语句中可以有一个到多个判断条件

  • else:如果查询结果不满足when里面的任何一个条件,返回else后的结果m;
  • 判断条件按语句顺序执行,如果查询结果既符合条件1又符合条件2,那么只能得到结果1;
  • case when 语句大多在select 查询列里面使用。

三、实例

students 表 (id表示主键,name是姓名,score是平均成绩)

id name gender score
1 李明 99
2 Null 74
3 孙华 59
  • 统计不同性别的学生人数
select
	count(if(gender='男',1,null)) as man_number,
	sum(if(gender='女',1,0)) as woman_number
from students
#统计结果:男生人数2,女生人数1
  • 如果name为null,用未知替换
select
	id,
	ifnull(name,'未知') as name,
	gender,
	score
from students
id name gender score
1 李明 99
2 未知 74
3 孙华 59
  • 如果score大于等于90level为优秀,大于等于80小于90为良好,大于等于60小于80为及格,小于等于60为不及格
select
	name,
	score,
	(case
     	when score >= 90 then '优秀'
     	when score >= 80 then '良好'
     	when score >= 60 then '及格'
     	else '不及格'
     end) level
from students
id name gender score level
1 李明 99 优秀
2 张三 74 及格
3 孙华 59 不及格

创建 students 表的代码

-- ----------------------------
-- Table structure for students
-- ----------------------------
DROP TABLE IF EXISTS `students`;
CREATE TABLE `students`  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学生id',
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
  `gender` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别',
  `score` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '成绩',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of students
-- ----------------------------
INSERT INTO `students` VALUES (1, '李明', '男','99');
INSERT INTO `students` VALUES (2, null, '男','67');
INSERT INTO `students` VALUES (3, '孙华', '女','59');
本文转载于网络 如有侵权请联系删除

相关文章

  • 无线技术之分层AC技术介绍

    分层AC简介分层AC是一种对AC进行集中控制与分级管理的网络架构。该网络架构下,由LocalAC负责完成AP接入及管理功能;由CentralAC负责完成网络的管理控制和集中认证等非实时性全局业务,同时CentralAC也具备AP接入和数据转发功能。对于总部分支网络,这种分层结构极大满足了传统AC+FitAP模式下用户对链路低延时高带宽的需求,同时也大大降低了AC的负载压力。对于大型园区网络,这种分层结构大大简化了网络配置和维护的工作。技术价值集中管理和维护由CentralAC统一管理、下发LocalAC和AP的版本及配置,并对AP的License集中控制,简化了繁杂的设备版本升级工作,也保证了LocalAC和AP的配置同步和网络的完整性。无线客户端可在CentralAC上集中认证,由CentralAC统一管理下发用户策略。可以通过CentralAC查看整网LocalAC、AP和客户端的状态信息,大大提升了维护的便利性。负载均衡CentralAC可以根据LocalAC的实时负载,主动引导新上线AP连接至不同的LocalAC上,使得整网AP均衡地接入不同的AC。高可靠性当LocalAC发生

  • Linux文本处理

    cat命令cat命令可以用来显示文本文件的内容(类似于DOS下的type命令),也可以把几个文件内容附加到另一个文件中,即连接合并文件。选项含义-A相当于-vET选项的整合,用于列出所有隐藏符号;-E列出每行结尾的回车符$;-n对输出的所有行进行编号;-b同-n不同,此选项表示只对非空行进行编号。-T把Tab键^I显示出来;-V列出特殊字符;-s当遇到有连续2行以上的空白行时,就替换为1行的空白行。cat文件名------查看文本内容cat-n文件名----------显示行号。cat-A文件名----------查看文本中的所有隐藏符号,包括回车符($)、Tab键(^I)等more命令more命令可以分页显示文本文件的内容,使用者可以逐页阅读文件中内容[root@localhost~]#more[选项]文件名选项含义-f计算行数时,以实际的行数,而不是自动换行过后的行数。-p不以卷动的方式显示每一页,而是先清除屏幕后再显示内容。-c跟-p选项相似,不同的是先显示内容再清除其他旧资料。-s当遇到有连续两行以上的空白行时,就替换为一行的空白行。-u不显示下引号(根据环境变量TERM指定的

  • OpenTelemetry规范v1.0.0|追踪版

    作者:TedYoung本周,我们有了一次有益的经验,合并了这个PR[1],将OpenTelemetry规范[2]提升到了1.0版本。这是OpenTelemetry的重要时刻。规范的v1.0.0已经完成,v1.0.1也已经发布,我们准备开始为OpenTelemetry客户端的追踪部分提供稳定性保证。请查看API和SDK候选版本,可提供以下语言。Erlang[3]Java[4].NET[5]Python[6]在接下来的几周或几个月里,其他语言也会效仿。请与我们一起审查这些候选版本;非常感谢你的反馈。1.0版本和追踪稳定性长期支持、向后兼容性和依赖隔离是该项目的三个核心原则。OpenTelemetry是一个跨领域的问题——通过设计,这个项目将集成很多很多的代码库。OpenTelemetry的每一种成分都被标记为稳定的或实验性的。以下组件将作为v1.0实现的一部分变得稳定。追踪API。这意味着所有针对追踪API编写的检测都将与未来的小版本兼容,并在OpenTelemetryAPI的下一个主要版本之后至少支持三年。这是最重要的稳定性保证,因为它允许应用程序开发人员相信,他们可以访问新的OpenT

  • 设计模式(10)[JS版]-JavaScript如何实现组合模式???

    1什么是组合模式组合模式允许创建具有属性的对象,这些对象是原始项目或对象集合。集合中的每个项目本身可以容纳其他集合,创建深度嵌套结构。树型控件是复合模式的一个完美例子。树的节点要么包含一个单独的对象(叶子节点),要么包含一组对象(节点的子树)。组合模式用于简单化,一致化对单组件和复合组件的使用,其实它就是一棵树。组合模式能对于工作能起到简化作用,组合对象实现某一操作时,通过递归,向下传递到所有的组成对象,在存在大批对象时,假如页面的包含许多拥有同样功能的对象,只需要操作组合对象即可达到目标。在存在着某种的层次结构,并且其中的一部分要实现某些操作,即可使用组合模式。组合模式中的所有节点都共享一组通用的属性和方法,它既支持单个对象,也支持对象集合。这种共同的接口极大地促进了递归算法的设计和构建,这种算法可以对复合集合中的每个对象进行迭代。实例场景:1自然界中的各种树,树长在大地上,树头(树根),即是入口点,这棵树头向上生长,即有自己的叶子,又有自己的子树枝,某树枝还有自己的叶子,跟子树枝。2操作系统目录结构、公司部门组织架构、国家省市县等,像这么看起来复杂的现象,都可以使用组合模式,即部分

  • 【玩转腾讯云】使用云服务器进行生信数据分析

    很多小伙伴手头有生信数据分析,但苦于没有服务器,没法完成自己需要的数据分析,特别是处于学习阶段的同学。这里,向大家推荐一下使用腾讯云CVM服务器,按量计费进行数据分析。一般认为,除了公司,普通人难以负担高性能的服务器价格。但是现在无处不在的云服务,让我们可以享受随开随用的便利,在使用时间短的情况下,可以节约成本和时间,特别是如果有些数据库的文件在国外的情况下,由于出境带宽有限,使用一台物理位置在中国香港的腾讯云服务器可以节约大量的数据下载和软件安装步署时间,更加专注于数据分析。下面我以自己的qiime2分析微生物16S数据分析经历,介绍一下相关使用经验。1.开通云服务器首先,估计一下自己的数据所需要的计算能力,对于我手上的16SV4测序数据,一般只需要8核心16G内存就足够了,于是我就开一个这样配置的云服务器。当然,帐户注册,实名认证这里就不表了。打开https://buy.cloud.tencent.com/cvm?tab=lite®ionId=1&projectId=-1就看到了云服务器购买的选项,选按量计费,然后选择地区,这里我选了中国香港,如果不需要太多国际数据的下载,

  • BASH_SOURCE 用法

    参考bash少见的用法http://blog.csdn.net/wonderisland/article/details/22892759。原有项目里自带的启动脚本用到了bash_source获取脚本名称,最后使用如下方式启动程序。nohupnice-n$APP_NICENESS"${this}"$command"$@">"$log"2>&1</dev/null&然而发现有的同学调用后会报出nice:.....:Nosuchfileordirectory之类的错误参考线上脚本写了一个测试shell名为testbashsourcethis="${BASH_SOURCE-$0}"echo$thisbin=`dirname"$0"`echo$binbin=`cd"$bin";pwd`echo$binAPP_HOME=`dirname"$bin"`echo$APP_HOME使用几种不同的方式启动脚本:17:53[root@

  • 一两个节点、一两条命令,轻松让 TiDB 分析场景无痛提速十倍

    >作者:马晓宇##讲个故事,假如……某天,老板让你分省统计口罩最近的订货数据,以快速决策需要向哪里调货。你发起查询,全部订单数据多达数亿甚至更多,TiDB不得不花费一小段时间。由于存储节点在全力计算,你的集群波动的监控哔哔作响,主站的订单提交也一下子变得慢起来。倒了杯咖啡回来,你得到了结果。老板站在你身后,声音低沉而有磁性,“能否更快一点?”请架构师吃了顿饭,她向你推荐将数据从线上导出到Hadoop或者分析型数据库,用列存格式存储,这样就可以大大提速。码农们加班加点,将ETL作业架设起来。你惊喜地发现,查询快了很多!你兴奋地跟老板说:“我们的分析已经变快了,也不会影响在线业务,您可以放心提要求。”“干得好!马上告诉我过去48小时上海板蓝根的销量。”“啊?我们只能查一天前的数据……”**所以,你需要更快:接入业务更快,数据到达更快,查询也需要更快。**##一两个节点,一两条命令,数倍提速**即将随着TiDB3.1推出的TiFlash产品,可以让你的AP查询提升数倍,不需要复杂的操作,无需多少节点,轻轻松松。只要将集群升级到TiDB3.1+,然后执行如下两条命令:**```./run

  • Yii2.0 RESTful API 之速率限制

    Yii2.0RESTfulAPI之速率限制什么是速率限制?权威指南翻译过来为限流,为防止滥用,你应该考虑对您的API限流。例如,您可以限制每个用户10分钟内最多调用API100次。如果在规定的时间内接收了一个用户大量的请求,将返回响应状态代码429(这意味着过多的请求)。要启用速率限制,首先需要实现认证类,而关于认证的章节我在Yii2.0RESTfulAPI认证教程进行了详细的阐述,本篇就不过多介绍,再次基础上进行操作 启用速率限制翻阅权威指南,我们可以看到要启用速率限制首先认证类需要继承yii\filters\RateLimitInterface生成两个关键字段phpyiimigrate/createadd_allowance_and_allowance_updated_at_to_user复制修改刚才的迁移文件/** *{@inheritdoc} */ publicfunctionsafeUp() { $this->addColumn('user','allowance',$this->integer()); $this->

  • SEO外链建设形式有哪些?

    外链建设对于大连网站优化有着重要作用,一个优质的外链可以快速的提高网站的曝光度和转换率。那么,外链建设的形式有哪些呢?我们一起来学习一下吧!SEO外链建设形式有哪些?1、超文本URL链接用户可以直接通过超文本URL链接进入到网站指定页面。这种形式的外链更加成熟,也更加完善,用户想要浏览网站的时候,直接点击就可以进入网站中,无需复制粘贴,提高了用户的体验度。超文本URL链接还能够增加蜘蛛爬虫的工作效率,从而提高了网站的抓取率,同时也增加了网页的权重。2、锚文本链接锚文本链接是外链建设中最好的一种形式。锚文本就是对链接的一种描述,简单明了的体现出主题,锚文本链接满足了搜索引擎和用户的双重体验,同时对关键词的权重起着重要作用。在给主要关键词添加锚文本链接需要注意自然协调性,这样才能达到最佳效果,才能获得高流量的来源。3、纯文本链接用户不能通过点击来进入到网站的指定页面,这就是纯文本链接。这类链接不利于用户体验,在同等情况下,链接的价值也不是很高。虽然纯文本链接无法点击进入到指定页面,但蜘蛛爬虫仍然会抓取纯文本链接,提高网页的权重。4、图片超链接图片超链接就是通过点击图片进入到网站的指定页面,

  • 讨论微服务之前,你知道微服务的 4 个定义吗?| 洞见

    关于“什么是微服务”的问题,其实并没有一个统一的认识。这些年在不同的场合里和不同背景的朋友都在探讨微服务。但聊得越多,越发现大家聊的不是同一回事。和DevOps一样,“微服务”也是一个内涵十分广泛的词。本文从“Microservice“这个概念的源头出发,总结了4个常用的微服务定义。1.Smallwithasingleresponsibility——“小到只有单一原则”在这个特征里,关于微服务有多小有两个标准:第一个标准是如果一个类复杂的超过一个开发人员的理解范围,那么它就太大了,需要被继续拆分。第二个标准是:如果它小到可以随时丢弃并重写,而不是继续维护遗留代码,那么它就足够小。这个标准有个很重要的原则就是RewriteoverMaintain,即“重写胜于维护”。2.ContainerlessandinstalledaswellbehavedUnixservices——“去容器化并且作为UnixService安装”在这个特征中,JamesLewis提倡采用Jetty这样的工具集成到Maven里,可以很方便的调试或者部署,然后打包成一个可执行的JAR包并以UNIX守护进程的方式在系统启

  • 关于Java里面的嵌套类,你了解多少?

    前言最近在看《CoreJavafortheImpatient》这本书,当然为了方便我看的是英文电子版的PDF格式(有需要的朋友,可以后台留言给我),期间又重新认识或升级了不少Java相关的知识,今天我们来聊一聊Java里面的内嵌类,又称嵌套类。什么是嵌套类?简单的说,就是把一个类定义在另外一个类里面,使两者拥有更亲密的关系。比如A类里面可以包含B,B类里面可以包含C,C类里面可以包含D,至于能嵌套多少层,在Java语言里面并没有明确的限制嵌套的层级,你可以无限的嵌套,但大多数情况下,嵌套的层级超过2层会是一个糟糕的设计。嵌套类的意义在Oracle官网文档里面,有如下的描述:(1)是一种逻辑分组的方法,仅仅只在一个地方使用。也就是说这个嵌套类存在仅仅只为它的外部类服务。比如各种"HelperClass"(2)它增加了封装性。我们都知道继承,封装,抽象,多态是Java语言最重要的四大特点。嵌套类对相对于其他外部的类是隐藏的。(3)增加了可读性和可维护性。把相关的类定义在一个类文件里面在阅读和维护方法变得更加有利。嵌套类的分类(1)静态嵌套类(Staticnestedcl

  • 【带着情商做产品系列③】产品初心,三份责任

    作者:陈勃,文艺青年一枚。产品策划岗供职6年。写得了文档,编得了文章,做得了诗词,玩得了金属。在这快鱼吃慢鱼的时代,作为产品经理,我们还会拿“十年磨一剑”的恒心和毅力去做产品吗?我们看到,市场上很多产品都是做成便卖,做不成便扔,唯利益看齐。虽然这在商业化进程中无可厚非,但对细节缺少打磨、对产品初心不做守护,难免失人心失天下。虽然我们也想抱着十年磨一剑的心态去做一个产品,但首先需有一把“剑”,这把“剑”就是需要我们用心维护、细致打磨的产品。不然“难为无米之炊”。不过在我们“仗剑走天涯”的过程中,也有不懂得珍惜的时候,当失去了手上的剑,才追悔莫及,叹道:“要是有一把剑就好了”!当这一个个产品从指间滑落,最终没有一个能够成为自己花十年去打磨的那把剑时,其实我们需要反思,在自己做产品的过程中,是否守住了做产品的初心,心怀这三份责任:1对产品本身负责产品经理要对产品本身负责。产品是产品经理之本,也就是根。当没有根的时候,产品经理包括自己带的产品,都没有办法再成长。对产品负责,要求我们对产品本身的细节打磨,从一个用词、一个按钮开始,无止境的追求下去,全力投入。能打100分就不允许打99。例如咱厂七

  • 再谈Android动态链接库

    前不久,我们准备将自己开发的视频播放sdk提供给公司其他部门,在打包的时候,同事问了我一个问题,为什么我们打sdk的时候需要分别提供armeabi和arm64-v8a(ps,还有其他7种CPU架构)。其实这是一个常识问题,针对不同的架构我们肯定要提供不同的动态链接库,所以,在实际开发过程中,我们并不是将这7种so库都集成到我们的项目中去,我们会根据实际情况做一个取舍。那么旧事重提,我们再来看看Android动态链接库。简介早期的Android系统几乎只支持ARMv5的CPU架构,不过到目前为止支持7种不同的架构:ARMv5,ARMv7(从2010年起),x86(从2011年起),MIPS(从2012年起),ARMv8,MIPS64和x86_64(从2014年起),每一种都关联着一个相应的ABI。所谓ABI,是指定义的二进制文件(尤其是.so文件)如何使用指令集,内存对齐到可用的系统函数库,如何运行在相应的系统平台上。如果项目用到了NDK,Androidapk文件将会到位于lib/ABI文件下读取相关.so文件。Android包管理器在安装APK文件时,会自动选择对应系统环境下预编译好的

  • 使用python实现RESTful API服务器端的思路

    最近这些年,REST已经成为webservices和APIs的标准架构,很多APP的架构基本上是使用RESTful的形式了。REST的六个特性Client-Server:服务器端与客户端分离。Stateless(无状态):每次客户端请求必需包含完整的信息,换句话说,每一次请求都是独立的。Cacheable(可缓存):服务器端必需指定哪些请求是可以缓存的。LayeredSystem(分层结构):服务器端与客户端通讯必需标准化,服务器的变更并不会影响客户端。UniformInterface(统一接口):客户端与服务器端的通讯方法必需是统一的。Codeondemand(按需执行代码):服务器端可以在上下文中执行代码或者脚本RESTfulwebservice的样子REST架构就是为了HTTP协议设计的。RESTfulwebservices的核心概念是管理资源。资源是由URIs来表示,客户端使用HTTP当中的'POST,OPTIONS,GET,PUT,DELETE'等方法发送请求到服务器,改变相应的资源状态。HTTP请求方法通常也十分合适去描述操作资源的动作:REST请求并不

  • 拓扑排序

    拓扑排序&关键路径 前言 今天开始学习拓扑排序和关键路径,写个博客记录一下qwq 目录 知识讲解 题目模型 算法框架 例题讲解 习题推荐 知识搬运 在介绍拓扑排序之前,我们来引入一下 有向无环图 顾名思义,如果一个有向图的任意顶点都无法通过一些有向边回到自身,那么就称这个图为有向无环图(DAG) 拓扑序列 为了能更好地理解拓扑排序是什么,我们先通过一个栗子来感受一下: 如果你想说一口流利的英语,那你需要先学英语口语 如果你想学英语口语,那你需要多读英语文章 如果你想读英语文章,那你需要学习很多英语单词 复制 综上,你能说一口流利英语的全过程如下(一本正经): 学习英语单词->多读英语文章->锻炼英语口语->流利的英语 这样的一个顺序序列就是拓扑序列 拓扑排序 简单来说,求得如上拓扑序列的过程就叫做拓扑排序 说得完整一点:将有向无环图\(G\)的所有顶点排成一个线性序列,使得对图\(G\)中的任意两个顶点\(u\)、\(v\),如果存在一条边\(<u,v>\),那么在这个线性序列中,\(u\)一定在\(v\)

  • 学习通--超星自动签到(Python)

    1importrequests 2importjson 3importtime 4 5#填入Cookie 6headers={ 7"Cookie":"", 8"User-Agent":"" 9} 10#填入uid 11uid="" 12coursedata=[] 13activeList=[] 14course_index=0 15speed=10 16status=0 17status2=0 18activates=[] 19defbackclazzdata(): 20globalcoursedata 21url="http://mooc1-api.chaoxing.com/mycourse/backclazzdata?view=json&rss=1" 22res=requests.get(url,headers=headers) 23cdata=json.loads(res.text) 24if(cdata['result']!=1): 25print("请补充Cookie否则课程列表获取失败") 26return0 27foritemincdata['channelLis

  • Andrew Ng - 深度学习工程师 - Part 2. 改善深层神经网络:超参数调试、正则化以及优化(Week 2. 优化算法)

    ===========第2周优化算法================   ===2.1Mini-batch梯度下降=== epoch:完整地遍历了一遍整个训练集 ===2.2理解Mini-batch梯度下降=== Mini-batch=N,BatchGD。训练集小(<=2000),选Bath;  Mini-batch=1,StochasticGD。不会收敛,而是一直在最小值附近“波动”。噪声可以通过减小学习率在一定程度上得到减缓,但每次只处理一个样本,失去了向量化带来的好处 考虑到计算机存储方式,通常选择mini-batch为2的指数,使得代码运行更快,最常见的是64,128,512。Inpractice,mini-bacth的大小也是一个超参,做一个快速check,看哪一个可以最有效地降低代价函数值 注意使你的Bath大小与你的CPU/GPU内存相符   ===2.3指数加权平均=== Exponentiallyweightedaverages:Vt=beta*Vt-1+(1-beta)Zt, 比如beta=0.9 可以reviewvid

  • JS 轮播图实现效果

    封装好的公共代码: //Createin2020/9/11byLX //获取元素非行内样式的方法用法:getStyle(元素,样式名) functiongetStyle(ele,prop){ //1.编写主要代码 //如果元素.currentStyle==undefined标准浏览器中 if(ele.currentStyle==undefined){ //为了让别人在函数外面也能得到我们获取的属性值我们要把属性值返回出来 returngetComputedStyle(ele)[prop]; }else{ returnele.currentStyle[prop]; } //2.分析不确定的值提取出来作为参数元素属性 //3.将参数带入到函数中 } //2.封装一个动画函数可以来回运动用法:move(元素,属性.终点,步长) vartimer=null; functionmove(ele,prop,end,step){ clearInterval(timer); //1.写入主要代码 //1.设置三要素准备工作 varstart=parseInt(getStyle(ele,prop)

  • Python之让 字符串内的转义字符 不做任何处理

      一、在字符串前面加上'r'就可以了 print("\ntext_1") print(r"\ntest_2")复制   二、在转义字符的'\'前面再加一个'\' print("\ntext_1") print("\\ntest_2")复制   在re模块中(电脑主控制台上打开的python): 在re模块中(PyCharm上打开的python):     Python内部传值过程:    作者:Jony·Li 来源:https://www.cnblogs.com/lzn-2018/ 版权声明:本文为博主原创文章,转载请附上博文链接!

  • 面试时说Redis是单线程的,被喷惨了!

    Redis是单线程的,这话搁以前,是横着走的,谁都知道的真理。现在不一样,Redis 变了。再说这句话,多少得有质疑的语气来跟你辩驳一番。意志不坚定的,可能就缴械投降,顺着别人走了。 到底是什么样的,各位看官请跟小莱一起往下: 图注:思维导图 Reactor模式  反应器模式,你可能不太认识,如果看过上篇文章的话应该会有点印象。涉及到Redis线程它是一个绕不过去的话题。 1、传统阻塞IO模型  在讲反应器模式前,这里有必要提一下传统阻塞IO模型的处理方式。 在传统阻塞IO模型中,由一个独立的Acceptor线程来监听客户端的连接,每当有客户端请求过来时,它就会为客户端分配一个新的线程来进行处理。当同时有多个请求过来,服务端对应的就会分配相应数量的线程。这就会导致CPU频繁切换,浪费资源。 有的连接请求过来不做任何事情,但服务端还会分配对应的线程,这样就会造成不必要的线程开销。这就好比你去餐厅吃饭,你拿着菜单看了半天发现真他娘的贵,然后你就走人了。这段时间等你点菜的服务员就相当于一个对应的线程,你要点菜可以看作一个连接请求。   同时,每次建立

  • 数据结构(C语言版)

    一、线性表   二、栈   三、队列   四、KMP算法   五、树   六、查找   七、排序   八、图

相关推荐

推荐阅读