Golang计算MD5

Golang计算MD5 1.单向加密 什么是单向加密算法。简而言之就是不可解密的加密方法,也叫作非可逆加密。这些学术 解释都不用管它,反正就是一群数学家老爷爷通过各种证明得到的一种方法,用这种方法加密 过的东西,地球上现有的人类在有限的时间内是无法解密的,包括加密者自己。既然加密者自己 都无法解密,那这乖僻的加密算法有个毛用阿?哪些场景需要这种有去无回的加密方式呢? 这里先了解下单向加密的特征: 首先,不可解密性在上面已经提到了,目的就是掩藏明文。其次单向加密算法的另外两个特征 使得它更接地气,...阅读全文

2014-12-30 11:28 YangJunjie
阅读:23893 评论:1

golang文件读写

读写文件要用到os包中的 func OpenFile(name string, flag int, perm FileMode) (*File, error) 该方法第一个参数为文件路径,第二个参数控制文件的打开方式,第三个参数控制文件模式 可用的打开方式有 const ( //只读模式 O_RDONLY int = syscall.O_RDONLY // open the file read-only. //只写模式 O_WRONLY int = syscall.O_WRONLY // ope...阅读全文

2016-06-28 10:27 cjh1005221032
阅读:1383 评论:0

优秀的 Go 存储开源项目和库

可以看到,今年谷歌家的 Go 编程语言流行度有着惊人的上升趋势,其发展也是越来越好,因此本文整理了一些优秀的 Go 存储相关开源项目和库,一起分享,一起学习。 存储服务器(Storage Server) Go 实现的存储服务器 minio - Minio 是一个与 Amazon S3 APIs 兼容的开源对象存储服务器,分布式存储方案 rclone - “用于云存储的 Rsync” - Google Drive, Amazon Drive, S3, Dropbox, Backblaze B2, ...阅读全文

2017-02-14 19:00:08 编辑部的故事
阅读:17244 评论:2

GitHub上优秀的Go开源项目

近一年来,学习和研究Go语言,断断续续的收集了一些比较优秀的开源项目,这些项目都非常不错,可以供我们学习和研究Go用,从中可以学到很多关于Go的使用、技巧以及相关工具和方法。我把他们整理发出来,大家有兴趣可以根据自己的爱好选择一些进行研究和阅读,提升自己的能力,更好的使用Go语言,开发出更优秀的项目。 docker无人不知的虚拟华平台,开源的应用容器引擎,借助该引擎,开发者可以打包他们的应用,移植到任何平台上。 https://github.com/docker/docker 38154 sta...阅读全文

Dec 27, 2016 飞雪无情
阅读:10550 评论:0

Go 实现洗牌算法

shuffle算法,我把它叫做洗牌算法因为他和我们洗扑克牌的方式很像,它的目标正好与各种的sort算法相反,即把一个有序(或者无序)的一系列元素打乱,以满足需求。 如果你是python或者ruby程序员可能你觉得很简单,因为他们在语言层面上实现了很多很方便的函数,然而Go语言要想打乱数组或者切片中数据的顺序,需要自己实现的。 Ruby中有一个叫shuffle的方法: Ruby array = [1, 2, 3, 4, 5] array.shuffle # shuffles the array! ...阅读全文

2017年2月26日 谢权
阅读:5969 评论:1

golang单例模式

1、定义:单例对象的类必须保证只有一个实例存在,全局有唯一接口访问。 2、分类: 懒汉方式:指全局的单例实例在第一次被使用时构建。 饿汉方式:指全局的单例实例在类装载时构建。 3、实现: (1)懒汉方式 1 type singleton struct{} 2 var ins *singleton 3 func GetIns() *singleton{ 4 if ins == nil { 5 ins = &singleton{} 6 } 7 return ins 8 } 缺点:非线程安全。当正在创...阅读全文

2017-10-20 16:23 YYRise
阅读:22428 评论:0

golang aws-sdk-go 之 s3 服务

s3 是 aws 提供的分布式文件服务,价格比较优惠,经常被用来作为日志的持久化存储,大数据处理结果的输入输出等 s3 服务提供命令行工具,可以很方便地上传、下载、删除文件,普通 golang 程序如果需要访问 s3 上文件,一种简单方式可以先将 s3 上文件下载到本地,然后直接访问本地文件即可,但是这种方式需要一个额外的步骤,下载到本地,有额外的运维成本,需要额外的磁盘空间,使用上面不是很灵活,此外,微服务应该尽可能地降低对本地数据的依赖,这种设计也不符合微服务的设计思想 使用 aws-sdk...阅读全文

2018-03-04 20:34:39 hatlonely
阅读:4521 评论:0

golang高性能日志库zap配置示例

golang高性能日志库zap配置示例 zap是uber开源的Go高性能日志库,gitlab地址 安装 go get -u go.uber.org/zap 请注意,zap仅支持两个最新的Go版本。 示例 简单示例 格式化输出 package main import ( "go.uber.org/zap" "time" ) func main() { // zap.NewDevelopment 格式化输出 logger, _ := zap.NewDevelopment() defer logger...阅读全文

阅读:32105 评论:2

golang使用fasthttp 发起http请求

fasthttp 据说是目前golang性能最好的http库,相对于自带的net/http,性能说是有10倍的提升,具体介绍可以看看官方介绍: valyala/fasthttp 正好最近需要用到,但是发现网上的资料也不是很多,特别是关于client模块的就更少了,只有一些翻译成中文的文档,于是乎就把关于client的代码研究了一下,总结了一些比较简单的使用方法,测试对比net/http是有一定程度的提升,如果需要用到http client似乎fasthttp也是一个不错的选择,当然fasthtt...阅读全文

2019.01.16 11:59 gogo_zhou
阅读:13103 评论:0

Go日志框架zap与lumberjack简单配置封装

简介 zap zap是uber开源的Go高性能日志库 https://github.com/uber-go/zap lumberjack Lumberjack用于将日志写入滚动文件。zap 不支持文件归档,如果要支持文件按大小或者时间归档,需要使用lumberjack,lumberjack也是zap官方推荐的。 https://github.com/natefinch/lumberjack 简单使用 工程结构 项目结构.png 核心代码 LogCore /** * 获取日志 * filePath...阅读全文

2019.03.10 00:06 clawhub
阅读:11547 评论:0

Go 中的缓存现状

> 这篇文章登上了 Golang 在 Reddit [subreddit](https://www.reddit.com/r/golang/comments/az99sl/the_state_of_caching_in_go_dgraph_blog/) 板块的顶部,并在 [Hacker News](https://news.ycombinator.com/item?id=19344624) 首页排名到第二名。欢迎各位来阅读讨论,并在 [Github](https://github.com/dgr...阅读全文

2019-03-30 18:14:02 JYSDeveloper
阅读:9942 评论:1

GO爬虫必备之HTTP请求QuickStart

[原文地址](https://zhuanlan.zhihu.com/p/61355955) 前几天在 "知乎想法" 谈到了一个话题,如何模仿学习,举了通过 net/http client 模仿 Pyhton 的requests的例子。但并未实践,难道想法真的只能是想法吗?当然不是,于是我决定先暂停一周 GO 笔记,来实践下自己的想法。 [有些新的知识,我们可以通过模仿学习](https://www.zhihu.com/pin/1112419189498933248) 本文将通过...阅读全文

2019-05-20 14:11:48 poloxue
阅读:839 评论:0

go高效洗牌算法

我们团队全面采用golang,语法简单,开发效率高,运行效率也高,用gin可以很轻松撑起高并发。强烈推荐大家学习和使用它,国内越来越多的公司转go----php转go,python转go甚至是java转go----成为很多企业的选择。比如头条,知乎,B站,360等都在核心系统中使用go。正好有一个小需求,需要将一个切片里的数据随机打散重排。我搜了下,发现一个最高效最简单的办法--使用go自带的rand.Perm()函数。先看源代码: package main import ("fmt""math...阅读全文

阅读:3698 评论:2

Golang 爬虫快速入门 | 获取B站全站的视频数据

原文首发并持续更新于 https://imagician.net/archives/92/,欲了解更多信息可以前往我的博客https://imagician.net/ 提到爬虫,总会联想到Python。似乎Python是爬虫的唯一选择。爬虫只是完成一个访问页面然后收集数据的任务,用任何语言来写都能实现。相比较Python快速实现但是庞大的体型,Golang来写爬虫似乎是更好的又一选择。 HTTP请求 Golang语言的HTTP请求库不需要使用第三方的库,标准库就内置了足够好的支持: packag...阅读全文

2020-04-14 13:32:44 zhshch
阅读:2366 评论:0

golang 生成随机数

真随机和伪随机概念 先大概了解一下伪随机和真随机的概念。根据密码学原理,要想对一个“随机数”进行随机性检验有以下几个标准: 统计学伪随机性 - 在给定的随机比特流样本中,1 的数量大致等于 0 的数量,也就是说,“10”“01”“00”“11” 四者数量大致相等。说人话就是:“一眼看上去是随机的”。 密码学安全伪随机性 - 就是给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。 真随机性 - 其定义为随机样本不可重现。 根据以上几个标准,其对应的随机数也就分为以下几类: 伪随机...阅读全文

2020-05-09 19:32:42 顶尖少爷
阅读:9544 评论:0

常用缓存技巧

简介 在项目中,大家经常会遇到处理高并发的情况,缓存是应对高并发的有效手段之一。这篇文章简单介绍一下常用的缓存手段。当然,使用缓存有一个前提:数据不是实时变更的。方法一、CDNCDN一般用来做静态资源的缓存,但是稍微进行修改,便可以用来缓存动态接口的返回。当请求资源在CDN不存在时,请求会到回源机上,在回源机的Nginx上,根据路由规则,将请求转发到不同服务,返回结果会存在到CDN上。如下图所示: Nginx实现upstreamfs.com_backend {server127.0.0.1:80...阅读全文

2020-05-30 21:32:51 shidawuhen
阅读:861 评论:0

使用 GoReleaser 发布你的应用

简介GoReleaser 采用 Golang 开发,是一款用于 Golang 项目的自动发布工具。无需太多配置,只需要几行命令就可以轻松实现跨平台的包编译、打包和发布到 Github、Gitlab 等版本仓库种。安装MacOS1 2 3 4 5 # 最新版本 $ brew install goreleaser/tap/goreleaser # 可能不是最新版本 $ brew install goreleaser 从 Docker 运行1 2 3 4 5 6 7 ...阅读全文

2020-08-07 11:53:00 xiexiaoming
阅读:6119 评论:0

Go 每日一库之 rxgo

简介ReactiveX,简称为 Rx,是一个异步编程的 API。与 callback(回调)、promise(JS 提供这种方式)和 deferred(Python 的 twisted 网络编程库就是使用这种方式)这些异步编程方式有所不同,Rx 是基于事件流的。这里的事件可以是系统中产生或变化的任何东西,在代码中我们一般用对象表示。在 Rx 中,事件流被称为 Observable(可观察的)。事件流需要被 Observer(观察者)处理才有意义。想象一下,我们日常作为一个 Observer,一个...阅读全文

2020-10-19 00:32:32 darjun
阅读:623 评论:0