摘要:
基本语法 使用技巧 take是从集合中取前几个元素 takeLast是从集合中取后几个元素 sortedBy 排序 过滤list,符合过滤条件的就是过滤结果 filterNot把符合条件的过滤掉,剩下的是结果。这个操作和 filter 相反 slice,取集合中的某一部分 扩展函数(类似于工具类) 阅读全文
摘要:
图片加载框架比较 共同优点 1. 都对多级缓存、线程池、缓存算法做了处理 2. 自适应程度高,根据系统性能初始化缓存配置、系统信息变更后动态调整策略。比如根据 CPU 核数确定最大并发数,根据可用内存确定内存缓存大小,网络状态变化时调整最大并发数等。 3. 支持多种数据源支持多种数据源,网络、本地、 阅读全文
摘要:
进程间通信(ipc) IPC的主要目的是调用其他进程的函数 使用多进程显而易见的好处就是分担主进程的内存压力。我们的应用越做越大,内存越来越多,将一些独立的组件放到不同的进程,它就不占用主进程的内存空间了。当然还有其他好处,有些应用后台是有多个进程的,启动一个不可见的轻量级私有进程,在后台收发消息, 阅读全文
摘要:
代理 通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,扩展目标对象的功能。 代理对象拦截真实对象的方法调用,在真实对象调用前/后实现自己的逻辑调用 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法。 动态代理的用 阅读全文
摘要:
几乎所有的 OOM 错误都是因为宿主应用出了问题,而不是 Glide 本身。 应用里两种常见的 OOM 错误分别是: 过大的内存分配 (Excessively large allocations) 内存泄露(Memory leaks, 被分配的内存没有被释放) 引入largeHeap属性,让系统为A 阅读全文
摘要:
目录基础概念状态转换Wait线程池线程池的参数Java 自己的线程池代码优化方案Callable、FutureTask生产者消费者死锁 基础概念 进程和线程的区别?多线程有什么好处? 进程是操作系统资源分配的最小单位,线程是进程的一个实体,是cpu调度和分配的基本单元,同一个进程的线程共享内存空间, 阅读全文
摘要:
开发tip 用getApplication()来取Context当参数 对于需要使用Context对象作为参数的函数,要使用getApplication()获取Context对象当参数,而不要使用this,除非你需要特定的组件实例!getApplication()返回的Context是属于Appli 阅读全文
摘要:
Gradle 是什么 是构建工具,不是语言它用了 Groovy 这个语言,创造了一种 DSL,但它本身不是语⾔ Gradle常用命令 ./gradlew build --stacktrace > logs.txt 2>logErrors.txt 输出错误日志 gradlew assembleDebu 阅读全文
摘要:
用Python如何写一个接口呢,首先得要有数据,可以用我们在网站上爬的数据,在上一篇文章中写了如何用Python爬虫,有兴趣的可以看看: https://www.cnblogs.com/sixrain/p/9120529.html 大量的数据保存到数据库比较方便。我用的pymsql,pymsql是P 阅读全文
摘要:
最近学完Python,写了几个爬虫练练手,网上的教程有很多,但是有的已经不能爬了,主要是网站经常改,可是爬虫还是有通用的思路的,即下载数据、解析数据、保存数据。下面一一来讲。 1.下载数据 首先打开要爬的网站,分析URL,每打开一个网页看URL有什么变化,有可能带上上个网页的某个数据,例如xxID之 阅读全文