自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SAHADEV的专栏

希望我的文章可以促进您的进步

  • 博客(199)
  • 资源 (3)
  • 论坛 (1)

翻译 Android官方开发文档Training系列课程中文版:目录

本博客翻译文章源文件都已开源。在翻译了一篇安卓的官方文档之后,我觉得应该做一件事情,就是把安卓的整篇训练课程全部翻译成英文,供国内的开发者使用,尤其是入门开发者,虽然现在网络上有很多入门课程,但是还是依靠官方文档学习来的靠谱,安卓官方文档是一系列的课程,使每个人可以系统的掌握安卓的知识。

2016-03-15 13:30:27 8622 15

原创 我在小程序工程化方面的一些实践

我在小程序工程化方面的一些实践早期做小程序时,还是原始时代,项目结构混乱,各种冗余代码,每次迭代时由于高昂的维护成本,极为头疼。遂在一次次的更迭中完成了基础组件的初版,极为酸爽。从此之后在当时的情况下只需要关注于业务,对于通用的该封装分装,该分层分层,该解耦解耦,也出了一款独立于业务之外的基础组件。洋洋自得。后来入职新公司,遇到的问题也是同样的,在工作之余计划将此前抽象的基础组件集成进来,发现...

2020-03-04 20:20:36 241

原创 随机/线性颜色生成器(RandomColorGenerator)

最近在实现https://javascript30.com/的课程,其中有一门课程要求利用Canvas实现一个效果,我发现这个效果其中的颜色是线性生成的。结合我之前已经写过一个随机颜色生成器,就想将这个随机颜色生成器写出来,作为一个工具使用,虽然实际应用场景不大,就当练练手了。本示例中使用了大量的Generator,在写的过程发现ES6所提供的Generator在这个场景中非常适用。可以参考学习...

2020-02-25 21:39:14 2136

原创 整理一波国外前端学习网站

国内的普通开发者对于掌握一门新的技术不知道从哪里下手,看哪些书。为了获得相关知识会关注各种公众号、购买各种视频课程来学习,但由于这些内容本身有碎片化的特点,效果往往不太理想。以至于付出了大量的时间到最后不能够形成系统化的知识。我同样也遇到过类似的问题,不是说公众号与视频课程不好,这些也有自身的优势,但是往往都是别人经过实践沉淀下来的,我们读过之后往往仅限于了解而已。如果要掌握还需要大量的实践、探...

2020-02-14 16:58:50 6775 3

原创 前端应用开发架构图谱

个人整理的前端架构图谱,之后会根据这个图谱不断的完善内容。希望这个图谱可以对开发同学的知识脉络有个梳理的作用。项目创建脚手架IDE脚手架IDE或社区提供的脚手架业务型脚手架根据业务特点通过Node写的工具,用于降低高频手写操作通用组件Element UIEchartIView项目分层组件错误数据采集业务代码与运行时框架隔离安全性兼容...

2020-02-11 17:52:50 3180 4

翻译 Webpack构建性能优化指南

本指南翻译自webpack官方性能指南文档:https://webpack.js.org/guides/build-performance/构建性能本指南涵盖了对增进构建或编译性能的一些有效的提示。General以下提示对开发环境或者生产环境都有效。Stay Up to Date保持最新的webpack版本。我们总是在改进webpack的性能。目前最新的webpack版本为:v4.4...

2019-12-24 15:39:22 576

原创 记一次Vue框架升级

框架升级背景公司目前业务迭代很快,且大部分的流量都在公众号上。然而我们公众号所使用的框架却是3年前的Vue 1.0.16。面对Vue这3年来带来的无数新特性,我们只能望洋兴叹:看得见,摸不着,因为升级这事看起来太难了。经常可以听到老同事、新同事对老框架频频吐槽,也听到很多同学说升级太难了,完全不可能。于是,我就寻思着整点事。升级概况我们的公众号承载的是一个电商购物平台,历经3年多的版本迭...

2019-12-12 17:43:07 891

原创 axios网络请求框架源码解析

早期axios0.1.0版本做了对IE浏览器与包含XmlHttpRequest的浏览器的支持。并且做了对请求参数拼接、Json对象序列化等基本功能。到0.19.0版本时,内部请求已经变为了在Node环境下与主流浏览器的支持,其中Node环境下支持http请求与https请求。并且支持取消、拦截。Axios执行开始之初,首先执行createInstance方法,createInstance方法用...

2019-06-13 17:11:18 1450 3

原创 Promise源码解析

Promise源码解析纸上得来终觉浅,绝知此事要躬行。之前只是很浅显的知道Promise的用法,也大概猜测到它的内部是如何实现的。但是总是有一种不深究一下就不踏实的感觉。于是从npm上获得早期的Promise源代码,拿过来读一读,做一做笔记。Promise的源码写的非常的巧妙,凭空阅读会陷入入其中无法自拔。简单的Promise用法一个简单的Promise用法如下:const promis...

2019-05-31 20:34:59 1362

原创 深入解析Node.js setTimeout方法的执行过程

深入了解setTimeout源码之前,本有两个选择。一是通过chromium源码分析,二是通过Node.js源码分析。后来发现第一种方案的源码获取成本太大,于是从Node官网获取了几十兆的代码用来了解。setTimeout方法定义于timers.js文件中,源码整体如下:function setTimeout(callback, after, arg1, arg2, arg3) { // ...

2019-05-30 18:59:13 1705 1

原创 Vue源码探究笔记

一切从这张图开始:数据的入口: /** * ViewModel exposed to the user that holds data, * computed properties, event handlers * and a few reserved methods */ fun...

2019-02-27 20:06:57 4503

原创 VS Code HtmlFindClass 插件介绍

这款插件诞生于工作中,在写大量的前端代码之后,发现有的工作比较重复,浪费时间,于是想能不能通过工具来解决。期初是拿Java写的,但是它不利于推广,因为很多前端同学不掌握Java。以至于是一直我自己在使用。后来很长时间之后,我自己再用还得查一查以前的使用文档。这还得了,瞬间就有一个想法,搞一个插件出来。于是一下午时间加足马力写出了这个插件并发布了出来。Features在插件支持的文件中,单击...

2019-01-30 15:49:00 423

原创 每日优鲜小程序基础组件介绍

每日优鲜小程序基础组件介绍1.基础组件介绍2.基础组件的结构与作用3.基础组件的接入方法初次引入初始化更新与维护基础组件接入1.基础组件介绍小程序基础组件基于每日优鲜主商城小程序业务实践演变而来。基础组件的名称为:mini_app_base_module。基础组件的项目地址为:https://github.com/sahadev/mini_app_base_module。2.基础组件的结...

2018-09-29 19:28:03 2203

原创 EventBus1.0.1源码解析

很久没有更新过源码解析类文章,以下内容作为源码分析类的笔记。分析方法适用于其它源码分析。分析工具说明许久以来,阅读源代码最得力的工具就非Source Insight莫属了。然,后来微软出了一款轻量级但功能强大的IDE就没Source Insight什么事了。微软的这款IDE就是大名鼎鼎的VSCODE,全名叫:Visual Studio Code。它的强大之处这里就不过多描述了。我们转回...

2018-04-11 16:42:51 396

原创 Githug第42关rebase_onto通关秘籍

Githug是一个用来了解、熟悉Git的一个非常好的游戏。目前网站上收录的都是之前只有55关的解题方法,没有新增的rebase_onto这一关的内容。现在Githug一共有56关。现将新增的42关的解答内容更新如下:第42关的题目如下:Name: rebase_ontoLevel: 41Difficulty: **You have created your branch f

2018-01-23 15:10:32 1010

原创 Android自动化测试探索

Android自动化测试探索前言通常来说,我们开发完成产品之后,都是由测试组或者是我们自己点一点,基本上没有问题了就开始上线。但是,随着时间的堆叠,一款产品的功能也越来越多。这时,我们为了保证产品的质量,就需要在每次测试时将所有的流程都走一遍。然而,对于一款庞大的产品来说这是困难又复杂的。因为我们自己手动测试需要花费大量的时间来完成主业务测试这种重复性工作。为了保证效率以及解决成本,我们就需要考虑将

2017-08-04 19:23:56 3541 8

原创 使用Kotlin开发Android应用初体验

使用Kotlin开发Android应用初体验昨晚,最近一届的谷歌IO大会正式将Kotlin确定为了官方开发语言,作为一名Android开发鸟,怎么能不及时尝尝鲜呢?Kotlin的简要介绍在开发之前,很多同学一定有很多疑问,Kotlin到底有啥好处,怎么和现有的项目共存呢?Java那么些特性Kotlin都有吗?嗯,让我们一一来看。

2017-05-18 17:20:17 24670 6

原创 简明扼要的反射入门教程

反射反射作为RTTI语言(比如Java)的基础之一被很多人所熟知,但是有些同学对反射本身还是懵懵懂懂的,不是很清楚它到底有什么用。今天这节课我们就对反射本身来一个通体的认知。定义反射所在的包为:java.lang.reflect它的英文版定义是:Reflection allows programmatic access to information about the fields, methods

2017-04-28 14:28:49 3799 1

原创 探索Glide对Gif图片资源的获取、解析过程

大家新年好,很久没写博客了。今天我们来探索一下Glide是如何支持Gif图片加载的。本篇博客的目的了解代码分析的基本思路与方法了解Glide是如何对Gif图片进行支持的探索背景为什么会有这么一个想法呢,一来一直对Glide是知其名而不知其所以然,二来还主要是工作中需要对它研究研究,以便更好的支持工作内容。我想很多同学都希望自己可以对某种著名的开源框架了解贯通,但是很多

2017-02-10 15:18:16 4512 4

原创 如何修改TextView链接点击实现(包含链接生成与点击原理分析)

*这篇文章的主要目的是想要大家学习如何了解实现,修改实现,以达到举一反三,自行解决问题的目的。某天遇到这么一个需求:在TextView中的文本链接要支持跳转,嗯,这个好办,TextView本身是支持的,我们只用添加一项属性就可以搞定: android:autoLink="web"在添加后发现确实是有效果了。但是如果我们不想使用系统默认的浏览器,而是想要这个地址跳入某个页面或者自己应用内的浏览器该怎

2016-12-14 14:57:36 5417 1

原创 令人振奋的好消息!2016年12月8日Google Developers中文网站发布!

令人振奋的好消息!2016年12月8日Google Developers中文网站发布!以往我们需要访问Android的开发网站、Google的开发网站都需要翻墙,苦不堪言。现在Google发布了中文网站,怎能不让人开心?!Android中文开发网站: https://developer.android.google.cn/index.htmlGoogle中文开发网站: https://devel

2016-12-08 10:45:15 3832 1

原创 一步步手动实现热修复(三)-Class文件的替换

在上一节了解了基本的类加载原理之后,我们这一节开始对工程内部的类实行替换。 Tips: 本章主要依赖文章http://blog.csdn.net/vurtne_ye/article/details/39666381中的未实现代码实现,实现思路也源自该文章,在阅读本文之前可以先行了解。这一节我们主要实现的流程有:在工程内创建相同的ClassStudent类,但在调用getName()方法返回字

2016-11-27 09:48:07 7041 13

原创 一步步手动实现热修复(二)-类的加载机制简要介绍

一个类在被加载到内存之前要经过加载、验证、准备等过程。经过这些过程之后,虚拟机才会从方法区将代表类的运行时数据结构转换为内存中的Class。我们这节内容的重点在于一个类是如何被加载的,所以我们从类的加载入口开始。类的加载是由虚拟机触发的,类的加载入口位于ClassLoader的loadClassInternal()方法: // This method is invoked b

2016-11-25 15:23:33 4688 2

原创 一步步手动实现热修复(一)-dex文件的生成与加载

热修复技术自从QQ空间团队搞出来之后便渐渐趋于成熟。我们这个系列主要介绍如何一步步手动实现基本的热修复功能,无需使用第三方框架。在开始学习之前,需要对基本的热修复技术有些了解,以下文章可以帮助到你:安卓App热补丁动态修复技术介绍【腾讯Bugly干货分享】Android Patch 方案与持续交付Android dex分包方案dodola/HotFixdex文件的生成与加

2016-11-24 13:08:57 10697 35

翻译 Android官方开发文档Training系列课程中文版:Activity测试之创建功能性测试

原文地址:http://android.xsoftlab.net/training/activity-testing/activity-functional-testing.html功能性测试包括模拟用户操作之类的组件验证。例如开发者可以通过功能性测试来验证在用户执行了UI操作之后Activity是否启动了Activity。如要为Activity创建功能性测试,测试类应当继承ActivityInst

2016-11-14 11:42:48 1822

翻译 Android官方开发文档Training系列课程中文版:Activity测试之创建单元测试

原文地址:http://android.xsoftlab.net/training/activity-testing/activity-unit-testing.htmlActivity单元测试除了可以快速的验证Activity的状态之外,还可以验证Activity与底层组件之间的交互。单元测试通常用于测试较小的代码单元(它们通常不依赖系统或者网络资源),它们可能是一个方法,一个类或者其它组件。例如

2016-11-11 13:37:07 1911

翻译 Android官方开发文档Training系列课程中文版:Activity测试之UI组件测试

原文地址:http://android.xsoftlab.net/training/activity-testing/activity-ui-testing.html一般来说,正因为Activity含有UI组件,所以使得用户可以与程序交互。这节课将会介绍如何测试Activity中的Button组件。在课程学习之后便可以使用相同的方法对其它UI组件进行测试。 Note:这节课中所涉及的UI测试被称

2016-11-05 11:21:46 1758

翻译 Android官方开发文档Training系列课程中文版:Activity测试之创建运行测试

原文地址:http://android.xsoftlab.net/training/activity-testing/activity-basic-testing.html为了验证在布局与功能上没有差池,很重要的一点就是需要为每个Activity创建对应的测试类。对每个测试类还需要创建单独的测试用例,这其中包含测试环境,测试条件以及对Activity测试的测试方法。实现这些便可以进行测试并获知结果。

2016-11-03 10:43:21 1717 1

翻译 Android官方开发文档Training系列课程中文版:Activity测试之测试环境配置

原文地址:http://android.xsoftlab.net/training/activity-testing/index.html引言开发者应当将测试作为应用开发周期的一部分。良好的测试用例可以帮助开发者及早的发现Bug,同时也可以增强开发者对代码的信心。测试用例定义了一系列对象与方法,使各个测试可以独自进行。测试用例既可以组合运行,也可以重复进行。这节课的课程将会介绍如何使用Android

2016-11-01 10:23:02 2140

翻译 Android官方开发文档Training系列课程中文版:Android的安全建议

原文地址:http://android.xsoftlab.net/training/articles/security-tips.htmlAndroid系统内置的安全策略可以有效的降低应用程序的安全问题。所以默认创建的应用程序已经包含了一定程度的安全保护措施。Android所包含的安全策略有:应用程序沙箱,它可以使APP的数据、代码与其它APP相互隔离。应用程序框架对于常见防护措施的强大实现,比

2016-10-27 22:35:01 5126 4

翻译 Android官方开发文档Training系列课程中文版:Android的JNI相关

原文地址:http://android.xsoftlab.net/training/articles/perf-jni.htmlJNI的全称为Java Native Interface,中文意思是Java本地接口。它定义了Java代码与C/C++代码之间的交互方式。它是两者的桥梁,支持从动态共享库中加载代码。虽然有些复杂,但是它的执行效率还是蛮高的。如果你对JNI还不太熟悉,那么可以通过Java N

2016-10-17 18:07:21 9946 5

翻译 Android官方开发文档Training系列课程中文版:如何避免ANR?

原文地址:http://android.xsoftlab.net/training/articles/perf-anr.html#anr尽管你写代码可能通过了世界上所有的性能测试,但是它还是可能会让人感觉到卡顿。当应用卡的不成样子时,系统会给你弹一个”Application Not Responding”的对话框。在Android中,系统会对那些长时间没有响应的应用采取一些措施:弹出一个对话框告诉用

2016-10-09 10:42:03 3606 1

翻译 Android官方开发文档Training系列课程中文版:线程执行操作之线程间通讯

原文地址:http://android.xsoftlab.net/training/multiple-threads/communicate-ui.html上节课我们学习了如何启动一项由ThreadPoolExecutor所管理的线程任务。最后这节课我们将学习如何从任务中发送结果数据给UI线程。这项手段可以使任务在执行完毕后将结果显示到UI中去。每个APP拥有独立的UI线程。只有在UI线程中创建的对

2016-10-08 15:28:02 1890

翻译 Android官方开发文档Training系列课程中文版:线程执行操作之线程池操作

原文地址:http://android.xsoftlab.net/training/multiple-threads/run-code.html#StopThread上节课我们学习了如何定义一个类用于管理线程以及任务。这节课将会学习如何在线程池中运行任务。要做到这一点,只需要往线程池的工作队列中添加任务即可。当一条线程处于闲置状态时,那么ThreadPoolExecutor会从任务队列中取出一条任务

2016-10-03 19:49:43 2302

翻译 Android官方开发文档Training系列课程中文版:线程执行操作之创建多线程管理器

原文地址:http://android.xsoftlab.net/training/multiple-threads/create-threadpool.html上节课我们学习了如何定义一个任务。如果只是执行一次任务,那么刚刚所学的已经基本满足要求了。如果需要针对不同的数据执行一项任务,并且同一时间只需要执行一条任务,那么IntentService可能会适合你。如果要使任务随着CPU资源的调度

2016-10-02 16:43:49 1804

翻译 Android官方开发文档Training系列课程中文版:线程执行操作之定义线程执行代码

原文地址:http://android.xsoftlab.net/training/multiple-threads/index.html引言大量的数据处理往往需要花费很长的时间,但如果将这些工作切分并行处理,那么它的速度与效率就会提升很多。在拥有多线程处理器的设备中,系统可以使线程并行运行。比如,使用多线程将图像文件切分解码展示要比单一线程解码快得多。这章我内容们将会学习如何设置并使用多线程及线程

2016-09-28 07:56:35 1772

翻译 Android官方开发文档Training系列课程中文版:电池续航时间优化之按需开启广播接收器

监测设备状态变化最简单的实现方式就是为每种状态都创建一个广播接收器,然后只需在相应的广播接收器内依据当前的设备状态重新执行各自的任务即可。这种方式的不好之处就在于每次广播接收器被触发后,APP都会唤醒设备。一种比较好的解决方案就是在运行时关闭或开启广播接收器。这样也可以使在清单文件中声明的广播接收器按需触发。

2016-09-27 08:55:26 1728

翻译 Android官方开发文档Training系列课程中文版:电池续航时间优化之检查、检测网络连接状态

原文地址:http://android.xsoftlab.net/training/monitoring-device-state/connectivity-monitoring.html通常会有一些后台服务需要连接到网络来更新数据。但是如果没有连接到互联网,或者由于网络太慢而不能完成更新,那么为什么不在连接到网络并且状况良好时再做这些工作呢?你可以使用ConnectivityManage

2016-09-26 13:07:43 2191 2

翻译 Android官方开发文档Training系列课程中文版:电池续航时间优化之检查与监测坞的状态与类型

原文地址:http://android.xsoftlab.net/training/monitoring-device-state/docking-monitoring.html 译者提示:这里说的坞是一种扩展设备,Android中比较少见,而苹果设备比较常见。我们常见的苹果设备的扩展坞就是苹果体验店的各种小型音响设备。Android设备可以被放置在若干种不同的扩展坞中。这些扩展坞包

2016-09-22 08:55:17 1993

翻译 Android官方开发文档Training系列课程中文版:电池续航时间优化之监测电池电量及充电状态

原文地址:http://android.xsoftlab.net/training/monitoring-device-state/index.html引言作为一款优秀的APP应用,应该想方设法的降低电量的消耗。通过这节课的学习,你将有能力使APP可以基于设备的状态来调整它的功能以及行为。我们可以通过比如在断开连接时关闭后台服务,或者在电量低的时候降低更新的频率等等手段来将耗电量降

2016-09-21 08:40:01 2116

MVP模式在Android中的应用之图片展示选择功能的框架设计

在Android中图片平常需要展示,也有可能会遇到选择,除此之外,界面可能又会不断变化,也有可能数据来源不一致,这种情况下该如何设计?该图可供参考,肯定有不足之处,欢迎提意见。

2015-11-17

MVP模式在Android中的应用UML图2

MVP模式在Android中的应用UML图2,图完善的更丰富,类别更多,为第一版的升级版

2015-11-13

MVP模式在Android中的应用UML图

MVP模式在Android中的应用UML图(应用于RecyclerView)高清图

2015-11-12

Sahadev_的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也
提示
确定要删除当前文章?
取消 删除