Golang之源码编译

安装Golang 1. Go安装方式 golang的安装方式有很多,这里介绍几种常用的安装方式: Go源码安装:这是一种标准的软件安装方式。对于经常使用Unix类系统的用户,尤其对于开发者来说,从源码安装可以自己定制。(尤其自己需要从源码改动一些小东西,这里就是必须掌握的) 官方下载二进制文件安装或者可以下载官方安装包,点击安装 一路next就行 采用第三方工具安装golang,Like ubantu的 apt-get, mac的homebrew,或者gvm工具 GVM工具同样可以管理golan...阅读全文

简书 2020-05-04 23:32:43 _二师兄_

玩游戏的大神?学习上的残疾?再不学习2020Android没凉,你凉了

前言 大家好,五一到了,在这里先祝大家节日快乐。不知道这个假期你打算出门吗?我是打算不出远门了,怕死,哈哈。索性好好宅家里学习,强化一下自己。 相信大家也感受到了,随着互联网加速了信息的流动速度,知识的更新迭代也在加速。可能原本靠着一门手艺可以过一辈子,现在可能每5~10年就需要一次大的迭代才能跟上社会的发展步伐,不被out。 并且,随着最近几年知识付费的兴起,提倡「终身学习」的声音越来越大了。不管是出于什么目的在鼓吹「终身学习」,这个观点的价值取向总是正向的。 但是对于学习这个问题,困扰我们大...阅读全文

简书 2020-05-04 23:32:43 Android进阶小言

慎用 -race 选项

go run -race xxx... -race选项用于检测数据竞争,在使用了-race的情况下,go程序跑起来之后,如果发生数据竞争,它就能检测到,它就会一层一层地把错误栈打印出来,就像打印panic一样。通常用于开发。当然开启了该选项也未必能检测出潜在的数据竞争,当你的程序跑到数据竞争的片段它就会检测出来,你的程序可能有很多模块,当程序没有执行到数据竞争的地方那直到整个程序执行结束它也检测不出来。 使用-race选项相比不开启此选项会消耗更多的cpu计算资源和内存,实际上我的情况是: 内存...阅读全文

简书 2020-05-04 23:32:40 边缘青年_739d

golang 参数传入多个

package main func sum(arge...int) int{ s := 0 for _, v := range arge{ s += v } return s } func main() { a := sum(1,2,3,4,5,6) print(a) b := sum([]int{1,2,3,4,5,6}...) print(b) a := 3 print(a) } 以上两周方式传入都是正确的。就是说可以把多个int以切片方式传入,记得后面的... 我想记录的原因是 在gola...阅读全文

简书 2020-05-04 23:32:40 蛐蛐儿阳

2019年度总结

2019 回顾 19年,我给自己的关键词是「破圈」。何谓破圈,做自己想做而不敢做的事情,跳出现有的舒适圈。 考驾照 破圈,从考驾照开始。驾校,可不就是个花钱找骂的好地方嘛。朋友,想起严寒酷暑里,你被倒车入库支配的恐惧了吗?二十好几,赶在共享单车潮学会骑自行车的我,当然并不畏惧。经同事介绍,我在离公司离家都不远的一个小驾校,跟一个面善技术好的教练练车。这一次,教练夸我聪明,一教就懂,上手就会。果然,做自己想去做的事情,会比较容易。 to be or not to be 程序员的职业生涯,是需要持续...阅读全文

简书 2020-05-04 23:32:40 阳光的小mi

Golang链表

面试题25. 合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制: 0 <= 链表长度 <= 1000 注意:本题与主站 21 题相同:https://leetcode-cn.com/problems/merge-two-sorted-lists/ 148. 排序链表 在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输...阅读全文

简书 2020-05-04 19:32:45 DoneIsBetter

Golang字符串

3. 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是...阅读全文

简书 2020-05-04 19:32:45 DoneIsBetter

[Golang]记一次Goroutine泄露问题的排查

image 问题描述 之前组内一个线上服务的内存使用率稳定上扬, 查看监控,发现内存的使用趋势如下图,这种趋势是典型的内存泄露,不解决的话服务会OOM。 image 问题定位 于是尝试用pprof定位问题,俗话说:Go里面10次内存泄露9次是goroutine泄露。这次也不例外, 系统的内存泄露是由类似下面的代码引起的: package main import ( "fmt" "net/http" "sync" _ "net/http/pprof" ) func bug(_ http.Respo...阅读全文

简书 2020-05-04 19:32:45 一根薯条

Golang 多路条件语句 Switch 语法详解

Switch 是 Go 语言中一种多路条件语句,一般搭配 case 语句使用。 执行逻辑 一个 switch case 条件结构如下所示: switch simpleStatement; condition { case expression1,expression2: statements case expression3: statements default: statements } 和 if 语句类似,switch 语句也可以在条件语句之前执行一段简短的表达式(可以用于很方便的控制变量...阅读全文

简书 2020-05-04 19:32:41 金日天

golang之数据验证validator

前言 在web应用中经常会遇到数据验证问题,普通的验证方法比较繁琐,这里介绍一个使用比较多的包validator。 原理 将验证规则写在struct对字段tag里,再通过反射(reflect)获取struct的tag,实现数据验证。 安装 go get github.com/go-playground/validator/v10 示例 package main import ( "fmt" "github.com/go-playground/validator/v10" ) type Users...阅读全文

Segmentfault 2020-05-07 12:32:34 guyan0319

golang实现和讲解动态规划算法(背包问题)

前言 昨天阅读了程序员小灰的《什么是动态规划》,当时还在亲戚家中,借了纸笔计算了一通,回家结合一些背包问题文章用程序实现了一下。文章先从简单的解决斐波那契数列入手,接着在讲解工人挖矿获取最大价值的例子中(其实就是经典的0-1背包问题),有一些容易使你晕头转向的问题,本文当作算法复习,并且记录了解题思路。 0-1背包问题 有n件物品和容量为cap的背包,每件物品有自己的容量w和价值v,每件物品只能选择放或者不放,求解让装入背包的物品容量不超过背包容量(cap)的情况下,能获得的最大价值是多少。 问...阅读全文

Segmentfault 2020-05-07 10:32:34 叶子

go web应用脚手架工程

平时需要快速做poc,于是新做了个脚手架项目,可以帮助快速搭建基于golang的Web应用程序。使用的Web框架是gin, 持久框架用Gorm。我们可以设置一些参数,然后可以生成一个新的可运行项目。它接收Rest API来执行CRUD操作。read me也介绍了如何设置数据库。项目地址:https://github.com/vcycyv/go_scaffold_gin_gorm常用的话,可以star一下阅读全文

简书 2020-05-04 13:32:42 破石头

5-4

it is may 4 . time flies. I have enough money. so my life is ok. I feel ill and tired those days. but today I feel better. I think just because I eat something. like medical or I eat a lot of eggs. it hurts my heart. make me can't breathe. but I feel...阅读全文

简书 2020-05-04 13:32:42 蛐蛐儿阳

Linux服务器绑定了多个IP的时候如何获取主IP?

当Linux服务器绑定了多个IP地址的时候,在一些特殊应用场合,需要获取主IP,即向外访问的时候IP包上带的IP,一种方式是通过shell脚本获得,另一种方式是通过其它脚本获取,本程序通过golang程序实现了Linux服务器绑定多个IP地址的时候主IP的获取。1、程序源码如下: 2、执行方式如下:安装golang,yum install golang 或者 sudo apt-get install golang执行上面的golang程序,go run masterip.go,即可获取服务器的主...阅读全文

简书 2020-05-04 13:32:41 服务器小羽3315939349 等

Gox语言中的基本数据类型及其转换-GX5.1

Gox语言默认选用Qlang语法引擎,Qlang脚本语言又是基于Go语言(Golang)做了一定的改进,数据类型基本继承自Go语言,数据的赋值等操作也基本类似但略加改进和变化。一个主要的不同是,Gox语言使用动态类型,与Go语言的区别主要体现在: 变量赋值前无需先进行类型声明,例如,下面的都是合法的变量赋值方法,赋值时,Gox语言会自动确定其类型; a = 1 b = "abc" 同一变量可以被先后赋值为不同的类型,也就意味值在Gox语言中,变量的类型是可变的,这是与Go语言明显的不同。 a =...阅读全文

简书 2020-05-04 13:32:41 陆满庭

golang 管道

senderOnly := make(chan<- int) // 只能用来发送(管道的入口,只进不出) receiverOnly := make(<-chan int) // 只能用来接收(管道的出口,只出不进) unbuffer := make(chan int) // 无缓冲可收发 buffer := make(chan int, 2) // 无缓冲可收发 println(senderOnly, receiverOnly, unbuffer, buffer) 打印的是四个内存地址, 发现方...阅读全文

简书 2020-05-04 13:32:40 蛐蛐儿阳

Goroutine的创建与销毁

声明 下面的分析均基于Golang1.14版本。 go func(){} 只是一个语法糖,在编译时会替换为newproc函数。 一、创建---newproc 阅读建议:g的创建涉及的数据结构主要有g, p的结构体和全局数据结构allgs, sched,阅读时对照这些数据结构阅读源码。 newproc的调用过程:在newproc中切换到g0栈执行newproc1. //go:nosplit func newproc(siz int32, fn *funcval) { // fn表示要运行的函数 s...阅读全文

简书 2020-05-03 23:32:42 不争_900c

让我们一起啃算法----有效的括号

有效括号(Valid-Parentheses) 题干如下: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足: 1.左括号必须用相同类型的右括号闭合。 2.左括号必须以正确的顺序闭合。 3.注意空字符串可被认为是有效字符串。示例 1: 输入: "()" 输出: true示例 2: 输入: "()[]{}" 输出: true示例 3: 输入: "(]" 输出: false示例 4: 输入: "([)]" 输出: false示例 5: 输...阅读全文

Segmentfault 2020-05-07 09:32:34 三斤和他的朋友们

(毕设项目)Vue+Go前端后端一体化 企业级微服务网关项目

第1章 拒绝培训机构烂大街项目,冲刺Offer首选【Vue+Go,稀缺组合,赶快上车!】你是否遇到这样问题?投递很多简历,总是石沉大海大海,杳无音信?经过分析很多小伙伴的简历,大多采用了培训机构烂大街项目作为项目经验,导致无缘面试邀约。本课程就为你解决这个燃眉之急。同时,Vue很火,Vue+Go的结合早日学成,早日挑大梁!...第2章 扫盲网关前置技术:必备网络基础【夯实基础,所向披靡!】扫盲网关前置技术,掌握必备网络基础,以【原理插图+脑图+示例代理】相结合的方式,主要讲解OSI七层网络协议、...阅读全文

Go语言中文网 2020-05-03 21:50:08 Autism008