-
[综合] Android开发——Android多进程以及使用场景介绍
0.前言 在Android中,默认情况下,同一应用的所有组件均运行在同一进程中,且大多数应用都不会改变这一点。不过,单进程开发并不是Android应用的全部,今天我们就来说说Android中的多进程开发以及多进程的使用场景。 1.进程 我们都知道Android系统是基于Linux改造而来的,进程系...
25
热度 -
[综合] Android开发——Volley源码解析
0.前言 其实写这篇文章只为一个目的,虽然Volley用起来很爽,但是面试官问你人家内部是怎么实现呢,没看过源码的话,在面试官眼里你和一个拿着一本Volley使用手册的高中生没啥区别。还是那句话说得好,会用一回事,深入理解又是另一回事了。 1.Volley源码解析 1.1Volley入口 Voll...
56
热度 -
[综合] Android开发——BroadcastReceiver知识总结
0.前言 BroadcastReceiver作为Android四大组件之一,像一个全局的监听器一样,是用来监听系统或者应用发出的广播信息,再在其onReceive()中执行相应的逻辑处理。 如可以监听系统的开机广播、电量较少的广播,也可以用来实现自己应用中不同组件之间的通信,如数据库中CURD后发送...
46
热度 -
[综合] 算法相关——KMP算法最通俗易懂的解释
0.前言 一个字符串"BBCABCDABABCDABCDABDE"中是否包含另一个字符串"ABCDABD"?KMP就是最常用的字符串匹配算法之一。KMP有着优秀的时间复杂度O(m+n),网上有很多KMP算法的解释,但读起来都很费劲。直到读到JakeBoxer的文章,我才真正理解这种算法。下面我用自己...
96
热度 -
[综合] Java技术——同步锁的各种知识总结
1.线程同步的方法 1.1同步方法 就是使用synchronized关键字修饰的方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会...
53
热度 -
[综合] Android开发——ListView局部刷新的实现
0.前言 局部刷新,即只需要在数据发生变化时才去刷新ListView中对应的Item,数据未发生变化时不会去刷新ListView中对应的Item。对于getView()非常耗时的情况下将体现出极大的性能优化。局部刷新的功能早已经被集成在了RecycleView中,而且RecycleView还引入了增...
25
热度 -
[综合] Java技术——CopyOnWriteArrayList源码解析
0.前言 CopyOnWriteArrayList是一个线程安全,读操作时无锁,但是写操作有锁的ArrayList。是读写分离思想的体现。 实现原理是当某个线程要修改List中的元素时,会把列表中的元素Copy一份,然后在新数组中对元素进行修改,最后把新元素赋值给原来的List的。这样就可以实现读操...
75
热度 -
[综合] Android开发——收集应用Crash信息到服务器
0.前言 无论是多么完美的应用,总会有Crash的时候,那么收集应用的Crash信息到服务器对开发人员修补BUG来说尤为重要。 本文原创,转载请注明出处为SEU_Calvin的博客。 1.实现原理 我们可以自定义我们的CrashHandler类,并实现UncaughtExceptionHandle...
87
热度 -
[综合] Android开发——View的生命周期总结
0.前言 今天看到一个概念是View的生命周期,有点懵逼,听说过Activity的生命周期,Fragment的生命周期,对View的生命周期好像没什么概念啊。难道layout、draw这些也算是生命周期的方法吗?因此查阅、整理了一些资料,有了此文。 1.View生命周期相关方法 View的生命周期...
53
热度 -
[综合] Android开发——今日头条APK瘦身之路
随着版本迭代,功能增加安装包体积也会慢慢增大。 今日头条576版本APK达到了25M,通过一系列的优化,到目前的607版本为12M。本文主要是介绍头条APK瘦身中用到的一些方法。 APK分析 既然是要优化APK的大小,那首先就得看下APK文件的构成。 AndroidStudio在2.2版本添加APK...
51
热度 -
[综合] Android开发——Protocol Buffer效率之高的原理介绍
0.前言 最近的项目里有用到ProtocolBuffer,ProtocolBuffer是Google公司开发的一种数据描述语言,类似于XML,是一种结构化数据的数据存储格式,可用于数据传输量较大的即时网络通信IM等场景。之所以使用它,是因为PB将信息序列化为二进制的格式,体积缩小了3倍,序列化速度比...
95
热度 -
[综合] Android开发——ListView的复用机制源码解析
0.前言 前段时间找工作,看了很多人的面经,不得不说找个工作很麻烦。尤其是Android,岗位的数量比不上前端后Java后台也就算了,问的东西又多又杂,这里就不多列举了,其中有一个印象比较深的问题是关于ListView复用机制的。复用机制谁都会用,但是却不一定能真正讲清楚。因此才有了此文。 1.L...
48
热度 -
[综合] Android开发——Android7.0的适配注意点小结
首先大致说一下Android7.0特性改动的地方: (1)应用间共享文件限制; (2)对部分广播的后台限制、网络数据节省开关等; (3)多窗口的支持; (4)通知栏支持直接回复消息等。 针对Android7.0的适配总结如下: 1.应用间共享文件限制 1.1问题描述 在Android7.0系统上,...
19
热度 -
[综合] Android开发——Crash捕获SDK是如何捕获Application中onCreate的崩溃信息的
1.前言 众所周知,很多第三方SDK是在Application中的onCreate()中去初始化的,形如: @Override publicvoidonCreate(){super.onCreate();//...ThirdPartySDK.init(this); } 那么为什么一些crash捕获S...
64
热度 -
97
热度 -
[综合] DC-电路的设计目标和约束
首先明白DC综合的几个步骤: 电路的逻辑综合由三步组成 综合=转化+优化+逻辑映射 转化:将电路转化成gtech的功能网表 优化:根据时序和面积,功耗约束对电路进行优化 逻辑映射:将工艺库的逻辑单元映射成门级网表 小知识: 同步电路:从同一时钟源出来的时钟clk_1和clk_2驱动逻辑电路,是同步...
86
热度 -
22
热度 -
23
热度 -
67
热度 -
[综合] verdi实用小技巧
verdi改变信号和波形颜色 1.按C或者T修改信号或波形颜色 mark标记功能 2.为方便波形定位,shift+M标记一下 ntrace 快捷键:l,lastview 3.状态机标注 tools->buscontention,会弹出一个状态机相关的新窗口,直接把它关掉。波形上就可以显示出状态...
11
热度