【Golang小知识】new与make的区别

定义 func new(Type) *Type func make(t Type, size ...IntegerType) Type 其中Type代表某一个数据类型。 区别 1.返回值 从定义中可以看出,new返回的是指向Type的指针。make直接返回的是Type类型值。 2.入参 new只有一个Type参数,Type可以是任意类型数据。make可以有多个参数,其中第一个参数与new的参数相同,但是只能是slice,map,或者chan中的一种。对于不同类型,size参数说明如下: 对于sl...阅读全文

Segmentfault 2019-11-17 20:02:39 moonbamboo

聊聊 Go 语言中的字符表示与字符串遍历

和其他语言不同,在 Go 语言中没有字符类型,字符只是整数的特殊用例。 为什么说字符只是整数的特殊用例呢?因为在 Go 中,用于表示字符的 byte 和 rune 类型都是整型的别名。在 Go 的源码中我们可以看到: // byte is an alias for uint8 and is equivalent to uint8 in all ways. It is // used, by convention, to distinguish byte values from 8-bit uns...阅读全文

掘金 2019年11月17日 江五渣

Java程序员Go语言入门指南

为什么是Go语言 类C的语法,这意味着Java、C#、JavaScript程序员能很快的上手 有自己的垃圾回收机制 跨平台、编译即可执行无需安装依赖环境 支持反射 Go语言简介 Go 语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。Go 是非常年轻的一门语言,它的主要目标是“兼具Python等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性”。 数据类型 数据类型 说明 bool 布尔 string 字符串 int uint8,uint16,uint32...阅读全文

掘金 2019年11月16日 大猫猫酱

如何在Go中使用切片容量和长度

来做一个快速测验-以下代码输出什么? vals := make([]int, 5) for i := 0; i < 5; i++ { vals = append(vals, i) } fmt.Println(vals) 复制代码Run it on the Go Playground → play.golang.org/p/7PgUqBdZ6… 如果猜到了[0 0 0 0 0 0 1 2 3 4],那么你是正确的。 等一下为什么不是[0 1 2 3 4]? 如果答错了,也不担心。从其他语言过渡到G...阅读全文

掘金 2019年11月17日 kevinyan

如何在Go中使用切片容量和长度

来做一个快速测验-以下代码输出什么? vals := make([]int, 5) for i := 0; i < 5; i++ { vals = append(vals, i) } fmt.Println(vals) Run it on the Go Playground → https://play.golang.org/p/7Pg... 如果猜到了[0 0 0 0 0 0 1 2 3 4],那么你是正确的。 等一下为什么不是[0 1 2 3 4]? 如果答错了,也不担心。从其他语言过渡到G...阅读全文

Segmentfault 2019-11-17 20:02:39 KevinYan

Java-100天知识进阶-JVM内存-知识铺(三)

知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停的来唤醒你记忆深处的知识点。 Java内存模型(JMM) JVM内存模式是JVM的内存分区 Java内存模式是一种虚拟机规范 1. Jvm内存按照运行时态及内存规范划分 Java内存区域 2.1 线程安全 2.1.1 程序计数器 2.1.2 虚拟机栈 2.1.3 本地方法 2.2 线程不安全 2.2.1 方法区 2.2.2 堆包含如下图 2.2.3 堆内存划分 总结: 程序计算器是唯一不会 OOM区 堆是gc的主...阅读全文

Segmentfault 2019-11-17 20:02:38 知识铺

Go 语言出现后,Java 还是最佳选择吗?

Java 平台一直以生态的繁荣著称,大量的类库、框架帮助开发者们快速搭建应用。而其中大部分 Java 框架类库都是基于线程池以及阻塞机制来服务并发的,主要原因包括: Java 语言在核心类库中提供了强大的并发能力,多线程应用可以获得不俗的性能;Java EE 的一些标准都是线程级阻塞的 (比如 JDBC);基于阻塞模式可以快速地开发应用。但如今,大量新生的异步框架和支持协程的语言 (如 Go) 的出现,在很多场景下操作系统的线程调度成为了性能的瓶颈。Java 也因此被质疑是否不再适应最新的云场景...阅读全文

51CTO博客 2019-11-16 22:00:15 飒拉阿依酱

价值超5万的撮合引擎:开篇

前言 自从有人在微信群里开价5万求购Golang版的撮合引擎之后,我就想自己开发一款,毕竟,以我的经验来说,开发个高性能的撮合引擎并没什么难度。 说干就干,于是,利用业余时间慢慢开发出了一款Golang版的高性能撮合引擎,前前后后花了大概一个月的时间。再想想自己好久没更新文章了,我的个人IP都已经生锈了,也应该发大招磨一磨了。因此决定,干脆就以连载的方式,分享下我是如何设计与实现这款价值超5万的撮合引擎的。 本来,想发成掘金小册,收点稿费,毕竟这是个具有很大商业价值的软件,但问了掘金的人员,他们...阅读全文

golang 服务诡异499、504网络故障排查

事故经过 排查 总结 事故经过 11-01 12:00 中午午饭期间,手机突然收到业务网关非200异常报警,平时也会有一些少量499或者网络抖动问题触发报警,但是很快就会恢复(目前配置的报警阈值是5%,阈值跟当时的采样窗口qps有直接关系)。 报警当时非200占比已经过10%并且在持续升高,根据历史规律应该很快就会恢复,我们稍微观察了几分钟(一边吃着很香的饺子一边看着手机),但是过了几分钟故障没有恢复而且占比升高了突破50%,故障逐渐升级(故障如果不在固定时间内解决会逐渐升级,故障群每次升级都会...阅读全文

51CTO博客 2019-11-16 19:45:27 王清培

Mac Golang开发环境搭建

由于需要进行go语言项目的开发,基于自己个人的Mac电脑做了一些开发环境的配置,本文旨在做一个简单的记录。 先介绍下本文的电脑配置: image.png 一、安装brew Homebrew有点类似于Linux操作系统中的apt-get(Ubuntu)、yum(yum),Mac的操作系统中使用它解决包依赖问题,套用官方的话来说: 让我们开始安装吧! 在命令行输入以下指令 fabric:~ fabric$ ruby -e "$(curl -fsSL https://raw.githubusercon...阅读全文

简书 2019-11-17 02:32:42 更多精彩内容Mac os安装g 等

Go依赖管理工具Go Module

Go Module 官方提供的不再依赖gopath的包管理工具 官方文档:https://github.com/golang/go/wiki/Modules 使用示例: 在(除gopath外)自己喜欢的任意目录下,新建项目 # 新建测试项目 ➜ Desktop mkdir gotest 在gotest目录下新建main.go文件,并导入iris包 package main import "github.com/kataras/iris" func main() { } 初始化一个新的 modul...阅读全文

简书 2019-11-17 02:32:41 更多精彩内容用go-modul 等

httprouter解读(continuing)

httprouter解读 核心思想 与defaultServeMux的实现区别在于什么?采取特殊的数据结构作路由。 defaultServeMux的实现采用什么样的数据结构? httprouter的实现采用什么样的数据结构? router的架构图是怎样的,与server.go有何异同 一些http相关的细节 其他细节 细读源码 Router的 paramsPool?sync.Pool需要看看 done 修复重定向是代码大头,得细细解读重定向相关的协议内容 这部分先跳过吧,细节太多了 http包的...阅读全文

Segmentfault 2019-11-17 20:02:37 weicao

Forsaken Mail创建临时邮箱系统| 手把手教程

场景需求 不需要长时间使用的邮箱 需要大量创建临时邮箱 使用匿名邮箱 环境说明 **` `Forsaken Mail`是一个临时邮箱系统,可以供任何人接受邮件,即收即毁,支持自定义邮箱地址前缀,这里就说下`Docker`和`NPM`两种安装教程,任选一种即可,有兴趣或者有需求的可以玩玩。 Github地址:https://github.com/denghongcai/forsaken-mail 开启25 跟3000端口 发工单开 25 跟 3000端口 宝塔面板放行25 跟 3000端口 运营商...阅读全文

掘金 2019年11月16日 GDstudyer

[译]为什么你应该学习Go语言?(下)

原文地址 Go可以直接在基础硬件上运行 与其他的现代高级语言相比,如 Java 或 Python,使用 C、C++ 的最大优势,就在于性能,因为 C/C++ 均为编译型语言,而非解释型语言。(扩展:如何理解编译型语言、解释型语言?) 对于处理器来说,可以直接识别运行的是二进制文件。对于我们熟知的现代高级语言,当你编译一个用 Java 或者其他基于 JVM 的语言构建的应用程序时,它不会直接生成二进制文件,而是将人类可读的代码编译为字节代码,这些字节代码可以被 JVM 或者在底层操作系统之上运行的...阅读全文

掘金 2019年11月16日 ClamorousKun

Python终将成为最火爆的编程语言,因为它是属于大众的

很多培训机构宣称py是人工智能必备的编程语言,打着速成的旗号来引诱学者学习python。事实却并不是这样的,万丈高台平地起,不论你想从事怎样的编程工作,都是从最基本的编程技巧开始的;Python并不适合所有人,如果你是一个编程类专业的学生,适度了解python是有必要的(python的第三方库的爆发造就了不少C/C++程序员的就业),但如果你作为一个非编程类专业但又需要了解编程的人,我强烈推荐你学习python。   那么Python和其它语言相比,Python的优势又在何处呢?其一,Pytho...阅读全文

Uber Go 语言编码规范

Uber Go 语言编码规范 Uber 是一家美国硅谷的科技公司,也是 Go 语言的早期 adopter。其开源了很多 golang 项目,诸如被 Gopher 圈熟知的 zap、jaeger 等。2018 年年末 Uber 将内部的 Go 风格规范 开源到 GitHub,经过一年的积累和更新,该规范已经初具规模,并受到广大 Gopher 的关注。本文是该规范的中文版本。本版本会根据原版实时更新。 版本 当前更新版本:2019-11-13 版本地址:commit:#71 如果您发现任何更新、问题...阅读全文

掘金 2019年11月15日 知识铺

gocron入门笔记

背景 最近在开发过程中,感觉到管理在不同机器上的管理不同定时任务有点麻烦,于是想集中化管理定时任务。经过一番调研,选择了gocron-定时任务管理系统。 介绍 github地址:https://github.com/ouqiang/go... 优势:基于go语言开发的一款轻量级定时任务集中调度和管理系统,性能高,页面操作也很简单。 安装 安装过程比较简单,github项目里有介绍,一步步来基本不会有问题。这里概括下几个点: 需要下载 gocron 和 gocron-node 两个包 gocron...阅读全文

Segmentfault 2019-11-17 20:02:37 pikalu