程序员经常要面临的一个问题就是:如何提高程序性能? 这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术。 - I/O优化:零拷贝技术- I/O优化:多路复用技术- 线程池技术- 无锁编程技术- 进程间通信技术- RPC ...
分类:
其他好文 时间:
2021-07-27 17:35:42
阅读次数:
0
ThreadPoolExecutor添加线程源码解析——addWorker 该方法的主要目的就是为了向线程池中创建线程(worker),并执行线程。 private boolean addWorker(Runnable firstTask, boolean core) { retry: for (; ...
分类:
编程语言 时间:
2021-07-27 17:35:04
阅读次数:
0
一、前言 在 Android 自动化测试方面,Google 提供了一个基于 Java 开发的库 UiAutomator,基本上支持所有的 Android 事件操作,使用简单。 在此基础上,有大佬开发出了一个 Python 的第三方库 uiautomator,原理是在手机上运行了一个http rpc服 ...
分类:
其他好文 时间:
2021-07-26 16:46:31
阅读次数:
0
FutureTask(未来任务) 一、前情回顾(重要) 首先我们先回顾一下多线程创建的方式 直接继承Thread方式 实现Runnable 方式 实现Callable方式 线程池方式 这四种方式主要分为两类:没返回值的(1,2) 有返回值的(3,4) 没返回值的相信已经烂熟于心了。这次我们讲讲有返回 ...
分类:
其他好文 时间:
2021-07-26 16:46:03
阅读次数:
0
上篇文章介绍了应用程序内对用户操作响应的相关方法位置,简单的响应逻辑可以是从一个界面Activity跳转到另一个界面Activity,也可以是某些视图View的相对变化。然而不管是启动一个界面执行新界面Activity的生命周期方法,还是视图的相对变化,都需要一段时间,所以在响应的最终结果完成之前是 ...
分类:
移动开发 时间:
2021-07-26 16:34:04
阅读次数:
0
在上篇文章中已经了解到界面Activity的绘制完全依赖其加载的视图组件View,不仅如此,用户的每次触摸操作都可以在界面Activity内接收并响应,也可以直接传递给其中的某个视图View响应。本文将针对这两种用户交互方式分别展开介绍。 ##界面内交互 ####界面响应 说到界面交互,很容易想到用 ...
分类:
移动开发 时间:
2021-07-19 16:30:37
阅读次数:
0
线程池的作用 在多线程的应用中,线程的频繁创建和销毁会浪费时间,从而影响效率,所以引进线程池和概念,将多个线程维护在线程池中,避免了线程频繁创建与销毁的开销问题 线程池的结构 结构体 struct threadpool_t { pthread_mutex_t lock; //互斥锁 pthread_ ...
分类:
编程语言 时间:
2021-07-19 16:30:19
阅读次数:
0
什么是混合应用? 原生控件+html. ##一,识别HTML 识别被测元素为原生控件中的HTML内容 如何简单识别App中的页面为html页面? 方法一:开启手机中开发者选项-绘图-显示布局边界,有对应框住的内容为原生内容,H5相关内容不会被框. 方法二:通过定位工具可看到class=android ...
分类:
其他好文 时间:
2021-07-15 19:02:07
阅读次数:
0
Python支持多线程,但是由于GIL的限制并不能无限制的开启子线程。 通过semaphore我们可以控制子线程对于共享资源的访问,即可以阻塞一些子线程直到有空余的semaphore资源,但是并不能实际限制子线程数。 当我们需要开启成千上万个子线程时,很多时候并不希望这些子线程同时执行(可能受限于系 ...
分类:
编程语言 时间:
2021-07-15 19:01:30
阅读次数:
0
downloadmanager时Android系统下载器,使用系统下载器可以避免用stream流读入内存可能导致的内存溢出问题。以下为downloadmanager初始化部分。apkurl为下载网络路径。Environment.DIRECTORY_DOWNLOADS 为系统的下载路径。即下载至外部存 ...
分类:
移动开发 时间:
2021-07-15 18:57:23
阅读次数:
0