[TOC]
0X00 前言简述
有可能有的小伙伴会问,你作为一名安全运维开发(SecOpsDev)工程师,为啥会整理学习前端相关技术笔记呢?
一是为了补齐自己的知识短板(形成知识体系结构),毕竟来说一般会运维的不会开发,会开发的不一了解安全,而成为一名网络安全工作者或者说白帽子,你就势必什么都是知道一点,但是等待你学到一定层度后,你会发现遇到的瓶颈越来越多,此时你可能会非常迷茫也很苦恼,要么有的就放弃这条路(转型),要不就重头再来恶补基础知识,比如像笔者我。
二是为了将自己所学的东西、学习路径分享出来,帮助某些计算机爱好者(同道中人)入门学习,其次是为了加固自身所学的知识,可谓是一举两得。
三是为了项目的需求不得不对前端知识进行饿补,毕竟还是要在完成工作的前提为指导,因为领导关心的就是能不能做
以及能不能做成
,谁不爱有产出的员工(tool man,嘻嘻)。
好的,废话不多说,从2023年2月16日开始,一起跟着【WeiyiGeek】来看一下我的前端学习之路吧,希望对你们学习有帮助!
送给各位读者的话,成大事不在于力量的大小,而在于能坚持多久
。
原文地址:
- [全栈之路-前端篇 | 第一讲.基础前置知识【浏览器内核与网络知识】学习笔记] https://mp.weixin.qq.com/s/XYyRp1WeAwl3PcSSw5_rAQ
- [全栈之路-前端篇 | 第二讲.基础前置知识【应用服务端与编程语言】学习笔记] https://mp.weixin.qq.com/s/8uU0EFGkrWc0W6CnV68wXw
0X01 前端基础知识
1.客户端
主流浏览器
现在国内常见的浏览器有:IE、Firefox、QQ浏览器、Safari、Opera、Google Chrome、百度浏览器、搜狗浏览器、猎豹浏览器、360浏览器、UC浏览器、遨游浏览器、世界之窗浏览器等。
但目前最为主流浏览器有五大款,分别是IE(Edge)、Firefox、Google Chrome、Safari、Opera。
五大浏览器分别是Google Chrome、Safari、Firefox、Edge(Internet Explorer) 、Opera浏览器,采用的都是单内核,而随着浏览器的发展现在也出现了双内核(例如QQ/360)。
- Google Chrome : Google Chrome 是一款由Google公司开发的一款设计简单、高效的Web浏览工具,其基于开源引擎WebKit中的分支Blink而生的浏览器,
Blink 内核以及Chromium
是Google公司自主研发的内核模式,包含V8 Javascript虚拟机,这个多线程的虚拟机可以加速Javascript的执行。目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。 - Safari :Safari 是一款由苹果公司开发的网页浏览器,是各类苹果设备(如Mac、iPhone、iPad、iPod Touch)的默认浏览器,Safari使用自家开发 WebKit 浏览器引擎,
WebKit 内核
是苹果自主研发的内核模式,包含WebCore排版引擎及JavaScriptCore解析引擎,均是从KDE的KHTML及KJS引擎衍生而来。 - Firefox : Firefox 浏览器使Mozilla公司旗下浏览器,也是刚才提到的网景公司后来的浏览器。网景被收购后,网景人员创办了Mozilla基金会,这是一个非盈利组织,他们在2004年推出自己的浏览器Firefox其采用作为内核,
Gecko 内核
是Mozilla公司自主研发的内核模式. - Edge : Microsoft Edge 是一款快速而安全的浏览器,其是基于谷歌开发的
Chromium 内核
,即微软的壳、Chromium 的心, 这次转变旨在解决 Edge 一直以来都难以解决的兼容性问题(在 EdgeHTML 下不少传统网页都无法正常显示)并融入现有的 Chromium 生态,所以 Google Chrome 中使用的浏览器插件通常也可以在Edge使用。- Internet Explorer : 已经是过去式了,此处不再详细提及,曾经占用量最大的浏览器,现在已被 Microsoft 推出的 Edge 所替代,其采用的 Trident 内核。
- Opera : 它是挪威Opera Software ASA公司旗下的浏览器。1995年,opera公司发布第一版Opera浏览器,使用自己研发的Presto内核。当时opera公司的开发团队不断完善Presto内核,使Opera浏览器一度成为顶级浏览器。直到2016年奇虎360和昆仑万维收购了Oprea浏览器,从此也丢弃了强大的Presto内核,改用当时Google开源的webkit内核,后来Opera浏览器跟随Google将浏览器内核改为Blink内核,自此Presto内核也淡出了互联网市场。
浏览器内核
五大内核分别是:Trident(也称IE内核)、Presto、Gecko、Webkit、Blink/Chromium (基于Webkit)。
- Trident ([‘traɪd(ə)nt]) (IE内核):该内核程序在 1997 年的 IE4 中首次被采用,是微软在 Mosaic(”马赛克”,这是人类历史上第一个浏览器,从此网页可以在图形界面的窗口浏览) 代码的基础之上修改而来的,并沿用到 IE11,也被普遍称作 “IE内核”。
- Presto ([‘prestəʊ]):它是挪威产浏览器 opera 的 “前任” 内核,为何说是 “前任”,因为最新的 opera 浏览器早已将之抛弃从而投入到了谷歌大本营。pera 的一个里程碑作品是 Opera7.0,因为它使用了 Opera Software 自主开发的 Presto 渲染引擎,取代了旧版 Opera 4 至 6 版本使用的 Elektra 排版引擎。该款引擎的特点就是渲染速度的优化达到了极致,然而代价是牺牲了网页的兼容性。
Presto 加入了动态功能,例如网页或其部分可随着 DOM 及 Script 语法的事件而重新排版。Presto 在推出后不断有更新版本推出,使不少错误得以修正,以及阅读 Javascript 效能得以最佳化,并成为当时速度最快的引擎,然而为了减少研发成本,Opera 在 2013 年 2 月宣布放弃 Presto,转而跟随 Chrome 使用 WebKit 分支的 Chromium 引擎作为自家浏览器核心引擎,至此Presto 内核的 Opera 浏览器版本永远的停留在了 12.17
- Gecko ([‘gekəʊ]) (Firefox 内核):Netscape6 开始采用的内核,后来的 Mozilla FireFox(火狐浏览器) 也采用了该内核,Gecko 的特点是代码完全公开,因此,其可开发程度很高,全世界的程序员都可以为其编写代码,增加功能。因为这是个开源内核,因此受到许多人的青睐,Gecko 内核的浏览器也很多,这也是 Gecko 内核虽然年轻但市场占有率能够迅速提高的重要原因。
- Webkit :实际上是由苹果公司开发给 Safari 浏览器使用的内核。现在很多人错误地把 webkit 叫做 chrome内核(即使 chrome内核已经是 blink 、Chromeium了),WebKit 前身是 KDE 小组的 KHTML 引擎,可以说 WebKit 是 KHTML 的一个开源的分支。当年苹果在比较了 Gecko 和 KHTML 后,选择了后者来做引擎开发,是因为 KHTML 拥有清晰的源码结构和极快的渲染速度,所以Webkit内核可以说是以硬件盈利为主的苹果公司给软件行业的最大贡献之一。
- PS:Apple 在 Safari 里面使用了自己的 Nitro JavaScript 引擎(只用 WebKit 来渲染 HTML),所以一般说到 Webkit,通常指的就是渲染引擎(而不包括 Javascript 引擎)
- Chromium/Blink :2008 年谷歌公司发布 chrome 浏览器,浏览器使用的内核被命名为 chromium,其 fork 自开源引擎 webkit,却把 WebKit 的代码梳理得可读性提高很多,提高了效率并且带动了浏览器行业的发展,谷歌公司还研发了自己的 Javascript 引擎,V8,极大地提高了 Javascript 的运算速度,然而 2013 年 4 月 3 日,谷歌在 Chromium Blog 上发表 博客,称将与苹果的开源浏览器核心 Webkit 分道扬镳,在 Chromium 项目中研发 Blink 渲染引擎(即浏览器核心),内置于 Chrome 浏览器之中。
我们所说的浏览器内核是什么?其究竟能干什么?
浏览器最重要或者说核心的部分是“Rendering Engine”
可大概译为“渲染引擎”
,俗称称为“浏览器内核”。负责对网页语法的解释(如[标准通用标记语言]下的一个应用[HTML]、[JavaScript])并渲染(显示)网页。 所以,通常所谓的浏览器内核也就是浏览器所采用的[渲染引擎],渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息,不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。
综上所述,浏览器的内核是指支持浏览器运行的最核心的程序,分为两个部分的,一是渲染引擎,另一个是JS引擎
。用户在浏览器请求访问 URI(统一资源标示符)网络资源时,返回的数据由浏览器解释并显示 HTML 文件的方式是在 HTML 和 CSS 规范中指的,这些规范由网络标准化组织 W3C(万维网联盟)进行维护。
此处值得注意的是,并非所有的浏览器都完全遵从W3C规范(只是或多或少),通常还在开发自己独有的扩展程序。

WeiyiGeek.浏览器渲染解析
Webkit 用的好好的,为何要投入到一个新的内核中去呢?
Blink 其实是 WebKit 的分支,如同 WebKit 是 KHTML 的分支。Google 的 Chromium 项目此前一直使用 WebKit(WebCore) 作为渲染引擎,但出于某种原因,并没有将其多进程架构移植入Webkit。
后来,由于苹果推出的 WebKit2 与 Chromium 的沙箱设计存在冲突,所以 Chromium 一直停留在 WebKit,并使用移植的方式来实现和主线 WebKit2 的对接。这增加了 Chromium 的复杂性,且在一定程度上影响了 Chromium 的架构移植工作。
基于以上原因,Google 决定从 WebKit 衍生出自己的 Blink 引擎(后由 Google 和 Opera Software 共同研发),将在 WebKit 代码的基础上研发更加快速和简约的渲染引擎,并逐步脱离 WebKit 的影响,创造一个完全独立的 Blink 引擎。这样以来,唯一一条维系 Google 和苹果之间技术关系的纽带就这样被切断了。
总结说明
- 浏览器内核主要指的是浏览器的渲染引擎,2013 年以前,代表有 Trident(IE),Gecko(firefox),Webkit(Safari chrome 等)以及 Presto(opera)。2013 年,谷歌开始研发 blink 引擎,chrome 28 以后开始使用,而 opera 则放弃了自主研发的 Presto 引擎,投入谷歌怀抱,和谷歌一起研发 blink 引擎,国内各种 chrome系的浏览器(360、UC、QQ、2345 等等)也纷纷放弃 webkit,投入 blink 的怀抱。
- 目前移动端浏览器有哪些内核?
描述:移动端的浏览器内核主要说的是系统内置浏览器的内核。
目前移动设备浏览器上常用的内核有 Webkit,Blink(Chromium),Trident,Gecko 等,其中 iPhone 和 iPad 等苹果 iOS 平台主要是 WebKit,Android 4.4 之前的 Android 系统浏览器内核是 WebKit,Android4.4 系统浏览器切换到了Chromium,内核是 Webkit 的分支 Blink,Windows Phone 8 系统浏览器内核是 Trident。 - 作为前端开发学习,熟悉浏览器内核是非常有必要的,不同内核的解析不同使网页渲染效果更具多样化,下面总结一下各常用浏览器所使用的内核。
序号 | 浏览器 | 内核 |
---|---|---|
1 | IE | Trident内核,也是俗称的IE内核; |
2 | Chrome | Chromium内核或Chrome内核,以前是Webkit内核,现在是Blink内核; |
3 | Firefox | Gecko内核,俗称Firefox内核; |
4 | Safari | Webkit内核; |
5 | Opera | 最初是自己的Presto内核,后来是Webkit,现在是Blink内核; |
6 | 360浏览器 | IE+Chrome双内核; |
7 | 猎豹浏览器 | IE+Chrome双内核; |
8 | 搜狗浏览器 | Trident(兼容模式)+Webkit(高速模式); |
9 | 遨游浏览器 | Trident(兼容模式)+Webkit(高速模式); |
10 | QQ浏览器 | Trident(兼容模式)+Webkit(高速模式); |
11 | 百度浏览器 | IE内核; |
12 | 世界之窗 | IE内核; |
13 | 2345浏览器 | 以前是IE内核,现在也是IE+Chrome双内核; |
参考来源:
- 五大主流浏览器及四大内核 [https://zhuanlan.zhihu.com/p/102911463]
2.APP
小程序
当前说得最多、最火的就是小程序,例如我们熟知的微信小程序、支付宝小程序、百度小程序等。
发展背景与历程
随着当前APP(安卓、IOS)市场的饱和,大部分用户已经养成了使用习惯(国人必不可少的两个软件-微信、支付宝),开发新的APP很难在市场生存。此外,APP开发和推广成本高也是不争的事实,根据某数据显示移动电商APP的下载成本高达120-200 元,而且这些后期未必能形成转化,而像互联网金融、二手车电商APP的新客户成本,更是动辄高达数千元。
因此,不少“码农”们决定开始向小程序市场“跳槽”,从而使得小程序雨后春笋般的增长。
时间 | 事件 |
---|---|
2016年11月3日 | 微信小程序正式开放公测 |
2017年9月20日 | 支付宝小程序向用户开放公测 |
2018年3月 | 小米、中兴、华为、金立、联想、魅族、努比亚、OPPO、vivo、一加共十家手机厂商一起推出了快应用,虽然名字不同,本质上也是小程序。 |
2018年7月 | 百度宣布百度智能小程序正式上线 |
2019年6月 | 腾讯QQ小程序上线 |
2020年6月23日 | 苹果推出了一项新的“App Clip”小程序 |
那究竟什么是小程序?
按照百度百科介绍,小程序是一种不需要下载安装即可使用的[应用],它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装[卸载]。
小程序开发文档
- 微信小程序: https://mp.weixin.qq.com/cgi-bin/wx?token=&lang=zh_CN
- 支付宝小程序: https://opendocs.alipay.com/mini/development
- 百度小程序: https://smartprogram.baidu.com/developer/index.html
WebView
什么是WebView?
Webview 是是指网页视图,它是一个基于webkit的引擎,可以解析DOM 元素,展示html页面的控件,它和浏览器展示页面的原理是相同的,所以可以把它当做浏览器看待,简单的说它就是APP内的一个容器的概念.
它可以内嵌在移动端,实现前端的混合式开发,大多数混合式开发框架都是基于WebView模式进行二次开发的,比如:APIcloud、uni-app等等的框架,以及微信小程序就是使用Webview进行渲染的。
WebView主要用于什么地方?或者说什么需求下会使用到webview?
个人理解,在电脑上我们可以非常轻松的通过浏览器打开页面即可浏览,而手机系统层面,如果没有webview支持,是无法展示html页面,所以webview的作用即用于手机系统来展示html界面的,所以它主要在需要在手机系统上加载html文件时被需要。
使用webview的好处?
原生APP是将页面的布局设计,以及业务代码打包然后用户下载安装使用,而webview是通过加载html文件来进行页面的展示,当需要更新页面布局的或者业务逻辑变更时,如果是原生的APP就需要修改前端内容,升级打包,重新发布才可以使用最新的。
而通过webview方式的页面则只需要修改html代码或者js文件(如果是从服务器端获取,只要新的文件部署完成),用户重新刷新就可以使用更新后的,无需通过下载安装的方式完成升级。
3.网络知识
网络相关基础知识作为开发或者说从事计算机行业的必功课,所以说一个好的开发者一定是对网络是有一定的掌握,但是互连网络知识体系、分类之多,此处作为入门教程不做过多的展开,有兴趣的小伙伴可以自行学习,下面针对我们会遇到的一些网络名词进行简单介绍。
Domain
什么是域名(Domain Name)?
A:是一串用点分割的字符,是互联网某台或者某组计算机的名称,使用者更好方便访问网页,而不需去记住一长串的IP地址字符,例如
http://www.weiyigeek.top/ --> IP地址
;
使用域名有何好处?
- 1.方便人类记忆
- 2.更换机器IP地址后不需要改变硬编码在应用的域名,只需要更改解析即可。
- 2.便于实现负载均衡,例如一个域名可以对应多个IP。
- 3.便于实现虚拟主机名进行访问同一个地址的多个应用,例如Nginx的代理。
Tips: 域名的购买与使用流程(温馨提示:国内服务器域名需要进行依法备案哟!):
- 1.你在某域名提供商处购买了一个域名 weiyigeek.top
- 2.域名提供商向 .top 对应的顶级域名服务器中插入一条以上的 NS 记录,指向它自己的次级 DNS 服务器,如 dns25.hichina.com.
- 3.阿里云会向 TLD 中插入几条 NS 记录,指向阿里云的次级 DNS 服务器(如 alidns.com - 223.6.6.6)。
- 4.你在该域名提供商的 DNS 管理界面中添加 A 记录,值为你的服务器 IP。
- 5.OK 现在 ping 一下 weiyigeek.top,就会发现它已经解析到你自己的服务器了。
阿里云-域名购买:https://wanwang.aliyun.com/?source=5176.11533457&userCode=uelj47qf
腾讯云-域名购买: https://cloud.tencent.com/act/cps/redirect?redirect=10827&cps_key=b33075ae5a2baf3b47e7456ee5821502
TCP/IP
当前在因特网中使用的协议集(一组通过不同分层进行组织的协议)被称为TCP/IP协议族,TCP/IP协议族是一个分层协议,它由提供特定功能的交互式模块组成。
那TCP/IP是什么呢?又起了什么作用?
定义:TCP/IP是一组通信协议的代名词(其中包含一百多个协议),这组协议使任何具有网络设备的用户能访问和共享Internet上的信息,其中最重要的协议是传输控制协议(TCP)
和因特网协议(IP)
。
作用:TCP和IP是两个独立且紧密结合的协议,负责管理和引导数据报文在Internet上的传输,两者使用专门的报文头定义每个报文的内容。
- TCP负责和远程主机的连接。
- IP负责寻址,使报文被送到其该去的地方。
说到此处不得不提到 TCP/IP四层模型。
TCP/IP四层模型的出现要早于OSI七层模型,它是由美国国防部创建的,所以有时又称DoD(Department of Defense)
模型,是迄今为止发展最成功的通信协议,被用于构筑目前最大的、开放的互联网络系统Internet。
所以尽管OSI七层参考模型(后面介绍)得到了全世界的认同,但是互联网历史上和技术上的事实开发标准则是TCP/IP模型。
1 | # TCP/IP 协议簇中的分层 |
温馨提示: 为了简化了层次设备,又常常将TCP/IP模型说成四层,即将数据链路层
与物理层
进行整合为网络接口层
。
扩展文章:(大神之路-起始篇 | 第6章.计算机科学导论之【计算机网络】学习笔记)[https://mp.weixin.qq.com/s/usJbZHe2Cfaurz6snVQyuA]
DNS
DNS(Domain Name System) 即域名名称服务:TCP/IP协议族使用唯一定义了该主机和网络之间连接的IP地址,但是为了方便人们记忆通常使用字符串而不是数字化的地址,因此网络需要有一个可以将名称映射到地址的目录系统,DNS的出现正是为了解决此问题。
例如,博主的 blog.weiyigeek.top 博客站点域名,通过如下步骤将主机名词映射到对应的IP地址上。
$ ping blog.weiyigeek.top
正在 Ping blog.weiyigeek.top [82.156.18.253] 具有 32 字节的数据:
来自 82.156.18.253 的回复: 字节=32 时间=51ms TTL=52

WeiyiGeek.域名解析流程
扩展文章: 🌐 https://blog.weiyigeek.top/2019/1-22-511.html
HTTP/HTTPS
什么是 HTTP/HTTPS 协议?
HTTP协议全称Hyper Text Transfer Protocol-超文本传输协议,位于TCP/IP四层模型当中的应用层。
- HTTP协议通过请求/响应的方式,在客户端和服务端之间进行通信。
- 缺点:传输不够安全容易被拦截和篡改(HTTP协议的信息传输完全以明文方式,不做任何加密,相当于是在网络上“裸奔”)容易导致中间人攻击;
HTTPS协议全称Hypertext Transfer Protocol Secure,超文本传输安全协议,实际上是在HTTP协议的基础之上增加了SSL安全层(下面介绍的一系列认证流程就是在SSL层中完成),这是一套使用公钥/私钥机制的加密系统
- 保护了交换数据隐私和完整性,提供对网站服务器身份认证的功能,简单来说它就是安全版的 HTTP。
- 最新推出的TLS协议是SSL 3.0协议的升级版,和SSL协议的大体原理是相同的(简单的记就是TLS是SSL的升级版本)
HTTP/HTTPS处于TCP/IP层次
TCP/IP层次 | 说明 |
---|---|
应用层(HTTP[HTTPS]/FTP) | HTTPS在HTTP基础上构建 SSL安全层,经过发展已经推出了TLS协议; |
传输层(TCP/UDP) | - |
网络层(IP/ARP) | - |
数据链路层 | - |

WeiyiGeek.HTTP/HTTPS处于层次
HTTPS 主要用途
- 一是通过证书等信息确认网站的真实性;
- 二是建立加密的信息通道;
- 三是保证数据内容的完整性。
HTTPS相比较于HTTP协议的一些关键点
- 成本问题:HTTPS要比HTTP更加消耗资源,SSL握手需要更多的数据包,加密解密也需要额外的运算。
- HTTPS的证书需要专门的机构颁发,大机构颁发的证书不是免费的每年都得交几百几千块钱才能申请到证书,当然也可使用Let’sEncrypt进行申请免费证书,缺点是有效期只有90天,博主就是采用此方式给博客站点申请免费证书。
- 因为某些颁发证书的机构会滥发证书,甚至会制造假证书,假证书可以用来进行中间人攻击;
扩展参考:
(HTTPS原理介绍以及证书签名的申请配置)[https://blog.weiyigeek.top/2019/10-21-10.html]
(Let’sEncrypt快速颁发及自动续签泛域名证书实践指南)[https://blog.weiyigeek.top/2022/3-11-589.html]
4.操作系统
说到操作系统,想必你肯定知道Windows操作系统,但是除了微软的操作系统外,还有苹果电脑的MacOS系统(unix),以及Linux操作系统(包含众多发型版本,例如Debian、CentOS、Ubuntu),我作为一名开发者通常会选择Ubuntu进行开发,别问我为啥不选择苹果电脑(PS: 作者太穷了买不起 ☺),此外我们简单介绍一下Windows与Linux操作系统,我相信大部分的开发者还是常常使用这两大操作系统。
Windows
微软操作系统(Microsoft System)是美国微软公司以图形用户界面为基础研发的操作系统,于1983年开始研发,最初的研发目标是在MS-DOS的基础上提供一个多任务的图形用户界面,后续版本则逐渐发展成为主要为个人电脑和服务器用户设计的操作系统,并最终获得了世界个人电脑操作系统的垄断地位。
微软(Microsoft)自1985年推出Windows 1.0以来,Windows系统经历了十多年风风雨雨。从最初运行在DOS下的windows95操作系windows95操作系统Windows 3.x,到现在风靡全球的Windows 9x、Windows 2000、Windows XP、Windows 2003、Windows vista、Windows 2008 、Windows2012、Win 7、Win 8、Win8 or 8.1 、Win10、乃至当前流行 Windows 11。
Windows 各版本发售时间
名称 | 最新版本 | 正式发售日期 | 开发代号 | 停止支持时间 | |
---|---|---|---|---|---|
主流 | 扩展 | ||||
Windows 1.0 | 1.01 | 1985年11月20日 | Interface Manager | 2001年12月31日 | |
Windows 2.0 | 2.03 | 1987年12月9日 | 不适用 | 2001年12月31日 | |
Windows 2.1 | 2.11 | 1988年5月27日 | 不适用 | 2001年12月31日 | |
Windows 3.0 | 3.0 | 1990年5月22日 | 不适用 | 2001年12月31日 | |
Windows 3.1 | 3.1 | 1992年4月6日 | Janus | 2001年12月31日 | |
Windows For Workgroups 3.1 | 3.1 | 1992年10月 | Winball、Sparta | 2001年12月31日 | |
Windows NT 3.1 | NT 3.1.528 | 1993年7月27日 | Razzle | 2000年12月31日 | |
Windows For Workgroups 3.11 | 3.11.300 | 1993年8月11日 | Snowball | 2001年12月31日 | |
Windows 3.2 | 3.2.153 | 1993年11月22日 | 不适用 | 2001年12月31日 | |
Windows NT 3.5 | NT 3.5.807 | 1994年9月21日 | Daytona | 2001年12月31日 | |
Windows NT 3.51 | NT 3.51.1057 | 1995年5月30日 | Tukwila | 2001年12月31日 | |
Windows 95 | 4.0.950 | 1995年8月24日 | Chicago、4.0 | 2000年12月31日 | 2001年12月31日 |
Windows NT 4.0 | NT 4.0.1381 | 1996年7月31日 | Cairo | 2002年6月30日 | 2004年6月30日 |
Windows 98 | 4.10.1998 | 1998年6月25日 | Memphis、97、4.1 | 2002年6月30日 | 2006年6月30日 |
Windows 98 SE | 4.10.2222 | 1999年5月5日 | 不适用 | 2002年6月30日 | 2006年6月30日 |
Windows 2000 | NT 5.0.2195 | 2000年2月17日 | NT 5.0 | 2005年6月30日 | 2010年7月13日 |
Windows Me | 4.90.3000 | 2000年9月14日 | Millennium、4.9 | 2003年12月31日 | 2006年7月11日 |
Windows XP | NT 5.1.2600 | 2001年10月25日 | Whistler | 2009年4月14日 | 2014年4月8日 |
Windows XP 64-bit Edition | NT 5.2.3790 | 2003年3月28日 | 不适用 | 2009年4月14日 | 2014年4月8日 |
Windows Server 2003 | NT 5.2.3790 | 2003年4月24日 | Whistler Server、Windows .NET Server | 2010年7月13日 | 2015年7月14日 |
Windows XP Professional x64 Edition | NT 5.2.3790 | 2005年4月25日 | 不适用 | 2009年4月14日 | 2014年4月8日 |
Windows Fundamentals for Legacy PCs | NT 5.1.2600 | 2006年7月8日 | Eiger、Mönch | 2009年4月14日 | 2014年4月8日 |
Windows Vista | NT 6.0.6003 | 2007年1月30日 | Longhorn | 2012年4月10日 | 2017年4月11日 |
Windows Home Server | NT 5.2.4500 | 2007年11月4日 | Quattro | 2013年1月8日 | |
Windows Server 2008 | NT 6.0.6003 | 2008年2月27日 | Longhorn Server | 2015年1月13日 | 2020年1月14日 |
Windows 7 | NT 6.1.7601 | 2009年10月22日 | Windows 7 | 2015年1月13日 | 2020年1月14日 |
Windows Server 2008 R2 | NT 6.1.7601 | 2009年10月22日 | 不适用 | 2015年1月13日 | 2020年1月14日 |
Windows Home Server 2011 | NT 6.1.8400 | 2011年4月6日 | Vail | 2016年4月12日 | |
Windows Server 2012 | NT 6.2.9200 | 2012年9月4日 | Server 8 | 2018年10月9日 | 2023年1月9日 |
Windows 8 | NT 6.2.9200 | 2012年10月26日 | 不适用 | 2016年1月12日 | |
Windows 8.1 | NT 6.3.9600 | 2013年10月17日 | Blue | 2018年1月9日 | 2023年1月10日 |
Windows Server 2012 R2 | NT 6.3.9600 | 2013年10月18日 | Server Blue | 2018年10月9日 | 2023年1月10日 |
Windows 10 | NT 10.0.19045 | 2015年7月29日 | Threshold、Redstone、Vibranium | 2025年10月14日(不含LTSB/LTSC) | |
Windows Server 2016 | NT 10.0.14393 | 2016年10月12日 | Redstone | 2022年1月11日 | 2027年1月12日 |
Windows Server 2019 | NT 10.0.17763 | 2018年10月2日 | Redstone | 2024年1月9日 | 2029年1月9日 |
Windows Server 2022 | NT 10.0.20348 | 2021年8月18日 | Iron | 2026年10月13日 | 2031年10月14日 |
Windows 11 | NT 10.0.22621 | 2021年10月4日 | Sun Valley | 2023年10月10日 | 2024年10月8日 |
Q: Windows 10版本 business_editions
和consumer_editions
的区别?
答: 二者都内置专业版不同之处在于:
consumer_editions 版本包含:Home(家庭版); Education(教育版) ; Professional(专业版);
business_editions 版本包含:Education(教育版); Enterprise (企业版); Professional(专业版);
Windows 10 (business editions) VL版 ISO镜像包含以下版本(根据需要选择安装):
- 专业版、企业版、教育版、专业工作站版、专业教育版
Windows 10 (consumer editions) 零售版 ISO镜像包含以下版本(根据需要选择安装):
- 家庭版、专业版、教育版、家庭单语言版、专业工作站版、专业教育版
Q: Windows 10 各发行版本区别?
- 家庭版(Home):供家庭用户使用,无法加入Active Directory和Azure AD,不允许远程桌面连接。
- 专业版(Professional):供小型企业使用 在家庭版基础上增加了域账号加入、bitlocker、企业商店等功能。
- 企业版(Enterprise):供中大型企业使用 在专业版基础上增加了DirectAccess,AppLocker等高级企业功能。
- 教育版(Education):供学校使用 (学校职员, 管理人员, 老师和学生) 其功能基本和企业版的一样。
- LTSB版:无Edge浏览器、小娜,无磁贴,可选是否下载和安装补丁,其它版都不能自选补丁。
- N版:带“N”的版本相当于阉割版,移除了Windows Media Player,几乎用不到N版。
当前购买的计算机默认安装的 Windows 11是Windows 11家庭版版本,但除此之外还有 Windows 11专业版、Windows 11企业版、Windows 11专业工作站版、Windows 11教育版、Windows 11混合现实版 ,延伸版本为Windows 11 22H2(代号为Sun Valley 2,即“太阳谷2”),将于2022年9月发布。
扩展阅读:
- Windows10 家庭版(Home) 开启远程桌面支持 :https://blog.weiyigeek.top/2019/5-28-566.html
- Windows服务器核心(Server-Core)安装与基础配置使用 : https://blog.weiyigeek.top/2021/5-26-559.html
Linux
Linux 操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间,以MINIX为模版)芬兰大学生 auther:Linus Torvalds
,在BBS上发布了一则消息,他以bash/GCC等工具写了一个核心程序,它可以在inter的386机器上面运作,自1994年完成了Linux核心正式版 v1.0 ,并加入了对X Window System的支持,然后1996年发布Linux核心正式版v2.0版本 , 托瓦兹指定企鹅为吉祥物。
Linux是一个开源的软件,我们可以任意的研究使用、散布、改良的自由。
Liunx是一个终端(Terminal)也称终端字符设备,是计算机网络中处于网络最外围的设备,主要用于用户信息的输入以及处理结果的输出等。
- 在早期计算机系统中,由于计算机主机昂贵,因此一个主机(IBM大型计算机)一般会配置多个终端,这些终端本身不具备计算能力,仅仅承担信息输入输出的工作,运算和处理均由主机来完成。
- 在个人计算机时代,个人计算机可以运行称为终端仿真器的程序来模仿一个终端的工作。
主要特点:
- 基本思想
- 完全免费
- 完全兼容POSIX1.0标准
- 多用户、多任务
- 良好的界面
- 支持多种平台
Linux存在着许多不同的Linux版本,但它们都使用了Linux内核,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统
The Linux Kernel Archives(官网): https://www.kernel.org/
Linux主要特性:(重要的核心思想 一切皆文件
)
1.严格区分大小写
2.系统一切内容皆是文件包括硬件设备也是
3.不靠扩展名来区分文件类型
4.Windows下的程序不能直接在LInux上面运行,需要移植重新编译;
5.字符界面的优势:
- 优点1:占用系统资源更少
- 优点2:减少了出错,被攻击的可能性.
开源免费
完全兼容POSIX1.0标准
8.支撑多用户、多任务
9.支持界面化与命令行 (terminal终端) 操作
10.支持多种平台
常见的UNIX&LINUX系统分类:
UNIX System V启动方式,启动服务的脚本放在/etc/rc.d/init.d下面。
1.1 AIX | 这是一个由IBM公司主持研究的UNIX操作系统版本,它与SVR4兼容。主要是针对IBM的计算机硬件环境对UNIX系统进行了优化和增强。
1.2 HP-UX | HP公司的UNIX系统版本,该系统是基于UNIXSystem V第2版开发的。它主要运行在HP的计算机和工作站上。
1.3 Solaris | 是Sun公司基于UNIX System V的第2版并结合BSD 4.3开发的。它主要应用在Sun的计算机和工作站上。
1.4 OS/2是由微软和IBM公司共同创造,后来由IBM单独开发的一套操作系统 是因为该系统作为IBM第二代个人电脑PS/2系统产品线的理想操作系统引入的。BSD UNIX启动方式,在/etc/rc.d和/usr/local/etc/rc.d中存放启动服务的脚本。
2.1 FreeBSD
2.1.1 MacOS 是苹果公司为Mac系列产品开发的专属操作系统;macOS是全世界第一个基于FreeBSD系统采用“面向对象操作系统”的全面的操作系统。
2.1.2 iOS 是由苹果公司开发的移动操作系统。
2.2 NetBSD 是一个免费的,具有高度移植性的 UNIX-like 操作系统,是现行可移植平台最多的操作系统。
2.3 OpenBSD 是一个多平台的,基于4.4BSD的类UNIX操作系统,是BSD衍生出的三种免费操作系统(另外两种是NetBSD和FreeBSD)之一,被称为世界上最安全的操作系统l 最初的OpenBSD基于NetBSD源码。UNIX-Like
3.1 GNU GNU is Not Unix。
3.1.1 Debian GNU/Linux 采用了 Linux Kernel (操作系统的核心),但是大部分基础的操作系统工具都来自于 GNU 工程,因此又称为 Debian GNU/Linux。
3.1.2 Ubuntu 是一个以桌面应用为主的开源GNU/Linux操作系统| Ubuntu 是基于Debian GNU/Linux。- Ubuntu基于Debian发行版和GNOME桌面环境,而从11.04版起,Ubuntu发行版放弃了Gnome桌面环境,改为Unity。
- ubuntu主要版本有基于Gnome的ubuntu,基于KDE的Kubuntu,基于Xfce的Xubuntu。
Linux系统:Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
4.1 Android 是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
4.2 Red Hat Enterprise Linux
2004年4月30日,Red Hat公司正式停止对Red Hat 9.0版本的支持,标志着Red Hat Linux的免费时代正式结束。从此Red Hat公司不再开发桌面版的Linux发行包,而将全部力量集中在服务器版的开发上,也就是Red HatEnterprise Linux版,2005年10月RHEL4发布。
4.2.1 CentOS | 是一个基于Red Hat Linux 提供的可自由使用源代码的企业级Linux发行版本。
Linux与Windows有什么不同?
- 操作系统内核不同:Windows 操作系统内核是NT, 而linux 是 shell
- 硬盘文件格式不同: Windows 硬盘文件格式是fat32或NTSF, 而linux 需要的文件格式是xfs/ext4/ext3/ext2或ext。
- 用户界面不同:Windows是图形化界面为主。而Linux是字符化界面为主(当然现在也支持桌面)
- 硬件配置要求不同:你的硬件如果太新或太旧建议你还是装Windows吧,因为Linux的软件/硬件兼容性还有待提高,但是基本满足常见的硬件,有的大佬还是自己写驱动呢(像我们这样低段位的只有膜拜),
- 安全性不同: 众所周知 Windows 恶意软件数量是最多是,Linux由于是字符界面在前几年还是相对安全,但是随着时间推移物联网、嵌入式的发展,越来越多的攻击者盯上了Linux,所以Linux系统的恶意脚本软件数量也在逐年增多,但是还是要比Windows更安全一些(一想到永恒之蓝,我都想将公司仅剩的五台windows服务器给重装为Linux)。
补充扩展:
- Linux系统入门学习基础知识:https://blog.weiyigeek.top/2019/5-1-214.html
- 鸟哥的Linux私房菜基础学习篇-3版笔记:https://blog.weiyigeek.top/2020/8-8-9.html
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%E5%AD%A6%E4%B9%A0%E4%B9%8B%E8%B7%AF%E6%B1%87%E6%80%BB]
Apache HTTP Server
Apache HTTP服务器是一个功能强大、高效且可扩展的web服务器。
Apache起初由伊利诺伊大学香槟分校的国家超级电脑应用中心(NCSA)开发,此后Apache Httpd被开放源代码团体的成员不断的发展和加强,从上个世纪90年代开始它的市场占有率就超过了50%。
如今虽然它的使用率有些下降但是仍是世界使用排名第一的 Web 服务器软件,它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web服务器端软件之一。
扩展知识:四种服务器概念与区别。
从概念上讲:HTTP服务器=WEB服务器、应用程序服务器、应用容器、有何区别?
- Web服务器是提供WWW服务的程序;
- Web容器是提供给开发者的框架;
- Web应用程序服务器内容丰富得多,既可用各厂商通常遵循一定的工业标准并自定义扩展功能而成,也可以利用开源组件轻量级拼装打造;
- 反向代理服务器在企业级应用中表现突出,具有解决集中式安全,负载均衡等等优点。
- 中间件是为应用程序提供容器和服务;
如今这四个概念的边界越来模糊,看看这个表就知道了:
软件名词 | 是否Web服务器 | 是否Web容器 | 是否Web应用服务器 | 是否能反向代理 | 公司 |
---|---|---|---|---|---|
II | 是 | 是 | 0 | 是 | 微软公司 |
Nginx |是 | 0 | |是 | 0|
Apache |是 | 0 | |是 | Sun公司 0
Http.sys|是 | 0 | |是 | 0 |
Tomcat |是 |是| 0 | 0 | Apache开源软件组织|
Jetty |是 |是| 0 | 0| 0 |
WebSphere|是|是|是| 0 | IBM公司|
WebLogic |是|是|是| 0 | BEA公司|
JBossAS |是|是|是| 0 | 红帽公司|
Kerstrel |是|是?| 0 | 0 |
扩展文章参考:
- (Apache安装与安全配置详细)[ https://blog.weiyigeek.top/2019/8-19-118.html ]
- (运维之LNMP环境安装与配置)[ https://blog.weiyigeek.top/2019/6-1-120.html ]
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等。
简单示例:
1 | <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程序 WeiyiGeek.HelloWorld
创建文件 HelloWorld.java (文件名与类名尽量是一致), 代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// 注: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
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)为基础,采取类似模型的其他语言包括Occam
和Limbo
,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的特点:
1 | * 具有可增长的分段堆栈。这意味着它们只在需要时才会使用更多内存。 |
- 3.Go语言性能强悍,同
C,C++
一样Go语言也是编译型的语言,它直接将人类可读的代码编译成了处理器可以直接运行的二进制文件,执行效率更高,性能更好。
1 | 解释型语言:Shell 语言、Python 语言、PHP 语言 |

WeiyiGeek.编译型的语言
由下图可以看出,Go 语言在性能上更接近于 Java 语言,虽然在某些测试用例上不如经过多年优化的 Java 语言,但毕竟 Java 语言已经经历了多年的积累和优化。
我坚信Go 语言在未来的版本中会通过不断的版本优化提高单核运行性能。

WeiyiGeek.常见编程语言运行性能比较
数据来源:https://benchmarksgame-team.pages.debian.net/benchmarksgame/
Linux下环境安装与牛刀小试
如果不是要在Linux平台敲go代码就不需要在Linux平台安装Go,我们开发机上写好的go代码只需要跨平台编译(详见文章末尾的跨平台编译)好之后就可以拷贝到Linux服务器上运行了,这也是go程序跨平台易部署的优势。 WeiyiGeek.Go-Binary1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#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
7.数据库
前面了解常用的后端开发语言,本节也来简单了解一下常用的数据库存储软件,作为运维打交道最多的必不可少的就是数据库,当前企业中最常用的数据库(包含关系型与非关系型)有Oracle、MySQL、MsSQL、Redis、PostgreSQL等,此时简单介绍前三种数据库。
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 Guard
和Oracle 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)
- 2) 开发源代码且无版权制约,自主性及使用成本低;
- 3) 历史悠久,社区活跃,遇到问题能很快解决;
- 4) 软件体积小,安装简单,并且易于维护,安装及维护成本低
- 5) 知名度高,企业非常喜欢直接用之,LAMP/LEMP流行架构;
- 6) 跨平台运行,提供各种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 Sentinel
和 Redis 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学习之路汇总