obj文件

day 21

蹲街弑〆低调 提交于 2019-12-01 05:22:07
目录 1.作业 2.定义MySQL类 3.定义一个类:圆形,该类有半径,周长,面积等属性,将半径隐藏起来,将周长与面积开放 4.使用abc模块定义一个phone抽象类 并编写一个具体的实现类 1.作业 class People: def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def add_course(self,course_obj): self.course_list.append(course_obj) def tell_all_course_info(self): for course_obj in self.course_list: course_obj.tell_course_info() class Teacher(People): def __init__(self,name,age,sex): super().__init__(name,age,sex) self.course_list=[] class Student(People): def __init__(self,name,age,sex): super().__init__(name,age,sex) self.course_list=[] class Course: def __init__

夯实Java基础系列22:一文读懂Java序列化和反序列化

吃可爱长大的小学妹 提交于 2019-11-30 23:51:35
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章首发于我的个人博客: www.how2playlife.com 本文参考 http://www.importnew.com/17964.html和 https://www.ibm.com/developerworks/cn/java/j-lo-serial/ 序列化与反序列化概念 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等。在网络传输过程中,可以是字节或是XML等格式。而字节的或XML编码格式可以还原完全相等的对象。这个相反的过程又称为反序列化。 Java对象的序列化与反序列化 在Java中,我们可以通过多种方式来创建对象,并且只要对象没有被回收我们都可以复用该对象。但是,我们创建出来的这些Java对象都是存在于JVM的堆内存中的。 只有JVM处于运行状态的时候,这些对象才可能存在。一旦JVM停止运行,这些对象的状态也就随之而丢失了。 但是在真实的应用场景中,我们需要将这些对象持久化下来,并且能够在需要的时候把对象重新读取出来。Java的对象序列化可以帮助我们实现该功能。

linux内核编译学习笔记

不打扰是莪最后的温柔 提交于 2019-11-30 22:44:27
linux内核由于庞大的代码量和复杂的代码结构,使用通用的makefile形式不仅存在很大的工作量,而且内核的可配置性不好,每次裁剪模块都需要深入到每一层的目录结构修改makefile,并不现实。所以linux提供了一套configure和makefile体系,根据config中的配置操作生成各个子目录下的makefile,决定哪些文件参与编译。内核本身包含了顶层makefile文件,该文件指示了通用的框架。而各个子目录下的makefile文件也不像传统的makefile文件编写格式,它们是结合scripts/目录下的一系列规则文件使用的,只需要指明需要参与编译的子目录/文件即可。在学习了解内核编译体系结构时,因之前基础薄弱,而且对makefile的语法并不熟悉,所以感觉晦涩难懂。后来学习参考同行的博客,对整个脉络有了整体的思路,对makefile体系架构有了更深的了解。 本文重点记录已经学习到的知识,从最终生成的image文件反推,一步一步看如何生成了image文件。首先需要知道,make命令肯定是要执行顶层目录下的makefile文件。 一、makefile文件系统结构 1、scripts/目录下的makefile规则文件 scripts目录下包含makefile规则文件。这些文件相当于制定了一套规则,会解析子目录下的makefile文件。由顶层makefile文件、

DRF(Django REST Framework)框架

旧街凉风 提交于 2019-11-30 18:18:29
目录 一.DRF中的Request 二.前戏: 关于面向对象的继承 三.初级版本 1. settings.py 文件 -- 注册app 2. models.py 文件 -- 创建表 3. admin.py 文件 4. 根目录下 urls.py -- 路由匹配 5. bms/views.py -- 视图函数 6. bms/modelserializers.py -- 自定义序列化工具 四.进化版: 使用自定义混合类和自定义通用类 五.超级进化版: 使用 GenericViewSet 通用类 六.究极进化版: 使用 rest_framework 帮我们封装好的通用类和混合类 七.终极进化版: 使用 rest_framework 帮我们封装好的路由 DefaultRouter 一.DRF中的Request 在Django REST Framework中内置的Request类扩展了Django中的Request类, 实现了很多方便的功能 -- 如请求数据解析和认证等. 比如, 区别于Django中的request: 从 request.GET 中获取URL参数, 从 request.POST 中去取某些情况下的POST数据(前端提交过来的数据). 在APIView中封装的request, 就实现了请求数据的解析: 对于GET请求的参数, APIView通过 request.query

ASP.NET MVC实现依赖注入

戏子无情 提交于 2019-11-30 18:11:14
在java的spring中有自动注入功能,使得代码变得更加简洁灵活,所以想把这个功能移植到c#中,接下来逐步分析实现过程 1.使用自动注入场景分析 在asp.net mvc中,无论是什么代码逻辑分层,最终的表现层为Controller层,所以我们注入点就是在Controller中,这里我们需要替换默认的ControllerFactory,扫描代码中标记需要注入的对象,进行实例化注入 public class FastControllerFactory : DefaultControllerFactory { public override IController CreateController ( RequestContext requestContext, string controllerName ) { Type type = this .GetControllerType(requestContext, controllerName); Object obj = GetControllerInstance(requestContext, type); //Controller中标记AutoWired属性的自动注入 List<FieldInfo> AutoWiredFieldList = type.GetRuntimeFields().Where(f => f

Django【二十】批量更新

霸气de小男生 提交于 2019-11-30 17:44:20
1、表结构 class Student(models.Model): """ 学生表(已报名) """ customer = models.OneToOneField(verbose_name='客户信息', to='Customer',on_delete=models.CASCADE,null=True,blank=True) class_list = models.ManyToManyField(verbose_name="已报班级", to='ClassList', blank=True,related_name="students") emergency_contract = models.CharField(max_length=32, blank=True, null=True, verbose_name='紧急联系人') company = models.CharField(verbose_name='公司', max_length=128, blank=True, null=True) location = models.CharField(max_length=64, verbose_name='所在区域', blank=True, null=True) position = models.CharField(verbose_name='岗位', max

反射

痞子三分冷 提交于 2019-11-30 16:19:15
反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力 python面向对象中的反射:通过字符串的形式操作对象相关的属性。 1.getattr\hastattr\setattr\delattr 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')

Django【十三】form组件。

*爱你&永不变心* 提交于 2019-11-30 15:08:41
一、form组件 form组件的功能: 检验功能 前端生成HTML页面 还能保留输入的内容 form组件的用法: from django import forms # Create your views here. # 定义一个类 class Myform(forms.Form): title = forms.CharField( # 通过from表单进行验证的时候,验证输入title字段的数据,参数用于验证 max_length=20, min_length=2, ) # CharField/DateField等等时用于验证的和models里的没有关系 price = forms.CharField() date = forms.DateField() def test(request): if request.method=="GET": # 实列化一个对象 form_obj = Myform() # 用这个对象去帮我们生成html标签 return render(request,"test.html",{"form_obj":form_obj}) HTML页面: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!-

通过注解方式导入导出execl

三世轮回 提交于 2019-11-30 11:53:02
自定义注解@ExcelField package cn.lisongyu.common.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * @author lisongyu * @date 2019/09/23 */ @Target({ElementType.FIELD, ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface ExcelField { /** * 导出字段名(默认调用当前字段的“get”方法,如指定导出字段为对象,请填写“对象名.对象属性”,例:“area.name”、“office.name”) */ String value() default ""; /** * 导出字段标题(需要添加批注请用“**”分隔,标题**批注,仅对导出模板有效) */ String title(); /** * 导出字段对齐方式(0:自动;1:靠左;2

面试总结、归纳

瘦欲@ 提交于 2019-11-30 04:22:59
1,深浅拷贝 (1)定义 浅拷贝:将原对象或原数组的引用直接赋给新对象,新数组,新对象/数组只是原对象的一个​​引用 深拷贝:创建一个新的对象和副本,将原对象的相应属性的“值”(阵列的所有元素)拷贝过来,是“值”而不是“引用” (2)浅拷贝 下面这段代码就是浅拷贝,有时候我们只是想备份副本,但是只是简单让它赋给一个变量,改变其中一个,另外一个就紧跟着改变,但很多时候这不是我们想要的 var obj = { name:'wsscat', age:0 } var obj2 = obj; obj2['c'] = 5; console.log(obj);//Object {name: "wsscat", age: 0, c: 5} console.log(obj2);////Object {name: "wsscat", age: 0, c: 5} var arr1 = [1,2,3,4]; var arr2 = arr1; arr2.push(5); console.log(arr1); // [1,2,3,4,5] console.log(arr2); // [1,2,3,4,5] (3)深拷贝(只拷贝第一层) 副本 // 使用slice实现 var arr = ['wsscat', 'autumns', 'winds']; var arrCopy = arr.slice(0);