- 博客(38)
- 收藏
- 关注
原创 五大IO模型
阻塞IO 一个IO一个进程(线程),消耗资源,适用于并发量小的场景,请求IO要阻塞在那里,不占用cpu资源,缺点:不适用并发量大的应用:因为一个请求IO会阻塞进程,所以得为每个请求进程分配一个处理进程(线程)以及时响应,系统开销大。非阻塞IO 请求IO不阻塞,它处于忙轮循状态,消耗CPU资源IO复用 select、poll、epoll三种方案,只有一个被注册的进程,在它里面没有注册的进程在IO时被阻塞,select和poll是O(n)的时间复杂度且当注册的IO进程有数据时就线性查,epoll
2020-12-13 20:08:08
219
原创 系统调用流程
总体流程:kill() -> kill.S -> swi陷入内核态 -> 从sys_call_table查看到sys_kill -> ret_fast_syscall -> 回到用户态执行kill()下一行代码。详细过程概述用户程序在用户空间通过软中断swi指令切入内核台,执行vector_swi处指令——这个指令产生软件中断,vector_swi指令在文件/kenel/arch/arm/kernel/entry-common.S中定义。跟异常处理程序一样,首先保护现场(
2020-09-15 17:34:17
611
原创 Android 5.X新特性详解
Android 5.X UI设计初步Android 5.X新增特性分析一:5.X UI设计初步新特性材料的形态模拟更加真实的动画大色块的使用二:Material Design主题Material Design现在有三种默认的主题可以设置@android:style/Theme.Material(dark version)@android:style/Theme.Mate...
2019-10-28 10:36:15
511
原创 Android系统信息与安全机制
查看Android系统信息的软硬件信息学习内容Android系统信息的获取PackageManager的使用ActivityManager的使用Android安全机制由于Android手机的可开发性,市场上“拼配置”也成了手机厂商重要宣传点。要获取系统的配置信息,通常从以下两个方面获取android.os.BuildSystemProperty9.1.1andr...
2019-10-25 12:50:07
538
原创 Activity与Activity调用栈分析
Activity是整个Android App直接与用户交互的核心组件,了解Activity的工作模式,生命周期,管理模式,是了解整个Android系统的基础。这里将向大家介绍Android中Activity与Activity任务栈相关内容。学习将了解到以下内容Activity的生命周期与工作模式Activity调用栈管理...
2019-10-23 21:26:48
247
原创 Android使用drawBitmapMesh方法实现旗帜飞扬,舞动的图片效果
Android使用drawBitmapMesh方法实现旗帜飞扬,舞动的图片效果
2019-10-19 15:17:47
406
原创 Android中drawable转换为bitmap
drawable转bitmap,bitmap转drawable。bitmap转byte[],byte[]转bitmap
2019-10-18 12:03:44
1419
原创 Android Scroll分析
学习本章将会了解的内容发生滑动效果的原因如何处理,实现滑动效果5.1滑动效果是如何产生的Android坐标系getRawX(),getRawY()方法所获得的坐标是Android坐标系中的坐标视图坐标系原点不再是Android坐标系中的屏幕最左上角,而是以父视图左上角为坐标原点getX(),getY()所获得的坐标就是视图坐标系中的坐标触摸事件-------Mot...
2019-10-15 17:36:32
246
原创 Android控件架构与自定义控件详解
内容概要Android控件架构View的测量与绘制ViewGroup的测量与绘制自定义控件的三种方式事件的拦截机制3.1Android控件架构每个Activity都包含一个window对象,在Android中Window对象通常由PhoneWindow来实现。PhoneWindow将一个DecorView设置为整个应用窗口的根View。DecorView作为窗口界面的顶层视图,...
2019-10-12 10:25:37
397
原创 平衡二叉树(AVL树)
平衡二叉树平衡二叉树(Balanced Binary Tree)又称平衡二叉搜索树首先引入一个变量,叫做平衡因子(r),节点X的r就表示x的左子树的深度-右子树的深度。然后我们要保证一棵树平衡,就是要保证左右子树的深度差小于等于1.所以r的取值能且仅能取0,-1,1.平衡二叉树它或者是一棵空二叉树树,或者是具有下列性质的二叉树:其根的左右子树高度之差的绝对值不能超过1;其根的左右子树都...
2019-09-29 16:13:58
964
原创 二叉排序树
二叉排序树二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。定义二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有节点的值均小于它的根节点的值;(2)若右子树不空,则右子树上所有节点的值均大于它的根节点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的节点。二...
2019-09-29 11:26:06
339
原创 数据结构基础部分
数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号总称。(计算机程序加工的原料)数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。数据对象:是性质相同的数据元素的集和,是数据的一个子集。数据结构:是相互之间存在一种或多种特定关系的数据元素的集和(一种简单解释)。数据之间的相互关系称为结构根据数据元素之间关系的不同特性,通常有...
2019-09-28 19:57:14
794
原创 二进制位运算:与或异或左移右移
异或运算可以理解为,两个数相同为0,不同为1。负数以正数的补码表示二进制中负数的计算原码:一个整数按照绝对值的大小转化成二进制的数反码:将二进制数按位取反补码:反码加 1求负数的二进制数以-14 举例原码:14 即 00000000 00000000 00000000 00001110反码: 11111111 11111111 11111111 11110001补码: 111...
2019-09-27 16:41:36
907
原创 Android体系与系统架构
主要内容Google生态系统Android系统架构Android源代码与系统目录结构1.1Google生态系统Android底层通过最快的C语言保证效率,上层使用Java简单,快速进行开发,开放的系统让各个Android社区,开发者论坛空前火爆,甚至是可以进行无限可能的系统定制化。 Android在Google的支持下发展很快。1.2Android系统架构1.2.1Linu...
2019-09-25 14:49:56
143
原创 深入理解Java虚拟机之线程安全与锁优化
1.概述并发正确性与高效性2.线程安全定义:当多个线程访问一个对象时,如果不考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。这个定义比较严谨,它要求线程安全的代码都具备一个特征:代码本身封装了所有必要的正确性保障手段(如互斥同步等),令调用者无需关心多线程的问题,更无需...
2019-09-24 19:55:08
390
原创 深入理解Java虚拟机之Java内存模型与线程
1概述介绍虚拟机如何实现多线程,多线程之间由于共享和竞争数据而导致的一系列问题及解决方案。2硬件的效率与一致性由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读...
2019-09-23 17:25:23
191
原创 深入理解Java虚拟机之虚拟机字节码执行引擎
1.概述“虚拟机是相对于“”物理机”的一个概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器,硬件,指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。虚拟机的执行引擎:输入字节码,处理是字节码解析的等效过程,输出的是执行结果。2.运行时栈帧结构在编译程序代码的时候...
2019-09-18 19:26:11
227
转载 Android 布局优化 Merge的使用
一、Merge的作用The tag helps eliminate redundant view groups in your view hierarchy when including one layout within another.大意是,merge标签是用来帮助在视图树中减少重复布局的,当一个layout包含另外一个layout时。二、示例不使用mergelayout1.xm...
2019-09-04 15:59:29
230
原创 Android如何一个model调用另一个model
最初我的目录有两个model,且两个model都可以独立运行。在app model调用minesdk里面的代码需要做的事-首先将mine model里面的gradle文件 apply plugin: 'com.android.application'注释掉改为 apply plugin: 'com.android.library'再将applicationId "com.swpu...
2019-06-16 16:11:14
3206
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人