摘要: docker的定义 Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。 Docker 使用 Google 公司推出的 Go 语言 阅读全文
posted @ 2021-08-19 23:42 daemon365 阅读(132) 评论(1) 推荐(0)
摘要: nginx是什么 nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件。 支持高并发,能支持几万并发连接 资源消耗少,在3万并发连接下开启10个nginx线程消耗的内存不到200M 可以做http反向代理和负载均衡 支持异步网络i/o事件模型epoll Tengine是由淘宝网发起的 阅读全文
posted @ 2021-08-19 23:40 daemon365 阅读(121) 评论(0) 推荐(0)
摘要: 常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent) cd 切换目录 touch 创建空文件 echo 创建带有内容的文件。 cat 查看文件内容 阅读全文
posted @ 2021-08-19 23:33 daemon365 阅读(94) 评论(0) 推荐(0)
摘要: 电脑:辅助人脑的工具 现在的人们几乎无时无刻都会碰电脑!不管是桌上型电脑(桌机)、笔记型电脑(笔电)、平板电脑、智慧型手机等等,这些东西都算是电脑。虽然接触的这么多,但是,你了解电脑里面的元件有什么吗?以桌机来说,电脑的机壳里面含有什么元件?不同的电脑可以应用在哪些工作?你生活周遭有哪些电器用品内部 阅读全文
posted @ 2021-08-19 17:48 daemon365 阅读(103) 评论(0) 推荐(0)
摘要: Linux基础系统优化 Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令。 ifconfig 查询、设置网卡和ip等参数 ifup,ifdown 脚本命令,更简单的方式启动关闭网络 ip 符合指令,直接修改上述功能 在我们刚装好lin 阅读全文
posted @ 2021-08-19 17:40 daemon365 阅读(146) 评论(0) 推荐(0)
摘要: Gin框架介绍 基于httprouter开发的Web框架。 中文文档,齐全。 简单易用的轻量级框架。 Gin框架安装 go get -u github.com/gin-gonic/gin 实例: package main import ( "fmt" "github.com/gin-gonic/gi 阅读全文
posted @ 2021-08-19 17:25 daemon365 阅读(649) 评论(0) 推荐(1)
摘要: 什么是soup 类似python中beatifulsoup,用于提取html标签提取,多用于爬虫。它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航,搜索以及修改剖析树的操作。利用它我们不在需要编写正则表达式就可以方便的实现网页信息的提取。soup是一个小型的网 阅读全文
posted @ 2021-08-19 17:22 daemon365 阅读(950) 评论(0) 推荐(0)
摘要: make make是一个构建自动化工具,会在当前目录下寻找Makefile或makefile文件。如果存在相应的文件,它就会依据其中定义好的规则完成构建任务。 makefile 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作, 阅读全文
posted @ 2021-08-19 17:21 daemon365 阅读(78) 评论(0) 推荐(0)
摘要: 摘要 日志在整个工程实践中的重要性不言而喻,在选择日志组件的时候也有多方面的考量。详细、正确和及时的反馈是必不可少的,但是整个性能表现是否也是必要考虑的点呢?在长期的实践中发现有的日志组件对于计算资源的消耗十分巨大,这将导致整个服务成本的居高不下。此文从设计原理深度分析了 zap 的设计与实现上的权 阅读全文
posted @ 2021-08-19 17:20 daemon365 阅读(736) 评论(0) 推荐(0)
摘要: etcd是近几年比较火热的一个开源的、分布式的键值对数据存储系统,提供共享配置、服务的注册和发现,本文主要介绍etcd的安装和使用。 etcd介绍 etcd是使用Go语言开发的一个开源的、高可用的分布式key-value存储系统,可以用于配置共享和服务的注册和发现。 类似项目有zookeeper和c 阅读全文
posted @ 2021-08-19 17:16 daemon365 阅读(308) 评论(0) 推荐(0)
摘要: 安装 go get github.com/spf13/viper viper支持的功能 1、可以设置默认值 2、可以加载多种格式的配置文件,如JSON,TOML,YAML,HCL和Java属性配置文件 3、应用程序运行过程中,保持监听和重新读取配置文件 4、可以从环境变量读取配置 5、可以从远程配置 阅读全文
posted @ 2021-08-19 17:13 daemon365 阅读(550) 评论(0) 推荐(0)
摘要: 什么是JWT? JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下。 JWT作用? JWT就是一种基于Token的轻量级认证模式,服务端认证通过后,会生成一个JSON对象,经过签名后得 阅读全文
posted @ 2021-08-19 17:12 daemon365 阅读(899) 评论(0) 推荐(0)
摘要: 安装 下载第三方包: go get -u github.com/go-redis/redis/v9 连接 // 定义一个rdis客户端 var redisdb *redis.Client // 初始化 func initClient() (err error) { redisdb = redis.N 阅读全文
posted @ 2021-08-19 17:09 daemon365 阅读(188) 评论(0) 推荐(0)
摘要: 在项目中我们通常可能会使用database/sql连接MySQL数据库。本文借助使用sqlx实现批量插入数据的例子,介绍了sqlx中可能被你忽视了的sqlx.In和DB.NamedExec方法。 sqlx介绍 在项目中我们通常可能会使用database/sql连接MySQL数据库。sqlx可以认为是 阅读全文
posted @ 2021-08-19 17:04 daemon365 阅读(284) 评论(0) 推荐(0)
摘要: go module是 Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module将是Go语言默认的依赖管理工具。 GO111MODULE 要启用go module支持首先要设置环境变量GO111MODULE,通过它可以开启或关闭模块支持,它有三个可选值:off、on、 阅读全文
posted @ 2021-08-19 16:56 daemon365 阅读(383) 评论(0) 推荐(0)
摘要: html模板生成: html/template包实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出。它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用text/template包。 模板语法 {{.}} 模板语法都包含在{{和}}中间,其中{{.}}中 阅读全文
posted @ 2021-08-19 16:55 daemon365 阅读(1480) 评论(0) 推荐(0)
摘要: go context标准库 context包在Go1.7版本时加入到标准库中。其设计目标是给Golang提供一个标准接口来给其他任务发送取消信号和传递数据。其具体作用为: 可以通过context发送取消信号。 可以指定截止时间(Deadline),context在截止时间到期后自动发送取消信号。 可 阅读全文
posted @ 2021-08-19 16:54 daemon365 阅读(236) 评论(0) 推荐(0)
摘要: http协议 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 关于http(https)协议: https://www. 阅读全文
posted @ 2021-08-19 16:50 daemon365 阅读(208) 评论(0) 推荐(0)
摘要: HTTP协议是什么? HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 HTPP有多个版本,目前广泛使用的是 阅读全文
posted @ 2021-08-19 16:48 daemon365 阅读(166) 评论(0) 推荐(0)
摘要: fmt fmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。 向外输出 标准库fmt提供了以下几种输出相关函数。 Print Print系列函数会将内容输出到系统的标准输出,区别在于Print函数直接输出内容,Printf函数支持格式化输出字符 阅读全文
posted @ 2021-08-19 14:36 daemon365 阅读(103) 评论(0) 推荐(0)
摘要: 时间类型 time.Time类型表示时间。 func demo() { now := time.Now() //获取当前时间 fmt.Printf("Now:%v\n", now) // Now:2020-08-19 21:53:31.1633023 +0800 CST m=+0.003989401 阅读全文
posted @ 2021-08-19 14:36 daemon365 阅读(81) 评论(0) 推荐(0)
摘要: 这篇文章主要讲 map 的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白 map 底层原理。 我要说明的是,这里对 map 的基本用法涉及比较少,我相信可以通过阅读其他入门书籍了解。本文的内容比较深入,但是由于我画了各种图,我相信很容易看懂。 什么是 阅读全文
posted @ 2021-08-19 14:24 daemon365 阅读(336) 评论(0) 推荐(0)
摘要: Go的web工作原理 在Go中使用及其简单的代码即可开启一个web服务。如下: //开启web服务 func test(){ http.HandleFunc("/", sayHello) err := http.ListenAndServe(":9090",nil) if err!=nil { lo 阅读全文
posted @ 2021-08-19 14:11 daemon365 阅读(127) 评论(0) 推荐(0)
摘要: channel介绍 channel一个类型管道,通过它可以在goroutine之间发送和接收消息。它是Golang在语言层面提供的goroutine间的通信方式。 众所周知,Go依赖于称为CSP(Communicating Sequential Processes)的并发模型,通过Channel实现 阅读全文
posted @ 2021-08-19 14:10 daemon365 阅读(1243) 评论(0) 推荐(0)
摘要: 什么是channel channels 是一种类型安全的消息队列,充当两个 goroutine 之间的管道,将通过它同步的进行任意资源的交换。chan 控制 goroutines 交互的能力从而创建了 Go 同步机制。当创建的 chan 没有容量时,称为无缓冲通道。反过来,使用容量创建的 chan 阅读全文
posted @ 2021-08-19 14:04 daemon365 阅读(141) 评论(0) 推荐(0)
摘要: error定义 数据结构 go语言error是一普通的值,实现方式为简单一个接口。 // The error built-in interface type is the conventional interface for // representing an error condition, w 阅读全文
posted @ 2021-08-19 13:59 daemon365 阅读(1524) 评论(0) 推荐(0)
摘要: 垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的对象,让出存储器资源,无需程序员手动执行。 Golang中的垃圾回收主要应用三色标记法,GC过程和其他用户goroutine可并发运行,但需要一定时间的STW(stop the world 阅读全文
posted @ 2021-08-19 13:57 daemon365 阅读(306) 评论(0) 推荐(0)
摘要: 变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息。 值信息:程序运行过程中可动态变化的。 反射介绍 反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反 阅读全文
posted @ 2021-08-19 13:44 daemon365 阅读(219) 评论(0) 推荐(0)
摘要: 检测文件是否存在 //存在返回 true,不存在返回 false func fileIfExist(filename string) bool { _, err := os.Stat(filename) if nil != err { fmt.Println(filename, "is not ex 阅读全文
posted @ 2021-08-19 13:43 daemon365 阅读(143) 评论(0) 推荐(0)
摘要: go test go test命令是一个按照一定的约定和组织来测试代码的程序。在包目录内,所有以_test.go为后缀名的源文件在执行go build时不会被构建成包的一部分,它们是go test测试的一部分。 go test命令会遍历所有的*_test.go文件中符合上述命名规则的函数,生成一个临 阅读全文
posted @ 2021-08-19 13:42 daemon365 阅读(218) 评论(0) 推荐(0)
摘要: goroutine goroutine是Go并行设计的核心。goroutine说到底其实就是线程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据 阅读全文
posted @ 2021-08-19 13:23 daemon365 阅读(247) 评论(0) 推荐(0)
摘要: 包简介 任何包系统设计的目的都是为了简化大型程序的设计和维护工作,通过将一组相关的特性放进一个独立的单元以便于理解和更新,在每个单元更新的同时保持和程序中其它单元的相对独立性。这种模块化的特性允许每个包可以被其它的不同项目共享和重用,在项目范围内、甚至全球范围统一的分发和复用。 每个包一般都定义了一 阅读全文
posted @ 2021-08-19 13:21 daemon365 阅读(105) 评论(0) 推荐(0)
摘要: 接口的定义 接口类型是对其它类型行为的抽象和概括;因为接口类型不会和特定的实现细节绑定在一起,通过这种抽象的方式我们可以让我们的函数更加灵活和更具有适应能力。 很多面向对象的语言都有相似的接口概念,但Go语言中接口类型的独特之处在于它是满足隐式实现的。也就是说,我们没有必要对于给定的具体类型定义所有 阅读全文
posted @ 2021-08-19 13:19 daemon365 阅读(72) 评论(0) 推荐(0)
摘要: 方法声明 在函数声明时,在其名字之前放上一个变量,即是一个方法。这个附加的参数会将该函数附加到这种类型上,即相当于为这种类型定义了一个独占的方法。 package main import "fmt" type People struct { name string age uint8 } func 阅读全文
posted @ 2021-08-19 13:14 daemon365 阅读(79) 评论(0) 推荐(0)
摘要: 函数声明 函数声明包括函数名、形式参数列表、返回值列表(可省略)以及函数体。 func function-name(param...) (result...) { body } 形式参数列表描述了函数的参数名以及参数类型。这些参数作为局部变量,其值由参数调用者提供。返回值列表描述了函数返回值的变量名 阅读全文
posted @ 2021-08-19 13:12 daemon365 阅读(89) 评论(0) 推荐(0)
摘要: 数组 **数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。**因为数组的长度是固定的,因此在Go语言中很少直接使用数组。 数组的每个元素可以通过索引下标来访问,索引下标的范围是从0开始到数组长度减1的位置。内置的len函数将返回数组中元素的个数。 var a [3]i 阅读全文
posted @ 2021-08-19 13:10 daemon365 阅读(429) 评论(0) 推荐(0)
摘要: 整型 Go语言同时提供了有符号和无符号类型的整数运算。这里有int8、int16、int32和int64四种截然不同大小的有符号整数类型,分别对应8、16、32、64bit大小的有符号整数,与此对应的是uint8、uint16、uint32和uint64四种无符号整数类型。 Unicode字符run 阅读全文
posted @ 2021-08-19 13:05 daemon365 阅读(343) 评论(0) 推荐(0)
摘要: 命名 Go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名,都遵循一个简单的命名规则:一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线.大写字母和小写字母是不同的:heapSort和Heapsort是两个不同的名字. Go语言的关键字 阅读全文
posted @ 2021-08-19 10:21 daemon365 阅读(119) 评论(0) 推荐(0)
摘要: 什么是日志 所谓日志(Log)是指系统所指定对象的某些操作和其操作结果按时间有序的集合。log文件就是日志文件,log文件记录了系统和系统的用户之间交互的信息,是自动捕获人与系统终端之间交互的类型、内容或时间的数据收集方法。 日志是用来记录,用户操作,系统状态,错误信息等等内容的文件,是一个软件系统 阅读全文
posted @ 2021-08-19 09:57 daemon365 阅读(395) 评论(0) 推荐(0)
摘要: V2.0.4 Release Release v2.0.4 · go-kratos/kratos (github.com) 新的功能 proto-gen-http 工具在生产代码时如果 POST/PUT 接口没有配置 body,或 GET/DELETE 接口配置了 body 时,抛出警告信息 kra 阅读全文
posted @ 2021-08-19 09:54 daemon365 阅读(186) 评论(0) 推荐(0)