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

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

Go 基础 3:error handling

官网: https://blog.golang.org/error-handling-and-go error对于常用类型,可以转换成某种interface去查里面具体错误。 对于repetive的error handling,可以做个wrap去handle统一的error,不过我个人觉得不是那么试用,很难有一个函数全部是一种类型的错误吧。不过这种是不是设计模式里的装饰者模式? 待读: https://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully https://mijailovic.net/2017/05/09/error-handling-patterns-in-go...阅读全文

博文 2019-02-08 15:34:41 听海吹牛逼的声音

【区块链Go语言实现】区块链基本原型

链客,专为开发者而生,有问必答!此文章来自[区块链技术社区](https://www.liankexing.com),未经允许拒绝转载。 0x00 介绍区块链(Blockchain)是21世纪最具革命性的技术之一,目前它仍处于逐渐成熟阶段,且其发展潜力尚未被完全意识到。从本质上讲,区块链只是一种记录的分布式数据库。但它之所以独特,是因为它并不是一个私有的数据库,而是一个公共数据库,也就是说,每个使用它的人都有一份完整或部分的数据副本。并且,只有在数据库的其他持有者同意的情况下,才可以向区块链中添加新的记录。此外,正是区块链使得加密货币和智能合约成为可能。在本系列文章中,我们将基于区块链构建一种简单的加密货币。0x01 区块首先,我们从“区块链”中的“区块”介绍开始。在区块链中,区块是存储有价...阅读全文

博文 2019-08-16 12:32:43 链客区块链技术问答社区

微服务架构下 Service Mesh 会是闪亮的明天吗?

7月7日,时速云企业级容器 PaaS 技术沙龙第 10 期在上海成功举办,时速云容器架构负责人魏巍为大家详细讲解了 Service Mesh 中代表性的实践方案、并以 Istio 为例详细讲解了 Service Mesh 中的技术关键点,包括 Istio 控制平面、Istio 数据平面等。以下内容根据魏巍分享整编,希望对大家了解 Service Mesh 有所帮助。 魏巍:大家下午好,刚才几位讲师讲了 K8S 的存储、PaaS 在企业的落地实践等,我们接下来要讲的是企业有了 PaaS 平台、并且在平台上部署了各种各样的服务之后,这些服务该如何治理、服务与服务之间的关系,以及该以何种方式去维护等问题,而最近两年兴起的 Service Mesh,能够更加便捷的管理这些服务。 Service Me...阅读全文

观察者模式实战

本文转自“雨夜随笔”公众号,欢迎关注。 在上一篇文章中,我们简单了讲了一下设计模式和观察者模式。那么这次让我们详细了解一下观察者模式和我们如何进行使用。 内容 还记得上一篇文章中,我们说过了解或者设计一个设计模式的时候,要按照下面四点进行分析: image.png 意图 在实际业务场景中,我们经常遇到这样的稳定,也就是在某个对象发生某种事件时,通知其他相关的对象。所以观察者模式就允许你定义一种订阅机制,使得订阅某种事件的对象能够在事件发生时得到通知。 动机 我们来分析一种常见的业务场景,也就是购物APP中经常遇到的货物上架提醒,如果为了实现这种需求,我们可以按照下面的方式来实现: 成本最低:我们知道在开发中成本最低的就是不做这个需求,当然这个是开玩笑,不过一般在开发初期,我们可能会分析需求的...阅读全文

博文 2020-05-03 12:32:44 soolaugust

Golang 设计模式之-装饰模式

Golang 设计模式之-装饰模式 最近在温习设计模式,虽然面向对象不是go的特长,但用go实现的设计模式,比java 和 c# 这种纯面向对象语言多了一份灵活,比python 这种虚假的面向对象要更直观, 性能上也更有优势. 装饰模式 装饰模式是一个非常常用的设计模式。常用到python内置了它。 装饰模式是为已有功能动态的添加更多功能的一种方式, 降低了主类(当然,go里没有类这种东西,可以用结构模拟)复杂度, 防止类的爆炸行为. 当新加的功能仅仅是满足某种特定条件下的需要时,装饰模式是个非常好的选择。 装饰模式把核心功能和装饰功能区分了,减少了核心功能可能造成的冗余和耦合,简化核心类的重复装饰逻辑. 装饰模式的装饰顺序很重要,它决定了最终类被装饰的效果 实例 Decorate 抽象 t...阅读全文

博文 2020-05-07 15:41:19 trump2018

2019年度总结

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

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

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/...) 挑选:浏...阅读全文

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