你真的会用go语言写单例模式吗?

最近在学习Golang,想着可以就以前的知识做一些串通,加上了解到go语言也是面向对象编程语言之后。在最近的开发过程中,我碰到一个问题,要用go语言实现单例模式。本着“天下知识,同根同源”(我瞎掰的~),我心想,这有什么难的,可是真正做起来,还是碰到了不少问题。  下面是我的经历:  1.我先是完成了我的第一版单例模式,就是非并发,最简单的一种,懒汉模式:var instance *singl
阅读本文

[日常] Go语言圣经-函数多返回值习题

Go语言圣经-函数多返回值1.在Go中,一个函数可以返回多个值2.许多标准库中的函数返回2个值,一个是期望得到的返回值,另一个是函数出错时的错误信息3.如果一个函数将所有的返回值都显示的变量名,那么该函数的return语句可以省略操作数。这称之为bare return。练习 5.5: 实现countWordsAndImages。(参考练习4.9如何分词)package main import (
阅读本文

go语言中make和new的区别

make用于内建类型(map、slice 和channel)的内存分配。new用于各种类型的内存分配。内建函数new本质上说跟其他语言中的同名函数功能一样:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。用Go语言的术语说,它返回了一个指针,指向新分配的类型T的零值。所以我们需要记住这一点:new返回指针。内建函数make(T, args)与new(T)有着不同的
阅读本文

go语言 7 并发编程

http://www.cnblogs.com/mazg/ 今天我们学习Go语言编程的第七章,并发编程。语言级别的支持并发编程是Go语言最大的优势和特色,所以这章是Go语言学习的重点和难点,当然内容也比较多。首先我们会介绍并发编程的相关概念,其次介绍Go语言中轻量级的线程,goroutine。最后学习goroutine之间的两种通信机制,一种是消息通信机制,channel。另外一种是共享内存的方式
阅读本文

Go语言 1入门

1.1 编译环境及开发工具1.1.1 Go语言编译器下载地址:http://liteide.org/cn/doc/install/由于Go语言支持Windows、mac和Linux等主流操作系统,所以我们需要根据操作系统选择不同的安装包文件。以win10 64位操作系统为例,选择的安装包文件为:go1.8.3.windows-amd64.msi。点击默认安装即可。接下来,配置环境变量GOPATH。
阅读本文

go语言 3 程序的流程控制

程序的流程控制主要包括三种不同的结构,分别是顺序结构、选择结构和循环结构。 顺序结构最为简单,程序执行时,按照语句的顺序自上而下依次执行。选择结构是根据条件表达式的结果选择执行某些语句。循环结构是重复执行执行某些语句。3.1 选择结构3.1.1 if语句的语法: // 1 if condition {     ... } // 2 if condition {     ... } else {
阅读本文

Go 学习笔记:标准库之 time 包

Go 有很多内置的标准库,里面封装了很多开发中会用到的一些函数,使用这些函数可以简化代码,提高开发效率。time 包就是其中之一,它里面封装了处理日期时间需要用到的一些功能。 今天因为要做一个功能,稍微了解了一下 time 包,官方文档,暂时先将这个功能里面需要用到的一些方法记录下来,以后碰到其他的知识再继续往这里添加。 需求是这样的,管理后台要做几个功能,分别为:按时间范围查询数据库、快速查昨天
阅读本文

go 语言 interface(接口 一)

1. 接口:  简单说接口就是包含一组方法的集合,这些方法描述了一类对象的行为特征。  1)比如接口中的方法是 fly() ,描述了鸟类的一个行为特征。  2)比如接口中的方法是sing(),描述了人类的一个行为特征。2.接口的好处从上面的介绍应该可以看出来,鸟类无论是麻雀、鹰、鸽子等都可以实现fly()这个方法,人类中无论中国人、美国人、英国人等都可以实现sing()这个方法。现在还不能看出来它
阅读本文

Elastic技术栈Beats日志收集工具filebeat的安装

filebeat是elk中logstash的go语言做的再优化版本,其功能在整个elk的架构中是起到替代logstash这个有点重的java程序在第一线收集信息的作用。https://www.elastic.co/cn/downloads 到这里下载各个系统版本都有;然后这里说一下用yum 主要是centos里的软件源来安装(所有elastic公司elk系列的都能用这个方式安装)sudo rpm
阅读本文

InfluxDB 基本认识

一、InfluxDB 简介  InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。类似的数据库有Elasticsearch、Graphite等。  三大特性:      时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等);      度量(Metrics):对实时大量数据进行计算;      事件(Event):支持任意的事件
阅读本文

go 函数基本语法及函数返回值

函数Go语言里面的核心设计,通过关键字func来声明func funcName(input type1, input2 type2) (output1 type1, output2 type2) { //logical code return value1, value2 } 基本语法1.语法//一般函数 func func_name(a int) { println(a)
阅读本文

go 语言指针

1.什么是指针?   众所周知变量是一种使用方便的占位符,用于引用计算机内存地址。普通变量存的就是值,也叫值类型。    指针是一个变量,其值是另一个变量的地址,即存储器位置的直接地址。一个指针变量可以指向任何一个值的内存地址。2.指针定义  var var_name *var-type :var_name 变量名字 * 号用于指定变量是作为一个特定类型的指针定义声明:  var ip  *
阅读本文

开源API测试工具 Hitchhiker v0.7更新 - Schedule的对比diff

Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试Api。详细介绍请看: http://doc.hitchhiker-api.com/cn/introduction.html在线体验: http://www.hitchhiker-api.com/, 可以
阅读本文

编译器发展

1,GNU 先看看wiki百科上的官方说明:“GNU,名称来自Gnu‘s Not Unix“的缩写,一个类UNIX的操作系统,由GNU计划推动,目标在于创建一个完全兼容于UNIX的自由软件环境。”由于当时UNIX系统是商业软件,是收费的,而且有一部分源码是没有开放的,所以在1983年,理查德·斯托曼提出GNU计划,希望发展出一套完整的开放源代码操作系统来取代Unix,计划中的操作系统,名为GNU。
阅读本文

类似于xml的一种数据传输格式protobuf

1、Protobuf 简介Protocol Buffer是google 的一种数据交换的格式,已经在Github开源,目前最新版本是3.1.0。它独立于语言,独立于平台。google 提供了多种语言的实现:Java、C#、C++、Go 和 Python,Objective-C,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 XML 进行数据交换快许多。可以把它用于分
阅读本文

业务监控平台

Prometheus是什么 Prometheus(普罗米修斯)是一个名字非常酷的开源监控系统。 它支持多维度的指标数据模型,服务端通过HTTP协议定时拉取数据后,通过灵活的查询语言,实现监控的目的。  如上图,客户端记录相关指标数据,对外提供查询接口。Prometheus服务端通过服务器发现机制找到客户端,并定时抓取存储为时间序列数据。最后通过Grafana等图表工具集成展示。 Prometheu
阅读本文

标准库 svc—程序及服务控制

对于程序及服务的控制,本质上而言就是正确的启动,并可控的停止或退出。在go语言中,其实就是程序安全退出、服务控制两个方面。核心在于系统信号获取、Go Concurrency Patterns、以及基本的代码封装程序安全退出执行代码非安全写法在代码部署后,我们可能因为服务配置发生变化或其他各种原因,需要将服务停止或者重启。通常就是for循环阻塞,运行代码,然后通过control+C或者kill来强制
阅读本文

go 语言 链表 的增删改查

上一篇写了如何来生成链表,这一篇介绍链表的基本操作。1.求表长type Teacher struct{ //定义链表类型 Name string Age int Next *Teacher } func printList(h *Teacher){ //循环打印每个元素 for h != nil{ fmt.Printf(“Name:%v Age:%vn“,h.Name,h.Age)
阅读本文

Docker Stack 部署web集群

Docker越来越成熟,功能也越来越强大。使用Dokcer Stack做服务集群也是非常的方便,docker 自己就提供了负载功能,感觉很方便,就想给大家分享一下,做一个简单的教程。环境  我是用了两台centos7的虚拟机来做这个教程他们的ip分别是主服务器:192.168.0.105 // 也是私有仓库服务器 服务器2: 192.168.0.49    这篇帖子中所有的代码 githu
阅读本文

前端基础之BOM和DOM

核心知识点:1.BOM(浏览器窗口对象模型) DOM(文本对象模型)2.window对象是客户端JavaScript最高层对象之一,属于全局对象,一般书写可以省略3.window对象常用的方法  (1)窗口对象方法  (2)子对象方法    a.navigator对象(一般用于读取浏览器信息)    b.screen对象    c.history对象(forward back go)    d.l
阅读本文