- 博客(138)
- 资源 (31)
- 问答 (3)
- 收藏
- 关注
原创 了解下,这几个字节码编程入门案例
了解下,这几个字节码编程入门案例在 AOP 利器 ASM 基础入门 博文中,介绍了 ASM 的基础知识和整体 API 结构,让我们对 ASM 有一个初步的认识。本篇博文将介绍三个案例来加深对 ASM 接口的理解。删除日志:删除项目中的所有 Log 输出添加日志:给项目添加 Log 日志输出添加 try...catch 异常捕捉:给项目的所有方法添加异常步骤文中的案例皆是以 Android 项目为基础,所以先介绍一些基本概念。1. 基本概念1.1 Transform APIAn
2020-12-15 22:34:22
596
原创 AOP 利器 ASM 基础入门
1. ASM 介绍ASM 是一个 Java 字节码操作框架,它能用来动态生成类或者增强既有类的功能。ASM 可以直接生成二进制 class 文件,也可以在类被加载到 Java 虚拟机之前动态改变类行为。ASM 框架中提供了常见的字节码分析和生成工具,可以快速进行类的生成或分析转换。在 Android 开发中, Android Gradle 1.5 版本后提供的 Transform 机制, 它允许第三方的 Plugin 插件在 .class 文件打包成 dex 之前进行动态修改,这就为动态修改字节码文件提
2020-12-13 14:19:01
1472
翻译 Kotlin: 发布 Release 包前优化 Java 字节码
原文作者 : Kirill Rozov 原文链接 : Kotlin: cleaning Java bytecode before release 译者 : 邓士伟 校对者: 邓士伟 状态 : 完成Kotlin 中删除了大量需要我们手写或者由 IDE 、第三方框架生成的模板代码。最好的例子就是 Kotlin 是空安全的,由于这个特性,我们不需要写空判断语句 if(value != null...
2020-01-14 11:37:20
704
翻译 成为一名码农前,你应该知道的 10 件事
原文作者 : Bryn Bennett 原文链接 : 10 Things I Wish I’d Known Before I Started Coding 译者 : 邓士伟 校对者: 邓士伟 状态 : 完成我知道在软件开发过程中,我不是唯一一个不知道如何开始而耽误软件开发周期的人。软件开发过程中过多的资源提供了很多机会,但是也增加了第一步的选择难度。这里,对于那些想迈开第一步或正在迈...
2020-01-08 22:56:53
584
原创 「读」社交的本质
前段时间阅读了「社交的本质:扎克伯格的商业秘密」一书,作者是 Facebook 的创业元老、Facebook CEO 马克·扎克伯格的姐姐兰迪·扎克伯格。本书在豆瓣上评分并不高(5.2 分)。说句实话,阅读时我也是强忍着读完,如评论所说,该书的内容就是兰迪的事业之路回忆录。确实,书中基本都是围绕着发生在兰迪的事业中的大事件来讲述, 比如第一章中讲述了为奥巴马竞选一事,作者作为刚初出...
2019-06-17 21:08:37
538
原创 Android D8 编译器 和 R8 工具
Android 安装包的后缀都是 .apk, APK 是 Android Package 的缩写。在 APK 打包编译的过程中,会涉及到 javac 工具将 .java 文件编译为 .class 文件,然后 .class 文件经过脱糖由 dex 工具打包为 .dex 文件。javac:用于将 .java 文件编译为 .class 文件;desugar:用于将 Java 8 中的特性在 An...
2019-05-12 16:13:34
8517
3
原创 Git 基础
1. Git 中的基本概念1.1 仓库仓库又称为版本库,英语名称 repository。说得通俗一点就是需要用 Git 进行管理的文件夹。这个仓库中存放了我们的代码、文件,我们可以通过 Git 对这些代码进行管理。1.2 工作区和暂存区工作区:我们在工作区中进行代码的编辑,工作区就是我们正在操作的文件夹。暂存区:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本...
2019-05-08 20:24:04
214
原创 「读」结构思考力
最近读了两本书 「关键提问」和「结构思考力」。「关键提问」的核心是发现问题的关键,而「结构思考力」是针对“解决问题”的一套逻辑思考体系。无论在工作还是生活中,往往发现核心问题的能力远胜于解决问题,没有正确提出问题,也无法指望得到正确答案。1. 关键提问、提问关键「关键提问」一书中的五个观点来自于哈佛大学 2016 年的毕业致辞。不管是在学校还是在职场,我们花了太多的时间和精力寻找答案。答案...
2019-05-03 00:46:15
888
原创 「读」穷爸爸富爸爸
「富爸爸穷爸爸」是一本介绍投资知识、强调财商智慧的大众通俗读物。该书可以说是无出其右的财商启蒙书,几年前就听别人推荐过这本书,但是直到近日才抽时间把该书翻阅一遍,书中的很多观念对于没有理财基础的人有很好的启发作用,观念让人眼前一亮,颇有醍醐灌顶之感。对于这本书只能感叹一句:读晚了。清崎有两个爸爸:“穷爸爸”是他的亲生父亲,一个高学历的教育官员;“富爸爸”是他好朋友的父亲,一个高中没毕业却善于投...
2019-04-13 15:46:19
615
原创 「读」奈飞文化手册
《奈飞文化手册》公司全员都在读的一本书,几乎每个小组都有一本,周末借来花了一些时间通读完毕,昨日又拜读了小陆同事的读后感。 全书共有 8 章内容,通读全书,这本书更适合管理层去阅读,对普通的职员来说也有一定启发作用。不在其位不谋其...
2019-04-03 12:52:21
2803
原创 「看」大秦帝国
前段时间受到 CEO 文章的影响《秦孝公与商鞅的组织建设》,最近也把电视剧「大秦帝国」看了一遍,这部电视剧非常精彩,主要讲述了秦孝公和商鞅推行变法强秦的史事。在历史课中我们知道商鞅最后死于车裂之刑,但是对事情的缘由不是很清楚,对...
2019-04-03 12:46:50
480
原创 「读」从 0 到 1:开启商业与未来的秘密
这本书是同事推荐阅读的一本书,作者是蒂尔·马斯特斯,该书是作者作为一名知名投资人结合自身的发展为未来的企业家和普通人揭示初创企业的一些核心要点以及具备创新精神的重要性。 这是一本干货满满的书,整书的逻辑清晰、论据充足,没有过度的废话,作者...
2019-04-03 12:42:57
373
原创 2019 扬帆起航
2018 年没实现的愿望,2019 接着干,不要怂,就是干!!其实公众号自去年换工作后就很少更新了,主要是自己思想上的转变,发现微信公众号这个平台不适合分享技术,首先是代码排版不好,技术性的文章一般都是会有相关的代码进行演示,而微信公众号的文章主要阅读的平台是移动端手机,不适合展示代码,所以效果不好。其次,公众号平台作为媒介比较适合新闻类文章的传播,短小阅读快,不是很适合阅读烧脑的技术文章,所...
2019-01-20 00:07:34
411
原创 Android Gradle 基础入门
由于现在 CSDN 私自会把上传的资源更改基本,所以本文的 PDF 文档托管在 Github 上,地址: https://github.com/dengshiwei/work-summary/blob/master/work-blog/pdf/Android Gradle基础入门.pdf在 Android Studio 构建的项目中,基于 Gradle 进行项目的构建,同时使用 Androi...
2018-10-25 21:11:22
734
原创 Java8 特性——增强集合处理 Stream 操作
Stream 作为 Java8 中的一大亮点,专注于对集合(Collection)进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,...
2018-10-19 15:32:34
701
原创 Java 8 ——Lambda 基本使用
1. Lambda 的前世今生在 Java 近年来的版本更新中,重大的版本更新莫过于 Java 5,在 Java 5 的更新中引入了“泛型”、“注解”、“枚举”和“自动拆装箱”等,本次在 Java 8 中引入 Lambda 的操作堪比 Java 5 的版本更新,Lambda 表达式用于替代函数式接口(比如 Runnbale),用于简化程序的复杂性。同时在 Java 8 的版本中通过 Lambd...
2018-10-19 15:30:58
1500
原创 Java 8 特性——interface 中的 static 方法和 default 方法
在 Java8 中引入 lambda 的概念,针对集合提供新的访问方式 Steam,所以在不针对 JDK 过往版本的大改情况下,支持向下兼容,针对接口的特性进行修改。在 JDK1.8 之前,Java 中针对接口的特性有:接口中可以包含变量和方法。接口中的变量被默认指定为 public static final 类型,常见的就是在接口中定义一些常量值,接口中的方法则默认是 public abs...
2018-10-19 15:28:20
2167
原创 2018 Google IO大会来了
2018 Google IO大会于今日凌晨落下帷幕,全程观看下来,有点失落,没有特别多的亮点。核心的主题还是AI、机器学习、无人驾驶等方面。有兴趣的同学可以通过下面的地址观看直播录像:2018 Google IO直播录像地址:http://live.sina.com.cn/zt/app_zt/l/v/tech/io18/?page=2本次大会的关键要点如下:Go
2018-05-09 15:55:45
3929
原创 设计模式——装饰器模式
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰器模式(Decorator Pattern)的核心作用就是动态地给一个对象添加一些额外的职责功能。适用于透明且动态扩展类功能时。这点注意跟适配器模式的区别:适配器模式主要是为了接口的转换,而装饰者模式关注的是通过组合来动态的为被装饰者注入新的功能或行为(即所谓的责任)。
2018-01-25 12:25:39
440
原创 设计模式——适配器模式
适配器模式,即通俗理解,适配无法直接使用的接口以便可以利用。适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的组成角色目标角色(Target):适配所期待的得到的接口,目标角色可以是类或接口。这里,我更倾向于是接口,因为我理解目标角色更倾向于一种接口规范。源角色(Adaptee):需要适配的接口或类
2018-01-25 12:24:02
328
原创 设计模式——策略模式
策略模式是使用面向对象的继承和多态思想,将同一接口的不同算法实现封装在不同的类中,从而使他们相互替换,达到客户端环境不受算法变动的影响,降低耦合。策略模式(StrategyPattern)也成政策模式,通过定义抽象类或基类的策略,来生成不同实现的算法家族,以便各个具体策略类(ConcreteStrategy)能够进行替换,降低耦合。策略类的组成角色:环境类(Context):持
2018-01-25 12:22:25
327
原创 设计模式——单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。单例模式在实际的开发过程中,使用最常见。针对频繁使用的类,我们可以将它定义为一个单例来避免类对象频繁的创建销毁,提高效率。单例模式有以下特点:单例类只能有一个实例单例类必须自己创建自己的唯一实例单例类给其它对象提供这一实例单例模式
2018-01-22 16:27:40
285
原创 设计模式——单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。单例模式在实际的开发过程中,使用最常见。针对频繁使用的类,我们可以将它定义为一个单例来避免类对象频繁的创建销毁,提高效率。单例模式有以下特点:单例类只能有一个实例单例类必须自己创建自己的唯一实例单例类给其它对象提供这一实例单例模式
2018-01-19 23:58:43
361
原创 设计模式——工厂模式
工厂模式核心是封装对象的创建接口,将new对象的操作封装起来,方便创建使用、管理对象。工厂模式的分类简单工厂模式(Simple Factory)工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)工厂模式适用于:在编码时不能预见需要创建哪种类的实例。系统不应依赖于产品类实例如何被创建、组合和表达的细节简单工厂模式简单工
2018-01-19 23:56:57
340
原创 Thread的wait方法理解
wait方法是Object对象的方法。线程与锁是分不开的,线程的同步、等待、唤醒都与对象锁是密不可分的。wait方法会将当前线程放入wait set,等待被唤醒,并放弃lock对象上的所有同步声明,当前线程会因为线程调度的原因处于休眠状态而不可用。只有通过以下四个方法可以主动唤醒: 1. notify 2. notifyAll 3. Thread.interrupt() 4. 等待时间过完...
2017-11-08 23:07:50
6153
1
原创 Android监听键盘事件
et_search.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == Edito...
2017-10-25 10:02:15
1524
原创 组内知识培训
1. Android程序是如何一步一步,运行在linux的内核系统上面。 2. Android HAL层开发过程,和为何在 4.0之后,系统架构上面会增加一个HAL层 3. 开机之后,Android系统是如何一步一步的启动的。 4. Android 的音频处理从FrameWork到底层是怎样 5. Android jni编程从入门到会用 6. Android 源码学习,如何开展,能学习...
2017-10-23 21:31:12
312
原创 正则表达式替换汉字和数字
替换所有汉字public static void main(String[] args) { String str = "温度调整到1000度1"; String reg = "[\u4e00-\u9fa5]"; Pattern pat = Pattern.compile(reg); Matcher mat=pat.matcher(str); Syste...
2017-10-20 18:35:34
4744
原创 浅谈Android系统中drawable的使用
在Android系统中有很多有drawable相关的概念。比如BitmapDrawable、LayerDrawable、ScaleDrawable等。同时android系统中同样存在drawable-hdip、drawable-ldip等。在Android Studio中同样也存在mipmap-hdpi、mipmap-mdpi等。一、Android中的单位inchinc
2017-08-02 20:32:03
852
原创 Android视图绘制View相关概念基本总结
一、Android系统中View视图坐标系作者向你抛出一张图:注:图片出处作者刘望舒二、View中的scrollTo和scrollBy首先我们看下scrollTo方法设置view的滑动距离,来看看的源码:/** * The offset, in pixels, by which the content of this view is scrolle
2017-07-27 22:50:48
842
1
原创 Java泛型
所有反射的操作都是在运行时的,既然为true,就证明了编译之后,程序会采取去泛型化的措施,也就是说Java中的泛型,只在编译阶段有效。在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。也就是说,成功编译过后的class文件中是不包含任何泛型信息的。泛型信息不会进入到运行时阶段。...
2017-07-19 20:46:52
159
原创 Android自定义Toast视图和动画
在Android Toast基础与原理中,我们对Toast的源码进行了分析。我们也对Toast的实现原理有了一定的了解。接下来我们将编写一个工具类,来完成Toast的自定义视图和动画。一、实现原理分析通过上篇文章,我们知道Toast是通过内部类TN(一个ITransientNotification对象)进行实现。通过与INotificationManager进行管理。在源码中,我们
2017-07-16 17:46:49
5316
3
原创 Android Toast基础与原理
一、Toast的使用方式Toast.makeText(context,text,duration)public Toast(Context context)在Android系统中,给我们提供了两种方式来创建一个Toast对象。第一种是通过makeText方法快速构建Toast对象。第二种是通过Toast的构造方法进行创造一个空的(不含View)的Toast对象。注意,通过构造方法创
2017-07-08 10:58:25
2569
原创 ListView嵌套RadioButton导致的多选
1、首先ListView获取点击事件需要设置RadioButton的焦点android:focusable=”false” 2、通过一个List集合管理所有的RadioButton,然后在点击事件中,清空所有的状态。private List<RadioButton> raList;raList = new ArrayList<RadioButton>();listVi...
2017-07-06 17:18:09
624
原创 Android AlertDialog嵌套listview点击无响应
下午做了一个AlertDialog嵌套listview点击无响应,但是点击listview没有响应。后面才发现是listView中的item把焦点抢去了,设置android:focusable=false即可解决。
2017-07-06 17:02:42
1147
原创 Android绘制验证码
在前面仿华为加载动画、仿网易音乐听歌识曲-麦克风动画中,我们通过绘图的基础知识完成了简单的绘制。在本例中,我们将绘制常见的验证码。一、效果图二、知识点与思路分析通过上面的效果图观察,我们可以看到里面有绘制的随机线条,随机绘制的验证码。绘制线条,直线或曲线绘制文本,生成的验证码文本的绘制绘制圆点。三、代码编写/** * Created b
2017-07-03 23:09:40
642
原创 仿网易音乐听歌识曲-麦克风动画
仿网易音乐听歌识曲-麦克风动画最近准备做一个关于麦克风的类库,平时听歌也基本用网易音乐,发现了这个效果挺不错的,所以实现收集起来。一、效果图二、实现思路分析透明度变换的体现;半径不断扩散;多个圆形的实现;实现思路: 主要在于如何能够把不同的圆环跟对应的透明度进行对应上。实现上用两个List进行实现。三、代码编写/** * Cre
2017-06-25 23:10:21
2170
1
原创 Android绘图基础——仿华为加载动画
仿华为加载动画一直觉得华为的加载小动画挺好的,既然前面把Path的相关知识复习了一下。那我们就做这个当做我们绘图基础的一个小练习。一、练习点path的基础使用画笔的基础使用pathMeasure的基础使用ValueAnimator的基础使用Interpolator插值器的使用二、思路我们前面可以看到,这个华为的加载圆圈的速度是先快后慢。所以此处我们使用I
2017-06-24 10:08:47
1762
DownService
2016-04-18
ViewIndicator
2015-12-22
TextView动画
2015-12-20
apktool+dex2jar+jd-gui.rar
2015-12-16
EventBus实例
2015-12-15
androidnetdemo
2015-10-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人