全栈之路-前端篇 | 第二讲.基础前置知识【应用服务端与编程语言】学习笔记

[ 点击 👉 关注「 全栈工程师修炼指南」公众号 ]

设为「⭐️ 星标」带你从基础入门全栈实践 再到 放弃学习
涉及 网络安全运维、应用开发、物联网IOT、学习路径 、个人感悟 等知识分享。

希望各位看友多多支持【关注、点赞、评论、收藏、投币】,助力每一个梦想。

WeiyiGeek Blog's - 花开堪折直须折,莫待无花空折枝 】
作者主页: 【 https://weiyigeek.top
博客地址: 【 https://blog.weiyigeek.top 】
作者答疑学习交流群:欢迎各位志同道合的朋友一起学习交流【点击 👉 加入交流群】, 或者关注公众号回复【学习交流群】。



原文链接: [全栈之路-前端篇 | 第二讲.基础前置知识【应用服务端与编程语言】学习笔记] https://mp.weixin.qq.com/s/8uU0EFGkrWc0W6CnV68wXw

0X00 前言简述

有可能有的小伙伴会问,你作为一名安全运维开发(SecOpsDev)工程师,为啥会整理学习前端相关技术笔记呢?

一是为了补齐自己的知识短板(形成知识体系结构),毕竟来说一般会运维的不会开发,会开发的不一了解安全,而成为一名网络安全工作者或者说白帽子,你就势必什么都是知道一点,但是等待你学到一定层度后,你会发现遇到的瓶颈越来越多,此时你可能会非常迷茫也很苦恼,要么有的就放弃这条路(转型),要不就重头再来恶补基础知识,比如像笔者我。

二是为了将自己所学的东西、学习路径分享出来,帮助某些计算机爱好者(同道中人)入门学习,其次是为了加固自身所学的知识,可谓是一举两得。

三是为了项目的需求不得不对前端知识进行饿补,毕竟还是要在完成工作的前提为指导,因为领导关心的就是能不能做以及能不能做成,谁不爱有产出的员工(tool man,嘻嘻)。

好的,废话不多说,从2023年2月16日开始,一起跟着【WeiyiGeek】来看一下我的前端学习之路吧,希望对你们学习有帮助!

送给各位读者的话,成大事不在于力量的大小,而在于能坚持多久


0X01 前端基础知识

5.应用服务端

服务端 WebServer

当前常见的 WebServer 有 Nginx、Apache HTTP Server(httpd)、Apache Tomcat等服务软件,但是学习开发之前你可以在你本地机器(Win/Linux)上进行安装,或者直接在腾讯云、阿里云、百度云中购买轻量级云主机进行如下Web Server安装,推荐安装Linux的操作系统(Ubuntu 或者 Debian 或者 CentOS)。

云服务器价格了解与购买


Nginx

Nginx (读音”engine x”) 是一个高性能的HTTP负载均衡和反向代理服务器,在2019.3.12被F5硬件负载均衡厂家以6.7亿美金收购了,主要是用于发布网站代码,提供网页信息服务的,用户通过浏览器可以实现页面的访问,也可以是一个IMAP/POP3/SMTP代理服务器;在高连接并发的情况下Nginx是Apache服务器不错的替代品,其特点是占有内存少,并发能力强(在同类型的网页服务器中表现较好),Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好很多;


主要功能

  • 负载均衡服务器:用户每次访问都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况(nginx会给你分配服务器压力小的去访问);
  • HTTP代理服务器对外进行服务:通过第三方服务器访问内部服务器集群的内容,但是我们并不知道是哪一台服务器提供的内容;
  • 动态网页与静态网页资源相互分离以提高网站的整体性能;

工具特点

  • 安装启用简单以及跨平台,配置文件非常简洁(还能够支持perl语法), 并且Bugs非常少的服务器性能优秀稳定,能够在升级情况下不间断服务
  • 提供反向代理(代理转发功能)、负载均衡、WEB服务器(处理静态文件)和支持7层负载均衡和故障隔离等功能
  • Nginx 采用C进行编写内存占有少,使用更少的资源,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名(具有高性能、轻量级、内存消耗少,强大的负载均衡能力等优势。)
  • 由于它的内存占用少(一个worker进程只占用10-12M内存),启动极快,高并发能力强(5w/s)-相当于Apache WEB整体性能的5-10倍,在互联网项目中广泛应用。

总结:就是Nginx支持 IO多路复用(多线程), 轻量级 , 功能模块少,代码模块化,并发处理能力强。

扩展参考文章: (Nginx学习之路汇总)[https://blog.weiyigeek.top/2018/1-1-1.html#Nginx学习之路汇总]


Apache HTTP Server

Apache HTTP服务器是一个功能强大、高效且可扩展的web服务器。

Apache起初由伊利诺伊大学香槟分校的国家超级电脑应用中心(NCSA)开发,此后Apache Httpd被开放源代码团体的成员不断的发展和加强,从上个世纪90年代开始它的市场占有率就超过了50%。

如今虽然它的使用率有些下降但是仍是世界使用排名第一的 Web 服务器软件,它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web服务器端软件之一。

扩展知识:四种服务器概念与区别。

从概念上讲:HTTP服务器=WEB服务器、应用程序服务器、应用容器、有何区别?

  • Web服务器是提供WWW服务的程序;
  • Web容器是提供给开发者的框架;
  • Web应用程序服务器内容丰富得多,既可用各厂商通常遵循一定的工业标准并自定义扩展功能而成,也可以利用开源组件轻量级拼装打造;
  • 反向代理服务器在企业级应用中表现突出,具有解决集中式安全,负载均衡等等优点。
  • 中间件是为应用程序提供容器和服务;

如今这四个概念的边界越来模糊,看看这个表就知道了:

软件名词 是否Web服务器 是否Web容器 是否Web应用服务器 是否能反向代理 公司
IIS 微软公司
Nginx
Apache Sun公司
Http.sys
Tomcat Apache开源软件组织
Jetty
WebSphere IBM公司
WebLogic BEA公司
JBossAS 红帽公司
Kerstrel 是?

扩展文章参考:


CDN

Q:什么是CDN?

A: CDN的全称是 Content Delivery Network 即内容分发网络(互联网世界的物流服务)。是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络, 它可以帮助分担源站压力,避免网络拥塞,确保在不同区域、不同场景下加速网站内容的分发,提高资源访问速度。
简单的说:其通过广泛的网络节点分布,提供快速、稳定、安全、可编程的全球内容分发加速服务,支持将网站(动态、静态)、音视频、下载等内容分发至接近用户的节点。 系统将源站内容分发至最接近用户的边缘节点之上, 使用户可就近取得所需内容,提高用户访问的响应速度和成功率。

Q: 为啥要使用CDN?

答: 例如阿里云为直播行业提供了边缘节点服务(ENS-最主要的技术就是CDN),基于阿里云ENS可以轻松地将业务模块放到边缘运行,在主播的推流时,实现就近节点进行转码和分发,同时支持了高并发实时弹幕的边缘分发。在获得网络低时延的同时,减少了对中心的压力,节省了30%以上的中心带宽成本,并且实现了边缘节点网络连接小于5毫秒延时,提升了主播上行质量,以及用户成功连接占比等数指标,有效提升了用户观看体验;


CDN 原理
描述: 我们可以将CDN比作天猫超市与菜鸟在全国各地建了本地仓库,当用户购买直营的东西的时候(不在是跨区配送而是同城配送),所以下单购买后,由最近的仓发货就近配送,用户购买的体验明显好太多了;

其实我们在浏览网络的时候其实就和以上这个过程十分相似,我们访问一个网站页面的时候,会向服务器请求很多网络资源,包括各种图片、声音、影片、文字(通常为前端信息)等信息。所以就像天猫超市把货物提前存储在菜鸟建设在全国各地的本地仓库来减少物流时间一样,网站也可以预先把内容分发至全国各地的加速节点。这样用户就可以就近获取所需内容,避免网络拥堵、地域、运营商等因素带来的访问延迟问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。

WeiyiGeek.CDN原理图


CDN优缺点
答:您总是希望网页可以尽可能地快,您希望页面的容量尽可能地小,同时您希望浏览器尽可能多地进行缓存这就需要使用到CDN的内容分发网络。就像前面提到的"全国仓配网络"一样,解决了因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。
优点:

  • 1.使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度和成功率
  • 2.电信运营商: CDN技术消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量;
  • 3.冗余机制: 广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵以及降低各种DDoS攻击对网站的影响,同时保证较好的服务质量
  • 4.分担源站压力,避免网络拥塞

6.服务端语言

作为一名前端开发者,应该对后端语言有个简单了解,并且现在前端工程师使用node也能写后端程序,所以说针对前端开发者来说可是好事(优势),因为懂后端的不一定懂(会)前端,但由于项目的需求以及贴近团队的开发项目,你只能配合后端同事完成某一项业务功能,此时你便需要针对后端语言有个简单了解。

如果说你想成为全栈那么,如下后端语言是你必学或者必须了解的。

PHP

最好学的后端语言没有之一,所以也被戏称【最好的编程语言】。

Q:什么是PHP?

PHP (Hypertext Preprocessor 缩写) 超级文本预处理器,PHP 是一种创建动态交互性站点的服务器端脚本语言。


PHP发展历史简述
PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf 为了要维护个人网页而制作的一个简单的用Perl语言编写的程序,后来又用C语言重新编写,包括可以访问数据库,他将这些程序和一些表单直译器整合起来,称为 PHP/FI,PHP/FI 可以和数据库连接,产生简单的动态网页程序。


PHP编程语言特点

  • 1.是开放源代码的,服务器端的脚本语言.
  • 2.独立于操作系统,可以运行在几乎所有系统(Win/Linux)中(兼容所有操作系统和web服务器)
  • 3.支持大部分的服务器
  • 4.支持大量的数据库,例如 MySql、SQL Server、Oracle等
  • 5.可以创建图像
  • 6.其他功能在后面的高级技术详细介绍。

PHP编程语言能干什么?

1、生成动态页面内容;
2、能够创建、打开、读取、写入、删除以及关闭服务器上的内容文件;
3、能够接收表单数据;
4、能够发送并取回 cookies;
5、能够对(各类)数据库中的数据进行增删改查等操作;
6、能够限制用户访问网站中的某些页面;
7、语法混合了 C、Java、Perl 以及 PHP 自创新的语法;
8、处理 XML 文件;
9、会话控制Session Cookies;
10、开发客户端图形界面(GUI)程序


在实践使用中,可根据自己的需要在HTML文件中像这样开启或关闭PHP模式,通常也是将PHP语言嵌入HTML中进行一起使用,例如CSS、JavaScript、PHP、ASP以及JSP等。

简单示例:

<html>
  <head>
    <title> <?php echo "PHP 语言标记的使用" ?> </title>
  </head>
  <body <?php echo 'bgcolor="#cccccc"' ?> >
    <?php  if($expression){?>
      <p align=" <?php echo 'center' ?> ">This is true</p>
    <?php  }else{ ?>
      <p>This is false</p>
    <?php  } ?>
  </body>
</html>

Java

Java作为当前后端开发最火(hot)的语言,被广泛应用在各大企业项目开发中,所以在前几年就业还是比较广阔的,但是随着像Go、Node.js编程语言的不断发展,越来越多的岗位招聘偏向于Go(毕竟有Google背书不担心市场),后面一章节会有简单介绍,此处还是回归正题。

Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言(Java面向对象程序设计语言和Java平台的总称),其作者是詹姆斯.高斯林(James Gosling),他也被誉为是JAVA之父, 他是与SUN公司的Patrick/Naughton/Mike Sheridan等人合作开发的一套语言,最开始叫"Oak"后改名为JAVA;

Java语言特性:

  • 开源、免费、纯面向对象。

    • 开源:开发源代码,SUN公司编写的java类库的源代码普通程序员能看到。
    • 免费
    • 面向对象:提供类/接口和继承等面向对象的特性(只支持类之间的单继承,但支持接口之间的多继承(extends),并支持类与接口之间的实现机制(关键字为implements),全面支持动态绑定;
  • 简单性:

    • 与C语言和C++语言很接近很容易学习和使用
    • 丢弃了C++中(操作符重载、多继承、自动的强制类型转换)
    • 特别地Java语言不使用指针,而是引用)并提供了自动的废料收集,使得程序员不必为内存管理而担忧。
  • 健壮性:

    • Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证(丢弃指针pointer),Java的安全检查机制使得Java更具健壮性。
  • 动态的

    • 设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级,另外Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
  • 分布式的

    • 支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等,JAVARMI(远程方法激活)机制也是开发分布式应用的重要手段
  • 安全的

    • 提供了一个安全机制以防恶意代码的攻击,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。
  • 高性能的

    • 与解释型的高级脚本语言相比,Java的确是高性能的。事实上Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。
  • 体系结构中立

    • Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
  • java支持多线程

    • Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)
    • 线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建;
    • 通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程。
    • 其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。
    • 值得注意的是Thread类已经实现了Runnable接口,因此任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。
  • java自动垃圾回收机制即GC机制:【java运行过程当中有一个“垃圾回收器”一直在守护者。】

  • 跨平台/可移植

    • 跨平台:依靠JVM机制【java程序不和操作系统交互,java程序运行在JVM中,JVM和操作系统交互】
    • Java程序并没有和底层的操作系统直接交互,java程序实际上运行在jvm当中,JVM屏蔽了操作系统之间的差异。不同的操作系统中必须安装不同版本的JVM。
    • 可移植:来源于体系结构中立性,Java严格规定了各个基本数据类型的长度;Java程序在Java平台上被编译为字节码格式,使得可以在java平台上的任何系统种运行;
    • Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。
    • 但是为了达到可移植,必须提前在操作系统中安装JRE,JRE有了之后才会有JVM。

WeiyiGeek.JAVA跨平台

总结:因为有了JVM所以同一个JAVA程序在三个不同的操作系统中都可以执行;这才使JAVA程序具有跨平台性与良好的移植性;


我的第一个JAVA程序
创建文件 HelloWorld.java (文件名与类名尽量是一致), 代码如下:

// 注:String args[] 与 String[] args 都可以执行,但推荐使用 String[] args,这样可以避免歧义和误读。
// 修饰符  类   类名   (注意要一致)
public class HelloWorld {
    //主方法相当于C中的main函数,入口;
    public static void main(String[] args) {
       System.out.println("Hello World");
    }
}

//采用jdk目录中javac/java进行编译然后执行(下面为了防止乱码在编译成为字节码文件的时候采用utf8编码)   
// 1.该命令用于将 java 源文件编译为 class 字节码文件,会出现一个 HelloWorld.class 的文件
> javac -encoding UTF-8 HelloWorld.java  
// 2.java 后面跟着的是java文件中的类名(注意:java命令后面不要加.class)
> java HelloWorld   
Hello World
Hello World

WeiyiGeek.HelloWorld

Q:什么是类名?
答:假设硬盘上有一个文件叫做Hello.class,那么类名就叫做 Hello,此时在命令行终端中我们可以利用java进行直接执行;


Golang

为什么你应该学习Go语言?

世界上已经有太多太多的编程语言了,为什么又出来一个Go语言?
官方介绍: Go是一种开源编程语言,它使构建简单、可靠和高效的软件变得容易。
因为其编程语言的良好特性和Google公司强势推广以及以Go语言相关开源项目火爆, 比如 etcd、kubernetes、Prometheus 等项目, 其次是硬件性能提高则我们需要高性能的软件.

参考 Golang 编程语言排行榜 : https://www.tiobe.com/tiobe-index

WeiyiGeek.2010-2021年Go编程趋势

What,什么是Go语言?

描述:Go(又称Golang[4]-Google-go-language)是Google开发的一种静态强类型编译型并发型,并具有垃圾回收功能、优良的并行设计的编程语言, 其被誉为21世纪的C语言, 因为其Go的语法接近C语言,但对于变量的声明有所不同。

Go的并行计算模型是以东尼·霍尔的通信顺序进程(CSP)为基础,采取类似模型的其他语言包括OccamLimbo,Go也具有这个模型的特征,比如通道传输,通过goroutine和通道等并行构造可以建造线程池和管道等。

  • (1) 与 C++ 相比 Go 并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了切片(Slice) 型、并发、管道、垃圾回收功能、接口等特性的语言级支持以及支持垃圾回收功能。

  • (2) 不同于 Java,Go原生提供了关联数组(也称为哈希表(Hashes)字典(Dictionaries))。

Go 语言有何特点:

  • 0.Go语言语法简单易学、代码风格统一(自动格式化)、支持垃圾回收功能、执行性能好、是企业级编程语言。

Go 语言简单易学,学习曲线平缓,不需要像 C/C++ 语言动辄需要两到三年的学习期。
Go 语言的风格类似于C语言。其语法在C语言的基础上进行了大幅的简化,去掉了不需要的表达式括号,循环也只有 for 一种表示方法,就可以实现数值、键值等各种遍历。
Go 语言提供了一套格式化工具go fmt, 在开发环境或者编辑器在保存时,都会使用格式化工具进行修改代码的格式化,这样就保证了不同开发者提交的代码都是统一的格式。


  • 1.Go语言让你用写Python代码的开发效率编写C语言代码 (编程范型: 编译型,可平行化,结构化,指令式)。

  • 2.Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。

Go语言的并发是基于 goroutine(类似于线程,但并非线程) 的。可以将 goroutine 理解为一种虚拟线程。Go 语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用CPU性能。开启一个goroutine的消耗非常小(大约2KB的内存),你可以轻松创建数百万个goroutine。
goroutine的特点:

* 具有可增长的分段堆栈。这意味着它们只在需要时才会使用更多内存。
* 启动时间比线程快。
* 原生支持利用channel安全地进行通信。
* 共享数据结构时无需使用互斥锁。
  • 3.Go语言性能强悍,同C,C++一样Go语言也是编译型的语言,它直接将人类可读的代码编译成了处理器可以直接运行的二进制文件,执行效率更高,性能更好。
解释型语言:Shell 语言、Python 语言、PHP 语言
编译型语言:C 语言、C++ 语言、Go 语言

WeiyiGeek.编译型的语言

由下图可以看出,Go 语言在性能上更接近于 Java 语言,虽然在某些测试用例上不如经过多年优化的 Java 语言,但毕竟 Java 语言已经经历了多年的积累和优化。

我坚信Go 语言在未来的版本中会通过不断的版本优化提高单核运行性能。

WeiyiGeek.常见编程语言运行性能比较

数据来源:https://benchmarksgame-team.pages.debian.net/benchmarksgame/

Linux下环境安装与牛刀小试

如果不是要在Linux平台敲go代码就不需要在Linux平台安装Go,我们开发机上写好的go代码只需要跨平台编译(详见文章末尾的跨平台编译)好之后就可以拷贝到Linux服务器上运行了,这也是go程序跨平台易部署的优势。

#1.下载二进制源码包并将将下载的源码包解压至 /usr/local目录
wget https://dl.google.com/go/go1.16.6.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.16.6.linux-amd64.tar.gz

#2.将 /usr/local/go/bin 目录添加至PATH环境变量
#在/root/.profile进行添加
export GOROOT=/usr/local/go  # 安装目录
#GOROOT 第三方包的安装包路径
export GOPATH=/home/go/      # 项目路径一般指向src
#需要BIN目录和GOPATH
export PATH=$PATH:$GOROOT/bin

#3.验证是否安装成功, 可以打开终端窗口输入go version命令,查看安装的Go版本。
go env
go version go version go1.16.6 linux/amd64

#4.go语言程序编译运行
package main
import "fmt"
func main() {
   fmt.Println("Hello, World!")
}

#5.编译运行hello.go
go build hello.go
go run hello.go && ./hello

WeiyiGeek.Go-Binary


7.数据库

前面了解常用的后端开发语言,本节也来简单了解一下常用的数据库存储软件,作为运维打交道最多的必不可少的就是数据库,当前企业中最常用的数据库(包含关系型与非关系型)有OracleMySQLMsSQLRedisPostgreSQL等,此时简单介绍前三种数据库。

Oracle 关系型数据库

Oracle 数据库(Oracle database,简称 Oracle) 又名Oracle RDBMS是甲骨文公司的一款关系数据.

Oracle 数据库产品为客户提供成本优化的高性能版 Oracle 数据库、全球领先的融合多模型数据库管理系统以及 In-memory、NoSQL 和 MySQL 数据库。客户可以在本地部署环境中通过 Oracle 公有云本地化解决方案使用 Oracle 自治数据库,也可以在 Oracle 云基础设施中使用 Oracle 自治数据库,从而简化关系数据库环境并减少管理工作量。

数据库库管理系统(RDBMS), 并且由于 Oracle 实现面向对象特性(例如用户定义类型、继承和多态)的 RDBMS 称为对象关系数据库管理系统 (ORDBMS), Oracle 数据库已将关系模型扩展为对象关系模型,从而可以在关系数据库中存储复杂的业务模型。

Oracle 数据库它是在关系型数据库领域中一直处于领先地位的产品,它可在本地环境和云端提供市场领先的性能、可扩展性、可靠性和安全性,可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统。

Oracle 数据库系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境 ,它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。

Tips : 当下(2021年9月23日 17:16:05)最新的长期支持版 Oracle Database 19c 拥有超高水平的版本稳定性以及超长的支持和错误修复支持周期,可为您的应用提供一个超级稳定的平台。

Tips : Oracle 数据库技术官网站点 (https://www.oracle.com/cn/database/technologies/)


Oracle 数据库多操作平台支持:
甲骨文公司的Oracle10g/11g/12c/18c/19c支持常见的操作系统例如:

  • Microsoft Windows x86,x86-64
  • Linux x86,x86-64
  • Apple Mac OS X Server
  • Sun Salaris SPARC x86,x86-64

Oracle 数据库特性:

  • 高可用性 : 丰富的内置功能和选件,包括 Oracle Active Data GuardOracle Real Application Clusters,可支持高效扩展和整合客户数据库, 来保护重要客户数据库,大幅提高数据可用性。
  • 数据库安全性 : 借助加密、数据屏蔽、特权用户访问控制、活动监视和审计功能; 降低数据泄露风险,并让客户能够更加轻松地满足合规性要求。
  • 数据库可管理性 : 通过单一管理仪表盘和一致的管理流程提高企业级数据库的性能和可用性,减少 DBA 的工作量。
  • 性能与可伸缩性 : 通过一系列强大功能优化延迟,提高吞吐量,满足实时环境和数据中心环境下严格的性能要求。

博主的Oracle学习之路汇总学习笔记参考: https://blog.weiyigeek.top/2018/1-1-1.html#Oracle学习之路汇总


MySQL 关系型数据库

MySQL数据库是一款非常受欢迎的开源领域的重要的关系型数据库,由瑞典的MySQL AB公司开发,Mysql数据库现属于ORACLE公司,使的自身的商业数据库与开源数据库在市场上占有的份额都是跃居第一的位置,这时MySQL的主要开发者Michael widenius ,跳出来建立了一个MySQL分支数据库这就是MariaDB的诞生与发展,来防止MySQL闭源的潜在危险;

MySQL属于传统关系数据库,开放式的架构使得用户选择性很强,社区开发维护人数众多,功能稳定,性能卓越,且在准寻GPL协议的前体下,可以免费的修改使用,因此也为MySQL的推广带来了更多的便利;

MySQL是一种关系型数据库管理系统(RDBMS),关系型数据库的特点是将数据保存在不同的表中,在将这些表放入不同的数据库中,而不是将所有数据统一放在一个大仓库里.这样的设计增加了 MySQL 的读取速度,灵活性可管理性也得到了很大提高 ,访问以及管理 MysQL 数据库的最常用标准化语言为 SQL 结构化杳询语言。

Q:为什么选择MySQL数据库?

    1. 性能卓越,服务稳定,很少出现异常宕机(dang)
    1. 开发源代码且无版权制约,自主性及使用成本低;
    1. 历史悠久,社区活跃,遇到问题能很快解决;
    1. 软件体积小,安装简单,并且易于维护,安装及维护成本低
    1. 知名度高,企业非常喜欢直接用之,LAMP/LEMP流行架构;
    1. 跨平台运行,提供各种API接口,支持多种开发语法PHP/JSP/ASP,主要是PHP语言;

博主的MySQL学习之路汇总学习笔记参考: https://blog.weiyigeek.top/2018/1-1-1.html#MySQL学习之路汇总


MsSQL 关系型数据库

MsSQL全称为Microsoft SQL Server,一般简称 MsSQL 或SQL Server;它是指微软的SQLServer数据库服务器。它是一个数据库平台,提供数据库的从服务器到终端的完整的解决方案,其中数据库服务器部分,是一个关系型数据库管理系统,用于建立、使用和维护数据库。

SQL-Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。

当前最新的MsSQL版本为 SQL Server 2022, 以及上一个版本为 SQL Server 2019、SQL Server BI,早期版本有 SQL Server 2017、SQL Server 2016、SQL Server 2008、SQL Server 2005,其中大家熟知常用的SQL Server 2008在当前企业老的业务系统中占比还是挺大了。

主要特性:

  1. 高性能设计,可充分利用WindowsNT的优势。

  2. 系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。

  3. 强壮的事务处理功能,采用各种方法保证数据的完整性。

  4. 支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。

博主的MsSQL学习之路汇总学习笔记参考: https://blog.weiyigeek.top/2018/1-1-1.html#MsSQL学习之路汇总


Redis 非关系型数据库

Redis是一种开源(BSD 许可)内存数据库,使用ANSI C语言编写、内存中数据结构存储,用作数据库、缓存和消息代理。Redis 提供了诸如字符串、散列、列表、集合、带范围查询的排序集合、位图、超级日志、地理空间索引和流等数据结构。

Redis 内置复制、Lua 脚本、LRU 驱逐、事务和不同级别的磁盘持久化,并通过 Redis SentinelRedis Cluster 自动分区提供高可用性。

它通常被称为数据结构服务器它有五种类型值(value): 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。


Redis 特点

  • 非关系型数据库, 即Not-OnlySQL(泛指非关系型的数据库),作为关系型数据库的补充。
  • 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • 支持数据的备份即master-slave主从模式的数据备份。

Redis 优势

  • 是一个开源的 key-value 存储系统,并且性能高体现在IO读写(R>W)
  • R是非常轻量级,一个空Redis实例占用的内在只有1M左右,所以不用担心多个Redis实例会额外占用很多内存。
  • 丰富得数据类型(String/Hash/List/sets/Sorted sets)
  • 所有得操作都是原子性得(要么成功要么失败完全不执行),且多个操作支持事务即原子性(通过MULTI和EXEC指令包起来)

Redis 与其他K-V存储异同

  • R不是一个普通的键值存储,它实际上是一个数据结构服务器,支持不同类型的值。
  • R有更为复杂得数据结构并提供事务处理机制(原子性操作)
  • R运行在内存中但是可以持久化到磁盘之中,在对数据集进行高速读写时需要权衡内存(数据量不能大于硬件内存)
  • 在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问

Redis 应用

  • 为热点数据加速查询(主要场景)、如热点商品、热点新闻、热点资讯、推广类等提高访问量信息等。
  • 任务队列、如秒杀、抢购、购票等
  • 即时信息查询,如各位排行榜、各类网站访问统计、公交到站信息、在线人数信息(聊天室、网站)、设备信号等
  • 时效性信息控制,如验证码控制,投票控制等
  • 分布式数据共享,如分布式集群构架中的session分离
  • 消息队列(通过发布和订阅实现)
  • 分布式锁

博主的Redis学习之路汇总学习笔记参考: https://blog.weiyigeek.top/2018/1-1-1.html#Redis学习之路汇总


原文地址: https://blog.weiyigeek.top/2023/2-14-711.html

本文至此完毕,更多技术文章,尽情期待下一章节!

温馨提示:唯一极客技术博客文章在线浏览【极客全栈修炼】小程序上线了,涉及网络安全、系统运维、应用开发、物联网实战、全栈文章,希望和大家一起学习进步,欢迎浏览交流!(希望大家多多提提意见)


专栏书写不易,如果您觉得这个专栏还不错的,请给这篇专栏 【点个赞、投个币、收个藏、关个注,转个发,留个言】(人间六大情),这将对我的肯定,谢谢!。

帅哥(靓仔)、美女,点个关注后续不迷路

温馨提示: 由于作者水平有限,本章错漏缺点在所难免,希望读者批评指正,并请在文章末尾留下您宝贵的经验知识,联系邮箱地址 master@weiyigeek.top 或者关注公众号 WeiyiGeek 联系我。

posted @ 2023-02-19 10:34  全栈工程师修炼指南  阅读(60)  评论(0编辑  收藏  举报