后端开发

  • Go语言分布式id生成器

    Go语言分布式id生成器

    时间:2020-02-28阅读:984

    有时我们需要能够⽣成类似 MySQL 自增 ID 这样不断增大,同时又不会重复的 ID。以支持业务中的⾼并发场景。比较典型的是电商促销时短时间内会有大量的订单涌入到系统,比如每秒...

  • 部署Go语言程序到Linux服务器

    部署Go语言程序到Linux服务器

    时间:2020-02-28阅读:984

    通过前面的学习相信大家对Go语言已经有了一定的了解,平时我们都是在本地进行开发调试访问的。那要怎么打包到服务器上呢?下面通过一个简单的实例来给大家介绍一下如何把我们写...

  • Go语言垃圾回收

    Go语言垃圾回收

    时间:2020-02-28阅读:984

    Go语言中使用的垃圾回收使用的是标记清扫算法。进行垃圾回收时会 stoptheworld。不过在Go语言 1.3 版本中,实现了精确的垃圾回收和并行的垃圾回收,大大地提高了垃圾回收的速度...

  • Go语言哈希函数

    Go语言哈希函数

    时间:2020-02-28阅读:984

    Go语言中提供了 MD5、SHA-1 等几种哈希函数,下面我们用例子做一个介绍,代码如下所示。


    package main

    import (
    "crypto/md5"
    "crypto/sha1"
    "fmt"
    )

    func mai...

  • Go语言与C/C++进行交互

    Go语言与C/C++进行交互

    时间:2020-02-28阅读:984

    Go语言是类C的语言,与C语言有着千丝万缕的联系,在Go语言的代码中可以直接调用C语言代码,但不支持直接调用 C++。



    Go 调用 C/C++ 的方式:



    C:直接调用 C API;

    C++:通过实现一...

  • Go语言实现RSA和AES加解密

    Go语言实现RSA和AES加解密

    时间:2020-02-28阅读:984

    密码学里目前有两大经典算法,一个是对称加解密,其中具有代表性的是 AES 加解密;另一个是非对称加解密,其中具有代表性的是 RSA 加解密。这里就以这两个经典算法为例,简单介绍一下...

  • Go语言加密通信

    Go语言加密通信

    时间:2020-02-28阅读:984

    一般的 HTTPS 是基于 SSL(Secure Sockets Layer)协议。SSL 是网景公司开发的位于 TCP 与 HTTP 之间的透明安全协议,通过 SSL,可以把 HTTP 包数据以非对称加密的形式往返于浏览器...

  • Go语言使用select切换协程

    Go语言使用select切换协程

    时间:2020-02-28阅读:984

    从不同的并发执行的协程中获取值可以通过关键字 select 来完成,它和 switch 控制语句非常相似也被称作通信开关;它的行为像是“你准备好了吗”的轮询机制;select 监...

  • Go语言map的多键索引——多个数值条件可以同时查询

    Go语言map的多键索引——多个数值条件可以同时查询

    时间:2020-02-28阅读:984

    在大多数的编程语言中,映射容器的键必须以单一值存在。这种映射方法经常被用在诸如信息检索上,如根据通讯簿的名字进行检索。但随着查询条件越来越复杂,检索也会变得越发困难。...

  • Go语言内存管理简述

    Go语言内存管理简述

    时间:2020-02-28阅读:984

    内存管理是非常重要的一个话题。关于编程语言是否应该支持垃圾回收就有个搞笑的争论,一派人认为,内存管理太重要了,而手动管理麻烦且容易出错,所以我们应该交给机器去管理。另一...

  • Go语言文件读写

    Go语言文件读写

    时间:2020-02-28阅读:984

    本节将通过示例来为大家介绍Go语言中文件读写的相关操作。


    读文件
    在Go语言中,文件是使用指向 os.File 类型的指针来表示的,也叫做文件句柄。在前面章节使用到过标准输入 os...

  • Go语言反射——性能和灵活性的双刃剑

    Go语言反射——性能和灵活性的双刃剑

    时间:2020-02-28阅读:984

    现在的一些流行设计思想需要建立在反射基础上,如控制反转(Inversion Of Control,IOC)和依赖注入(Dependency Injection,DI)。Go语言中非常有名的 Web 框架 martini(https://github.c...

  • Json数据编码和解码

    Json数据编码和解码

    时间:2020-02-28阅读:984

    数据结构要在网络中传输或保存到文件,就必须对其编码和解码;目前存在很多编码格式:JSON,XML,gob,Google 缓冲协议等等。Go语言支持所有这些编码格式。



    结构可能包含二进制数据,...

  • Go语言接口的nil判断

    Go语言接口的nil判断

    时间:2020-02-28阅读:984

    nil 在 Go语言中只能被赋值给指针和接口。接口在底层的实现有两个部分:type 和 data。在源码中,显式地将 nil 赋值给接口时,接口的 type 和 data 都将为 nil。此时,接口与 nil...

  • goroutine(Go语言并发)如何使用才更加高效?

    goroutine(Go语言并发)如何使用才更加高效?

    时间:2020-02-28阅读:984

    Go语言原生支持并发是被众人津津乐道的特性。goroutine 早期是 Inferno 操作系统的一个试验性特性,而现在这个特性与操作系统一起,将开发变得越来越简单。



    很多刚开始使用G...

  • go test命令(Go语言测试命令)完全攻略

    go test命令(Go语言测试命令)完全攻略

    时间:2020-02-28阅读:984

    Go语言拥有一套单元测试和性能测试系统,仅需要添加很少的代码就可以快速测试一段需求代码。




    go test 命令,会自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用...

  • go pprof命令(Go语言性能分析命令)完全攻略

    go pprof命令(Go语言性能分析命令)完全攻略

    时间:2020-02-28阅读:984

    Go语言工具链中的 go pprof 可以帮助开发者快速分析及定位各种性能问题,如 CPU 消耗、内存分配及阻塞分析。



    性能分析首先需要使用 runtime.pprof 包嵌入到待分析程序的入...

  • go get命令——一键获取代码、编译并安装

    go get命令——一键获取代码、编译并安装

    时间:2020-02-28阅读:984

    go get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装。整个过程就像安装一个 App 一样简单。



    这个命令可以动态获取远程代码包,目前...

  • go generate命令——在编译前自动化生成某类代码

    go generate命令——在编译前自动化生成某类代码

    时间:2020-02-28阅读:984

    go generate命令是在Go语言 1.4 版本里面新添加的一个命令,当运行该命令时,它将扫描与当前包相关的源代码文件,找出所有包含//go:generate的特殊注释,提取并执行该特殊注释后面...

  • go install命令——编译并安装

    go install命令——编译并安装

    时间:2020-02-28阅读:984

    go install 命令的功能和前面一节《go build命令》中介绍的 go build 命令类似,附加参数绝大多数都可以与 go build 通用。go install 只是将编译的中间文件放在 GOPATH 的 p...

  • go run命令——编译并运行

    go run命令——编译并运行

    时间:2020-02-28阅读:984

    Python 或者 Lua 语言可以在不输出二进制的情况下,将代码使用虚拟机直接执行。Go语言虽然不使用虚拟机,但可使用 go run 指令达到同样的效果。



    go run 命令会编译源码,并且...

  • go fmt命令——格式化代码文件

    go fmt命令——格式化代码文件

    时间:2020-02-28阅读:984

    对于一门编程语言来说,代码格式化是最容易引起争议的一个问题,不同的开发者可能会有不同的编码风格和习惯,但是如果所有开发者都能使用同一种格式来编写代码,那么开发者就可以将...

  • go build命令(go语言编译命令)完全攻略

    go build命令(go语言编译命令)完全攻略

    时间:2020-02-28阅读:984

    Go语言的编译速度非常快。Go 1.9 版本后默认利用Go语言的并发特性进行函数粒度的并发编译。



    Go语言的程序编写基本以源码方式,无论是自己的代码还是第三方代码,并且以 GOPA...

  • go clean命令——清除编译文件

    go clean命令——清除编译文件

    时间:2020-02-28阅读:984

    Go语言中go clean命令可以移除当前源码包和关联源码包里面编译生成的文件,这些文件包括以下几种:


    执行go build命令时在当前目录下生成的与包名或者 Go 源码文件同名的可执...

  • Go语言网络爬虫分析器接口

    Go语言网络爬虫分析器接口

    时间:2020-02-28阅读:984

    分析器的接口包含两个额外的方法 RespParsers 和 Analyze,其中前者会返回当前分析器使用的 HTTP 响应解析函数(以下简称解析函数)的列表因此,分析器的实现类型有用于存储此列表...