作者:guoxiaoxing 链接: https://github.com/guoxiaoxing/android-interview 本文基于作者采用的MIT协议分发。 手画一下Android系统架构图,描述一下各个层次的作用? Android系统架构图 从上到下依次分为六层: 应用框架层 进程通 ...
分类:
移动开发 时间:
2018-05-14 13:48:34
阅读次数:
263
本文转载自:http://blog.chinaunix.net/uid-26859697-id-5573776.html kmalloc()是基于slab/slob/slub分配分配算法上实现的,不少地方将其作为slab/slob/slub分配算法的入口,实际上是略有区别的。 现在分析一下其实现: ...
分类:
系统相关 时间:
2018-05-11 10:44:23
阅读次数:
277
引子 二:第一种情况的切换。在任务一遇到io情况下,切到任务二去执行,这样就可以利用任务一阻塞的时间完成任务二的计算,效率的提升就在于此。 yield并不能实现遇到io切换 对于单线程下,我们不可避免程序中出现io操作,但如果我们能在自己的程序中(即用户程序级别,而非操作系统级别)控制单线程下的多个 ...
分类:
其他好文 时间:
2018-05-09 10:51:54
阅读次数:
163
IO操作用多线程操作,而CPU密集型操作因为有全局解释器锁GIL,所以只使用一个线程,现在下载多线程,转换一个线程,典型的供销模式关系。下载线程完成后通知转换线程进行转换。 线程间通讯本例中采用队列的方式。 from collections import deque 中的deque是双端循环队列,采 ...
分类:
编程语言 时间:
2018-05-08 17:38:22
阅读次数:
228
python多线程使用场景:IO操作,不适合CPU密集操作型任务 1、多个线程内存共享 2、线程同时修改同一份数据需要加锁,mutex互斥锁 3、递归锁:多把锁,锁中有锁 4、python多线程,同一时间只有颗CPU在执行。 启动线程: 1 import threading 2 def run(na ...
分类:
编程语言 时间:
2018-05-07 13:28:12
阅读次数:
108
Ⅰ、InnoDB发展史 |时间|事件|备注| |: :|: :|: :| |1995|由Heikki Tuuri创建Innobase Oy公司,开发InnoDB存储引擎|Innobase开始做的是数据库,希望卖掉该公司| |1996|MySQL 1.0 发布|| |2000|MySQL3.23版本发 ...
分类:
数据库 时间:
2018-05-05 01:03:24
阅读次数:
637
其实输入与输出对于不管什么系统的设计都是异常重要的,比如设计 C 接口函数,首先要设计好输入参数、输出参数和返回值,接下来才能开始设计具体的实现过程。C 语言标准库提供的接口功能很有限,不像 Python 库。不过想把它用好也不容易,本文总结 C 标准库基础 IO 的常见操作和一些特别需要注意的问题 ...
分类:
其他好文 时间:
2018-05-04 23:27:59
阅读次数:
237
恢复内容开始 1.同步锁(掌握) 2.死锁,递归锁(掌握) 3同步对象,信号量(了解) 4 队列(重点) 生产者,消费者模型的创建 5 进程(重点) 并发&并行 并发:是指系统具有处理多个任务(动作)的能力 并行:是指系统具有 同时 处理多个任务(动作)的能力 并行是并发的一个子集 同步 与 异步 ...
分类:
其他好文 时间:
2018-05-04 15:32:32
阅读次数:
168
请求描述: `阻塞/非阻塞` 和 `同步/异步` 不是一个概念。举几个简单的例子。 当进程调用一个进行IO操作的API时(比如read函数),在数据没有到达前,read 会挂起,进程会卡住。在数据读取完毕返回给进程时, read 返回(返回值为读取到的字节数,数据从内核拷贝到用户空间),然后进程继续 ...
分类:
其他好文 时间:
2018-05-01 12:39:52
阅读次数:
201
1 网络编程API (1)网络层的ip地址可以唯一标识网络中的主机,传输层通过协议+端口唯一标识主机中的应用程序。这样以来使用三元组(地址,协议,端口)标识网络的进程。 (2)socket >插槽(低俗的哈哈哈哈),看作文件描述符,Linux基本哲学一切皆文件,那么是不是也可以读写关闭这样的习惯性操 ...
分类:
系统相关 时间:
2018-04-26 21:44:25
阅读次数:
255