Golang面试之锁

Atomic 对于并发操作而言,原子操作是个非常现实的问题。典型的就是i++的问题。 当两个CPU同时对内存中的i进行读取,然后把加一之后的值放入内存中,可能两次i++的结果,这个i只增加了一次。 如何保证多CPU对同一块内存的操作是原子的。 golang中sync/atomic就是做这个使用的。 具体的原子操作在不同的操作系统中实现是不同的。比如在Intel的CPU架构机器上,主要是使用总线锁的方式实现的。 大致的意思就是当一个CPU需要操作一个内存块的时候,向总线发送一个LOCK信号,所有C...阅读全文

简书 2020-05-08 23:32:48 网管同学

送你一份Redis书单,以后使用缓存的问题不用再问我啦!

经过了10多年的发展,Java Web从开发框架到社区都已经非常成熟,很多程序员都可以通过使用框架很快速地搭建起一个Java Web应用,特别是近几年SpringBoot大热,干脆连配置都不需要了解了,直接一键式编译部署运行,让Java工程师的入门成本变得越来越低。 但于此同时,互联网公司对于Java的应用场景也在不断地升级换代,从单机部署再到分布式,从SOA再到微服务,Java后端技术栈变得更加庞大,对于工程师的要求也越来越高,特别是对于大公司来说更是如此,Java Web工程师已经不复存在,...阅读全文

简书 2020-05-08 23:32:48 程序员黄小斜

Golang面试之Linux系统

参考 深入理解Linux的CPU上下文切换 CPU上下文切换 Linux 是一个多任务操作系统,它支持同时运行的任务数量远大于 CPU 个数。其实这些任务没有真正的同时运行,是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。 而在每个任务运行前,CPU 都需要知道任务从哪里加载、从哪里开始运行,需要系统事先设置好 CPU 寄存器和程序计数器。CPU 寄存器是 CPU 内置的容量小、速度极快的内存。而程序计数器则是用来存储 CPU 正在执行的指令位置、或即将执行的下一...阅读全文

简书 2020-05-08 23:32:45 网管同学

Golang之反射

在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为。 引用 提高 golang 的反射性能 Golang 反射性能优化 Go 语言反射三定律 Go Reflect 性能 图解go反射实现原理 基本方法 reflect包里定义了一个接口和一个结构体,即 reflect.Type 和 reflect.Value,它们提供很多函数来获取存储在接口里的类型信息。 reflect....阅读全文

简书 2020-05-08 23:32:45 网管同学

2019-06-03

# buy & sell system build manual## 一. 软件版本要求| 软件 | 版本 || ----- | :-----: || golang | 1.9.7 || docker-ce | 18.09.3 || docker-compose | 1.14.0 || fabric(image) | 1.1.0 |## 二. 操作系统和硬件配置要求| 操作系统 | 版本 | CPU(c) | 内存(G) | 磁盘(G) | 编号 | 用途 || ------- | :--: |...阅读全文

简书 2020-05-08 23:32:44 欧耶90

go浮点数转字符串保留小数点后N位解决办法

最近在项目中碰到很多次float转string,同时要求保留小数点后几位,并且去掉小数点后0的场景 虽然问题很简单,但是隔了挺久没处理这种场景就有些生疏了,自己也搜了一下,很多回答都不太满意。这里贴一下自己的做法,如果有更好的解决办法的话,还请多多指教 // 主要逻辑就是先乘,trunc之后再除回去,就达到了保留N位小数的效果 func FormatFloat(num float64, decimal int) string { // 默认乘1 d := float64(1) if decima...阅读全文

用golang写一个语言(编译器,虚拟机)

github: https://github.com/elvin-du/tinyscript 整个项目包括三个东西: 1. 创建了一个自己的语言 2. 编译器 3. 虚拟机 golang实现的一个编译器,用来编译一个自己创建的语言(用来玩的),最后写了一个自定义虚拟机用来运行自定义语言。 ## 语言介绍 为了跨平台(其实是为了方便开发 ^ ^),所以这个语言没有静态编译成硬件指令集,最后的机器码是我自己的定义的,和MIPS类似的(其实就是一个mips子集)虚拟...阅读全文

Go语言中文网 2020-05-08 16:18:04 elvindu

让我们一起啃算法---- 实现 strStr

实现 strStr(Implement-StrStr) 题干如下: 实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1: 输入: haystack = "hello", needle = "ll" 输出: 2示例 2: 输入: haystack = "aaaaa", needle = "bba" 输出: -1说明:当 needle ...阅读全文

Segmentfault 2020-05-13 07:32:35 三斤和他的朋友们

从零学习 Go 语言(12):异常机制 panic 和 recover

Hi,大家好呀,我是一个刚学习 Go 语言不久的新手,在入门 Golang 的这段时间里,我写了很多详细的学习笔记,很适合新手学习噢。这些文章已经发布在我的个人微信公众号里:《Go编程时光》里,今天开始将文章内容搬运到这里,希望有更多的人看到,给更的人带来帮助,但是这里文章会相对滞后,想获取最新文章,可以前往关注《Go编程时光》,请放心关注,这是一个纯分享的号,完全没有广告。 **系列导读** [从零学习 Go 语言(01):一文搞定开发环境的搭建](https://studygol...阅读全文

Go语言中文网 2020-05-08 12:40:36 hello_wbm

13. Go 语言异常机制:panic 和 recover

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 编程语言一般都会有异常捕获机制,在 Python 中 是使用raise 和 try-excep...阅读全文

掘金 2020年05月08日 王一白

Golang net 包学习和实战

golang 的 net 包,相关接口和结构比较多,今天做个简单的梳理。 网络模型 在总结 net 包之前,还需要温习模糊的网络模型知识。下图是大学课本上的网络模型图: 模型图中可以看到,OSI 的七层模型,每一层实现的是与对端相应层的通信接口。但是实际应用中,我们把会话层、表示层、应用层统称为应用层。因此,就变成了TCP/IP 的五层模型。 其中网络层包含了 ip,arp,icmp 等协议,传输层包含了 TCP, UDP 等协议,应用层,比如 SMTP,DNS,HTTP 等协议。在 net 包...阅读全文

Segmentfault 2020-05-12 20:32:34 搬砖程序员带你飞

13. Go 语言异常机制:panic 和 recover

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 编程语言一般都会有异常捕获机制,在 Python 中 是使用raise 和 try...阅读全文

Segmentfault 2020-05-12 18:32:34 Python编程时光

从零学习 Go 语言(12):流程控制之defer 延迟语句

Hi,大家好呀,我是一个刚学习 Go 语言不久的新手,在入门 Golang 的这段时间里,我写了很多详细的学习笔记,很适合新手学习噢。这些文章已经发布在我的个人微信公众号里:《Go编程时光》里,今天开始将文章内容搬运到这里,希望有更多的人看到,给更的人带来帮助,但是这里文章会相对滞后,想获取最新文章,可以前往关注《Go编程时光》,请放心关注,这是一个纯分享的号,完全没有广告。 **系列导读** [从零学习 Go 语言(01):一文搞定开发环境的搭建](https://studygol...阅读全文

Go语言中文网 2020-05-07 21:11:30 hello_wbm

掌握这些Go语言特性,你的水平将提高N个档次(二)

前言: 大家好,我是asong,这是我的第二篇原创文章。上一文介绍了切片、变量声明、defer三个知识点(回顾上文,关注公众号即可进行阅读),这一文将继续介绍其他Go语言特性,废话不多说,直接上干货。 1. 指针和引用 在Go语言中只有一种参数传递的规则,那就是值拷贝,其包含两种含义: 函数参数传递时使用的值拷贝 实例赋值给接口变量,接口对实例的引用是值拷贝 我们在使用过程中会发现有时明明是值拷贝的地方,结果却修改了变量的内容,有以下两种情况: 直接传递的是指针。指针传递同样是值拷贝,但指针和指...阅读全文

掘金 2020年05月07日 Golang梦工厂

go test测试用法

在golang里才_test结尾的文件,并以Test开头的函数名则为测试方法. 测试整个项目 go test ./... 测试当前文件夹所有的测试文件 go tset . 测试单个文件 注意: 这种方式如果引用其它页面的变量,则会报错. go test -v a_test.go 测试单个方法 go test -v . -test.run [方法名]阅读全文

简书 2020-05-07 17:32:49 百里江山

像搭木一样的服务器引擎

origin 游戏服务器引擎简介 ================== origin 是一个由 Go 语言(golang)编写的分布式开源游戏服务器引擎。origin适用于各类游戏服务器的开发,包括 H5(HTML5)游戏服务器。 origin 解决的问题: * origin总体设计如go语言设计一样,总是尽可能的提供简洁和易用的模式,快速开发。 * 能够根据业务需求快速并灵活的制定服务器架构。 * 利用多核优势,将不同的service配置到不同的node,并能高效的协同...阅读全文

Go语言中文网 2020-05-07 16:25:35 duanhf2012

Golang 设计模式之-装饰模式

Golang 设计模式之-装饰模式 最近在温习设计模式,虽然面向对象不是go的特长,但用go实现的设计模式,比java 和 c# 这种纯面向对象语言多了一份灵活,比python 这种虚假的面向对象要更直观, 性能上也更有优势. 装饰模式 装饰模式是一个非常常用的设计模式。常用到python内置了它。 装饰模式是为已有功能动态的添加更多功能的一种方式, 降低了主类(当然,go里没有类这种东西,可以用结构模拟)复杂度, 防止类的爆炸行为. 当新加的功能仅仅是满足某种特定条件下的需要时,装饰模式是个非...阅读全文

简书 2020-05-07 15:41:19 trump2018

为什么程序员都不喜欢使用switch,而是大量的 if……else if?

请用5秒钟的时间查看下面的代码是否存在bug。 OK,熟练的程序猿应该已经发现Bug所在了,在第8行和第10行下面我没有添加关键字break; 这就导致这段代码的行为逻辑与我的设计初衷不符了。 缺点一. 语法正确,逻辑错误 这就是第一个理由为什么程序猿很少使用switch来做条件判断,对于新手来说忘记写break实在是再普通不过了,就算是老猿忘记写也是时有发生的事情,而这个语法错误在诸多的语法检查器上没有办法检查出来的,因为从语法角度来说是正确的!可是代码的处理逻辑却是错误的!用if来重写这段代...阅读全文

简书 2020-05-07 15:41:18 IT编程技术支持

golang 模板继承

main.go package main import ( "fmt" "html/template" "net/http" ) func index(w http.ResponseWriter, r *http.Request) { // 定义模板 // 解析模板 // 父模板和子模板的顺序不能乱,父在前,子在后 t, err := template.ParseFiles("./layouts/main.tmpl","./layouts/content.tmpl") if err != nil...阅读全文

简书 2020-05-07 15:38:26 韩小禹