defer 的一些用法和猜测

以前的代码中,基本上只使用了 defer 作为防御程序 panic 退出的手段,没有仔细考虑过对返回值的影响。今天有同事提到: 如果执行过程中发生 panic,defer函数 recover() != nil的情况下,未命名的返回值的函数会返回什么呢? 之前并没有没有想过这个问题,猜想应该是返回该类型的默认值,试了一下果然如此。 func fooA() float64 { defer func() { if err := recover(); err != nil { } }() *(*floa...阅读全文

简书 2019.08.21 20:23* SpikeQin

golang系列教程(七)—— 和mysql打交道

mysql简介 mysql是关系型数据库RDBMS(Relational database management system)的典型代表,也是后台开发中打交道最多的一个组件。 go-sql-driver访问数据库 插入操作 func InsertUser(user bean.User) (bool){ //开启事务 tx, err := DB.Begin() if err != nil{ fmt.Println("tx fail") return false } //准备sql语句 stmt,...阅读全文

掘金 2019年08月20日 叶不闻

go 学习笔记之go是不是面向对象语言是否支持面对对象编程?

面向对象编程风格深受广大开发者喜欢,尤其是以 C++, Java 为典型代表的编程语言大行其道,十分流行! 有意思的是这两中语言几乎毫无意外都来源于 C 语言,却不同于 C 的面向过程编程,这种面向对象的编程风格给开发者带来了极大的便利性,解放了劳动,松耦合,高内聚也成为设计的标准,从而让我们能够更加愉快地复制粘贴,做代码的搬运工,很多第三方工具开箱即用,语义明确,职责清晰,这都是面向对象编程的好处! Go 语言也是来源于 C 语言,不知道你是否也会好奇 Go 语言是否支持面向对象这种编程风格呢...阅读全文

掘金 2019年08月21日 雪之梦技术驿站

兄弟连区块链课程大纲,领取视频请加微信yinchengak48

所处阶段主讲内容技术要点学习目标第一阶段Go语言开发入门实战1.Go语言介绍及开发环境搭建1.Go语言是什么2.Go语言优势3.Go语言适合来做什么4.Go语言安装和设置5.标准命令概述6.第一个Go语言程序课程设计理念:夯实基础,Go语言作为区块链技术第一编程语言, 学习Go语言编程从入门到精通,从单纯的语法理解到灵活应用解决实际问题,有助于区块链技术基础做铺垫,掌握Linux和Windows双系统开发环境,掌握常见数据结构和算法(时间复杂度计算,排序,搜索,栈,队列,二叉树),建立面向对象思...阅读全文

Go语言中文网 2019-08-21 23:17:22 xiongdilian

go 学习笔记之go是不是面向对象语言是否支持面对对象编程?

面向对象编程风格深受广大开发者喜欢,尤其是以 C++, Java 为典型代表的编程语言大行其道,十分流行! 有意思的是这两中语言几乎毫无意外都来源于 C 语言,却不同于 C 的面向过程编程,这种面向对象的编程风格给开发者带来了极大的便利性,解放了劳动,松耦合,高内聚也成为设计的标准,从而让我们能够更加愉快地复制粘贴,做代码的搬运工,很多第三方工具开箱即用,语义明确,职责清晰,这都是面向对象编程的好处! Go 语言也是来源于 C 语言,不知道你是否也会好奇 Go 语言是否支持面向对象这种编程风格呢...阅读全文

Segmentfault 2019-08-22 11:32:48 雪之梦技术驿站

后端架构设计,如何扛住100亿次请求?

1. 前言前几天,偶然看到了 《扛住100亿次请求——如何做一个“有把握”的春晚红包系统”》一文,看完以后,感慨良多,收益很多。正所谓他山之石,可以攻玉,虽然此文发表于2015年,我看到时已经过去良久,但是其中的思想仍然是可以为很多后端设计借鉴。同时作为一微信后端工程师,看完以后又会思考,学习了这样的文章以后,是否能给自己的工作带来一些实际的经验呢?所谓纸上得来终觉浅,绝知此事要躬行,能否自己实践一下100亿次红包请求呢?否则读完以后脑子里能剩下的东西 不过就是100亿 1400万QPS整流 这...阅读全文

简书 2019.08.21 18:07 Java架构师CAT

golang map[string]interface{}进行反序列化

js := `{"int":1,"string":"qwertyuiop","float":1.111}` jsm := make(map[string]interface{}) err := json.Unmarshal([]byte(js), &jsm) 数值类型 会全部解析为 float64类型 而不会按照原来的整数int 类型如上述代码中 key为 int 和 float 等数值类型的值,都将解析为 float64。 fork,v := range jsm { switch vType ...阅读全文

Golang-01 windows 环境 gin + swagger

0x00 前言 面向读者: 第一次在Windows环境构建go开发环境. 本文目的 学习使用gin进行接口开发, 并为此接口服务添加 swagger 接口文档功能 注意: 请自带梯子 0x01 环境 本文开发环境为Windows 7, 所以这里以 win 7 为例进行介绍. 下载安装包 首先在官网https://golang.org/dl/, 选择msi安装包. 安装包下载 安装 大力双击下载到的安装文件, 我们这里把它安装到D:\go 目录 安装 创建工作目录 手动创建目录 D:\go_bas...阅读全文

简书 2019.08.21 18:13 国服最坑开发

小团队从0搭建devOPS平台-Alertmanager报警平台

上一篇(https://www.jianshu.com/p/b15217e8f24f )文章简单介绍了监控神器prometheus的安装、配置、可视化等的使用。这篇我们来讲讲报警。 我们先简单回顾下prometheus的功能和原理。 prometheus总体架构图.png 从上图可以看出通过各种exporter采集数据后,prometheus把各种metrics(指标)统一pull到时间序列数据库中后,我们可以在可视化平台比如grafana显示后,如果有某些指标有异常可以把异常信息push推送给...阅读全文

简书 2019.08.21 19:05 jerry区块链技术与思维

golang单步调试神器delve

写在前面 上节我写了个bug,粗心大意肉眼没看出来,所以我们祭出golang的单步调试神器delve来帮我解决问题。 Delve也是单步执行工具,和GDB很像,但是他更方便安装,本身也是go的包之一,安装方法如下: #设置代理 export https_proxy=socks5://192.168.88.1:1080 export http_proxy=socks5://192.168.88.1:1080 #安装dlv go get -u -v github.com/go-delve/delve...阅读全文

简书 2019.08.21 19:51 北二条

记一次websocket车祸

写在前面 最近在修改调试系统中的日志展示,日志展示用的是websocket,用curl不好测试,所以动手写了一个客户端来查看系统日志。 websocket client 代码如下(代码中有bug,不要复制粘贴) package main import ( "fmt" "log" "os" "os/signal" "syscall" "golang.org/x/net/websocket" ) func main() { url := os.Args[1] origin := os.Args[2]...阅读全文

简书 2019.08.21 19:52 北二条

浅析如何设计一个亿级网关

1.背景1.1 什么是API网关API网关可以看做系统与外界联通的入口,我们可以在网关进行处理一些非业务逻辑的逻辑,比如权限验证,监控,缓存,请求路由等等。1.2 为什么需要API网关RPC协议转成HTTP。由于在内部开发中我们都是以RPC协议(thrift or dubbo)去做开发,暴露给内部服务,当外部服务需要使用这个接口的时候往往需要将RPC协议转换成HTTP协议。请求路由在我们的系统中由于同一个接口新老两套系统都在使用,我们需要根据请求上下文将请求路由到对应的接口。统一鉴权对于鉴权操作...阅读全文

简书 2019.08.21 16:56 互联网Java进阶架构

redis初探

Redis 的业务应用范围非常广泛,让我们梳理一下,看看 Red is 可以用在哪些地方。1. 记录帖子的点赞数、评论数和点击数( hash )。2 . 记录用户的帖子 ID 列表(排序〉,便于快速显示用户的帖子列表( zset )。3. 记录帖子的标题、摘要、作者和封面信息 , 用于列表页展示( hash )。4 . 记录帖子的点赞用户 ID 列表,评论 ID 列表,用于显示和去重计数( zset )。5 . 缓存近期热帖内容(帖子内窑的空间占用比较大〉,减少数据库压力( hash )。6 ....阅读全文

简书 2019.08.21 17:30 愤怒的老猫占用

golang基础学习-base64使用

在近期的项目开发中对图片进行base64编码,简单使用了golang的base64包。 1.使用方法 1.1 引入包 import "encoding/base64" 1.2 base64使用 这里所有的例子都是官网上的范例;code: msg := "Hello, 世界" encoded := base64.StdEncoding.EncodeToString([]byte(msg)) fmt.Println(encoded) decoded, err := base64.StdEncodin...阅读全文

Segmentfault 2019-08-22 11:32:44 wmm369

GO微信小程序登录和支付

本文仅适用于微信小程序登录、支付golang服务器实现,而通用golang支付实现(支付宝、微信)请看另一篇。[官方文档]一、微信开发文档[微信支付][微信小程序服务器SDK][微信小程序客户端API]二、微信管理后台业务微信公众号管理后台,申请小程序,申请后需要注意两点: #. APPID、APPSECRET用于登录获取openid、sessionkey,其中openid用于支付API #. 开发配置小程序服务器域名和端口(eg: https://supercline.com:8090) 微信...阅读全文

简书 2019.08.21 10:32* SuperCLine

阿里云造了个“隐身斗篷”,被Gartner点名了 !

熟悉《哈利波特》的同学一定对隐身斗篷如数家珍:它是一件能让人隐形的斗篷,永久有效,持续隐形,无论用什么咒语都不可破解,可谓是顶级安全神器。 你瞧: 如今,阿里云也为用户打造了一件世间罕见的“隐身斗篷”:基于Intel SGX(Software Guard Extensions )的“加密计算”。就在前几天,全球信息技术研究机构Gartner发布了2019年云安全技术成熟度曲线报告(Gartner, Hype Cycle for Cloud Security, 2019, Jay Heiser, ...阅读全文

简书 2019.08.21 11:05 阿里云官网

bee generate docs 报错 Failed to generate the docs.

背景: 用 Python + Golang + Vue.js 做一个开源项目,在用 Beego 工具 bee 搭建项目结构,生成文档(bee generate docs or bee run -downdoc=true -gendoc=true) 时报错:Failed to generate the docs. bee 的 commit 版本为 commit 6a86284cec9a17f9aae6fe82ecf3c436aafed68d (HEAD -> develop, origin/dev...阅读全文

简书 2019.08.21 11:14* 七秒钟回忆待续

服务网格框架初探:Istio、Linkerd和SOFAmesh

导读2018年,Service Mesh在国内大热,有多家公司推出自己的Service Mesh产品和方案。本篇文章结合Service Mesh领域内关注度较高的几种开源方案,从架构层面出发,进行初步解读。服务网格(ServiceMesh)是什么?Willian Morgan——Bouyant CEO给出的 Service Mesh 定义:服务网格是一个用于处理服务间通信的基础设施层,它负责为构建复杂的云原生应用传递可靠的网络请求。在实践中,服务网格通常实现一组和应用程序部署在一起的轻量级的网络...阅读全文

简书 2019.08.21 11:22 博云技术社区