Go语言中文网 为您找到相关结果 239

容器云,为电商双十一大战保驾护航

又到一年双十一,一场由电商网站主导,社会全民参与的购物狂欢盛宴再一次准时上演。事实上,双十一,不仅是剁手党们热热闹闹的「 狂欢节 」,同时也是电商网站们悄无声息的「 技术大考 」。 接下来看看各大电商巨头在容器技术应用方面的现状是怎么样的: ![alt 文本](http://blog.tenxcloud.com/wp-content/uploads/2016/11/%E4%BA%AC%E4%B8%9C.png) :京东对容器技术的使用和推崇在圈内是可圈可点的。据公开资料显示,京东拥有目前世界上 「 规模最大 」的Docker集群,今年或将达到20万个。基于Docker和OpenStack的京东弹性云,支撑了京东数次6.18和双十一大促的考验,以及数千亿的交易业务。目前京东所有的...阅读全文

送你一份Redis书单,以后使用缓存的问题不用再问我啦!

经过了10多年的发展,Java Web从开发框架到社区都已经非常成熟,很多程序员都可以通过使用框架很快速地搭建起一个Java Web应用,特别是近几年SpringBoot大热,干脆连配置都不需要了解了,直接一键式编译部署运行,让Java工程师的入门成本变得越来越低。 但于此同时,互联网公司对于Java的应用场景也在不断地升级换代,从单机部署再到分布式,从SOA再到微服务,Java后端技术栈变得更加庞大,对于工程师的要求也越来越高,特别是对于大公司来说更是如此,Java Web工程师已经不复存在,而取而代之的是Java后端工程师,也就是说,我们这些Java程序员不仅要写好业务代码,还要更多地掌握后端技术,除了数据库之外,像是缓存、消息队列、定时任务、微服务等技术也都是我们需要掌握的内容。 今天...阅读全文

博文 2020-05-08 23:32:48 程序员黄小斜

GORM 关联查询

定义了一个 User 和 Company, User 中可以包含多个 Company, 如下: type User struct { ID int `gorm:"TYPE:int(11);NOT NULL;PRIMARY_KEY;INDEX"` Name string `gorm:"TYPE: VARCHAR(255); DEFAULT:'';INDEX"` Companies []Company `gorm:"FOREIGNKEY:UserId;ASSOCIATION_FOREIGNKEY:ID"` CreatedAt time.Time `gorm:"TYPE:DATETIME"` UpdatedAt time.Time `gorm:"TYPE:DATETIME"` DeletedAt ...阅读全文

博文 2019-04-14 14:34:38 jouyouyun

Golang strconv包使用

// atob.go ------------------------------------------------------------ // ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False. // 其它任何值都返回一个错误 func ParseBool(str string) (value bool, err error) func main() { fmt.Println(strconv.ParseBool("1")) // true fmt.Println(strconv.ParseBool("t")) // true fmt.Println...阅读全文

Java消息队列总结只需一篇解决ActiveMQ、RabbitMQ、ZeroMQ、Kafka

一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式a、串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。​b、并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端...阅读全文

博文 2018-09-21 00:08:41 Spring51

1.9 新特性预览:Logging, interfaces, and allocation

该文翻译自:http://commaok.xyz/post/interface-allocs/几个星期前,Peter Bourgon在golang-dev开了一个关于标准化日志记录的帖子。 日志很常用,因此性能很快提升。 go-kit日志包使用结构化日志,接口如下:type Logger interface { Log(keyvals ...interface{}) error}调用代码:logger.Log("transport", "HTTP", "addr", addr, "msg", "listening")请注意,进入日志调用的所有内容都将转换为interface{}。 这意味着它分配了不少内存。与另一个结构化日志库zap进行比较。 Zap为了避免内存分配和interface{}使...阅读全文

博文 2017-02-13 02:42:51 方圆

大数据Clouder专项技能认证课程:Quick BI企业报表制作

课程介绍 阿里云大学Clouder大数据专项技能认证:Quick BI企业报表制作 本认证课程可以帮助学员掌握图形化报表设计、开发的方法,同时还将掌握搭建企业级报表门户。通过报表门户,将企业的数据通过图形化报表展现出来,实现信息共享。 课程亮点: • 真实环境:实验环境为公共云资源,和客户实际使用资源相同 • 仿真场景:动手实验的数据和需求来自于实际的企业项目 • 实战性强:课程和实验围绕实用性非常强的技能点,可快速应用到实际工作中去 • 易学易懂:内容深入浅出,理论和实践相结合,随时可学,学完即会 课程目标 • 掌握使用Quick BI制作企业报表的方法 适合人群 • 所有人 课时列表 • 免费 课时1:内容...阅读全文

Golang_tag

Golang tag也就是go语言中的注解 比如 type PostBody struct { Ids []int `json:"Id__in__int"` }`json:"Id__in__int"` 这一段内容就是Ids这个属性的一个tag 我们可以通过反射来获取这个tag的值 如下所示 package main import ( "fmt" "reflect" ) type PostBody struct { Ids []int `json:"Id__in__int"` } func main() { // s := "{\"Id__in__int\":[101010,101009],\"text__in__string\":[\"开单\",\"测试页\"]}" // var pb st...阅读全文

博文 2015-06-17 20:03:52 u012807459

第一节 如何用Go实现单链表

一、概念介绍 下面这副图是我们单链表运煤车队。 每节运煤车就是单链表里的元素,每节车厢里的煤炭就是元素中保存的数据。前后车通过锁链相连,作为单链表运煤车,从1号车厢开始,每节车厢都知道后面拉着哪一节车厢,却不知道前面是哪节车厢拉的自己。第一节车厢没有任何车厢拉它,我们就叫它车头,第五节车厢后面拉其他车厢,我们称为车尾。 作为单链表它最大的特点就是能随意增加车队的长度,也能随意减少车队的长度。这是比数组公交车最大的优点。 二、Go语言实现讲解 1、节点每节车厢都由车体、绳索和煤炭构成。在Go语言中表示这种自定义组合体的类型就是结构,当然为了通用性,我们这里要把车厢转换成节点也就是元素,煤炭转换成数据,绳索转换成指针。 type Node struct { data Object next *N...阅读全文

博文 2017-10-27 07:04:53 懒人记

移动终端app测试点总结

以下所有测试最后必须在真机上完整的执行 1、安装、卸载测试 在真机上的以及通过91等第三方的安装与卸载 安装在手机上还是sd卡上 2、启动app测试 3、升级测试   数字签名、升级覆盖安装、下载后手动覆盖安装、跨版本升级、升级后可以正常使用。   覆盖安装要确保数据库有字段更新的话,能正常更新,否则就容易导致app异常。 4、功能测试   包括功能点、业务逻辑、关联性(主要测试客户端与PC端的交互,客户端处理完后,PC端与客户端数据一致)、   服务端接口测试(主要通过访问服务端接口来验证服务端业务逻辑功能点是否正确) 5、数据对比测试   可在模拟器或真机上进行,同时与数据库中实际的插入记录做对比。还要对比主站的相同流程...阅读全文

.net的快递鸟物流单号自动识别查询api接口demo实例

1、应用场景(1)PC端、移动端应用或网站应用集成运单物流信息查询功能时,只需要录入单号即可完成查询,无需用户输入快递公司。(2)电商网站要在快递鸟查询或者订阅运单时,可通过单号识别先行判断物流公司后,再订阅到快递鸟。2、是否需要授权要Free申请服务3、接口描述/说明API ID:点击申请API Key:点击申请示例(1)请求示例JSON格式(1)该接口仅对运单号做出识别,识别可能属于的一家或多家快递公司。(2)接口并不返回物流轨迹,用户可结合即时查询接口和订阅查询接口完成轨迹查询、订阅的动作。(3)接口识别会返回一家或者多家快递公司,返回的数据根据快递鸟大数据分析结果排序,排名靠前的命中率更高。(4)若识别失败,快递鸟返回的匹配结果为空。(5)接口支持的消息接收方式为HTTP POST,...阅读全文

博文 2019-09-09 15:36:04 fire70

Go语言学习-time包

go语言的time包 组成 time.Duration(时长,耗时) time.Time(时间点) time.C(放时间点的管道)[ Time.C:=make(chan time.Time) ] time包里有2个东西,一个是时间点,另一个是时长 时间点的意思就是“某一刻”,比如 2000年1月1日1点1分1秒 那一刻(后台记录的是unix时间,从1970年开始计算) 时长就是某一刻与另一刻的差,也就是耗时 函数 Sleep函数 time.Sleep(time.Duration) 表示睡多少时间,睡觉时,是阻塞状态 fmt.Println("start sleeping...") time.Sleep(time.Second) fmt.Println("end sleep.") //【结果】...阅读全文

博文 2016-10-08 10:00:04 tree2013

算法导论习题:10.2-7 in Go语言

10.2-7题:给出一个时间复杂度为O(n)的非递归过程,实现对一个含n个元素的单链表的逆转。 程序的主要思想就是,转变指标的指向,例如原本是1->2->3->4,现在变成1<-2<-3<-4,就实现了逆转 package main import ( "fmt" ) type Node struct { next *Node data int } type List struct { first *Node } func (l *List) Insert(d int) { node := &Node{nil, d} node.next = l.first l.first = node } func revise(l *List) { if l.first == nil { return } ...阅读全文

博文 2016-05-24 03:00:14 u013564276

用Golang将图片转化成ASCII码

用Golang将图片转化成ASCII码 在开始之前先看看最终效果: 项目地址在这里:https://github.com/qeesung/im... , 欢迎star 我们都知道图片是通过一个像素点矩阵组成的,每一个像素点都是有四个值,分别是R,G,B,A组成,其中RGB就是红色,绿区,蓝色,简称三原色,在计算机中取值从0-255,而A则是颜色的透明度,取值0.0-1.0。 我们现在要做的就是将一个彩色的图片转化成一个由ASCII组成的图片,换句话说,就是将RGBA像素点的矩阵转化成一个由字符组成的矩阵,必要的时候再给字符加上颜色就可以啦。 (R, G, B, A) (R, G, B, A) (R, G, B, A) char1, char2, char3 (R, G, B, A) (R, ...阅读全文

博文 2018-10-21 17:34:39 qeesung

诚聘golang开发工程师武汉

因公司发展需要武汉分公司招聘:Golang技术工程师3名 一:岗位要求 1、熟悉golang语言,精通JAVA/Python/C++/Go/PHP/solidity等语言经验中至少一种编程语言或其他开发语言, 具有良好的编程 习惯和风格。 2、专科及以上学历,软件工程、计算机等相关专业,具有较强的学习沟通和口头表达能力。 3、对计算机网络系统有深刻理解,有分布式,点对点网络协议或应用开发经验。 二:有以下经验优先; 1、有一年以上GO语言开发经验或有实际相关项目经验均口,有开发过撮合制交易系统,大并发,分布式架构应用系统优先。 2、熟悉TCP/IP协议、HTTP协议,了解P2P网络协议,最好有了解区块链底层和以太坊接口和区块链智能合约...阅读全文

【Go学习笔记】 1、Go编程基础

什么是Go? Go 是一门 并发支持、垃圾回收和编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点的一门编程语言。 Go的主要特点有哪些? 类型安全 和 内存安全 以非常 直观 和 极低代价 的方案实现 高并发 高效的垃圾回收机制 快速编译 为多核计算机提供性能提升的方案 UTF-8编码支...阅读全文

博文 2017-05-30 05:08:48 HundredLee

gorilla/sessions 学习笔记

简单样例 首先调用NewCookieStore初始化一个store,同时传入一个secret key用来对session进行认证。 在Handler中,调用store.Get()获取一个已经存在的session或(如果不存在)创建一个新的。 设置sesssion.Values中的值,session.Values是map[interface{}]interface{}类型。 调用session.Save()将session保存到响应中。在实际项目中,调用session.Save(r,w)时需要检测返回的错误并处理。Save()方法必须在写入response之前调用,否则session cookie不会发送到客户端。 var store = sessions.NewCookieStore([]b...阅读全文

博文 2017-07-06 02:07:01 kingeasternsun

分布式分布订阅消息系统

image.png 几千行 C 代码实现了的一个优先级/延时队列,短小精悍 概念 tube - 消息通道,类似于 kafka 里面的 topic, 用来存储某一类或者业务的任务 job - 生产和消费的基本单元,每个 job 都会有一个 id 和 优先级 特点 1、协议,类 Memcached 协议, 非二进制安全 2、全内存, 可开启 binlog, 断电从 binlog 恢复数据 3、单线程, 使用 epoll/kqueue 来实现事件机制 基于golang和beanstalk封装的分布式发布订阅消息系统 主要工作 1、producer消息路由 2、维护client与topic的订阅关系 3、dispatcher并发投递消息给多个相关订阅者,从而支持1对N的关系 delivery gua...阅读全文

博文 2019-03-22 18:34:43 loloxiaoz

高可用 Redis 服务架构分析与搭建

基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较mysql而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出现异常...阅读全文

博文 2018-10-07 21:34:39 JAVA高级架构开发

Golang Web开发时前端出现谜之空白换行的坑

在使用Golang做Web开发时,有时候渲染出来的模板在前台显示时会出现一些奇怪的空白换行,具体特征就是查看css样式表并没有相关定义的空白部分。 分析: 查看出现问题页面的网页源代码,复制空白换行部分转码为Unicode编码,发现其中包含了\u2028这样的字符【图一】。 【图一】 另外,直接在浏览器检查里边的html选择Edit as html,也可发现在空白处存在小红点,鼠标移上会直接显示该字符是\u2028【图二】。查阅资料发现,这样的换行符在JavaScript中并不支持。 【图二】 解决方法: 在网页检查可以发现,直接删除这些小红点便可解决问题。网上有直接前端处理的方式,即搜索页面中的\u2028并将其替换为\\u2028即可,当然也可以在后台使用Golang进行处理,即在输出h...阅读全文

博文 2016-08-11 12:00:00 yate1996

系统学习技术的方法

1、为什么会有这个东西(why): 1)这个技术出现的背景、初衷,要达到的目标和解决什么问题;2、这门技术是什么原理(what):1) 这个技术的组成部分和关键点,2) 底层实现原理和关键实现;3、这门技术使用起来怎么样,好不好(how):1) 这个技术的优点和缺点,2) 这个技术适用的业务场景,3) 和已有技术的之间的对比 举个例子:1、 为什么会出现python这个语言,主要是实现什么目标2、python语言的基础语法是什么,模块是什么,内存管理是怎样的,底层怎么实现的?3、python的优缺点是什么, 用起来感觉怎么样, 和java\c++、golang相比,有什么不一样呢?4、哪些场景可以用python开发...阅读全文

博文 2018-11-16 02:34:38 wallehu_1111

Go中单引号和双引号和反引号(飘号)

Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 。Go语言中的字符串字面量使用 双引号 或 反引号 来创建 :双引号用来创建 可解析的字符串字面量 (支持转义,但不能用来引用多行);反引号用来创建 原生的字符串字面量 ,这些字符串可能由多行组成(不支持任何转义序列),原生的字符串字面量多用于书写多行消息、HTML以及正则表达式。根据我找到的资料以及碰到的情况来看, Go语言的单引号一般用来表示「rune literal」 ,即——码点字面量...阅读全文

博文 2018-10-06 02:35:09 ck_god

免费物流快递查询API接口对接攻略

目前提供快递查询的接口平台有:快递鸟(非淘系用户使用最多)菜鸟 (淘系用户使用)不同接口的区别:(1)快递鸟支持400多家物流快递公司,接口稳定免费,提供多种方式接口对接(2)菜鸟支持100多家物流快递公司接口,主要支持阿里淘系商家用户使用。快递API的应用场景与用途1. 最常见的应用场景如下:(1)电商网站:例如B2C、团购、B2B、批发分销站、C2C、本地生活交易等网站。(2)管理系统:订单处理平台、订货平台、发货平台、分销系统、渠道管理系统、客户管理系统、ERP等。2. 快递API的用途如下:(1)让顾客登录网站后,直接在“我的订单”页面内就能看到订单的物流状态。(2)自动筛选出“已签收”、“疑难件”等状态的单号,减轻物流跟单人员的压力。(3)改变订单的状态和交易流程,例如单号变为“已...阅读全文

博文 2019-08-15 17:33:51 fire70

go语言 基础编程学习笔记

无闻的 GO基础编程 1,在方法外部 只能声明变量 或者类型, 不能执行语句,比如说赋值(声明并且赋值 算到声明里面), 或者控制语句(这个和java是一样的, 要注意呀!)、 2,testAB := 10000 变量的简写形式 不能指定类型. 并且 这种方式只能在方法内部使用,在方法外部不能使用 3, 变量只有在声明 并且赋值的时候, 才能省略类型。在先声明后赋值的情况下面不能省略类型 4, 全局变量的声明不可以省略 var 5,强制类型转换获取一个值, 如何用 这个用这个给 这个变量赋值无所谓 可以使用:=, 也可以使用 var testVar int = . 赋值的时候的类型 必须得是一样的。 6,并行声明变量, 常量, 如果要指定的话,只能指定一个类型, 在声明的最后指定。并且所有的...阅读全文

golang的sync.Pool的使用

可以看这篇文章 https://blog.csdn.net/yongjian_lian/article/details/42058893 这个玩意的出现是为了解决 gc 的问题, 核心点在于 重用对象, 提高性能. 减少内存的分配. 下面看个例子 package main import ( "sync" "fmt" ) func main() { p := &sync.Pool{ New: func() interface{} { return 0 }, } a := p.Get().(int) fmt.Println(a) p.Put(1) p.Put(4) p.Put(2) p.Put(5) b := p.Get().(int) // runtime.GC() // 执行回收操作后 1 ...阅读全文

博文 2019-03-08 01:34:40 个00个

Go语言中多字节字符的处理

1 概述 Go语言的字符串是使用 UTF-8 编码的。UTF-8 是 Unicode 的实现方式之一。本文内容包括:UTF-8 和 Unicode 的关系,Go语言提供的 unicode 包和 unicode/utf8 包的使用。 2 UTF-8 和 Unicode 的关系 Unicode一种字符集,是国际标谁化组织(ISO)设计的一个包括了地球上所有文化、所有字母和符号 的编码。他们叫它 Universal Multiple-Octet Coded Character Set,简称 UCS,也就是 Unicode。Unicode 为每一个 字符 分配一个唯一的 码点(Code Point),就是一个唯一的值。例如 康 的码点就是 24247,十六进制为 5eb7。Unicode 字符集仅仅...阅读全文

博文 2018-10-28 07:35:09 小韩说课

送你一份Redis书单,以后使用缓存的问题不用再问我啦!

点击蓝色“程序员书单”关注我哟 加个“星标”,每天带你读好书! ![](data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw== "点击并拖拽以移动")​ 经过了10多年的发展,Java Web从开发框架到社区都已经非常成熟,很多程序员都可以通过使用框架很快速地搭建起一个Java Web应用,特别是近几年SpringBoot大热,干脆连配置都不需要了解了,直接一键式编译部署运行,让Java工程师的入门成本变得越来越低。 但于此同时,互联网公司对于Java的应用场景也在不断地升级换代,从单机部署再到分布式,从SOA再到微服务,Java后端技术栈变得更加庞大,对于工程师的要求也越来越高,特...阅读全文

博文 2020-05-08 23:32:51 程序员书单

go语言接口和方法集问题笔记

注意: 此文章只是我的个人笔记,如有谬误,错误, 请一定指出! package main import "fmt" //IA test for methodset. type IA interface { Value() Pointer() } //A is a test type. type A int //Value receiver. func (a A) Value() { fmt.Printf("Value:%p, %d\n", &a, a) } //Pointer receiver. func (a *A) Pointer() { fmt.Printf("Pointer:%p, %d\n", a, *a) } func main() { //type A method set: ...阅读全文

博文 2016-08-30 05:00:01 htyu_0203_39

兄弟连区块链培训分享Go语言获取packed struct的大小

“区块链是一门集合密码学、共识算法、智能合约、超级账本等多门技术的复杂性综合学科。”尹正表示,区块链培训机构的师资质量及其对区块链行业的认知水平参差不齐,普通消费者也无从考究。 Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。网络协议里面,很可能遇到自定义的封包,对应到c里面的是typedef struct _PackageHeader{ int headerLen; int timeStamp; short cmd };为了保证单字节对齐,可以加上编译...阅读全文

博文 2018-08-21 16:35:19 兄弟连区块链培训

阿里大鱼Golang SDK —— alidayu-go

扩展 这个SDK的关键点不是实现了阿里大鱼的3个API,而是给使用者提供了一个可以自有扩展的框架,以【短信发送记录查询】接口为例。 type AlibabaAliqinFcSmsNumQueryRequest struct { BizId string `json:"biz_id"` RecNum string `json:"rec_num"` QueryDate string `json:"query_date"` CurrentPage string `json:"current_page"` PageSize string `json:"page_size"` } func NewAlibabaAliqinFcSmsNumQueryRequest() *AlibabaAliqinFcS...阅读全文

博文 2017-07-05 16:07:17 gwpp

「Go」byte、rune与string

不积跬步,无以至千里;不积小流,无以成江海。 码字不易,点赞再看。 byte 占用1个节字,也就是 8 个比特位,所以它和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。 如下这段代码,分别定义了 byte 类型和 uint8 类型的变量 a 和 b import "fmt" func main() { var a byte = 65 // 8进制写法: var c byte = '\101' 其中 \ 是固定前缀 // 16进制写法: var c byte = '\x41' 其中 \x 是固定前缀 var b uint8 = 66 fmt.Printf("a 的值: %c \nb 的值: %c", a, b) // 或者使用 string 函数 // fmt.Pr...阅读全文

博文 2020-04-20 21:32:43 不住隔壁的王老师

Java消息队列总结只需一篇解决ActiveMQ、RabbitMQ、ZeroMQ、Kafka

一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种 1.串行的方式;2.并行方式a、串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。b、并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。...阅读全文

博文 2018-09-20 16:17:45 Java1324

Golang学习(14)——Unicode utf8包

Golang学习 - unicode/utf8 包----------------------------// 编码所需的基本数字const ( RuneError = '\uFFFD' // 错误的 Rune 或 Unicode 代理字符 RuneSelf = 0x80 // ASCII 字符范围 MaxRune = '\U0010FFFF' // Unicode 码点的最大值 UTFMax = 4 // 一个字符编码的最大长度)------------------------------------------------------------// 将 r 转换为 UTF-8 编码写入 p 中(p 必须足够长,通常为 4 个字节)// 如果 r 是无效的 Unicode 字符,则写入 ...阅读全文

博文 2017-02-10 10:20:23 1160636144

性能测试要关注的目标

不可置否,在对APP的整个测试环节中,性能测试是一个很重要的环节,它直接影响了用户的体验,那么,对于APP的性能测试,我们到底需要关注那些点呢? 其实,我们可以想想在软件设计、部署、使用、维护中一共有哪些角色参与,然后再考虑这些角色各自关注的性能点是什么,那么作为一个软件性能测试工程师,我们就能够从中总结出,对于APP的性能测试主要应该关注哪些比较重要的点。 1.从用户角度出发 开发软件的目的是为了让用户使用,我们先站在用户的角度分析一下,用户需要关注哪些性能。 对于用户来说,当点击一个按钮、链接或发出一条指令开始,到系统把结果已用户感知的形式展现出来为止,这个过程所消耗的时间是用户对这个软件性能的直观印象。也就是我们所说的响应时间,当响应时间较小时,用户体验是很好的...阅读全文

go语言之json的使用

go语言之json的使用 作为先天具有高并发的go语言,经常用于网络传输,go语言为我们提供了json的数据封装, 便于数据的交换和解析。下面来看看go语言中的json使用。代码最为明显。 重要函数 func Marshal(v interface{}) ([]byte, error) 编码成JSON数据 func Unmarshal(data []byte, v interface{}) error 将JSON数据解码 package main import ( "encoding/json" "fmt" ) type test struct { Name string `json:"test_name"` Age int `json:"test_age"` g int `json:"te...阅读全文

博文 2015-06-17 23:01:32 bojie5744

Golang的单引号、双引号与反引号

Go语言的字符串类型string在本质上就与其他语言的字符串类型不同: Java的String、C++的std::string以及Python3的str类型都只是定宽字符序列 Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 即:一个Go语言字符串是一个任意字节的常量序列。 Golang的双引号和反引号都可用于表示一个常量字符串,不同在于: 双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行) 反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持任何转义序列),原生的字符串字面量多用于书写多行消息、HTML以及正则表达式 而单引号则用于表示Golang的一个特殊类型:rune,类似其他语言的byte但又不完全一样,是指:码...阅读全文

博文 2018-07-25 11:30:02 sunsky303

高可用Redis服务架构分析与搭建

c基于内存的Redis应该是目前各种Web开发业务中最为常用的Key-Value数据库了,我们经常在业务中用其存储用户登陆态(Session存储),加速一些热数据的查询(相比较MySQL而言,速度有数量级的提升),做简单的消息队列(LPUSH和BRPOP)、订阅发布(PUB/SUB)系统等等。规模比较大的互联网公司,一般都会有专门的团队,将Redis存储以基础服务的形式提供给各个业务调用。 不过任何一个基础服务的提供方,都会被调用方问起的一个问题是:你的服务是否具有高可用性?最好不要因为你的服务经常出问题,导致我这边的业务跟着遭殃。最近我所在的项目中也自己搭了一套小型的“高可用”Redis服务,在此做一下自己的总结和思考。 首先我们要定义一下对于Redis服务来说怎样才算是高可用,即在各种出...阅读全文

消息队列应用-使用异步队列就解耦了吗

消息队列作用一文介绍了为什么要使用消息队列。我们再来讨论下如何有效使用消息队列。 消息队列模式 目前主流消息队列主要由两种模式,1个是点对点模式,1个是发布订阅模式。简单做下介绍 点对点模式 1个消息只会被一个消费者消费。可以有一个或者多个消费者同时消费一个队列,但是被消费的消息不会重复。 发布订阅模式 消息可以被多个消费者消费。此类队列一般被称为一个topic,所有订阅该topic的consumer都可消费所有消息。 目前市面上有很多消息队列产品,ActiveMq,RabbitMQ,Kafka,ZeroMQ,golang实现的NSQ,支持的队列模式基本都可以以上面两个模式总结,只是实现方式不同,具体选型需要根据自己的使用场景选择。 比如kafka以其优异的性能应用在日志收集,hadoop技...阅读全文

博文 2019-08-25 23:32:52 刘凯_7013

go语言的字符和字符串

Go语言中的字符 在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称。 下面用一个简单的程序来演示字符类型: package main import ( "fmt" "reflect" ) func main() { r := '我' fmt.Printf("%q的类型为:%t 二进制为:%b\n", r, r, r) rType := reflect.TypeOf(r).Kind() fmt.Printf("r的实际类型为:%s\n", rType) } 程序输出: '我'的类型为:%!t(int32=25105) 二进制为:110001000010001 r的实际类型为:int32 那我产生一个问题:Unicode字符的长度是多少?这个问题的问法有没有问题?其...阅读全文

博文 2016-10-26 14:00:01 davidsu33

Awesome go 增强

作为一个gopher,会经常查找golang已有的软件包,这个时候查看Github上的 [Awesome go](https://github.com/avelino/awesome-go) 中已经分门别类列出来的资源是经常的事。 但是,这个项目只是把github中的项目分类列出来而已,满足我的项目需求的包可能有很多个,我要从这些包中选择出最适合我的包,比如我的选择条件是: 1. star或者fork多,这说明gopher大众的认可程度高; 2. commits 或者 contributors 多,这说明项目的升级维护可能有保障; 3. 看license是不是支持商用,我首选Apache2.0,其次是MIT,其他的都得掂量掂量。 一个项目一个项目的点进去看这些数据,这种选择...阅读全文

高性能消息中间件——NATS

前 言这段时间我的主要工作内容是将公司系统中使用的RabbitMQ替换成NATS,而此之前我对Nats一无所知。经过一段时间紧张的学习和开发之后我顺利的完成了任务,并对消息中间件有了更深的了解。在此感谢同事钟亮在此过程中对我的帮助。NATS属于比较小众的一款中间件产品,中文资料基本上是没有的,故写以记之,为想学习Nats的同学提供一点帮助。 在介绍NATS之前先了解下什么是分布式系统和消息中间件对于分布式系统的定义,一直以来我都没有找到或者想到特别简练而又合适的定义,这里引用一下Distributed System Concepts and Design (Thrid Edition)中的一句话A distributed system is one in which components l...阅读全文

博文 2019-01-16 20:34:42 中间件

golang单点推送

package main import ( "encoding/json" "flag" "fmt" "log" "net/http" "time" "config" "framework/logger" "global" "models/function" "models/schema" "github.com/go-redis/redis" "github.com/gorilla/websocket" "github.com/labstack/echo" ) var clients = make(map[*websocket.Conn]bool) var broadcast = make(chan Message) var upgrader = websocket.Upgrader{Ch...阅读全文

博文 2017-12-08 06:00:02 zhangym

7.MIT 6.824 LAB 4A(分布式shard database)

第一步 阅读文档 https://pdos.csail.mit.edu/6.824/labs/lab-shard.html 一直读到4B之前,理解他的每个段落的意思。我是读到第三遍 才全部读清楚。 第二步 整理这个DB的架构思路 lab4 的架构是典型的 M/S 架构(a configuration service and a set of replica groups),不过实现十分基础,很多功能没有实现:1) shards 之间的传递很慢并且不允许 concurrent client acess;2) 每个 raft group 中的 member 不会改变。 configuration service 由若干 shardmaster 利用 raft 协议保证一致性的集群; 管理 con...阅读全文

博文 2019-05-14 21:34:57 西部小笼包

时间序列数据的处理

摘要: 随着云计算和IoT的发展,时间序列数据的数据量急剧膨胀,高效的分析时间序列数据,使之产生业务价值成为一个热门话题。阿里巴巴数据库事业部的HiTSDB团队为您分享时间序列数据的计算分析的一般方法以及优化手段。 演讲嘉宾简介:钟宇(悠你) 阿里巴巴 数据库高级专家,时间序列数据库HiTSDB的研发负责人。在数据库、操作系统、函数式编程等方面有丰富的经验。 本次直播视频PPT,戳这里!http://click.aliyun.com/m/51142/ 本次分享主要分为以下几个方面: 1. 时序数据库的应用场景 2. 面向分析的时序数据存储 3. 时序数据库的时序计算 4. 时序数据库的计算引擎 5. ...阅读全文

go IOTA常量计数器1期

iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下: 1、iota只能在常量的表达式中使用。 fmt.Println(iota) 编译错误: undefined: iota 2、每次 const 出现时,都会让 iota 初始化为0. const a = iota // a=0 const ( b = iota //b=0 c //c=1 ) 3、自定义类型 自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。 type Stere...阅读全文

博文 2018-07-15 21:34:44 WalkingInTheAir

C# Golang Python类型转换

C#的类型转换 隐式转换: int--float,int--double,float--double,容量小的转换成容量大的,可以直接隐式转换 显示转换: 1.使用(目标type)待转换数据 (int)float,(int)double,(float)double#大的数据类型转换为小的数据类型 2.使用Convert类的转换方法 Convert.ToInt32() 转换为整型(int) Convert.ToChar() 转换为字符型(char) Convert.ToString() 转换为字符串型(string) Convert.ToDateTime() 转换为日期型(datetime) Convert.ToDouble() 转换为双精度浮点型(double) Conert.ToSingl...阅读全文

博文 2020-03-11 17:33:01 stardust_0000