第三章 Golang 变量
Golang 变量为什么需要变量
变量是程序的基本组成单位。
不论是使用那种高级程序语言编写程序,变量都是其程序的基本组成单位。
变量的介绍变量的概念
变量相当于内存中一个数据存储空间的表示,你可以把变量看作是一个房间的门牌号,通过门牌号我们可以找到房间,同样的道理,通过变量名可以访问到变量值。
变量使用的基本步骤
声明变量/定义变量
赋值
使用
变量快速入门案例
案例一:
1234567891011package mainimport "fmt" // fmt 包中提供格式化、输出、输入的函数func main() { // 定义变量 var i int // 给 i 赋值 i = 10 fmt.Println("i =", i)}
变量使用注意事项
变量表示内存中的一个存储区域。
该区域有自己的变量名和数据类型。
Golang 变量使用的三种方式。
第一种:指定变量类型,声明后若不赋值,使用默认值。
第二种:根据值自行判定变量类型(类型推导)。
第三种:省略 var ,注意 := ...
第二章 Golang 概述
Golang 概述什么是程序
程序:为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令集合。
为什么学习 Go 语言
Go 语言是区块链最主流的编程语言,同时也是当前最具发展潜力的语言。
Go 语言是由 Google 公司创造的语言,也是 Google 主推的语言。
国外如 Google、AWS、Cloudflare、CoreOS 等,国内如阿里、小米已经大规模使用 Golang 开发其云计算相关产品。
Go 语言的核心开发团队
Ken Thompson(肯·汤普森):1983 年图灵奖和 1998 年美国国家技术奖得主。他与 Dennis Ritchie 是 Unix 的原创者。 Thompson 也发明了后来衍生出 C 语言的 B 程序语言,同时也是 C 语言的主要发明人。
Rob Pike(罗布·派克):曾是贝尔实验室的 Unix 团队,和 Plan 9 操作系统计划的成员。他与 Thompson 共事多年,并共创出广泛使用的 UTF-8 字元编码。
Robert Griesemer:曾协助制作 Java 的 HotSpot 编译器,和 Chrome 浏览器的 Ja ...
第一章 Golang 开山篇
Golang 开山篇Golang 的学习方向
Go 语言,可以简单的写成 Golang。
Golang 语言的学习方向:区块链研发工程师、Go 服务器端游戏软件工程师、Golang 分布式/云计算软件工程师。
Golang 的应用领域区块链技术
区块链技术,简称BT(Blockchain technology),也被称之为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录。
后端服务器应用美团后台流量支撑程序
支撑主站后台流量(排序、推荐、搜索等),提供负载均衡、cache、容错,按条件分流,统计运行指标(qps, latency)等功能。
仙侠道
应用范围:游戏服务端(通讯、逻辑、数据存储)。
云计算/云服务后台应用盛大云 CDN
应用范围:CDN 的调度系统、分发系统、监控系统、短域名服务,CDN 内部开放平台、运营报表系统以及其他一些小工具等。
京东消息推送云服务/京东分布式文件系统
应用范围:后台所有服务全部用 Golang 实现。
Golang 的学习方法
高效而愉快的学习。
先建立一个整体 ...
第十六章 网络
第十六章 网络前言
在网络连接方面,Linux 可以说是万能的。Linux 工具可以建立各种网络系统及应用,包括防火墙、路由器、域名服务器、NAS (网络附加存储) 盒等。
由于网络连接涉及的领域很广,所以用于控制、配置网络的命令自然很多。本章只着重讲一些经常用到的命令,涉及网络监测以及文件传输等方面。此外,我们还会探讨一下用于远程登录的 ssh 命令,所涉及的命令如下所示:
ping: 向网络主机发送 ICMP ECHO_REQUEST 数据包。
traceroute: 显示数据包到网络主机的路由路径。
netstat: 显示网络连接、路由表、网络接口数据、伪连接以及多点传送成员等信息。
ftp: 文件传输命令
lftp: 改善后的文件传输命令
wget: 非交互式网络下载器
ssh: OpenSSH (SSH 协议的免费开源实现) 版的 SSH 客户端 (远程系统登录命令)
scp: secure copy 的缩写,是远程复制文件命令
sftp: secure file transfer program 的缩写,安全文件传输程序。
便于更好地理解本章内容,首先熟悉下面的术 ...
第十四章 软件包管理
第十四章 软件包管理前言
软件包管理是一种在系统上安装、维护软件的方法。目前,很多人通过安装 Linux 经销商发布的软件包来满足他们所有的软件需求。
这与早期的 Linux 形成鲜明的对比。因为在 Linux 早期,想要安装软件必须先下载源代码,然后对齐进行编译。这并不是说编译源代码不好,源代码公开恰是 Linux 吸引人的一大亮点。
编译源代码赋予用户自主检查、提升系统的能力,只是使用预先编译的软件包会更快、更容易些。
本章会介绍一些用于 Linux 软件包管理的命令行工具。虽然所有主流的 Linux 发行版本都提供了强大而复杂的维持系统运行的图形化界面操作程序,但学习命令行程序同样重要,因为它可以执行许多图形化程序很难甚至无法完成的任务。
软件包系统
基本介绍
不同的 Linux 发行版用的是不同的软件包系统,并且原则上,适用于一种发行版的软件包与其他版本是不兼容的。多数 Linux 发行版采用的不外乎两种软件包技术阵容,即 Debian 的 .deb 技术和 Red Hat 的 .rpm 技术。当然也有一些特例,比如 Gentoo、Slackware 和 Foresigh ...
第十五章 存储介质
存储介质前言
本章将会介绍如下命令:
mount: 挂载文件系统
umount: 卸载文件系统
fdisk: 硬盘分区命令
fsck: 检查修复文件系统
fdformat: 格式化软盘
mkf: 创建文件系统
dd: 像设备直接写入面向块数据
genisoimage (mkisofs) : 创建一个 ISO 9600 映像文件
wodim (cdrecord) : 向光存储介质写入数据
md5sum: 计算 MD5 校验码
挂载、卸载存储设备基本介绍
概述
Linux 图形界面操作最近所取得的进展已使得图形界面操作用户能非常容易地管理存储设备。
多数情况下,设备只要连接上系统就能运作。
管理存储设备首先要做的就是将该设备添加到文件系统树种,从而允许操作系统可以操作该设备,这个过程称之为挂载。
/etc/fstab 文件
LABEL=/12
/
ext3
defaults
1
2
LABEL=/home
/home
ext3
defaults
1
2
LABEL= ...
第十八章 归档和备份
第十八章 归档和备份前言
维护系统数据安全是计算机系统管理者的基本任务之一,及时创建系统文件的备份文件是维护系统数据安全的一种常用方法。
即便对于非系统管理员,经常创建备份文件或是在设备之间、文件夹之间移动大文件集通常都是非常有益的。
本章会介绍一些用于管理文件集合的常用命令:
文件压缩程序:
gzip: 压缩和解压缩文件工具
bzip2: 块排序文件压缩工具
文件归档程序:
tar: 磁带归档工具
zip: 打包和压缩文件
文件同步程序:
rsync: 远程文件和目录的同步
文件压缩基本介绍
在计算领域的发展历史中,人们一直在努力实现以最小的可利用空间存储最多的数据,其中可利用空间包括内存、存储设备或者网络带宽。
许多如今认为理所当然的数据服务,比如便携式音乐播放器、高清电视和宽带互联网等之所以能够存在,都应该归功于有效的数据压缩技术。
数据压缩是一个移除数据冗余信息的过程。现今的压缩技术则更为先进、更复杂,但基本目标一直是消除冗余数据信息。
压缩算法 (压缩采用的数学方法) 一般分为两大类:无损压缩与有损压缩。
无损压缩保留原文件中的所有数据,也就是说这种方式的压 ...
第十章 进程
第十章 进程前言
现代操作系统通常都支持多重任务管理。
多重任务处理是指系统通过快速切换运行中的程序来实现多个任务的同时执行。
Linux 内核通过使用进程来管理多重任务。
进程是 Linux 用来安排不同程序等待 CPU 调度的一种组织方式。
有时候计算机运行速度会变得很慢,或者应用程序会停止响应。
本章将介绍命令行中可用来查看程序当前的运行情况以及终止运行异常的进程的一些工具:
ps: 实现当前所有进程的运行情况
top: 实时显示当前所有任务的资源占用情况
jobs: 列出所有活动作业的状态信息
bg: 设置在后台中运行作业
fg: 设置在前台中运行作业
kill: 杀死指定名字的进程
shutdown: 关机或者重启系统
进程如何工作基本介绍
系统启动时,内核先把它的一些程序初始化为进程,然后运行一个称为 init 的程序。
init 程序将依次运行一系列称为脚本初始化 (init script) 的 shell 脚本 (放在 /etc 目录下) ,这些脚本将会启动所有的系统服务。其中的很多服务都是通过守护程序 (daemon program) 来实现的。 ...
第十三章 定制提示符
第十三章 定制提示符前言
本章将会讲解一个看似微不足道的细节:shell 提示符。通过讲解,我们会发现 shell 和终端仿真器程序的内部工作机制。
和 Linux 中的很多程序一样,shell 提示符的可配置性很高。尽管大多数用户并不重视提示符,但是,一旦我们学会了怎样控制它,它就会成为一种相当有用的设备。
提示符的分解
基本介绍
系统的默认提示符看起来如下所示。1[me@linux ~]$
提示符是由名为 PS1 (prompt string 1 的缩写,即提示符字符串 1) 的环境变量定义的。
echo 命令可以帮助用户看到 PS1 的值。12[me@linuxbox ~]$ echo $PS1[\u@\h \w]\$
如果输出的结果同本书的范例不同,也不需要担心。每一个 Linux 发行版本对此提示符字符串的定义都会有所不同,有一些甚至定义的很奇怪。
PS1 包含了一些提示符中出现的符号,比如方括号、@ 符号和美元符号,但是其余的部分则令人困惑。
shell 提示符中使用的转义字符
转义字符
含义
\a
ASCII 铃声。在遇到该转义字符时,计算机发出哔 ...
第十九章 正则表达式
第十九章 正则表达式前言
在下面几章,我们已经知道,文本数据在类 UNIX 系统中扮演这非常重要的角色。
但是,在领略这些工具强大的功能前,我们还是先看一下经常与这些工具的复杂用法相关联的技术-正则表达式。
前面我们已经接触命令行提供的许多特性和工具,并且也遇到过一些相当神秘的 shell 特性及命令。比如 shell 扩展和引用、键盘快捷键和命令历史记录等,更不用提 vi 编辑器了。
正则表达式也延续了这种传统,而且可以说是众多特性中最神秘的一个。
什么是正则表达式
简单地说,正则表达式是一种符号表示法,用于识别文本模式。在某种程度是上,它们类似于匹配文件和路径名时使用的 shell 通配符,但其用途更广泛。
许多命令行工具和大多数编程语言都支持正则表达式,以此来解决文本操作方面的问题。
然而,在不同的工具,以及不同的编程语言之间,正则表达式都会略有不同,这让事情进一步麻烦起来。
方便起见,我们将正则表达式的讨论限定在 POSIX 标准中,与许多编程语言不同,这些编程语言使用的符号集要更多一些。
grep - 文本搜索
grep 基本介绍
我们用来处理正则表达式的主要程序是 ...