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

月薪 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 大二小的宝

如何把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

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从入门到

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

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

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

一)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 ...阅读全文

????设计模式-适配器模式-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

从普通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

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

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

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

这几年从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

三年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:数据层设计与开发(数据层...阅读全文

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语言不是一门面向对象编程语言,但是很多面向对象设计模式所要解决的问题是在程序设计中客观存在的。不管用什么语言,总是要面对和解决这些问题的,只是解决的思路和途径会有所不同。所以我想就以经典的设计模式作为切入点来展开这个系列,毕...阅读全文

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

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

博文 2018-12-12 14:34:48 高级java架构师

TensorFlow快速入门与实战

课程目录:01、课程内容综述02、第一章内容概述03、TensorFlow产生的历史必然性04、TensorFlow与JeffDean的那些事05、TensorFlow的应用场景06、TensorFlow的落地应用07、TensorFlow的发展现状08、第二章内容概述09、搭建你的TensorFlow开发环境10、HelloTensorFlow11、在交互环境中使用TensorFlow12、在容器中使用TensorFlow13、第三章内容概述14、TensorFlow模块与架构介绍15、TensorFlow数据流图介绍16、讲张量(Tensor)是什么(上)17、讲张量(Tensor)是什么(下)18、讲变量(Variable)是什么(上)19、讲变量(Variable)是什么(下)20、...阅读全文

Golang笔记03《Go程序设计语言》第一章入门

《Go程序设计语言》第一章入门 永痕的Hello World package main import "fmt" func main(){ fmt.Println("Hello World") } 输入命令 go run hello.go,如果您输入的程序是正确的,那么会输出 Hello World 这就是go语言的最简单的最基础的代码,但是我们需要注意的事情是: 简单的事情不代表不重要 简单的事情不代表不重要 简单的事情不代表不重要 重要的事情说三次 end.....阅读全文

博文 2019-06-14 23:32:43 我加入简书的路程

go中设计模式之结构型模式

外观模式 1. 定义: 外部与一个子系统通信必须通过一个统一的对象进行,为子系统中的一组接口提供一致界面。 2. 代码示例: // 定义对外API type API interface { Test() } func NewAPI() API { return apiImpl{newMod()} } type apiImpl struct { m mod } func (a apiImpl) Test() { a.m.mod() } // 需要交互的内部模块 type mod interface { mod() } func newMod() mod { return modImpl{} } type modImpl struct { } func (m modImpl) mod() { }...阅读全文

博文 2019-06-20 17:03:16 wx5cf612fe3a728

Golang设计模式(工厂模式)

factory.go // factory package factory import ( "errors" "fmt" ) const ( Cash = 1 DebitCard = 2 ) type PaymentMethod interface { Pay(amount float32) string } func GetPaymentMethod(m int) (PaymentMethod, error) { switch m { case Cash: return new(CashPM), nil case DebitCard: return new(DebitCardPM), nil default: return nil, errors.New(fmt.Sprintf("Pay...阅读全文

博文 2019-06-23 12:32:38 FredricZhu

作为编程语言,go有什么不同?

随着Go语言自身的逐渐优化及Go语言社区的不断发展壮大,go吸引着越来越多的人们来学习,那么go是怎么样?作为编程语言,go有什么不同? 1.面向接口编程;2.使用组合的编程;3.正交性:语言设计的正交性,保证语言的稳定性和简单性;4.少即是多:有且仅有一种方法把事情做好做对;5.并发语言层面支持:并发更好利用多核,有更强的表现力来模拟真实世界;6.开放性:开源,语言的实现对程序员不是个黑盒子,任何想了解语言实现的人都可以参与进来。 Go 没有像JAVA一样,宗教式的完全面向对象设计;完全面向对象设计就是一刀切的宗教式的设计,但其并不能很好的表述这个世界,这就导致其表现力不足,最后通过设计模式和面向切面等设计技巧来弥补语言方面的缺陷;Go是面向工程的实用主义者,其糅合了面向对象的设计,函数式...阅读全文

博文 2019-11-19 15:56:16 zhouzhou2018

企业运维监控平台架构设计与实现

课程介绍 本课程主要介绍了企业常见的运维监控平台的构建思路和常用软件,讲述了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与centreo...阅读全文

Blog.6 分布式会话跟踪系统架构设计与实践

调用链trace系统可以帮助技术人员快速的定位问题,查看整个请求的调用链路,及各个链路的耗时情况。方便技术人员针对性的对服务进行性能优化。 概念 参考调用链trace的设计分析的介绍,trace系统的要素包括:traceId、spanId、annotation。 traceId:贯穿整个调用链路,通过traceId来关联链路的所有相关日志 spanId:标识单次请求调用 annotation:记录请求调用的附加信息 简化trace日志设计 在调用链trace的设计分析文章中,系统log设计相对复杂,先从最简单的入手开始了解。 微服务A、B、C之间存在相互调用关系,我们为每次请求记录一条log。通过log中的parnetID来确定调用的层级关系,通过spanID来唯标识一个独立请求,通过tra...阅读全文

博文 2019-08-25 18:02:38 渐行渐远

【设计模式】【golang源码】 单例模式(Singleton Pattern)

单例模式目的:对象初始化成本比较高,防止一个被多次初始化。 var ( confOnce sync.Once // guards init of confVal via initConfVal confVal = &conf{goos: runtime.GOOS} ) // systemConf returns the machine's network configuration. func systemConf() *conf { confOnce.Do(initConfVal) return confVal ...阅读全文

博文 2019-10-12 14:32:47 山丘

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

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

博文 2019-05-24 06:35:39 spring太难

前端遇上Go: 静态资源增量更新的新实践

来源:美团点评技术团队 链接:https://tech.meituan.com/2018/07/05/fe-and-golang.html 为什么要做增量更新 美团金融的业务在过去的一段时间里发展非常快速。在业务增长的同时,我们也注意到,很多用户的支付环境,其实是在弱网环境中的。 大家知道,前端能够服务用户的前提是 JavaScript 和 CSS 等静态资源能够正确加载。如果网络环境恶劣,那么我们的静态资源尺寸越大,用户下载失败的概率就越高。 根据我们的数据统计,我们的业务中有2%的用户流失与资源加载有关。因此每次更新的代价越小、加载成功率越高,用户流失率也就会越低,从而就能够变相提高订单的转化率。 作为一个发版频繁的业务,要降低发版的影响,可以做两方面优化: 更高效地使用缓存,减少静态资...阅读全文

博文 2020-04-25 01:32:52 夜空_b36c

算法篇序章

1.为什么要学数据结构和算法 IT开发工作中,大部分人是从业务开发为出发点的,而业务开发首要的是需求、功能的实现。在项目的里程碑、发版deadline等目标的驱动下,开发同学们往往挣扎于业务苦海,少有时间去思考性能优化和底层调用,往往一套框架和工具拿来即用,CURD不要太舒服。这样的结果就是一方面,第三方API和框架工具的使用大大提升了开发人员的开发效率,但是另一方面,许多开发人员对底层原理和数据结构知之甚少,一旦工具调用出问题则一脸懵B,所谓的开发工程师,无非是API调用工程师。 工作多年,我经历了多次线上生产的性能问题,这些经历生产上一些性能问题往往都是开发同学在对代码细节上考虑不周引起的,而这些操作往往都是对底层逻辑不熟悉导致的,掌握好这些基础写出更加优秀的程序,排查问题时也知道所以然...阅读全文

博文 2018-11-02 13:34:42 YitaiCloud

Java设计模式学习记录-模板方法模式

前言模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。模板方法模式概念介绍模板方法模式,其实是很好理解的,具体理解为,定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法结构即可冲定义该算法的某些特定步骤。模板方法模式是最为常见的设计模式之一,是基于继承的代码复用技术。架构师定义一套骨架,开发工程师按照骨架去实现具体的逻辑。举例在具体的项目中其实使用模板方法的场景有很多,就举我之间遇到过的一个场景吧,这是一个实际的项目,结合这个项目的中的场景可以引出模板方法模式的使用方法,在一个审批流程的项目,会有很多种的申请单,例如:出差申请单、请假申请单、采购申请单、付款申请单等等。每个申...阅读全文

博文 2018-10-22 17:19:34 Enjoyjava

作为云计算 2.0 时代的里程碑,云数据库PolarDB 还需要做什么?

随着用户、业务和数据的增长,由于I/O瓶颈(存储和网络)导致的备份、性能、迁移、升级、只读实例、磁盘容量、Binlog延迟等相关问题渐渐显现;过多数据库存储引擎的类型导致的工程效率以及运维成本显著上升,最好有一种通用的产品技术架构能兼顾不同用户场景的需求。针对以上关系型数据库在云托管环境逐渐暴露出一些问题,阿里云将在9月下旬推出自研通用云数据库PolarDB,是国内首个能从根本解决两大痛点的关键里程碑产品。 阿里云PolarDB是国内首个自主研发的通用云数据库,它拥有商业数据库一样的性能,但价格仅为前者的1/10,进一步降低用户的上云成本,大幅度提升OLTP性能,满足用户在业务连续性、在线业务扩展能力、数据安全上的需求,将彻底颠覆商业数据库的暴利时代。 在产品架构上放弃了通用分布...阅读全文

从职业方向,谈程序员如何突破成长瓶疾,我们该怎么去学习?

如何成长为一名架构师?很多程序员想成为一名架构师,但是对于其中的技能掌握程度,以及编程功底的要求?设计能力的要求有哪些?我简要从以下6点经验来谈,从技能的角度抛砖引玉。1:编程基本功:数据结构和算法1.数据结构相关的哈希表、链表、二叉树等等2.常见的算法有哪些?至少下图的算法我认为应该要掌握。比如:HashMap如何扩容,重点就是考底层数据结构。​2:编程基本功:Java编程这些都算是编程基本功底:多线程、JVM、并发容器、并发类、NIO等。​3:Web开发其实web开发这个领域,如果你要掌握好了,发展也非常不错的。比如:现在的H5、小程序等,对于掌握前端技术的开发人员,竞争力也是杠杠的。当然作为后端开发人员,多掌握点前端的技术,那也是必须的。​4:数据库重点就看图了,这里涉及的技术还是蛮多...阅读全文

博文 2019-04-24 17:08:31 demaxiya

阿里免费分享Java高级开发

课程介绍 当你已经熟练的掌握了面向对象中的各种概念后,是否会对这些知识是如何使用的产生浓厚的兴趣?本课程主要针对于已经掌握了JAVA核心开发技术的读者准备,讲解了JAVA多线程、常用类库、IO编程、网络编程、类集框架、JDBC等与Java实际应用有关的开发技术。 课程目标 • 掌握Java多线程开发、网络编程、JDBC等 适合人群 • Java开发者 课时列表 • 课时1:Eclipse开发工具(Eclipse简介) • 课时2:Eclipse开发工具(使用JDT开发程序) • 课时3:Eclipse开发工具(debug调试) • 课时4:Eclipse开发工具(junit测试工具) • 课时5:Java基础新特性(可变参...阅读全文

设计模式

课程使用语言 Java 1. Singleton 单例模式 保证在内存中只有一个实例。 1.1 饿汉式 类中定义出来此实例类型变量,并且设置为 私有 静态 和 final 的。(new 出实例。也可以用静态语句块方式定义) 类中将构造方法重写为 private 的,且不做任何事情。(其他人 New 不出来) 提供 public 方法返回此实例。 利用:JVM 每个 class 只会 load 到内存一次。 优点:简单实用,推荐使用。 缺点:类装载时就实例化了。(后来的懒加载是使用的时候加载,无此缺点。) 1.2 懒汉式 特点:什么时候用时什么时候初始化。 先声明一个实例(private static),但不初始化。 重写构造方法为 private 的。 在 getInstance 中判断实例...阅读全文

博文 2020-04-05 02:32:42 Robin92

Golang设计模式——单例模式

要点:sync.Once 的应用高并发场景下读写锁 package singleton import "sync" var ( p *Pet once sync.Once ) func init(){ once.Do( func() { p = &Pet{} }) } func GetInstance() *Pet{ return p } type Pet struct { Name string Age int m sync.Mutex } func (p *Pet)GetName()string{ return p.Name } func (p *Pet) GetAge() int{ return p.Age } func(p *Pet) SetName(name string) { p...阅读全文

博文 2020-05-19 05:33:44 筑梦攻城狮

Java/Python/Go/clojure【后端合集】总监/经理/架构师/专家/资深工程师/CDN

开发总监/架构师 岗位职责:1.负责全平台产品相关的统筹或部分核心开发工作,包括但不限于iOS、安卓、Web等产品的系统设计、代码实现、算法研究和运维自动化等2.负责主产品的开发流程优化,制定和优化相关的最佳工程实践,执行代码审核、设计审核,提高团队技术能力;3.设计和优化主产品和服务中台之间的架构设计关系,优化中前台之间的接口和开发流程;4.负责参与产品和设计评审,参与商业模式的优化,从整体考虑如何通过技术提高用户体验和商业收益;5.调研相关领域各类算法、系统、架构及其在平台上的应用;6.推进团队专利申请、社区技术交流、开源项目等。岗位要求:1.计算机相关专业国内外一流大学,本科及以上学历,硕士优先;2.6年以上工作经验,但有优秀的技术、管理能力者不限;3.扎实的基础数据结构和通用算法能力...阅读全文

博文 2019-05-07 13:35:09 IT互联网猎头Cathy

面向对象的设计过程

前言 我一直认为分享的目的不是炫技。 一是,自我学习的总结。 二是,降低他人的学习成本。 三是,别人对自己学习结果的审核。 同时,本次分享有下面四个要素: 观点 本次分享的观点是一个软件工程中的思维方法,不限于编程语言 探讨 我可能理解错的,或者大家没理解的,欢迎大家积极评论,尽可能多互动,目的增加理解 理解 真的希望大家能理解 运用 最重要的,如果你觉着有帮助,一定要去在实际业务中实战 背景 工作中,几乎大家经常抱怨别人写的代码: 没法改 耦合高 无法扩展 今天就来探讨如何克服上面的问题~ 场景 首先问个问题: 平常工作中来了一个业务需求,我们是如何开始写代码的? 我推测大多数人可能: 1、梳理业务 2、设计数据库、接口、缓存 3、评审 4、于是就开始了 怎么怎么样...如果怎么怎么样.....阅读全文

博文 2019-11-18 23:03:05 TIGERB

代码组件 | 我的代码没有else

嗯,我的代码没有else系列,一个设计模式业务真实使用的golang系列。 系列全集 点这 前言 本系列主要分享,如何在我们的真实业务场景中使用设计模式。 本系列文章主要采用如下结构: 什么是「XX设计模式」? 什么真实业务场景可以使用「XX设计模式」? 怎么用「XX设计模式」? 本文主要介绍「组合模式」如何在真实业务场景中使用。 什么是「组合模式」? 一个具有层级关系的对象由一系列拥有父子关系的对象通过树形结构组成。 组合模式的优势: 所见即所码:你所看见的代码结构就是业务真实的层级关系,比如Ui界面你真实看到的那样。 高度封装:单一职责。 可复用:不同业务场景,相同的组件可被重复使用。 什么真实业务场景可以用「组合模式」? 满足如下要求的所有场景: Get请求获取页面数据的所有接口 前端...阅读全文

博文 2020-04-08 20:34:23 TIGERB

当查询的数据来自多个数据源,有哪些好的分页策略?

概述 在业务系统开发中,尤其是后台管理系统,列表页展示的数据来自多个数据源,列表页需要支持分页,怎么解决? 问题 如上图,数据源可能来自不同 DB 数据库,可能来自不同 API 接口,也可能来自 DB 和 API 的组合。 我这也没有太好的解决方案,接到这样的需求,肯定首先和需求方沟通,这样分页是否合理。 无非就两种方案: 数据定期同步,首先将查询的数据汇总到一个地方,然后再进行查询分页。 内存中分页,首先将查询的数据存放到内存,然后再进行查询分页。 如果以某一数据源进行分页,其他字段去其他数据源获取,这样还好处理一些。 如果以多个数据源融合后再分页的话,就数据定期同步 或 内存中分页吧。 数据定期同步方案可以根据实际情况去设计同步频率,至于同步到 ES/MySQL/MongoDB 自己决定...阅读全文

博文 2020-03-16 13:37:08 新亮笔记

当查询的数据来自多个数据源,有哪些好的分页策略?

概述 在业务系统开发中,尤其是后台管理系统,列表页展示的数据来自多个数据源,列表页需要支持分页,怎么解决? 问题 如上图,数据源可能来自不同 DB 数据库,可能来自不同 API 接口,也可能来自 DB 和 API 的组合。 我这也没有太好的解决方案,接到这样的需求,肯定首先和需求方沟通,这样分页是否合理。 无非就两种方案: 数据定期同步,首先将查询的数据汇总到一个地方,然后再进行查询分页。 内存中分页,首先将查询的数据存放到内存,然后再进行查询分页。 如果以某一数据源进行分页,其他字段去其他数据源获取,这样还好处理一些。 如果以多个数据源融合后再分页的话,就数据定期同步 或 内存中分页吧。 数据定期同步方案可以根据实际情况去设计同步频率,至于同步到 ES/MySQL/MongoDB 自己决定...阅读全文

博文 2020-03-16 12:32:43 新亮

代码组件 | 我的代码没有else

嗯,我的代码没有else系列,一个设计模式业务真实使用的golang系列。 前言 本系列主要分享,如何在我们的真实业务场景中使用设计模式。 本系列文章主要采用如下结构: 什么是「XX设计模式」? 什么真实业务场景可以使用「XX设计模式」? 怎么用「XX设计模式」? 本文主要介绍「组合模式」如何在真实业务场景中使用。 什么是「组合模式」? 一个具有层级关系的对象由一系列拥有父子关系的对象通过树形结构组成。 组合模式的优势: 所见即所码:你所看见的代码结构就是业务真实的层级关系,比如Ui界面你真实看到的那样。 高度封装:单一职责。 可复用:不同业务场景,相同的组件可被重复使用。 什么真实业务场景可以用「组合模式」? 满足如下要求的所有场景: Get请求获取页面数据的所有接口 前端大行组件化的当今...阅读全文

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