基础知识_基础知识总结 - CSDN
精华内容
参与话题
  • 我之前里的文章,写的大部分都是与计算机基础知识相关的,这些基础知识,就像我们的内功,如果在未来想要走的更远,这些内功是必须要修炼的。框架千变万化,而这些通用的底层知识,却是几乎不变的,了解了这些知识,...

    我之前里的文章,写的大部分都是与计算机基础知识相关的,这些基础知识,就像我们的内功,如果在未来想要走的更远,这些内功是必须要修炼的。框架千变万化,而这些通用的底层知识,却是几乎不变的,了解了这些知识,可以帮助我们更快着学习一门知识,更加懂得计算机的运行机制。当然,在面试中也经常会被问到,特别是对于应届生,对于春秋招,也可以看看我前阵子写过的文章历经两个月,我的秋招之路结束了!。也有读者经常问的计算机基础知识究竟是指啥?学习顺序?推荐书籍?

    我公众号的读者学生以及非科班的应该挺多的,所以我今天这篇文章就写一写,我学过的计算机基础知识,看过的书以及我学过的顺序

    当然,以下是我个人的一些经验,并且学过的一些知识,仅供参考,也欢迎大家进行补充

    一、计算机网络

    在我们用的程序中,99% 都离不开网络,作为一个程序员,我觉得了解计算机网络是必须的,在大学的课程中,一般也都会开设这一门课。

    在我学习这门课之前,我就特别好奇,一台电脑是怎么把消息发给另外一台电脑的呢?例如:

    1、两台电脑啥线路也没有相连,怎么就能把消息发送给他呢?

    2、世界上的电脑那么多,咋就能找到那台特点的电脑呢?有人说我们可以 MAC 或者 IP 来唯一标识啊,可是,我就有点疑惑了,世界那么大,电脑那么多,有了这个标识,我们该怎么找到他呢?遍历所有电脑?

    3、多个程序同时发消息给一台电脑,电脑是如何准确把这些消息拿给这些不同程序的呢?

    4、发送的消息丢失了怎么办?

    总之,一大堆疑问,看了计算机网络之后,才豁然开朗。自己也写了一篇评价不错的文章:一文读懂一台计算机是如何把数据发送给另一台计算机的

    所以这里,我是强烈建议大家学一下的,在面试中,计算机网络也是高频考点,这里我大致总结一下一些必学协议以及面试高频考点:

    1、http协议,包括:封装格式,常见响应码,不同版本的区别,常见请求方法,存在哪些安全隐患,啥是无状态协议等。

    2、https协议:http 是明文传输,https 是加密安全的,需要知道 https 是如何加密的、数字证书如何形成,啥的对称加密、非对称加密。

    3、TCP协议:三次握手、四次挥手、如何保证可靠传输、流量控制、拥塞控制。

    4、UDP:这个大致了解即可,好像内容比较少

    5、DNS、ICMP、ARP、DHCP(我就不一个一个写了)

    上面写的这些协议,我觉得是比较重要的,特别是在面试中。我公众号文章也写了好几篇这些协议的,大家可以去计算机基础那个模块找。

    对于新手推荐视频:可以看韩老师讲的视频,在哔哩哔哩搜索韩老师就可以找到 韩老师讲搞笑《计算机网络原理》。

    推荐书籍:《计算机网络:自顶向下》、《图解http》

    我是先看了视频,在看这两本书的(文末我会给出电子版)。

    大家也可以关注我的微信公众号:苦逼的码农,第一时间获取我的文章以及一些资料

    二、操作系统

    操作系统也是一门非常重要的知识,在面试中也是问的非常多(当然,看公司,有些公司技术栈是 Java 的,可能问的比较少)。对于操作系统,要学的也挺多,例如:

    啥是进程,啥是线程,他们的本质区别?我们运行一个程序时,数据放在哪里?代码放在哪里?咋就还要分堆和栈?线程切换时是上下文是啥意思?

    虚拟地址是什么鬼东西?线程需要那么多种状态干啥子?什么是乐观锁、悲观锁?死锁是怎么造成的?解决死锁的策略有哪些?等等

    有人说学操作系统太他妈枯燥了,确实挺枯燥,不过说实话,我还是学的挺有意思的,感觉可以学到很多种策略,一种比一种好,每次看完都是:我去,咋我就想不到呢。我觉得,对于前期,我们需要多参考别人的策略,看多了,有了一定的基础,慢慢形成自己的策略,总之,看这些书,不单要掌握这些知识点,更重要的是一种思维逻辑的提升

    对于操作系统,我总结了下面一些比较核心,面试相对容易被考到的。

    1、进程的通信方式(我写过一篇很不错的文章:记一次面试:进程之间究竟有哪些通信方式? ---- 告别死记硬背

    2、进程、线程究竟是由什么组成的?有哪些数据?

    3、内存管理,包括:虚拟内存(重点)、分页、分段、分页系统地址映射、内存置换算法(重点)。

    4、死锁的处理策略(死锁预防、死锁检测与恢复、死锁避免)

    5、进程调度算法

    6、磁盘寻道算法

    上面说的这些,我认为是比较重要的,如果你没学过,我相信学了之后,你可以学到很多东西,知识点只是其中之一。

    推荐视频:这个我没看过视频,所以想学的,我推荐去中国mooc大学找各大高校的课,也可以去国外找对应的课。

    推荐书籍:我看过的书籍是《操作系统—精髓与设计原理(第八版)》,不过大佬们都推荐《深入理解计算机操作系统(原书第三版)》,我看过目录,感觉还不错,这里也推荐这一本。不过对于零基础的,我建议可以先看一本专门给小白看的书:《程序是如何跑起来的》。

    操作系统的学习,还是挺枯燥的,不过,只有把最难的啃过去,才能变的更加强大

    数据库(这里我用 MySQL)

    在大学的课程里,一般都会开设一门数据库的课程,不过这门数据库是没有针对某一种数据库语言的(例如 MySQL、Oracle)。不过我这里只讲 MySQL的学习,别问为什么,问就是我逃了二十分之十九的课

    把MySQL学好,还是特别重要的,千万不能停留在会用的层面上,而是应该要了解一下原理,特别是对于要面试的同学,会问挺多原理,我每次被问到 MySQL 我都会信心大增,因为我虽然不大好写 SQL,但是,知道挺多原理,记得腾讯、shopee面试时,面完 MySQL,面试官好像对我刮目相看了。好了,不吹了,说这些也是强大 MySQL 的重要性。下面就说我学过的一些知识以及推荐的学习资料吧。

    对于 MySQL,需要学的还挺多的,例如,

    1、一条 sql 语句是如何执行的?进行更新时又是怎么处理的?

    2、索引是如何实现的?多种引擎的实现区别?聚族索引,非聚族索引,二级索引,唯一索引、最左匹配原则等等(非常重要)

    3、事务相关:例如事务的隔离是如何实现的?事务是如何保证原子性?不同的事务看到的数据怎么就不一样了?难道每个事务都拷贝一份视图?MVCC 的实现原理(重要)等等。

    4、各种锁相关,例如表锁,行锁,间隙锁,共享锁,排他锁。这些锁的出现主要是用来解决哪些问题?(重要)

    5、日志相关:redolog,binlog,undolog,这些日志的实现原理,为了解决怎么问题?日志也是非常重要的吧,面试也问的挺多。

    6、数据库的主从备份、如何保证数据不丢失、如何保证高可用等等。

    还有一些常用命令也要知道。

    我觉得,只要你了解了以上的原理,那么对数据库调优的帮助是非常大的,上面除了第六点,其他五点,在应届生的面试中,极其高频。

    推荐书籍:连 sql 都不会写的,推荐《SQL必知必会》,接着推荐《MySQL技术内幕:InnoDB存储引擎》。

    这里我必须推荐下极客时间的一个专栏:《MySQL实战45讲》,讲的非常好,看完应付面试,我觉得够了,我每次面试 MySQL 几乎都加分,离不开这个专栏。如何你想要购买,可以在我的公众号回复**『数据库』**,我会给你发对应的购买链接(注意,这个可不是广告哈,大家买不买看自己)

    文章首发公众号『苦逼的码农』,更多原创,可搜索关注

    四、数据结构与算法

    数据结构与算法,我就不想多说了,看我文章的都知道,我写的文章 80% 是数据结构与算法相关的,重要性不用说。我秋招最大的优势估计就是数据结构与算法的掌握了。上面三门课程的学习,基本也都是离不开数据结构的,对于如何学习数据结构与算法,我觉得可以在写一篇文章了,所以数据结构与算法的学习,我这里不写了,可以关注我的文章,我明天会写一篇与算法相关的。

    论面试,我觉得 操作系统+计算机网络+数据库 + 算法 这三个是问的最多的,所以我写的比较详细,对于学习计算机基础,不为了面试的话,我觉得下面的也及其重要。我分出来说,是为了那些要急着面试的人,可以重点学习下上面这四个。我的公众号『苦逼的码农』也会经常写这些知识的文章

    五、汇编

    我觉得,如何有时间,学习下汇编是必须的,学习了汇编,能够更好着帮助我们知道计算机是如何处理程序代码的,例如寄存器和内存是如何使用的?循环、函数调用、数组是如何实现的?地址是怎么一回事?等等。

    很多二进制代码是可以反编译成汇编的,如何你会汇编,那么可以帮助我们更好着去理解一些东西。所以这里建议大家学习下汇编,并且要动手写一些程序。

    对于汇编的资料,我可能没啥好推荐的,自己看的不多。看过两本书,对于入门的,我建议看 王爽的那本书《汇编语言(第三版)》,不过这本只适合入门,如果想继续,可以看《汇编程序设计》。

    编译原理

    说实话,编译原理还挺难,反正我觉得很难,不过有时间我觉得可以学学,学了这个你可以知道我们的编译器如何分析我们的代码的,例如词法分析,语法分析,语义分析等等。当然,你未来可能会自己写个特定分析代码的编译器也不一定,这个时候,就更加需要学了。

    对于学习的资料,我觉得可以看视频 + 书。视频的话中国 mooc 大学搜索即可,书的话,说时候,我也看的不多,只看过学校指定的教材,所以这里给不了多少建议,自己当当自行搜索,哪本热门卖哪本勒。

    总结

    暂时先介绍这么多吧,说实话,学了这些,不单单是多学了一门知识,更重要的是可以提升你的罗辑思维,给你带来更多的 idea。在之后我的公众号里,我也是主要写计算机基础 + 算法。而这些,是值得每一个程序员去学习的,无论你是什么岗位。而且知识知识学了之后,你去学习其他知识,我相信可以上手的更快滴。

    上面涉及到的书籍,我也去给你们搜索来了电子版的,百度云链接很容易失效,如果你想获取这些书籍,也可以关注我的公众号:帅地玩编程,后台回复『计算机基础』即可获取,文章会首发于我的公众号,如果想第一时间看我的文章,也欢迎关注哦。

    兄dei,如果觉得我写的不错,不妨帮个忙

    1、关注我的原创微信公众号「帅地玩编程」,每天准时推送干货技术文章,专注于写算法 + 计算机基础知识(计算机网络+ 操作系统+数据库+Linux),听说关注了的不优秀也会变得优秀哦。

    2、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我,嘻嘻。

    作者简洁

    作者:大家好,我是帅地,从大学、自学一路走来,深知算法计算机基础知识的重要性,所以申请了一个微星公众号『帅地玩编程』,专业于写这些底层知识,提升我们的内功,帅地期待你的关注,和我一起学习。 转载说明:未获得授权,禁止转载

    展开全文
  • Linux基础知识篇二

    2020-09-02 09:02:54
    文章目录 一、Linux的文件系统1.1 Linux的五种文件类型1.2 Linux的目录结构1.3 inode结点(索引结点)1.4 硬链接和软连接1.5 RAID 二、Linux的文件管理命令1. cat 命令2. chmod 命令3. chown 命令4....

    在这里插入图片描述
    不管接下来,我们之中什么人发生什么事,你都不能停止前进!
                                  ——索隆


    一、Linux的文件系统

    1.1 Linux的五种文件类型

    Linux的设计哲学是 :一切皆文件;正是如此,在Linux操作系统中,无论是硬件设备,例如鼠标键盘和屏幕,还是其他的任何软硬件,都可以在相关目录下找到他们的文件,这些文件共有五种类型

    文件类型 描述 示例
    普通文件 用来在辅助设备上存储信息和数据(如硬盘) 包含程序源代码(用C,C++,Java等语言所编写),可执行程序,图片,声音,图像等
    目录文件 用于表示和管理系统中的文件,目录文件包含一些文件名和子目录名 /root,/home
    链接文件 用于不同目录下文件的共享 当创建一个已存在的符号链接时,系统能够就创建一个链接文件,这个文件指向已存在的文件
    设备文件 用来访问硬件设备 包括键盘,硬盘,光驱,打印机等
    命名管道(FIFO) 是一种特殊的文件,Linux系统下,进程之间通信可以通过该文件实现

    1.2 Linux的目录结构

    Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:
    Linux的目录结构

    在这里插入图片描述
    各目录的内容:

    /bin:存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里;

    /etc:存放系统管理和配置文件;

    /home:存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;

    /usr :用于存放系统应用程序/opt:额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;

    /proc:虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;

    /root:超级用户(系统管理员)的主目录(特权阶级o);

    /sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;

    /dev:用于存放设备文件;

    /mnt:系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;

    /boot:存放用于系统引导时使用的各种文件;

    /lib :存放着和系统运行相关的库文件 ;

    /tmp:用于存放各种临时文件,是公用的临时文件存储点;

    /var:用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;

    /lost+found:这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。

    1.3 inode结点(索引结点)

    • inode 节点是一个 64字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。在 inode节点表中最重要的内容是磁盘地址表。在磁盘地址表中有 13 个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。
    • Linux 文件系统通过把 inode节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的 inode 节点号,通过该inode 节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。

    1.4 硬链接和软连接

    • 硬链接

    由于 Linux 下的文件是通过索引节点(inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配 inode 。每添加一个一个硬链接,文件的链接数就加 1 。

    不足:
    1)不可以在不同文件系统的文件间建立链接;
    2)只有超级用户才可以为目录创建硬链接。

    • 软链接

    软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。

    不足:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

    实际场景下,基本是使用软链接。总结区别如下:

    · 硬链接不可以跨分区,软件链可以跨分区。
    · 硬链接指向一个 inode 节点,而软链接则是创建一个新的 inode 节点。

    1.5 RAID

    RAID 全称为独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。RAID 通常被用在服务器电脑上,使用完全相同的硬盘组成一个逻辑扇区,因此操作系统只会把它当做一个硬盘。

    RAID 分为不同的等级,各个不同的等级均在数据可靠性及读写性能上做了不同的权衡。在实际应用中,可以依据自己的实际需求选择不同的 RAID 方案。

    二、Linux的文件管理命令

    1. cat 命令

    cat 命令用于连接文件并打印到标准输设备上。
    cat的主要用法:

    1. 显示整个文件
       cat filename
    
    1. 从键盘创建一个文件
       cat > filename
    
    1. 将几个文件合并为一个文件
       cat file1 file2 > file3
    

    cat 的更详细的参数及用法参考:cat 命令详解

    2. chmod 命令

    当使用 ls -l 命令是可以看到文件的权限 ,通常是这样:

    -rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
    

    Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以控制文件如何被他人所调用。
    用于改变 linux 系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

    常用选项:

    -c 当发生改变时,报告处理信息
    -R 处理指定目录以及其子目录下所有文件

    权限范围:

    u :目录或者文件的当前的用户
    g :目录或者文件的当前的群组
    o :除了目录或者文件的当前用户或群组之外的用户或者群组
    a:所有的用户及群组

    权限代号:

    r :读权限,用数字4表示
    w :写权限,用数字2表示
    x :执行权限,用数字1表示
    -:删除权限,用数字0表示
    s :特殊权限

    简单举例:

    1. 增加 file1 的可执行权限:
    chmod a+x file1
    
    1. 通过数字:
    chmod 755 file1
    

    3. chown 命令

    chown 将指定文件的拥有者改为指定用户或组,用户可以是用户名或者用户ID;组也一样;

    -c 显示更改的部分的信息
    -R 处理指定目录及子目录

    1. 改变拥有者和群组
       chown -c mail:mail filename
    
    1. 改变文件群组
       chown -c :mail filename
    
    1. 改变test文件夹及子文件目录属主及属组为 mail
       chown -cR mail: test/
    

    4. cp 命令

    将源文件复制至目标文件,或将多个源文件复制至目标目录。
    常用选项:

    -i 提示
    -r 复制目录及目录内所有项目
    -a 复制的文件与原文件时间一样

    实例:

    1. 复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖
       cp -ai a.txt test
    
    1. 为 a.txt 建议一个链接(快捷方式)
       cp -s a.txt link_a.txt
    

    5. find 命令

    用于查找文件并做相应处理
    命令格式:

       find pathname -options [-print -exec -ok ...]
    

    命令选项:

    -name 按照文件名查找文件
    -perm 按文件权限查找文件
    -user 按文件属主查找文件
    -group 按照文件所属的组来查找文件。
    -type 查找某一类型的文件,诸如:
    b - 块设备文件
    d - 目录
    c - 字符设备文件
    l - 符号链接文件
    p - 管道文件
    f - 普通文件

    实例:

    1. 查找48小时内修改过的文件
       find -atime -2
    
    1. 在当前目录查找 以 txt为后缀的文件
       find ./ -name '*.txt'
    
    1. 查找 绝对路径 下权限为 777 的文件
       find /home/xmz/ -perm 777
    
    1. 查找大于 1k 的文件
       find -size +1000c
    

    6. head 命令

    head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行

    实例:

    1. 显示file1文件的前20行
       head file1 -n 20  (-n设置行数)
    
    1. 显示文件的前 20 字节
       head -c 20 file1
    
    1. 显示文件最后10行
       head -n -10 file1
    

    7. less 命令

    less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

    选项与用法:

    -i 忽略搜索时的大小写
    -N 显示每行的行号
    -o <文件名> 将less 输出的内容在指定文件中保存起来
    -s 显示连续空行为一行
    /字符串:向下搜索“字符串”的功能
    ?字符串:向上搜索“字符串”的功能
    n:重复前一个搜索(与 / 或 ? 有关)
    N:反向重复前一个搜索(与 / 或 ? 有关)
    -x <数字> 将“tab”键显示为规定的数字空格
    b 向后翻一页
    d 向后翻半页
    h 显示帮助界面
    Q 退出less 命令
    u 向前滚动半页
    y 向前滚动一行
    空格键 滚动一行
    回车键 滚动一页
    [pagedown]:向下翻动一页
    [pageup]: 向上翻动一页

    实例:

    1. ps查看进程信息并通过less分页显示
       ps -aux | less -N
    
    1. 查看多个文件
    less file1 file2  (n查看下一个,p查看前一个)
    

    8. more 命令

    功能类似于 cat, more 会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。

    命令选项与使用方法:

    +n 从笫 n 行开始显示
    -n 定义屏幕大小为n行
    +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
    -c 从顶部清屏,然后显示
    -d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
    -l 忽略Ctrl+l(换页)字符
    -p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
    -s 把连续的多个空行显示为一行
    -u 把文件内容中的下画线去掉

    常用操作命令:

    Enter 向下 n 行,需要定义。默认为 1 行 4
    Ctrl+F 向下滚动一屏 空格键 向下滚动一屏
    Ctrl+B 返回上一屏
    = 输出当前行的行号
    :f 输出文件名和当前行的行号
    V 调用vi编辑器
    !命令 调用Shell,并执行命令
    q 退出more

    实例:

    1. 显示文件中从第3行起的内容
       more +3 file1
    
    1. 每次显示5行
    ls -l | more -5
    

    9. ln 命令

    功能是为文件在另外一个位置建立一个同步的链接,当在不同目录需要该问题时,就不需要为每一个目录创建同样的文件,通过 ln 创建的链接(link)减少磁盘占用量。

    硬链接和软连接区别

    1、本质:硬链接:同一个多个名字,软连接不同文件
    2、跨分区:硬链接不能夸分区,软连接可以跨分区
    3、目录创建 硬链接不能创建lls 
    4、相互关系,软连接依赖原始文件
    5、indoe号
    6、链接数
    7、路径:相对与当前目录是硬链接   相对与软连接的路径
    8、文件类型。l开头是软连接 -为硬链接文件
    

    硬链接

    1、文件有相同的inode及data block
    2、只能对已经存在的文件进行创建
    3、不能实现跨分区创建硬链接
    4、不能对目录进行创建,只能对文件创建
    5、删除一个硬链接文件并不影响其他有相同的inode号的文件,相当于多个名字
    

    软连接

    1、软连接有自己的文件属性和权限,相当于windows下的快捷方式,保存了源文件的路径
    2、可对不存在的文件或目录创建软连接
    3、软连接可跨分区创建
    4、软连接对文件或目录创建
    5、创建软连接时,链接计数不会增加
    6、删除软连接不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就失效了,但并不会被删除,如果源文件再次被创建,则软连接又重新生效了。
    7.软连接和源文件是不同类型的文件,也是不同的文件,inode号也不相同
    

    用法实例

    1. 创建一个软连接,显示操作信息
       ln -sv source.log link.log
    
    1. 创建硬链接,显示操作信息
       ln -v source.log link1.log
    
    1. 给目录创建软连接
       ln -sv /opt/soft/test/test3 /opt/soft/test/test5
    

    10. locate 命令

    locate 通过搜寻系统内建文档数据库达到快速找到档案,数据库由 updatedb 程序来更新,updatedb 是由 cron daemon 周期性调用的。默认情况下 locate 命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是 locate 所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb 每天会跑一次,可以由修改 crontab 来更新设定值 (etc/crontab)。

    locate 与 find 命令相似,可以使用如 *、? 等进行正则匹配查找

    常用选项

    -l num(要显示的行数)
    -f 将特定的档案系统排除在外,如将proc排除在外
    -r 使用正则运算式做为寻找条件

    实例

    1. 查找和 pwd 相关的所有文件(文件名包含pwd)
       locate pwd
    
    1. 搜索 etc 目录下所有以sh开头的文件
       locate /etc/sh
    
    1. 查找 /var 目录下,以 reason 结尾的文件
    locate -r '^/var.*reason$'(其中.表示一个字符,*表示任务多个;.*表示任意多个字符)
    

    11. mv 命令

    1. 重命名,将file1 重命名为 text1
       mv file1 text1
    
    1. 移动多个文件,将文件或文件夹 file1,file2,file3 移动至file4文件夹下
       mv file1 file2 file3 file4
    
    1. 将文件 file1 改名为 file2,如果 file2 已经存在,则询问是否覆盖
    mv -i file1 file2
    
    1. 移动当前文件夹下的所有文件到上一级目录
    mv * ../
    

    12. rm 命令

    rm 命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
    注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。

    选项:

    -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
    -f:强制删除文件或目录;
    -i:删除已有文件或目录之前先询问用户;
    -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
    --preserve-root:不对根目录进行递归操作;
    -v:显示指令的详细执行过程。
    

    实例:

    rm -rf /
    
    rm -rf /*
    

    在这里插入图片描述

    13. tail 命令

    用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

    常用参数:

    -f 循环读取(常用于查看递增的日志文件)
    -n<行数> 显示行数(从后向前)

    实例:循环读取逐渐增加的文件内容

       ping baidu.com > ping.log &
       tail -f ping.log
    

    14. touch 命令

    linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件。

    1.命令格式:

          touch  [选项] 文件
    

    2.命令选项:

         -c   不建立任何文档
    
         -d   使用指定的日期时间,而非现在的时间
    
         -r   更新前者的时间戳,使其与后者的时间戳一样
    

    3.实例:

    创建两个不存在的文件

       touch demo1.txt demo2.txt 
    

    如果demo1.txt不存在,则不创建文件

       touch -c demo1.txt
    

    更新demo1.txt的时间戳,使其和demo2.txt的时间戳相同

       touch -r demo1.txt demo2.txt
    

    15. whereis 命令

    whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。whereis 及 locate 都是基于系统内建的数据库进行搜索,因此效率很高,而find则是遍历硬盘查找文件。

    常用选项:

    -b   定位可执行文件。
    -m   定位帮助文件。
    -s   定位源代码文件。
    -u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
    

    实例:

    (1)查找 locate 程序相关文件

       whereis locate
    

    (2)查找 locate 的源码文件

       whereis -s locate
    

    (3)查找 lcoate 的帮助文件

       whereis -m locate
    

    16. which 命令

    在 linux 要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:

    which     查看可执行文件的位置。
    whereis 查看文件的位置。
    ocate  配合数据库查看文件位置。
    find        实际搜寻硬盘查询文件名称。
    

    which 是在 PATH 就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

    常用选项:

    -n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。

    实例:
    (1)查看 ls 命令是否存在,执行哪个

       which ls
    

    (2)查看 which

       which which
    

    3)查看 cd

        which cd(显示不存在,因为 cd 是内建命令,而 which 查找显示是 PATH 中的命令)
    

    查看当前 PATH 配置:

       echo $PATH
    


    基础知识的第二篇就先总结到这里了,明天在总结一下 vim 插件的使用

    展开全文
  • 【小程序】基础知识

    2019-11-08 15:17:25
    button按钮上面的open-type设置为getUserInfo,则可以让用户点击按钮时候进行授权,然后通过当前button的bindgetuserinfo属性设置回调方法,bindgetuserinfo的参数就是用户的信息。 <button ...

    项目稍后会上传到github上,需要的可以私聊查看,都是一些基础api使用。

    登陆

    button按钮上面的open-type设置为getUserInfo,则可以让用户点击按钮时候进行授权,然后通过当前button的bindgetuserinfo属性设置回调方法,bindgetuserinfo的参数就是用户的信息。

    <button 
    	open-type="getUserInfo" 
    	bindgetuserinfo="userLogin" 
    	size="mini" 
    	type="primary"
    >登陆</button>
    

    上拉加载

    onReachBottom函数
    在 json 文件内可以进行配置,onReachBottomDistance 设置距离底部距离进行加载

    onReachBottom: function () {
        this.setData({
          page: this.data.page + 1
        },()=>{
          this.getList()
        })
      },
    

    下拉刷新

    onPullDownRefresh函数
    默认是不开启下拉刷新功能,需要在json文件设置enablePullDownRefresh:true 开启下拉刷新功能。
    需要注意的是,下拉刷新动画只有在调用wx.stopPullDownRefresh时候才会停止。

    onPullDownRefresh: function () {
        this.setData({
          page: 0
        },()=>{
          this.getList()
        })
      },
    

    使用数据库

    云开发的时候有云数据库,可以进行数据存储,切微信云数据库语法和mongodb很像

    初始化连接数据库

    const db = wx.cloud.database()
    

    基本的增删改查

    增 add

    默认会为数据添加_id,_openid,create_time字段
    data为新增的数据字段
    success为数据插入成功后的回调,参数是一个对象包含插入数据的_id

    db.collection('todos').add({
      // data 字段表示需新增的 JSON 数据
      data: {
        // _id: 'todo-identifiant-aleatoire', // 可选自定义 _id,在此处场景下用数据库自动分配的就可以了
        description: "learn cloud database",
        due: new Date("2018-09-01"),
        tags: [
          "cloud",
          "database"
        ],
        // 为待办事项添加一个地理位置(113°E,23°N)
        location: new db.Geo.Point(113, 23),
        done: false
      },
      success: function(res) {
        // res 是一个对象,其中有 _id 字段标记刚创建的记录的 id
        console.log(res)
      }
    })
    

    删 remove

    根据remove()前面的查询条件进行删除

    const cloud = require('wx-server-sdk')
    const db = cloud.database()
    const _ = db.command
    
    exports.main = async (event, context) => {
      try {
        return await db.collection('todos').where({
          done: true
        }).remove()
      } catch(e) {
        console.error(e)
      }
    }
    

    改 update

    db.collection('todos').doc('todo-identifiant-aleatoire').update({
      // data 传入需要局部更新的数据
      data: {
        // 表示将 done 字段置为 true
        done: true
      },
      success: function(res) {
        console.log(res.data)
      }
    })
    
    // 数据自增
    const _ = db.command
    db.collection('todos').doc('todo-identifiant-aleatoire').update({
      data: {
        // 表示指示数据库将字段自增 10
        progress: _.inc(10)
      },
      success: function(res) {
        console.log(res.data)
      }
    })
    

    update方法为更新数据,其中还有对数据进行额外操作的属性,比如在原始值进行自增、移除等需要使用到原数据的操作,提供了下面属性进行配合使用。

    在这里插入图片描述

    where表示查询条件,符合条件的数据项会组成一个数组,在success中被当做参数res返回。

    db.collection('todos').where({
      // gt 方法用于指定一个 "大于" 条件,此处 _.gt(30) 是一个 "大于 30" 的条件
      progress: _.gt(30)
    })
    .get({
      success: function(res) {
        console.log(res.data)
      }
    })
    
    // 获取单条记录,使用doc
    db.collection('todos').doc('todo-identifiant-aleatoire').get({
      success: function(res) {
        // res.data 包含该记录的数据
        console.log(res.data)
      }
    })
    

    在这里插入图片描述
    在查询条件中常常有对某一项条件做多种限制,比如返回某项数据条件大于20小于40,此时需要用到查询指令。
    使用and逻辑查询可以设置多个条件

    const _ = db.command
    db.collection('todos').where({
      // and 方法用于指定一个 "与" 条件,此处表示需同时满足 _.gt(30) 和 _.lt(70) 两个条件
      progress: _.gt(30).and(_.lt(70))
    })
    .get({
      success: function(res) {
        console.log(res.data)
      }
    })
    

    使用云函数

    若使用云能力时候需要在app.js中初始化云能力,云函数的运行环境是 Node.js

    App({
      onLaunch: function () {
        
        if (!wx.cloud) {
          console.error('请使用 2.2.3 或以上的基础库以使用云能力')
        } else {
          wx.cloud.init({
            // env 参数说明:
            //   env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源
            //   此处请填入环境 ID, 环境 ID 可打开云控制台查看
            //   如不填则使用默认环境(第一个创建的环境)
            // env: 'my-env-id',
            env: 'dev-jlpma',
            traceUser: true,
          })
        }
    
        this.globalData = {}
      }
    })
    

    云函数最经典的用法就是获取用户唯一标识,openid
    使用wx.getWXContext() 获取用户信息
    每个云函数都必须引入wx-server-sdk,类似一个工具包
    每个云函数都是一个js程序,都有一个出口,就是exports.main

    // index.js
    const cloud = require('wx-server-sdk')
    exports.main = (event, context) => {
      // 这里获取到的 openId、 appId 和 unionId 是可信的,注意 unionId 仅在满足 unionId 获取条件时返回
      let { OPENID, APPID, UNIONID } = cloud.getWXContext()
    
      return {
        OPENID,
        APPID,
        UNIONID,
      }
    }
    

    在项目中使用云函数:

    登陆

    const cloud = require('wx-server-sdk')
    
    // 初始化 cloud
    cloud.init({
      // API 调用都保持和云函数当前所在环境一致
      env: cloud.DYNAMIC_CURRENT_ENV
    })
    
    exports.main = (event, context) => {
      const wxContext = cloud.getWXContext()
    
      return {
        openid: wxContext.OPENID,
      }
    }
    

    获取豆瓣图书信息
    借助cheerio插件来获取网页dom内容
    doubanbook用来对douban书本信息的加密文本进行解密

    // 云函数入口文件
    const cloud = require('wx-server-sdk')
    const axios = require('axios')
    const cheerio = require('cheerio')
    const doubanbook = require('doubanbook')
    
    cloud.init()
    
    async function searchDouban(isbn) {
      const url = 'https://search.douban.com/book/subject_search?search_text=' + isbn
    
      let searchInfo = await axios.get(url)
      let reg = /window\.__DATA__ = "(.*)"/
      if (reg.test(searchInfo.data)) {
        let searchData = doubanbook(RegExp.$1)[0]
        return searchData
      }
    }
    
    async function getDouban(isbn) {
      const detailInfo = await searchDouban(isbn)
      const detailPage = await axios.get(detailInfo.url)
      const $ = cheerio.load(detailPage.data)
      let tags = []
      $('#db-tags-section a.tag').each((i, v) => {
        tags.push({
          title: $(v).text()
        })
      })
      const ret = {
        code: 1,
        tags,
        create_time: new Date().getTime(),
        image: detailInfo.cover_url,
        rate: detailInfo.rating.value,
        url: detailInfo.url,
        title: detailInfo.title,
        summary: $('#link-report .intro').text(),
      }
      // console.log(ret)
      return ret
    }
    
    getDouban(9787532781096)
    // 云函数入口函数
    exports.main = async (event, context) => {
      const { isbn } = event
      console.log(isbn)
      if (isbn) {
        return getDouban(isbn)
      } else {
        return {
          code: -1,
          msg: '请扫描正确的图书'
        }
      }
    }
    
    展开全文
  • 基础知识

    2019-09-25 09:32:52
    电脑:辅助人脑的工具 所谓的电脑就是一种计算机,而计算机其实是:『接受使用者输入指令与资料,经由中央处理器的数学与逻辑单元运算处理后,以产生或储存成有用的资讯』。因此,只要有输入设备(不管是键盘还是...

    电脑:辅助人脑的工具

    所谓的电脑就是一种计算机,而计算机其实是:『接受使用者输入指令与资料,经由中央处理器的数学与逻辑单元运算处理后,以产生或储存成有用的资讯』。因此,只要有输入设备(不管是键盘还是触控式萤幕)及输出设备(例如电脑萤幕或直接由印表机列印出来),让你可以输入资料使该机器产生资讯的,那就是一部计算机了。包括一般商店用的简易型加减乘除计算机、打电话用的手机、开车用的卫星定位系统(GPS)、提款用的提款机(ATM)、你上课会使用的桌上型个人电脑、外出可能会带的笔记型电脑(包括notebook与netbook),还有近几年(2015前后)非常热门的平板电脑与智慧型手机,甚至是未来可能会大流行的单版电脑(Xapple pi, banana pi, Raspberry pi, )与智慧型手表,甚至于更多的智慧型穿戴式电脑等等,这些都是计算机喔!

    电脑硬件的组成

    关于电脑的硬件组成部分,其实你可以观察你的桌上型电脑来分析一下,依外观来说这家伙主要可分为三部分,分别是:

    • 输入单元:包括键盘、滑鼠、读卡机、扫描器、手写板、触控萤幕等等一堆;
    • 主机部分:这个就是系统单元,被主机机壳保护住了,里面含有一堆板子、CPU 与主记忆体等;
    • 输出单元:例如荧幕、印表机等等

    我们主要透过输入设备如滑鼠与键盘来将一些资料输入到主机里面,然后再由主机的功能处理成为图表或文章等资讯后, 将结果传输到输出设备,如荧幕或印表机上面。那主机里面含有什么元件呢?如果你曾经拆开过电脑主机机壳(包括拆开你的智慧型手机也一样喔!), 会发现其实主机里面最重要的就是一片主机板,上面安插了中央处理器(CPU) 以及主记忆体、硬碟(或记忆卡) 还有一些介面卡装置而已。当然大部分智慧型手机是将这些元件直接焊接在主机板上面而不是插卡啦!

    整部主机的重点在于中央处理器(Central Processing Unit, CPU),CPU为一个具有特定功能的晶片,里头含有微指令集,如果你想要让主机进行什么特异的功能,就得要参考这颗CPU是否有相关内建的微指令集才可以。由于CPU的工作主要在于管理与运算,因此在CPU内又可分为两个主要的单元,分别是: 算数逻辑单元与控制单元其中算数逻辑单元主要负责程式运算与逻辑判断,控制单元则主要在协调各周边元件与各单元间的工作。

    电源

    既然是人体的心脏,保障电源供应,就需要质量好的电源,生产环境中单个核心服务器最好是双电源AB线路。(一个接220V电路,一个可能接蓄电池UPS(不间断电源))

    CPU

    常见品牌:Intel、AMD,想当于人体的大脑

    内存

    是CPU和磁盘之间的缓冲设备,也叫临时存储器(存放数据),断电时数据丢失

    一般程序运行时会被调度到内存中执行,服务器关闭或程序关闭后,数据从内存中释放掉。

    电脑用途的分类

    知道了电脑的基本组成与周边装置,也知道其实电脑的CPU种类非常的多,再来我们想要了解的是,电脑如何分类?电脑的分类非常多种,如果以电脑的复杂度与运算能力进行分类的话,主要可以分为这几类:

    • 超级电脑(Supercomputer)
      超级电脑是运作速度最快的电脑,但是他的维护、操作费用也最高!主要是用于需要有高速计算的计画中。例如:国防军事、气象预测、太空科技,用在模拟的领域较多。详情也可以参考:国家高速网路与计算中心http://www.nchc.org.tw的介绍!至于全世界最快速的前500大超级电脑,则请参考:http://www.top500.org

    • 大型电脑(Mainframe Computer)
      大型电脑通常也具有数个高速的CPU,功能上虽不及超级电脑,但也可用来处理大量资料与复杂的运算。例如大型企业的主机、全国性的证券交易所等每天需要处理数百万笔资料的企业机构,或者是大型企业的资料库伺服器等等。

    • 迷你电脑(Minicomputer)
      迷你电脑仍保有大型电脑同时支援多使用者的特性,但是主机可以放在一般作业场所,不必像前两个大型电脑需要特殊的空调场所。通常用来作为科学研究、工程分析与工厂的流程管理等。

    • 工作站(Workstation)
      工作站的价格又比迷你电脑便宜许多,是针对特殊用途而设计的电脑。在个人电脑的效能还没有提升到目前的状况之前,工作站电脑的性能/价格比是所有电脑当中较佳的,因此在学术研究与工程分析方面相当常见。

    • 微电脑(Microcomputer)
      个人电脑就属于这部份的电脑分类,也是我们本章主要探讨的目标!体积最小,价格最低,但功能还是五脏俱全的!大致又可分为桌上型、笔记型等等。

    若光以效能来说,目前的个人电脑效能已经够快了,甚至已经比工作站等级以上的电脑运算速度还要快!但是工作站电脑强调的是稳定不宕机,并且运算过程要完全正确,因此工作站以上等级的电脑在设计时的考量与个人电脑并不相同啦!这也是为啥工作站等级以上的电脑售价较贵的原因。

    互联网常见服务器介绍

    服务器: 服务器指的是网络中能对其他机器提供某些服务的计算机系统,相对普通PC,服务器指的是高性能计算机,稳定性、安全性要求更高
    服务器的高性能体现在高速的运转能力,长时间的可靠运行,强大的数据吞吐能力

    • DELL(大多数公司在用)
    • HP
    • IBM(百度,银行,政府)(贵)
    • 浪潮
    • 联想

    服务器分类

    包括大型机、小型机和UNIX服务器,价格昂贵,体系封闭,但是稳定性极强,性能强、主要用在金融、电信等大型企业核心系统中。

    机房托管服务器是按照服务器的厚度来收费的,每一个机柜规格有限,标准机柜可以放16台1u服务器,如果你的服务器太厚太大,机柜能放的服务器就少一些【1U 单位是==unit==厚度是4.45cm】

    也就是通常所说的PC服务器,价格便宜、兼容性好,稳定性差,不够安全,常用在中小型企业。

     

    总结

    • 计算机必须有的组成部分(cpu、硬盘、内存、电源)
    • 服务器 > 个人台式机   -稳定性更高

    一张图告诉你Linux的发展

    操作系统

    我们都知道windows 7/8/xp 其实就是操作系统,操作系统全称是Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行及用户操作必备的基础环境支撑。

    整个电脑主机是由一堆硬件所组成,为了有效的控制这些硬件资源,于是就有操作系统的产生了。操作系统除了有效的控制这些硬件资源的运作,并且提供电脑运行所需的功能(例如网络功能)。

    • 操作系统跑于硬件之上,应用程序运行在操作系统之上。
    • Shell(也叫做终端)充当的是人与内核(硬件)之间的翻译官,用户把一些命令“传递”给终端,它就会调用相应的程序服务去完成工作。红帽Linux默认使用的终端是Bash解释器。

    操作系统的分类

    Windows系列操作系统,Unix类操作系统,Linux类操作系统,Mac操作系统

    unix

    1965年以前,电脑不像现在这么普及,不是一般人能碰的起的,除非是军事或者研究机构,才有计算机的存在。

    当时一台机器顶多提供30台终端(主机+键盘+显示器),用于连接

    Linux

    • Linux以高效和灵活主城,Linux同事具有多任务、多用户的能力,支持多线程,多CPU。
    • Linux包括了文本编辑器,高级语言编译器,以及图形用户界面登应用软件,当然绝大多数服务器都是使用命令行,文本模式操作Linux的。
    • Linux遵循GNU通用公共许可协议,属于自由软件,用户不需要支付费用就可以获得系统和系统源代码,无偿使用且自由传播。
    • Linux具有很高的系统稳定性和可靠性。
    • 具有很高的系统安全性
    • 众多业界厂商支持,如IBM、Oracle、Intel、HP、Google等
    • 有完善的数据库平台,包括Oracle、DB/2、Sybase、MySQL、PostgreSQL等。
    • 有完善的图形化用户界面,包括GNOME、KDE等。
    • 有完善的开发平台,包括C/C++、Java、Python等。

    Linux内核

    内核(kernel)是系统的心脏,是运行程序和管理磁盘与打印机等硬件设备的核心程序,它提供了一个在裸设备和应用程序之间的抽象层。

    linux内核源码:https://www.kernel.org/

    全世界的大神对Linux源码的修改都会汇总到这个网站,由Linus领导的开源社区来决定是否修改到Linux主线源码中。

    Linux起源与发展

      1991年,一个名不见经传的芬兰研究生购买了自己的第一台PC,并且决定开始开发自己的操作系统。这个想法非常偶然,最初只是为了满足自己读写新闻和邮件的需求。这个芬兰人选择了 Minix作为自己研究的对象。 Minix是由荷兰教授 Andrew S Tanenbaum开 发的一种模型操作系统,这个开放源代码的操作系统最初只是用于研究目的。 这个研究生名叫 Linus torvalds,他很快编写了自己的磁盘驱动程序和文件系统,并且慷慨地把源代码上传到互联网上。 Linus把这个操作系统命名为 Linux,意指“ Linus的 Minix” ( Linus, Minix)。 

    开源潮流

      简单来说,开源软件的特点就是把软件程序与源代码文件一起打包提供给用户,让用户在不受限制地使用某个软件功能的基础上还可以按需进行修改,或编制成衍生产品再发布出去。用户具有使用自由、修改自由、重新发布自由以及创建衍生品的自由。这也正好符合了黑客和极客对自由的追求,因此国内外开源社区的根基都很庞大,人气也相当高。

    坦白来讲,每位投身于 Linux 行业的技术人或者程序员只要听到开源项目就会由衷地感到自豪,这是一种从骨子里带有的独特情怀。开源的企业不单纯是为了利益,而是互相扶持, 努力服务好更多的用户。

    开源软件最重要的特性有下面这些:

    • 低风险:使用闭源软件无疑把命运交付给他人,一旦封闭的源代码没有人来维护,你将进退两难;而且相较于商业软件公司,开源社区很少存在倒闭的问题。
    • 高品质:相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编 写、维护、测试的用户量众多,一般的 bug 还没有等爆发就已经被修补。
    • 低成本:开源工作者都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献一份 力量,因此使用开源社区推动的软件项目可以节省大量的人力、物力和财力。
    • 更透明:没有哪个笨蛋会把木马、后门等放到开放的源代码中,这样无疑是把自己的罪行暴露在阳光之下。

    开源许可协议

    如果开源软件一味的追求“自由”缺牺牲了程序员的利益,这样也会影响程序员的激情,因此世界上就有了“开源许可协议”来保证开源工作者的权益。

    GNU GPL (GNU General Public License GNU):
    只要软件中包含了遵循 GPL 协议的产品或代码,该软件就必须也遵循 GPL 许可协议且开源、免费, 因此这个协议并不适合商用软件。
    遵循了此协议的就包括Linux和大多数开源软件

    GNU的特点是:

    • 复制自由
    • 传播自由
    • 收费传播  开源软件都是通过对用户提供有偿服务形式来盈利
    • 修改自由  开发人员允许增加和删除软件的功能,但是还必须遵循GPL许可协议

    BSD Berkeley Software Distribution 伯克利软件发布版本许可协议:

    • 用户可以使用、修改和重新发布遵循该许可的软件,并且可以将软件作为商业软件发布和销售,前提需要满足下面3个条件。
    • 如果在发布的软件中包含源代码,则源代码必须继续遵循BSD许可协议
    • 如果再发布的软件中只有二进制程序,则需要在相关文档或版权中声明该代码遵循了BSD协议
    • 不允许用原始软件的名字、作者名字或机构名称进行市场推广

    Linux的发行版本

    Linux这个词并不能(代表)操作系统,Linux实际上只是定义了一个操作系统的内核,这个内核由kernel.org维护。不同的企业和组织在基础上开发了一系列的辅助软件,打包发布自己的“发行”版本。十大Linux发行版排行榜 http://os.51cto.com/art/201612/526126.htm 

    Linux 系统内核与 Linux 发行版

    • Linux 系统内核指的是一个由 Linus Torvalds 负责维护,提供硬件抽象层、硬盘及文件 系统控制及多任务功能的系统核心程序。
    • Linux 发行版系统是我们常说的 Linux 操作系统,也即是由 Linux 内核与各种常用 软件的集合产品。
    • 全球大约有数百款的 Linux 系统版本,每个系统版本都有自己的特性和目标人群,下面 将可以从用户的角度选出最热门的几款进行介绍。

      

    RedHat Enterprise Linux RHEL :

    红帽公司是全球最大的开源技术厂商,RHEL 是全世界内使 用最广泛的 Linux 系统。RHEL 系统具有极强的性能与稳定 性,并且在全球范围内拥有完善的技术支持。

    Community Enterprise Operating System

    CentOS 通过把 RHEL 系统重新编译并发布给用户免费使用的 Linux 系统,具有广泛的使用人群。CentOS 当前已被红帽公司 “收编”。

    openSUSE

    源自德国的一款著名的 Linux 系统,在全球范围内 有着不错的声誉及市场占有率。主要使用客户是中国移动、中国电信、交通银行、浦发银行等等安全性极高的客户

    Debian

    稳定性、安全性强,提供了免费的基础支持,可以良好地支持各种硬件架构,以及提供近十万种不同的开源软件,在国外拥有很高的认可度和使用率。


    Ubuntu

    是一款派生自 Debian 的操作系统,对新款硬件具有极 强的兼容能力。Ubuntu 与 Fedora 都是极其出色的 Linux 桌面系统,而且 Ubuntu 也可用于服务器领域。 

      在过去的10年中, Red hat公司一直是 Linux乃至开源世界的领导者。2003年,公司高层决定将其产品分成两个不同的发行版本。商业版本被称为 Red Hat Enterprise Linux,这个发行版本专注于企业级应用,并向使用它的企业提供全套技术支持, Red Hat公司从中收取相关许可证费。

      RedHat Linux对硬件的支持非常友好,主流硬件厂商早早的将服务器拿去测试,很少遇见硬件兼容性问题,大量的商业软件都是基于RedHat认证的,例如Oracle。Linux内核代码的贡献,redhat厂商的大牛也是最多,要知道全世界的互联网大客户,一般都会使用商业服务器,因为出了问题有专业的技术人员技术支持。

      CentOS 系统是通过把 RHEL 系统释放出的程序源代码经 过二次编译之后生成的一种 Linux 系统,其命令操作和服务配置方法与 RHEL 完全相同,但 是去掉了很多收费的服务套件功能,而且还不提供任何形式的技术支持,出现问题后只能由运维人员自己解决。

    Linux与Windows的区别

    • 免费与收费
      • 最新正版Windows10官方售价¥888
      • Linux几乎免费(更多人愿意钻研开源软件,而收费的产品出现更多的盗版)
    • 软件与支持
      • Windows平台:数量和质量的优势,补过大部分为收费软件;由微软提供技术支持和服务
      • Linux平台:大多为开源软件,用户可以修改定制与发布,由于免费没有资金支持,部分软件质量可能欠缺
    • 安全稳定性
      • Windows平台:三天两头修复补丁,仍然会中毒(即便装了360,瑞星,金山毒霸。。。。)
      • Linux平台:安全问题很少,无需安装xx杀毒,xx卫士
    • 使用习惯
      • Windows:普通用户基本依靠图形界面操作,鼠标和键盘完成一切需求,上手简单容易
      • Linux:兼具图形界面(需要带有桌面环境的发行版Linux)和完全命令行操作,无法使用鼠标,新手入门困难,需要学习后方可使用,熟练后效率极高!
    • 应用领域
      • Linux:人们日常在Windows上访问的百度、谷歌、淘宝、qq、迅雷(xxxx大片),支撑这些软件运行的,后台是成千上万的Linux服务器,它们时时刻刻进行着忙碌的数据处理和运算
      • Windows:可以运行英雄联盟、绝地求生、仙剑三、地下城与勇士、我的世界。。。等等游戏,而Linux开发的游戏几乎很少 

    总结

    1.操作系统是什么?是人与计算机硬件沟通的介质
    2.操作系统组成---鸡蛋由几部分组成
        1)蛋黄-系统内核
        2)蛋清-命令解释器shell
        3)蛋壳-应用程序
    3.Linux是一套开放源代码程序、且可以自由传播的操作系统
    4.掌握centos/redhat能更好的适应互联网服务端开发环境
    5.使用linux的好处是自由传播,免费,不会犯法,任意切换图形/命令终端,安全稳定,不用杀毒软件,不卡

    转载于:https://www.cnblogs.com/bubu99/p/11546581.html

    展开全文
  • 1.基础知识

    2020-02-17 09:20:37
    1.什么是计算机网络 计算机网络是利用通信线路将不同地理位置、具有独立功能的计算和通信设备连接起来,实现资源共享和信息传递 主要有局域网、城域网、广域网和英特网等。 2.信息系统 信息系统是能进行信息的采集...
  • 基础知识汇总

    2020-03-10 19:39:36
    一 基本概念 事物是所有概念的统称 概念:是思维的逻辑单位 概念包含内涵和外延 内涵:是概念的性质和特征 外延:是满足上述性质及特征的所有客观个体的集合 ...二....需求分析的方法:数据流程图(DFD),面向对象...
  • C语言基础知识梳理总结

    万次阅读 多人点赞 2020-04-03 10:51:45
    C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭!
  • 腾讯面试:我倒在了网络基础知识

    万次阅读 多人点赞 2020-06-24 21:15:35
    文章目录腾讯面试:我倒在了网络基础知识TCP与UDP的区别TCP的三次握手和四次挥手[TCP三次握手 四次挥手]...腾讯面试:我倒在了网络基础知识 腾讯面试十分注重网络基础知识,问的几乎都是一些细节知识,...
  • 二叉树基础知识总结

    万次阅读 多人点赞 2018-04-09 11:09:31
    本来精心准备了1周的面试,最后因为自己基础知识记忆不牢固导致了悲剧。不管怎样,还是要继续查漏补缺,准备将数据结构再细细看一遍,先来补上二叉树的这个漏洞吧。 一、树的定义树是一种数据结构,它是由n(n&...
  • 计算机基础知识总结

    万次阅读 多人点赞 2017-11-29 16:30:46
    01.01_计算机基础知识(计算机概述) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑。是一种能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件和软件...
  • 金融系列-银行基础知识

    万次阅读 多人点赞 2019-03-24 21:19:38
    主要从以下几个方面来介绍:银行基础知识、银行柜面系统以及通用业务流程、简单的会计基础知识、银行主要核心系统,方便银行 APP 的同学快速上手,抓到重点。 由于金融行业术语都比较抽象,这里通过先概念介绍,再...
  • 贵金属投资入门基础知识介绍(涨知识)  在投资市场上,贵金属投资是其最重要的组成部分之一,对于初入市的投资新手而言,首先要学习相关的基础知识,对贵金属投资有初步的认识。对此,皇玛金融hmcfds小编将对贵...
  • java基础知识-面试(一)

    万次阅读 多人点赞 2018-07-30 22:07:03
    java基础知识-面试 面向对象的三大特性 1)封装 就是把同一类事物的属性和方法归到同一个类中,方便使用 防止该类的代码和数据被外部类定义的代码随意访问 要访问该类的数据和代码必须通过严格的方法控制 ...
  • 【大学课程】高数基础知识

    千次阅读 2019-06-01 16:26:37
    常用基础知识 函数概念 函数的四种特性 常用基础知识 极限与连续 数列极限的概念,性质,定理 函数极限的概念,性质,定理 函数的连续与间断 一元函数微分学的概念与计算 导数与微分的概念 导数与微分的计算 ...
  • VBA基础知识整理

    万次阅读 多人点赞 2017-12-16 17:05:54
    最近由于项目的需要,需要在Excel自定义一些函数,来完成特殊的处理,为了完成工作,就囫囵吞枣的写了一些代码,现在闲暇下来,就好好的学习一下,VBA的基础知识。1.变量 1.Dim <<variable_name>> As ...
  • 基础知识视频教程内容包括:数据通信基础、局域网、城域网、广域通信网、网络互连与互联网等内容,为顺利通过软考和自身能力提高打下坚实基础,让小白直变网络工程师
  • 区块链基础知识25讲-各讲地址整理

    千次阅读 2019-06-08 21:37:29
    为了自己方便复习以及他人参考浏览,自己打算整理一下自己在学习《区块链基础知识25讲》过程中,所做的笔记。笔记内容只有我认为是重点的部分才会列出,因此知识点框架可能略微不完整,请大家和未来复习区块链的自己...
  • 超详细的Java面试题总结(一)之Java基础知识

    万次阅读 多人点赞 2018-12-07 18:36:17
    最近在备战面试的过程中,整理一下面试题。...超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java面试题总结(四 )之JavaWeb基础知...
  • 软件测试基础知识整理

    万次阅读 2018-06-05 13:54:50
    一、软件测试工程师须知良好的沟通和表达能力具有怀疑与破坏的精神扎实的软件测试基础知识缜密的业务逻辑分析能力处在用户的角度进行换位思考足够的耐心、细心、信心、责任心积极乐观向上的心态和团队协作能力要有...
  • ps的基础知识与教程

    千次阅读 2018-07-24 16:06:36
    先给大家奉上PS的安装包(PS6版本)和基础知识教程,基础适合新手观看学习! 安装包: 链接:https://pan.baidu.com/s/1_NDnifbRKM6D_p2ow5RrSg 密码:7o62 基础知识教程: 链接:...
1 2 3 4 5 ... 20
收藏数 1,102,841
精华内容 441,136
关键字:

基础知识