linux的一些介绍和扯淡。

本文以时间的顺序来回顾linux的发展历史,因为博主不是专门研究的Linux历史的专业人才,这里只对一些关键的时间点做介绍,介绍的来源也是来自于各个实体书和网上的资料,想要具体了解的可以去自行查找相关资料。

博主之后将会写出来一系列的linux文章的初心只是为了将自己的Linux的学历的过程记录下来,通过自己写文档的形式来加强自己的记忆,之后的一系列文章只是博文的学习笔记,也希望大家可以出里面学到一些东西。

1960年代初 分时操作系统

  MIT开发出分时操作系统,这个系统可以实现多台终端机接入到大型主机上。算得上是多用户的起源。

1965年 Multics项目

由贝尔实验室、麻省理工学院、通用电气合作研发。目的是研发出一款可以让超过300台终端连接到大型主机的系统。

Multics(Multiplexed Information and Computing Service)是一个大型机分时操作系统,始于1965年,一直使用到2000年。Multics最初是一个研究项目,对操作系统的发展产生了重要影响。该系统成为霍尼韦尔出售给教育,政府和行业的商业产品。
 Multics是Computer Utility的原型,它为远程用户在其终端上提供安全的计算。多人仍然错过优雅,一致且功能强大的编程环境。某些Multics功能现在才被添加到现代系统中。
上面两段~~标红的~~段落介绍来自于Multics系统的介绍网站,其具体地址为:http://www.multicians.org。

1969年 Ken Thompson开发出来小型File Server System

Ken Thompson 在一台DEC公司推出的PDP-7上开发出一个小型文件系统,这个系统就是UNIX的前身,这个系统是在Multics系统上简化而得来,被取名为Unics。

Unics系统上,Ken Thompson总结了两个概念:

所有的程序和系统装置都是文件。(有Linux内味儿了)

不管是创建编辑器还是附属文件,所写的程序只有一个目的,就是要有效地完成目标。

1973年,Unix正式诞生。

Ritchie以C语言重新改写和编译了Unics内核,于是Unix诞生了。

1977年 Unix的分支BSD诞生。

Unix使用C语言写成的,这意味着只需要一定的修改就可以将Unix在其他机器上运行,同时Unix的拥有者AT&T对于Unix的源代码持开放态度,于是伯克利大学Bill Joy在得到Unix的源代码后,经过自己的修改和编译,最终得到了一款新的系统,Bill Joy将这个系统命名为Berkeley Software Distribution(BSD)。

同时,Bill Joy也是SUN公司的创始人,所以公司后来的Solaris系统就是由BSD Unix移植而来,后来又转向了System V。Solaris系统是Unix的重要分支。

1979年 System V

1979年,AT&T推出了System V,这一版中,Unix可以运行在X86架构上,即Unix可以运行在个人电脑上。

但同时,AT&T为了可以收紧版权,特别增加了“不可以将Unix的源代码提供给学生”。

1984年 X86架构的Minix诞生

由于AT&T在第七版的System V中声明,不能将UNix的源代码提供给学生,但又为了解决学生的学习问题,于是荷兰阿姆斯特丹自由大学的谭邦宁教授minix内核程序,同时为了避免版权方面的问题,谭邦宁教授完全不看Unix的源代码,但同时又强调minix必须要与Unix兼容。

1984年 GUN和FSF基金会成立。

1984年stallman创建GUN计划,GNU的意思是GUN's Not Unix。

1988年 图形接口XFree86项目

X在W之后,意味着要打败Windows。

1992 芬兰的大学生Linus Torvalds发布了第一个linux的内核。

以上就是Linux的前生的一些历史。

Linux一些发行版的介绍。

Linux严格意义上来说只是一个内核程序,由Linus Torvalds本来进行维护,爱好者们可以向他提交源代码,如果Linus认为你提交代码很有建设性的意义,就会将你的代码加入到Linux的下一个版本中,但同时你要对你的代码足够的信心,前一段时间,Linus大神就公开喷了代码的提交者,大家可以自己去搜索了解。

https://www.kernel.org/,这个网址linux的kernel的官网地址,大家可以自由区打卡浏览。

有很多公司基于linux的kernel,加上符合GUN协议的一些软件,再加上一些自己开发的软件,就可以发型出一个正式的发行版。在这个发行版中,主要有三个主要分支:Redhat,Debian,slakeware。

Redhat公司有商业版和个人版,分别为RHEL(Red Hat Enterprise Linux)和fedora。

Fedora因为是个人版,发行速度比较快,同时有很多版本较为新的软件和功能,其目的就是为了测试,当得到充足的反馈并对软件与功能的进行修改到达很好的稳定性之后,才会将心功能加入到RHEL中。

RHEL的全称为Red Hat Enterprise Linux,即企业版的红帽Linux,RHEL本身有两种发行的版本,一种是编译好的二进制收费模式,一种是公开出来的源代码(受制于GPL协议)。收费模式下,也可以免费使用,但将得不到后续的补丁升级,但发生错误时,也没有Redhat原厂的支持,其实就算买了原厂的授权,原厂在百分之八十的情况下也只会让你把收集到的内核错误信息发到原厂,他们最终给出一个处理结果,什么安装系统就不要想了·。在发放出来的源代码中,cent社区,经过对源代码的重新编译(更换了一些图标),放出的免费的centos版本,其使用方式与RHEL完全一致,同时cent社区还承诺,会在Redhat公司发出补丁的24小时内,发出经过编译的补丁,我之后的实验环境应该都是CentOS 的7系列的系统。同时选择RHEL还有一个重要原因就是对KVM的支持,毕竟KVM的母公司就是被Redhat公司收购的。另外,华为也在RHEL的基础上,开发出了自己的Euler OS系统。
slakeware的最大分支是SUSE linux,虽然现在SUSE和slakeware的关系不大,但原本的suse就是在slakeware上开发的。SUSE也分为个人版和商业版,个人版是openSUSE,博主搜索企业版的,找到的几乎都是openSUSE。SUSE本身是一家德国公司的产品,因此在欧洲比较流行,国内使用SUSE比较出名的是华为公司,华为公司的很多软件都是跑在SUSE上面的,例如华为的可以用来管理网络设备、服务器、存储的esight软件就是跑在SUSE上的,博主在18年在华三的总部接受培训时曾经听到suse在北京正在大规模的招兵买马,大干一场。不过在经过19年美国的大规模制裁后,华为的产品里的SUSE是彻底完了,华为自己搞出了自己的EulerOS,不仅目前的软件都部署在EulerOS中,以前安装在SUSE环境里的软件,也在免费帮客户更换到EulerOS中,另外华为的华为私有云(公有云不太清楚)中的提供云服务的系统也全都是EulerOS。SUSE中国也真是惨惨惨。

Debian里面,最出名就是Ubuntu,一个来自于南非的linux,个人用的还是很多的,和中国厂商的合作还挺多的,之前魅族的MX4还出过一版Ubuntu系统,可惜没什么后续消息了,第二个就是优麒麟,是对于原版的中国化改造,改的还可以,就是对小白不友好。第三个就是Deepin系统,目前还算火的UOS 20就算是Deepin的企业版,博主曾在虚拟机里安装过,界面和Deepin最新发布的Deepin V20高度相似,Deepin系统确实很不错,里面的应用商店还有windows的软件,用起来还是不错的,推荐大家在虚拟机里体验一下,再决定要不要换到的deepin上来玩。

以上就是关于linux的介绍和一些扯淡的内容。如果以后再发现什么有意思的信息,再往里面加吧。

本文转载于网络 如有侵权请联系删除

相关文章

  • React Hooks笔记:useState、useEffect和useLayoutEffect

    ReactHooksHook是React16.8的新增特性,可以让你在函数组件中使用state以及其他的React特性。从概念上讲,React组件一直更像是函数。而Hook则拥抱了函数,同时也没有牺牲React的精神原则。优点代码可读性更强,原本的写法同一块功能的代码逻辑被拆分在了不同的生命周期函数中,不利于维护和迭代,通过ReactHooks可以将功能代码聚合,方便阅读维护。不用再去考虑this的指向问题。在类式组件中,必须去理解JavaScript中this的工作方式。更容易复用代码。每调用useHook一次都会生成一份独立的状态,这个没有什么黑魔法,函数每次调用都会开辟一份独立的内存空间。虽然状态(fromuseState)和副作用useEffect的存在依赖于组件,但它们可以在组件外部进行定义。这点是classcomponent做不到的,你无法在外部声明state和副作用(如componentDidMount)。代码量更少,不需要像React.Component那样写太多的模板代码。缺点响应式的useEffect。hooks不擅长异步的代码(旧引用问题)。customhooks

  • Linux之locate命令

    命令简介locate(locate)命令用来查找文件或目录。locate命令要比find-name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用whereis和locate查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。整个locate工作其实是由四部分组成的。/usr/bin/updatedb主要用来更新数据库,通过crontab自动完成的/usr/bin/locate查询文件位置/etc/updatedb.confupdatedb的配置文件/var/lib/mlocate/mlocate.db存放文件信息的文件如果系统中没有此命令//Centos >yuminstallmlocate-y //Ubuntu >sudoapt-getinstallmlocate-y

  • C++11多线程-【2】线程的join和detach

    C++11多线程-【2】线程的join和detach本文翻译自C++11Multithreading–Part2:JoiningandDetachingThreads,转载自C++11多线程-【2】线程的join和detach本文介绍线程对象std::thread的joining和detaching。使用std::thread::join()进行线程的joining一旦一个线程开始之后,另一个线程可以等待此线程结束。需要等待的线程可以调用std::thread的join()函数来实现上述功能。std::threadth(funcPtr); //somecode th.join();复制下面看一个简单的例子。假设主线程需要启动10个工作线程,开始这些线程之后,主线程需要等待这些线程结束。等joining所有的线程之后,主程序继续运行:#include<iostream> #include<thread> #include<algorithm> classWorkerThread{ public: voidoperator()(){ std::cout

  • 超越图灵测试:判断机器是否在思考的现代方法

    参考链接:图灵测试全文共2189字,预计学习时长6分钟 图源:slate 人工智能正在改变生活的方方面面,大多数专家认为,今天的人工智能进化为人工通用智能只是时间问题,计算机迟早会达到甚至超过人类智能的临界点。但问题是,我们如何知道这种情况何时会发生? 1950年,艾伦·图灵提出了著名的测试方法,用来判断机器是否真的在思考。这一测试在论文发表后经历了一些演变,其中一个常见的解释是这样的: 一个人,即审讯者(C),可以通过电脑终端进行交流(现在,我们可能会说通过即时通讯、电子邮件或短信);在计算机链路的另一端是人(B)或计算机(A)。经过20分钟的键盘通信后,询问者会表明在另一端是人还是计算机。 如果审讯者认为他在和一个人交谈,但实际上是一台电脑,那么结论就是,这台电脑一定在像人一样思考。为了让计算机“通过”测试,这个实验要进行多次,超过一半的审问者同意。 最近,对图灵测试的一种改进将对话时间缩短到5分钟,并认为如果计算机愚弄受试者的时间超过30%,测试就通过了。2014年,一个名为Cleverbot的程序被声称通过了图灵测试,愚弄了33%的审讯者。然而,虽然Cleverbot有一些复杂

  • 9.27【前端开发】图片文件格式:常见的图片格式对比有何优劣以及如何使用Google的webp格式?

    1、JPEG:支持摄影图像或写实图像的高级压缩,并且可利用压缩比例控制图像文件大小;有损压缩会使图像数据质量下降,JPG不适合具有大块颜色相近的区域或亮度,适合差异十分明显的较简单的图片,JPG在存储摄影或写实图像一般能达到最佳的压缩效果,比如网站的背景图,轮播图,用户头像等2、PNG的优缺点能在保证最不失真的情况下尽可能压缩图像文件的大小。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位。对于需要高保真的较复杂的图像,PNG虽然能无损压缩,但图片文件较大,PNG8可以用来做小图标(icons),按钮,背景等。3、GIF图片是一种无损压缩的格式,GIF格式可以用来做动画总结一下,对于色彩与图像内容比较丰富,变化比较多端的,适合使用jpg,例如大型背景、头像、人物照片等。对于颜色单一,有大色块的图像,例如图标等,适合用png,压缩效率高,并且有透明。小动画可以使用gif,便不适合使用复杂的视频。Googlewebp格式图片网络中图片是占用流量较大的一部分,如何在保证图片视觉不失真前提下缩小体积,对于节省带宽和电池电量十分重要,特别在移动设备

  • Android--自定义属性在系统控件上的用法

    我们知道自定义属性要在自定义控件中使用的,我们自定义styleable,并通过obtainStyledAttributes方法解析,这就必须自定义View来解析我们自定义的属性,今天来介绍一种在系统控件上设置自定义属性的方法首先看布局文件<com.aruba.animationlibrary.AnimatorScrollViewxmlns:android="http://schemas.android.com/apk/res/android" xmlns:discrollve="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <com.aruba.animationlibrary.Animator

  • Java虚拟机之内存区域,今天这篇文章来深入理解一下把

    深入理解Java虚拟机之Java内存区域Java虚拟机在执行Java程序的时候会把它所管理的内存分为多个不同的区域,每个区域都有不同的作用,以及由各自的生命周期,有些随着虚拟机进行的 启动而存在,有些区域则依赖于用户线程的启动或结束而建立或销毁等。在《Java虚拟机规范(JavaSE7版)》中规定,Java内存分为以下一种,如图所示:1、程序计数器程序计数器(ProgramCounterRegister)是一个内存较小的区域,它可以被看作是当前线程所执行到的字节码的行号的指示器,字节码解释器在执行下一条指令,比如分支,跳转,循环,异常处理等都需要依赖这个计数器来完成的。由于Java多线程是通过不断的切换分配处理器时间片的方式来实现的,在任何一个确定的时刻,一个处理器都只会执行一条指令。也就是说,在多线程中每个线程都可以抢到cpu的时间片,那么别抢去的线程会立即停止下来,直到它再一次获得cpu的时间片。那么, Java虚拟机是如何确保再一次获得处理器时间片的时候能够在正确的位置上继续执行指令?Java虚拟机就是通过当前线程的程序计数器保证的,因为保存了当前线程上次执行结束的位置,因此,程

  • R+python︱Facebook大规模时序预测『真』神器——Prophet(遍地代码图)

    版权声明:博主原创文章,微信公众号:素质云笔记,转载请注明来源“素质云博客”,谢谢合作!!https://blog.csdn.net/sinat_26917383/article/details/57419862经统专业看到预测的packages都是很眼馋的。除了之前的forecast包,现在这个prophet功能也很强大。本packages是由机器之心报道之后,抽空在周末试玩几小时。一些基本介绍可见机器之心的《业界 | Facebook开源大规模预测工具Prophet:支持Python和R》 并不喜欢理论分析,能直接上案例的,一般不码字,力求简单粗暴!! 官网网址:https://facebookincubator.github.io/prophet/ github网址:https://github.com/facebookincubator/prophet 论文:《ForecastingatScaleSeanJ.TaylorandBenjaminLetham》 案例数据下载:http://download.csdn.net/detail/sinat_26917383/9764537

  • 字符串匹配的KMP算法

    关于字符串匹配KMP算法其实不难,只要理解字符串下一步匹配需要移动的个数就可以了,但是说是这么说,实际理解肯定会有或多或少的问题,要是大家看完之后还是有问题有疑问的同学,可以再文章底部加我~字符串匹配的KMP算法 字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBCABCDABABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家DonaldKnuth。这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到JakeBoxer的文章,我才真正理解这种算法。下面,我用自己的语言,试图写一篇比较好懂的KMP算法解释。1.首先,字符串"BBCABCDABABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。2.因为B与A不匹配,搜索词再往后移。3.就这样,

  • Python爬虫Scrapy(二)_入门案例

    本章将从案例开始介绍pythonscrapy框架,更多内容请参考:python学习指南 入门案例学习目标创建一个Scrapy项目 定义提取的结构化数据(Item)编写爬取网站的Spider并提取出结构化数据(Item)编写ItemPipelines来存储提取到的Item(即结构化数据)一、新建项目(scrapystartproject)在开始爬取之前,必须创建一个新的Scrapy项目。进入自定义的项目目录中,运行下列命令:scrapystartprojectcnblogSpider复制其中,cnblogSpider为项目名称,可以看到将会创建一个cnblogSpider文件夹,目录结构大致如下:scrapy.cfg:项目部署文件 cnblogSpider/:该项目的python模块,之后可以在此加入代码 cnblogSpider/items.py:项目中的item文件。 cnblogSpider/pipelines.py:项目中的Pipelines文件。 cnblogSpider/settings.py:项目的配置文件。 cnblogSpider/spiders/:放置Spider代码

  • ISP举例_low input lag

    大家好,又见面了,我是你们的朋友全栈君。从2000年9月底摄像头首次出现在手机上算起,到如今成为诸多智能设备不可或缺的一部分,便携式手机摄像头已经走过了18年的发展历程。随着手机智能化、轻薄化的发展进程,其搭载的摄像头也随之发生了变化,但基本结构并未有太大的改变。通常而言,一个摄像头硬件应包含以下五个部分:外壳(Housing)或者镜头固定物(LensHolder)、镜头(Lens)、红外截止滤波片(IR-cutfilter)、图像传感器(ImageSensor)和印制电路板(PCB)。其中,镜头、红外截止滤波片和图像传感器是组成摄像头的核心部件,也是引起LensShading的主要部分。 图1摄像头分解示意图关于LensShading,一直未找到明确且合理的解释。不论是维基百科,还是百度百科,均为对该词条进行解释。但在一些博客和文献中,有人将LensShading称为暗角,也有将LensShading视为镜头阴影/镜头暗影,此外,还有称LensShading为亮度均匀性的。称谓很多,但没有固定且统一的说法。在文中,本人更偏向于镜头暗影的说法,即可用“暗”表示图像亮度变化引起的暗角,也

  • Suggestion(搜索建议)产品和技术

    今天来简单聊聊Suggestion产品 什么是Suggestion服务?一图胜千言: 当你想要搜索某个长词语或者一句话输入部分时,Suggestion服务预测你极大可能的候选项,并罗列出来,供你选择。 产品的意义: 1.降低用户搜索的输入成本,用户总是懒惰的,谁能让用户最懒惰还能帮他把事办好,这就是好的产品。当然如果真有一天能用脑电波搜索了,这个产品功能就没意义了. 2.为用户提供提示,因为有部分用户多一个长词组很有可能只能记住部分。如有部电影叫"心急吃不了热豆腐",朋友A推荐给朋友B,只记得"心急吃不了啥"了 3.提高搜索转化率,用户在任何过程中都有可能流失,打字打完"心急吃不了",一个朋友说别看这个了,看<冰与火之歌>吧,可能还差那最后3个字就能转战别的电影了   什么样的词应该纳入到Suggestion里面去呢? 如果把所用所有的搜索记录都作为suggestion服务,那用户输入完一个前缀后,就会出现满屏的词语;在这种场景下,尽量提供好用的suggestion而保持简洁的结果的秘诀在于把控数量并提高转化率,所以一般可以用双重法则 1.如果这个前缀的所有搜索

  • 【转】分布式事务中常见的三种解决方案

      https://www.cnblogs.com/bluemiaomiao/p/11216380.html 目录 一、分布式事务前奏 二、柔性事务解决方案架构 (一)、基于可靠消息的最终一致性方案概述 (二)、TCC事务补偿型方案 (三)、最大努力通知型 三、基于可靠消息的最终一致性方案详解 (一)、消息发送一致性 (二)、保证消息一致的变通做法 (三)、常规MQ消息处理流程和特点 (四)、消息重复发送问题和业务接口幂等性设计 (五)、本地消息服务方案 (六)、独立消息服务方案 (七)、消息服务子系统的设计实现   一、分布式事务前奏 事务:事务是由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性、一致性、隔离性和持久性。 本地事务:当事务由资源管理器本地管理时被称作本地事务。本地事务的优点就是支持严格的ACID特性,高效,可靠,状态可以只在资源管理器中维护,而且应用编程模型简单。但是本地事务不具备分布式事务的处理能力,隔离的最小单位受限于资源管理器。 全局事务:当事务由全局事务管理器进行全局管理时成为全局事务,事务管理器

  • 看 C++ Primer 的58页, 讲拷贝时不能忽略 底层const这里的说的原因有点牵强, 这里给出自己的理解

    externconst intci=42;  constint*p2 =&ci; externconst int*constp3=p2;   int*p=p3;      //错,p没有底层const。 书上的解释是:p3是顶层const也是底层const,拷贝p3可以不在乎其顶层const,但是p3指向的是一个常量,因此不能用P3初始化p, 而p只能指向非常量。 理解他说的意思是因为一个指向常量一个指向非常量。 但自己仔细想想,底层const也可以指向一个非常量,那是不是当p3一开始就用非常量初始化时,此时p3和p都指向非常量了,int*p=p3;是不是就正确了呢? 如果按书上的解释,给人的误解是当他俩都指向常量或非常量时就没问题了, 这是误解,产生误解是因为他没说清楚。   我是这么理解:指向常量的指针既可以指向常量也可以指向非常量, 而一般普通指针只能指向非常量。 1、假设不同时具有底层const也可以拷贝: 当有底层const的指针给 没有底层const的指针赋

  • /sys 文件夹下和驱动相关的部分

    /sys/bus 目录下的每个子目录都是注册好了的总线类型。这里是设备按照总线类型分类放置的目录结构,每个子目录(总线类型)下包含两个子目录——devices和drivers文件夹;其中devices下是该总线类型下的所有设备,而这些设备都是符号链接,它们分别指向真正的设备(/sys/devices/下);而drivers下是所有注册在这个总线上的驱动,每个driver子目录下是一些可以观察和修改的driver参数。 /sys/devices 目录下包含所有被发现的注册在各种总线上的各种物理设备 /sys/class 目录下的每个子目录是所有注册在kernel里面的设备类型,这里设备是按照设备功能分类的,每种设备都具有自己特定的功能,比如:鼠标的功能是作为人机交互的输入,按照设备功能分类无论它挂载在哪条总线上都是归类到/sys/class/input下。  

  • 在js里再引入js 文件(代码库)

    functionaddScript(url){  varscript=document.createElement('script');  script.setAttribute('type','text/javascript');  script.setAttribute('src',url);  document.getElementsByTagName('head')[0].appendChild(script);} 登录日志记录ip和城市,并且改成页面加载完毕以后再执行需要延时一秒读数据,否则会出现有时读不到数据的问题window.onload=functiononLoginLoaded(){  varscript=document.createElement('script');  script.setAttribute('type','text/javascript');  script.setAttribute('src',"https://pv.sohu.com/cityjson?ie=utf-8");  document.getElementsByTagName('h

  • 其他文章

    换博客啦!hexo真香!因为我比较懒就不把文章转移过去。博客园这边可能会很少更新了。 其他文章请查看,师傅们提一提问题:https://joker-vip.github.io/ 作者:joker0xxx3出处:https://www.cnblogs.com/joker-vip/本文版权归作者和博客园共有,任何人或团体、机构全部转载或者部分转载、摘录,请在文章明显位置注明作者和原文链接。否则保留追究法律责任的权利。

  • SQL基础教程笔记:第七章 集合运算

    目录表的加减法学习重点什么是集合运算表的加法——UNION集合运算的注意事项包含重复行的集合运算——ALL选项选取表中公共部分——INTERSECT记录的减法——EXCEPT联结(以列为单位对表进行联结)学习重点什么是联结内联结——INNERJOIN外联结——OUTERJOIN3张以上的表的联结交叉联结——CROSSJOIN联结的特定语法和过时语法练习题 表的加减法 学习重点 集合运算就是对满足同一规则的记录进行的加减等四则运算。 使用UNION(并集)、INTERSECT(交集)、EXCEPT(差集)等集合运算符来进行集合运算。 集合运算符可以去除重复行。 如果希望集合运算符保留重复行,就需要使用ALL选项。 什么是集合运算 集合在数学领域表示“(各种各样的)事物的总和”,在数据库领域表示记录的集合。具体来说,表、视图和查询的执行结果都是记录的集合。所谓集合运算,就是对满足同一规则的记录进行的加减等四则运算。通过集合运算,可以得到两张表中记录的集合或者公共记录的集合,又或者其中某张表中的记录的集合。像这样用来进行集合运算的运算符称为集合运算符。 表的加法——UNION 首先为大家

  • linux文件摘选

    显示/var目录下所有以1开头,以一个小写字母结尾,且中间至少出现一位数字(可以由其他字符)的文件或目录。 命令:ls-d/var/1*[0-9]*[a-z]   [root@foundation0~]#ls-d/var/1*[0-9]*[a-z]ls:cannotaccess/var/1*[0-9]*[a-z]:Nosuchfileordirectory[root@foundation0~]#clear[root@foundation0~]#ls-d/var/1*[0-9]*[a-z]ls:cannotaccess/var/1*[0-9]*[a-z]:Nosuchfileordirectory[root@foundation0~]#touch/var/1sfsfsfas[root@foundation0~]#ls-d/var/1*[0-9]*[a-z]ls:cannotaccess/var/1*[0-9]*[a-z]:Nosuchfileordirectory[root@foundation0~]#touch/var/1sfsf4sfas[root@founda

  • on 在ios下 父对象是body的时候会 不调用

    on用委托的形式绑定事件 在ios下父对象是body获取docment的时候会不调用 解决方案 在这些元素上加 cursor:pointer;

  • sonar集成阿里p3c代码规范

         sonar自带检测java代码规则插件,也可以开发自定义的插件。《阿里巴巴Java开发手册》在业界影响很大,很多公司领导希望在自己的团队推行起来,让团队有一套共同的开发准则。我们把阿里的p3c规则集成到sonar,用这套方案来检测java代码质量。   一、安装 下载p3c插件:https://github.com/caowenliang/sonar-pmd-p3c (此插件兼容sonarQube7.7+以上版本,包括目前最新版8.4.2) 执行以下命令: cdsonar-pmd-p3c mvncleaninstall-Dmaven.test.skip=true复制  将生成的sonar-pmd-plugin-3.2.1.jar包丢到sonarQube的插件目录/extensions/plugins即可,然后重新启动服务。   二、质量配置 1.p3c规则默认是不启用的,在质量配置中新建一个配置     2.配置中还没有激活任何规则,手动激活下  

相关推荐

推荐阅读