Golang 中 slice cap 增长模式小记

h3l · 2020-01-13 00:43:30 在 Golang 中,我们知道数组是固定长度的。一般我们在使用时,大多数情况下使用的其实都是 slice,但是 slice 的底层的数据其实还是数组。所以我们在向 slice append 数据的时候,Golang 会检查底层的数组的长度是否已经不够,如果长度不够,Golang 则会新建一个数组,把原数组的数据拷贝过去,再将 slice 中的指向数组的指针指向新的数组。 但是,新数组的长度该如何确定呢?如果每次新数组长度只增加 1,那么每次 a...阅读全文

h3l.github.io 2020-01-13 00:43 h3l.github.io

Go Web编程--SecureCookie实现客户端Session管理

在Web应用开发中Session是在用户和服务器之间进行交换的非持久化交互信息。当用户登录时,可以在用户和服务器之间生成Session,然后来回交换数据,并在用户登出时销毁Session。gorilla/sessions软件包提供了易于使用的Go语言Session实现。该软件包提供了两种不同的实现。第一个是文件系统存储,它将每个会话存储在服务器的文件系统中。另一个是Cookie存储,它使用我们上篇文章讲的SecureCookie在客户端上存储会话。同时还提供了用户自定义Session存储实现的选...阅读全文

Segmentfault 2020-03-17 19:32:33 Kevin

爬虫管理平台 Crawlab v0.4.8 发布(环境安装 + Git 高级应用)

前言 本次更新包括几个部分: 支持界面安装(预装)Python 以外的多种语言环境 更好的安装界面,可以看到多个节点的安装情况 优化 RPC,基于 Redis 延迟队列作为 RPC 更多功能配置 更新日志 功能 / 优化 支持更多编程语言安装. 现在用户可以安装或预装更多的编程语言,包括 Java、.Net Core、PHP. 安装 UI 优化. 用户能够更好的查看和管理节点列表页的安装. 更多 Git 支持. 允许用户查看 Git Commits 记录,并 Checkout 到相应 Commi...阅读全文

Segmentfault 2020-03-16 21:32:33 MarvinZhang

Gin 源码学习(四)丨Gin 对请求的处理流程

在上一篇文章 Gin 源码学习(三)丨路由是如何构建和匹配的? 中,讲解了 Gin 的路由是如何实现的,那么,当路由成功匹配后,或者匹配失败后,在 Gin 内部会对其如何处理呢? 在这一篇文章中,将讲解 Gin 对一个 HTTP 请求的具体处理流程是怎样的。 下面,将对一个请求进入 Gin 的处理范围后的内容,进行一步步展开,讲解 Gin 对请求的处理流程。 Go 版本:1.14 Gin 版本:v1.5.0 目录 请求的处理流程 小结 请求的处理流程 在上一篇文章中,我们讲到 Gin 其实实现了...阅读全文

掘金 2020年03月11日 ColeLie

docker+jenkins+github实现golang项目自动部署

本文jenkins部署golang项目流程 jenkins服务拉取github上的项目 构建golang项目并生成docker镜像[jenkins调用的是宿主机上的docker环境,如何调用的,后面会说明] 启动golang项目的docker镜像 docker的安装这里就不说了 docker安装jenkins Makefile run: docker run \ -u root \ -d \ -p 8088:8080 \ -p 50000:50000 \ -e TZ="Asia/Shanghai...阅读全文

简书 2020-03-12 10:30:36 _老七

【转】golang 三个点省略号的作用总结

原文链接:https://blog.csdn.net/qq_31930499/article/details/98353008 1.使用在数组中 在数组字面量中,如果省略号"..."出现在数组长度的位置,那么数组的长度由初始化数组的元素个数决定。 q := [...]int{1,2,3} fmt.Printf("%T\n",q) //"[3]int" 2.打散Slice package main import ( "fmt" ) func main() { var arr1 []int arr2...阅读全文

简书 2020-03-11 17:33:03 10xjzheng

C# Golang Python类型转换

C#的类型转换 隐式转换: int--float,int--double,float--double,容量小的转换成容量大的,可以直接隐式转换 显示转换: 1.使用(目标type)待转换数据 (int)float,(int)double,(float)double#大的数据类型转换为小的数据类型 2.使用Convert类的转换方法 Convert.ToInt32() 转换为整型(int) Convert.ToChar() 转换为字符型(char) Convert.ToString() 转换为字符...阅读全文

简书 2020-03-11 17:33:01 stardust_0000

技术开源项目从零到一的心路历程

这是一次非常漫长过程,整个项目大约经历了2年的开发与维护,期间重大的重构了十几次架构。首先一句话介绍一下整个项目:**基于 Node.js 的服务端 web 开发框架**在这里我分享一下我的经验,希望能够帮助<<<**想做开源的同学**>>>项目地址:传送门背景在公司中,我们一致都是使用 koa 来作为 node 的底层,对 koa + 各种中间件封装成了一个简易的框架,但是期间遇到了很多不好解决的问题,比如:ctx 的属性如何维护,如何保证框架的扩展性(完全通过中间件扩展框架既臃肿又不容易维护...阅读全文

简书 2020-03-11 17:33:00 弦止音凉

使用go-micro时etcd不支持grpc v1.27.0

错误信息 github.com/coreos/etcd/clientv3/balancer/picker /root/go/pkg/mod/github.com/coreos/etcd@v3.3.18+incompatible/clientv3/balancer/picker/err.go:37:44: undefined: balancer.PickOptions 这是由于版本不兼容导致 虽然etcd的主分支已经兼容,但是release的版本仍然没有更新,因此只能降级使用 解决方法 在go.m...阅读全文

简书 2020-03-11 17:32:59 旅行者xy

golang 标准命令

go源码文件:命令源码文件:总是作为可执行的程序的入口库源码文件:一般用于集中放置各种待被使用的程序实体(全局常量、全局变量、接口、结构体、函数等等)go buildgo build: 用于编译指定的源码文件或者代码包以及它们的依赖包,默认不会编译目标代码包所依赖的那些代码包。当然如果依赖的代码包的归档文件不存在,后者源码文件有了变化,那它还是会被编译。go build 在编译只包含库源码文件的代码包时,只会检查性的编译,不会输出任何结果文件在编译命令源码文件时,生成可执行包go build 既...阅读全文

掘金 2020年03月11日 白也

教你如何用Golang打造实时聊天系统

项目截图 简介在本次课程中,我们来学习使用WebSocket来打造一个实时聊天系统。我们会从一下几个方面来进行学习:什么是websocket;Websocket与传统的HTTP协议有什么区别;Websocket有哪些优点;如何建立连接;如何维持连接;Golang实战项目—实时聊天系统;总结;什么是websocket?WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。WebSocket通信协议于201...阅读全文

简书 2020-03-11 14:33:08 即将秃头的Java程序员

fabric msp架构概览

基本概念 MSP,全称Membership Service Provider,即成员关系服务提供者,是 Hyperledger Fabric 1.0版本开始抽象出来的一个模块化组件,用来管理Fabric中的众多参与者(peer、order等)。 MSP将颁发证书和校验证书,以及用户认证背后的所有密码学机制与协议都抽象了出来。对fabric网络中的成员进行身份的管理(身份验证)与认证(签名与验签)。 image organization 和 MSP 组织ORG1拥有的MSP叫ORG1.MSP,而组...阅读全文

简书 2020-03-11 13:33:16 框框下山

golang在go get时提示xx cannot download,xxx is a GOROOT, not a GOPATH. For more details see: 'go help ...

新换了电脑,把之前的go代码全拷贝了过来,顺便升了个级,在设置完GOPATH和GOROOT后,发现运行go version已经没问题了,是最新版本,但是当想下载一个新的包时,提示我我设置的GOPATH是GOROOT.go get github.com/akavel/rsrcpackage github.com/akavel/rsrc: cannot download, F:\GoPath is a GOROOT, not a GOPATH. For more details see: 'go h...阅读全文

简书 2020-03-11 13:33:11 拉风月

leetcode_739

Golang: 思路:栈结构可以很好的解决这个问题,用栈来记录一个递增的序列,栈内的元素为对应的元素下标即可。 代码如下: func dailyTemperatures(T []int) []int { res:=make([]int,len(T)) var stack []int i:=len(T)-1 for i>=0{ if len(stack)==0{ stack=append(stack,i) }else{ for true{ if len(stack)!=0&&T[i]>=T[sta...阅读全文

简书 2020-03-11 13:33:09 淳属虚构

leetcode_82

Golang: 思路:使用多指针,一次遍历即可实现 代码如下: func deleteDuplicates(head *ListNode) *ListNode { if head==nil||head.Next==nil{ return head } p1,flag:=head,0 var p2,node *ListNode for p1!=nil{ if p1.Next!=nil&&p1.Next.Val==p1.Val{ temp,p3:=p1.Val,p1.Next.Next for p3...阅读全文

简书 2020-03-11 13:33:08 淳属虚构

leetcode_143

Golang: 思路:链表,这题最简单的思路是,链表存进数组,然后一次性解决。再复杂一点就是,链表从中间分开,后半部分反转,然后再和前半部分依照特定规律合并。这里给简单思路,个人觉得这题没必要追求空间复杂度。 代码如下: func reorderList(head *ListNode) { node:=head if node==nil||node.Next==nil||node.Next.Next==nil{ return } var arr []*ListNode arr=append(ar...阅读全文

简书 2020-03-11 13:33:07 淳属虚构

Open-Falcon 告警 如何实现自定义多功能告警

Open-Falcon 是小米运维部开源的一款互联网企业级监控系统解决方案。其中有着如下的特点:①强大灵活的数据采集:自动发现,支持falcon-agent、snmp、支持用户主动push、用户自定义插件支持、opentsdb data model like(timestamp、endpoint、metric、key-value tags)②水平扩展能力:支持每个周期上亿次的数据采集、告警判定、历史数据存储和查询③高效率的告警策略管理:高效的portal、支持策略模板、模板继承和覆盖、多种告警方...阅读全文

简书 2020-03-11 13:32:58 睿象云