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

关于缓存命中率的几个关键问题!

一、缓存命中率的介绍命中:可以直接通过缓存获取到需要的数据。不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。由此可见,在高并发的互联网系统中,缓存的命中率是至关重要的指标。二、如何监控缓存的命中率在memcached中,运行state命令可以查看memcached服务的状态信息,其中cmd_get表示总的get次数,get_hits表示get的总命中次数,命中率 = get_hits/cmd_get。当然,我们也可以通过一些开源的第三方工具对整个memcached集群进行监控,显示会更直观。比较典型...阅读全文

博文 2018-10-22 17:24:23 Enjoyjava

ActiveMQ嵌入Tomcat

在一些项目中,单独开启一个ActiveMQ,对于项目实施来说有时略显繁琐。所以我们将ActiveMQ内嵌到Tomcat,Tomcat启动同时就顺带启动了ActiveMQ。由此我们需要掌握三个个重要的知识点ActiveMQ中的BrokerService自启动Servlet配置使用jconsole了解嵌入ActiveMQ运行状态一、开启BrokerService在pom.xml添加ActiveMQ依赖,本次代码实例采用5.7版本,记住只需要activemq-core就行。org.apache.activemqactivemq-core5.7.0阅读全文

博文 2018-09-17 16:28:00 Java1122zzz

这几年从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 筑梦攻城狮

架构师需要学习哪些技能?阿里P9架构师为你解答

不想当将军的兵不是好兵,就程序猿不想当架构师就不是好的程序员!Java架构师主要需要做哪些工作呢?1、负责设计和搭建软件系统架构(平台、数据库、接口和应用架构等),解决开发中各种系统架构问题。2、优化现有系统的性能,解决软件系统平台关键技术问题攻关、核心功能模块设计、核心代码开发。3、在项目需求不断细化的工程中校正整体的架构设计,以及详细模块拆分设计。4、营造技术学习氛围,带领团队不断完善开发开发方法及流程,提升开发效率与质量,加强技术标准及规范。5、带领团队攻克例如大数据量、高并发、高稳定性等带来的各种挑战及技术难关。6、责任心强,有团队合作精神,工作认真负责高效并具有一定抗压能力。7、参与讨论公司产品发展方向,完整的规划和把握产品研发架构。Java架构师要学习哪些知识点呢?希望以下的学习...阅读全文

博文 2019-03-12 16:40:16 a1127889067

从普通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架构师

如何成为一名资深Java架构师?

1架构师是什么? 要想往架构师的方向发展首先要知道架构师是什么? 架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。 一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。

阅读全文

博文 2018-07-02 00:34:41 编码前线

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太难

【Golang基础】 Android工程师学Golang(1)

Golang函数 注:是用的测试方法写的例子。 Golang所有都是传值,不是传引用 为什么会出现,函数内部的修改,会影响外部的变量的情况,例如切片背后对应的是一个数组,这个数据结构包含指针,在赋值的过程中结构被复制了,结构被改变所以外部也被改变了,例如:slice,map,channel. 函数可以有多个返回值:和Java不一样,Golang可以有多个返回值 package fn__test import ( "math/rand" "testing" "time" ) func returnMultiValues() (int, int) { // 加入随机,如果不加就会是一个固定的值 rand.Seed(time.Now().UnixNano()) return rand.Intn(1...阅读全文

博文 2019-06-16 00:32:40 不说话的唐僧

前端遇上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

关于一致性hash,这可能是全网最形象生动最容易理解的文档,想做架构师的你来了解一下

问题提出 一致性hash是什么?假设有4台缓存服务器N0,N1,N2,N3,现在需要存储数据OBJECT1,OBJECT2,OBJECT3,OBJECT4,OBJECT5,OBJECT5,OBJECT7,OBJECT8, 我们需要将这些数据缓存到这4台服务器上,相应的问题是 如何设计数据存放策略?即ObjectX 应该存放在哪台服务器上? 为了解决这个问题,我们有如下几个思路。 1. 余数hash方案 采用hash(Objectx)%4来确定服务器节点 假设 hash(OBJECT1)=2,由 2%4=2,可知,Object1则应该存放到节点N2上 假设 hash(OBJECT2)=3,由 3%4=3,可知,Object2则应该存放到节点N3上 假设 hash(OBJECT3)=1,由 1%...阅读全文

博文 2019-08-24 01:32:49 非正式解决方案

[10月12日][全国在线]让it更精简,让项目更敏捷-如何成功运用敏捷方法进行项目管理与实施

项目管理在中国10多年的发展历程中,越来越体现它的价值与作用,随着社会在不断进步,IT技术和管理的发展也逐渐从单纯的引入过渡到创新的阶段,更多的组织或团队会发现: 客户的需求在不停的变化,如何应对; 小型团队用项目管理的流程会力不从心; 上线时间越来越短,如何能快速了解市场推出的新产品; 团队文化构建难,庞大研发团队的协作管理问题; 交付客户满意度低; 技术快速发展,流程停滞不前版本迭代质量低; 针对上述问题,敏捷思想可以很好的加以应对,光环国际结合软件开发与互联网企业特点,通过分析当前企业所存在的普遍问题,详细阐述如何成功运用敏捷方法进行项目管理与实施,加强团队有效沟通,准确捕获客户需求,高质量进行产品交付。逐一阐述敏捷思维与原则、特征、过程与角...阅读全文

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

概述 在业务系统开发中,尤其是后台管理系统,列表页展示的数据来自多个数据源,列表页需要支持分页,怎么解决? 问题 如上图,数据源可能来自不同 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

Github架构师解读C/C++应用包管理的Why和How

一、背景本文整理自Johannes Nicolai在JFrog 2019用户大会上的讲演《DevOps for Non-Hipsters(aka C/C++ programmers)》。​Johannes Nicolai是Github的解决方案架构师,主要负责德语区的用户。他和很多制造业的用户(多数使用C/C++)交流,询问他们在DevOps或持续交付方面的挑战,通常会得到如下的描述:​在嵌入式C/C++领域,花费几十个小时完成一个完整的DevOps流水线并不少见。为某一个提交运行单独的构建和测试几乎是不可能的,通常每次构建都包含了几百个同事所有的提交。而构建时间长的主要原因在于交付包包含了大量的依赖包,而每次构建这些依赖包都需要从头开始重新构建。上述的描述并不仅限于德语区,Johannes...阅读全文

博文 2020-04-03 12:18:58 JFrogChina