Dubbo

面试官:没搞懂接口测试这些点,哪里来的自信投简历?

走远了吗. 提交于 2020-07-27 15:14:22
1,目前市面上流行的接口大多有哪几种协议的接口? 答:http,https,dubbo,rpc等即可。 2,接口的请求方式有哪几种? 答:get,post,put,delete,head,Trace,opions等,大多以get和post请求为主 3、get和post区别是什么? 答:POST和GET都是向服务器提交数据,并且都会从服务器获取数据。 区别: (1)传送方式:get通过地址栏传输,post通过报文传输,故而post更相对来说私密性一点 (2)传送长度:get参数有长度限制(受限于url长度),而post无限制 (3)get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留 (4)get方式大多用作查询接口,获取响应数据;而post方式更多做数据添加、修改或删除等操作 4,post请求的请求类型有哪几种? [if !supportLists]· [endif] application/json json字符串 [if !supportLists]· [endif] [if !supportLists]· [endif] application/x-www-from-urlencoded 表单传递 [if !supportLists]· [endif] [if !supportLists]· [endif] multipart/form-data

开源应用诊断利器 Arthas GitHub Star 突破两万

好久不见. 提交于 2020-07-27 14:38:45
一、Arthas Star突破2万啦 https://github.com/alibaba/arthas 随着微服务的流行,应用更加轻量和开发效率不断提升,但是带来的困境是线上问题排查越来越复杂困难。传统的Java排查问题,需要重启应用再进行调试,但是重启应用之后现场会丢失,问题难以复现。 因此自2018年9月,阿里巴巴开源了久经考验,深受开发者喜爱的应用诊断利器Arthas。在阿里巴巴内部Arthas每年诊断数百万次,服务10000+应用,年节约9000人日。 Arthas通过创新的字节码织入技术,可以在应用无需重启时,查看调用上下文,高效排查问题;结合火焰图,可以直接定位热点,发现性能瓶颈;通过redefine技术,实现在线热更新代码;同时支持黑屏化和白屏化诊断,可以连接诊断大规模的集群。 在2019年2月时,我们做了Arthas Star破万里的回顾: 新的开始 | Arthas GitHub Star 破万后的回顾和展望 时间飞逝,转眼间一年过去了,Arthas的Star数突破2万了~ 下面来回顾Arthas去年的一些工作。 二、Arthas 过去一年的工作 在过去的一年里, Arthas 发布了8个release版本,做了大量的改进,下面列出一些重点: 增加 mbean/heapdump/vmoption/logger/stop/perfcounter/echo/tee

一点一点实现一个RPC框架二 -- 学习java spi

♀尐吖头ヾ 提交于 2020-07-27 09:47:21
前言 深入dubbo源码前最好先了解下java spi(service provider interface)机制, 简单来说, spi可以帮我们加载指定文件中描述的接口实现类. 嗯...就这? 是不是太简单了, 虽然我是个菜瓜, 那我也知道Class.forName呀~ 那我们来研究下~ java spi demo 尽管千篇一律, 还是给出一个可运行demo // 首先你需要一个对外接口 public interface GreetOrBye { String say(String name); } // 以及两个实现类 public class Bye implements GreetOrBye { @Override public String say(String name) { return "bye " + name; } } public class Greet implements GreetOrBye { @Override public String say(String name) { return "hi " + name; } } //然后是执行类 public class Launcher { public static void say(String name) { ServiceLoader<GreetOrBye>

分享一份新鲜出炉的百度Java面试真题,看下你都会吗?

拈花ヽ惹草 提交于 2020-07-27 08:59:17
近两天拿到朋友的面试题,他就在不久前成功收到了 百度的offer 。 朋友已在IT行业从业好几年,非常擅长源码分析与数据结构方向上的内容 带领过团队开发电商、教育和一些大数据项目,在百度内部的简历评级为优等 。 所以他能进大厂我一点也不意外 。 他说 :如果能把这些面试题做到70%的程度,基本上进大厂就不算太大的问题了。 在此分享这份题目,可以看看你与大厂程序员是否只是在改bug水平上的差距? 百度高级Java研发工程师面试题 : 1.HashMap为什么不是线程安全的? 2.ConcurrentHashmap底层实现? 3.线程池(包含什么,core、max联系)原理? 5.Synchronized原理? 6.Volatile原理? 7.JMM(主内存、工作内存、happens-before)是什么? 8.有哪些无锁数据结构?无锁实现的原理? 9.设计模式(装饰器设计模式、代理模式、单例模式、工厂模式) 10.Dubbo设计思路、netty原理是什么? 11.说下一次RPC请求的过程 12.MySQL怎么创建合理索引、索引怎么优化? 13.B+tree怎么分裂、什么时候分裂、为什么是平衡的? 14.MySQL事务实现原理,ACID实现原理 15.MySQL怎么优化table scan? 16.算法:有3n+1个数字,其中3n个中是重复的,只有1个是不重复的,怎么找出来? 17

因为命名被diss无数次。简单聊聊编程最头疼的事情之一:命名

孤人 提交于 2020-07-27 05:15:14
编程过程中,有太多太多让我们头疼的事情了,比如命名、维护其他人的代码、写测试、与其他人沟通交流等等。就连世界级软件大师 Martin Fowler 大神都说过 CS 领域有两大最难的事情,一是 缓存失效 ,一是 程序命名 (@ https://martinfowler.com/bliki/TwoHardThings.html )。 今天 楼主 就单独拎出 “ 命名 ” 来聊聊,据说之前在 Quora 网站,由接近 5000 名程序员票选出来的最难的事情就是“命名”。 为什么需要重视命名? 好的命名即是注释,别人一看到你的命名就知道你的变量、方法或者类是做什么的! 好的命名对于其他人(包括你自己)理解你的代码有着很大的帮助! 简单举个例子说明一下命名的重要性。 《Clean Code》这本书明确指出: “好的代码本身就是注释,我们要尽量规范和美化自己的代码来减少不必要的注释。 若编程语言足够有表达力,就不需要注释,尽量通过代码来阐述。 举个例子: 去掉下面复杂的注释,只需要创建一个与注释所言同一事物的函数即可 // check to see if the employee is eligible for full benefits if ((employee.flags & HOURLY_FLAG) && (employee.age > 65 )) 应替换为 if (employee

从零入门 Serverless | 架构的演进

為{幸葍}努か 提交于 2020-07-26 03:31:50
作者 | 许晓斌 阿里云高级技术专家 本文整理自《Serverless 技术公开课》第 1 讲, 点击开始学习 。 关注 “ Serverless ” 公众号,回复 入门 ,即可获取 Serverless 系列文章 PPT。 传统单体应用架构 十多年前主流的应用架构都是单体应用,部署形式就是一台服务器加一个数据库,在这种架构下,运维人员会小心翼翼地维护这台服务器,以保证服务的可用性。 (单体架构) 随着业务的增长,这种最简单的单体应用架构很快就面临两个问题。首先,这里只有一台服务器,如果这台服务器出现故障,例如硬件损坏,那么整个服务就会不可用;其次,业务量变大之后,一台服务器的资源很快会无法承载所有流量。 解决这两个问题最直接的方法就是在流量入口加一个负载均衡器,使单体应用同时部署到多台服务器上,这样服务器的单点问题就解决了,与此同时,这个单体应用也具备了水平伸缩的能力。 (单体架构-水平伸缩) 微服务架构 1. 微服务架构演进出通用服务 随着业务的进一步增长,更多的研发人员加入到团队中,共同在单体应用上开发特性。由于单体应用内的代码没有明确的物理边界,大家很快就会遇到各种冲突,需要人工协调,以及大量的 conflict merge 操作,研发效率直线下降。 因此大家开始把单体应用拆分成一个个可以独立开发、独立测试、独立部署的微服务应用,服务和服务之间通过 API 通讯,如

互联网 BAT 大厂 Java高级工程师面试题:1000道题目让你做到面试无忧!

半世苍凉 提交于 2020-07-25 21:08:34
发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 内容涵盖: Java、 MyBatis. ZooKeeper. Dubbo、Elasticsearch. Memcached、Redis、MySQL、Spring、 Spring Boot. Spring Cloud、RabbitMQ、Kafka、Linux等技术栈 不多说了开始上题了 整理了太多的题了 总共整整1000道面试题,这可是费尽了我的心思,太多了 我就先截图一部分给你们,下面我们再来看看里面的内容: 以上这些你们看到的 不过只是1000道面试题中的沧海一粟而已 可以说这就是面试宝典 涨薪秘籍了! 那么如何领取这份面试宝典呢 只需要关注+转发小编我的这篇文章 然后私信我(面试宝典)即可领取哦! 来源: oschina 链接: https://my.oschina.net/u/4324861/blog/4363932

我找出了Dubbo源码的BUG,同事都看傻了

♀尐吖头ヾ 提交于 2020-07-25 09:01:57
背景 某天运营反馈,点了一次保存,但是后台出现了3条数据,我当时就想,不应该啊,这代码我几万年没动了,我当时就叫他先别操作了,保留一下现场,我去排查一下。 我看了下新增的代码,直接右键查看作者 没想到三歪做过改动,我就去问三歪,XX模块的新增代码你是不是动过? 他沉默了很久没说话,然后抓起桌子上用剩下来的纸擦了擦鬓角留下的汗水,咽了一下口水说,是的我改过,我把之前dubbo的xml配置方式改成了注解的方式。 怎么了?现在出BUG了? 你呀你,下次这种改动跟我说一下,我估计是dubbo源码的bug吧,不要慌,让我去看看什么问题。 正文 其实dubbo配置的方式有很多种,大家用的最多的就是xml配置的方式,如果不需要重试次数,我们会加上重试次数为0,因为他默认是有多次的。 <dubbo:reference id="testService" interface="heiidea.trade.service.sdk.interfice.TestService" retries="0"/> 1 或者使用注解的方式 @Reference(retries =0) 1 其实我已经大概知道是什么原因了,但是为了证实自己的猜想,于是开启了接下来的debug之旅~~~ 注:dubbo版本:2.6.2 首先是在采用@Reference注解条件下: 采用@Reference注解配置重试次数

如何基于 Dubbo 进行服务治理?

我怕爱的太早我们不能终老 提交于 2020-07-24 21:48:36
面试题 如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试? 面试官心理分析 服务治理,这个问题如果问你,其实就是看看你有没有 服务治理 的思想,因为这个是做过复杂微服务的人肯定会遇到的一个问题。 服务降级 ,这个是涉及到复杂分布式系统中必备的一个话题,因为分布式系统互相来回调用,任何一个系统故障了,你不降级,直接就全盘崩溃?那就太坑爹了吧。 失败重试 ,分布式系统中网络请求如此频繁,要是因为网络问题不小心失败了一次,是不是要重试? 超时重试 ,跟上面一样,如果不小心网络慢一点,超时了,如何重试? 面试题剖析 服务治理 1. 调用链路自动生成 一个大型的分布式系统,或者说是用现在流行的微服务架构来说吧, 分布式系统由大量的服务组成 。那么这些服务之间互相是如何调用的?调用链路是啥?说实话,几乎到后面没人搞的清楚了,因为服务实在太多了,可能几百个甚至几千个服务。 那就需要基于 dubbo 做的分布式系统中,对各个服务之间的调用自动记录下来,然后自动将 各个服务之间的依赖关系和调用链路生成出来 ,做成一张图,显示出来,大家才可以看到对吧。 2. 服务访问压力以及时长统计 需要自动统计 各个接口和服务之间的调用次数以及访问延时 ,而且要分成两个级别。 一个级别是接口粒度,就是每个服务的每个接口每天被调用多少次,TP50/TP90/TP99,三个档次的请求延时分别是多少;

阿里云发布新一代容器、Serverless等云原生产品,加速企业向现代IT架构演进

偶尔善良 提交于 2020-07-24 21:46:01
在6月9日2020阿里云线上峰会上,云原生应用平台产品总监赵林(丹臣)发表了《云原生2020新产品发布 传统应用架构往现代应用架构快速演进的基础设施》的主题演讲,详细介绍了阿里云全新发布的容器、中间件、Serverless等产品。随着数字经济的快速发展和扩张,越来越多的企业开始采用云原生计算的思想和技术,以主导企业的数字化转型架构。 新产品发布和解决方案升级,助力企业从传统IT架构向现代应用架构演进 云原生的技术和产品,可以帮助用户轻松地从原有的 IT 架构向现代应用架构演进。从底层应用托管平台来看,阿里云提供了容器服务ACK/ASK。在应用PaaS层,阿里云提供了SAE、EDAS、Web+三款产品。在上层,阿里云提供了函数FaaS服务,可以满足不同的业务需求。不仅如此,阿里云还提供了各种各样的中间件服务,包括业界最为完整丰富的消息队列服务,覆盖了所有常见的消息协议,如国内著名的开源消息中间件产品RocketMQ、业界流行的Kafka,AMQP/MQTT 消息队列都可以在阿里云上找到对应的商业化服务。在其它中间件领域,如微服务引擎MSE、应用配置管理ACM、云服务总线CSB,以及针对事务服务的GTS等,都可以帮助企业用户快速构建现代化的应用架构。 阿里云之所以提供如此丰富全面的云原生技术和产品,核心还是要满足客户多样化的需求。 除了应用托管平台以及常见的中间件之外