使用 Makefile 构建指令集

使用 Makefile 构建指令集 make 是一个历史悠久的构建工具,通过配置 Makefile 文件就可以很方便的使用你自己自定义的各种指令集,且与具体的编程语言无关。例如配置如下的 Makefile : run dev: NODE_ENV=development nodemon server.js 这样当你在命令行执行 make run dev 时其实就会执行 NODE_ENV=development nodemon server.js 指令。 使用 Makefile 构建指令集可以很大的...阅读全文

Segmentfault 2019-12-15 16:32:38 rife

《Go 语言程序设计》读书笔记 (一)基础类型和复合类型

前言 最近在读《Go 语言程序设计》这本书想通过看书巩固一下自己的基础知识,把已经积累的点通过看书学习再编织成一个网,这样看别人写的优秀代码时才能更好理解。当初工作中需要使用 Go开发项目时看了网上不少教程,比如 uknown 翻译的《the way to go》看完基本上每次使用遇到不会的时候还会再去翻阅,这次把书中的重点还有一些平时容易忽视的Go语言中各种内部结构(类型、函数、方法)的一些行为整理成读书笔记。 因为《Go 语言程序设计》不是针对初学者的,所以我只摘选最重要的部分并适当补充和调...阅读全文

Segmentfault 2019-12-15 16:32:38 KevinYan

04Gin源码解读

简介 内置中间件的实现 recovery auth logger errors 总结 简介 Gin 源码解读, 基于 v1.5.0 版本. 内置中间件的实现 前面已经研究过中间件的原理了, 这次来看一下内置的中间件是如何实现的. recovery // Recovery returns a middleware that recovers from any panics and writes a 500 if there was one. func Recovery() HandlerFunc ...阅读全文

Segmentfault 2019-12-15 16:32:38 帅气猫咪

【golang系统编程】打开文件使用的flags参数

这篇主要是关于参数的笔记,没什么干货 open的flags主要分为一下几种 t1:文件访问模式标志,不能同时使用只能指定其中一种 t2:文件创建标志 t3:已打开文件的状态标志 标志 用途 统一UNIX规范版本 类型 O_RDONLY 以只读方式打开 v3 t1 O_WRONLY 以只写方式打开 v3 t1 O_RDWR 以读写方式打开 v3 t1 O_CLOEXEC 设置close-on-exec标志 v4 t2 O_CREAT 若文件不存在则创建之 v3 t2 O_DIRECT 无缓冲的输入...阅读全文

Segmentfault 2019-12-15 16:32:37 geange

Golang学习笔记-flag

使用flag包可以用来解析命令行参数,flag.TypeVar()用于定义参数并绑定到指定变量,flag.Type()用于定义参数并绑定到返回的指针,定义时可以指定参数名称,默认值,使用说明。定义完参数后调用flag.Parse()进行解析,flag.PrintDefaults()用于打印所有已定义参数的默认值和使用说明。 命令行参数的语法有如下三种形式,其中前面的减号可以是两个,整数类型可以是十进制,十六进制,八进制,负数,bool类型可以是1, 0, t, f, true, false, T...阅读全文

简书 2019-12-15 01:32:44 土豆吞噬者

go 代码依赖管理工具mod使用

什么是go mod Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。类似于php的composer,java的maven; Go.mod其实就是一个Modules,关于Modules的官方定义为: Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。 Modules和传统的...阅读全文

关于 Python_你一定没读过的8个技巧

介绍 Python 功能和小技巧的文章网上有无数篇,比如变量解压缩,partial 偏函数,枚举可迭代对象... 但关于 Python 我们能说的还有很多。所以今天我将向大家展示一些我知道和有使用过的特性,这些特性在其它文章或博客中很少被提及:### 消毒字符串输入对用户输入内容进行消毒几乎适用于你写的每一个程序。通常来说转换字符大小写的操作就足够了,有时候用 Regex 正则表达式就能完成,但对于比较复杂的情况,我们有更好的办法:```user_input = "This\nstring ha...阅读全文

简书 2019-12-14 19:32:40 是程序员吖

第二十七章:Go语言与RPC

1. RPC 概述 RPC 是Remote Procedure Call Protocol 的简写,其中文意思是远程过程调用协议 ,就是通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC将本地调用变为远程服务器上调用,这为系统处理能力和吞吐量带来了更大的提升,在OSI网络通信模型中RPC跨越了传输层和应用层. 我们通俗的理解就是像调用本地函数一样区调用远程的函数,实现函数调用模式的网络化.那么这个远程到底是多远,既可以是物理上的远程也可以是逻辑上的远程. 因为PRC的这种...阅读全文

简书 2019-12-14 19:32:40 captain89

golang goroutine

package main import ( "fmt" "sync" "time" ) /* WaitGroup用于等待一组线程的结束。父线程调用Add方法来设定应等待的线程的数量。每个被等待的线程在结束时应调用Done方法。 同时,主线程里可以调用Wait方法阻塞至所有线程结束。 */ var wg sync.WaitGroup func test(i int){ fmt.Println("test func...", i) time.Sleep(time.Second) // 表示gorou...阅读全文

简书 2019-12-14 13:32:41 就超棒

Go教程第八篇:Array和Slice

Array和Slice 欢迎来到《Golang系列教程》的第八篇,在这篇教程中,我们将处理Go中的Array和Slice。 Array 数组是同一类型的元素的集合,比如,5,8,9,79,76是一组整型,他们就可以组成一个数组。在Go中不同类型的值不允许放入到同一个数组中。 数组声明 数组声明: [n]T n表明了数组元素的个数,T表明的是元素的数据类型。另外,元素个数n也是类型的一部分(这点我们会在稍后讲解)。Go提供了多种声明数组的方式,我们来一个个看下。 package main impo...阅读全文

简书 2019-12-14 13:32:40 Tesfaye

Go 语言圣经-习题汇总(Go 程序设计语言/The Go Programming Language)

本文针对 Go 语言圣经 - 《Go 程序设计语言/The Go Programming Language》的所有习题进行筛选去重后,选取了一些比较典型的案例(80%以上)进行解析解答,分为两个版本,分别适合有原书和没有原书的童鞋进行学习巩固,本文将持续更新。 原书版 第一章:入门 1.1:修改 echo 程序输出 os.Args[0],即命令的名称。 1.2:修改 echo 程序,输出参数的索引和值,每行一个。 1.3:尝试测量可能低效的程序和使用 strings.Join 的程序在执行时间上...阅读全文

Segmentfault 2019-12-15 16:32:37 shadows

云原生的不同解释及正确含义

云原生的解释可以说五花八门,本文从不同角度探讨云原生的内涵以及如何从不同维度准确理解它的含义。 云原生起源 网上有些文章提到云原生是“Pivotal公司的Matt Stine于2013年首次提出云原生(CloudNative)的概念”。我搜索了英文“CloudNative”,阅读了首页的所有文章,里面没有一篇提到“Matt Stine首次提出云原生”,但它们每一篇都提到了“云原生计算基金会”的定义。“Matt Stine”确实写了一本书,叫《迁移到云原生架构》,他以前确实在Pivotal公司工作...阅读全文

Segmentfault 2019-12-15 16:32:36 倚天码农

【golang系统编程】通用IO模型

所有执行I/O操作的系统调用,都使用一个非负整数(文件描述符)来描述打开的文件(文件、管道、socket、终端、设备)。 常见的3种文件描述符: 文件描述符 用途 POSIX名称 stdio流 0 标准输入 STDIN_FILENO stdin 1 标准输出 STDOUT_FILENO stdout 2 标准错误 STDERR_FILENO stderr 通用IO模型的4个系统调用 下面的四个系统调用为c语言的形式 fd = open(pathname, flags, mode):pathnam...阅读全文

Segmentfault 2019-12-15 16:32:36 geange

一行命令实现mysql转go struct

Githubd地址 中文文档 | DOCUMENT okcli 可以将指定数据表生成为对应的model文件,目前支持将列名、数据类型、默认值、注释带入指定model中,就像如下文件: import "time" type ( Student struct { Id int32 `db:"id"` Name string `db:"name"` // the student's name Gender int8 `db:"gender"` // the student's gender,0-mal...阅读全文

Segmentfault 2019-12-15 16:32:34 Keson

golang应用快速搭建框架jotnar

jotnar 是一个golang项目快速搭建的框架,它本身是集成其它常用的框架,以达到快速开发的目的 Github项目地址 安装 go get -u github.com/paulyung541/jotnar 初始化 项目里经常会使用命令行来初始化,或者是使用配置文件。我们每新开一些项目,都会用到这些基础的功能,但是每次都去写,难免会枯燥,也不利于项目集成。使用jotnar则将这些烦琐的操作集成进来,能够非常快速地搭建一个项目 配置初始化 将命令行传参或者配置文件的设置加载到内存中,并在任何地方...阅读全文

Segmentfault 2019-12-15 16:32:34 Paul

golang mail 实现ssl发送邮件

由于我们使用的阿里云服务器不能telnet 25端口,发送ssl时候感觉很蹩脚,就自己写了一个go mail 发送1、文档结构2、main.go// main.go package main import ( "flag" "fmt" "io/ioutil" "log" "net/smtp" "os" "sslmail/mymail" "strings" ) func SendMail(fromuser, password, subject, host, port, bodyfile, body...阅读全文

51CTO博客 2019-12-13 10:58:40 xingzhehxiang

Go Web 编程之 程序结构

概述 一个典型的 Go Web 程序结构如下,摘自《Go Web 编程》: 客户端发送请求; 服务器中的多路复用器收到请求; 多路复用器根据请求的 URL 找到注册的处理器,将请求交由处理器处理; 处理器执行程序逻辑,必要时与数据库进行交互,得到处理结果; 处理器调用模板引擎将指定的模板和上一步得到的结果渲染成客户端可识别的数据格式(通常是 HTML); 最后将数据通过响应返回给客户端; 客户端拿到数据,执行对应的操作,如渲染出来呈现给用户。 本文介绍如何创建多路复用器,如何注册处理器,最后再简...阅读全文

掘金 2019年12月13日 darjun

Go Web 编程之 程序结构

概述 一个典型的 Go Web 程序结构如下,摘自《Go Web 编程》: 客户端发送请求; 服务器中的多路复用器收到请求; 多路复用器根据请求的 URL 找到注册的处理器,将请求交由处理器处理; 处理器执行程序逻辑,必要时与数据库进行交互,得到处理结果; 处理器调用模板引擎将指定的模板和上一步得到的结果渲染成客户端可识别的数据格式(通常是 HTML); 最后将数据通过响应返回给客户端; 客户端拿到数据,执行对应的操作,如渲染出来呈现给用户。 本文介绍如何创建多路复用器,如何注册处理器,最后再简...阅读全文

Segmentfault 2019-12-15 16:32:36 darjun