并发不是并行

现在我们都说设计可并行的程序、高并发的程序?而且很多时候潜意识里面觉得对并行(Parallelism)和并发(Concurrency)的的区别很清楚,但是如果要明确的说出二者的区别,又感觉没法给出一个非常清晰的描述。最近看到Go语言发明者之一Rob Pike的一篇演讲《Concurrency is not Parallelism》,觉得挺不错的。因为特别喜欢的里面的配图示例,所以我决定写本篇...

Go缓存库cache2go介绍

cache2go是一个用Go实现的并发安全的缓存库,实现了如下特性:并发安全;可设置每条缓存的超时时间;内置缓存访问计数;自调节的缓存过期检查;可设置缓存增加/删除回调函数;and so on...这个库代码量很少,核心代码就三个文件,里面设计的技术点主要包括读写锁、goroutine、map操作等。作为Go语言学习样例也非常不错。1. 源码解析cache2go中主要涉及两个类型CacheI...

WebSocket协议及Go中的用法

本文主要介绍WebSocket以及Websocket在Golang中的实现和使用。1. WebSocket是什么?这里先列两篇文章:《WebSocket 是什么原理?为什么可以实现持久连接?》,这个是知乎上的一篇文章,对于WebSocket讲的通俗易懂,建议先看一下。The WebSocket Protocol RFC6455,这个是WebSocket的RFC文档,所以内容非常全面(当然只涉...

Go网络编程——Socket

以前主要使用的是Linux C网络编程,现在学习了Golang,就总结一下Go中的socket编程,本文基于Go 1.7.4,和socket相关的代码在go/src/net/net.go文件中。网络协议模型回顾我们先来简单回顾一下网络写协模型。说到网络协议一般就两个模型:概念意义上的OSI(Open Systems Interconnect)的七层协议和实际中使用的TCP/IP四层协议。OS...

Golang http server代码原理学习

本文基于Go 1.7.1,所有列的Go标准库的代码均来自于go/src/net/http/server.go文件。代码列的有点多,感觉有点乱,但是感觉代码列不全对于想看代码的人又难受。好吧,其实是写的乱。看起来需要耐心...拨云见雾Go中要实现一个简单的Web server非常的简单:package main import ( "io" "lo...

Go并发模式——Context

Context介绍在Go服务器程序中,每个请求都会有一个goroutine去处理。然而,处理程序往往还需要创建额外的goroutine去访问后端资源,比如数据库、RPC服务等。由于这些goroutine都是在处理同一个请求,所以它们往往需要访问一些共享的资源,比如用户身份信息、认证token、请求截止时间等。而且如果请求超时或者被取消后,所有的goroutine都应该马上退出并且释放相关的资...

Cobra简介

总览Cobra是spf13写的一个编写/生成交互式命令程序的框架,github地址是:https://github.com/spf13/cobra。有很多知名的开源项目都使用了这个框架:KubernetesHugorktetcdDocker (distribution)OpenShiftDelveGopherJSCockroachDBBleveProjectAtomic (enterpris...

构建最小的Go程序镜像

我们知道构建一个Docker镜像的时候往往需要引入一些程序依赖的东西,最常见的就是引入一个基础操作系统镜像,但这样往往会使得编译出来的镜像特别大。但是对于go语言,我们可以使用静态编译的方式构建出超小的镜像。有人会问Go本身不就是静态编译吗?请接着往下看。示例程序package main import ( "fmt" "io/ioutil&qu...
最近评论
小程Markdown写数学公式其实蛮坑的,不支持实时显示。当然也可能是我用的MarkdownPad...
小程倪师哥你好,我也是西电的,我最近也在弄个人主页,请问这个网站您自己发博客的时候是直接写html...
yy你后面一次明显心率高很多,特别是耐力部分,大概要150以上。感觉这个跟高心率的持续时间相关性特别大。
lilimon楼主用的是什么版本?github issue url在哪里?新版本会出现这样的问题吗?很多人应...
jie作者大大,您好。看了文章,我有一个问题。就是文中您说:“当然,很多时候自定义路由是为了减少查询...
徐小鹏其实对于TOB领域,一般Routing会用于一个租户(即公司ID)的概念,用了Routing起...
tina第二个代码块的第6行,引用是low-level的
白色风车beforeMethod的断点没有拦截住,但是UI的trace界面能看到请求了,应该启动成功了...
31(ó﹏ò。)a好棒
耳朵博主太棒了 ,是我Flink文档看的不仔细。麻烦博主了