Golang分金币(记录一下)

package main import "fmt" /* 你有50枚金币,需要分配给以下几个人:Matthew,Sarah,Augustus,Heidi,Emilie,Peter,Giana,Adriano,Aaron,Elizabeth。 分配规则如下: a. 名字中每包含1个'e'或'E'分1枚金币 b. 名字中每包含1个'i'或'I'分2枚金币 c. 名字中每包含1个'o'或'O'分3枚金币 d: 名字中每包含1个'u'或'U'分4枚金币 写一个程序,计算每个用户分到多少金币,以及最后剩余...阅读全文

简书 2020-11-05 11:32:44 处处皆暖阳

冒泡排序

排序方法 相邻两个数比较, 第一个数大于第二个数就交换位置,从第一对数到最后一对为一轮,重复多轮直到排序完成。 每一轮都会把最大的数放在最后面。和冒泡一样。 复杂度 平均时间复杂度:T(n) = O(n2) 最佳情况:T(n) = O(n) 最坏情况:T(n) = O(n2) 空间复杂度:O(1) 稳定性:稳定 排序方式:In-place golang代码实现 package main import "fmt" // 冒泡排序 func BubbleSort(arr []int) { if le...阅读全文

简书 2020-11-05 11:32:44 樹澤

选择排序

排序简介 先在未排序队列中找到最小(大)元素,存放到排序队列的起始位置,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾,直到所有元素均排序完毕。 复杂度 平均时间复杂度:T(n) = O(n2) 最佳情况:T(n) = O(n2) 最坏情况:T(n) = O(n2) 空间复杂度:O(1) 稳定性:不稳定 排序方式:In-place golang实现 package main import "fmt" // 选择排序 func SelectionSort(arr []int)...阅读全文

简书 2020-11-05 11:32:44 樹澤

Dubbo-go 源码笔记(一)Server 端开启服务过程

简介: 随着微服务架构的流行,许多高性能 rpc 框架应运而生,由阿里开源的 dubbo 框架 go 语言版本的 dubbo-go 也成为了众多开发者不错的选择。本文将介绍 dubbo-go 框架的基本使用方法,以及从 export 调用链的角度进行 server 端源码导读,希望能引导读者进一步认识这款框架。 image 当拿到一款框架之后,一种不错的源码阅读方式大致如下:从运行最基础的 helloworld demo 源码开始 —> 再查看配置文件 —> 开启各种依赖服务(比如zk、cons...阅读全文

简书 2020-11-05 11:32:44 阿里云云栖号

LeetCode(12) 插入区间

题目:给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。思路:首先进行分析,可以发现区间分为三种,一种是在插入区间左侧的,即右区间小于需插入区间左区间的,一种是在插入区间右侧的,即左区间大于插入区间右区间的,以上两种直接插入新区间集合即可,最后一种是和需插入区间有交集的,这种需要做合并。接下来为代码实现:func insert(intervals [][]int, newInterval []in...阅读全文

Segmentfault 2020-11-09 09:32:32 xbdyhh

深度 | 从Go高性能日志库zap看如何实现高性能Go组件

深度 | 从Go高性能日志库zap看如何实现高性能Go组件 导语:zap是uber开源的Go高性能日志库。本文作者深入分析了zap的架构设计和具体实现,揭示了zap高效的原因。并且对如何构建高性能Go语言库给出自己的建议。 作者简介:李子昂,美图公司架构平台系统研发工程师,从事长连接服务和分布式存储组件的研发和支持。 摘要 日志在整个工程实践中的重要性不言而喻,在选择日志组件的时候也有多方面的考量。详细、正确和及时的反馈是必不可少的,但是整个性能表现是否也是必要考虑的点呢?美图技术团队在长期的实...阅读全文

51CTO博客 2020-11-04 16:19:27 高可用架构

Go存储怎么写?深度解析etcd存储设计

Go存储怎么写?深度解析etcd存储设计 导读:etcd是用于共享配置和服务发现的分布式,一致性的KV存储系统,在CoreOS和Kubernetes等开源项目中广泛使用。本文作者深入分析了etcd存储模块的设计和实现,对于深入学习Go存储有很大参考作用。 作者 codedump codedump.info 博主,多年从事互联网服务器后台开发工作。可访问作者博客阅读 codedump 更多文章。 在前面已经分析了Raft算法原理、etcd raft库的实现,接着就可以看etcd如何使用raft实现...阅读全文

51CTO博客 2020-11-04 09:57:28 高可用架构

快速排序

排序简介(采用了分治+递归) 从数列中挑出一个元素,称为 “基准”(pivot) 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作; 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。 复杂度 平均时间复杂度:T(n) = O(nlogN) 最佳情况:T(n) = O(nlogN) 最坏情况:T(n) = O(n2) ...阅读全文

设置apiserver中间层的重定向实现ipfs存查可控

1.原因说明ipfs私有网络实现文件类型的存取,但针对具体应用,一定程度上需限制用户存取,保证不出现无限存查的情况。2.设置路由在apiserver中的router文件夹中配置http访问的路由信息router.GET("getHashIpfs/:hash",handler.GetRequest) //通过apiserver 调用ipfs-api当通过hash查询并读取文件时,跳转到hander文件夹中的获取请求函数。3.设置重定向函数首先获取传入的hash值,再通过重定向函数定向到私有ipfs...阅读全文

Segmentfault 2020-11-08 20:32:32 Musmdic丶

【面经分享】两年经验拿到PingCAP Offer

准备过程 我自己是本科毕业后在老东家干了两年多,老东家算是一家”小公司”(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此找坑的时候是非常非常虚的。迫于心慌,我好好思考了一阵来给自己打气,当时真正找坑和准备面试的过程大概分为这几个阶段: 反思:自己是不是真的要离职,假如不离职,在老东家接下来应该做什么才能继续提升? 定位:我在硬性技能(编码、架构)上的长处在哪?我在软技能(沟通,团队)上的长处在哪?这步顺带写了简历 寻找平台:哪些平台能...阅读全文

简书 2020-11-04 16:32:43 程序员麦冬

LeetCode(11) atoi

题目:请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中的第一个非空格字符不是一个有...阅读全文

Segmentfault 2020-11-08 16:32:34 xbdyhh

2020-11-04 go test编译成可执行文件

找到go test编译成可执行文件方法了,类似 cd D:\gopath\src\github.com\majiang\vm\javascript go test -c javascript.test.exe -test.run Test_goja_JavaScript 此方法主要是想进一步去在android上执行, 还看到一种在android手机上执行比较靠谱的方法,只是没有来得及验证 running_golang_on_android阅读全文

插入排序

排序步骤 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从右向左扫描 如果被扫描的元素(已排序)大于新元素,将该元素右移一位 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置后 重复步骤2~5 复杂度 最佳情况:T(n) = O(n) 最坏情况:T(n) = O(n2) 平均情况:T(n) = O(n2) 空间复杂度:O(1) 稳定性:稳定 排序方式:In-place golang实现 package main import "f...阅读全文

简书 2020-11-04 15:32:40 樹澤

Leetcode刷题笔记第1天

java程序猿转go语言,通过leetcode刷题来熟悉go语言,完成语言基础和语法基础的熟悉1.两数之和暴力破解:func twoSum(nums []int, target int) []int { for i := 0; i < len(nums) - 1; i++ { for j := i + 1; j < len(nums); j++ { if (nums[j] + nums[i] == target) { return []int {i, j}; } } } return nil }...阅读全文

Segmentfault 2020-11-07 20:32:32 彩笔梳子

Leetcode刷题笔记第1天

java程序猿转go语言,通过leetcode刷题来熟悉go语言,完成语言基础和语法基础的熟悉1.两数之和暴力破解:func twoSum(nums []int, target int) []int { for i := 0; i < len(nums) - 1; i++ { for j := i + 1; j < len(nums); j++ { if (nums[j] + nums[i] == target) { return []int {i, j}; } } } return nil }...阅读全文

Segmentfault 2020-11-04 14:32:38 彩笔梳子

程序员告诉你:C/C++后台开发需要学习哪些技能书

前言:后台开发工程师主流使用的编程语言有C++、Java、PHP以及目前慢慢流行的Golang等。小编就将以C++的角度,讲讲如何学习和准备后台开发的岗位。一、语言基础 无论是C++开发还是Java开发,对于一个码农而言,最重要的就是对于编程语言的熟悉。同样,无论从事哪种类型的岗位,首当其冲的就是要掌握好语言基础。C++是一门博大精深的编程语言,不仅拥有继承于C语言的过程化程序设计思想,还包含有面对对象(OOP)的设计理念。强大而又复杂。相对来说,C++的学习成本较高,语言里面的坑较多。语言基础...阅读全文

简书 2020-11-04 13:32:45 毛橘DD

终于有人把MySQL+微服务+Jvm+Netty+多线程给讲明白了

前言大家都知道,因为疫情的原因导致2020年特别的难,许多的程序员面临着失业,找不到工作,都感觉特别的迷茫,不知道以后该何去何从。为此小编总结了几个因素,为大家指点迷津:一:年龄,大家都知道程序员都是吃青春饭的,到了一定年龄之后,身体、精神、思想、心理都会发生相应的变化,逐渐走向安逸,不想做过多的改变,慢慢地面临被裁的风险;二:技术,说到技术,技术更是企业和个人的核心竞争力,一旦落后,就会被狠心裁掉或者放养,所以你得不停的学习新技术,慢慢的扩展自己的技术深度和宽度,把自己的架构思维给培养起来,让...阅读全文

简书 2020-11-04 13:32:42 IT程序员