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

2019的到来Java程序员如何不被淘汰,互联网最新的技术了解足够?

程序员是一个高薪的行业,也是一个门槛比较高的职业,能进入这行是好多人的愿望,近几年来这行的人也是越来越多,每年都在持续增长,那么怎么才能保持持久的竞争力而不被淘汰了,除了一些精神品质上下功夫外,如耐心,勤奋,能吃苦之外,再加一些学习的技巧是十分有必要的。下面我就从以下几方面来说起。​不断的巩固基础首先技术是一个熟练工种,没有不断的实践,不断的巩固基本功很难在这方面出人头地的,做为一名程序员,要想优秀,比需有一定代码量的积累才是可以的,如果平时有项目,就积极的参与项目,增加自己的实战机会,项目不紧的时候,可以看一些书籍,敲一些各种形式的代码,争取自己的代码量远远高于其他人,这样在基本功上时间久了,你就会高于其他人,这是硬功夫,其他人就很难超越,要想超越,就要花同等时间去超越,这样你和其他人之间...阅读全文

博文 2019-01-14 18:58:14 javaJGJL

思考,2018 年总结,2019 年目标

欢迎光临我的个人博客:https://www.jelliclecat.cn/ 0. 2018 从2018年4月1日正式开始工作,到现在已经有14个月了,14个月前,自己还是一个java小白,那个时候,java语法还只会流程控制语句,面向对象思维一点没有,OOP更是谈不上,对于框架,到是听过大名鼎鼎的spring,但也只会使用@Autowired和@Service。实习第一个星期,leader让我做一个BookManager系统,使用的框架是Spring、paoding-rose(web)、paoding-jade(持久层),paoding框架是原人人网的框架,以后有机会详细介绍一下,个人认为paoding-jade算是一款非常简单易用的持久层框架。最开始虽然啥也不会,但是依葫芦画瓢的水平还是...阅读全文

博文 2019-06-02 00:34:40 16619721081

最近的面试经历,分享一下, 一些个人的愚见

准备近期好好沉淀一下了想问大家一些问题,就是如果你眼前有很多职位可以选,包括我mentor和我说,本科生出来能做的技术岗位的话有测试,前台,后台,算法工程师2333虽然现在呆的公司也蛮舒服,但是无奈自己太菜了,bug一星期还没定位到在哪里hhh,没错,我就是个大菜逼2333疯狂游戏一面1、 会cpp么 我说我只会stl2、 问你一些Java把,就fa = new son()那些的基础,随便答的 也不知道对错引申出来一个问题,Java多态怎么实现的,我讲了一下cpp的虚函数表3、 有一堆数,有序的,然后我修改了一个数,然后如何快速保证有序我说了 skip list, 后面我想的平衡树也可以,都是log的操作,后来觉得二分其实也可以后面问我,如何不需要查就可以搞呢? 我说我不会4、 一个请求量很...阅读全文

博文 2019-08-22 17:32:55 牛客网

设计模式-02-桥接模式

桥接模式概述桥接模式将抽象部分与它的实现部分分离,使他们都可以独立地变化。通俗地说,桥接就是在不同的东西之间搭一个桥,让它们能够连接起来,可以相互通讯和使用。在桥接模式中的桥接是在被分离的抽象部分和实现部分之间搭一个桥。为了达到让抽象部分和实现部分分离开,而且在抽象部分实现的时候,还是需要使用具体的实现,可以使用桥接模式来实现。这里的桥接,就是让抽象部分拥有实现部分的接口对象,就桥接上了。 实现使用发送信息的例子来实现桥接模式。信息的发送方式如:手机信息、普通信息、Email信息作为抽象部分,信息的分类如:普通信息、紧急信息、加急信息作为具体实现部分。 总结与分析桥接模式是用来解决有两个变化纬度的情况下,如何灵活地扩展功能的一个很好的方案。其实,桥接模式主要是把继承改成了使用对象组合,从而把...阅读全文

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

每周一个GoLang设计模式之策略模式

这篇文章遵循GoF书中的脉络,本篇是这个系列的第2篇:策略模式(Strategy),这周很开心可以有时间来更新这个系列,希望下周可以继续更新。欢迎大家访问[我的博客](http://zuozuohao.github.io/),代码可以在[@Zuozuohao](https://github.com/Zuozuohao/GolangGOFPatterns)下载。 GoF在第二章通过设计一个Lexi的文档编辑器来介绍设计模式的使用,在上一篇文章[每周一个GoLang设计模式之组合模式](http://zuozuohao.github.io/2016/06/25/Golang-Design-Patterns-Composite/),中我们简单的实现了组合模式的Lexi的文本编辑器。这一周我们...阅读全文

学习编程的25个“坑”,你踩到了吗?

学习编程的过程中可能会遇到“25”个“坑”,不仅初学者可能中招,专业人士有时也难以逃脱,我自己也毫不例外。0. 忽视了编程终究是以人为本的。是的,机器的确会执行你的代码,但编程是为人们解决问题的,将他们的需求转换为由其他人(或你自己线下)读取,维护和修改的代码。1. 未能花充足的时间练习编程。 根据工作或日程安排,你可能会花费大量时间在与编程相关的任务上,但实际上这些并非编程本身。2. 停留在你正在学习的某个技术的表面。 沾沾自喜于自己掌握了足够完成任务的基础知识,对技术的了解却只流于表面,未有触及核心内容。3. 在编程学习中挑挑拣拣,无法持之以恒。一开始学习Rails,半道儿你发现Phoenix也不错,哦,学点JavaScript吧,这样就能用Node.js 了......从TJ转到Go然...阅读全文

博文 2018-10-25 18:34:40 西安北大青鸟官微

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

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

博文 2016-09-04 08:00:03 qibin0506

go语言中使用反射函数代替switch语法

近期在公司实习,参与了公司的一个分布式的应用服务系统。系统采用Golang语言作为系统的开发语言,在开发过程中采用了Go语言的反射函数的特性来取代了以前常使用的switch语法。 switch-case是一种多种选择的语法,其本质与if-else方法差不多,都是通过判断条件来执行不同的方法。而Go提供了一种机制在运行时更新变量和检查它们的值,调用它们的方法,和它们支持的内在操作,但是在编译时并不知道这些变量的类型。这种机制被称为反射,反射也可以让我们将类型本身作为第一类的值类型处理。 Web应用路由问题 在我们编写Web应用过程中,常常会遇到一个路由需要对应一个方法,我们会选择使用switch的方法来进行路由的匹配,若是路由匹配成功,我们会调用一个方法,这种方法能够很简便的完成我们的工作,也...阅读全文

博文 2017-09-24 18:04:50 flytutu

非BAT的Java程序员,怎么做才能积累 BAT 的技术经验?

最近一段时间以来,经常有很多粉丝问我这样的问题:没有高并发、分布式、微服务的业务场景,怎么学习相关知识?怎么才能像大厂员工一样学习更多的技术知识?其实,这是一个比较难回答的问题,像BAT等大厂的员工,确实有很多得天独到的优势。比如像阿里内部,不仅有内部技术论坛,还有很多的公开课、讲座、分享等。很多团队之间都会经常交流。很多时候,我们可以互相学习,了解双十一是怎么玩的,春节红包是怎么发的,优酷是怎么做世界杯直播的等等。那么,非大厂内部员工,有没有一种高效的方式来做到呢?我觉得最好的方法,就是直接向 BAT 等一线大厂取经。毕竟,他们在前沿技术领域的持续研究和大规模投入,不是一般人能比的。你可以不在 BAT,但你不能没有大厂程序员的眼界。这些说来容易,但绝大多数程序员很难有机会近距离接触这些大厂...阅读全文

博文 2019-01-25 23:43:33 javajiaoliu

学习计划!!!

个人近期(3个月)学习计划:1.以PHP为基础复习编程各方面知识 1.1 设计模式 1.2 php框架学习(以laravel和ci为准)*(PS:必须学会!!!) 1.3 相关算法,数据结构研究 (php为准)2.docker学习,相关环境搭建,运行3.Golang学习 3.1 golang相关基础学习 3.2 框架学习(以beego为准)4.openresty(可选) 4.1lua编写针对网络层的脚本任务5.mysql相关知识复...阅读全文

博文 2019-01-22 14:34:50 AnneSan

《Go 同步和并发设计模式》培训会后整理

今天参加《Go 同步和并发设计模式》主题培训,虽然早上下雨,但是大家一般还是都在9点左右赶到现场。本次分享时间很充沛,晁老师讲的也很细致,4点就结束了高于预期啊呵呵,全程听下讲座来收获还是很多的,下面整理一下今天感觉重点的内容。golang中使用channel的使用率占30%,但错误率缺高于50%错误原因大多是使用channel不适当造成的。读写锁RWMutex、Mutex不支持方法重入,想要实现重入可以使用黑科技goid 或者用 token使用Cond方法进行同步操作容易出错,推荐使用简单易用的sync.WaitGroup推荐使用go build race 进行锁竞争性检测,go vet 静态代码检测是否存锁值拷贝(因为拷贝锁值也会拷贝锁的状态信息,所以锁尽量使用指针来创建)。sync.P...阅读全文

博文 2019-05-26 23:06:44 牛儿吃草仗剑天涯

维基链WICC | 项目进展周报第53期(12.2~12.8)

技术 & 产品周报 公链建设-稳定币模块● CDP移动端产品开发完成100%;第一轮测试完成100%,bug回归测试完成90%。● DEX移动端开发设计完成10%。公链建设-基础模块● PBTF共识梳理 100%。● 基于wasm系统合约实现交易所注册功能 50%。应用建设● 维基时代2.5测试与上线 100%。● 移动端CDP测试并达到上线标准 100%。● BaaS 备份数据库问题处理 100%。● 官网2.0测试与上线 100%。● 官网后台管理系统测试与上线 100%。● 官网新闻页SEO部署以及上线 100%。● 钱包库规范文档修改 100%。● 编写DEX 移动端测试用例 80%。● kotlin钱包库改写 80%。● 批量发币后台开发 60%。● WICC/ETH/BTC go...阅读全文

博文 2019-12-11 06:32:42 WaykiChain维基链

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

关于本系列这个系列首先是关于Go语言实践的。在项目中实际使用Go语言也有段时间了,一个体会就是不论是官方文档、图书还是网络资料,关于Go语言惯用法(idiom)的介绍都比较少,基本只能靠看标准库源代码自己琢磨,所以我特别想在这方面有一些收集和总结。然后这个系列也是关于设计模式的。虽然Go语言不是一门面向对象编程语言,但是很多面向对象设计模式所要解决的问题是在程序设计中客观存在的。不管用什么语言,总是要面对和解决这些问题的,只是解决的思路和途径会有所不同。所以我想就以经典的设计模式作为切入点来展开这个系列,毕竟大家对设计模式都很熟悉了,可以避免无中生有想出一些蹩脚的应用场景。本系列的具体主题会比较灵活,计划主要包括这些方面的话题:Go语言惯用法。设计模式的实现。特别是引入了闭包,协程,Duck...阅读全文

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

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

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

golang年度使用总结,简洁不简单

时间过得好快,比较正式的使用go语言,已经接近300天了。这期间,go从1.5发展到了1.7,自己因为兴趣+责任,来到了新的团队,再次从事曾经非常熟悉的开发工作,充实! 竟然在玩scala之后,用了go语言 最初了解go语言,还是13年原单位一个项目。在不涉及到数据库操作的情况下,技术团队用.net竟然无法支持500/s的tcp峰值请求。本欲捡起Java,结果无意中知道了go。发现,用go的select非常非常简单。但因为其编程思想和传统OO差别很大,极不习惯,就没有跟进。 再次接触就是2015年,这期间正痴迷Scala,加入了一些scala的群。喜欢scala比较简单: 1. 语言精炼,代码优雅 scala的模式识别、类型推断实在是太舒服了,利用lambda(这个java8也有,但scal...阅读全文

博文 2016-10-07 11:00:03 qq_26981997

作为一名Java毕业生,你准备好2019年的实习了吗?

对于实习生而言,其实很多公司要求都不是很高,毕竟对你的要求要对的起给你的工资水平,很多公司肯定都知道你本身的大体水平,不会期望太高,只是让你边学习边工作,如果你足够聪明伶俐,足够好学,可能就多培养你一些。 不过不同水平的公司,肯定是对你的培养程度不同的,相应的对你实习的要求肯定是不同的。不要认为对你要求越高,得到的实习工资就会高,不是的,像腾讯阿里等公司对于实习生技术要求很高,但工资就在两三千左右,但以后的发展却是远远大于这个价值的。 一、BAT企业对实习生的要求(以阿里为代表): Java基础非常重要,当然也要深入理解原理,什么JVM,JMM,Classloader,还有一些常见类的源码,自己可以试着分析一遍,现在让你说出LinkedList的内部实现你能不能说出来,HashMap不用多说...阅读全文

博文 2019-02-13 19:34:44 Java搬砖师

【名师课堂】阿里免费分享Java高级开发

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

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

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

博文 2019-03-21 00:34:40 下西楼

重磅!会前一天培训讲师揭晓:Dave&William

去年的 Gopher China 大会上首次引入了会前一天培训模式,据广大Gopher反馈非常不错,一些没有去现场的 Gopher 都表示非常的遗憾。去年的会前一天培训让我们的会前培训讲师感受到 Gopher 前所未有的热情,因此,在今年的 Gopher 大会上,我们将延续会前一天培训模式。 重磅消息:国际知名讲师 William Kennedy 和 Dave Cheney 将莅临 Gopher China 2019大会会前一天培训。会前一天的Go 语言培训,不仅能让各位 Gopher 近距离接触到自己心目中的 Go 语言大神,还能跟着大神一起强识博闻,get 到更多的 Go 语言实践。 讲师介绍 下面我们来给大家介绍一下我们这两位会前培训讲师,William Kennedy 和 Dave ...阅读全文

博文 2019-02-15 17:40:40 Susan

成为一名Java架构师的必修课

一.热门框架源码学习设计模式篇Spring5源码解读篇Mybatis篇SpringBoot2篇​二. 微服务架构架构设计篇BAT互联网架构这些年的演进分析国内外常见分布式系统架构状况介绍微服务架构指南:领域驱动设计DDD模型SpringCloud1-2实战篇Config分布式配置中心Eureka注册与发现机制Ribbon客户端负载均衡Hystrix服务熔断组件Feign声明式服务调用Zuul网关服务过滤器详解项目实战:SpringCloud微服务架构​三.高并发和分布式技术高并发,高可用,海量数据,没有分布式的架构知识肯定是玩不转的,要了解分布式中的,分布式架构原理,分布式架构策略,分布式中间件,分布式架构实战等等内容​四. 性能优化JVM优化篇WEB程序调优篇SQL优化篇​知己知彼、百战不...阅读全文

博文 2019-03-18 15:37:14 a1127889067

Golang分代GC的策略

序 上一篇文章中讲解了Go分代GC的实现思路,还有一个问题没有讲解,Go中分代GC(Garbage Collection)的策略,如何穿插使用Minor GC和Major GC ? 为何要穿插使用? file 图片仅用作说明,有些地方不是很严谨,也与Go的GC方式不完全相同。 因为每轮GC都会有新的存活对象,存活下来的对象即被认为是老年代对象,这些对象在执行Minor GC期间是不会被清扫的,这也就会导致使用的堆内存会越来越大。经过几轮GC之后有些老年代对象可能已经不可达,可以被回收了,这时就要进行Major GC来进行完整的清扫,不论老年代对象和新生代对象,只要不再存活,就会被清扫回收掉,达到释放内存的目的。 上一篇文章也有说到,Go将分代GC算法与标记清扫算法相结合,实现了一个不移动的分...阅读全文

博文 2019-05-01 21:34:41 Leonard_Wang

设计模式-06-组合模式

组合模式 概述 树形结构在项目中很经常会碰到,当树形结构变得越来越大之后会难以管理。组合模式允许你将对象组合成树形结构来表现“整体/部分”的层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。树里面包含了组合以及个别的对象。 实现 本例中,用组合模式来实现导航栏。可以有多级导航栏和二级导航栏。 总结与分析 使用组合模式,可以将相同的操作应用在组合和个别的对象上,换句话说,在大多数情况下,我们可以忽略对象组合和个别对象之间的差别。 代码实现: 组合模式(php/go...阅读全文

博文 2019-04-11 10:34:43 疯狂的卡卡

编程范式与语言

这篇文章是应“编程新思路”COP小组之邀,对编程范式做一个专题分享。主要是自己在读书、学习、工作上的一些心得总结,能力有限,希望能抛砖引玉,一同探讨。 为什么要了解编程范式和语言到目前为止,世界上约有2500种程序设计语言,其中一部分的族谱关系如下。 [图片上传中。。。(2)]语言从世界观上思考和影响软件设计,不同范式看待设计的角度也迥然不同,比如命令范式语言以状态(变量)抽象现实世界,对象范式语言以对象对象现实世界,函数范式语言以计算(函数)抽象现实时间。对现实问题的不同观察视角,从根本上影响软件开发者的思考方式和对软件设计的认识。编程语言的产生和流行都有其时代背景,比如,在早期机器语言开发的低效率之下,需要更高效率的程序语言,结构化设计思想应运而生,这一阶段命令范式语言大放异彩,以C语言...阅读全文

博文 2017-06-05 07:08:04 Albert陈晓宇

记录一次go视频面试

### 简单记录一次go面试过程 *** 第一次面试go,完全不懂面试套路,被虐的体无完肤,面试完时没想到,后来复盘发现但其实我会.把面试问到的问题记下来供大家参考. *** ##### **1. 自我介绍** 回答:略. *** ##### **2. 项目中你觉得你做的不错的地方** 回答:略. *** ##### **3. 项目中闭包的使用** 当时完全没想到,后来翻看之前的的项目,才看见使用gin写的中间件到处都是. *** ##### **4.内置map是否并发安全,怎么解决** 回答:不是并发安全的,可以使用sync包里的map,或者加锁. *** ##### **5.想要map并发安全使用互斥锁效率低怎么办** 这个我真的不会了. *** ##### **6.redis中缓存雪崩...阅读全文

博文 2020-05-14 16:02:40 MrWusenshan

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

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

博文 2016-08-10 21:00:04 qibin0506

给鸭子加上火箭动力——策略模式

策略模式 问题引入 当我们有一堆鸭子,各个鸭子都有相同的游泳(swim),自我描述(display)方法,因为它们都会游泳和自我描述;但是不同的鸭子又有自己特有的飞行(fly),叫声(quack),这时如何使用设计模式来解决这样的问题呢? 首先会想到的方法是,有一个鸭子超类,swim和diplay作为公有的方法,不同鸭子的子类去覆盖实现各自的fly和quack方法,貌似就可以解决这个问题了 不过,每当新的鸭子类型出现,就需要重新去实现fly和quack方法;甚至如果多个鸭子类型拥有相同的fly或quack方法,代码就不能很好地复用了。 在这里,鸭子的行为在子类里不断地改变,并且让所有子类都拥有这些行为是不恰当的。继承并不能很好地解决问题 设计原则 设计模式中的一个设计原则是:找出应用中可能需...阅读全文

go语言文件汇总

归并排序及go语言实现 堆排序算法及go语言实现 Go语言基础学习(一)变量 【Leetcode】:Counting Bits问题 in Go语言 基于go语言的心跳响应 【Leetcode】:Single Number III问题 in Go语言 Go语言学习一 :基础语句 关于Go语言,自己定义结构体标签的一个妙用. Go语言内存模型 Go语言内存模型 目录: 名词定义 背景介绍 Happens Before 同步方法 Uber是如何基于Go语言构建高QPS服务的? 基于GO语言最简单的HTTP服务器 Go语言分析 go语言注释 go语言赋值 go语言学习---错误 go语言学习记录7 Go语言使用Beego的ORM插入Mysql后,时区不一致的解决方案 改变未来IT世界的十种编程语言:...阅读全文

博文 2016-04-19 21:00:02 watsondai1234

谈谈面向对象编程

何为面向对象编程 面向对象编程简介 面向对象编程(Object-oriented Programming,缩写:OOP)是软件工程中一种具有对象概念的编程范式(Programming Paradigm),同时也是一种程序开发的抽象方针,与之对应的编程范式还有:函数式编程(Functional Programming)、过程式编程(Procedural Programming)、响应式编程(Reactive Programming)等。 面向对象编程特点 一切皆为对象 在面向对象编程世界里,一切皆为对象,对象是程序的基本单元,对象把程序与数据封装起来提供对外访问的能力,提高软件的重用性,灵活性和扩展性。例如,Java中的java.lang.Object对象,可以表示Java中的一切对象(注意区...阅读全文

博文 2018-09-15 01:34:41 SevenLin1993

抽象工厂模式

一、模式的定义与特点 抽象工厂(AbstractFactory)模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无需指定所要产品的具体类就能得到同族的不同等级的产品的模式结构 二、模式的结构与实现 1、模式的结构 抽象工厂(Abstract Factory) 提供了创建产品的接口,它包含多个创建产品的方法newProduct(),可以创建多个不同等级的产品 具体工厂(Concrete Factory) 实现抽象工厂中的多个抽象方法,完成具体产品的创建 抽象产品(Product) 定了产品的规范,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品 具体产品(Concrete Product) 实现了抽象产品角色多定义的接口,由具体工厂来创建,它同具体工厂之间是多...阅读全文

博文 2019-05-15 23:34:53 简书帅气的昵称已被使用

编程书籍

Java 《Java核心技术(Core Java)》 《Java编程思想》 《Effective Java》 《深入理解 Java 虚拟机》 《实战Java高并发程序设计》 《Java并发编程实战》 《阿里巴巴Java开发手册》 《Java 并发编程之美》 《Java 并发编程艺术》 《实战Java高并发程序设计》 《实战JAVA虚拟机》 数据结构和算法 《数据结构与算法分析 Java语言描述》 《算法 第4版》 《C语言数据结构和算法》 《大话数据结构》、《算法》、《剑指offer》《LeetCode刷题》 计算机网络(TCP/IP协议) 《TCP/IP详解 卷1:协议》 《TCP/IP详解》 《计算机网络:自顶向下方法》 《图解TCP/IP》《图解HTTP》 数据库/SQL 《MySQL...阅读全文

博文 2020-05-25 03:32:49 雪上霜

go中设计模式之创建型模式

设计模式总共24种, 本篇教你学会在go语言中使用创建型模式 创建型: 单例模式 简单工厂模式 工厂方法模式 抽象工厂模式 建造者模式 原型模式 结构型: 代理模式 适配器模式 装饰器模式 桥接模式 组合模式 享元模式 外观模式 行为型: 观察者模式 模板方法模式 命令模式 状态模式 职责链模式 解释器模式 中介者模式 访问者模式 策略模式 备忘录模式 迭代器模式 单例模式 1. 定义: 单例是一个软件设计标准。该标准保证只存在一个类的实例,同时保持对其对象的全局访问点 2. 代码示例: // Singleton 单例结构 type Singleton struct{} var ( // 定义单例对象和sync.Once变量组声明 singleton *Singleton once sync...阅读全文

博文 2019-06-11 19:03:09 wx5cf612fe3a728

Java核心知识详解:JVM+微服务+分布式+设计模式+数据结构与算法

JVM (1) 基本概念: JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接 的交互。 ![image.png](https://static.studygolang.com/200427/4ffc71a4aed75e8f357539bd916b0967.png) (2) 运行过程: 我们都知道 Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件, 而字节码文件又通过 Java 虚拟机中的解释器,编译成特定机器上的机器码 。 也就是如下: ① Java 源文件—->编译器—->字节码文件 ② 字节码文件—->JVM—->机器码 每一种...阅读全文

博文 2020-04-27 16:35:48 java998

设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。

使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。​设计模式的类型共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)- 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)对象池模式 *(P...阅读全文

博文 2019-07-26 16:04:34 wyygxly

工厂方法模式

一、模式的定义与特点 工厂方法(FactoryMethod)模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子类工厂类中 工厂方法模式的主要优点 调用发只需要知道具体工厂的名称,无需知道产品的具体创建过程 增加新的产品时只需要添加具体产品类和对应的具体工厂类,无需对原工厂进行任何修改 二、模式的结构和实现 工厂方法模式由抽象工厂、具体工厂、抽象产品和具体产品等4个要素构成 模式的实现 package FactoryMethod; public class AbstractFactoryTest { public static void main(String[] args) { try { Product a; AbstractFactory af; af=(A...阅读全文

博文 2019-05-14 00:34:52 简书帅气的昵称已被使用

金三银四背后,一个JAVA程序员的面试心得

回顾一下自己这段时间的经历,去年十二月份的时候,公司通知了裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷。后续的面试过程我做了一些准备,基本都能走到hr面,后面我也顺利地拿到了offer,我给大家分享下我的求职体会,希望能给大家一些参考。​下面说一下自己面试过程遇到的一些具体题目和面试心得。阿里面试题​多个线程同时读写,读线程的数量远远大于写线程,你认为应该如何解决并发的问题?你会选择加什么样的锁?JAVA的AQS是否了解,它是干嘛的?除了synchronized关键字之外,你是怎么来保障线程安全的?Tomcat本身的参数你一般会怎么调整?你有没有用过Spring的AOP? 是用来干嘛的? 大概会怎么使用?如果一个接口有2个不同的实现, 那么怎么来Auto...阅读全文

博文 2019-03-26 12:31:43 a1127889067

设计模式之策略模式

策略模式 一个父类,有多个子类(出现了继承),需要添加一个是共有行为方法,但是并不是每个子类的实现都是同样的,且 有一部分是同样的。这种情况下如果使用继承的方式,有如下两种方法 方法的实现放在父类中,那么对于有些子类(与父类的实现不一致),就需要 override 父类方法。 这种方法的缺点是,有的子类需要 override 父类方法,而且有哪些子类漏掉了,编译无法发现,会出问题,不符合面向对象思想。 抽象方法放在父类中,让各个子类去实现。 编译器可以发现错误,不会存在漏掉的场景,但是每个子类都需要实现一遍此方法,代码没有复用,也不符合面向对象思想。 这种场景就应该采用策略模式,将此方法定义为接口,父类中使用此接口做为成员变量(组合),通过这个成员变量执行具体动作,子类实现的时候只需要根据自...阅读全文

博文 2020-04-07 00:32:42 上海大坤哥

Golang生成器模式

builder.go // builder package builder type VehicleProduct struct { Wheels int Seats int Structure string } type BuildProcess interface { SetWheels() BuildProcess SetSeats() BuildProcess SetStructure() BuildProcess GetVehicle() VehicleProduct } //MenufacturingDirector Begin type ManufacturingDiretcor struct { builder BuildProcess } func (f *Manufact...阅读全文

博文 2019-06-19 19:02:41 FredricZhu

设计模式-07-装饰者模式

装饰者模式 概述 当对象需要添加一些功能,比如在表单的组件添加验证功能,为咖啡添加配料,为窗口添加滚动条等等.此时如果使用继承的话,会产生很多子类,不好管理,而且,在项目越来越大的时候会出现类爆炸.使用装饰者模式,使用组合的形式构造对象,比使用继承更加灵活简单,也更加容易管理. 实现 此处实现为咖啡添加配料.有咖啡材料,现调制摩卡咖啡等.使用Beverage抽象类,咖啡和配料分别继承Beverage类,并实现里面的抽象方法Cost和GetDecription.配料的构造方法传入咖啡类,通过在配料的构造函数里组合配料与咖啡原料实现装饰者模式.每个配料(装饰者)都有(包装)一个组件,在装饰者里保存一个原料的引用就能实现咖啡被配料包(装饰)起来. 总结与分析 装饰者模式采用组合的构建方式,大大减少...阅读全文

博文 2019-04-11 10:34:44 疯狂的卡卡

大话设计模式 -- Golang实现

DesignPattern Use GO language to achieve 23 design patterns 该项目是拜读《大话设计模式》后,学习Golang语言实现的,有很多不足之处,有待完善 有些模式是根据UML图编写的基本框架,有些是基于特定的环境下编写的实例 创建型模式 Abstract Factory抽象工厂模式:提供一个创建一系列相关或者相互依赖对象的接口,而无需指定他们具体的类 Builder建造者模式:将一个复杂对象的构建与它表示分离,使得同样的构建过程可以创建不同的表示 Factory Method工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类 Prototype 原型模式:用原型实例指定创建对象的种类,并...阅读全文

博文 2019-03-27 21:35:24 Golang语言社区

区块链矿池的分配模式

### 作者介绍 JouyPub 技术经理 某互联网公司 ### 产生背景   当下各种以挖矿来获得收益的币种,随着时间的推移,挖矿的难度也越来越大,如果仍然靠单机去挖矿,几乎已经不可能了,所以就有矿池。例如按照当前的算力(20EH/s),一个20TH/s的矿机,挖到一个区块的时间为19年,也就是说如果单机挖矿需要19年才能获得奖励,这其中还不包括机器损耗、难度增大等因素,所以只有大家加入到一个矿池,共享自己的算力,爆块后,根据不同的分配模式,奖励再分配给个人。这种挖矿模式可以让个人的收益更加稳定,对于矿池而言,也会收取一些交易手续费。 顺便我们来算下现在挖矿多少天能回本。以蚂蚁矿机为例,每台的算力大概为20TH/s,功率1700W,成本取5000元,全网算力取20EH/s,当前爆块奖励为1...阅读全文

博文 2018-09-22 00:19:26 chongdongshequ

设计模式-04-职责链模式

职责链模式概述职责链模式是使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 实现使用数据过滤类来实现职责链模式。用户传递数据给FilterChain类,但是数据具体会被哪个过滤器处理客户并不知道,FilterChain最终会返回被过滤后的数据给用户。 总结与分析职责链模式让请求者和接收者解耦,从而可以动态地切换和组合接收者 代码实现:职责链模式(php/go...阅读全文

博文 2019-04-11 09:34:40 疯狂的卡卡

Spring MVC 浅谈

MVC这个词儿,最早的定义应该是作为一种软件架构设计模式出现在软工里面的,即使用model、view、controller 来设计及定义web软件的。 Spring MVC 是指Java 当前阶段最大的开源项目Spring 对于MVC 做出了具体的实现,叫做Spring MVC,作为Spring 的一个子集存在。顺道提一下Spring,现阶段的Spring 已经不再是当年那个Ioc、AOP、MVC的简单的“小”web框架了。看一下Spring 官网的一个图: 又差不多25个应用。覆盖的应用面已经达到了Java 服务器端开发的方方面面,几乎已经是Java 服务器端开发的规范。 image.png 回到MVC,MVC上文说到了不是Java 所特有的,它是一种软件架构的设计模式。 主要通过 1、拦...阅读全文

博文 2019-10-03 19:32:44 aside section ._1OhGeD

使用 delve 调试 golang 程序

安装 delve 官方的文档已经很全了,参考这里(github)安装。Mac OSX 比较麻烦,需要搞定证书。 断点和变量打印 delve 装好之后就可以直接在命令行使用 dlv 命令了。 查看可用的命令 dlv -h 看帮助信息可知:支持用 dlv attach 的方式调试正在运行的进程,支持 dlv connect 链接到网络端口调试。这里先用最简单的 dlv debug 调试。 dlv debug main.go 然后会进入调试模式,此时 help 可以看到支持的命令。 (dlv) b main.go:16 #在 main.go 的第 16 行设置断点。 (dlv) bp #查看当前所有断点 (dlv) c #运行到下一个断点或者程序结尾 (dlv) p a #打印变量 a 的值 (d...阅读全文

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

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

博文 2020-03-31 12:34:21 TIGERB

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

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

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

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

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

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

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

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

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

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

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