go

go标准库的学习-crypto/sha256

旧巷老猫 提交于 2020-11-14 01:41:47
参考:https://studygolang.com/pkgdoc 导入方式: import " crypto/sha256 " sha256包实现了SHA224和SHA256哈希算法,参见FIPS 180-4。 Constants const BlockSize = 64 SHA224和SHA256的字节块大小。 const Size = 32 SHA256校验和的字节长度。 const Size224 = 28 SHA224校验和的字节长度。 func Sum256 func Sum256(data [] byte ) [Size] byte 返回数据的SHA256校验和。 举例: package main import ( " fmt " " crypto/sha256 " ) func main() { sum : = sha256.Sum256([] byte ( " hello world\n " )) fmt.Printf( " %x\n " , sum) // a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447 } func New func New() hash.Hash 返回一个新的使用SHA256校验算法的hash.Hash接口。 可见 go标准库的学习-hash 举例:

用 Golang 实现 RSA 加密和签名(有示例)

二次信任 提交于 2020-11-13 15:26:29
本文介绍 RSA 干了什么,以及我们怎样用 Go 实现它。 RSA( Rivest–Shamir–Adleman )加密是使用最广的安全数据加密算法之一。 它是一种非对称加密算法,也叫”单向加密“。用这种方式,任何人都可以很容易地对数据进行加密,而只有用正确的”秘钥“才能解密。 > 如果你想跳过解释直接看源码,点击 这里 。 RSA 加密,一言以蔽之 RSA 是通过生成一个公钥和一个私钥进行加/解密的。公钥和私钥是一起生成的,组成一对秘钥对。 公钥可以用来加密任意的数据,但不能用来解密。 私钥可以用来解密由它对应的公钥加密的数据。 这意味着我们可以把我们的公钥给任何想给的人。之后他们可以把想发送给我们的信息进行加密,唯一能访问这些信息的方式就是用我们的私钥进行解密。 > 秘钥的生成过程,以及信息的加密解密过程不在本文讨论范围内,但是如果你想研究详细信息,这里有一个关于此主题的 强大视频 。 秘钥的生成 我们要做的第一件事就是生成公钥私钥对。这些秘钥是随机生成的,在后面所有的处理中都会用到。 我们用标准库 crypto/rsa 来生成秘钥,用 crypto/rand 库来生成随机数。 // The GenerateKey method takes in a reader that returns random bits, and // the number of bits

九问 Gopher China 2020 讲师之毛康力:从 Go 1.0 使用至今的鲜肉老司机

南笙酒味 提交于 2020-11-13 11:45:55
本期嘉宾:毛康力 PingCAP 研发工程师。目前从事数据库内核开发相关的工作,是 TiDB 项目的核心开发者之一。从 Go 1.0 版本发布时开始接触这门语言,并且在之后的工作中一直使用 Go 作为主力开发语言。早期写过关于 Go 的底层实现的开源电子书《深入解析 Go》,对 Go 的 Runtime 层有比较多的研究。业余喜欢折腾各种编程语言,尤其是 lisp,设计过自己的 lisp 方言并翻译成 Go。其它的关注点,主要还是在分布式系统以及基础架构相关的领域。 目前 Go 语言更新到 1.15 版本,已经是一门11岁的语言了,你觉得 Go 语言依然保持活力的核心竞争力是什么?有什么不足是需要在后续的版本迭代中改进的? 01 Go 语言本身设计得简洁易上手,基础库和核心项目让生态搭建起来了,我认为这是它能保持活力和竞争力的关键因素。 对当前的版本迭代已经挺满意了,感受得到 Go 官方团队的持续努力。 最初是如何接触到 Go 的呢?在使用 Go 之前都写过哪些语言,请谈谈对他们差异的感受。 02 Go 语言 1.0 版本发布的时候,无意中看了一下,然后就爱上这门语言了。 在 Go 之前,算正儿八经写过代码的,就只有 C 吧,C++ 学过但没学会。C 很能够锻炼基础素质,这是一些高级语言里面不容易学到的东西。接触过的其它语言就太多了,从汇编到 C,到 lua,lisp,F#

云原生微服务框架之go-zero

只谈情不闲聊 提交于 2020-11-13 06:30:48
0. go-zero介绍 go-zero是一个集成了各种工程实践的web和rpc框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。 go-zero包含极简的API定义和生成工具goctl,可以根据定义的api文件一键生成Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript代码,并可直接运行。 使用go-zero的好处: 轻松获得支撑千万日活服务的稳定性 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码 微服务治理中间件可无缝集成到其它现有框架使用 极简的API描述,一键生成各端代码 自动校验客户端请求参数合法性 大量微服务治理和并发工具包 1. go-zero框架背景 18年初,晓黑板后端在经过频繁的宕机后,决定从 Java+MongoDB 的单体架构迁移到微服务架构,经过仔细思考和对比,我们决定: 基于Go语言 高效的性能 简洁的语法 广泛验证的工程效率 极致的部署体验 极低的服务端资源成本 自研微服务框架 个人有过很多微服务框架自研经验 需要有更快速的问题定位能力 更便捷的增加新特性 2. go-zero框架设计思考 对于微服务框架的设计,我们期望保障微服务稳定性的同时,也要特别注重研发效率。所以设计之初,我们就有如下一些准则: 保持简单 高可用 高并发 易扩展 弹性设计

TIOBE 3 月编程语言排行榜:Java 大涨,Delphi 辉煌不再!

我是研究僧i 提交于 2020-11-13 04:57:13
时间进入到了3月,虽然受疫情影响,很多公司还是选择远程办公,你是不是依然在家宅着呢?对于已经复工的人来说,上班路上人员众多,一定要做好自我保护,没有什么比生命更重要的! 进入三月,新的编程语言排行榜新鲜出炉,TIOBE 最新发布了 3 月编程语言排行榜。 编程语言排名前20: Java占据榜首,Go 语言挤进前十 从榜单中我们可以看到,前三名分别为 Java、C、Python 。相较于上个月,Java从 1.48% 上升至 2.9%,以 17.78% 的份额稳居第一。 按照 Oracle 对 Java 的发布周期来算,在本月中 Java 14 将会有最新的消息给到开发者,譬如记录 (records)、switch 表达式、模式匹配等。但据《2020 Java 生态系统》报告显示,最受开发者喜爱的依然是 Java 8 及 Java 11。 C语言不愧是年度编程语言,以3.03%的年增长率继续大幅领先。整体上来看,排名前10的语言基本都稳定如常。本月冲出了Go 语言这匹黑马,一路挤进前十。去年同期,Go排在第18位,前两个月的榜单中,Go上升到第14位,然后持续爬升,终于在3月进入前十。 另外,继上个月 Objective-C 排名下降之后,苹果主推的另一大编程语言 Swift 在本月也跌出了 Top 10,位于第 13 名,占比 1.24%。与此同时,VB 倒是出乎意料地进入了

MDF损坏或LDF文件损坏

我怕爱的太早我们不能终老 提交于 2020-11-12 20:47:01
MDF损坏或LDF损坏 MDF丢失或LDF丢失 注意,这些情况必须要相同版本的sql server才能操作成功 【1】当MDF损坏时 1.备份结尾日志   http://www.cnblogs.com/gered/p/8964424.html 【2】当LDF损坏时 (参考:http://www.cnblogs.com/CareySon/archive/2013/06/16/3138742.html)   (1)重做日志文件    -- 设置库为紧急状态 alter database [ 11test ] set emergency -- 设置为单用户模式 alter database [ 11test ] set single_user use master; GO alter database [ 11test ] set Emergency; GO exec sp_dboption [ 11test ] , single , true GO -- 重建数据库日志文件 alter database [ 11test ] Rebuild Log on (name = FightWarPkDb,filename = ' C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\11test_log

nginx:反向代理到grpc server

不羁岁月 提交于 2020-11-12 20:43:14
1.nginx 反向代理到grpc http http v2 (grpc) 后端golang使用了grpc开发了部分微服务,访问时直接使用端口请求。 安全隐患,需要开放端口. grpc的go服务器,没有前置的nginx作为缓冲,难以支持大量请求。 直接让公网的请求连接到go编写的grpc的服务,遇到慢请求时,会被拖垮。 eg:每一个客户端的请求上传大文件时,占用一个grpc连接, 公网耗时较长, 且grpc server处理效率较低. eg:nginx在接收到上传的文件后,代理请求, 在内网直接连接go grpc server, 优于外网直接连接. 2.grpc app 配置 grpc app: 端口 127.0.0.1:9091 127.0.0.1:9092 3.nginx conf grpcapp.conf: upstream grpcservers { hash $request_uri; server 127.0.0.1:9002; server 127.0.0.1:9003; } server { listen 9090 http2; access_log ./logs/grpc_app/api.access.log ; error_log ./logs/grpc_app/api.errors.log ; location / { grpc_pass grpc:/

北工IoT--免费的手机控制单片机解决方案

旧时模样 提交于 2020-11-12 11:53:48
北工IoT--免费的手机控制单片机解决方案 Start.前言 一、北工IoT是什么? 二、接入北工IoT(ESP8266开发板举例) 第一步 配置下位机(将下位机配置成TCP服务器即可) 1.1 方法一 使用ESP8266 AT指令配置 1.2 方法二 Arduino环境下使用ESP8266库开发 1.3 方法三:无需编程,使用北工IoT定制级官方固件 1.4 方法四:海纳百川,兼容并蓄 第二步 配置北工IoT手机APP(功能举例) 2.1 WIFI遥控车系统 2.2 万能控制系统 2.3 WIFI调试通信 三、下载地址 1.小米应用商店下载(传送门:GO) 2.北寒余工作室官网下载(传送门:GO) End.文末福利 Start.前言 如果说 esp8266 给下位机带来了无限可能,那么一款合适的 上位机 也将帮助更多电子爱好者们实现创意的满足。于是乎, 北工IoT 它来了, 无需注册,不分个人用途和商业用途,只要你想用,都就可以免费,更无设备个数限制,连接下位机即可用。 一、北工IoT是什么? 北工IoT视频简介 北工IoT,由北寒余工作室独立开发,为北寒余工作室年度项目--北工IoT系列核心部分。本软件适用所有基于TCP协议的界面交互,接入设备为服务器,按键功能自定义,你可以根据自己需要进行自定义设置,本软件通过WiFi进行连接,TCP协议进行通信,相比蓝牙,红外等方式