Android学习笔记三
来源:互联网 发布:itools for mac录屏 编辑:程序博客网 时间:2024/05/18 00:05
大神博客(必看)http://blog.csdn.net/huachao1001/article/list/1
1、Android校招笔记
http://huachao1001.github.io/index.html?c=2
2、Android 使用 Socket 对大文件进行加密传输
http://www.codeceo.com/article/android-socket-encrypted-transmission.html
RandomAccessFile
只有RandomAccessFile才有seek搜寻方法,而这个方法也只适用于文件。
http://blog.csdn.net/akon_vm/article/details/7429245
3、【Android开发VR实战】二.播放360°全景视频
http://blog.csdn.net/linglongxin24/article/details/53924006
4、《云阅》一个仿网易云音乐UI,使用Gank.Io及豆瓣Api开发的开源项目
http://www.jianshu.com/p/69a229fb6e1d
https://github.com/youlookwhat
5、扫码下载app怎么做
https://www.zhihu.com/question/28001228
启动tomcat服务器,将apk文件放到目录下,得到可访问的地址,在草料二维码在线生成器中生成。
6、二维码容错率
容错率也叫纠错率,就是指二维码可以被遮挡后仍能被正常扫描,而这个能被遮挡的最大面积就是容错率。
基本概念:最常见的QR二维码,用的是里德-所罗门码(RS)来做纠错。分有几级,纠错级别越高,整体需要携带的信息越多:L级可纠正约7%错误、M级别可纠正约15%错误、Q级别可纠正约25%错误、H级别可纠正约30%错误。RS码原理比较复杂,整体基于“任意k个确定点可表示一个阶数至少为k-1的多项式”,实际上发送超过k个点,就算中间有一些错误,也能通过数学原理反推出最初的多项式,从而获得信息。并不是所有位置都可以缺损,像最明显的那三个角上的方框,直接影响初始定位。中间零散的部分是内容编码,可以容忍缺损。
由于调整纠错率的时候,二维码的图案分布也要重新调整,所以每次调整纠错率,二维码的图案都会发生变化。
http://cli.im/news/21072
矢量图形与分辨率无关,可以将它缩放到任意大小和以任意分辨率在输出设备上打印出来,都不会影响清晰度,而位图是由一个一个像素点产生,当放大图像时,像素点也放大了,但每个像素点表示的颜色是单一的,所以在位图放大后就会出现咱们平时所见到的马赛克状。
7、Android SDK开发
http://blog.csdn.net/gaiyindexingqiu/article/details/54602990
8、跨平台APP的ionic开发
http://coding.imooc.com/wap/classindex?cid=51
http://blog.csdn.net/gaiyindexingqiu/article/details/71079173
9、React Native开发App
http://coding.imooc.com/wap/classindex?cid=69
10、HTML5/CSS3联系表单 提交按钮有发光动画
http://www.html5tricks.com/html5-css3-flat-form.html
11、巧用第三方快速开发Android App
http://coding.imooc.com/wap/classindex?cid=81
12、Android API 指南
https://zhuanlan.zhihu.com/p/25068519
13、Android自定义控件之自定义组合控件
http://www.cnblogs.com/whoislcj/p/5714760.html
14、5个最佳的Android测试框架(2看)
http://www.codeceo.com/article/5-android-test-framework.html
15、安卓源码服务专家,有上百个apk 源码(3看)
http://www.javaapk.com/
16、xUtils 中的HttpUtils全面注释
http://yangguangfu.iteye.com/blog/2213020
17、Java与JS互调并传递参数
http://blog.csdn.net/wangtingshuai/article/details/8631835
点击webview中的图片进行放大显示
http://blog.csdn.net/wangtingshuai/article/details/8635787
18、Integer.toBinaryString(n).toCharArray();
将一个无符号数转化成二进制表示并将其存入字符数组中。
19、对Map、Queue、Stack的遍历
http://lavasoft.blog.51cto.com/62575/181781/
java.util.Iterator
1. public interface Iterator {
2. boolean hasNext();
3. Object next();
4. void remove();
5. }
http://blog.csdn.net/chenssy/article/details/37521461
20、《android软件安全与逆向分析》(7看)
http://vdisk.weibo.com/s/ulQg_Ma4K_F0D
21、Android Framework(4看)
http://www.cnblogs.com/xueshui20/p/4244641.html
http://blog.csdn.net/rain_butterfly/article/details/48756797
http://blog.csdn.net/column/details/android-framework.html
22、android apk文件生成机制(5看)
android Apk打包过程概述_android是如何打包apk的
http://blog.csdn.net/jason0539/article/details/44917745
Android应用程序(APK)的编译打包过程
http://www.cnblogs.com/sjm19910902/p/6416022.html
Android应用程序资源的编译和打包过程分析
http://shyluo.blog.51cto.com/5725845/1229261/
如何分析Android程序之破解第一个程序
https://my.oschina.net/fhd/blog/364956
Android APK反编译
https://www.nowcoder.com/discuss/19462
23、dalvik字节码
Dalvik和Java字节码的对比
http://www.importnew.com/596.html
APK、Dalvik字节码和smali文件
http://www.cnblogs.com/ablansetaimeng/p/4386826.html
24、Android平台性能分析工具(7看)
Android性能分析工具整理汇总
https://sanwen8.cn/p/12btbtN.html
Android系统性能调优工具介绍
http://blog.csdn.net/innost/article/details/9008691/
http://www.cnblogs.com/myzh/archive/2013/03/17/2965225.html
Android App优化之性能分析工具
http://www.jianshu.com/p/da2a4bfcba68
TraceView http://blog.jobbole.com/78995/
25、view,SurfaceView,GLSurfaceView的关系和区别
https://zhidao.baidu.com/question/553301393879682692.html
http://blog.csdn.net/qq_28058443/article/details/51997144
http://blog.csdn.net/pointerfree/article/details/6770806
SurfaceView是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快。更适合2D游戏的开发。 GLSurfaceView是SurfaceView的子类,openGL专用。专用于3D游戏开发的视图。
一般2D游戏开发使用SurfaceView足够,因为它也是google专们扩展用于2D游戏开发的画布。GLSurfaceView(Android中3D游戏专用画布)的效率高于SurfaceView的30倍;GLSurfaceView的效率主要是因为机器硬件的GPU加速,弊端在于适配能力差。
RemoteView是用来描述一个垮进程显示的view,会用在两个地方:一个是在AppWidget,另外一个是在Notification.
SurfaceManager 显示系统管理库,负责把2D或3D内容显示到屏幕;
SurFace Manager:显示子系统的管理器
LibWebCore:web浏览器引擎,支持android浏览器
SGL:skia图形库,底层的2D图形引擎
3D 库:OpenGL
FreeType:字体显示
26、当你的程序中某一个Activity A在运行时,主动或被动地运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。B完成以后又会来找A,这个时候就有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被收回的就直接执行onResume(),跳过onCreate()了。
27、ContentResolver和 ContentProvider是一对。一个运行在提供数据端(provider),一个运行在调用端(resolver)。使用的时候利用resolver来调用,方法有query,insert,update,delete等。
28、Android 运行时由两部分组成: Android 核心库集和 Dalvik 虚拟机。其中核心库集提供了 Java 语言核心库所能使用的绝大部分功能,而虚拟机则负责运行 Android 应用程序。
每个 Android 应用程序都运行在单独的 Dalvik 虚拟机内(即每个 Android 应用程序对用一条 Dalvik 进程), Dalvik 专门针对同时高效地运行多个虚拟机进行优化,因此 Android 系统以方便的实现对应用程序进行隔离。
29、1.Handler 必须在 Looper.prepare()之后才能创建使用(UI线程中Looper默认创建) 2.Looper与当前线程关联,并且管理着一个MessageQueue 3.Message是实现Parcelable接口的类4.以一个线程为基准,他们的数量级关系是:Handler(N) : Looper(1) : MessageQueue(1) : Thread(1)
30、UI线程阻塞时间超过5s会ANR,广播阻塞时间超过10s会ANR(应用程序无响应)。在Activity中,Main线程消息队列中的消息在5秒内没有得到响应。在BroadcastReceiver中,onReceive()方法执行时间超过10秒。在Service中,onStartCommand()方法执行超过20秒。
31、在Android中使用IBinder进行IPC通讯时,能够传递哪些数据?
Parcelable、Serializable、Bundle。
32、将一个Activity设置成窗口的样式,只需设置Theme。
在安卓应用程序开发中,可以通过getMetrics获得屏幕的属性,从而取得屏幕的宽度和高度。
33、子类A继承父类B, A a = new A();则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块 执行的先后顺序是:父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数
34、Android中的34个常用adb shell命令
https://www.nowcoder.com/discuss/21205
Linux用户分为:拥有者、组群(Group)、其他(other)。
Linux文件权限一共10位长度,分成四段。分别为文件类型、文件所有者的权限( rwx 是指拥有者具有可读可写可执行的权限)、文件所有者所在组的权限、其他用户的权限。
35、HashMap和ConcurrentHashMap的区别,HashMap的底层源码
http://www.bubuko.com/infodetail-1161252.html
36、怎么保证Service不被杀死?(Service保活)
提高service优先级,并未能提供成功的解决方案,可以提高service的生命周期。但并不能彻底解决被第三方杀死的问题。http://blog.csdn.net/mad1989/article/details/22492519
http://blog.csdn.net/jiangwei0910410003/article/details/42177117
双进程守护http://blog.csdn.net/boyupeng/article/details/46974855
http://blog.csdn.net/ztemt_sw2/article/details/27101681
37、Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。
38、Asset目录与res目录的区别
http://blog.csdn.net/chun0801/article/details/51961274
39、十六进制转十进制
Integer.parseInt(String s, int radix); //目的是输出一个十进制数。其中radix是进制,可以是2(二进制),10(十进制),16(十六进制)等。
比如:Integer.parseInt(s, 16);将十六进制的字符串s转换成十进制。
http://blog.csdn.net/lvxiangan/article/details/50433035
16进制转二进制
http://blog.csdn.net/evangel_z/article/details/7527983
十进制转成十六进制 Integer.toHexString(int i)
十进制转成八进制 Integer.toOctalString(int i)
十进制转成二进制 Integer.toBinaryString(int i)
十六进制转成十进制 Integer.valueOf("FFFF",16).toString()
八进制转成十进制 Integer.valueOf("876",8).toString()
二进制转十进制 Integer.valueOf("0101",2).toString()
https://zhidao.baidu.com/question/13800579.html
39、Android开发之网络通讯详解
http://blog.csdn.net/dmk877/article/details/50893635
http与socket的区别:
HTTP:超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。HTTP协议详细规定了浏览器与服务器之间相互通信的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式并且是短连接,并且是无状态的协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。
Socket:Socket不属于协议范畴,而是一个调用接口(API),Sock et是对TCP/IP协议的封装,通过调用Socket,才能使用TCP/IP协议。Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端。
http://blog.csdn.net/zeng622peng/article/details/5546384
40、程序员必备基础知识:通信协议——Http、TCP、UDP
http://www.cnblogs.com/xhwy/archive/2012/03/03/2378293.html
41、Android面试总结一
http://www.imooc.com/article/11965
42、Spring和SpringMVC
http://www.imooc.com/article/1309
http://www.imooc.com/article/1392
43、Java反射
http://www.imooc.com/article/1518
44、数据库中求和用累加sum(),求行的个数用累计count()。
45、Java把内存分成两种,一种叫做栈内存,一种叫做堆内存。
所有类的实例和数组都是在堆上分配内存的。 数组是一种对象。对象存储在堆区。对象所占的堆内存是由自动内存管理系统回收。堆内存由存活和死亡的对象,空闲碎片区组成。对象存储在堆内存,引用变量存储在栈内存。栈内存指向堆内存。
46、异常的继承结构:基类为Throwable。
Error 和 Exception继承Throwable。RuntimeException和IOException等继承Exception。
非 RuntimeException 一般是外部错误(不考虑Error的情况下),其必须被try{}catch语句块所捕获。
Error 类体系描述了 Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉。
非运行时异常 总是在我们写的时候就会出错提醒我们try catch 或throw
但是运行时异常检查不出来,只有运行时才会出错,所以也不需try catch
47、系统类加载器(system class loader):它根据Java应用的类路径(CLASSPATH)来加载Java类。
扩展类加载器(extensions class loader):它用来加载Java的扩展库。
引导类加载器(bootstrap class loader):它用来加载Java的核心库,是用原生代码来实现的。
tomcat 为每个 App 创建一个 Loader,里面保存着此WebApp的ClassLoader。需要加载WebApp下的类时,就取出ClassLoader来使用。
48、getMeasuredWidth()和 getWidth()的区别
View的大小以width和height显示出来,事实上一个view拥有两对height和width值。
第一对被叫做measured width和measured height。第二对被简单地称为width和height。
1、getMeasuredWidth方法获得的值在measure方法运行后就会确定。而getWidth方法的值是在layout方法运行后确定的。因此一般情况下在onLayout方法中使用getMeasuredWidth方法,而在除onLayout方法之外的地方用getWidth方法。
2、getMeasuredWidth它们定义了一个view在它的parent中显示为多大,获得 实际的尺寸。getWidth在绘制时间以及布局之后定义view在屏幕上的实际尺寸。 这些值可能不必与measured height 和measured width不同。
49、java中Scanner类nextLine()和next()的区别和使用方法
next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。
int num = sc.nextInt()仅仅是把第一行的整数值读取了,在管道缓存中,还有换行符(enter),当在下面的nextLine()首先是读取第一行的换行符前面的数据,就是null。
http://blog.csdn.net/zhiyuan_ma/article/details/51592730
50、通过JNI实现守护进程http://blog.csdn.net/yyh352091626/article/details/50542554
51、通过应用锁的实现原理,来进行账号的盗取
http://blog.csdn.net/jiangwei0910410003/article/details/42149975
52、面试题汇总(一)
http://blog.csdn.net/xiaole0313/article/details/62056612
53、Zygote启动过程
http://huachao1001.github.io/article.html?T3kWfUUW
54、HandlerThread
HandlerThread本质上就是一个普通Thread,只不过内部建立了Looper. Handler机制的分发中心就在Looper中的loop(),HandlerThread将loop转到子线程中处理,降低了主线程的压力,使主界面更流畅。
http://www.tuicool.com/articles/nai2Un
http://www.cnblogs.com/zhaoyanjun/p/6062880.html
55、AIDL
aidl是 Android Interface definition language的缩写,是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口。aidl可以定义并实现进程通信。ADIL就是两个不同的程序之间的一个桥梁,两个不同的程序通过绑定AIDL可以互相通讯。
A程序定义一个AIDL文件,eclipse会自动编译生成class文件,然后在A程序的service里面实现AIDL接口,并且实现AIDL的方法,方法就是你要做什么的,比如打电话的….然后在B项目里面绑定A项目的service,然后就可以调用A项目service里面的方法了。其实就是不同进程之间的方法调用。注意A,B个项目存放AIDL的包名一定要相同
定义为启动在新进程中,只需要在AndroidMainfest.xml中声明是加上一个process属性即可,不过这里有两个地方值得注意:
1.组件默认的进程名就是包名;
2.定义新的进程名的时候需要以包的形式(eg: com.xu.aidl)。
http://blog.csdn.net/u011974987/article/details/51243539
http://blog.csdn.net/u011747761/article/details/47609479
http://blog.csdn.net/shareus/article/details/52156414
AIDL和Binder的异同:
1.他们都与IPC(远程)调用有关。
2.本质不同,Binder是一个对象,继承了IBinder对象,你可以借助它来自定义RPC协议。AIDL是android提供的接口定义语言,借助这个工具,你可以很轻松地实现IPC通信机制,根据需要灵活定义接口,
3.作用范围不同。如果是在一个应用里实现远程调用,使用Binder即可,没必要使用AIDL。如果涉及到在多个应用程序之间使用IPC通信,并且在服务又有多线程业务处理,这时可以使用AIDL。
http://blog.csdn.net/sunny_girl_11/article/details/49885111
56、进程状态变化
57、 RecyclerView 和 ListView的区别
http://www.360doc.com/content/16/0808/14/9200790_581676933.shtml
58、LruCache类
LruCache是android提供的一个缓存工具类,可用来缓存图片,其算法是LRU(Least Recently Used,最近最少使用算法)。它把最近使用的对象用“强引用”存储在LinkedHashMap中,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除,有效的避免了OOM的出现。
LinkedHashMap继承于HashMap,它使用了一个双向链表来存储Map中的Entry顺序关系,这种顺序有两种,一种是LRU顺序,一种是插入顺序,这可以由其构造函数public LinkedHashMap(int initialCapacity,float loadFactor, boolean accessOrder)指定。LruCache中将LinkedHashMap的顺序设置为LRU顺序来实现LRU缓存,每次调用get(也就是从内存缓存中取图片),则将该对象移到链表的尾端。调用put插入新的对象也是存储在链表尾端,这样当内存缓存达到设定的最大值时,将链表头部的对象(近期最少用到的)移除。
除了LRU算法,另外还有两种常见的Cache算法:FIFO(First in First out,先进先出)、LFU(Least Frequently Used最近最少使用算法)。FIFO算法比如作业调度(先来先服务)。LFU和LRU算法的不同之处,LRU的淘汰规则是基于访问时间,而LFU是基于访问次数的。
http://www.cnblogs.com/tianzhijiexian/p/4248677.html
http://www.cnblogs.com/dolphin0520/p/3749259.html
59、【android】数据库升级完整解决方案
保证用户正常升级的情况下原来的数据不会丢失。
http://blog.csdn.net/u011494050/article/details/38778119
60、 Android屏幕适配经验谈
http://blog.csdn.net/xiebudong/article/details/37040263/
dpi: dot per inch,每英寸的点数。
px: 像素。一块显示屏是由很多的光点组成的,每一个光点就是一个像素。
屏幕密度: 每inch(英寸)的像素数,1inch = 2.54cm
ppi:和屏幕密度一个意思,全称是pixel per inch. 是专业一点的叫法.
Android系统寻找图片的步骤是这样的:
1, 去屏幕密度对应的目录去找。如果找到就拿来用。
2, 如果没找到,就去比这个密度高一级的目录里面去找,如果找到就拿来用。
3, 如果没找到就继续往上找。以此类推。
4, 如果到了xxhdpi目录还没有找到的话,就会去比自身屏幕密度低一级的目录去找,如果低一级的目录>=hdpi,找到了就拿来用。
5, 如果没找到, 就去mdpi目录去找, 如果找到了,就拿来用。
6, 如果没找到,就去默认的drawble目录里去找, 如果找到了就拿来用。
7 ,如果没找到,再去最低的ldpi目录里去找。如果找到了,就拿来用。
8, 如果没找到, 那就是没找到了, 图片无法显示。(不过一般不会出现这种现象,因为如果每个目录都没有这个图片的话,你是编译不过的)
61、Java集合类源码分析汇总
http://www.cnblogs.com/hzmark/archive/2013/01/05/JavaCollectionSum.html
62、内部类
内部类有两种情况:
(1) 在类中定义一个类(私有内部类,静态内部类)
(2) 在方法中定义一个类(局部内部类,匿名内部类)
http://www.cnblogs.com/jiangao/archive/2012/02/23/2364119.html
http://www.cnblogs.com/yaoyinglong/p/Java%E5%86%85%E9%83%A8%E7%B1%BB-%E8%AF%AD%E6%B3%95%E7%AF%87.html
63、单例模式
http://blog.csdn.net/beyond0525/article/details/22794221
http://blog.csdn.net/u012416928/article/details/43149343
64、Intent的Falg
http://blog.csdn.net/javensun/article/details/8700265
http://blog.csdn.net/miao309410364/article/details/47262869
65、二叉树的深度遍历和广度遍历
深度遍历用栈stack实现,广度遍历用队列Queue实现。
红黑树是一种自平衡二叉查找树。红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于红黑树增加了以下五个性质:
性质1. 节点是红色或黑色。
性质2. 根节点是黑色。
性质3 每个叶节点(NIL节点,空节点)是黑色的。
性质4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。
66、推送
67、MVC模式
68、android 常见面试题以及答案
http://blog.csdn.net/gaiyindexingqiu/article/details/70173017(必看)
http://blog.csdn.net/bobo1808/article/details/6783344
http://blog.csdn.net/bobo1808/article/details/7207617
一条最长的短信息约占多少byte?
中文70(包括标点),英文160个字节
69、Android进程的内存管理分析
http://blog.csdn.net/gemmem/article/details/8920039
Android内存泄漏分析及调试
http://blog.csdn.net/gemmem/article/details/13017999
70、在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可。这是在Web开发中一个必不可少的交互性组件,而在Android中的对应实现就是Spinner。
Spinner.getItemAtPosition(Spinner.getSelectedItemPosition());获取下拉列表框的值。
http://www.cnblogs.com/tinyphp/p/3858920.html
71、Android中如何取得联系人,如何得到一个联系人下面的多个号码
http://blog.csdn.net/wonderful19891024/article/details/6048839
72、Math.random() 产生一个[0,1)之间的双精度浮点数的随机数。
比如产生一个1-100之间的随机数:int x=1+(int)(Math.random()*100)
(int)为直接舍掉小数,要四舍五入的话转换前先加上0.5
比如 int i ; double j = 4.7; i=(int) j=4; i = (int)(j+0.5)=5;
产生10个不重复int型随机数
HashSet<Integer> set=new HashSet<Integer>();
while(true){
set.add(new Random().nextInt());
if(set.size()==10) { break; }
}
Iterator<Integer> it = set.iterator();
while (it.hasNext()) {
int i = it.next();
System.out.println(i);
}
73、synchronized实现原理
synchronized 与 lock区别
74、热修复
热修复说白了就是”打补丁”,比如你们公司上线一个app,用户反应有重大bug,需要紧急修复。如果按照通 常做法,那就是程序猿加班搞定bug,然后测试,重新打包并发布。这样带来的问题就是成本高,效率低。于是,热 修复就应运而生.一般通过事先设定的接口从网上下载无Bug的代码来替换有Bug的代码。这样就省事多了,用 户体验也好。
http://blog.csdn.net/yangxi_pekin/article/details/54929740
http://www.tuicool.com/articles/aINbyyr
http://blog.csdn.net/lmj623565791/article/details/49883661/
75、插件化开发
动态加载技术可以让应用程序实现插件化、插拔式结构,对后期维护有益。
动态加载技术就是使用类加载器加载相应的apk、dex、jar(必须含有dex文件),再通过反射获得该apk、dex、jar内部的资源(class、图片、color等等)进而供宿主app使用。
使用动态加载技术时,一般需要用到这两个类加载器:
PathClassLoader - 只能加载已经安装的apk,即/data/app目录下的apk。
DexClassLoader - 能加载手机中未安装的apk、jar、dex,只要能在找到对应的路径。
插件化技术主要解决两个问题:1、代码加载 2、资源加载
代码加载 类的加载可以使用Java的ClassLoader机制,还需要组件生命周期管理。资源加载 用AssetManager的隐藏方法addAssetPath。
Android插件化原理解析——Hook机制之动态代理,使用代理机制进行API Hook进而达到方法增强。
插件化开发是插件与宿主app进行解耦了,即使在没有插件情况下,也不会对宿主app有任何影响,而有的话就供用户选择性使用了。
http://blog.csdn.net/u010687392/article/details/47121729?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
https://github.com/GeniusVJR/LearningNotes/blob/master/Part1/Android/%E6%8F%92%E4%BB%B6%E5%8C%96%E6%8A%80%E6%9C%AF%E5%AD%A6%E4%B9%A0.md
76、OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。
五层协议(5层):物理层、数据链路层、网络层、运输层、 应用层。
每一层的协议如下:
物理层:RJ45、CLOCK、IEEE802.3(中继器,集线器)
数据链路:PPP、FR、HDLC、VLAN、MAC(网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
每一层的作用如下:
物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
数据链路层:将比特组装成帧和点到点的传递(帧Frame)
网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
会话层:建立、管理和终止会话(会话协议数据单元SPDU)
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
应用层:允许访问OSI环境的手段(应用协议数据单元APDU)
76、在浏览器中输入www.baidu.com后执行的全部过程
1、客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。
2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
3、客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
4、客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。
77、SSH MVC开发模式
Struts属于控制层C,负责流程控制,即对模型层M和视图层V的连接。Spring负责业务流转,即中间跑腿的,控制整个框架的管理。Hibernate属于模型层,进行数据库操作的封装。
Struts 主要控制逻辑关系的处理。
Spring 是一个轻量级的控制反转 (IoC)和面向切面(AOP)的容器框架。
Hibernate 是数据持久化层 ,是一种新的对象、关系的映射工具,提供了从Java类到数据表的映射,也提供了数据查询和恢复等机制。
79、final可用于声明属性、方法和类,分别表示属性不可变,方法不可重写,类不可继承。当然final修饰的方法是可以被重载的。
80、一文读懂Hadoop、HBase、Hive、Spark分布式系统架构
http://www.codeceo.com/article/understand-hadoop-hbase-hive-spark-distributed-system-architecture.html#0-qzone-1-37536-d020d2d2a4e8d1a374a433f596ad1440
Hadoop = HDFS + YARN + MapReduce
HDFS负责存储,已然成为业内的分布式存储的标配,算是行业标准了。
YARN负责资源调度,依然发挥重要作用,不可获取的重要组件之一,Spark也可以跑在它上面,相比Mesos(C++),YARN是Hadoop自带的,用起来比较方便。
MapReduce计算框架,在Spark面前已失去性能及速度优势,基本面临淘汰。
Spark可以取代Hadoop MapReduce的计算框架。
81、尚硅谷《SSM整合视频》最新发布!
Spring+SpringMVC+MyBatis+Maven+jQuery+Ajax+Bootstrap+PageHelper
http://mp.weixin.qq.com/s?__biz=MjM5NzQyMjIwMg==&mid=2685946707&idx=1&sn=aff4689e14ee3ef8a41807712cf1fa08&chksm=8336de46b4415750e05beb276a42a3af9faa7a521fb22ea1ff5980e1b565b8f19b57f757412e&mpshare=1&scene=23&srcid=04271If0zaNkrxdnPPMiKAws#rd
http://blog.csdn.net/gaiyindexingqiu/article/details/53363226
http://www.2cto.com/kf/201606/518341.html
SSM和SSH的对比http://blog.csdn.net/peak_and_valley/article/details/52925032后台搭建
http://blog.csdn.net/u013142781/article/details/50380920
http://blog.csdn.net/allinornothing/article/details/46505245
http://download.csdn.net/detail/frank_20080215/9430168
82、前端框架-bootstrap快速搭建简洁美观的界面。http://v3.bootcss.com/css/
http://blog.csdn.net/codebycoder/article/details/51001256
83、React Native
http://blog.csdn.net/gaiyindexingqiu/article/details/71079173
http://reactnative.cn/docs/0.30/tutorial.html#content
84、JavaScript
http://lib.csdn.net/article/18/45164?knId=512
http://lib.csdn.net/base/javascript
85、WebStorm和Nodejs开发环境的设置
WebStorm是一个JavaScript开发IDE的,并且支持流行的Node.js以及JQuery等js框架。
而Node.js简单说就是一个JS类库并且配备有Google的V8 js引擎来解析和执行js脚本。
WebStorm+Node.js可以方便地用来开发基于Node.js平台的应用。WebStorm对js的支持是灰常强大的,有智能提示、断点调试、查看源码等等功能。
http://jingyan.baidu.com/article/adc8151381c2e8f723bf7327.html
http://blog.csdn.net/itpinpai/article/details/50809068
86、Android实战Jsoup实现网络爬虫,糗事百科项目的起步
http://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650822053&idx=1&sn=3600e1e040be990976fb7139a2d31151&chksm=80b7813bb7c0082d0b551b9633adce1748a575ce4bf0e64a5317af4aed7b455ae8780aee508a&mpshare=1&scene=23&srcid=0502D0k33qWZcbqvc3760WDq#rd
87、2017腾讯实习生Android客户端开发面试总结
http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650239337&idx=1&sn=a04ca1781fdde7d06865ce4cfbc84d2d&chksm=88638006bf1409101cdd431629eed0830009195acd5b31c456ca1f71cd6097b0124a28d2c732&mpshare=1&scene=23&srcid=0502h2AgB9ncoH5NkeS9jIdN#rd
88、如何用一周时间开发一款Android APP并在Google Play上线
http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650238755&idx=1&sn=b4f3b351a3c8f440b538db58e67fb46d&chksm=88639e4cbf14175af6f4c27549951d718938e7f874215e765a480a1b89a0dafc6dc47bdb3954&mpshare=1&scene=23&srcid=0502Nxb4H3rNMgp77EsFdDN5#rd
89、Java中的ClassLoader详解
http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650238826&idx=1&sn=294d91d9a190ea56822696994f8a04b0&chksm=88639e05bf1417137f364037bb35a8fcc120679c92b924cfabffa7011199d8ac8bba69a25194&mpshare=1&scene=23&srcid=0502n7hUoU3xKeh1f7ugbGGI#rd
90、高性能服务器程序框架
http://blog.csdn.net/Dextrad_ihacker/article/details/5194035290
91、慕课网要接着看的课程
http://www.imooc.com/learn/479
http://www.imooc.com/learn/587
http://www.imooc.com/learn/632
http://www.imooc.com/learn/824
http://www.imooc.com/learn/821
92、Android连接热点的Socket文件传输
http://blog.csdn.net/myatlantis/article/details/68067742
在当前网络通信中(TCP/IP也不例外)有三种通信模式:单播、广播、组播(又叫多播, 个人感觉叫多播描述的有点不恰当),其中多播出现的时间最晚,但同时具备单播和广播的优点,最具有发展前景。
http://blog.csdn.net/dabing69221/article/details/17286441
93、android上的音视频处理架构
http://blog.csdn.net/xuesen_lin/article/details/8796492
http://blog.csdn.net/yangwen123/article/details/39502689
94、【Java免费好课推荐】
http://weibo.com/3306361973/F3JDVlkev?type=comment#_rnd1495159177412
【Java开源开发框架Spring】
http://weibo.com/3306361973/F3Adnglj8?type=comment#_rnd1495159144615
- Android学习笔记三
- Android学习笔记三
- Android 学习笔记(三)
- Android学习笔记(三)
- Android学习笔记<三>
- Android学习笔记三
- Android IMF 学习笔记三
- Android学习笔记(三)
- Android学习笔记(三)
- android学习笔记(三)
- Android学习笔记(三)
- android学习笔记(三)
- android系统学习笔记三
- android学习笔记(三)--布局
- Android学习笔记の三
- Android学习笔记(三)
- Android 学习笔记三:Activity
- Android学习笔记(三)
- js,清除浏览器缓存的几种方法
- telnet使用方法
- bootstrap-select 使用总结
- Xamarin XAML语言教程隐藏文件使用Progress属性设置进度条
- 怎样才能让英语课程能够在微信上预约?
- Android学习笔记三
- 解决监听label时,点击label内input执行两次的bug
- DOOM Dev:未来,异步计算将更广泛地用于idTech 6; 更多的开发者会利用它
- innodb的锁
- for循环与mysql的分页查询
- 文章标题
- wkhtmltopdf 中文参数详解
- ajax 文件上传
- Shell Programming(一)——重定向与管道