WebSocket 双端实践(iOS/ Golang)

级别:★★☆☆☆ 标签:「WebSocket」「Starscream」「Golang」 作者: 647 审校: 沐灵洛 上一篇:《今天我们来聊一聊WebSocket》 主要介绍了WebSocket的原理、应用场景等等。 本篇将介绍WebSocket的双端实战(Client、Server)。 分为两部分: 1.Client:使用Starscream(swift)完成客户端长链需求。 2.Server:使用Golang完成服务端长链需求。 一、使用Starscream(swift)完成客户端长链需求...阅读全文

掘金 2020年02月13日 QiShare

Go Web编程--应用数据库

今天我们继续接着前几篇关于Go Web编程的文章往下延伸。在Web应用程序中几乎每个应用场景都需要存储和检索数据库中的数据。当你处理动态内容,为用户提供表单以输入数据或存储登录名和密码凭据以供用户进行身份验证时,都需要用到数据库。 MySQL数据库是整个互联网中最常用的数据库。MySQL已经存在了很长时间,还在不停的进化并且随着互联网一起发展已多次证明了其位置和稳定性。 本文我们将探究Go中数据库访问的基础知识,在开始之前我们先更新一下我们使用的开发环境,之前在文章用Docker快速搭建Go开发...阅读全文

掘金 2020年02月13日 kevinyan

Go Web编程--应用数据库

今天我们继续接着前几篇关于Go Web编程的文章往下延伸。在Web应用程序中几乎每个应用场景都需要存储和检索数据库中的数据。当你处理动态内容,为用户提供表单以输入数据或存储登录名和密码凭据以供用户进行身份验证时,都需要用到数据库。 MySQL数据库是整个互联网中最常用的数据库。MySQL已经存在了很长时间,还在不停的进化并且随着互联网一起发展已多次证明了其位置和稳定性。 本文我们将探究Go中数据库访问的基础知识,在开始之前我们先更新一下我们使用的开发环境,之前在文章用Docker快速搭建Go开发...阅读全文

Segmentfault 2020-02-17 09:32:33 Kevin

图解kubernetes容器状态同步机制核心实现

在K8s中将Pod调度到某一台Node节点之后,后续的状态维护信息则是由对应机器上的kubelet进行维护,如何实时反馈本地运行状态,并通知apiserver则是设计的难点, 本节主要是通过感知Pod状态变化和探测状态改变两个流程来实际分析其核心数据结构,来了解内部设计 1. 状态管理 1.1 静态Pod 静态Pod主要是指的那些不是通过感知apiserver创建的pod, 因为apiserver上并不包含,但是同时也需要维护和获取这类Pod的状态, k8s中就设计了一个镜像Pod的概念,其实就...阅读全文

掘金 2020年02月13日 8小时_2020

Go 每日一库之 godotenv

简介 twelve-factor应用提倡将配置存储在环境变量中。任何从开发环境切换到生产环境时需要修改的东西都从代码抽取到环境变量里。 但是在实际开发中,如果同一台机器运行多个项目,设置环境变量容易冲突,不实用。godotenv库从.env文件中读取配置, 然后存储到程序的环境变量中。在代码中可以使用读取非常方便。godotenv源于一个 Ruby 的开源项目dotenv。 快速使用 第三方库需要先安装: $ go get github.com/joho/godotenv 复制代码后使用: pa...阅读全文

掘金 2020年02月12日 darjun

X.2 Go语言使用Gonum包辅助科学计算 -- 在图表中输出汉字

细心的读者可能会发现,X.1 文中代码5‑46中给图表设定的标题字符串中最后应该有两个汉字“示例”,但是在输出的图片中却没有显示出来。这是因为gonum/plot包默认的字体仅支持英文而不支持中文,如果要显示中文,需要手工指定字体。* 注:本文中代码使用了自己编写的例子工具包tools,可参看 https://www.jianshu.com/p/ec05306f919a 一文如何使用,也可以不用tools包,直接使用fmt.Println函数代替t.Printfln函数即可。 package m...阅读全文

简书 2020-02-13 09:32:52 陆满庭

X.3 Go语言使用Gonum包辅助科学计算 -- 在图表中增加sigmoid函数的曲线

一张图表中也可以同时绘制多条折线,下面我们就在前面图表的基础上多增加一条表达数学函数 y = sigmoid(x) 的折线。sigmoid这个函数在人工智能的深度学习领域具有重要的地位,在神经网络的优化中发挥过非常巨大的作用,它的数学表达是: 其中,e是数学中的自然底数。sigmoid函数的特性是会把任何数字收敛到[0, 1]的范围之内,就是这点导致它在科学计算中有着广泛的应用范畴。下面我们就用代码来将sigmoid函数的曲线加入到图表中。注意通过增加折线中点的个数,可以模拟出接近平滑曲线的效果...阅读全文

简书 2020-02-13 09:32:51 陆满庭

2020 年的八个 Web 开发技术新趋势「本月最佳话题」

导读:即使2020开局有一些变化 ,但请保持精进。是的,Web开发人员需要在不断发展的环境中成长,需要适应技术的变化,跟得上和学得进去新技术。软件开发行业,其实与其它行业一样,紧跟最新出现的重要趋势和技术,避免学习不成熟或未就绪的技术也很重要。在这里,我们总结一份清单,列出2020年以及之后主导的技术趋势,供各位参考。1、人工智能 根据Gartner预测,到2022年,人工智能市场规模将达到3.9亿美元,许多公司已经将AI纳入其数字化战略中,目前亦没有任何迹象表明它会放缓。结合目前冠状肺炎的情势...阅读全文

简书 2020-02-13 09:32:50 前端小澈

golang断言

类型断言 type assertion 和上节的类型转换不同,类型断言是将接口类型的值x,转换成类型T。 格式为: x.(T) v := x.(T) v, ok := x.(T) 类型断言的必要条件是x是接口类型,非接口类型的x不能做类型断言: var i int = 10 v := i.(int) //错误 T可以是非接口类型,如果想断言合法,则T应该实现x的接口。 T也可以是接口,则x的动态类型也应该实现接口T。 var x interface{} = 7 // x 的动态类型为int, 值...阅读全文

简书 2020-02-13 09:32:48 哆啦在这A梦在哪

Golang 笔记之深入浮点数

引言 下面的一段简单程序 0.3 + 0.6 结果是什么? var f1 float64 = 0.3 有人会天真的认为是0.9,但实际输出却是0.8999999999999999(go 1.13.5)问题在于大多数小数表示成二进制之后是近似且无限的。 以0.1为例。它可能是你能想到的最简单的十进制之一,但是二进制看起来却非常复杂:0.0001100110011001100… 其是一串连续循环无限的数字(涉及到10进制转换为2进制,暂不介绍)。 结果的荒诞性告诉我们,必须深入理解浮点数在计算机中的...阅读全文

简书 2020-02-13 09:32:48 唯识相链2

golang中的接口实现

golang中的接口实现 // 定义一个接口 type People interface { getAge() int // 定义抽象方法1 getName() string // 定义抽象方法2 } type Man struct { } func (a *Man) getAge() int { // 实现抽象方法1 return 18 } func (a *Main) getName() string { // 实现抽象方法2 return "Sheldon" } func TestPeop...阅读全文

简书 2020-02-13 09:32:46 哆啦在这A梦在哪

Nil Channels 的作用

思考来源于一次忘记初始化channel,造成程序卡死。 查找资料发现操作nil channels会永远阻塞,这个特性看起来似乎没什么用,甚至可能造成BUG,但Golang为何要保留这个特性? Google之:关键字 golang nil channel 相关讨论还挺多 甚至还有新鲜的关于Go 2的提议:proposal: language: Go 2: panic on send/receive on nil channel 以及Nil Chan的用法: nil-channels-always-...阅读全文

简书 2020-02-13 09:32:46 bysir

Go Module 常见问题

为什么使用Go Module? 不需要将项目放在GOPATH以及长长的路径下 依赖库的版本控制 有GOPROXY,拉取任何代码都十分方便 如何使用 在go module才诞生的前几个版本中使用它你会遇到诸多疑难杂症,但在1.13版本中go module已经足够完善,所以我推荐升级到1.13版本。这篇文章记录的也是在Go1.13环境下遇到的问题。 如何使用并不是此文重点,所以请读官方文章: using-go-modules go1.13 常见问题 Proxy 我们的项目总会依赖到墙外的包,如goo...阅读全文

简书 2020-02-13 09:32:45 bysir

废旧金属液压打包机多少钱

废旧金属液压打包机多少钱【电同微156-9027-3307】属打包机,箱式剪切机,龙门剪切机都输液液压打包机,只是形式不一致,对打包的材质有所不同,价格也相差很大,不能一个而论,下面就给大家说一下金属液压打包机的区分。 传统的单机情况下,通过内存或者数据的主键就可以维护一个唯一ID,但随着业务增长,免不了增加主机和分库分表,在这种情况下如何表示一个唯一的订单或者用户呢?这就是分布式唯一ID的意义。如果并非此场景,利用数据库自增值或者时间戳随机种子(为避免1ms内碰撞,可以再维护几位顺序位,可以参...阅读全文

简书 2020-02-13 09:32:45 艾比3434

leetcode_8

Golang: 思路:这题我也不知道为啥我非要在半夜把这道题做出来,而且还非要丧心病狂的去用两种方式解,从而成功拉低了我的提交正确率。。。这题不想多说,这题我第一种代码极烂,完全不推荐大家使用,只是作为一个思路,即使用正则表达式去做这题。 代码如下: func myAtoi(str string) int { reg:=regexp.MustCompile("^\\s*[+-]?0*\\d{1,10}") if reg!=nil{ res:=reg.FindString(str) if res=...阅读全文

简书 2020-02-13 09:32:43 淳属虚构

7天用Go动手写/从零实现Web框架Gee

目录 第一天:前置知识(http.Handler接口),Code - Github 第二天:上下文设计(Context),Code - Github 第三天:Tire树路由(Router),Code - Github 第四天:分组控制(Group),Code - Github 第五天:中间件(Middleware),Code - Github 第六天:HTML模板(Template),Code - Github 第七天:错误恢复(Panic Recover),Code - Github 设计一个...阅读全文

Segmentfault 2020-02-16 20:32:33 极客兔兔

LeetCode - 字符串排列 - Golang

题目:给定两个字符串 s1 和 s2,写一个函数来判断s2是否包含s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。 Golang代码实现尝试如下:示例1: 输入: s1 = "ab" s2 = "eidbaooo" 输出: True 解释: s2 包含 s1 的排列之一 ("ba"). 示例2: 输入: s1= "ab" s2 = "eidboaoo" 输出: False 基于Golang的代码实现如下: if s1 == "" { return true } // s1的长...阅读全文

Segmentfault 2020-02-16 18:32:32 邹友

Go 每日一库之 godotenv

简介 twelve-factor应用提倡将配置存储在环境变量中。任何从开发环境切换到生产环境时需要修改的东西都从代码抽取到环境变量里。但是在实际开发中,如果同一台机器运行多个项目,设置环境变量容易冲突,不实用。godotenv库从.env文件中读取配置,然后存储到程序的环境变量中。在代码中可以使用读取非常方便。godotenv源于一个 Ruby 的开源项目dotenv。 快速使用 第三方库需要先安装: $ go get github.com/joho/godotenv 后使用: package ...阅读全文

Segmentfault 2020-02-16 16:32:34 darjun

LeetCode - 最长公共前缀 - Golang

题目:编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。 基于Golang的代码实现如下: func longestCommonPrefix(strs []string) string { // 定义返回值 var s string // 首先找到最短的字符串...阅读全文

Segmentfault 2020-02-16 10:32:33 邹友