leetcode_443

Golang: 思路:需要注意的是,这题并不要求你改变输入参数里切片的长度,换句话来说:输入[a,a,b,b,b,c],并不需要你将这个数组变成[a,2,b,3,c],而是只要修改为[a,2,b,3,c,c],并返回5即可。那么就可以用双指针,再加一个下标表示从当前哪个位置开始修改数组,这样就能完成这道题。当然,仍然需要处理数组到达最后一位的情况。 代码如下: func compress(chars []byte) int { if len(chars)<=1 { return len(char...阅读全文

简书 2020-02-01 19:32:46 淳属虚构

leetcode_437

Golang: 思路:这题没有好的思路,双重递归吧,第一次拿到所有节点,第二次对所有节点进行递归,看看有没有路径符合题目要求。这里讲下我最初的思路:我最开始想的是,把每一条从根节点到叶子节点的路径都提取出来(以数组的形式),然后去对数组做处理,这样会不会效率高一些。后面思考不难发现,这样如果可以实现,会有很多重复的路径被算进总和。所以,这题可能就只剩下暴力的求解思路了。 再插一句,递归这东西,在树结构里真的是无往不利。 代码如下: func pathSum(root *TreeNode, sum...阅读全文

简书 2020-02-01 19:32:45 淳属虚构

四、蚂蚁SOFAMesh/MSON与istio的不同

学习完原生的istio, 再回头来看蚂蚁在service mesh的实现,本文主要分析差异点 先献上蚂蚁的链接:https://www.sofastack.tech/projects/ 重点看SOFAMesh和MOSN两个项目 1、整体架构 SOFAMesh 是基于 Istio 改进和扩展而来的 Service Mesh 大规模落地实践方案。在继承 Istio 强大功能和丰富特性的基础上,为满足大规模部署下的性能要求以及应对落地实践中的实际情况,有如下改进: 采用 Golang 编写的 MOSN...阅读全文

简书 2020-02-01 19:32:41 yezide

go开发环境搭建

windows下的开发环境配置 1. 下载goland 在jetbrains官网下载goland安装包并安装 2. 下载golang 在studygolang.com网站下载go安装包并安装 注意不要下载源码,源码需要编译后才能使用。 3.确认安装是否正确 安装完成后,环境变量已经设置正确。打开cmd,运行go version确认安装正确 go version go version go1.13.6 windows/amd64 4. 启动goland Ubuntu1804下的开发环境配置 1. ...阅读全文

简书 2020-02-01 19:32:40 祝涛_9eee

golang实现页面静态化操作

### 什么是页面静态化: ** 文章转自go语言中文文档 [http://www.topgoer.com](http://www.topgoer.com/?from=studygolang "文章转自go语言中文文档http://www.topgoer.com") ** 简 单的说,我们如果访问一个链接 ,服务器对应的模块会处理这个请求,转到对应的go方法,最后生成我们想要看到的数据。这其中的缺点是显而易见的:因为每次请求服务器都会进行处理,如 果有太多的高并发请求,那么就会加重应...阅读全文

Go语言中文网 2020-02-01 11:55:46 lu569368

Golang入门-Golang包管理

Golang的包管理一直是广大开发者吐槽的点之一。 Go 包管理简史 Golang的包管理分为三个阶段,version < 1.11、 1.11 <= version < 1.13、 version >= 1.13。 version < 1.11 在这个阶段,Golang的包管理存在以下不足: 必须设置GOPATH环境变量,且源代码必须存放在GOPATH下 拉取外部依赖包时,总是拉取最新的版本,无法指定需要的版本 之所以设置GOPATH环境变量有两个原因: 它规定了go get命令下载的依赖包的...阅读全文

掘金 2020年02月01日 言淦

Golang package sync 剖析(三):sync.Cond

一、前言 Go语言在设计上对同步(Synchronization,数据同步和线程同步)提供大量的支持,比如 goroutine和channel同步原语,库层面有 - sync:提供基本的同步原语(比如Mutex、RWMutex、Locker)和 工具类(Once、WaitGroup、Cond、Pool、Map) - sync/atomic:提供变量的原子操作(基于硬件指令 compare-and-swap) -- 引用自《Golang package sync 剖析(二): sync.WaitG...阅读全文

Segmentfault 2020-02-06 23:32:32 oscarzhao

leetcode_532

Golang: 思路:先说明一下,个人的思路实际上效率比较低,先进行一次排序,然后去使用暴力破解,这个算是优化了的暴力算法吧,但还是不如两数之和那种解法简单。 代码如下: func findPairs(nums []int, k int) int { tmap:=make(map[int]int) sort.Ints(nums) res:=0 for i:=0;i<len(nums)-1;i++{ BR: for j:=i+1;j<len(nums);j++{ if nums[j]-nums[i...阅读全文

简书 2020-02-01 03:32:56 淳属虚构

内存管理

Golang 的内存管理本质上就是一个内存池,只不过内部做了很多的优化。比如自动伸缩内存池大小,合理的切割内存块等等 内存池 golang的程序在启动初,会一次性向操作系统申请一大块内存,这块内存空间会放在一个叫 mheap 的 struct 中管理,mheap负责将这一整块内存分割成不同部分使用,并将其中一部分分割成合适大小分配给用户使用。 概念 page 内存页 span 内存块,一个或多个连续的 page 组成一个 span object 对象,用来存储一个变量数据,一个span会被分割成...阅读全文

简书 2020-02-01 03:32:55 元气蛋蛋

【MMORPG开发日志010】漫谈一些有的没的

【MMORPG开发日志010】漫谈一些有的没的 写在前面 首先是祝愿所有看到这篇文章的小伙伴新年快乐健康! 目前关于这个项目的文字版开发日志已经很久没更新了,这段时间我更新了很多视频形式的开发日志,感兴趣的可以访问我的B站主页:玩物不丧志的老李 游戏研发过程中,总是产生各种想法,这些想法纠结着我。 这篇文章可能很乱,因为我在打算写这篇文章的时候依然没有清晰的中心思想 换句话说,这篇文章只是我自言自语的对于这段时间独立开发的一个复盘 如果能对你有帮助,自然是最好的了。 这个项目的意义 事到如今,我...阅读全文

简书 2020-02-01 03:32:52 李维民0512

外部访问k8s中的Web服务方案

Service & Ingress 熟悉 k8s 的同学都知道,k8s 为了能够访问部署在其内部的服务,抽象出一个称为 Service 的对象,这个 Service 对象就好比一组 Pod (也可理解成一组服务) 的 LoadBalance,这样就避免了每次重启容器 IP 地址变动的问题。 大多数情况,部署在 k8s 中的都是 Web 服务器,为每一个 Web 服务器都去分配一个 LoadBalance 显得过于浪费。为了解决这个问题,k8s 又抽象出一个称为 Ingress 的对象,这个 In...阅读全文

简书 2020-02-01 03:32:52 猴子精h

[译] 初学者需要了解的Go语言中的HTTP timeout

原文链接 itnext.io/http-reques… ​ 对于提高分布式系统的可用性,请求超时是非常重要的一个部分,当系统某个部分出现故障时超时机制可以降低故障对整个分布式系统的影响,就如下面这条twitter中提到的。 问题 在go语言中应该如何合理的模拟一个504 http.StatusGatewayTimeout响应呢? 之前在开发一个OAuth token授权功能的时候,我曾试着用httptest去模拟服务端超时并返回504 http.StatusGatewayTimeout响应,然而...阅读全文

掘金 2020年01月31日 mikellxy

编写数据库:第2部分-预写日志

与往常一样,请访问github.com/danchia/ddb…代码 所以,您的数据不是很耐用... 在第1部分中,我使用gRPC和Go编写了一个非常简单的服务器,该服务器用于服务Get和Put请求内存中的映射。如果服务器退出,它将丢失所有数据,对于数据库,我必须承认这是非常糟糕的。 我实现了预写日志记录,允许在服务器重新启动时恢复内存中状态。尽管这个想法真的很简单,但实现起来却是很困难的!最后,我看了 LevelDB , Cassandra 和 etcd 如何解决此问题。 预写日志 预写日志(...阅读全文

掘金 2020年01月31日 Samuel_zx

【源码阅读】Nsqd

Nsqd源码阅读 简介 nsqd为nsq daemon的简写,是nsq组件最主要的服务。nsqd提供一个tcp服务、一个http服务以及一个可选的https服务,tcp服务于客户端(生产者或消费者),http则提供API(可用于创建、删除topic与channel,生产数据,清空数据等)。 初始化 nsqd的启动入口为apps/nsqd/nsqd.go文件里的main函数。首先定义了一个program的结构体,用于对程序的控制。结构体内元素为指向NSQD的指针。main函数里面定义了一个具体的p...阅读全文

Segmentfault 2020-02-06 20:32:32 moonbamboo

golang 单元测试与性能分析 入门篇

平时我们写了的一些方法,想测试时一般在main包中的main函数中去调用我们写好的函数,这样测试不是很专业。golang自带test工具非常好用,我们可以手动写测试代码,也可以在ide中使用快捷键先创建,我们使用下面的例子来说一下 代码测试,性能压测,性能分析等。 **例子 demo.go** ```golang package demo import "time" //字符串长度 func strCount(str string) int { var l int ...阅读全文

Go语言中文网 2020-01-31 21:03:57 duzhenxun

golang不同时区时间字符串的转化

golang不同时区时间字符串的转化 使用场景: 已知一个字符串时间"2020-01-30 15:30:30", 转化成不同的时区时间。 假设上述字符串是CST时间,那么如何知道此时的UTC时间对应的字符串呢,以及反过来的需求。 这里实现两个golang函数,把时间字符串和时区转化成UTC时间字符串,和把UTC字符串转化成给定的时区字符串: package main import ( "fmt" "time" ) const LOGTIMEFORMAT = "2006-01-02 15:04:0...阅读全文

简书 2020-01-31 18:32:41 CodingCode

go-读取输入参数

前言 编写程序的时候,需要读取用户输入的参数来做一些事情。在golang里面有两个库可以来制作这块的功能。 flag flag包,加载输入信息。官方两个例子: // Example 1: A single string flag called "species" with default value "gopher". var species = flag.String("species", "gopher", "the species we are studying") // Example ...阅读全文

简书 2020-01-31 18:32:41 阿彪2020