自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 收藏
  • 关注

原创 Android源码学习 -- launcher 3 拖动大略流程之终章

前面的不用看了,就看下面几张图就可以知道大概的流程了引用图片落下时的动画在DragLayout 的animateView方法中: 箭头方向要反着看根据 onDriverDragEnd()方法追溯 :onDriverDragEnd() 等方法 与 Workspace的onDrop()方法之间的流程:上面都是拖拽的流程,如果仅仅是长按不动呢 ?...

2019-11-18 16:29:48 66

转载 Android源码学习 --SystemUI 4 StatusBar与StatusIcon

上文说到:StatusBar , CollapsedStatusBarFragment(status_bar),现在说到 StatusIcon块,主要负责的是系统状态的显示,比如蓝牙、闹铃、定位、省流量开关等。这些Icon,都是系统预定好了是哪些。并在一个配置文件定义了slot,或者说是标签。如果你想加一个新类型图标,首先要修改的是这个文件中的config_statusBarIcons数组。...

2019-11-04 17:35:05 102

原创 Android源码学习 --SystemUI 3 SystemBars 与 StatusBar

根据上上一篇文章,我这里知道,SystemServer会通过 SystemUIService,SystemUIApplication类来 通过反射的方式将继承了SystemUI的各个子服务类实例化 , 其中我们可以看到: <item>com.android.systemui.SystemBars</item>这就是我们今天的主角了。SystemBars 里面的代码并...

2019-11-04 17:03:35 153

转载 Android源码学习 --SystemUI 2 SystemUI的介绍(转)

转01 什么是SystemUI?作为Android系统核心应用,SystemUI负责反馈系统及应用状态并与用户保持大量的交互。耳熟能详的三栏:StatusBar(状态栏)、NavigationBar(导航栏)与Notification Panel(通知栏),以及Recents(近期任务界面),使用起来方便又快捷。另外Keyguard(锁屏界面)也是属于SystemUI的一部分。并且在Andr...

2019-11-04 11:30:25 79

原创 Android源码学习 --SystemUI 1 SystemServer和SystemUI的启动流程

系统服务:SystemServer.java public static void main(String[] args) { new SystemServer().run(); } private void run(){ try{ //省略 // Create the system service manager. ...

2019-11-04 09:38:03 161

Android源码学习----状态栏(1)SignalClusterView

// Intimately tied to the design of res/layout/signal_cluster_view.xmlpublic class SignalClusterView extends LinearLayout implements NetworkControllerImpl.SignalCallback, SecurityController....

2019-11-01 16:06:35 197

原创 Python 异步

from multiprocessing import Poolimport timeimport os def test():    print("---进程池中的进程---pid=%d,ppid=%d--"%(os.getpid(),os.getppid()))    for i in range(3):        print("----%d---"%i) ...

2018-11-22 15:25:09 339

原创 Python之 ThreadLocal

在多线程环境下,每个线程都有⾃⼰的数据。⼀个线程使⽤⾃⼰的局部变量 ⽐使⽤全局变量好,因为局部变量只有线程⾃⼰能看⻅,不会影响其他线 程,⽽全局变量的修改必须加锁  ⼀个ThreadLocal变量虽然是全局变量,但每个线程都只能读写⾃⼰线程的独 ⽴副本,互不⼲扰。ThreadLocal解决了参数在⼀个线程中各个函数之间互相 传递的问题  import threading...

2018-11-22 15:23:52 414

原创 python 多线程-⾮共享数据 死锁以及 ⽣产者与消费者模式

在多线程开发中,全局变量是多个线程都共享的数据,⽽局部变量等是 各⾃线程的,是⾮共享的 1. 死锁在线程间共享多个资源的时候,如果两个线程分别占有⼀部分资源并且同时 等待对⽅的资源,就会造成死锁。尽管死锁很少发⽣,但⼀旦发⽣就会造成应⽤的停⽌响应。下⾯看⼀个死锁 的例⼦Thread1  对A 上了锁 ,2 中对B上了锁,然后 互相等待对方释放锁,然后上锁 *...

2018-11-22 15:22:06 184

原创 Python 线程安全问题

在⼀个进程内的所有线程共享全局变量,能够在不使⽤其他⽅式的前提下完成多线程之间的数据共享(这点要⽐多进程要好) 缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量 的混乱(即线程⾮安全)同步: 假设两个线程t1和t2都要对num=0进⾏增1运算,t1和t2都各对num修改10 次,num的最终的结果应该为20。但是由于是多线程访问,有可能出现下⾯情况:...

2018-11-22 15:19:01 848 1

原创 Python 同步 上锁解锁过程

同步就是协同步调,按预定的先后次序进⾏运⾏#创建锁 mutex = threading.Lock()#锁定 mutex.acquire([blocking]) #释放mutex.release()其中,锁定⽅法acquire可以有⼀个blocking参数。如果设定blocking为True,则当前线程会堵塞,直到获取到这个锁为⽌ (如果没有指定,那么默认为Tru...

2018-11-22 15:17:48 820

原创 python 之 多线程

类似于进程, 主进程都是晚于子进程结束,目的就是为了回收子进程占用的内存.....如果子进程结束了,主进程在没有为其回收的这一段时间,子线程被称为僵尸进程, 如果主进程结束了,子进程却没有回收,子进程被称为孤儿进程. 该进程结束时由一号进程进行收拢 主进程的id 一般都比子进程的 ID 小 length = len(threading.enumerate()) prin...

2018-11-22 15:16:01 56

原创 Python 进程间通信

进程间通信 ---------&gt;&gt;  队列,命名管道,无名管道 内存映射 *********************************************************可以使⽤multiprocessing模块的Queue实现多进程之间的数据传递,Queue 本身是⼀个消息列队程序 初始化Queue()对象时(例如:q=Queue()),若括号中...

2018-11-22 15:14:04 86 1

原创 python之进程池

初始化Pool时,可以指定⼀个最⼤进程数,当有新的请求提交到Pool中时, 如果池还没有满,那么就会创建⼀个新的进程⽤来执⾏该请求;但如果池中 的进程数已经达到指定的最⼤值,那么该请求就会等待,直到池中有进程结 束,才会创建新的进程来执行from multiprocessing import Poolimport osimport randomimport time...

2018-08-16 12:01:37 619

原创 python元类 图要改 上

python一切都是对象,linux 一切都是文件python中类也是一种对象,只要使用class ,python解释器就会在执行时创建一个对象直接在类里面写print("sss");  在调用这个py文件的时候,自动就会打印甚至可以直接print(类名) 因为类也是对象,可以在运行时动态的创建他们, 就像其他任何的对象一样 type(类名, 由父类名称组成的元...

2018-08-16 11:42:23 66

原创 python 元类之 meta_class属性 图要改

你可以在定义一个类的时候为其添加__metaclass__属性(python2---&gt;__metaclass__    python3---&gt;metaclass)class Foo(Bar):pass Python做了如下的操作:  1. Foo中有__metaclass__这个属性吗?如果是,Python会通过__metaclass__创建一个名字为Foo的类...

2018-08-16 11:42:10 140

原创 Python之进程: multiprocessing 跨平台版本的fork

由于 Windows没有fork调⽤ Python是跨平台的,⾃然也应该提供⼀个跨平台的多进程⽀持。 multiprocessing模块就是跨平台版本的多进程模块。⽗进程、⼦进程执⾏顺序没有规律,完全取决于操作系统的调度算法 multiprocessing模块提供了⼀个Process类来代表⼀个进程对象,下⾯的例⼦ 演示了启动⼀个⼦进程并等待其结束:#coding=utf-8 f...

2018-08-08 15:22:44 371

原创 进程的创建-Process⼦类 与 进程池

 Process子类创建进程  创建新的进程还能够使⽤类的⽅式,可以⾃定义⼀个类,继承Process类,每 次实例化这个类的时候,就等同于实例化⼀个进程对象from multiprocessing import Processimport timeclass MyNewProcess(Process):    def run(self):        while True:...

2018-08-08 15:21:41 126

原创 Python之进程与任务

编写完毕的代码,在没有运⾏的时候,称之为程序正在运⾏着的代码,就成为进程进程,除了包含代码以外,还有需要运⾏的环境等,所以和程序是有区别的Python的os模块封装了常⻅的系统调⽤,其中就包括fork,可以在Python程 序中轻松创建⼦进程import os# 注意,fork函数,只在Unix/Linux/Mac上运⾏,windows不可以 pid = os.fork...

2018-08-08 15:21:32 68

转载 Python 切片与迭代

L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] &gt;&gt;&gt; L[0:3]['Michael', 'Sarah', 'Tracy']L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素。如果第一个索引是0,还可以省略:&gt;&gt;&gt; L[:3]['M...

2018-08-08 15:21:22 63

转载 python 列表生成式 人生苦短我用Python

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):&gt;&gt;&gt; list(range(1, 11))[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]但如果要...

2018-08-08 15:21:08 172

原创 python 之 functools 偏函数 和 集合 set

   (本来都是随手放在QQ收藏当笔记,太多了卡了起来,就写到博客,随意了点,见谅) wraps函数使⽤装饰器时,有⼀些细节需要被注意。例如,被装饰后的函数其实已经是 另外⼀个函数了(函数名等函数属性会发⽣改变)。添加后由于函数名和函数的doc发⽣了改变,对测试结果有⼀些影响 所以,Python的functools包中提供了⼀个叫wraps的装饰器来消除这样的副 作⽤。...

2018-08-08 15:20:44 63

原创 Python常用的内建函数

Build-in Function,启动python解释器,输⼊ dir(__builtins__) , 可以看到 很多python解释器启动后默认加载的属性和函数,这些函数称之为内建函 数, 这些函数因为在编程时使⽤较多,cpython解释器⽤c语⾔实现了这些函 数,启动解释器 时默认加载。这些函数数量众多,不宜记忆,开发时不是都⽤到的,待⽤到时再 help(function), 查看如何使...

2018-08-08 15:20:25 141

原创 Python 生成器 重点中的重点 生成器:generator

列表a =[x * 2  for x in range(10)]   0到9,都会乘以2把10 改成  10000000就会报错,内存不够,就会被杀死在Python中,这种一边循环一边计算的机制,称为生成器:generatorgenerator保存的是算法把中括号换成小括号 变成生成器 就不会被杀死 , 生成器是你用的时候才会分配空间 , 每次只生成一个,到了最后一次,如果还要调用...

2018-08-08 13:26:43 127

原创 Python 类来作为装饰器

用类来当做装饰器 , 当Python解释器执行到这里的时候, 就会创建这个类的一个对象,来进行装饰. 相当于创建了一个Test对象,并将test这个函数的引用传了过去.Test对象---&gt;test = Test (test)&lt;-----函数的引用对象加上括号,就会调用对象的__call__函数私有属性__func...

2018-08-08 13:26:13 268

原创 Python动态添加方法和属性

Python是动态语言,可以在运行时改变结构的语言:例如新的函数,对象静态语言:运行之前必须先编译,编译不过就运行不了,运行时不能修改代码给对象添加属性 : 15行会报错,因为类并没有添加属性 给类添加属性:  第17行的操作,不会报错    class Person(object): def __init__(self, newName, newAge): ...

2018-08-07 16:36:14 2531

原创 Python 作用域 与 内建 以及 内建之__getattribute__ 属性访问拦截器

 Python解释器在工作的时候会默认导入常见的功能input等称之为内建 内建之__getattribute__ 属性访问拦截器: 所有访问属性的时候一定要先访问这个方法,这个方法返回的值就决定着这个属性得到的数据 print("====1&gt;%s"%obj); 不管是属性名,函数名或者类名,仅仅是变量名, 指向了一片内存而已 test.s...

2018-08-07 16:29:02 997

原创 Python 装饰器(2)

例1:无参数的函数from time import ctime, sleepdef timefun(func): def wrappedfunc(): print("%s called at %s"%(func.__name__, ctime())) func() return wrappedfunc@timefundef foo()...

2018-08-07 16:25:37 44

原创 Python 装饰器(1) 重点之重点

语法糖: def w1(func): def inner(): print("---正在验证权限----") if False: func() else: print("没有权限") return inner#f1 = w1(f1)@w1def f1(): pri...

2018-08-07 16:20:30 110

原创 Python 闭包---- >变量指向函数,可以调用函数

变量指向函数,可以调用函数闭包,调用里面的函数,外边函数的值就不用再传了 def line_conf(a, b):    def line(x):        return a*x + b    return lineline1 = line_conf(1, 1)line2 = line_conf(4, 5)print(line1(5))print(...

2018-08-07 16:09:44 395

原创 Python 迭代器------划重点:Iterable ,Iterator 的区别

迭代器迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。1. 可迭代对象以直接作用于 for 循环的数据类型有以下几种:一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等;一类是 generator ,包括生成器和带 yield...

2018-08-07 16:05:41 175

原创 Python之property

t.num = 200 #相当于调用了 t.setNum(200) print(t.num) #相当于调用了 t.getNum() #注意点:#t.num 到底是调用getNum()还是setNum(),要根据实际的场景来判断,#1. 如果是给t.num赋值 那么一定调用setNum()#2. 如果是获取t.num的值,那么就一定调用getNum()##pr...

2018-08-07 16:03:29 65

原创 Python私有化

给属性,方法 前面加两个下划线就会私有化直接调用会报错 ,如果t.__num =200的话,只是给这个对象又添加了属性 -xx :  from iii import xxx 禁止导入,但是 import iii是不影响的__xx__  魔法方法 : python解释器默认提供的,额外去做的具有特殊功能的方法对象._类名__xx 就可以访问私有属性了...

2018-08-07 16:00:39 126

原创 Python 笔记之深拷贝 浅拷贝

浅拷贝 : 是对一个对象的顶层拷贝(拷贝了引用,没有拷贝内容)深拷贝:  拷贝内容,不拷贝引用import copyc =copy.deepcopy(a)递归深拷贝copy.copy(c)元组,不可变类型     copy.copy 如果当前类型是不可变类型,则直接浅拷贝...

2018-08-07 15:58:52 157

原创 Python笔记 之导入 与 ==

(1)import比较类似于C/C++的include import syssys.path如果要导入的模块不在sys里面可以通过:sys.path.append("/home")来添加( 绝对路径或者相对路径 )( #include "../xxx.h"  上一个路径) (2)导入一个模块之后,该模块有所改动,运行程序,还是修改之前的样子,即便是重新import te...

2018-08-07 15:55:48 75

原创 Java 接口不能实例化之匿名内部类

上面的代码是安卓开发里面及其常见的一段代码,最近侥幸捡起了一点基础,有些不解,就去源码里面查了查, public void setOnClickListener(@Nullable OnClickListener l) { if (!isClickable()) { setClickable(true); } get

2018-06-12 12:16:14 930

原创 Flutter如何使用入门学习(3)Flutter中的点击、拖动和其它手势

Flutter中的手势系统有两个独立的层。第一层有原始指针(pointer)事件,它描述了屏幕上指针(例如,触摸,鼠标和触控笔)的位置和移动。 第二层有手势,描述由一个或多个指针移动组成的语义动作。Pointers指针(Pointer)代表用户与设备屏幕交互的原始数据。有四种类型的指针事PointerDownEvent 指针接触到屏幕的特定位置PointerMoveEvent 指针从屏幕上的一个位...

2018-06-12 12:13:20 9647

翻译 Flutter如何使用入门学习(2)StatefulWidget类与StatelessWidget类

StatefulWidget类具有可变状态( state)的Widget(窗口小部件).状态( state) 是可以在构建Widget时同步读取时 和  在Widget的生命周期期间可能改变的信息Widget实现者的责任就是 在状态改变时通过 State.setState. 立即通知状态当您描述的用户界面部分不依赖于对象本身中的配置信息和其中构件被夸大的BuildContext时,无状态小部件很有...

2018-06-12 12:04:48 8413 1

原创 Flutter如何使用入门学习(1)Flutter Widget框架概述

Flutter Widget采用现代响应式框架构建,这是从 React 中获得的灵感,中心思想是用widget构建你的UI。 Widget描述了他们的视图在给定其当前配置和状态时应该看起来像什么。 当widget的状态发生变化时,widget会重新构建UI,Flutter会对比前后变化的不同, 以确定底层渲染树从一个状态转换到下一个状态所需的最小更改(译者语:类似于React...

2018-06-12 11:46:23 800

原创 简单的Python文件操作(3)文件的重命名,删除和对文件夹的操作

(1) 文件的重命名,删除os模块中的rename()可以完成对文件的重命名操作rename(需要修改的文件名,新的文件名)import osos.rename("a.txt","b.txt")os模块中的remove()可以完成对文件的重命名操作remove(要删除的文件名)import osos.remove("a.txt")(2) 文件夹的相关操作同样要用到osimport os #...

2018-05-30 01:27:06 1741

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除