ARouter

关于OSPF LSA不稳定!

孤人 提交于 2021-01-12 02:01:45
Issue 1 Solution It is important that you understand the error message during attempts to troubleshoot flood war messages. The messages appear differently on the origination and flush routers. For this reason, it is crucial to focus on the LSA type for which the flood war message is reported, as each LSA type is troubleshot differently. Here is an example snippet of the OSPF flood war message: %OSPF-4-FLOOD_WAR: Process 1 re-originates LSA ID 172.16.254.25 type-2 adv-rtr 172.16.253.1 in area 0 %OSPF-4-FLOOD_WAR: Process 1 flushes LSA ID 172.16.254.25 type-2 adv-rtr 172.16.253.1 in area 0 Here

阿里P8大佬熬夜10天,把所有Android第三方库整理成了PDF

空扰寡人 提交于 2020-11-07 12:33:20
缘起 随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,还有应用之间的互相调用等等问题,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。 所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。 阿里P8大佬每天熬夜到凌晨一两点,花了将近半个月时间将Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架整合成了一套系统知识笔记PDF,长达1042页!相信看完这份文档,你将会对这些Android第三方框架有着更深入、更系统的理解。 由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,1042页详细完整版的【Android设计思想解读开源框架】文档领取方式: 点击我的GitHub 即可免费领取 第一章:热修复 1、AOT/JIT & dexopt 与dex2oat 2、热修复常见问题之CLASS_ISPREVERIFIED 问题 3、热修复原理 4、Tinker 的集成与使用(自动补丁包生成) image image 第二章:插件化 1、Class 文件与Dex 文件的结构解读 2

Android开发3年,九月份面试12家大厂跳槽成功,我有一些面试经验想分享给你们

烈酒焚心 提交于 2020-10-01 17:53:22
在下2017年毕业,目前从事android开发工作已经3年了,前段时间刚完成一次跳槽,面试了几家公司,将一些面试经验分享给大家,希望对大家有所帮助。 简历 首先是简历,一般找一个模板,填写掌握的技能和项目经历即可。 github上有一个不错的模板,详情可见: github.com/CyC2018/Mar… 项目clone后,个性Resuem.md即可,然后导出为pdf文件。 简历建议长度为2页,太长太短都不好。 建议用掌握与熟练掌握取代了解与精通。 刷题 算法题可以说是现在找工作必刷的了。不过根据我面试的经验,算法题总得来说问的还是比较少,还有一些公司是基本不问算法的。 当然如果碰到字节,快手这种每轮都问算法的公司,如果因为算法题拿不到offer就很可惜了。 算法题就好像高考语文的古诗词默写一样,分不多,但丢了就很可惜了。 根据我的经验,大概刷了,掌握100道题就足以应付面试了。 当然完全掌握需要重复练习,不是刷了一遍就可以的。 这里推荐一下极客时间上覃超的五遍刷题法: 五遍刷题法 1.第一遍,直接看解法 多解法,比较解法优劣,默写好的解法 2.第二遍,打开leetcode,直接开始写 多种解法比较,调优 3.第三遍,过一天之后,再重复做题 4.第四遍,过了一周,再来反复练 5.第五遍,面试前一周,恢复性训练 通过以上方法重复练习,大概刷100题就足以应付面试,如果每天刷3道

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

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

Android Kotlin/java集成arouter产生的问题及解决

蹲街弑〆低调 提交于 2020-08-07 16:33:01
前言 一般解决不同模块中的Activity跳转需要相互依赖,如此将产生严重的耦合,失去了划分module的意义。 可以自己根据需要设计跳转router,也可以直接使用arouter第三方依赖实现,在实现过程中会产生较多的问题,本文将给出基本步骤及解决办法。 1.kotlin配置基础步骤 以下步骤主要以Kotlin语言环境为基础。首先在项目app或其他命名的模块下的build.gradle中添加以下内容 apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-android-extensions' kapt { arguments { arg("AROUTER_MODULE_NAME", project.getName()) } } dependencies { api 'com.alibaba:arouter-api:1.5.0' kapt 'com.alibaba:arouter-compiler:1.2.2' } 这是其他博客中描述的通用配置,但是这样做会出现一个错误: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin [id 'kotlin-kapt'] org.gradle.api.GradleException:

组件化之开发总结

喜欢而已 提交于 2020-05-04 19:22:54
Android组件化探索与实践 在Android开发中,随着业务复杂性不断的增加,项目的代码量会不断的增大,这对于项目的维护提出了更大的挑战。Android的组件化开发就是旨在解决大型项目的可维护性、可扩展性的难题。 一、组件化简介 组件化是大型Android项目的一个好的解决方案。通过对项目工程进行组件化,利于代码的维护与扩展,特别是在多团队协作开发的模式中,尤其有效。 对于Android组件化的讨论其实已经持续很长的一段时间了,也产生了很多种的组件化方案,不同的组件化方案有不同的利弊,但是其组件化目标基本一致,只是实现思路可能不同。本篇文章就是讲解我们实现的一种组件化方案。 首先需要了解什么是组件化?简单来说,组件化就是对项目依据业务功能拆分成不同的模块,这些业务功能模块彼此独立,不相互依赖,既可以独立编译运行,也可一起打包成一个app。通过下图来对比一下组件化的特点。 图1.1传统项目组织方式 图1.2 Android组件化方式 通过上图可以明显的看出,传统的项目组织形式,不同模块之间会相互引用,造成耦合。而在组件化工程中,不同业务模块之间是没有相互引用关系的,彼此项目独立。 二、组件化目标 在了解了组件化的定义之后,需要明确组件化的目标主要是什么。组件化的目标主要是解决如下几方面的问题。 解耦合 随着项目不断的迭代,代码越来越庞大、臃肿,这时代码的维护就会显得极其繁重

【Android】组件化开发的简单应用

ぐ巨炮叔叔 提交于 2020-04-30 04:10:45
个人博客: http://www.milovetingting.cn 组件化开发的主要步骤: 一、新建Modules 1、新建Project,作为应用的主Module。 2、新建Module:"Common",类型选择"Android Library",作为所有其它Module的基础依赖库。 3、新建Module:"Home",类型选择"Android Library",依赖"Common"。 4、新建Module:"Project",类型选择"Android Library",依赖"Common"。 5、新建Module:"User",类型选择"Android Library",依赖"Common"。 具体新建怎样的Module,可以根据实际业务来调整。这里选择新建"Home"、"Project"、"User"来模拟业务。 二、增加Flag以便在release和debug模式下切换 1、在gradle.properties文件中增加一个变量 isDebug = false 当isDebug为true时,为Debug模式,其它的Module可以作为单独的App运行。当isDebug为false时,为Release模式,其它的Module为Library模式,不能单独运行,此时只有主App可以运行。 2、修改app的build.gradle文件 implementation

阿里ARouter使用及源码解析(一)

一世执手 提交于 2020-04-24 16:53:15
在app的开发中,页面之间的相互跳转是最基本常用的功能。在Android中的跳转一般通过显式intent和隐式intent两种方式实现的,而Android的原生跳转方式会存在一些缺点: 显式intent的实现方式,因为会存在直接的类依赖的问题,导致耦合严重; 隐式intent的实现方式,则会出现规则集中式管理,导致协作变得困难; 可配置性较差,一般而言配置规则都是在Manifest中的,这就导致了扩展性较差; 跳转过程无法控制,一旦使用了StartActivity()就无法插手其中任何环节了,只能交给系统管理; 当多组件化开发,使用原生的路由方式很难实现完全解耦; 而阿里的 ARouter 路由框架具有解耦、简单易用、支持多模块项目、定制性较强、支持拦截逻辑等诸多优点,很好的解决了上述的问题。关于ARouter具体实现功能,典型应用以及相应技术方案实现的介绍不在这详细介绍,具体可参见 开源最佳实践:Android平台页面路由框架ARouter 。 阿里ARouter的分析计划 阿里ARouter使用及源码解析(一) 阿里ARouter拦截器使用及源码解析(二) 阿里ARouter参数自动装载使用及源码解析(三) 基本功能使用 1.添加依赖和配置 android { defaultConfig { ... javaCompileOptions {

【翻译】在Spring WebFlux中处理错误

浪子不回头ぞ 提交于 2020-04-17 20:17:21
> 原文链接: Handling Errors in Spring WebFlux | Baeldung ## 1. 概览 在本教程中,我们通过一个实际的例子来**看一下可用于处理Spring WebFlux项目中的错误的各种策略**。 我们还将指出在哪种情况下使用一种策略会比另外一种好,在本文最后将提供所有源码的下载地址。 ## **2. 配置实例** 上一篇文章 [previous article]( Guide to Spring 5 WebFlux | Baeldung ) 中已经提到了maven的配置, 并对 Spring Webflux做了简单的介绍。 在这个例子中,**我们为一个 RESTful 端点加上一个名为 username 的查询参数,并以“Hello username”**作为结果返回。 First, let’s create a router function that routes the */hello* request to a method named *handleRequest* in the passed-in handler: 首先,让我们创建一个路由器函数,将/hello请求路由名为handleRequest的方法中: @Bean public RouterFunction < ServerResponse > routeRequest