- 博客(7)
- 收藏
- 关注
原创 【Android 基础】Multi-Dex 原理(一) -- 背景和使用
前言: 区别于传统的JAVA程序,android程序的编译过程: Android Apk 默认的结构 一个简单的安卓程序,编译生成apk的时候,默认的apk结构是:|-- AndroidManifest.xml|-- assets/|-- res/|-- META-INF/|-- resources.arsc|-- classes.dex 原生的编译过程,只会生成一个dex文件,但是...
2020-07-17 16:08:00 1183
原创 【JAVA】生产者消费者模式
首先要思考一个问题:为什么要使用这种模式进行生产代码。优点:极大的解决了代码之间的耦合程度解释:之前我们写的代码可能是这样的,有A和B 两个功能代码处理数据,B代码的执行必须要依赖于A代码才能执行完B的功能,即A耦合于B。显然这严重影响B代码的生产,而且如果产生错误的话,也不容易及时的排查。采用生产者消费者模式,A代码将处理好的数据交给缓存区,B代码直接从缓存区拿取数据进行处理,这样就把A与B的依赖关系给简介的消除了。举个例子:1、有3个面包师傅,每个师傅每10秒钟生产一个面包2、并将面包放
2020-07-14 16:08:34 201
原创 【设计模式】设计模式简述
设计模式的六大原则开闭原则、里氏代换原则、依赖倒转原则、单一职责原则、接口隔离原则、迪米特法则开闭原则(Open Close Principle): 应该对于扩展是开放的,对修改是关闭的。在程序需要进行拓展的时候,不能去修改原有的代码,实现热插拔的效果。通常需要制定需要使用接口和抽象类。好处:为了使程序的扩展性好,易于维护和升级参考:https://www.cnblogs.com/az4215/p/11489712.html里氏代换原则(Liskov Substitution..
2020-07-14 16:06:17 171
原创 【Android 基础】Activity 生命周期实战
1、Activity 的生命周期onCreate:Activity 正在被创建,通常做一些初始化的操作,比如:调用 setContentView 去加载界面布局资源,初始化 Activity 的数据。 onStart:Activity 正在被启动,Activity 即将开始,这个时候Activity 已经可见,但是还没有出现在前台,无法和用户进行交互,这个时候 Activity 可以理解为已经显示了,但是我们还看不到,此时无法获取焦点。 onResume:Activity 已经前台可见,此时用户可以
2020-07-14 16:02:27 212
原创 【Android 基础】Gradlew dependencies 相关的命令介绍
apt、annotationProcessor annotationProcessor是APT工具中的一种,他是google开发的内置框架,不需要引入,可以直接在build.gradle文件中使用 android-apt是由一位开发者自己开发的apt框架,源代码托管在这里,随着Android Gradle 插件 2.2 版本的发布,Android Gradle 插件提供了名为 annotationProcessor 的功能来完全代替 android-apt 说明:只在编译的时候执...
2020-07-14 15:58:32 782
原创 【Java】HashSet 中 add 的方法
https://xiashengchao.iteye.com/blog/753409 HashSet中add的时候,会先比较hashcode是否相同,如果hashcode不同的话,直接写进去,如果相同的话会比较equals方法。 Why? 这是HASH冲突的一种处理链式的处理方法,即hashcode下会挂一条链表,这个链表里存hashcod...
2018-08-26 21:40:19 2103
原创 【Java】Scanner 和 PrintStream的区别
有个问题,既然已经有了输入输出流,为啥还要有Scanner这个类呢?以下是参考了一下资料和自己的一些不成熟的理解 Scanner:是一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器。比如遇到空格键,Tab键,Enter键。只要遇到其中之一,Scanner的方法就会返回下一个输入 。Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用...
2018-08-25 11:05:25 574
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人