首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
小鱼288
掘友等级
code man
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
12
文章 12
沸点 0
赞
12
返回
|
搜索文章
赞
文章( 12 )
沸点( 0 )
深入理解ThreadLocal
我们一般用ThreadLocal来提供线程局部变量。线程局部变量会在每个Thread内拥有一个副本,Thread只能访问自己的那个副本。文字解释总是晦涩的,我们来看个例子。 这个例子非常简单,就是创建了lucy和lily两个线程。在线程内部,调用threadLocal的set方…
Android编译期插桩,让程序自己写代码(一)
近些年,编译期插桩技术在Android圈越来越普遍。无论是可以生成JAVA源码的ButterKnief、Dagger,还是操作字节码的VirtualAPK,甚至是新兴的语言Kotlin都用到了编译期插桩技术。学习这门技术对我们理解这些框架的原理十分有帮助。另外,我们通过这种技术…
大前端开发人员必知必会的HTTP知识
计算机与网络设备进行通信,双方就必须基于相同的方法。比如,如何找到通信目标,采用哪种语言通信,如何结束通信等。这些都需要规则约束,我们把这种规则称之为协议。 有人认为TCP/IP是指TCP和IP协议。其实,这是片面的。在特定场景下TCP/IP的确指这两种协议。更多情况下,它指基…
Android编译期插桩,让程序自己写代码(二)
在上篇文章Android编译期插桩,让程序自己写代码(一)的前言部分我放了一张图,用来说明编译期插桩的位置和相应的技术。这里,我还打算这张图来开篇。 在上图中,我们可以清楚的看到AspectJ的插桩位置是.java与.class之间。这很容易使人联想到编译器。事实上,Aspec…
Android插件化开篇
我在很久之前就想写一系列关于插件化的博客,可是总被这样或那样的事情打断。上周终于下定决心去做这个事情。今天这篇文章是一个开篇,作用有两个:一是把吹的牛发布到网上,前面已经说过了;二是对插件化的知识做一个简单的介绍,顺便帮自己整理一下接下来的写作思路。 通常,我们的app只有一个…
Android插件化之ClassLoader
ClassLoader是由JVM平台提供的类加载器。它允许程序从网络、硬盘甚至是内存加载Class,这就为Android插件化提供了最基础的技术保障。Android平台对字节码文件作了优化,摒弃了传统JVM需要的.jar文件,而是采用体积更小的.dex文件。因此,Android…
Android插件化之启动Activity
在上一篇文章Android插件化之ClassLoader中,我们已经可以成功加载apk,但是还没有办法启动插件中的Activity。我们知道,如果要启动一个Activity,那么这个Activity必须在AndroidManifest.xml中注册。因此,如果我们要启动插件中的…
Android编译期插桩,让程序自己写代码(三)
Android编译期插桩,让程序自己写代码(一)中我介绍了APT技术。 Android编译期插桩,让程序自己写代码(二)中我介绍了AspectJ技术。 本文是这一系列的最后一篇,介绍如何使用Javassist在编译期生成字节码。老规矩,直接上图。 Javassist是一个能够非…
从Activity创建到View呈现中间发生了什么?
前段时间公司招人,作为面试官,我经常让面试者简述View的绘制流程。他们基本都能讲明白View的测量(measure)、布局(layout)、绘制(draw)等过程。还有少数人会提到DecorView和ViewRootImp的作用。但是,当我继续追问关于Window的内容时,几…
Android AOP概述
网上很多人在介绍AOP时都这样说:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。个人认为这句话是错误。AOP和OOP一样,是一种程序设计思想,而非技术手段。 程序设计有六大原则,其中第一原则就是单一职责原则。意思就是一个类只负责一件事情。这与OO…
下一页
关注了
1
关注者
1
收藏集
0
关注标签
9
加入于
2019-06-18