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

2019年度总结

2019年目标 2019年,可能当时心里有目标,但是没有写出来,更没有使用OKR的方式表达出来,现在年底往前翻目标的时候,已经忘记了自己的出发点。 2019年大事记 2019年,最大的事情,应该就是放弃创业,选择加入了小年糕这家公司,现在来看当时的决定,是一个非常正确的选择,虽然也经历了大概半年的挣扎和磨合,但是我很喜欢这里,学习到很多其他地方学习不到的东西,也有很多想感谢的人。 3月入职小年糕,3月主要是在适应公司文化,适应节奏。 4月上线基于谷歌论文的ABtest分层实验平台,架构比较简单,系统性能TP99在1ms左右,现在已经全量使用在小年糕的推荐系统上。用到的技术也很简单,就是本地缓存&redis缓存。 5月,重构了内容审核系统,彻底解决之前系统中的漏审和审核历史问题,系统易用性也大...阅读全文

博文 2020-01-29 05:32:40 不如假如

Go中使用Seed得到重复随机数的问题

重复的随机数 废话不多说,首先我们来看使用seed的一个很神奇的现象。 func main() { for i := 0; i < 5; i++ { rand.Seed(time.Now().Unix()) fmt.Println(rand.Intn(100)) } } // 结果如下 // 90 // 90 // 90 // 90 // 90 可能不熟悉seed用法的看到这里会很疑惑,我不是都用了seed吗?为何我随机出来的数字都是一样的?不应该每次都不一样吗? 可能会有人说是你数据的样本空间太小了,OK,我们加大样本空间到10w再试试。 func main() { for i := 0; i < 5; i++ { rand.Seed(time.Now().Unix()) fmt.Prin...阅读全文

博文 2019-10-09 09:02:41 detectiveHLH

Go依赖管理工具dep

安装: Mac:brew install dep Linux curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh 验证 终端输入dep ➜ ~ dep Dep is a tool for managing dependencies for Go projects Usage: "dep [command]" Commands: init Set up a new Go project, or migrate an existing one status Report the status of the project's dependencies ensure Ensure a dependency...阅读全文

博文 2019-11-17 02:32:42 更多精彩内容有,总比没有要好:Go依赖管理工具depfreelanggolang 官方依赖管理工具 dep 使用和持续集成木猫尾巴时间NAV辞典旅游心得:我在旅行途中,你在哪?污大师2018.5.11囧man

go mod 包管理之前世今生

因为之前一直是 C++ Coder,根本没有所谓的包管理,项目依赖一塌糊涂,说到 C++ 的不便之处还得吐槽一句,编译速度贼慢,每次项目中写完代码等待编译的时候就想着,以后再也不想用 C++ 写代码了。 说回正题,go mod 包管理工具 没有包管理之前,项目管理会出现什么问题 在没有包管理方案之前,项目依赖于 GOPATH,这样带来一些不便之处: 多项目难以管理。试想一下,A 项目和 B 项目 同时依赖于一个 C 项目,但是依赖于 C 项目的不同版本,如何解决,只能通过多 GOPATH 设置。 项目的依赖只能够手动 go get 下载到 GOPATH 中,如果换一台服务器开发项目,光是包依赖都得弄半天。 go mod 出来之前,其他方案的是怎么设计的? godep,glide,go ver...阅读全文

博文 2019-12-27 16:33:06 剑指TOP

Go 中的 Goroutine 和其他并发处理方案的对比

Go 语言让使用 Goroutine 和通道变得非常有吸引力,作为在 Go 中进行并发的主要方式,它们是被有意识的提出的。因此对于你所遇到的任何与并发相关的问题,它们都可能成为首选方案。但是我不确定它们是否适合于我遇到的所有问题,我仍在考虑其中的平衡点。 通道和 Goroutine 对于查询共享状态(或从共享状态中获取某些信息)这类问题看起来似乎并不完全契合。假设你想要记录那些与服务端建立 TLS 通信失败的 SMTP 客户端的 IP,以便在 TLS 握手失败的情况下,不再提供 TLS 通信(或至少在给定的时间段内不提供)。大多数基于通道的解决方案都很直白:一个主 Goroutine 维护一个 IP 集合,通过通道向主 Goroutine 发送一条消息来向其添加 IP。但是,如何询问主 Go...阅读全文

FreeWheel招Lead/Senior大数据开发与分析工程师

Lead/Senior Software Engineer【职责描述】-面向客户的数据产品开发,测试,部署、监控,涵盖实时报表和离线报表等不同类型的数据产品;-紧密配合产品经理,理解业务需求,梳理业务流程,针对不同业务需要和应用场景,制定合理的系统架构以及实现方式,可以独立完成技术解决方案;-周期性产品迭代,持续改进现有产品,包括业务流程和系统架构,与基础架构部门配合,解决技术难题与性能瓶颈。【任职要求】-本科及其以上学历,三年以上大数据生态圈工作经验,二年以上数据产品实践经验;熟练掌握数据产品相关设计原理,对数据产品设计、交互、系统架构有深入的见解;-熟悉Spark/MapReduce/HBase/Presto等开源大数据技术,有多种业务场景下的实践经验;-有数据仓库建模、数据平台搭建、E...阅读全文

博文 2019-10-29 18:32:48 aside section._1OhGeD

Go 小知识之 JSON 美化小工具

后端http接口测试常需要打印 JSON 返回,但是默认的json展示形式是紧凑型的,不易阅读,或许很多人习惯于使用在线格式化工具。但如果能用代码直接 JSON 美化,为什么还要多开一次浏览器呢? struct、map 的 Marsh美化 比如有这样一个map或者结构体。 u := map[string]interface{}{ "id": 1, "name": "poloxue", } 使用GO内置的包 encoding/json。 如果用 json.Marshal 转化,代码如下: uglyBody, err := json.Marshal(u) if err != nil { panic(err) } fmt.Printf("%s\n", uglyBody) 打印结果: {"id":1...阅读全文

博文 2019-08-31 20:32:45 波罗学

Golang.org/x目录被Blocked的解决方案

在Go开发中,经常有大量项目依赖golang.org/x包,但这个源码包被储放在万恶的国外资本势力的服务器上,国内开发人员想要使用需要一翻动作。 golang团队将他们的代码镜像在Github上,因此,我们可以将golang.org/x使用到的包,统统下载在我们开发环境的 $GOPATH/src/golang.org/x 目录,编译项目时就可以直接使用本地依赖。 首先,在 $GOPATH 目录中创建 golang.org/x 目录: $ mkdir -p $GOPATH/src/golang.org/x 然后把x的几个包clone下来: $ cd $GOPATH/src/golang.org/x # Clone 常用和几个库: $ git clone --depth=1 https://gi...阅读全文

博文 2019-02-16 16:34:42 陈哈哈GO

Template Method in Golang

序言 随着容器云技术的不断成熟,微服务架构也变得越来越火。在微服务架构下,我们将原本单一的应用按照功能边界分解成一系列独立、专注的微服务。每个微服务对应传统应用中的一个组件,但是可以独立编译、部署和扩展。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈,比如编程语言和数据库。Golang语言这几年风华正茂,不仅kubernetes、 openshif和docker等容器云相关的开源项目的开发语言是Golang,而且很多对实时性要求不高的微服务团队也选择Golang作为主要开发语言。 在这个大背景下,笔者也开始了Golang之旅。Golang作为一门全新的静态类型开发语言,与既有的开发语言相比简洁、有趣却又超级强大,具备众多令人兴奋不已的新特性,其中最令笔者兴奋的两个特性...阅读全文

博文 2017-02-10 14:39:37 _张晓龙_

电商设计手册之基础商品信息

前言 建议使用大屏设备(例如pad/pc),可以更好的浏览本篇文章 今天我们开始「商品系统」的篇章。本文分为如下五大模块: 需求分析 架构设计 Spu和Sku的故事 数据模型设计 接口设计 第一篇我们主要看看一个入门的电商平台(B2C)如何去构建自己的基础商品信息,其实这个事情很简单,想想我们的现实生活,商家摆放商品到货架,客户从货架挑选商品,客户把挑选好的商品放入购物车(篮),最后客户去收银台结账。 需求分析 对于一个电商平台来讲,我们怎么理解上面的简单示例呢?接着,我们来拆分上面这个简单的事情: 商家摆放商品到货架,客户从货架挑选商品,客户把挑选好的商品放入购物车(篮),最后客户去收银台结账 商家是谁:电商平台 摆放是什么意思:上架 货架在哪:前台系统(web/app/...) 挑选:浏...阅读全文

异步编程四:协程

书接上回,我们一起体验了reactor模式,也了解到了其解决什么场景下的问题。 我们将一同感受一下协程的魅力,基于本系列文章最开始的例子 a + ((b -c)+ d) -e -f + g, 本文将使用协程的方式来实现,并与之前的实现方式进行对比。 Kotlin协程解决方案 本节依然基于vertx,同时利用kotlin的协程,来实现 a + ((b -c)+ d) -e -f + g 。 需要读者对vertx和kotlin有一定了解,准备工作可以阅读 [vertx-lang-kotlin-coroutines] (https://vertx.io/docs/vertx-lang-kotlin-coroutines/kotlin/) 和 coroutines-guide。 下面直接贴代码,可以...阅读全文

博文 2020-01-23 06:32:40 青_雉

Java 进阶面试问题列表

面向对象编程的基本理念与核心设计思想解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling)。继承(Inheritance)与聚合(Aggregation)的区别在哪里。你是如何理解干净的代码(Clean Code)与技术负债(Technical Debt)的。描述下常用的重构技巧。阐述下SOLID 原则。其他的譬如 KISS,DRY,YAGNI 等原则又是什么含义。什么是设计模式(Design Patterns)?你知道哪些设计模式?你有了解过存在哪些反模式(Anti-Patterns)吗?你会如何设计登陆舰/数学表达式计算程序/一条龙?你知道哪些基本的排序算法,它们的计算复杂度如何?在给定数据的情况下你会倾向于使...阅读全文

博文 2018-10-10 21:06:05 Java007

月薪 50K 大牛整理!六大Java架构进阶技术模块,看完茅塞顿开!

大多数人选择Java可能只是因为听说Java前景好、Java比较好找工作、Java语言在TIOBE排行榜上一直位于前三等等之类的原因,但是Java真的还是之前那么好吗?​下面给大家分享一下月薪50K大牛整理的Java架构进阶技术知识导图开源框架解析学习 SSM 的基本用法能够帮助你完成绝大多数开发任务,掌握了高级用法能够提出更好的解决方案。学习框架没有捷径,在工作中一遍一遍地练习是唯一的方式。很多人面试失败就败在原理上,只知其一,不是其二,稍微问的深入一点就答不上来了。理解原理就是理解 SSM 框架的灵魂,这也是一个程序员从体力劳动进阶到脑力劳动的门槛。不理解原理只能做写代码的工具,理解原理才能成为真正的开发工程师。多思考、多总结、多请教,保持好奇心,多问一句是什么、为什么,才能探索到框架的...阅读全文

博文 2019-01-17 00:15:23 javajiaoliu

Go Micro 总体设计

Go-micro 是什么 Go-micro框架是一套微服务分布式的框架,可以大幅度的提高开发效率。源码地址:https://github.com/micro/go-microGo-micro拥有很多特性: 服务注册、发现 负载均衡 消息解码,并默认支持json以及protobuf 基于rpc的请求响应 异步的消息通讯 接口可插拔 其中最值得一提的是最后一个特性,接口可插拔。只要实现上图的8个关键interface,就可以随意的根据需求重新时间这8个接口的功能。 这8个接口一实现了go-micro的整体架构。这些接口都有默认的实现方式,意味着你不需要写任何的插件就可以使用这个微服务架构。 主要interface 整个Go Micro 都是有这8个interface构成的,换而言之只要理解了这8...阅读全文

博文 2019-07-10 17:03:02 大二小的宝

写扩展性好的代码:函数

本文作者: 伯乐在线 - legendtkl 。 如何写出扩展性好的代码?这是我工作最近半年来一直在考虑的问题。不管自己做一套系统还是接手别人的项目,只要你的项目需要和别人交互,这个问题都是需要考虑的。我们今天只说说如何写出扩展性好的函数代码。代码都以golang示例。 函数声明 函数声明首先是函数名字要具有自解释性,这个要说到代码注释了,这里就不赘述了。除了函数声明外,还有函数的形参定义。这里以一个例子来说一下扩展性好的函数的参数应该如何定义。 1. 普通函数 假设我们需要一个简单的server,我们可以像下面这样定义,addr表示server启动在哪个端口上。 func NewServer(addr string) 第一期的需求很简单,就上面这些足够满足了。项目上线跑了一段时间发现,由于...阅读全文

博文 2019-03-09 14:34:40 faunjoe

12 个学习新的编程语言的方法

Image by : opensource.com 听说,你决定要为你的 “技能树” 再添加一门特定的编程语言。那该怎么办呢? 在这篇文章中,作者提出了 12 项关于学习技术的建议。记住每个人学习的方式都不一样。其中一些可能对你十分有用,而其他的则可能无法满足你的需求。如果你开始担心一个策略,请尝试另一个策略并看看它哪里适合你。 1. 将其与类似的语言进行比较。当你首次观看有关该语言的第一个教程或阅读代码时,请尝试猜测该语言的每个部分将会做什么,并检查你的判断是否正确。 如果记笔记可以帮助你整合信息,请拿起一张纸并记下三个列表: 看起来很熟悉的东西,并且做了预期中的事 看起来很熟悉的东西,但做了意料之外的事 看起来完全是新的东西 例如,如果我用来自 Python 和 C 背景的 Rust 代...阅读全文

博文 2017-08-18 11:03:46 编辑部的故事

如何把golang的Channel玩出async和await的feel

引言 如何优雅的同步化异步代码,一直以来都是各大编程语言致力于优化的点,记得最早是C# 5.0加入了async/await来简化TPL的多线程模型,后来Javascript的Promise也吸取这一语法糖,在ES 6中也加入了async和await. 那么,被大家一称赞并发性能好、异步模型独树一帜的golang,能否也有async和await呢? 其实,这对于golang的CSM来说是一点也不难! 核心代码如下: done := make(chan struct{}) go func() { // do work asynchronously here // close(done) }() <-done 复制代码是不是很简单呢? go rountine负责async, channel的负责a...阅读全文

博文 2020-02-11 11:34:19 raining1127

Go基础学习记录 - 编写Web应用程序 - 错误处理

错误处理 前面的分享加了两个功能,一个是编辑功能,一个保存功能 在我们的程序中有几个地方其实是忽略了错误的处理。这是不好的做法,尤其是因为这样的做法发生错误时,程序会出现意外行为。更好的解决方案是处理错误并向用户返回错误消息。这样,如果出现问题,服务器将完全按照我们想要的方式运行,并且可以通知用户。首先,让我们处理renderTemplate中的错误: func renderTemplate(w http.ResponseWriter, templateName string, p *Page) { t, err := template.ParseFiles("template/" + templateName + ".html") if err != nil { http.Error(w,...阅读全文

博文 2018-08-09 23:34:50 DurbanZhang

MyBatis功能架构设计

image.png功能架构讲解:我们把Mybatis的功能架构分为三层:(1)API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。(2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。(3)基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。框架架构框架架构讲解:这张图从上往下看。MyBatis的初始化,会从mybatis-config.xml配置文件,解析构造成Configuration这个类,就是图中的红框。...阅读全文

从0开始学架构: 1. 互联网架构演义

架构的终极目标是降本增效。是各方面折中的结果。 本文以互联网软件架构的演进之路为主线,结合案例分析每个阶段架构的适用场景、技术栈和优缺点。 0、架构的本质 架构是对业务场景抽象后,对各方面因素折中后的结果,这些因素包括: 业务复杂度 数据规模大小 团队技术栈/研发能力 时间成本 运维成本 只有对这些因素都妥善折中后,才能达到降本增效的目的。 场景驱动架构不断演进,脱离场景谈架构都是耍流氓。 1、架构演进概述 架构演进 从单体架构演进到微服务架构的精髓用一个字概括:拆。 2、单体架构设计与实践 单体架构 客户端APP发送请求到单体服务,服务端接收到请求后从DB读取数据,并进行业务逻辑处理,最后对返回结果进行封装,返回结果给APP。 案例 (如下比较简单的案例可以用单体来实现) 如用户个人主页,...阅读全文

博文 2020-03-30 23:33:18 牧码人爱跑马

2019-11-06(云原生第一课)

让应用更有弹性、容错性、观测性的基础技术,让应用更容易部署、管理的基础软件、让应用更容易编写、编排的运行框架等。 云原生技术元年。 kubernetes等云原生集成成为技术人员必修课。kubernetes与云原生架构。 【容器作为集装箱,可以保证应用在不同的环境中快速迁移,提高迭代的效率。但是如果要形成容器集团军,还需要一个集团军作战的调度平台,这就是 Kubernetes。它可以灵活地将一个容器调度到任何一台机器上,并且当某个应用扛不住的时候,只要在 Kubernetes 上修改容器的副本数,一个应用马上就能变八个,而且都能提供服务。 然而集团军作战有个重要的问题,就是通信。这里面包含两个问题,第一个是集团军的 A 部队如何实时地知道 B 部队的位置变化,第二个是两个部队之间如何相互通信。...阅读全文

博文 2019-11-08 03:32:45 更多精彩内容8 分钟入门 K8s | 详解容器基本概念独角的犀牛云原生周报:第 3 期米开朗基杨Docker容器实战(七) - 容器眼光下的文件系统JavaEdge如何创建一个安全的 Docker 基镜像希云Docker容器管理平台《Docker从入门到

【干货分享】大数据计算服务MaxCompute使用教程

课程介绍 MaxCompute(原ODPS)是一项大数据计算服务,它能提供快速、完全托管的PB级数据仓库解决方案,使您可以经济并高效的分析处理海量数据。 产品详情:https://www.aliyun.com/product/odps 课时列表 • 课时1:客户端配置以及基本命令介绍 • 课时2:SQL基本操作介绍 • 课时3:tunnel命令操作介绍 • 课时4:MaxCompute与主流关系数据库DDl基本语法差异 • 课时5:MaxCompute Studio安装配置说明 开始学习http://click.aliyun.com/m/27852/ ...阅读全文

10分钟将你的Go工程转换为Go Module模式

自从在Go 1.11和高版本中引入了Go的新管理系统以来,GoLang开发人员已经接受了包版本控制解决方案。这样做的用户可以使用GoCenter存储库中的不可变公共Go 模块,并通过健壮、可靠的Go Pipeline获得快的构建速度。但是,将现有的项目转换为使用Go Module并不总是很容易,如果该项目已经尝试过GoLang的其他包管理解决方案时。为了帮助GoLang社区正确地使用Go Module,我们将使用开源的etcd项目(Kubernetes使用的键值数据存储)作为示例。这是一个实践的实际示例,因为它很复杂,可以展示一些常见的实践Go 项目依赖管理痛点分析 传统GO项目进行第三方模块依赖时,往往是去下载第三方源码,这种方式将存在以下常见问题:1.性能及稳定性:每次下载从各大VCS系...阅读全文

博文 2019-12-20 00:32:53 JFrog杰蛙科技

使用“微服务+云架构”轻松应对系统扩容!

不知道大家打开本文,有没有留意文章所在的分类节点:云计算。其实我的本意,是要将微服务跟云架构归类在一起。因为他们都有着一个相同的存在目的:方便扩容! 扩容。对于遇到过系统瓶颈,需要扩容的系统,恭喜你,你的系统一定是快速发展,遇到了访问量上升的情况! 【云架构,系统扩容案例】 先说下我个人的经历:我是做GPS防盗器系统的,硬件需要给后台服务器回发数据,所以硬件产品销售的越好,我的系统就需要面对越来越多的压力挑战。感谢经历了这样的一个过程,让我深刻意识到了系统扩容架构设计的巨大价值。我的项目里,经历过这么三个阶段: 第一阶段:单机阶段 单机应用,单进程应用,事实证明只能承载几百设备并发。 通过改造多线程,IOCP设计模型,可以承载20000以上的并发 瓶颈点:难以突破单机应用的并发能力,每次遇到...阅读全文

博文 2019-03-30 15:01:36 jiyulin

如何发送给客户端响应之后程序继续执行

写PHP的时候遇到一个问题 *如何在把响应发送给客户端之后,继续执行后续任务? * 在stackoverflow上找到解决方案,如下 https://stackoverflow.com/questions/15273570/continue-processing-php-after-sending-http-response 想知道,如何在Golang中实现这种需求,google了一会没能找到,汗... 求助,能赐几行代码更好,多谢:...阅读全文

一)golang的单例模式

在23种设计模式中,单例模式作为最普遍运用的设计模式之一,在软件开发中起着非常重要的地位。 应用场景:对资源单一且有严格控制的场景,例如. 数据库连接类对象:可一次创建,一直使用的类 在golang中的单例模式实现方式有多种,但需要效率的实现主要还是依赖于sync/Once实现,其实现原理主要是依赖于sync/atomic包的原子操作源代码如下 type Once struct { m Mutex done uint32 } func (o *Once) Do(f func()) { if atomic.LoadUint32(&o.done) == 1 { return } // Slow-path. o.m.Lock() defer o.m.Unlock() if o.done == 0 ...阅读全文

Go 模块存在的意义与解决的问题

本文首发于我的博客,如果有用,欢迎点赞收藏,让更多的朋友看到。 作者:William Kennedy | 原文:Modules Part 01: Why And What 最近,我在尝试整理一篇关于 Go 包管理发展历史的文章,希望能加深自己对这一块知识的认识。在搜集资料的时候,发现了这篇文章,顺手翻译了一下。 本文是该系列的第一篇,主要介绍包依赖管理中一些基础知识。文中提出了 Go 开发中的三个痛点,如何解决只能在 GOPATH 指定路径开发,如何实现有效的版本管理,以及如何支持 Go 原生工具集依赖管理。针对它们,Go Module 都提供了相应的解决方案。 从第一篇的内容上看,作者后面的文章应该会对 Go 的模块机制进行详细的剖析,很期待。话说,总感觉这篇文章翻译的有点别扭,检查的时候...阅读全文

博文 2019-10-14 19:34:29 波罗学

????设计模式-适配器模式-Adapter

????适配器模式-Adapter原文地址:https://github.com/mumushuiding/golang-design-pattern/tree/master/01_Adapter把一个"错误"的接口????转换为希望的形式。它处理的是????匹配问题。⚡️ 类图适配器模式中,建造一个适配器有两种可能性:⚡️ 基于类的适配器(简称类适配器);???? 基于对象的适配器(简称对象适配器);​​ ⚡️类适配器适配器的类实现调用接口targetInterface, 并把对适配器的调用委托给它所继承的对象targetClass.????参与者下面列出适配器模式的参与者:targetClass (需要被匹配的类). 类 targetClass 通过接口的方式operationB()对外...阅读全文

博文 2019-08-23 17:33:01 mumushuiding

老用户快速从经典网络迁移VPC,阿里云提供便捷解决方案

摘要: 近日,阿里云宣布推出经典网络迁移VPC完整解决方案,帮忙云上老用户平滑迁移到VPC。 阿里云起步于经典网络,但已经全面转向VPC。专有网络VPC(Virtual Private Cloud)以其在安全、成本和网络功能方面的优势,正受到越来越多用户的欢迎,已经成为云上用户的首选网络类型,也是阿里云默认推荐的网络类型。 近日,阿里云宣布推出经典网络迁移VPC完整解决方案,帮忙云上老用户平滑迁移到VPC。 阿里云起步于经典网络,但已经全面转向VPC。专有网络VPC(Virtual Private Cloud)以其在安全、成本和网络功能方面的优势,正受到越来越多用户的欢迎,已经成为云上用户的首选网络类型,也是阿里云默认推荐的网络类型。然而,云上还有很多存量用户在使用经典网络,为了...阅读全文

从普通JAVA程序员到阿里架构师,他用了六年

工作年限:8 年服务公司:4 家(含四大门户中的两家)最近职业:Java 架构师职场关键词:社交平台、高并发系统架构设计、技术团队管理、多款从零到一的产品城市!六年间,这位职人呆过四大门户中的两家,完成了工程师到架构师的蜕变。经手多款从零到一产品的开发和增长,也经历国内最大社交平台亿级流量和用户的架构设计及优化工作。工作上思路清晰、认真负责,是同事们心目中优秀 Problem Solver。问:介绍一下你自己?答:我 2008 年硕士毕业后,前 2 年在一家传统 IT 公司,最近 6 年在互联网公司,历任 Java 开发工程师、高级工程师、架构师等职位。工作内容上,经历过多款产品从零到一的诞生开发过程,也经手过国内用户、内容和流量最大的社交/社区产品的架构改造优化工作,有丰富的社交产品的研发...阅读全文

博文 2018-09-30 16:34:39 美的让人心动

写个 Go 时间交并集小工具

示例代码(含测试)在这里 需求 在甘特图的场景下,我们经常会遇到这种情况,五位员工A, B, C, D, E,可能他们的工作都是并行的,我们需要计算某段时间内他们总的工作时长。 我们不能简单得把五个人的工作时间都加起来,因为当中会有重叠的部分。所以这时候我们就需要一个计算时间交并集的工具。 思路 将一组离散的时间段按照开始时间,从小到大排序。像这样 [{2 7} {4 11} {10 19} {10 30} {16 18} {19 29} {23 35} {24 42} {25 30} {27 49}] 我这里将时间用十分小的秒来代替,方便理解。 循环排序后的数组,如果下一个时间段开始时间介于上个时间段的开始时间和结束时间之间,那么就进行合并,否则就分离。可以看到我们这里有两个关键动作,合并...阅读全文

博文 2019-02-01 11:34:47 cookedsteak

再次升级!阿里云Kubernetes日志解决方案

摘要: 今天阿里云Kubernetes日志解决方案再次升级,为您带来以下改进: 1、极致部署体验:只需一条命令一个参数即可完成整个K8S集群的日志解决方案部署。 2、支持更多配置方式:除原生控制台、SDK配置方式外,支持通过CRD方式进行配置(kubectl、控制台、K8S openapi)。 背景 针对K8S日志采集存在的采集目标多、弹性伸缩难、运维成本大、侵入性高、采集性能低等问题,在18年2月份日志服务和容器服务团队一起发布了阿里云Kubernetes日志解决方案。1分钟内即可完成整个集群部署,实现该节点上宿主机日志、容器日志、容器stdout等所有数据源的一站式采集。并且后续集群动态伸缩无需对采集做任何二次部署。 今天阿里云Kubernetes日志解决方案再次升级,为您...阅读全文

代码模板 | 我的代码没有else

嗯,我的代码没有else系列,一个设计模式业务真实使用的golang系列。 前言 本系列主要分享,如何在我们的真实业务场景中使用设计模式。 本系列文章主要采用如下结构: 什么是「XX设计模式」? 什么真实业务场景可以使用「XX设计模式」? 怎么用「XX设计模式」? 本文主要介绍「模板模式」如何在真实业务场景中使用。 什么是「模板模式」? 抽象类里定义好算法的执行步骤和具体算法,以及可能发生变化的算法定义为抽象方法。不同的子类继承该抽象类,并实现父类的抽象方法。 模板模式的优势: 不变的算法被继承复用:不变的部分高度封装、复用。 变化的算法子类继承并具体实现:变化的部分子类只需要具体实现抽象的部分即可,方便扩展,且可无限扩展。 什么真实业务场景可以用「模板模式」? 满足如下要求的所有场景: 算...阅读全文

博文 2020-04-11 20:32:43 TIGERB

GoLang 字符串倒置

字符串倒置 Hello World --> dlroW olleH 解决方案1: length := len(str) array := make([]string , length) for i , v := range str{ array[i] = string(v) } for i := 0 ; i < length/2 ; i++ { array[i], array[length -i - 1] = array[length - i -1 ], array[i] } str = "" for _ , v := range array { str += v } 大致想法是: str -循环-> array -循环-> 倒置 --循环--> str 可以转换中文. 问题: 看上去比较繁...阅读全文

博文 2017-09-29 03:35:10 小立立

这几年从JAVA程序员到BAT架构师【精华】

如果你立志做架构,首先打好基础,从最底层开始。然后发展到各种技术和语言,什么都要懂两点,要全面且不肤浅。为什么不是懂一点?你要看得透彻,必须尽量深入一些。别人懂一点,你要做架构师,必须再多懂一点。比如你发现golang很流行,别人可能写一个helloworld 就说自己玩过golang,但你至少要尝试写一个完整的应用。不肯下苦功,如何高人一头? 个人简介: 工作年限:8 年服务公司:4 家(含四大门户中的两家)最近职业:Java 架构师职场关键词:社交平台、高并发系统架构设计、技术团队管理、多款从零到一的产品城市! 六年间,这位职人呆过四大门户中的两家,完成了工程师到架构师的蜕变。经手多款从零到一产品的开发和增长,也经历国内最大社交平台亿级流量和用户的架构设计及优化工作。工作上思路清晰、认真...阅读全文

博文 2019-01-03 18:34:45 Java知音

Golang设计模式——工厂模式

package fatory import "fmt" type Device interface{ StartDevice() } type KeyBoard struct { } func (k *KeyBoard) StartDevice(){ fmt.Println("Keyboard is ready to work!") } type Mouse struct { } func (m *Mouse) StartDevice(){ fmt.Println("Mouse is ready to work!") } func NewDevice(device string)Device{ switch device{ case "k": return &KeyBoard{} case ...阅读全文

博文 2020-05-18 06:33:43 筑梦攻城狮

从普通JAVA程序员到阿里架构师,他用了六年

工作年限:8 年服务公司:4 家(含四大门户中的两家)最近职业:Java 架构师职场关键词:社交平台、高并发系统架构设计、技术团队管理、多款从零到一的产品城市!六年间,这位职人呆过四大门户中的两家,完成了工程师到架构师的蜕变。经手多款从零到一产品的开发和增长,也经历国内最大社交平台亿级流量和用户的架构设计及优化工作。工作上思路清晰、认真负责,是同事们心目中优秀 Problem Solver。问:介绍一下你自己?答:我 2008 年硕士毕业后,前 2 年在一家传统 IT 公司,最近 6 年在互联网公司,历任 Java 开发工程师、高级工程师、架构师等职位。工作内容上,经历过多款产品从零到一的诞生开发过程,也经手过国内用户、内容和流量最大的社交/社区产品的架构改造优化工作,有丰富的社交产品的研发...阅读全文

博文 2019-07-09 17:32:49 Java架构师笔记

golang相关网摘

1、golang开发50个坑 http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html#mline_lit_comma 2、golang二进制序列化与内存对齐 https://www.zhihu.com/question/27410178 3、大话设计模式(golang) http://www.oschina.net/code/list_by_user?id=1469272 4、effective go http://www.hellogcc.org/effective_go.html 5、深入go网络库 http://skoo.me/go/2014/04/21/go-net-core...阅读全文

博文 2017-12-21 16:00:00 cqvoip

[golang] 单例模式singleton,正确的打开方式

单例模式是常用的设计模式,但在golang里和c++/java等实现的方式略有不同,非常干净利落!来,上代码: import "sync" var once sync.Once var awsMeta *MetaDb func DefaultAWSMetaDb() *MetaDb { once.Do(func() { awsMeta, _ = NewMetaDb(AWS, TestConsulAddress) }) return awsMeta } int main() { meta1 := DefaultAWSMetaDb() meta2 := DefaultAWSMetaDb() meta3 := DefaultAWSMetaDb() // 上面的三个meta,使用同一个meta地址 }...阅读全文

博文 2019-08-02 01:02:43 liuzoxan

DockOne技术分享(四):AppC和Docker的对比

【编者的话】 现在一说到“容器”,几乎所有人首先想到的就是Docker。Docker作为目前最主流的容器标准,掩盖了许多前辈和后续者的光辉。事实上,Docker既不是第一个容器类产品(OpenVZ、Lxc等都远远早于它),也不会是最后一个。今天我们来聊一个最近有点火的新容器标准:AppC。 AppC是 CoreOS 公司在2014年12月发起的社区项目,旨在设计一种新式的跨平台容器在镜像格式、运行方式和服务发现机制等方面的标准。 从官方的表态说,这个项目最初诞生的原因是,主流容器工具 Docker 正在从一个单纯的容器工具成为自成一体的生态圈。而 Docker 的中心式管理方式(由每个主机上的 Docker -d 后台进程统一控制)对于 Systemd 以及第三方的任务编排工具并不友好(具体...阅读全文

三年Java开发工程师,面试电话接到手软,做到这些你也可以!

序言 对于职场来说,简历就如同门面。若是没想好,出了差错,耽误些时日倒不打紧,便是这简历入不了HR的眼,费力伤神还不能觅得好去处,这数年来勤学苦练的大好光阴,岂不辜负? 简历,简而有力。是对一个人工作经验的简单介绍。对公司而言,在挑选人才时,可以通过简历对人才有整体认识,减少人才误用的风险。而对于个人来说,借着撰写简历,重新经历自己的过去、审视收获和缺憾,为面谈预先作好准备,来找到一份适合自己的理想工资。 我整理了一些面试题,由于平台不能上传文件,需要的可以加我QQ交流群277763288,从里面获取文档,也欢迎招聘者,找工作的进群,给大家提供一个更大的平台(希望可以帮助到大家) ![image.png](https://static.studygolang.com/190221/c2b31...阅读全文

博文 2019-02-21 21:37:38 bianchenglangzi

《微服务架构设计模式》读书笔记---第十一章:开发面向生产环境的微服务应用

为了部署到生产环境中,需要考虑三个关键的质量属性:安全性,可配置性和可观测性。 开发安全的服务 需要实现安全性的四个方面: 身份验证。 访问授权。验证是否允许访问主体对指定数据完成请求的操作。 审计。跟踪用户在应用中执行的操作。 安全的进程间通信。最好采用传输层安全性(TLS)加密。 在微服务架构中实现安全性 由API Gateway处理身份验证。在请求转发给服务之前,就进行身份验证。这样的好处是: 身份验证集中于一个服务,安全漏洞的可能性要小的多。 身份验证集中于一个服务,其他服务更简单,更关注于自己的业务。 除了身份验证,还需要考虑访问授权。可能实现的位置: API Gateway。在这里实现的好处是,集中管理,弊端是API Gateway和服务之间产生耦合 在各个服务,实现访问授权。 ...阅读全文

【Java核心设计模式】DAO开发实战业务分析

课程介绍 本课程是由Java SE向Java WEB学习的过渡课程,为了更好的巩固Java SE中所学习到的各项技术,同时也为了更完整的阐述Java在整个项目开发中的核心意义,所以讲解了综合的DAO设计模式。 在学习本课程之前请确保已经学习了:《Oracle从入门到精通》、《Java8编程入门》、《Java8面向对象编程》、《Java8高级编程》几门课程,并且已经熟练的掌握了接口、类集、JDBC等技术的使用。 课时列表 • 课时1:软件分层设计 • 课时2:设计分析实例 • 课时3:程序开发准备(定义数据库连接类) • 课时4:程序开发准备(定义VO类) • 课时5:数据层设计与开发(定义数据层标准) • 课时6:数据层设计与开发(数据层...阅读全文

DockOne微信分享( 一零二):基于容器的日志管理实践

【编者的话】业务平台每天产生大量日志数据,为了实现数据分析,需要将生产服务器上的所有日志收集后进行大数据分析处理,Docker提供了日志驱动,然而并不能满足不同场景需求,本次将结合实例分享日志采集、存储以及告警等方面的实践经验。 2013年以来Docker迅速火了起来,它的理念带来了非常大的便利性,不过实际应用中会发现还有监控、日志、网络等问题尚待解决,本文会结合实例分享数人云做容器日志系统的经验。 基于ELK的日志管理系统架构日志收集是大数据的基础,业务平台每天产生大量日志数据,为了实现数据分析,需要将生产服务器上的所有日志收集后进行分析处理;高可用性,高可靠性以及可扩展性是日志收集系统的必备要素。 ELK是目前较流行的日志一体化解决方案,提供日志收集、处理、存储、搜索、展示等功能。容器标...阅读全文

博文 2017-06-25 16:25:28 Dataman数人科技

【TiDB@丰巢】支付平台的迁移之旅

因为本文是我第一次发表在 丰巢技术团队 公众号上,所以在简书上发表只能算是转载。丰巢第一次在生产环境实际使用TiDB,是在2018年,其场景是每天产生一亿条以上数据的推送平台,当时我们还发了一篇文章,被PingCAP官方收录:TiDB at 丰巢:尝鲜分布式数据库。这次,因为实际的项目需要,我们选择了QPS和数据一致性要求更高的支付平台,作为第二个迁移到TiDB上的项目。由于丰巢的所有支付,都会通过该平台产生,所以其稳定性和性能,都是重中之重了,而这次的迁移之旅,也就特别的漫长和曲折。1. 支付平台现状及问题在迁移TiDB之前,丰巢支付平台全部运行于MySQL之上,其基本情况如下:实例数量:4台物理机,4个Master数据库数量:40+个数据库重要表分表数量:500+表分库分表规则:用户ID...阅读全文

Golang 复合数据类型:方法

传统的面向对象编程 在面向对象编程(OOP)中,类与对象是面向对象编程的两个主要方面。一个类(Class)能够创建一种新的类型(Type),其中对象(Object)就是类的实例(Instance)。可以这样来类比:你可以拥有类型 int 的变量,也就是说存储整数的变量是 int 类的实例(对象)。 对象可以使用属于它的普通变量来存储数据。这种从属于对象或类的变量叫作字段(Field)。对象还可以使用属于类的函数来实现某些功能,这种函数叫作类的方法(Method)。这两个术语很重要,它有助于我们区分函数与变量,哪些是独立的,哪些又是属于类或对象的。总之,字段与方法通称类的属性(Attribute)。 方法 在 Golang 中,方法是作用在接收者(receiver)上的一个函数,接收者是某种类...阅读全文

博文 2020-06-03 15:32:41 sunlingbot

[Golang]设计模式实践:组合(Composite)

版权声明:本文为Sunface(孙飞)原创文章,转载请注明出处 https://blog.csdn.net/abv123456789/article/details/44195589 关于本系列这个系列首先是关于Go语言实践的。在项目中实际使用Go语言也有段时间了,一个体会就是不论是官方文档、图书还是网络资料,关于Go语言惯用法(idiom)的介绍都比较少,基本只能靠看标准库源代码自己琢磨,所以我特别想在这方面有一些收集和总结。然后这个系列也是关于设计模式的。虽然Go语言不是一门面向对象编程语言,但是很多面向对象设计模式所要解决的问题是在程序设计中客观存在的。不管用什么语言,总是要面对和解决这些问题的,只是解决的思路和途径会有所不同。所以我想就以经典的设计模式作为切入点来展开这个系列,毕...阅读全文

万用大数据修炼手册!教你如何在成为大牛的路上保护好你的秀发!

也许你想在数据研究领域工作,你对数据工程师和数据科学家之间的区别还不是很清楚,甚至很多人可能认为这是同一件事。如果你真的这么认为,那是个大错误!这两个位置之间的差别正在增大。如果你不能深入理解这些异同,那么在未来绝对不会有几声雷鸣在等你。这篇文章必须读!数据工程师在技术上工作。他们负责数据系统架构的设计和维护,包括从基础设施分析到数据仓库的许多概念。数据工程师需要对常用的脚本语言有一个透彻的理解,并通过使用和改进数据分析系统,稳步提高数据的质量和数量。他们还负责创建建模、挖掘、验证和获取数据的步骤和过程。 预计行业对熟练数据工程师的需求将迅速增长。在现代世界,企业和组织需要一个可靠的数据体系结构来获取和存储数据。当企业发展到需要使用数据科学的程度时,它需要数据工程师。因此,迫切需要数据工程师...阅读全文

博文 2019-01-29 00:34:43 大数据的风风