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

从普通Java程序员到阿里高级架构师,他用了六年!

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

博文 2018-09-25 18:34:46 java闲谈录

一名十余年资深Java架构师的经验之谈

所谓架构师,思考的是全局的东西,是如何组织你的系统,以达到业务要求,性能要求,具备可扩展性(scalability),可拓展性(extendability),前后兼容性等。可能涉及到的东西包括了从硬件到软件的方方面面,实在是一言难尽。要想往架构师的方向发展首先要知道架构师是什么?架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。 天马行空架构师在软件开发的整个过程中起着很重要的作用。说的详细一些,架构师就是确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。架构师的主要任务不...阅读全文

博文 2019-03-29 20:34:41 杜弥

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

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

博文 2018-11-13 00:34:39 JAVA高级架构开发

一名十余年资深Java架构师的经验之谈

所谓架构师,思考的是全局的东西,是如何组织你的系统,以达到业务要求,性能要求,具备可扩展性(scalability),可拓展性(extendability),前后兼容性等。可能涉及到的东西包括了从硬件到软件的方方面面,实在是一言难尽。要想往架构师的方向发展首先要知道架构师是什么?架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。​天马行空架构师在软件开发的整个过程中起着很重要的作用。说的详细一些,架构师就是确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。架构师的主要任务不...阅读全文

博文 2019-04-24 19:02:39 answer-A

[北京] [滴滴云] 招聘Golang高级后端研发工程师

>职位描述 ###### 参与滴滴基础架构业务系统的设计、研发工作,提升滴滴产品稳定性; ###### 有良好的拆解需求,分析问题能力; ###### 进行相关产品的技术文档编写,方案设计; ###### 学习研究业界先进技术,保持技术进步。 >任职要求 ###### 本科及以上学历,计算机相关专业,两年以上服务端研发经验; ###### 深入理解计算机原理,有扎实的数据结构和算法基础; ###### 深入理解linux系统及其原理,熟悉TCP/IP、HTTP协议以及网络编程; ###### 良好的编码和文档习惯,对代码美感的追求孜孜不倦,并能持续的关注和优化自己做的项目; ###### 精通Go/C/C++/Python等至少一...阅读全文

DDD & Microservices

Microservices(微服务架构)和DDD(领域驱动设计)是时下最炙手可热的两个技术词汇。在最近两年的咨询工作中总是会被不同的团队和角色询问,由此也促使我思考为什么这两个技术词汇被这么深入人心的绑定,它们之间的关系是什么呢? 服务于更高的业务响应力 首先从两个词汇的发明来看它们是没有因果关系的。DDD是Eric Evans于2003年出版的书名,同时也是这个架构设计方法名的起源。DDD的想法是让我们的软件实现和一个演进的架构模型保持一致,而这个演进的模型来自于我们的业务需求。这种演进式设计方法在当时看来还是比较挑战的,更为流行的解决架构设计复杂度的方法是分层:比如数据架构、服务架构、中间件架构等。MVC在互联网应用开发领域也基本成为了标配。 时间很快过了10年,Martin Fowle...阅读全文

Go设计模式实例:简单工厂

> > 该系列文章将用简单的例子来介绍Go语言设计模式的实现。 -------- 简单工厂模式定义 -------- * 工厂模式提供创建具体实例的功能,使用者无需关心其具体实现。 ---- 适用场景 ---- * 避免客户端知道内部的具体实现,只有工厂才能接触实现细节。返回的实例可以是接口、具体类型等。 ---- 简单实例 ---- * 利用工厂模式求几何图形的边长和面积。 package main import ( "fmt" "math" ) type GeometryType int const ( GeometryRect GeometryType = iota GeometryCicle ) type Geometry interface { Area () float32 Pe...阅读全文

Nebula Graph 的数据模型和系统架构设计

本篇主要介绍 Nebula Graph 的数据模型和系统架构设计。 有向属性图 DirectedPropertyGraph Nebula Graph 采用易理解的有向属性图来建模,也就是说,在逻辑上,图由两种图元素构成:顶点和边。 image.png 顶点 Vertex 在 Nebula Graph 中顶点由标签 tag 和对应 tag 的属性组构成, tag 代表顶点的类型,属性组代表 tag 拥有的一种或多种属性。一个顶点必须至少有一种类型,即标签,也可以有多种类型。每种标签有一组相对应的属性,我们称之为 schema 。 如上图所示,有两种 tag 顶点:player 和 team。player 的 schema 有三种属性 ID (vid),Name (sting)和 Age (in...阅读全文

设计模式-模板方法模式(Go语言描述)

这篇文章我们还是继续我们的设计模式系列, 今天我们带来的一个全新的设计模式在实际开发中大家肯定都遇到过, 可能大家只是不知道它叫模板方法模式而已, 今天我们就来详细的说一下什么是模板方法模式,已经该模式如何运用. 至于什么是模板方法模式, 我们还是老规矩, 先来个定义, 然后上张类图更加直观的看一下. 定义 模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤. 这个定义还是非常不错的, 至少认真读2遍还是可以理解什么意思的, 而且我们脑袋里可以想象到该如何设计这样的一个结构. 那它有什么样的使用场景呢? 其实在定义中已经说的很明白了, 大致有一下两点应用场景: 某些类别的算法中,实做了相同的方法,造成代码的...阅读全文

博文 2016-09-04 09:00:02 qibin0506

java实习生的技术要求有哪些?看看BAT对java实习生的要求

java实习生的技术要求有哪些?要进BAT有什么条件?下面就跟着千锋一起来看看吧! 对于实习生而言,其实很多公司要求都不是很高,毕竟对你的要求要对的起给你的工资水平,很多公司肯定都知道你本身的大体水平,不会期望太高,只是让你边学习边工作,如果你足够聪明伶俐,足够好学,可能就多培养你一些。 不过不同水平的公司(BAT>TMD>其他优秀的互联网公司>小型创业公司),肯定是对你的培养程度不同的,相应的对你实习的要求肯定是不同的。不要认为对你要求越高,得到的实习工资就会高,不是的,像腾讯阿里等公司对于实习生技术要求很高,但工资就在两三千左右,但以后的发展却是远远大于这个价值的。 一、BAT企业对实习生的要求(以阿里为代表): java基础非常重要,当然也要深入理解原理,什么JVM,JMM,Class...阅读全文

博文 2018-10-08 16:34:54 锋迷小小芊

优秀的程序员更重视阅读源码,不看源码那是假的

01从事java开发的都知道java有个垃圾回收机制Garbage collection,要准确理解Java的垃圾回收机制,我们可以从:“什么时候”,“对什么东西”,“做了什么事情”这三个方面来分析。01、“什么时候”“什么时候”即是GC触发的条件。GC触发的条件有两种:程序调用System.gc时可以触发;系统自身来决定GC触发的时机。系统判断GC触发的依据:根据Eden区和From Space区的内存大小来决定。当内存大小不足时,则会启动GC线程并停止应用线程。​新生代、老年代结构minor gc/full gc,还需要了解Minor GC 金额Full GC 触发条件Minor GC触发条件:当Eden区满时,触发Minor GC。Full GC触发条件:调用System.gc时,系统...阅读全文

博文 2018-10-11 16:06:01 Java007

如何把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的负责await,...阅读全文

博文 2020-02-10 23:32:45 海之方

设计模式-01-适配器模式

适配器模式概述在开发过程会遇到有两个项目,A项目想调用B项目的接口,然而两个项目并没有做兼容。适配器模式就将一个类的接口,转换成客户期望的另一个接口。适配器模式就好比IPhone手机的转换器一样。还有Javachoking的swing库也有很多Adapter也是适配器模式应用的场景。 结构适配器模式结构图 实现实现使用适配Log类。当Log实现了保存到文件的功能后,客户想实现保存到数据库,使用适配器模式可以实现。 总结与分析适配器模式的主要目的是组合两个不相干的类,在不改变原有系统的基础上,提供新的接口服务。 代码实现:适配器模式(php/go...阅读全文

博文 2019-04-10 20:34:39 疯狂的卡卡

提升研发效率 保障数据安全——阿里云宣布数据管理DMS企业版正式商业化

摘要: 阿里云数据管理DMS企业版,作为数据管理产品大家族里的新成员,于2017年11月开启公测,今年1月底正式发布商业化版本。 作为业界领先的面向企业的数据库DevOps解决方案,DMS企业版旨在帮助企业安全、高效的使用数据库,提升研发与DBA运维的协作效率,为企业核心数据提供更安全的访问管控和操作记录查询审计。 **点此查看原文: http://click.aliyun.com/m/41268/** 阿里云数据管理DMS企业版,作为数据管理产品大家族里的新成员,于2017年11月开启公测,今年1月底正式发布商业化版本。 ![图片描述](http://img.blog.csdn.net/20180130104827243?watermark/2/text/aHR0cDov...阅读全文

JAVA面试核心教程|Java面试基础知识点总结

Java中的原始数据类型都有哪些,它们的大小及对应的封装类是什么? byte——1 byte——Byte short——2 bytes——Short int——4 bytes——Integer long——8 bytes——Long float——4 bytes——Float double——8 bytes——Double char——2 bytes——Character boolean——————Boolean boolean数据类型非true即false。 这个数据类型表示1 bit,但是它的大小并没有精确定义。 《Java虚拟机规范》中如是说:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语...阅读全文

博文 2018-08-28 21:52:10 Java_fenxiang

阿里p8Java技术专家,他们的能力都需要达到什么程度?

大家口中的P8,通常都是阿里P8高级技术专家,是一线Team leader或者二级域架构师,需要对一个领域的业务非常熟悉并且能够将影响力辐射到其他合作团队。一般来说一些业务架构、应用架构、产品功能决策、技术选型、协作分工等问题应该在P8层次终结,P8是一线作战的小队长,向下提供决策,向上提供有效的信息。P8 Java技术专家,不仅要具备优秀的编程能力和系统设计能力,在技术视野和业务洞察力方面,也要有很深的积淀。经过我半年多的整理,今天刚好有此机会,我整理了一份架构图谱,主要是针对2-5年左右的Java开发程序员提升的,不管是传统行业还是互联网行业,掌握这些技术基本都能拿到一个不错的薪资,希望对大家有所帮助。​​​​阿里是Java大厂,所以可以参考阿里的标准,而对P8的要求是什么呢,以下4个小...阅读全文

博文 2019-06-25 15:23:20 a1127889067

招聘区块链的大小咖,欢迎来撩,坐标杭州

岗位职责 1.从事区块链产品的设计与研发工作,研究区块链的协议,运行机制和底层实现等; 2.搭建基于区块链的底层架构,实现公链、侧链、私链等多种逻辑,供应用层调度使用。 3.组织制定和实施技术决策和技术方案,组织架构设计与升级优化; 4.指导项目团队成员的日常开发工作,解决开发中的技术问题; 职位要求 1.熟悉比特币、以太坊、Fabric等的区块链相关机制与原理 2.理解各类主流的共识算法,包括不限于PoW,PoS,DPoS,PBFT,Paxos,Raft等 3.熟练掌握GoLang或C/C 开发语言 4.熟练掌握主流编程语言如Node.js, Python 5.熟悉linux操作系统,熟练掌握Docker容器技术的原理,部署和使用优化 6.熟悉TCP/IP...阅读全文

Go语言程序设计:集合类型

Go语言程序设计:集合类型 Go 集合 本章主要介绍了以下类型: 值,指针以及引用的类型。除此之外,还包括了Go语言的一些内置类型:数组、切片和映射。 通常情况下,变量持有相应的值。值在传递给函数或者方法时会被复制一次,这对布尔类型或者数值类型来说非常廉价。按值传递字符串也很廉价,因为字符串不可变。但是,如果修改一个传入的字符串的话,代价可能会很大。 在Go语言中,数组是按值传递的。幸运的是,我们不常用数组,而是用切片。 对于指针来说,用法跟C是类似的。既有&取地址操作符,也有*解引用操作符。其基本的用法与C指针类似。在生成一个结构体的实例时,我们可以用new(Type)来生成这个实例的指针,或者用&type{}的方法来生成指针。其中后者还可以进行初始化。 除了这两者之外,还有引用类型。引用...阅读全文

博文 2016-09-06 18:00:01 kamendula

从普通Java程序员到阿里高级架构师,他用了6年!

6年间,一位架构师待过四大门户中的两户,已完成了工程师到架构师的蜕变。经手几款从零到一产品的开发和增涨,也亲身经历国內最大社交网络平台亿级数据流量和用户的架构设计及优化工作。在工作中思路清晰、尽职尽责,是同事们心目中出色 Problem Solver。参加工作时间:8 年服务公司:4 家(含四大门户中的两户)近期岗位:Java 架构师职场关键词:社交网络平台、高并发系统架构设计、技术团队管理、多款从零到一的产品城市! 问:介绍一下下你自身答:我 2007 年本科大学毕业,前 2 年在一家传统式 it互联网 企业,近期 6 年在互联网企业,现任 Java 开发工程师、高级工程师、架构师等职位。工作内容上,经历过多款产品从零到一的诞生开发过程,也经手过国內用户、內容和数据流量最大的社交/社区产品...阅读全文

博文 2019-02-13 21:34:44 Java架构007

工作总结

2010-2013 封装IOCP 内存池 使用CEGUI开发PC客户端UI 初识分布式 CS网络交互 单例、reactor、表驱动等设计模式 STL、模板 初识C# 初始多线程 版本管理 代码调试 xml 文件读写、配置解析 应用日志 sql 夯实C++基础,采用一些设计模式来更通顺的组织代码,以及会利用一些C++奇技淫巧来缩减代码,理解代码重构的意义。理解怎样用socket建立TCP连接来进行CS交互,以及通信中结构体的序列化和反序列化。对多线程安全有了初步的认知,了解互斥体、信号量和原子操作在多线程环境下怎样解决数据竞争。理解分布式架构下的数据同步、数据落地。熟悉游戏开发的总体流程。认识C#。 2013-2016 C#网络通信 Redis cocos2d-x、Unity Java/JNI...阅读全文

博文 2019-03-15 01:34:40 牧桐谣

Hyperledger Fabric 架构设计 by yeasy

整个功能架构如下图所示。 包括三大组件:区块链服务(Blockchain)、链码服务(Chaincode)、成员权限管理(Membership)。 概念术语 • Auditability(审计性):在一定权限和许可下,可以对链上的交易进行审计和检查。 • Block(区块):代表一批得到确认的交易信息的整体,准备被共识加入到区块链中。 • Blockchain(区块链):由多个区块链接而成的链表结构,除了首个区块,每个区块都包括前继区块内容的 hash 值。 • Certificate Authority(CA):负责身份权限管理,又叫 Member Service 或 Identity Service。 • Chaincode(链上代码或链码):区块链上的应用代码,扩展自“智能合约”概念,...阅读全文

博文 2017-09-14 01:34:56 seancheney

java高并发核心要点|系列5|CPU内存伪共享

上节提到的:伪共享,今天我们来说说。 那什么是伪共享呢? 这得从CPU的缓存结构说起。以下如图,CPU一般来说是有三级缓存,1 级,2级,3级,越上面的,越靠近CPU的,速度越快,成本也越高。也就是说速度方面:1级>2级>3级。 image 说到这里,我们要理解一个很重要的概念:缓存行。什么是缓存行? 首先我们来看这几级缓存,其中,1,2级缓存是CPU核心私有的,也就是说每个核,之间不会共享1,2级缓存,那它们之间怎么通信或共享数据呢? 答案是:3级缓存,如下图: image 那core1,和core2之间,是通过什么方式共享缓存呢? 答案是:缓存行! 什么是缓存行?简单来说,就是CPU内核之间共享数据的最小单位。如下图:x,y是在同一个缓存行,那每次CPU内核之间通信时交换x,y值,可以同...阅读全文

Go语言并发与并行学习笔记(三)

以下设计模式和应用场景来自Google IO上的关于Goroutine的PPT:https://talks.golang.org/2012/concurrency.slide 本文的示例代码在: https://github.com/hit9/Go-patterns-with-channel 生成器 在Python中我们可以使用yield关键字来让一个函数成为生成器,在Go中我们可以使用信道来制造生成器(一种lazy load类似的东西)。 当然我们的信道并不是简单的做阻塞主线的功能来使用的哦。 下面是一个制作自增整数生成器的例子,直到主线向信道索要数据,我们才添加数据到信道 func xrange() chan int{ // xrange用来生成自增的整数 var ch chan int...阅读全文

通过用Go编写shell小工具来实践设计模式

不久以前看过Rob Pike写的一篇文章(Self-referential functions and the design of options),对其中的提到关于如何配置结构体或者类成员属性的一种设计模式印象很深刻,其中的selft-referential更是魔幻但又不失实用性,看过细品,受益匪浅。他说为了为他正在编写的一个package(如果没猜错应该是net/rpc包)找到更合适的设计模式,他在几年间尝试了多种方案,最终选择了这种,为老前辈的这种精益求精的精神深深折服。巧合的是,前几天看了个开源项目,阅读其源码,发现英雄所见略同,也许是该作者也读了Rob的这篇文章,我不得而知,其中也用到了我们常说的“生产-消费”模式,这个项目不大,一千多行代码,实现的功能也是很简单,但作者代码的优雅...阅读全文

博文 2020-05-19 14:01:02 zhangwei

任职要求

UI设计师 职位详情 负责产品UI视觉设计与用户体验,能独立完成设计任务。 与团队合作,针对复杂抽象的问题设计清晰有效的解决方案。 准确理解产品需求和交互原型,设计出优质用户体验的界面效果图。 参与产品分析、创意以及交互体验优化,并提出建设性意见。 规范产品在用户体验上的统一性和一致性。 任职要求 本科及以上学历,设计类相关专业,2年以上的互联网或移动互联网设计经验。 有互联网公司工作经验,主导过上线项目。 精通各类交互与视觉设计,熟悉iOS、Android端的官方设计规范,同时是深度用户。 重视细节,追求像素级完美,热爱人机交互与用户洞察,对设计探索有浓厚兴趣,自我驱动力强。 具备一定的产品思维和较好的用户同理心,能够参与用户研究、交互设计、设计原型开发等工作。 后端开发工程师 职位详情 ...阅读全文

明白了,原来Go web框架中的中间件都是这样实现的

这篇文章想谈谈Go的装饰器模式、pipeline(filter)模式以及常见web框架中的中间件的实现方式。 修饰模式 修饰模式是常见的一种设计模式,是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式。就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。 有时候我把它叫做洋葱模式,洋葱内部最嫩最核心的时原始对象,然后外面包了一层业务逻辑,然后还可以继续在外面包一层业务逻辑。 原理是:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。与适配器模式不同,装饰器模式的修饰类必须和原来的类有相同的接口。它是在运行时动态的增加对象的...阅读全文

博文 2019-08-31 14:16:31 smallnest

阿里带你一起学习企业运维监控平台架构设计与实现

课程介绍 本课程主要介绍了企业常见的运维监控平台的构建思路和常用软件,讲述了cacti、nagios、zabbix、ganglia、webnagios等常用监控软件的差异和优劣,并深入介绍了通过ganglia+nagios如何快速构建一个统一运维监控平台。 课时列表 • 课时1:Cacti/Nagios/Zabbix/centreon/Ganglia之抉择 • 课时2:统一运维监控平台设计思路 • 课时3:ganglia的安装与配置过程 • 课时4:通过gmetric接口扩展Ganglia监控 • 课时5:Centreon的结构与运行机制以及安装配置 • 课时6:配置centreon监控系统 • 课时7:实现ganglia与centr...阅读全文

【轻知识】有以下资料。面试是否不愁呢?

为何写这篇文章。因为搜面试题搜到一篇# PHP高级工程师面试题 。看了看,有的会有的不会。想到自己也或多或少看过一些资料,故整理一下。 以下表中,资料列,列出的就够了。大都足以回答上面的面试题中的问题。 技能 资料 思考 php内核篇 《PHP7内核剖析》《PHP 7底层设计与源码实现》《PHP 7底层设计与源码实现》视频 尽量看细点。php7较之php5怎么节省内存的。比如php7 zvalue中复杂类型的用指针操作,也就是存个指针。php7快在哪里,小到string用了柔性数组,大到ast吧。这些话是我面试后的反思。我当时只是回答结构体设计不同。 php框架篇 《深入 Laravel 核心 》《BAT资深工程师由浅入深分析Tp5&Tp6底层源码》 自己用啥框架就找啥吧。 设计模式篇 《大...阅读全文

博文 2020-02-27 16:32:54 言十年

Golang设计模式,装饰器模式

package decorator import ( "errors" "fmt" ) type IngredientAdder interface { AddIngredient() (string, error) } type PizzaDecorator struct { Ingredient IngredientAdder } func (p *PizzaDecorator) AddIngredient() (string, error) { return "Pizza with the following ingredients:", nil } type Meat struct { Ingredient IngredientAdder } func (m *Meat) AddIn...阅读全文

博文 2019-09-26 14:33:07 aside section ._1OhGeD

【北京】【小川科技】招聘 Golang 技术专家

**邮箱:bibithink@gmail.com** **工作职责:**` 1. 负责后台系统的设计与实现,包括:推荐、消息、存储等; 2. 保证后台系统7*24运营和高效应急反馈; 3. 配合产品和市场部门,做好产品的运营支持。 4. 参与系统架构设计、优化,提升系统性能和开发效率,保证高并发高可靠; **能力要求:** 1. 熟悉linux c/c++ 、go、python的一种或多种; 2. 熟悉网络编程,深入理解HTTP、TCP/IP等网络协议; 3. 深入理解数据库或NOSQL系统,有实际数据库调优或NOSQL使用经验; 4. 深刻理解计算机原理,有良好的数据结构和算法基础...阅读全文

阿里高级专家应答:各种数据在一个统一计算平台上的融合,才能产生更大的价值

摘要: 阿里巴巴这种超大数据体量上才会遇到的独特挑战,让应答在技术上有了更清晰的认识,一定要夯实分布式系统的基础。“只有把基础夯实了,才能支持上层各种计算场景在大体量上的实现,让各种新的算法在‘阿里体量’上真正发挥潜力。” 《沉淀》是云栖社区展示专家风采的人物栏目。它呈现每个专家独一无二的人生经历、认识和感悟的同时,也能帮助你沉淀技术,收获对技术和人生的判断。我们的想法是:“若你想精进为一个很厉害的人,不妨细细品味这些技术牛人背后的沉淀。”如果你想了解这些云栖专家更多分享时,请点击云栖专家频道,当然我们也欢迎你往前走一步,成为我们的云栖专家(https://yq.aliyun.com/expert),与技术大牛一起“煮酒论英雄”。 “这个没啥好讲的,找XX和XX技术Leader吧...阅读全文

Golang设计模式,组合模式

两个例子,一个组合运动员,一个树。 package composite // region start composite swimmer demo type ITrainer interface { Train() } type ISwimmer interface { Swim() } type CompositeSwimmer struct { ITrainer ISwimmer } type Athlete struct{} func (a *Athlete) Train() { println("Training") } type Swimmer struct{} func (b *Swimmer) Swim() { println("Swimming") } // endregi...阅读全文

博文 2019-09-26 14:33:05 aside section ._1OhGeD

知识更新越来越快,但是学习起来越来越困

我是一个着迷于产品和运营的技术人,乐于跨界的终身学习者。欢迎关注我的个人公众号「跨界架构师」 每周五11:45 按时送达~ 我的第「140」篇原创敬上 ​大家好,我是Z哥,先祝大家节日快乐。不知道这个假期你打算出门吗?Z哥我是打算不出远门了,怕死,哈哈。索性好好宅家里学习,强化一下自己。相信大家也感受到了,随着互联网加速了信息的流动速度,知识的更新迭代也在加速。可能原本靠着一门手艺可以过一辈子,现在可能每5~10年就需要一次大的迭代才能跟上社会的发展步伐,不被out。并且,随着最近几年知识付费的兴起,提倡「终身学习」的声音越来越大了。不管是出于什么目的在鼓吹「终身学习」,这个观点的价值取向总是正向的。但是对于学习这个问题,困扰我们大部分人的并不是学什么或者怎么学。而是,总是学着学着没动力,半...阅读全文

博文 2020-05-02 23:33:11 跨界架构师

Go单例模式

单例模式回顾 以前在做java的时候,经常会用到设计模式,如单例模式、工厂模式、观察者模式等。其实设计模式和语言无关,先简单回顾下单例模式吧,单例模式是一种用在特定场景的设计模式。比如,读取程序的配置文件的时候就会用到单例模式。 想象一下,假如有个类的实例是来对配置文件进行操作,如果不用单例模式,系统中任何用到读取配置文件的地方都将会创建一个对象,这得多么浪费内存。 实际上改对象只需要被实例化一次即可。单例模式的抽象表达就是:在程序中我们只需要某个类实例化一次即可,保证一个类仅有一个实例,并提供一个获取实例的方法。 单例模式的实现 单例模式有懒汉式和饿汉式。在用Go实现之前,先看看Java的实现。在java中不管是懒汉式还是饿汉式都会将构造方法私有化。这点不用解释,因为不需要通过外部来实例化...阅读全文

博文 2019-03-04 00:34:40 nobody

用 golang 实现区块链系列一 | 基本原型

介绍 区块链是二十一世纪以来最具革命性的科技之一,它仍在发展中,并且其潜力仍未被充分认知。本质上,区块链只是一个分布式的记录数据库,但使它和其他数据库不一样的是,他并不是一个私有数据库,而是公开的。每个使用它的人都有完整或者部分副本。并且一条新的记录只能在被数据库的其他管理员同意的情况下才能被加入。区块链也使得加密货币和智能合约成为可能。 本系列文章将会构建一个基于简单区块链实现的简单加密货币。 Block 我们从 “区块链” 的 “区块” 开始讲起。在区块链中, block 存储着有价值的信息。例如,比特币区块存储着交易信息,这是加密货币的本质。除此之外,区块还包含着一些技术信息,像是版本号,当前时间戳,还有上一个区块的 hash 值。 在本文中,我们不会去着手实现一个区块链中描述的区块,...阅读全文

博文 2018-11-19 20:34:51 小马哥_Magical

Golang设计模式(工厂方法模式)

工厂方法模式类图, image.png abstract_factory_test.go // abstract_factory_test package abstract_factory import ( "testing" ) func TestMotorbikeFactory(t *testing.T) { motobikeF, err := GetVehicleFactory(MotobikeFactoryType) if err != nil { t.Fatal("Create motorbike vehicle factory failed") } vehicle, err := motobikeF.GetVehicle(SportMotorbikeType) if err !=...阅读全文

Go单例模式

单例模式回顾 以前在做java的时候,经常会用到设计模式,如单例模式、工厂模式、观察者模式等。其实设计模式和语言无关,先简单回顾下单例模式吧,单例模式是一种用在特定场景的设计模式。比如,读取程序的配置文件的时候就会用到单列模式。 想象一下,假入有个类的实例是来对配置文件进行操作,如果不用单例模式,系统中任何用到读取配置文件的地方都将会创建一个对象,这得多么浪费内存。 实际上该对象只需要被实例化一次即可。单例模式的抽象表达就是:在程序中我们只需要某个类实例化一次即可,保证一个类仅有一个实例,并提供一个获取实例的方法。 单例模式的实现 单例模式有懒汉式和饿汉式。在用Go实现之前,先看看Java的实现。 在java中不管是懒汉式还是饿汉式都会将构造方法私有化。这点不用解释,因为不需要通过外部来实例...阅读全文

博文 2019-03-04 01:34:40 zhoushuime

设计模式-03-生成器模式

生成器模式概述生成器模式将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。生成器模式的主要功能是构建复杂的产品,而且是细化地、分步骤地构建产品,也就是说生成器模式重在一步一步解决构建复杂对象的问题。 实现使用文件的导出来实现生成器模式。文件的导出有普通文本和xml等文件格式。生成器作为一个接口,不同的具体生成器具体实现接口的方法。还有一个指导者负责整体构建的算法部分,是相对不变的部分。 总结与分析生成器模式构建对象的过程是统一的、固定不变的,变化的部分放到生成器部分了,只要配置不同的生成器,那么同样的构建过程,就能构建出不同的产品来。生成器模式的重心在于分离构建方法和具体的构造实现,从而使得构建算法可以重用。具体的构造实现可以很方便地扩展和切换,从而可以灵活地组合来构...阅读全文

博文 2019-04-10 20:34:40 疯狂的卡卡

PHP高级工程师学习和面试指南(转)

绝知此事须躬行。 为何写这篇文章。因为搜面试题搜到一篇# PHP高级工程师面试题 。看了看,有的会有的不会。想到自己也或多或少看过一些资料,故整理一下。 以下表中,资料列出的就够了。大都足以回答上面的面试题中的问题。 技能 资料 思考 php内核篇 《PHP7内核剖析》《PHP 7底层设计与源码实现》《PHP 7底层设计与源码实现》视频 尽量看细点。php7较之php5怎么节省内存的。比如php7 zvalue中复杂类型的用指针操作,也就是存个指针。php7快在哪里,小到string用了柔性数组,大到ast吧。这些话是我面试后的反思。我当时只是回答结构体设计不同。 php框架篇 《深入 Laravel 核心 》《BAT资深工程师由浅入深分析Tp5&Tp6底层源码》 自己用啥框架就找啥吧。 p...阅读全文

博文 2020-03-23 14:33:02 我是程序汪

单件模式——Golang实现

单件模式比较常见,算是创建型的设计模式,和工厂模式不同,他只能创建一个实例。他的应用场景很多,比如MySQL只能有一个实例这种都算。 单件模式能简单分成支持并发和不支持并发两种。不过并发这个很简单,满大街Golang实现的单件模式都是这样的。 普通的单件模式 package singleton import ( "fmt" ) var _self *Singleton type Singleton struct { Name string } func Instance() *Singleton { if _self == nil { _self = new(Singleton) return _self } return _self } func (o *Singleton) SetNam...阅读全文

博文 2017-02-09 12:25:33 Bryce

如何把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的负责await, 简直...阅读全文

博文 2020-02-27 16:32:50 Java天天

【语言实践】Go语言文档自动化之go-swagger

为什么需要文档自动化? 技术人员对自动化的认知主要来自于“惰性和惯性”,可以代码实现的事情就不要手工编辑,“我们不是设计师”,我们追求效率,美不美是排第二位的。so,你也会明白为啥需要文档自动化吧,毕竟除了coding,技术人员主要工作就是文档,特别是在跨团队沟通的时候,在需要把技术内容输出团队之外,或者输出自己之外的人员时候。就需要一个优雅的方式,高效的方式,以及可以炫耀的方式,所以文档自动化应运而生。 1 go-swagger依赖包下载 go-swagger中在github.com的仓库下的依赖包如下,主要包含可以对语法进行校验的govalidator,文档化的标准specification的go-openapi,还有网络处理的golang.org旗下的net和text。 go-swag...阅读全文

博文 2019-03-05 14:35:07 万能的华哥Dean

互联网大厂必问面试合集,助你跳槽拿高薪--Java篇

前言作为程序员,免不了要经历面试这关,虽然平时工作勤勤恳恳,但是面试上面未必能展示的出来,比如平时都是做增删改查的业务系统,面试官非要问你如何处理高并发大数据,本来是写java代码,非要问你大型网站架构,这些问题防不胜防,本文就自己的面试经验来总结一下,抛砖引玉。第一步先自我介绍?介绍自己的项目经验和个人的擅长点,面试官主要考察你的表达能力和语言精简能力。第二步:项目中做了什么,难点在哪里?主要是想了解参与过技术难度最大的项目难点,技术难点在哪里,你是怎么来解决的,考察项目经验(技术难度)和解决问题的能力。第三步:开始切入技术面试正题:基础篇基本功面向对象特征final, finally, finalize 的区别int 和 Integer 有什么区别重载和重写的区别抽象类和接口有什么区别说...阅读全文

博文 2019-04-15 17:21:33 answer-A

三年Java开发工程师,面试电话接到手软

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

博文 2019-02-20 13:33:29 JavaWDB

入门goroutine并发设计模式以及goroutine可视化工具

Daisy-Chain 首先,为了防止过于枯燥,我先列出我最喜欢的一个模式:Daisy-Chain。这个模式比较复杂,对go的并发编程不太熟悉的同学,可以先看下面的模式。然后回过头来看这个。 daisy chain会创建很多channel,然后把这些channel首尾相接级联起来,组成一条单向链,每个channel都在处理不同的子任务,最后的结果在链的末端输出。这是在2012年的golang talks中由Rob Pike提出的: func f(left, right chan int) { // 这个函数就把right的输出和left的输入联系起来了。 left <- 1 + <-right } func main() { const n = 10000 leftmost := make(...阅读全文

博文 2017-02-10 10:27:57 flybywind

百亿级日志系统架构设计及优化

本文将从海量日志系统在优化、部署、监控方向如何更适应业务的需求入手,重点从多种日志系统的架构设计对比;后续调优过程:横向扩展与纵向扩展,分集群,数据分治,重写数据链路等实际现象与问题展开。 日志系统架构基准 有过项目开发经验的朋友都知道:从平台的最初搭建到实现核心业务,都需要有日志平台为各种业务保驾护航。 图片.png 如上图所示,对于一个简单的日志应用场景,通常会准备 master/slave 两个应用。我们只需运行一个 Shell 脚本,便可查看是否存在错误信息。 随着业务复杂度的增加,应用场景也会变得复杂。虽然监控系统能够显示某台机器或者某个应用的错误。 然而在实际的生产环境中,由于实施了隔离,一旦在上图下侧的红框内某个应用出现了 Bug,则无法访问到其对应的日志,也就谈不上将日志取出...阅读全文

让Java程序员再次生机勃勃,还是技术的力量

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

博文 2019-02-22 11:51:50 JavaWDB

golang

一、go基础 二、go应用 1 初级应用 1.1. 反射reflection 1.2. server服务 1.3. 文件操作 1.4. 终端读取 1.5. json协议 1.6. web模板 1.7. 时间处理 1.8. 锁机制 1.9. 原子操作 1.10. 加密解密 1.11. 日志包 1.12. 随机数验证码 1.13. 编码格式的转换 1.14. 常用算法 1.15. 限流器 2 高级应用 2.1. rpc 2.2. pprof 2.3. goim 2..4. gopush 2.5. cgo 2.6. Golang GC 2.7. 封装websocket 3 第三方应用库 3.1. cli应用 Cobra 3.2. 图标库 3.3. 开源IM 3.4. 机器学习库 3.5. 生成二维...阅读全文

博文 2019-06-13 22:32:41 yongfutian

Kafka两级调度实现分布式协调微服务任务分配Golang版

背景 基于Kafka消息队列的两级协调调度架构 Kafka内部为了协调内部的consumer和kafka connector的工作实现了一个复制协议, 主要工作分为两个步骤: 通过worker(consumer或connect)获取自身的topic offset等元数据信息,交给kafka的broker完成Leader/Follower选举 worker Leader节点获取到kafka存储的partation和member信息,来进行二级分配,实现结合具体业务的负载均衡分配 从功能实现上两级调度,一级调度负责将Leader选举,二级调度则是worker节点完成每个成员的任务的分配 主要是学习这种架构设计思想,虽然这种方案场景非常有限 基于消息队列实现分布式协调设计 一级协调器设计:一级协调...阅读全文

反思-20190416

夜里突然醒来,反思一下最近的学习状态。 图片发自简书App 近一个月来,虽说用golang写了几个小服务,electron、vue等前端东西也学了不少,但是却有种不踏实的感觉,一想,可能是白天工作中还接触老本上Java开发,平时看的太少,有点偏离了路线,毕竟工作为主!其他都是兴趣爱好。 再说说工作上的学习,可能是因为项目比较稳定,所以即使发现了一些问题,现有的业务与技术知识可以很快的解决问题,所以能学到的知识也就比较少。最近负责的新的需求,工作的重点也写文档上,开发任务难点也都落在了安卓或者IOS开发同事身上,服务端的逻辑设计和开发难点相对来说也没有什么新鲜感。 现在应该处于基础开发者与中级之间吧,感觉应该进行下一步深入的学习java了。学如逆水行舟,不进则退...阅读全文

博文 2019-04-16 02:34:41 clawhub