cls

阻塞式访问和非阻塞式访问, 按键延时去抖。

本小妞迷上赌 提交于 2019-12-04 21:15:46
1、设备的阻塞方式访问 应用编程 sd=socke(...) recv(sd, ....)//无数据阻塞等待 有数据立即返回 希望按键设备 也能达到在用户空间阻塞方式访问 内核中为了实现设备的阻塞方式访问,提供了一套机制: 等待队列 核心数据结构 wait_queue_head_t 实验步骤: 1)定义一个等待队列头变量 wait_queue_head_t btn_wqh; 2) 初始化等待队列头变量 init_waitqueue_head(&btn_wqh); //等价于步骤1) 2) DECLARE_WAIT_QUEUE_HEAD(btn_wqh) 3) 驱动程序中,对设备执行读写操作时 如果设备I/O为就绪 可以调用以下函数, 实现进程的阻塞 //该函数会使得调用者进程进入睡眠状态 wait_event(btn_wqh, condition) //进入的是可中断的睡眠状态 wait_event_interruptible(btn_wqh, condition) condition,为TRUE 直接返回 不睡眠 为FALSE,进程进入睡眠状态 4)当设备I/O就绪时 唤醒因I/O未就绪而进入睡眠状态的进程 wake_up(&btn_wqh); wake_up_interruptible(&btn_wqh); 实现原理: 1)内核中管理进程,会为每个进程建立PCB(进程控制块)

Python类装饰器

安稳与你 提交于 2019-12-04 15:53:33
上次介绍了Python的函数装饰器,这次我们来讲一讲Python的类装饰器。 Python的类装饰器基本语法如下: def decorator(cls): print "6666666" return cls @decorator class Model(object): def __init__(self): print "model created" if __name__ == '__main__': model = Model() decorator即是装饰器函数,输入的cls是一个类,返回也是一个类(其实返回一个可调用对象就可以,例如函数)。所以其实上文的类装饰器就相当于: model = decorator(Model)() 这只是最基本的版本,既然返回只要是一个可调用对象就可以,我们就可以对输入的类进行一系列魔改: class A(object): def __init__(self): print "77777" def decorator(cls): return A @decorator class Model(object): def __init__(self): print "model created" if __name__ == '__main__': model = Model() print model 输出为: 77777 <__main__

封装ORM.py与mysql_client.py代码

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-04 08:40:07
ORM.py ''' ORM: 对象关系映射 ---> 映射到数据库MySQL中的数据表 类名 ---> 表名 对象 ---> 一条记录 对象.属性 ---> 字段 模拟Django的ORM,为了,将数据库的 增、删、改、查,全部封装成 一个个的方式,比如: save, delete, update, select。 优点: 使用者无需 关心具体的SQL命令 如何编写。 直接通过调用方法 来执行相对应的SQL命令。 缺点: 1.更高级的封装导致“执行效率变低”。 2.会逐渐遗忘SQL原生命令。 ''' from mysql_client import MySQLClient # 1.创建字段的类型, 对应数据表中的一个个字段的创建规范 class Field: def __init__(self, name, column_type, primary_key, default): self.name = name self.column_type = column_type self.primary_key = primary_key self.default = default # Integer class IntegerField(Field): def __init__(self, name, column_type='int', primary_key=False,

工具utils.js

霸气de小男生 提交于 2019-12-04 06:45:01
1. 去掉字符串前后空格 function trim(string) { return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, ''); }; 2、类名,查找某个指定元素是否包含指定的className hasClass(el, cls) { if (!el || !cls) return fasle; if (cls.indexOf(" ") !== -1){ // throw new Error("要查询的className不能包含空格!"); return fasle } if (el.classList) { return el.classList.contains(cls); } else { return (el.className + "").indexOf("" + cls) > -1; } } 3、增加一个或者多个类名 function addClass(el, cls) { if (!el) return; var curClass = el.className; var classes = (cls || '').split(' '); for (var i = 0, j = classes.length; i < j; i++) { var clsName = classes[i]; if (

装饰器大全

北城余情 提交于 2019-12-04 06:33:43
# ### 装饰器 """ 定义:装饰器用于拓展原来函数功能的一种语法,返回新函数替换旧函数 优点:在不更改原函数代码的前提下 给函数拓展新的功能 语法:@ """ # 1.装饰器的原型 def kuozhan(func): def newfunc(): print("厕所前,蓬头垢面") func() print("厕所后,容光焕发") return newfunc def func(): print("我是高富帅") func = kuozhan(func) # func = newfunc func() # newfunc() # 2.装饰器@符语法 """ @符有两个作用: (1)把@符下面的函数当成一个参数传递给装饰器 (2)装饰器经过装饰之后,把新函数返回,让新函数去替换旧函数 (在不改变原有代码的前提下,扩展新功能) """ def kuozhan(func): def newfunc(): print("厕所前,衣衫褴褛") func() print("厕所后,光鲜亮丽") return newfunc @kuozhan def func(): print("我是白富美") func() # 3.装饰器的嵌套 def kuozhan1(func): def newfunc(): print("厕所前,饥肠辘辘1") func() print("厕所后,酒足饭饱2")

day38总结

三世轮回 提交于 2019-12-03 20:31:01
ORM: Object Relational Mapping---对象关系映射 类名---表名, 一个对象的某个属性值---某个记录, 一个对象的属性值---一条记录, 对象.属性---字段 存储对象 --> dict --> Json --> Mysql Mysql --> Jason --> dict --> 获取对象 一个对象中的所有属性名和属性值映射成一个字典中的keys和values 将映射字典序列化成json格式 将json格式数据编码传输到服务器 在服务器将二进制数据解码并反序列化存入mysql数据库中 自定义元类 ''' 自定义元类: 继承type类, 重写__new__方法, 控制类在创建时自动对类的名称空间中的属性进行相应的操作, 包括: 1. 一个表类的名称空间中必须要有一个表名的属性---模型表类除外 2. 一个表类的名称空间中的所有字段属性中, 必须有且仅有一个字段的主键为True 3. 将一个表类的名称空间中的所有字段属性放入一个独立字典中, 与名称空间中的其他属性区分开, 从而方便获取字段属性的属性名, 因其与字段对象中的字段名同名, 故等价于方便了字段名的获取 ''' # 自定义元类 class OrmMeta(type): # 参数"mcs"为自定义的元类, 由"msc"来创建一个空类 def __new__(mcs, cls_name, cls

元类

倾然丶 夕夏残阳落幕 提交于 2019-12-03 11:34:07
目录 一、元类 1. 什么是元类 2. 元类有什么用 3. 内置函数 exec 4. 自定义一个元类 5. 元类和普通类的联系 6. 用元类控制类的创建 7. __call__ 8. __new__ 9. 元类控制类的实例化 10. 自定义元类后的类的继承顺序 一、元类 1. 什么是元类 在python中,一切皆对象,用class 关键字定义的类其本身也是一个对象。负责产生该对象的类就是元类。python中, type 类就是元类,且凡是继承了 type 类的类,也是元类。 2. 元类有什么用 通过自定义一个元类,来控制类的产生,还可以控制这个类的实例化对象的产生。 class People: x = 1 # class People 帮我们完成了 People = type(类名, 类的基类 , 类的名称空间) 3. 内置函数 exec cmd = """ x=1 print('exec函数运行了') def func(self): pass """ class_dic = {} # 执行cmd中的代码,然后把产生的名字丢入class_dic字典中 exec(cmd, {}, class_dic) # 第一个参数是字符串python语句,第二个是全局名称空间 ,第三个是局部名称空间 # 打印结果: exec函数运行了 print(class_dic) # 打印结果: {'x':

用设计模式来替代if-else

懵懂的女人 提交于 2019-12-03 09:57:58
用设计模式来替代if-else 前言 物流行业中,通常会涉及到EDI报文(XML格式文件)传输和回执接收,每发送一份EDI报文,后续都会收到与之关联的回执(标识该数据在第三方系统中的流转状态)。这里枚举几种回执类型: MT1101、MT2101、MT4101、MT8104、MT8105、MT9999 ,系统在收到不同的回执报文后,会执行对应的业务逻辑处理。当然,实际业务场景并没有那么笼统,这里以 回执处理为演示案例 模拟一个回执类 @Data public class Receipt { /** * 回执信息 */ String message; /** * 回执类型(`MT1101、MT2101、MT4101、MT8104、MT8105、MT9999`) */ String type; } 模拟一个回执生成器 public class ReceiptBuilder { public static List<Receipt> generateReceiptList(){ //直接模拟一堆回执对象 List<Receipt> receiptList = new ArrayList<>(); receiptList.add(new Receipt("我是MT2101回执喔","MT2101")); receiptList.add(new Receipt("我是MT1101回执喔",

MongoEngine _types and _cls fields

匿名 (未验证) 提交于 2019-12-03 08:46:08
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Why does mongoengine add _types and _cls fields to every document of a collection. Both of them are a (key, value) pair and both of them contain the name of the document's model class. The only difference is _types value is a list and I assume it can have multiple model class names if there is involved some inheritance. However the question is: why do I need them to exist in every document within a collection when all the documents will have the same values for both fields? 回答1: Mongoengine allows Document Inheritance. When defining a class

Any way to clear python&#039;s IDLE window?

匿名 (未验证) 提交于 2019-12-03 07:50:05
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I know there's a similar topic about python console, but I do not know if they are the same. I tried system("clear") and it didn't work here. How do I clear python's IDLE window? 回答1: The "cls" and "clear" are commands which will clear a terminal (ie a DOS prompt, or terminal window). From your screenshot, you are using the shell within IDLE, which won't be affected by such things. Unfortunately, I don't think there is a way to clear the screen in IDLE. The best you could do is to scroll the screen down lots of lines, eg: print "\n" * 100