cls

ANIMATION经典小车动画

故事扮演 提交于 2020-01-20 19:57:18
适用于多个活动场景 1.HTML <body> <div class="old-driver"> <div class="box-false"> <div class="box"> <img class="car" src="car.png"> <img class="gas" src="gas.png"> </div> </div> </div> </body> 2.CSS <style type="text/css" media="screen"> .old-driver { width: 100%; height: 350px; position: relative; overflow: hidden; } @keyframes an-shake { 0%, 100% { transform: translate(1px, 0px) rotate(0deg) } 20% { transform: translate(-2px, -2px) rotate(0.2deg) } 40% { transform: translate(-2px, 1px) rotate(-0.1deg) } 60% { transform: translate(-1px, 2px) rotate(-0.2deg) } 80% { transform: translate(0px, 2px)

单例模式的四种方式

拜拜、爱过 提交于 2020-01-20 15:28:36
单例模式的四种方式 一、内容 保证一个类只有一个实例,并提供一个访问它的全局访问点 二、角色 单利 三、使用场景 当类只有一个实例而且客户可以从一个众所周知的访问点访问它时 比如:数据库链接、Socket创建链接 四、优点 对唯一实例的受控访问 单利相当于全局变量,但防止了命名空间被污染 与单利模式功能相似的概念:全局变量、静态变量(方法) 试问?为什么用单例模式,不用全局变量呢?   答、全局变量可能会有名称空间的干扰,如果有重名的可能会被覆盖 五、单例模式的四种实现方式 1、文件导入的形式(常用) s1.py class Foo(object): def test(self): print("123") v = Foo() #v是Foo的实例 s2.py from s1 import v as v1 print(v1,id(v1)) # 35788560 from s1 import v as v2 print(v1,id(v2)) # 35788560 # 两个的内存地址是一样的 # 文件加载的时候,第一次导入后,再次导入时不会再重新加载。 2、基于类实现的单例模式 # ======================单例模式:无法支持多线程情况=============== class Singleton(object): def __init__(self): import

设计模式_创建型模式

馋奶兔 提交于 2020-01-20 12:29:44
目录 创建型模式: 简单工厂模式 工厂方法模式 抽象工厂模式 创建者模式 原型模式 单例模式 简单工厂模式 一、内容 不直接向客户端暴露对象创建的实现细节,而是通过一个工厂类来负责创建产品类的实例。 二、角色 工厂角色(Creator) 抽象产品角色(Product) 具体产品角色(Concrete Product) 三、优点 隐藏了对象创建的实现细节 客户端不需要修改代码 四、缺点 违反了单一职责原则,将创建逻辑集中到一个工厂类中 当添加新产品时,需要修改工厂类代码,违反了开放封闭原则 五、代码示例 from abc import abstractmethod,ABCMeta class Payment(metaclass=ABCMeta): @abstractmethod def pay(self,money): pass class Alipay(Payment): def pay(self, money): print('支付宝支付了%s元'%money) class Applepay(Payment): def pay(self, money): print('苹果支付了%s元' %money) class Yuebao(Payment): def pay(self,money): print('余额宝支付了%s元' %money) class

单利模式的四种方式

做~自己de王妃 提交于 2020-01-20 12:28:21
单利模式相关内容 内容 保证一个类只有一个实例,并提供一个访问它的全局访问点 角色 单利 使用场景 当类只有一个实例而且客户可以从一个众所周知的访问点访问它时 比如:数据库链接、Socket创建链接 优点 对唯一实例的受控访问 单利相当于全局变量,但防止了命名空间被污染 与单利模式功能相似的概念:全局变量、静态变量(方法)   试问?为什么用单例模式,不用全局变量呢?   答、全局变量可能会有名称空间的干扰,如果有重名的可能会被覆盖 单例模式的实现方式 1、文件导入的形式(常用) s1.py class Foo(object): def test(self): print("123") v = Foo() #v是Foo的实例 s2.py from s1 import v as v1 print(v1,id(v1)) #<s1.Foo object at 0x0000000002221710> 35788560 from s1 import v as v2 print(v1,id(v2)) #<s1.Foo object at 0x0000000002221710> 35788560 # 两个的内存地址是一样的 # 文件加载的时候,第一次导入后,再次导入时不会再重新加载。 2、基于类实现的单例模式 # ======================单例模式:无法支持多线程情况=====

单例模式 与 python实现

点点圈 提交于 2020-01-20 04:28:41
单例模式 单例模式就是确保一个类只有一个实例.当你希望整个系统中,某个类只有一个实例时,单例模式就派上了用场. 比如,某个服务器的配置信息存在在一个文件中,客户端通过AppConfig类来读取配置文件的信息.如果程序的运行的过程中,很多地方都会用到配置文件信息,则就需要创建很多的AppConfig实例,这样就导致内存中有很多AppConfig对象的实例,造成资源的浪费.其实这个时候AppConfig我们希望它只有一份,就可以使用单例模式. 实现单例模式的几种方法 1. 使用模块 其实,python的模块就是天然的单例模式,因为模块在第一次导入的时候,会生成.pyc文件,当第二次导入的时候,就会直接加载.pyc文件,而不是再次执行模块代码.如果我们把相关的函数和数据定义在一个模块中,就可以获得一个单例对象了. 新建一个python模块叫singleton,然后常见以下python文件 mysingleton.py class Singleton(object): def foo(self): pass singleton = Singleton() 使用: from singleton.mysingleton import singleton 2. 使用装饰器 装饰器里面的外层变量定义一个字典,里面存放这个类的实例.当第一次创建的收,就将这个实例保存到这个字典中.

设计模式

混江龙づ霸主 提交于 2020-01-20 01:00:02
设计模式是什么? Christopher Alexander:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样你就能一次又一次地使用该方案而不必做重复劳动。” 设计模式是经过总结、优化的,对我们经常会碰到的一些编程问题的可重用解决方案。一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码。反之,设计模式更为高级,它是一种必须在特定情形下实现的一种方法模板。设计模式不会绑定具体的编程语言。一个好的设计模式应该能够用大部分编程语言实现(如果做不到全部的话,具体取决于语言特性)。最为重要的是,设计模式也是一把双刃剑,如果设计模式被用在不恰当的情形下将会造成灾难,进而带来无穷的麻烦。然而如果设计模式在正确的时间被用在正确地地方,它将是你的救星。 起初,你会认为“模式”就是为了解决一类特定问题而特别想出来的明智之举。说的没错,看起来的确是通过很多人一起工作,从不同的角度看待问题进而形成的一个最通用、最灵活的解决方案。也许这些问题你曾经见过或是曾经解决过,但是你的解决方案很可能没有模式这么完备。 虽然被称为“设计模式”,但是它们同“设计“领域并非紧密联系。设计模式同传统意义上的分析、设计与实现不同,事实上设计模式将一个完整的理念根植于程序中,所以它可能出现在分析阶段或是更高层的设计阶段。很有趣的是因为设计模式的具体体现是程序代码

python 类方法与静态方法

空扰寡人 提交于 2020-01-20 00:06:40
@classmethod : 类方法 @staticmethod : 静态方法 类方法和静态方法的调用一样,都是通过类就可以直接调用(类名.方法名())。 区别:   类方法,需要传入该类,定义类方法的时候要传一个默认的参数cls。是一个函数修饰符,它表示接下来的是一个类方法,而对于平常我们见到的则叫做实例方法。类方法的第一个参数cls,   静态方法则不用。第一个参数是self,表示该类的一个实例。 来源: https://www.cnblogs.com/tingxin/p/12216022.html

module03-1-选课系统

北城以北 提交于 2020-01-19 14:40:22
需求 角色:学校、学员、课程、讲师 要求: 1. 创建北京、上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 3. 课程包含,周期,价格,通过学校创建课程 4. 通过学校创建班级, 班级关联课程、讲师 5. 创建学员时,选择学校,关联班级 5. 创建讲师角色时要关联学校, 6. 提供两个角色接口 6.1 学员视图, 可以注册, 交学费, 选择班级, 6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩 6.3 管理视图,创建讲师, 创建班级,创建课程 7. 上面的操作产生的数据都通过pickle序列化保存到文件里 目录结构 module03-1- 选课系统 │├ bin # 执行文件目录│ ├ ForAdmin.py # 管理端执行文件│ ├ ForStudents.py # 学员端执行文件│ └ ForTeachers.py # 讲师端执行文件 │├ core # 程序内部逻辑│ └ main.py # 主逻辑交互程序│└ db # 数据库目录 ├ init_db.py # 数据库初始化程序 └ school # 数据库文件 代码 1 import os,sys 2 3 base_path = os.path.dirname(os.path

linux下自动创建设备文件节点---class

≯℡__Kan透↙ 提交于 2020-01-19 13:25:33
在驱动模块初始化函数中实现设备节点的自动创建 我们在刚开始写 Linux 设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。 内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再调用device_create(…)函数来在/dev目录下创建相应的设备节点。这样,加载模块的时候,用户空间中的udev会自动响应device_create(…)函数,去/sysfs下寻找对应的类从而创建设备节点。 注意,在2.6较早的内核版本中,device_create(…)函数名称不同,是class_device_create(…),所以在新的内核中编译以前的模块程序有时会报错,就是因为函数名称不同,而且里面的参数设置也有一些变化。 struct class和device_create(…) 以及device_create(…)都定义在/include/linux/device.h中,使用的时候一定要包含这个头文件,否则编译器会报错。 在2.6

s_create(),device_create自动创建设备文件结点

▼魔方 西西 提交于 2020-01-19 13:23:50
clas s_create(),device_create自动创建设备文件结点 从linux 内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一 点, udev是应用层的东东,不要试图在内核的配置选项里找到它 ;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例, 在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 class_device_create创建对应的设备 。 (不太明白什么是devfs,udev,对linux中的文件系统没有什么概念呢。) 大致用法如下: struct class *myclass = class_create(THIS_MODULE, “my_device_driver”); class_device_create(myclass, NULL, MKDEV(major_num, 0), NULL, “my_device”); 这样的module被加载时, udev daemon就会自动在/dev下创建my_device设备文件 。 class_create() ------------------------------------------------- linux-2.6.22/include/linux