自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

烟云的计算

若抽象才是美之定义,追求明确性的我们是否象征着丑陋。

  • 博客(49)
  • 资源 (3)
  • 论坛 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 RESTful API 设计规范

目录文章目录目录RESTRESTful APIRESTful API 设规范REST早古时期,软件和网络是两个不同的领域,前者围绕着单机环境展开,而后者则研究系统之间的通信。随着互联网的兴起,使得这两个领域开始融合,首当其冲的就是基于 HTTP 协议的 Web 服务,越来越多的人开始意识到,“网站” 即是 “软件”。其中的先驱者就是 Tim Berners-Lee(万维网的发明者,万维网联盟负责人)和 Roy Thomas Fielding(1996 HTTP/1.0、1999 HTTP/1.1 的

2020-07-26 14:05:54 3670

原创 计算机网络系统文章

目录文章目录目录网络基础系列互联网协议系列IPv6 系列网络虚拟化数据中心网络架构网络应用网络基础系列《计算机网络基础 — TCP/IP 网络模型》《为什么说 TCP/IP 是一个不确定性网络》《计算机网络基础 — Tcpdump 抓包工具》《计算机网络基础 — Linux 路由器》《计算机网络基础 — netfilter/iptables 防火墙》《计算机网络基础 — 以太网》《计算机网络基础 — 物理网络》《计算机网络基础 — Linux 流量控制》互联网协议系列《互联网协议 —

2020-07-25 23:01:28 790

原创 Go 语言编程 — net/http — 支持 HTTPS

目录文章目录目录前文列表单向认证HTTPS 服务端客户端前文列表《互联网协议 — HTTP 超文本传输协议》《互联网协议 — TLS 1.3 传输层安全协议》《互联网协议 — TLS — 安全四要素与 CA 认证》《互联网协议 — HTTPS 安全的超文本传输协议》单向认证HTTPS 服务端Golang 要实现一个 HTTPS 并不困难,只需要使用 http.ListenAndServeTLS 代替 http.ListenAndServe 即可。前者多出了两个形参:certFile 和 k

2020-07-25 00:38:32 1454

原创 Go 语言编程 — net/http — HTTP 服务端

目录文章目录目录HTTP 服务端实现原理注册处理程序和请求路由监听并处理请求支持 httpsHTTP 客户端HTTP 服务端HTTP 服务端同样的,我们可以设想作为 HTTP 服务端处理一次请求应该具备的行为:实现处理函数。预设 URL、Request Method、处理函数,三者之间的路由映射。监听请求。分发请求并完成处理。net/http 将上述行为整合为了两大步骤:注册处理程序和请求路由。监听并处理请求。实现原理注册处理程序和请求路由对于 net/http 而言,HT

2020-07-23 00:27:20 660

原创 Go 语言编程 — net/http — HTTP 客户端

目录文章目录目录net/httpnet/http

2020-07-20 21:53:49 1215

原创 Go 语言编程 — make 和 new

目录文章目录目录make 和 new为什么建议使用 make 来定义 Slice、Map 和 Channel 变量?make 和 newmake 和 new 都是 Golang 的内置函数,作为用于内存分配的原语(Allocation Primitives),其功能相似,却有着本质的区别。new 用来分配内存,它的第一个参数是一个类型,不是一个值,返回值是一个指向为特定类型新分配的零值填充的内存空间的指针。它并不初始化内存,只是将其置零。// The new built-in function

2020-07-20 21:35:09 707

原创 Go 语言编程 — Context 上下文

目录文章目录目录Goroutine 的控制方式WaitGroupChannel + Select 通知ContextContextContext 的接口Context 的继承衍生Goroutine 的控制方式通常的,Goroutine 协程在启动之后就会 “自顾自” 的完成其任务,大部分情况是等待它自己结束。但实际上,我们常需要对 Goroutine 进行控制,继而完成复杂的并发需求。控制并发,有两种经典的方式,一种是 WaitGroup,另外一种就是 Context。WaitGroupWaitG

2020-07-19 22:10:53 649

原创 Go 语言编程 — panic 和 recover

目录文章目录目录defer,panic 和 recoverpanicrecoverdefer,panic 和 recoverGolang 中常规的错误处理方式是直接 return error 给调用者,再由调用者决定后续的程序逻辑,或捕获、或终止、或恢复。但对于一些无法恢复的错误,返回 error 也没有意义,此时可以考虑使用 panic(惊恐)语句,表示一种自动触发的错误。除了在代码中主动触发 panic,在程序运行的过程中也可能会因为出现某些错误而触发 panic,例如:数组越界。panic 会

2020-07-19 19:22:53 507

原创 Go 语言编程 — 并发 — 同步原语与锁

目录文章目录目录协程锁协程锁协程锁主要用于保证在执行 goroutine 的时候不阻塞 M。举例:任务 A 需要修改 Z,任务 B 也需要修改 Z。如果是串行系统,A 执行完了,再执行B,很简单。在并发系统中,因为 A,B 是并发执行的,所以就需要在操作 Z 的时候确保 A、B 保证串行化的机制。CO_LOCK{ // 处理逻辑}CO_UNLOCKA 要修改 Z,所以 A 加了协程锁。加锁之后,由于处理一些其他的逻辑,例如等待某些事件,又把 CPU 切到 M.g0 调度了

2020-07-19 18:42:51 466

原创 Go 语言编程 — defer 关键字

目录文章目录目录defer 关键字defer 的用途之一:释放资源defer 的用途之二:执行 recover(恢复)多个 defer 的执行顺序被 deferred 函数的参数在 defer 时确定被 defer 的函数可以读取和修改带名称的返回值defer 关键字go 用 defer(推迟)关键字来延迟执行指定的函数,比如:func a() int { defer b() return 0}函数 b() 发生在 return 0 之后,可见 defer 关键字会将指定的函数延迟到 re

2020-07-19 18:35:32 394

原创 Go 语言编程 — 内存分配

目录文章目录目录内存分配参考文档内存分配程序中的数据和变量都会被分配到程序所在的虚拟内存中,内存空间包含两个重要区域 — 栈区(Stack)和堆区(Heap)。函数调用的参数、返回值以及局部变量大都会被分配到栈上,这部分内存会由编译器进行管理。不同编程语言使用不同的方法管理堆区的内存,C++ 等编程语言会由开发者主动申请和释放内存,Go 以及 Java 等编程语言会由开发者和编译器共同管理,堆中的对象由内存分配器分配并由垃圾收集器回收。参考文档https://mp.weixin.qq.com/s

2020-07-19 00:50:03 450

原创 Go 语言编程 — GC 垃圾回收

目录文章目录目录GC常见的 GC 实现方式参考文档GCGC(Garbage Collection,垃圾回收)是一种自动内存管理的机制。相对于 C、C++ 以及 Rust 等编程语言使用手动的方式管理内存。当程序向操作系统申请的内存不再需要时,垃圾回收主动将其回收并供其他代码进行内存申请时候复用,或者将其归还给操作系统,这种针对内存级别资源的自动回收过程,即为垃圾回收。而负责垃圾回收的程序组件,即为垃圾回收器。一方面,程序员受益于 GC,无需操心、也不再需要对内存进行手动的申请和释放操作,GC 在程

2020-07-19 00:45:26 896

原创 Go 语言编程 — 并发 — GMP 调度模型

目录文章目录目录并发和并行如何交互?CSP 通信模型如何调度?MPG 调度模型用户级线程模型(多对一)内核级线程模型(一对一)两级线程模型(多对多)MPG 线程模型Go Runtime Scheduler使用 GODEBUG 查看 Go Runtime Scheduler 的状态信息并发和并行并发和并行的目的都是为了充分利用 CPU 的多核(多处理器)架构,但两者却有着本质的区别。并发:在同一时间段内,多条指令在 CPU 上执行。并行:在同一时刻内,多条指令在 CPU 上执行。并发程

2020-07-18 21:26:45 531

原创 Go 语言编程 — 并发 — Channel 通道

目录文章目录目录Channel通道缓冲区遍历通道与关闭通道Channelchannel(通道)是用来传递数据的一个数据结构。通道可用于两个 goroutine 之间通过传递一个指定类型的数值,以此来同步运行及通讯。操作符 <- 用于指定通道的方向,根据位置的不同表示发送或接收。如果未指定方向,则为双向通道。ch <- v // 把 v 发送到通道 chv := <-ch // 从 ch 接收数据并把值赋给 v使用 chan 关键字来定义一个通道变量:ch := m

2020-07-18 12:11:44 559

原创 Go 语言编程 — Profiling 性能分析

目录文章目录目录ProfilingruntimeMemStatGCpproftraceDEBUGProfilingGolang 提供了友好的工程化支持,其中之一就是 Profiling(分析)工具。例如:Golang 自带的 runtime 包,就可以轻松获取程序运行期间的各种内存或 CPU 的使用状态信息。runtimeMemStat查看内存使用情况:package mainimport ( "fmt" "runtime")func main() { var m runtim

2020-07-17 17:59:20 505

原创 5G NGC — 用户标识类型

目录文章目录目录唯一标识SUPIGPSIPEI临时唯一标识SUCI5G-GUTI唯一标识SUPISUPI(Subscription Permanent Identifier),类似 4G 的 IMSI,当前协议定义的格式主要有两种:取值 0 表示 IMSI。取值 1 表示 NAI(Network Access Identifier),如:SIP 地址。GPSIGPSI(Generic Public Subscription Identifier)是 DN 提供的用户标识,类似 4G 的

2020-07-17 15:38:07 1952

原创 5G 承载网 — 运营商承载网络演进

目录文章目录目录DCN 网163 网、169 网IP 专网IP-RAN 网PTN 网SPN智能融合城域网DCN 网DCN(Data Communication Network,数据通信网络)是承载运营商内部支撑系统的网络,网管之类的都走这个网。作为传送平面、控制平面、管理平面的内部以及三者之间的通信网络。DCN 是一种支持网络七层协议栈中 L1-L3 功能的网络,主要承载管理信息和分布式信令消息。163 网、169 网163(中国公用计算机互联网)网和 169(中国公众多媒体通信网)网是 90 年

2020-07-14 20:58:15 1412

原创 计算机软件专利申请研究

目录文章目录目录前言计算机软件专利的效用计算机软件专利保护的特点计算机软件专利申请的规定如何对计算机软件进行专利申请如何进行专利申请文件的准备说明书部分权利要求书部分前言本文为《计算机科学专利申请》论文的学习记录。主要讨论的是:“如何构思一项涉及计算机软件的发明技术方案和撰写权利要求书、说明书,使之符合专利申请必须具有专利法所称的新颖性、创造性和实用性三大条件,避免被排除在专利授权范围之外?” 的问题。计算机软件专利的效用计算机软件作为人类创造性的智慧成果,可以为其进行专利申请。作为一种最强的

2020-07-13 21:47:17 2271

原创 OpenNESS AF 模块代码梳理

目录文章目录目录前言调试环境启动 NEF启动 AF代码分析ngc/cmd/af/main.go/ngc/pkg/af/af.gongc/pkg/af/af_routers.gongc/pkg/af/traffic_influence_subscription_get_all.gongc/pkg/af/api_traffic_influence_subscription_get_all.go最后前言本篇内容为代码分析,不包括部署步骤。请先按照 OpenNESS 官方文档完成部署,然后才能看得明白下述的内

2020-07-13 19:20:16 722

原创 VIM — vim-go

目录文章目录目录前文列表vim-go前文列表《快速搭建你的编程环境:VIM + dotfiles》vim-govim-go 是当前使用最为广泛的 Golang VIM 插件。利用 gmarik/Vundle.vim 插件管理器即可安装。vimrcPlugin 'fatih/vim-go'3执行 :PluginInstall 自动安装。安装好 vim-go 之后,执行 ::GoInstallBinaries 开始交互式安装下列辅助工具:gocode:自动补全工具,装了 YouCompl

2020-07-12 13:00:11 1267

原创 Go 语言编程 — 编码规范指南

目录文章目录目录一个项目使用单个 GOPATHimport 规范代码风格一个项目使用单个 GOPATHGOPATH 指定了 Golang 项目的 Workspace,Golang 是支持多 GOPATH 的,也就是说:在同一个 Golang 项目中可以同时拥有多个运行环境。多 GOPATH 支持带来了一定的灵活度,但也会导致某些副作用,例如:软件版本的一致性。诸如 Etcd 或 Camlistore 这样的大项目通常会使用 godep 类似的依赖包管理工具,将所有依赖都保存到某个目录中。也就是说,这

2020-07-11 22:11:43 823

原创 Go 语言编程 — go 常用指令

目录文章目录目录go 指令go run 试运行go build 编译go install 安装go get 下载并安装go test 测试go env 环境变量go fmt 格式化源代码go 指令Golang 本身就是一个程序,包含了编译器以及一些辅助指令。go run 试运行go run 会快速执行指定的 .go 源码文件,不会生成二进制文件,常用于试运行代码。go build 编译go build 用于便于 Golang 程序的源码,生成二进制文件。go install 安装当我们编写

2020-07-11 18:13:07 1184

原创 Go 语言编程 — 项目布局规范

目录文章目录目录项目布局(Project Layout)程序核心代码目录/cmd(Command)/internal/pkg(Package)/vendor常规目录/configs/init/scripts/build/deployments/testService(服务端)应用目录/apiWeb 应用目录/web其他目录/docs/tools/examples/third_party/githooks/assetswebsite不建议使用的目录/src项目布局(Project Layout)注意,本

2020-07-11 16:12:48 1196

原创 互联网协议 — SCTP 流控制传输协议

目录文章目录目录SCTPSCTP 与 TCP 的区别端点(Endpoint)与多宿主(Multi-homing)偶联(Association)多流(Multi-streaming)SCTPSCTP(Stream Control Transmission Protocol,流控制传输协议)RFC 2960、RFC 3286、RFC 3309,是一个基于 IP 协议之上可靠的传输层协议。所谓 “可靠” 是相对于 “不可靠” 而言的:TCP/UDP 协议都不能完全满足在电信网中信令承载的要求。TCP 协

2020-07-10 17:57:47 3562

原创 Python 编程系列

目录文章目录目录入门进阶模块数据结构笔试集入门《Python 是一门怎样的语言》《Python_编程特色》《拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录》《送书福利| Python 完全自学手册》《MAC Pro 同时安装 Python2 和 Python3》《CentOS6.5 升级 Python 2.7 版本》《Setup Python 开发环境和IPython的基本使用》《IPython4_Notebook》《Python 基础知识储备》《Python 基础

2020-07-08 00:36:44 716

原创 C 语言编程系列

目录文章目录目录文章列表高级数据结构文章列表《C 家族程序设计语言发展史》《C 语言编程 — 基本语法》《C 语言编程 — 基本数据类型》《C 语言编程 — 变量与常量》《C 语言编程 — const 关键字》《C 语言编程 — 作用域和存储器》《C 语言编程 — 运算符》《C 语言编程 — 逻辑控制语句》《C 语言编程 — 函数》《C 语言编程 — 高级数据类型 — 指针》《C 语言编程 — 高级数据类型 — 数组》《C 语言编程 — 高级数据类型 — 字符串》《C 语言编程

2020-07-08 00:05:09 1137

原创 Go 语言编程 — 错误处理

目录文章目录目录异常处理异常处理Golang 通过内置的 error interface(错误接口数据类型)提供了非常简单的错误处理机制。error interface 的定义:type error interface { Error() string}在代码中,可以通过实现 error 接口类型来生成错误信息。函数通常在最后的返回值中返回错误信息。使用 errors.New 可返回一个错误信息:func Sqrt(f float64) (float64, error) {

2020-07-06 18:45:59 781

原创 Go 语言编程 — 并发 — Goroutine 协程

目录文章目录目录goroutinechannel通道缓冲区遍历通道与关闭通道goroutineGolang 原生支持并发,体现在 Golang 提供了 go 关键字。格式:go 函数名(形参列表)go 语句会直接开启一个新的运行期线程,即:goroutine。以一个不同的、新创建的 goroutine 来执行一个函数。goroutine 的本质是一个轻量级线程,goroutine 的调度由 Golang 运行时进行管理, 同一个程序中的所有 goroutine 共享同一个地址空间。packa

2020-07-06 18:29:22 673

原创 Go 语言编程 — 数据类型转换

目录文章目录目录数据类型转换数据类型转换类型转换用于将一种数据类型的变量转换为另外一种类型的变量。格式:type_name(expression)以下实例中将整型转化为浮点型,并计算结果,将结果赋值给浮点型变量:package mainimport "fmt"func main() { var sum int = 17 var count int = 5 var mean float32 mean = float32(sum) / float3

2020-07-06 18:02:17 527

原创 Go 语言编程 — 高级数据类型 — Interface、多态、Duck Typing 与泛式编程

目录文章目录目录接口接口接口是 Golang 提供的一种数据类型,使用 type 和 interface 关键字来声明。接口可以把所有的具有共性的方法(Method)集合在一起,任何其他类型只要实现了这些方法就是实现了这个接口。格式:/* 定义接口 */type interface_name interface { method_name1 [return_type] method_name2 [return_type] method_name3 [return_type]

2020-07-06 17:59:59 949

原创 Go 语言编程 — 高级数据类型 — Map 集合

目录文章目录目录集合定义 Mapdelete() 函数实现简单 HashMap集合集合(Map)是一种无序的键值对集合。通过 key 来快速检索数据,key 类似于索引,指向数据的值。可见,Map 数据类型类似于 Python 的字典数据类型,但封装程度较低。Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,所以我们无法决定它的返回顺序,这是因为 Map 是使用 HASH 表来实现的。定义 Map可以使用内建函数 make 也可以使用 map 关键字来定义 Ma

2020-07-06 17:49:55 477

原创 Go 语言编程 — 高级数据类型 — Slice 切片

目录文章目录目录切片空切片切片截取len() 和 cap() 函数append() 和 copy() 函数切片Golang 中,切片(Slice)是对数组的抽象。数组的长度是不可改变的,所以需要一种灵活,长度是不固定的 “数组”,可以追加元素。这就是切片数据类型,也称为 “动态数组”。可以声明一个未指定大小的数组来定义切片,切片不需要说明长度:var identifier []type// ors := []int {1, 2, 3}或使用 make() 函数来创建一个切片:var s

2020-07-06 15:04:13 539

原创 Go 语言编程 — 高级数据类型 — 结构体

目录文章目录目录结构体访问结构体成员向函数传递结构体结构体指针结构体Golang 中,结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体的定义使用了 type 和 struct 关键字。struct 关键字:定义一个新的数据类型,结构体中有一个或多个成员。type 关键字:设定了结构体的名称。结构体的格式如下:type struct_variable_type struct { member definition member definition ..

2020-07-06 14:25:23 752

原创 Go 语言编程 — 高级数据类型 — 指针

目录文章目录目录指针空指针双重指针向函数传递指针参数指针一个指针变量指向了一个值的内存地址。类似于变量和常量,在使用指针前需要声明、定义一个指针变量。格式:var var_name *var-type示例:var ip *int /* 指向整型*/var fp *float32 /* 指向浮点型 */指针使用流程:定义指针变量。为指针变量赋值。访问指针变量中指向地址的值。package mainimport "fmt"func main() {

2020-07-06 13:37:17 478

原创 Go 语言编程 — 高级数据类型 — 数组

目录文章目录目录数组数组

2020-07-06 12:17:55 495

原创 Go 语言编程 — 函数

目录文章目录目录定义一个函数形参列表值传递引用传递返回值回调函数闭包(Closure)函数方法函数定义一个函数函数声明需要指定函数的名称形参列表返回值列表函数名和形参列表一起构成函数签名。格式:func function_name([parameter list]) [return_types] { 函数体}示例:/* 函数返回两个数的最大值 */func max(num1, num2 int) int { /* 声明局部变量 */ var result in

2020-07-05 20:35:47 646

原创 Go 语言编程 — 逻辑控制语句

目录文章目录目录条件判断语句if/else 语句switch 语句fallthrough 语句type-switch 语句select 语句循环语句for 循环Range 迭代器循环控制语句条件判断语句if/else 语句示例:package mainimport "fmt"func main() { /* 局部变量定义 */ var a int = 100; /* 判断布尔表达式 */ if a < 20 { /* 如果条件为 true

2020-07-05 16:15:21 672

原创 Go 语言编程 — 运算符

目录文章目录目录运算符赋值运算符算术运算符逻辑运算符关系运算符位运算符指针运算符、取值运算符和取址运算符运算符优先级运算符Golang 内置的运算符包括:赋值运算符算术运算符逻辑运算符关系运算符位运算符其他运算符赋值运算符算术运算符注意:Golang 的自增,自减只能作为表达式使用,而不能用于赋值语句,例如:a++ // 这是允许的,等同于 a = a + 1a--a = a++ // 这是不允许的,会出现变异错误 syntax error: unexpected

2020-07-05 15:13:29 508

原创 Go 语言编程 — 变量与常量

目录文章目录目录变量(var)指定数据类型的变量声明根据初始化数值自动判定数据类型的变量定义变量(var)Golang 使用关键字 var 来声明一个变量。格式如下:var identifier type也可以一次声明多个变量:var identifier1, identifier2 type指定数据类型的变量声明与 C 语言一般,可以在一条语句中完成变量的声明、定义以及初始化。如果没有初始化,则变量默认为零值。示例:package mainimport "fmt"func

2020-07-05 12:19:50 639

原创 Go 语言编程 — 基本数据类型

目录文章目录目录Golang 的数据类型基本数据类型布尔型数字类型整型浮点型其他Golang 的数据类型基本数据类型布尔型truefalse数字类型整型int8:有符号 8 位整型,[-128, 127]uint8:无符号 8 位整型,[0, 255]int16:有符号 16 位整型,[-32768, 32767]uint16:无符号 16 位整型,[0, 65535]int32有符号 32 位整型,[-2147483648, 2147483647]uint32:无符号

2020-07-05 12:05:34 633

中国联通智能MEC技术白皮书.pdf

中国联通智能MEC技术白皮书.pdf

2020-04-30

5G 核心网关键技术和对业务的支撑.pdf

5G 核心网关键技术和对业务的支撑.pdf

2020-04-30

H3C_CAS安装指导V1.0.docx

H3C_CAS安装指导V1.0.docx

2017-02-15

范桂飓的留言板

发表于 2020-01-02 最后回复 2020-04-09

AWS与Openstack

发表于 2016-09-13 最后回复 2016-09-13

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除