自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 Android混淆从入门到精通

简介作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使被反编译,也难以阅读。混淆概念虽然容易,但很多初学者也只是网上搜一些成型的混淆规则粘贴进自己项目,并没有对混淆有个深入的理解。本篇文章的目的就是让一个初学者在看完后,能在不进行任何帮助的情况下,独立写出适合自己代码的混淆规则。说在前面这里我们直接用Android Studio来说明如何进行混淆,Android Studio自身集成Java语言的ProGuard作为压缩,优化和混淆工具,配

2021-10-28 17:21:42 252

原创 从零开始分析lnstantrun源码

背景Android Studio 2.0 中引入的 Instant Run 是 Run 和 Debug 命令的行为,可以大幅缩短应用更新的时间。尽管首次构建可能需要花费较长的时间,Instant Run 在向应用推送后续更新时则无需构建新的 APK,因此,这样可以更快地看到更改,曾经是Android开发人员的开发的利器,现在已被废弃,用Apply changes替代。但我们仍然可以学习它的源码,提升自己的开发技术。使用instant-run加载更新有三种方式hot swap,cold swap,war

2021-10-28 14:52:02 500

原创 hook入门篇

#引子Hook技术在android开发领域算是一项黑科技,那么一个新的概念进入视线,我们最关心的3个问题就是,它是什么,有什么用,怎么用本系列将由浅入深 手把手讲解这三大问题本文是第一篇,入门篇#正文大纲#####一. hook的定义#####二. 实用价值#####三. 前置技能#####四. Hook通用思路#####五. 案例实战#####六. 效果展示#Demo地址https://github.com/18598925736/OnClickListene

2021-10-24 20:55:27 2639

原创 简单概述Serverless

Serverless是计算的趋势,它使诸如Web应用程序之类的代码执行与维护服务器以运行该代码的需求脱钩。 创建,供应和维护服务器上运行的应用程序的操作开销(传统意义上)非常重要。 减少或消除这项工作可以帮助组织管理成本并为员工腾出时间。 Serverless还提供了创新的计费模型和更容易的可扩展性。在《Serverless是什么?》中,作者Mike Roberts和John Chapin指出了使Serverless变得独一无二的核心见解:使用完全Serverless的应用程序,您不再需要将架构的任何部

2021-10-23 21:19:55 1952

原创 简单概述Serverless

Serverless是计算的趋势,它使诸如Web应用程序之类的代码执行与维护服务器以运行该代码的需求脱钩。 创建,供应和维护服务器上运行的应用程序的操作开销(传统意义上)非常重要。 减少或消除这项工作可以帮助组织管理成本并为员工腾出时间。 Serverless还提供了创新的计费模型和更容易的可扩展性。在《Serverless是什么?》中,作者Mike Roberts和John Chapin指出了使Serverless变得独一无二的核心见解:使用完全Serverless的应用程序,您不再需要将架构的任何部

2021-10-21 14:33:16 138

原创 初始synchronized关键字的偏向锁、轻量锁、重量锁

背景作为一名Java程序员,synchronized关键字在我们的日常编码中肯定是不可或缺的,可是我们在用synchronized的时候真的明白它做了什么吗?我们可能听到过synchronized性能差,应该用ReentrantLock之类balabala的话,这句话在jdk1.6版本之前是没有错的,因为synchronized关键字在jdk1.6之前只有一种加锁方式——重量锁,重量锁内部在进行系统调用时会使线程由用户态变为内核态,结束系统调用后又会由内核态变回用户态,这两种状态间切换是影响性能的,所以

2021-10-20 14:39:37 205

原创 从零开始分析lnstantRun源码

背景Android Studio 2.0 中引入的 Instant Run 是 Run 和 Debug 命令的行为,可以大幅缩短应用更新的时间。尽管首次构建可能需要花费较长的时间,Instant Run 在向应用推送后续更新时则无需构建新的 APK,因此,这样可以更快地看到更改,曾经是Android开发人员的开发的利器,现在已被废弃,用Apply changes替代。但我们仍然可以学习它的源码,提升自己的开发技术。使用instant-run加载更新有三种方式hot swap,cold swap,war

2021-10-19 21:17:34 908

原创 Activity的启动模式,你了解多少

题目:Activity的启动模式,区别这道题想考察什么?启动模式是什么?启动模式如何设置?Activity的启动模式区别?应用场景以及那些注意的点?考察的知识点启动任务,返回栈,启动模式的概念启动模式设置方法以及区别亲和性,多个任务启动模式应用场景以及那些坑考生应该如何回答我们可以先讲一下从应用启动涉及到的activity堆栈流程以及四种启动模式概念一个应用由多个Activity构成,多个Activity构成了任务,系统以栈方式进行管理任务(也就是管理多个Activit

2021-10-19 14:06:29 68

原创 Activity的启动模式

题目:Activity的启动模式,区别这道题想考察什么?启动模式是什么?启动模式如何设置?Activity的启动模式区别?应用场景以及那些注意的点?考察的知识点启动任务,返回栈,启动模式的概念启动模式设置方法以及区别亲和性,多个任务启动模式应用场景以及那些坑考生应该如何回答我们可以先讲一下从应用启动涉及到的activity堆栈流程以及四种启动模式概念一个应用由多个Activity构成,多个Activity构成了任务,系统以栈方式进行管理任务(也就是管理多个Activit

2021-10-18 17:14:43 6007

原创 谈谈架构中的限流与计数器的实现方式

1. 先谈谈Nginx分流对,要考虑限流先得假设访问量达到了一定得程度,再高并发得前提下,请求过多很有可能导致某天服务器承受不了导致死机。在这个前提下,我相信你最先想到的一定是nginx,使用nginx分流让所有的请求不要直接到达某一个服务器,当并发量继续上升的时候,我提供更多的服务器视乎就能解决问题了,这想法看上去很对,而且很多行业就是这么做的,比如下面的nginx配置文件,很简单,我相信你一看就能懂#user nobody;worker_processes 1;events {

2021-10-18 09:19:06 104

原创 Android 热修复核心原理,ClassLoader类加载

[TOC]Android前沿技术探讨:ClassLoader在热修复中的应用​ 又在写bug?这句话虽然是句玩笑话,但是也正因为我们是人不是神,但也不能面面俱到,什么都考虑完美,出现bug是不可避免的。那么对于android我们出现了Bug怎么办?​ 早期遇到Bug我们一般会紧急发布了一个版本。然而这个Bug可能就是简简单单的一行代码,为了这一行代码,进行全量或者增量更新迭代一个版本,未免有点大材小用了。而且新版本的普及需要时间,而且如果这次的新版本又有个小问题,怎么办?​ 那么为了解决这一个问题,热

2021-10-15 14:57:41 241

原创 IO框架学习

Java IO的学习是一件非常艰巨的任务。它的挑战是来自于要覆盖所有的可能性。不仅存在各种I/O源端还有想要和他通信的接收端(文件/控制台/网络链接),而且还需要以不同的方式与他们进行通信(顺序/随机存取/缓冲/二进制/字符/行/字 等等)这些情况综合起来就给我们带来了大量的学习任务,大量的类需要学习。我们要学会所有的这些java 的IO是很难的,因为我们没有构建一个关于IO的体系,要构建这个体系又需要深入理解IO库的演进过程,所以,我们如果缺乏历史的眼光,很快我们会对什么时候应该使用IO中的哪些类.

2021-10-14 15:31:37 117

原创 apk瘦身之旅,你了解多少

我们完成一个app后,都需要生成一个apk,然后上线,而apk的大小也一定程度的影响了用户是否愿意下载你的这个app,所以也就有了apk瘦身这门艺术。目录apk的结构图片压缩导入矢量图适配问题Tint 着色器动态库移除so库的相关知识点ABI结束语apk的结构既然要对一个apk瘦身,首先我们就得知道apk格式的文件内容。实际上一个apk文件就是一个zip包,我们只需要将后缀改为zip,然后进行解压就可以看到里面的内容了。下面我们来看下它里面的文件以及作用:apk包含

2021-10-13 14:33:29 177

原创 对于Handler是怎么进行线程通信,它的原理又是什么,你了解多少?

题目:Handler怎么进行线程通信,原理是什么?首先我们要知道这道题想考察什么?是否熟悉Handler的基本用法是否熟悉Handler消息机制的运行流程是否明白Handler进行线程通信的原理考察的知识点利用Handler进行线程切换的基本流程Handler消息机制涉及到的类以及之间的关系Handler是怎样做到线程通信的考生应该如何回答先说一下Handler机制的运行流程,以及涉及到的类之间的关系Handler消息机制主要涉及到四个类:Handler、Looper、Me

2021-10-12 16:24:53 927

转载 前端性能优化的常用手段

反正,前端性能优化就是很重要,不好好学习怎么进阶到20K+的薪水啊?!性能优化方面一直有所关注,但如果不去对自己所负责的项目进行一下回锅,实践实践,优化优化,总会有点“书上得来终觉浅”的感觉吧!从最开始的CSS放到<head>里面、js放到</body>前面、使用雪碧图等,到后面的静态资源压缩、合并以及使用iconfont代替小图标,再到最近实践的gzip压缩、设置HTTP Header缓存字段…gzip压缩、设置ETag等,早就在《高性能网站建设指南》那两本书中看过,但我一直

2021-10-11 16:30:56 183

原创 字节跳动面试官:让所有Android面试者头皮发麻的问题,你知道几个?

太难了网页中输入url,到渲染整个界面的整个过程,以及中间用了什么协议?1)过程分析:主要分为三步DNS解析。用户输入url后,需要通过DNS解析找到域名对应的ip地址,有了ip地址才能找到服务器端。首先会查找浏览器缓存,是否有对应的dns记录。再继续按照操作系统缓存—路由缓存—isp的dns服务器—根服务器的顺序进行DNS解析,直到找到对应的ip地址。客户端(浏览器)和服务器交互。浏览器根据解析到的ip地址和端口号发起HTTP请求,请求到达传输层,这里也就是TCP层,开始三次握手建立连接。服务器

2021-10-09 21:23:56 424

原创 真香警告!Alibaba珍藏版Android框架体系架构手写文档,刷起来

谈起Android框架体系架构,我先提个问:什么是Android框架体系架构 ?Android系统构架是安卓系统的体系结构,android的系统架构和其操作系统一样,采用了分层的架构,共分为四层,从高到低分别是Android应用层,Android应用框架层,Android系统运行库层和Linux内核层。Android系统构架主要应用于ARM平台,但不仅限于ARM,通过编译控制,在X86、MAC等体系结构的机器上同样可以运行。而今天咱要聊的就是Alibaba珍藏版 Android框架体系架构 手写文档,

2021-10-09 20:38:40 253 2

原创 为什么越来越多的程序员感觉工作没有动力、职业发展没有希望,迷茫和中年危机等现象普遍发生?

热度还蛮高歧视?现在,确实有很多“专业”程序员歧视非科班出身的程序员。其中主要原因是,非科班出身的程序员缺少某些必要的课程和训练,因而会在团队合作时产生一些困扰。既然知道这个原因,那么“非科班”的,只要补足这些课程和训练就好。比起科班生非科班缺哪些?很多人认为“程序员就是学一门编程语言”,其实这是远远不够的。参考了几所知名大学的计算机本科课程,以及我的个人经验,归纳如下:1.高等数学: 重点在矩阵、离散数学、逻辑学、统计学以及微积分;2.编程语言: 2或3门编程语言的基础,常见的包括C++和J

2021-10-07 21:51:18 314

原创 收集几十位大厂面试者的面试题及见解-Redis模块

一 Redis基本数据类型1.1 Redis中数据类型有哪些?底层实现是什么?不同的数据类型运用到什么场景?String、hash、list、set、sorted_set/zsethash 底层是hash表实现的数据存储。list 能存储多个数据,按照插入顺序排序,底层使用双向链表实现。set 和hash存储结构完全相同,仅存储键值,不存储value。且键值不允许重复。存储大量数据,且快速查询。zset 是字典(dict) + 跳表(skiplist),数据比较少的时候用ziplist编码结构存

2021-09-28 14:54:08 149

原创 收集几十位大厂面试者的面试题及见解-Netty模块

HTTPS和HTTP是什么关系?HTTPS加密流程是什么?Websocket项目中如何集成SSL?阿里云如何进行HTTPS开发。一 HTTP和HTTPS概述1.1 HTTP协议概述HTTP的第一个版本只能传输超文本标记语言(HTML)文件,因此被称为超文本传输协议。特征[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fdcCBwup-1632746705151)(//upload-images.jianshu.io/upload_images/25117

2021-09-27 22:15:03 114

原创 第一个Netty服务如何写?Netty组件是什么?ByteBuf是什么?

一 概述1.1 初步了解NettyNetty是什么?Netty是一个高性能的、异步的、基于事件驱动的网络应用型框架。为什么使用netty?a Netty是基于Java的NIO实现的,对各种API进行统一封装。 b 基于事件模型,我们可以在对应事件编码自己业务。让开发者聚焦业务。 c 高度可定制线程模型,单线程,一个或者多个线程池。 d Netty只依赖JDK底层api。 e 在通信方面,减少不必要内存拷贝,提高性能。 f 在安全方面,完整的SSL/

2021-09-27 17:18:41 184

原创 关于前端面试那些题

$HTML, HTTP,web综合问题1、前端需要注意哪些SEO合理的title、description、keywords:搜索对着三项的权重逐个减小,title值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title要有所不同;description把页面内容高度概括,长度合适,不可过分堆砌关键词,不同页面description有所不同;keywords列举出重要关键词即可语义化的HTML代码,符合W3C规范:语义化代码让搜索引擎容易理解网页重要内容HTML代码放在最前:搜索引

2021-09-26 19:56:43 74

原创 关于前端缓存的那些事儿

缓存,这是一个老生常谈的话题,也常被作为前端面试的一个知识点。本文,重点在与探讨在实际项目中,如何进行缓存的设置,并给出一个较为合理的方案。强缓存和协商缓存在介绍缓存的时候,我们习惯将缓存分为强缓存和协商缓存两种。两者的主要区别是使用本地缓存的时候,是否需要向服务器验证本地缓存是否依旧有效。顾名思义,协商缓存,就是需要和服务器进行协商,最终确定是否使用本地缓存。两种缓存方案的问题点强缓存我们知道,强缓存主要是通过http请求头中的Cache-Control和Expire两个字段控制。Expire

2021-09-26 19:43:17 164

原创 15个经典面试问题及回答思路,很多人死在了最后一个问题上

问题一:“请你自我介绍一下”思路:1、这是面试的必考题目。2、介绍内容要与个人简历相一致。3、表述方式上尽量口语化。4、要切中要害,不谈无关、无用的内容。5、条理要清晰,层次要分明。6、事先最好以文字的形式写好背熟。问题二:“谈谈你的家庭情况”思路:1、 况对于了解应聘者的性格、观念、心态等有一定的作用,这是招聘单位问该问题的主要原因。2、 简单地罗列家庭人口。3、 宜强调温馨和睦的家庭氛围。4、 宜强调父母对自己教育的重视。5、 宜强调各位家庭成员的良好状况。6、 宜强

2020-12-04 09:19:47 236

原创 技术面试之反向面试问什么?很多人都不知怎么问。

很多同学都曾经跟我反映过这样一个问题,当一场面试临近尾声,当面试官问:“我的问题都问完了,请问下你有什么问题要问我的么?”这样的问题该怎么回答?很多同学总觉得问薪资太俗,问一些细节的问题显得没重点,问公司的发展什么的又容易陷入空谈。尤其是万一问了什么不该问的问题,反而容易把一个本来还不错的面试搞砸了,因此十分纠结。关于这个问题,我的建议是,这个环节是面试中非常非常重要的一个环节,因为在一次典型的面试当中,大多数时间都是企业方发问,候选人作答,候选人鲜有能够主动发问的机会,也无从进行对企业的直接考察-即所谓

2020-12-04 09:16:03 338

原创 最全的BAT大厂面试题整理

临近年关,又到了面试求职高峰期,最近有很多网友都在求大厂面试题。正好我之前电脑里面有这方面的整理,于是就发上来分享给大家。这些题目是网友去百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。网上的都是按照公司划分的,想找具体某一方面的知识点有点不好找,我这里就根据知识点分门别类的整理了一下,想看哪一块可以快速找到,希望可以帮助大家,祝大家求职顺利。主要分为以下几部分:(1)java面试题 (2)Androi

2020-12-03 12:00:07 153

原创 微软将从12月开始暂停 Windows 10 更新!

Windows 10,在每一个版本更新后几乎都会附赠Bug大礼包。蓝屏死机、系统故障、数据文件丢失、驱动程序兼容性问题等等,几乎各种状况都在Win 10中上演过,因此又有Bug10之称。今年早些时候,微软发布了Windows 10 2020年5月更新(Win10版本 2004)。这一次的更新后,更是带来了无法联网、无法访问应用程序和软件等问题,令用户怨声载道。对于不幸碰上这些Bug的用户来说,如今最害怕的事情,大概就是每天电脑开机后,发现自己的系统自动完成了更新。因为你永远不知道它更新后会给你带

2020-12-03 09:35:09 262 1

原创 为什么程序员怕改需求?看完这些神解释我笑了

为什么程序员/设计师怕改需求?网上有类似的段子,比如:「杀一个程序员不需要用枪,改三次需求就可以了。」有网友在知乎上提问「如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?」。本文综合了 3 位网友的回复。猫爱吃鱼不吃耗子(@GRB130427A)的回复:你去饭店,坐下来。“服务员,给我来份宫保鸡丁!”“好嘞!”——————这叫原始需求大厨做到一半。“服务员,菜里不要放肉。”“不放肉怎么做啊?”“不放肉就行了,其它按正常程序做,不就行了,难吗?”“好的您稍等”——————中途需

2020-12-03 09:24:22 97

原创 Android开发面经总结

简历首先是简历,一般找一个模板,填写掌握的技能和项目经历即可。github上有一个不错的模板,详情可见:https://github.com/CyC2018/Markdown-Resume项目clone后,个性Resuem.md即可,然后导出为pdf文件。简历建议长度为2页,太长太短都不好。建议用掌握与熟练掌握取代了解与精通。刷题算法题可以说是现在找工作必刷的了。不过根据我面试的经验,算法题总得来说问的还是比较少,还有一些公司是基本不问算法的。当然如果碰到字节,快手这种每轮都问算法的公司,如

2020-12-02 17:26:38 233

原创 Android面试必备26题资源整合分类!!

Android面试必备26题资源整合分类,我们不创造大自然,我们是大自然的搬运工!1.Activity的启动过程(不要回答生命周期)http://blog.csdn.net/luoshengyang/article/details/6689748​2.Activity的启动模式以及使用场景(1)manifest设置,(2)startActivity flaghttp://blog.csdn.net/CodeEmperor/article/details/50481726栈(First In La

2020-12-02 11:43:51 167

原创 Activity的初级,中级,高级问法,你都掌握了吗?

Activity是我们常用App开发中最重要的组件,主要用于展示界面和用户交互。本文分为三个部分:Activity源码和常见的问题Activity的生命周期,正常情况和异常情况?Activity的四种启动模式,启动页设置singleTask/singleInstance可能造成什么后果?任务,任务栈,前台任务栈,后台任务栈,返回栈分别是什么?startActivityForResult导致的一系列问题?清除返回栈(Clearing the back stack)的一些概念allowTaskRe

2020-11-30 11:17:43 377

原创 面试官:为什么 Activity.finish() 之后 10s 才 onDestroy ?

没有及时回调的 onStop/onDestroy交流群里碰到一个很有意思的问题,调用 Activity.finish() 之后 10s 才回调 onDestroy() 。 由此产生了一些不可控问题,例如在 onDestroy() 中释放资源不及时,赋值状态异常等等。我之前倒没有遇到过类似的问题,但是 AOSP 总是我们最好的老师。从 Activity.finish() 开始撸了一遍流程,找到了问题的答案。在读源码之前,我们先来复现一下 10s onDestroy 的场景。写一个最简单的 FirstAct

2020-11-28 17:39:27 413

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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