okhttp

深入理解web协议(二):DNS、WebSocket

你说的曾经没有我的故事 提交于 2020-10-01 11:30:49
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/AkbAN4UZLDf841g1ZLFPBQ 作者:Wu Yue 本文系统性的讲述了 DNS 协议与 WebSocket 协议的重要细节。 一、DNS 1、Linux dig命令 我们首先通过 Linux 下的dig命令来了解一下 DNS 是怎么做域名解析的。我们首先输入命令: dig www.baidu.com 看下标注的红框,从左到右依次代表: 域名的名称 也就是服务器名称 网络类型,DNS协议在设计的时候考虑到了其他网络类型,但是目前位置这个值还是写死的IN 你就理解成是互联网就可以了。这个值一般不变 标识域名对应何种类型的地址,A 就代表ip的地址。 这里可能有人会问了,这个域名的后面为啥还有个“.”?我们输入的明明是 www.baidu.com 不是 www.baidu.com. 啊 。 这里要提一下: 末尾的 . 代表的就是 根域名 ,每个域名都有根域名,所以通常我们会 省略它 。 根域名的下一级叫 顶级域名 ,比如我们熟知的.com与.net。 再下一级就是 次级域名 了,比如例子中的.baidu。这个次级域名只要你有钱是可以随便注册的。 最后这个 www ,这个代表 三级域名 。一般是用户在自己的域里面为服务器分配的名称。用户可以随便分他。

【Android】学习路线与建议

牧云@^-^@ 提交于 2020-09-30 11:53:05
简介:大四学生党一枚!主攻Android开发,转游戏客户端开发中 语录 : 取乎其上,得乎其中,取乎其中,得乎其下,以顶级态度写好一篇的博客。 最近有很多学弟学妹私信我,咨询 Android 学习路线的问题,结合今年秋招Android岗的面试经验,做个总结,仅代表个人看法。 Android 一.企业要求 1.1 任职要求 1.2 推荐书籍 1.3 细分Android 二.技术深度 三.建议 一.企业要求 1.1 任职要求 下面是我在招聘网站上发现的几个 Android 工程师的任职要求 腾讯社招 1、具备Android应用层调试分析能力,快速定位解决anr、crash等问题; 2、对Android开发相关的事件处理、内存处理、多线程编程、网络通讯及性能优化有深入理解; 3、熟悉Android应用框架和Android GUI库。 4、有过Android系统应用软件的开发。 5、有良好的源码阅读能力和编码习惯 网易社招 1、计算机及相关专业本科以上学历,2年以上Android相关开发经验 2、熟悉Android平台的开发技术,如UI,网络,性能和内存优化等 3、了解各类常用开源框架实现原理,并能灵活运用; 4、扎实的计算机专业基础,熟悉常用的数据结构、算法、设计模式 5、熟悉网络编程,熟练掌握tcp/udp等协议相关知识 6、具备良好的学习能力,自主分析和解决问题能力

爱奇艺号基于Prometheus的微服务应用监控实践

ε祈祈猫儿з 提交于 2020-09-30 10:46:47
K8s已经成为一线大厂分布式平台的标配技术。你是不是还在惆怅怎么掌握它?来这里,大型互联网公司一线工程师亲授,不来虚的,直接上手实战,3天时间带你搭建K8s平台,快速学会K8s,点击下方图片可了解培训详情,点击下方图片了解详情。 前言 微服务架构是目前各大互联网公司普遍采用的软件架构方式。在微服务架构中,系统被拆分为多个小的、相互独立的服务,这些服务运行在自己的进程中,可以独立的开发和部署。在业务快速变化时,微服务单一职责、自治的特点,使系统的边界更加清晰,提升了系统的可维护性;同时,简化了系统部署的复杂度,可以针对某个微服务单独升级和发布;在业务增长时,也可以方便的进行独立扩展。 微服务架构虽然带来了很多好处,但也带来了新的问题。在以往的单体应用中,排查问题往往通过查看日志定位错误信息和异常堆栈;但是在微服务架构中服务繁多,出现问题时的问题定位变得非常困难。另外,微服务往往通过组合已有的服务来创建新服务,一个服务的故障很可能会产生雪崩效应,导致整个系统的不可用。因此,如何监控微服务的运行状况、当出现异常时能快速给出报警,这给开发人员带来很大挑战。 本文将介绍我们基于Prometheus搭建微服务监控系统的一些实践经验,及爱奇艺号在微服务监控方面的一些探索和实践,从爱奇艺号的业务特点出发,结合现有的开发运维技术栈确定监控的对象和指标,并有针对性地自研了一些关键组件和服务

分布式事务解决方案常见误区与实用建议

ぐ巨炮叔叔 提交于 2020-09-30 06:41:34
前言 ​ 最近,工作中要为现在的老系统做拆分和升级,刚好遇到了分布式事务、幂等控制、异步消息乱序和补偿方案等问题,刚好基于实践结合个人的看法记录一下一些方案和思路。 分布式事务 首先,做系统拆分的时候几乎都会遇到分布式事务的问题,一个仿真的案例如下: 项目初期,由于用户体量不大,订单模块和钱包模块共库共应用(大war包时代),模块调用可以简化为本地事务操作,这样做只要不是程序本身的BUG,基本可以避免数据不一致。 后面因为用户体量越发增大,基于容错、性能、功能共享等考虑,把原来的应用拆分为订单微服务和钱包微服务,两个服务之间通过非本地事务操(这里可以是HTTP或者消息队列等)作进行数据同步,这个时候就很有可能由于异常场景出现数据不一致的情况。 事务中直接RPC调用达到强一致性 以上面的订单微服务请求钱包微服务进行扣款并更新订单状态为扣款这个调用过程为例,假设采用HTTP同步调用,项目如果由经验不足的开发者开发这个逻辑,可能会出现下面的伪代码: [订单微服务请求钱包微服务进行扣款并更新订单状态] 处理订单微服务请求钱包微服务进行扣款并更新订单状态方法(){ [开启事务] 1、查询订单 2、HTTP调用钱包微服务扣款 3、更新订单状态为扣款成功 [提交事务] } 这是一个从肉眼上看起来没有什么问题的解决方法,HTTP调用直接嵌入到事务代码块内部,猜想最初开发者的想法是

深入学习性能优化--面试使用

非 Y 不嫁゛ 提交于 2020-09-29 07:18:25
转载地址 1、 你对 APP 的启动有过研究吗? 有做过相关的启动优化吗? 程序员: 之前做热修复的时候研究过 Application 的启动原理。项目中也做过一些启动优化。 面试官: 哦,你之前研究过热修复? (这个时候有可能就会深入的问问热修复的原理,这里咱们就不讨论热修复原理) 那你说说对启动方面都做了哪些优化? 程序员: 1 .我发现程序在冷启动的时候,会有 1s 左右的白屏闪现,低版本是黑屏的现象,在这期间我通过翻阅系统主题源码,发现了系统 AppTheme 设置了一个 windowBackground ,由此推断就是这个属性捣的鬼,开始我是通过设置 windowIsTranslucent 透明属性,发现虽然没有了白屏,但是中间还是有一小段不可见,这个用户体验还是不好的。最后我观察了市面上大部分的 Android 软件在冷启动的时候都会有一个 Splash 的广告页,同时在增加一个倒数的计时器,最后才进入到登录页面或者主页面。我最后也是这样做的,原因是这样做的好处可以让用户先基于广告对本 APP 有一个基本认识,而且在倒数的时候也预留给咱们一些对插件和一些必须或者耗时的初始化做一些准备。 Ps:这里会让面试官感觉你是一个注重用户体验的 2 .通过翻阅 Application 启动的源码,当我们点击桌面图标进入我们软件应用的时候,会由 AMS 通过 Socket 给

反杀套路!阿里独家的《Android 开发相关源码精编解析》王者晋级之路,跟弯路说再见!

末鹿安然 提交于 2020-09-23 16:52:15
一、前言 Android开发人员都知道,阅读源码是非常好的学习方式,在我们日常工作中或多或少都会接触一些开源代码,比如说最常用的MMKV、ARouter、AsyncTask,这些源码的普及与应用程度远远超过我们的想象,正因为很多人使用,也在推动着源码不断地完善。 这些优秀的源码中有着多年积淀下来的精华,这些精华是非常值得我们学习的,不管我们当前是什么水平,通过反复阅读源码,能力都会有所提升,小到对源码所提供的功能上的使用更加熟练,大到使我们的程序设计更加完美优秀。 但是,纵观我们身边的人,能够做到通读源码的真的是少之又少,究其原因,不外乎以下几点。 1.阅读源码绝对算得上是一件费时费力的工作,需要读者耗费大量的时间去完成。 而作为开发人员,毕竟精力有限,实在没办法拿出太多的时间放在源码的阅读上。 2.源码的复杂性。 任何一款源码经历了多年的发展与提炼,其复杂程度可想而知。当我们阅读源码的时候,大家都知道需要通过工具来跟踪代码的运行,进而去分析程序。但是,当代码过于复杂,环环相扣绕来绕去的时候,跟进了几十个甚至几百个函数后,这时我们已经不知道自己所处的位置了,不得不再重来,但是一次又一次地,最终发现自己根本无法驾驭它,不得不放弃。 3.有些源码发展多年, 会遇到各种各样的问题,并对问题进行了解决,而其中有些问题对于我们来说甚至可以用莫名其妙来修饰,有时候根本想不出会在什么情况下发生