obj文件

Django 知识补漏单例模式

倖福魔咒の 提交于 2019-11-26 14:34:48
单例模式:(说白了就是)创建一个类的实例。在 Python 中,我们可以用多种方法来实现单例模式: 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)) from s1 import v as v2 print(v1,id(v2)) # 文件加载的时候,第一次导入后,会生成 .pyc 文件,当第二次导入时,就会直接加载 .pyc 文件,再次导入时不会再重新加载。 # 两个的内存地址是一样的 2、基于类实现的单例模式 # ======================单例模式:无法支持多线程情况=============== class Singleton(object): def __init__(self): import time time.sleep(1) @classmethod def instance(cls, *args, **kwargs): if not hasattr(Singleton, "_instance"): Singleton._instance = Singleton(*args, **kwargs) return

PHP反序列化漏洞研究

≯℡__Kan透↙ 提交于 2019-11-26 13:39:13
序列化 序列化说通俗点就是把一个对象变成可以传输的字符串 php serialize()函数 用于序列化对象或数组,并返回一个字符串。序列化对象后,可以很方便的将它传递给其他需要它的地方,且其类型和结构不会改变。 <?php $sites = array('Google', 'Microsoft', 'Facebook'); $serialized_data = serialize($sites); echo $serialized_data . PHP_EOL; ?> 输出: a:3:{i:0;s:6:"Google";i:1;s:9:"Microsoft";i:2;s:8:"Facebook";} 解释 a: 代表数组(如果是o就代表对象(object)) 3: 代表数组里面有3个变量 i: 代表数据类型(i:int;s:string) 6: 代表数据长度 反序列化 php unserialize()函数 用于将通过 serialize() 函数序列化后的对象或数组进行反序列化,并返回原始的对象结构。 <?php $str = 'a:3:{i:0;s:6:"Google";i:1;s:9:"Microsoft";i:2;s:8:"Facebook";}'; $unserialized_data = unserialize($str); print_r($unserialized

python 读写 json 文件

北慕城南 提交于 2019-11-26 12:26:59
读 import json with open("D:\\研究生工作\\dataset generation\\file\\obj_vec_dict.json") as f: obj_vec = json.load(f) 写 import json with open("D:\\研究生工作\\dataset generation\\file\\obj_vec_dist.json", 'w') as f: json.dump(obj_vec_dist, f) 来源: https://www.cnblogs.com/xumaomao/p/11934609.html

Python进阶编程 反射

孤街醉人 提交于 2019-11-26 10:30:51
1.7反射 python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射) class Foo: f = '类的静态变量' def __init__(self,name,age): self.name=name self.age=age def say_hi(self): print('hi,%s'%self.name) obj=Foo('egon',73) #检测是否含有某属性 print(hasattr(obj,'name')) print(hasattr(obj,'say_hi')) #获取属性 n=getattr(obj,'name') print(n) func=getattr(obj,'say_hi') func() print(getattr(obj,'aaaaaaaa','不存在啊')) #报错 #设置属性 setattr(obj,'sb',True) setattr(obj,'show_name',lambda self:self.name+'sb') print(obj.__dict__) print(obj.show_name(obj)) #删除属性 delattr(obj,'age') delattr(obj,'show_name') delattr(obj,'show_name111')#不存在,则报错

python 选课系统(面向对象)

瘦欲@ 提交于 2019-11-26 10:23:29
项目需求: 利用规范化目录结构完成一个学生选课系统。 **角色:**学生、管理员。 功能分析: 用户登录之后就可以直接判断用户身份,是学生还是管理员。 学生登录之后有以下几个功能: 查看所有课程。 选择课程。 查看所选课程。 退出程序。 管理员登录之后有以下几个功能: 创建课程(需要记录日志)。 创建学生账号(需要记录日志)。 查看所有课程。 查看所有学生。 查看所有学生的选课情况。 退出程序。 课程属性:课程名,价格,周期,老师。 学生属性:姓名,所选课程。 管理员属性:姓名。 流程图: https://www.processon.com/view/link/5d283960e4b0878e40af9dd8 目录结构: 具体代码: start.py import sys import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) sys.path.append(BASE_DIR) from core import src from core.src import Course from core.src import Student if __name__ == '__main__': src.main() View Code settings.py import os import logging BASE

django -- form

两盒软妹~` 提交于 2019-11-26 08:31:31
前戏 我们之前是通过html的form表单来提交数据,提交到服务器之后,我们需要对某些字段做判断,比如用户名密码的长度,格式正确不正确。如果用户输入的内容不正确就要在页面上显示对应的错误信息。当然我们可以通过if..elif来进行判断,但是这样写的话,代码很冗余。而Django的form组件就提供了我们这些校验的功能。 普通验证 先来看看不使用form来判断用户名不能小于6位长度是怎么做的 视图函数 def register(request): error_msg = '' if request.method=="POST": user = request.POST.get('user') pwd = request.POST.get('pwd') if len(user)<6: error_msg='用户名长度不符合' else: error_msg = '注册成功' return render(request, 'register.html',{'error_msg': error_msg}) html文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="" method="post"> {% csrf

Java - 反射

走远了吗. 提交于 2019-11-26 07:24:42
反射 一、目的 -获取字节码文件,绕过new,直接获取对象 -为什么要绕过new方法?使用反射有什么优点? -获取字节码文件的3种方法 .class() .forName() .getClass() 二、过程 (1) 获取字节码文件对象 Class<?> class1= person.getClass();//方法1 Class<?> class1 = Person.class;//方法2 Class<?> class1 = Class.forName("cn.leoxry.Person");//方法3 常用 使用更加灵活 (2) 通过字节码文件对象获取相应的实例对象 (2.1)通过无参的构造方法创建实例对象 Object obj = class1.newInstance();//这里相当于在newInstance方法的内部调用了无参的构造方法 Person person = (Person)obj;//创建实例对象 person.setName("test01"); (2.2)通过有参的构造方法创建实例对象 Constructor constructor = class1.getConstructor(String.class, int.class); Object obj = constructor.newInstance("test01", 20);//创建实例对象

dbus-glib笔记

拜拜、爱过 提交于 2019-11-26 05:14:38
dbus-glib笔记 2009-08-21 11:02:15 分类: LINUX use command "make server" to make server while "make client" to make client. 说明:附件程序演示如下内容: 如何在服务端同步以及异步处理客户端提交的请求。 如何在客户端同步以及异步调用服务端提供的服务。 信号的使用以及参数的传递。 如何防止客户端调用超时。 client端 /********************************************* * * * * * * * ******************************************/ #include <stdio.h> #include <stdlib.h> #include <glib.h> #include <dbus/dbus.h> #include <dbus/dbus-glib.h> #include "study_proxy.h" void plusone_cbk (DBusGProxy *proxy, guint result, GError *error, gpointer userdata); static void signal_cbk(DBusGProxy *proxy, guint ret,

浅析easyswoole源码Di原理与实现

▼魔方 西西 提交于 2019-11-25 23:03:31
依赖注入   简介:Dependency Injection 依赖注入   EasySwoole实现了简单版的IOC,使用 IOC 容器可以很方便的存储/获取资源,实现解耦。   使用依赖注入,最重要的一点好处就是有效的分离了对象和它所需要的外部资源,使得它们松散耦合,有利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。   在我们的日常开发中,创建对象的操作随处可见以至于对其十分熟悉的同时又感觉十分繁琐,每次需要对象都需要亲手将其new出来,甚至某些情况下由于坏编程习惯还会造成对象无法被回收,这是相当糟糕的。但更为严重的是,我们一直倡导的松耦合,少***原则,这种情况下变得一无是处。于是前辈们开始谋求改变这种编程陋习,考虑如何使用编码更加解耦合,由此而来的解决方案是面向接口的编程。   --摘自《easyswoole开发文档》 本文将解析并实现下列功能。 1、singleton模式的巧妙实现。 2、通过Di方式实现简单的容器,方便存取资源,从而达到解耦的目的。 代码实现 文件结构 \client.php 功能调用入口 \AbstractInterface\Singleton.php 单例抽象接口 \Lib\Redis.php   redis服务类 \Service\Di.php   依赖注入实现简单Ioc容器 单例实现过程解读 client.php <?php /**