-
golang panic的捕获
所属栏目:[大数据] 日期:2020-12-16 热度:85
panic发生时, 会导致进程挂掉。为了处理panic, 可以使用recover捕获,然后处理。 下面以下标引用越界问题为例进行说明。 正常情况下,代码中如果出现下标越界,会直接触发panic, 导致进程挂掉。 例如下面的例子: package main import ( "fmt" ) func mai[详细]
-
golang容器内DNS解析问题排查
所属栏目:[大数据] 日期:2020-12-16 热度:92
先写一个一个测试案例 package main import ( "fmt" "net" "os" ) func main() { if len (os.Args) != 2 { fmt.Fprintf(os.Stderr, "Usage: %s hostnamen" ,os.Args [0 ]) fmt.Println( "Usage: " ,os.Args [0 ], "hostname" ) os.Exit (1 ) } name := os.A[详细]
-
Golang json 解析
所属栏目:[大数据] 日期:2020-12-16 热度:122
背景: 最近在用iris做web端的时候,遇到了这么一个问题,前端传过来的json串如下: { " Name ": "jiankunking" ," Age ": 12 ," BlogArticles ": { " one ": { " Detail ": "csdn blog" ," Author ": "jiankunking" ," Urls ": { " 1 ": "http://blog.csdn.[详细]
-
Go1.10求给定范围内的素数
所属栏目:[大数据] 日期:2020-12-16 热度:55
package mainimport ( "fmt" ) //素数定义:1除外只能被他本身和1整除的数字 func main() { var list [] int for i := 2 ; i = 100 ; i++ { if i/ 2 == 0 { continue } if !check( list ,i) { list = append( list ,i) } } fmt.Println( list )} //判断给定的[详细]
-
一个比 UUID 快百倍的唯一 ID 生成器
所属栏目:[大数据] 日期:2020-12-16 热度:150
前言 在游戏开发中,我们经常要为 Request、对象或其它东西设置全局唯一的 ID。常见的选择有随机数、时间戳、UUID、用 Redis 生成 ID 等,这些选择要么可能重复,要么太慢,于是我开发了 WUID,一个极快的唯一 ID 生成器。 WUID 比 UUID 快 10-135 倍,比用[详细]
-
解决连通性问题的四种算法
所属栏目:[大数据] 日期:2020-12-16 热度:137
最近做 B 站弹幕分析 的项目,学习 Jieba 中文分词的动态规划算法,发现自己的算法知识待系统的学习,遂读 Sedgewick 的《算法 C 实现第三版》,这一系列算法的代码放在 Github,文章会同步到 SF,随意转载。 连通性问题 问题概述 先来看一张图: 在这个彼此[详细]
-
golang json 性能分析
所属栏目:[大数据] 日期:2020-12-16 热度:155
Json 作为一种重要的数据格式,具有良好的可读性以及自描述性,广泛地应用在各种数据传输场景中。Go 语言里面原生支持了这种数据格式的序列化以及反序列化,内部使用反射机制实现,性能有点差,在高度依赖 json 解析的应用里,往往会成为性能瓶颈,好在已有[详细]
-
初识Golang
所属栏目:[大数据] 日期:2020-12-16 热度:57
//今天第一次看Golang,作为初学者总结一下 为什么是GO 年轻,它的诞生必然有他的意义,根据大家对他的介绍,总结下来如下: Go 语言对于高性能分布式系统领域而言,无疑比大多数其它语言有着更高的开发效率,Go语言具有很强的表达能力,它简洁、清晰而高效[详细]
-
SOAP--------Golang对接WebService服务实战
所属栏目:[大数据] 日期:2020-12-16 热度:101
背景 最近项目中在对接某保险公司线上webService接口时,无奈Golang没有像java那般有现成的jar包或库使用,只好从底层基于soap协议通过http post来实现对接。 对接过程中,由于开始并未注意版本问题(webService接口使用soap1.2协议版本,对接时使用soap1.1[详细]
-
记一次golang内存泄露问题修复
所属栏目:[大数据] 日期:2020-12-16 热度:78
前言 公司一个项目中需实现以下功能: 读取主程序产生的日志. 将日志处理后存入mongodb 实现思路大致如下: 使用filewatch监视文件,一旦文件产生改变读取新添加数据. 将读取数据处理后存入mongodb. 问题 程序运行一段时间后发现系统变的巨卡,查看进程管理发现[详细]
-
使用go进行 JWT 验证
所属栏目:[大数据] 日期:2020-12-16 热度:86
对于使用负载均衡的服务器来说,使用 JWT(JSON WEB TOKEN) 是一个更优的选择,session受到单台服务器的限制,一个用户登录过后就只能分配到 这一台服务器上,这和负载均衡的初衷不一致啊,而 jwt 就解决了这类的痛点 使用 JWT 的场景 身份验证 用户在登录过后服务[详细]
-
Go实战--Golang Response Snippets: JSON, XML and more(http请
所属栏目:[大数据] 日期:2020-12-16 热度:72
号外!!!号外!!! 截至 2018 年 1 月 24 日,通过统计 GitHub 上活跃用户的活动情况,对每种语言的排名结果如下: 2018 年要学习的编程语言 观察这种编程语言趋势的最好方法就是,确定具有快速增长的用户群的新兴编程语言: 明显能看到,用户群增长最快的[详细]
-
go anonymous function
所属栏目:[大数据] 日期:2020-12-16 热度:166
package main import "fmt" // function add func add(a,b int) int { return a + b } // 1 func testFunc1() { // function "add" to var "f1"// then "f1" is a functionf1 := add// type of f1 = func(int int) intfmt.Printf("type of f1 = %Tn",f1)//[详细]
-
我开源了一个私人云盘——蓝眼云盘
所属栏目:[大数据] 日期:2020-12-16 热度:152
蓝眼云盘 在线Demo (体验账号: demo@tank.eyeblue.cn 密码:123456) 后端tank地址 前端tank-front地址 简介 蓝眼云盘是 蓝眼系列开源软件 之一,也是蓝眼系列其他软件的基础服务软件。蓝眼博客具有以下几大特色: 1. 支持docker 蓝眼云盘的docker镜像已经发[详细]
-
golang pprof 性能分析工具
所属栏目:[大数据] 日期:2020-12-16 热度:53
性能优化是个永恒的话题,而很多时候我们在作性能优化的时候,往往基于代码上面的直觉,把所有能想到的优化都优化了一遍,不错过任何小的优化点,结果整个代码的逻辑变得极其复杂,而性能上面并没有太大的提升。事实上,性能问题往往集中在某些小点,有时候[详细]
-
golang https server(二)
所属栏目:[大数据] 日期:2020-12-16 热度:56
之前的blog介绍了https的单向认证流程,这里再介绍一下双向认证的过程。人多人没有理解双向认证的过程,这里先介绍一下认证流程 这里的ca证书其实是可以不一样的,这是很多人的误区,服务端证书用服务端的ca签名过后,客户端应该用服务的ca去认证,而不是客[详细]
-
golang 单元测试
所属栏目:[大数据] 日期:2020-12-16 热度:140
单元测试是质量保证十分重要的一环,好的单元测试不仅能及时地发现问题,更能够方便地调试,提高生产效率,所以很多人认为写单元测试是需要额外的时间,会降低生产效率,是对单元测试最大的偏见和误解 go 语言原生支持了单元测试,使用上非常简单,测试代码[详细]
-
Golang将一个项目附加到一个片段
所属栏目:[大数据] 日期:2020-12-16 热度:90
为什么保持不变? append()是否生成新的片段? package mainimport ( "fmt")var a = make([]int,7,8)func Test(slice []int) { slice = append(slice,100) fmt.Println(slice)}func main() { for i := 0; i 7; i++ { a[i] = i } Test(a) fmt.Println(a)} 在[详细]
-
Go实战--Closures in golang(匿名函数、闭包)
所属栏目:[大数据] 日期:2020-12-16 热度:138
号外!!号外!! 在拉勾网上搜索go的职位(北京): 2017年2月14日搜索结果:119个 2017年6月19日搜索结果:163个 2018年1月31日搜索结果:268个 生命不止,继续 go go go !!! 曾记得,某年某月某日,去快手面试。面试官的第一个问题就是: 面试官:“什么是[详细]
-
初学golang的一些笔记
所属栏目:[大数据] 日期:2020-12-16 热度:195
1、切片相关方法 make([]int,len,cap) 利用数组或切片创建一个新的切片,len为长度,cap为最大容量 len() 获取数组或切片的长度 cap() 获取切片的最大容量 append(slice,a,b,c) 向切片中追加元素,可以同时追加多个 copy(a,b) 拷贝a的内容到b 2、range关键字[详细]
-
Go语言defer语句
所属栏目:[大数据] 日期:2020-12-16 热度:59
与 select 语句一样,Go语言中的 defer 语句也非常独特,而且比前者有过之而无不及。 defer 语句仅能被放置在函数或方法中。它由关键字 defer 和一个调用表达式组成。注意,这里的调用表达式所表示的既不能是对Go语言内建函数的调用也不能是对Go语言标准库代[详细]
-
golang通用连接池的实现
所属栏目:[大数据] 日期:2020-12-16 热度:174
golang的channel除了goroutine通信之外还有很多其他的功能,本文将实现一种基于channel的通用连接池。 更新 添加超时处理,需要实现 GetActiveTime 方法获取最后活跃时间。 何为通用? 连接池的实现不依赖具体的实例,而依赖某个接口,本文的连接池选用的是[详细]
-
Go实战--Golang中http中间件(goji/httpauth、urfave/negroni、go
所属栏目:[大数据] 日期:2020-12-16 热度:165
生命不止,继续go go go !!! 不知不觉,2018年第一个月份已经过完,看了看一月份uv统计: 北京 9887 深圳 5088 上海 4767 杭州 2834 广州 2559 成都 2059 武汉 1536 南京 1444 西安 982 言归正传! Middlewares(中间件) wiki上对中间件的解释: 中间件(英语[详细]
-
golang变量作用域问题-避免使用全局变量
所属栏目:[大数据] 日期:2020-12-16 热度:112
最近遇到了一个变量作用域的问题,一个比较低级的问题,可能作为一个熟手不应该犯这样的低级错误,但是golang的语法特点可能让你稍微不注意就踩坑,嘿嘿。 变量作用域 全局变量的作用域是整个包,局部变量的作用域是该变量所在的花括号内,这是一个很基础的[详细]
-
golang 网络框架之 grpc
所属栏目:[大数据] 日期:2020-12-16 热度:75
grpc 是 google 开源的一款网络框架,具有极好的性能,可能是目前性能最好的网络框架,支持流式 rpc,可以很方便地构建消息订阅发布系统,支持几乎所有主流的语言,使用上面也很简单,公司很多服务基于 grpc 框架构建,运行非常稳定 开始之前首先你要知道网[详细]
