文件属性

Django之视图层

纵然是瞬间 提交于 2019-12-03 15:51:56
一 视图函数   视图函数,简称视图,属于django的视图层,默认定义在views.py文件中,是用来处理web请求信息以及返回响应信息的函数,所以研究视图函数只需要熟练掌握两个对象即可:请求对象(HttpRequest)和响应对象(HttpResponse)。 二 请求对象(HttpRequest)   django将http协议请求报文中的请求行,首部信息,内容主体封装到了HttpRequest对象中(类似于我们自定义框架的environ参数)。django会将HttpRequest对象当做参数传给视图函数的第一个参数request,在视图函数中,通过访问该对象的属性便可以提取http协议的请求数据 2.1 HttpRequest对象常用属性part1 一. HttpRequest.method   获取请求使用的方法(值为纯大写的字符串格式)。例如:“GET”,"POST" 应该通过该属性的值来判断请求方法 二. HttpRequest.GET   值为一个类似于字典的QueryDict对象,封装了GET请求的所有参数,可通过HttpRequest.GET.get('键')获取相应的值 三. HttpRequest.POST   值为一个类似于字典的QueryDict对象,封装了POST请求所包含的表单数据,可通过HttpRequest.POST.get('键'

redis模型(1):单线程模型

流过昼夜 提交于 2019-12-03 12:03:12
1、文件事件处理器 Redis基于Reactor模式开发了自己的网络事件处理器,被称为文件事件处理器,由套接字、I/O多路复用程序、文件事件分派器(dispatcher),事件处理器四部分组成。 I/O多路复用程序会同时监听多个套接字,当被监听的套接字准备好执行accept、read、write、close等操作时,与操作相对应的文件事件就会产生,I/O多路复用程序会将所有 产生事件的套接字 都压入一个队列,然后以有序地每次仅一个套接字的方式传送给文件事件分派器,文件事件分派器接收到套接字后会根据套接字产生的事件类型调用对应的事件处理器。 注意1:只有当上一个套接字产生的事件被所关联的事件处理器执行完毕,I/O多路复用程序才会继续向文件事件分派器传送下一个套接字,所以对每个命令的执行时间是有要求的,如果某个命令执行过长,会造成其他命令的阻塞。所以慎用O(n)命令,Redis是面向快速执行场景的数据库。 注意2:命令的并发性。Redis是单线程处理命令,命令会被逐个被执行,假如有3个客户端命令同时执行,执行顺序是不确定的,但能确定不会有两条命令被同时执行,所以两条incr命令无论怎么执行最终结果都是2。 2、事件 服务器需要处理两类事件: 2.1、文件事件 : Redis服务器对套接字的操作,当一个套接字准备执行连接、读、写、关闭等操作时就会产生一个文件事件。文件事件分为AE

点读系列《jmeter官方用户手册》

北城以北 提交于 2019-12-03 12:01:15
官网: http://jmeter.apache.org/usermanual/ 说明:十八元件、十九属性、二十函数,涉及清单内容暂未仔细阅读,个人觉得一是仅供使用参考,二是适合单独写文章来解读 一、让我们开始吧 千万不要在GUI模式下来做负载测试,要用CLI模式 jmeter不带jdbc驱动程序,如果使用jdbc,就需要去网上下载,然后添加到classpath jmeter是100%的java应用程序 在jmeter的classpath中添加加密包,更新system.properties来注册ssl支持 jmeter http默认协议级别为TLS,可以编辑修改:jmeter.properties或user.properties的https.default.protocol jmeter安装目录(XY是版本号) apache-jmeter-X.Y # 可以修改根目录,不能修改子目录 apache-jmeter-X.Y/bin apache-jmeter-X.Y/docs apache-jmeter-X.Y/extras apache-jmeter-X.Y/lib/ apache-jmeter-X.Y/lib/ext apache-jmeter-X.Y/lib/junit apache-jmeter-X.Y/licenses apache-jmeter-X.Y/printable

Python文件属性模块Os.path

柔情痞子 提交于 2019-12-03 10:57:35
Python文件属性模块Os.path介绍 os.path模块主要用于文件属性获取和判断,在编程中会经常用到,需要熟练掌握。以下是该模块的几种常用方法。 os.path官方文档:http://docs.python.org/library/os.path.html Os.path模块的重要方法 1 os.path.abspath(path) #返回绝对路径 2 os.path.basename(path) #返回文件名 3 os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径。 4 os.path.dirname(path) #返回文件路径 5 os.path.exists(path) #路径存在则返回True,路径损坏返回False 6 os.path.lexists #路径存在则返回True,路径损坏也返回True 7 os.path.expanduser(path) #把path中包含的"~"和"~user"转换成用户目录 8 os.path.expandvars(path) #根据环境变量的值替换path中包含的”$name”和”${name}” 9 os.path.getatime(path) #返回最后一次进入此path的时间。 10 os.path.getmtime(path)

浏览器解析URL的过程

你离开我真会死。 提交于 2019-12-03 10:18:04
一、浏览器简介 浏览器是使用最广泛的软件之一,主要功能是向服务器发出请求,在浏览器窗口中展示用户需要的网络资源。资源的位置由用户的的URI(Uniform Resource Identifier统一资源标识符)来指定,通过DNS查询,将网址转换为IP地址。资源的格式通常是HTML,也包括PDF、image及其他格式。整个浏览器工作的流程,主要如下: 用户输入网址——浏览器查找IP地址——发送HTTP请求——服务器处理请求并响应——服务器发回HTML响应——浏览器开始解析HTML——浏览器发送请求获取HTML中内嵌的对象,如CSS/JS/图片等资源——浏览器展示完整页面 本次介绍的主要就是浏览器从接收到服务器响应的HTML到展示完整页面的整个过程,下面开始—— 二、 浏览器渲染流程 先来一张浏览器渲染流程图 从这张经典的图中可以看出以下几点: 1,浏览器可以解析的资源,HTML,SVG,XHTML等,解析完会生成DOM Tree。 2,CSS资源会解析成CSS Rule Tree。 3,JS通过DOM API和CSSOM API来操作DOM树和CSS树。 4,解析完成后综合DOM树和CSS树会生成Rendering Tree,计算每个元素(Frame)的位置,这个过程就是layout或者叫reflow过程。 5,调用操作系统Native GUI的API绘制。 注意

带你看懂pandas中的两种数据结构

笑着哭i 提交于 2019-12-03 08:48:23
Pandas是基于Numpy的一种工具,这个工具是为了解决数据分析任务而创建的,pandas纳入了大量的库和一些标准的数据模型,提供了高效的操作大型数据集所需的工具,pandas提供了大量能使我们快速便捷的处理数据的函数和方法。Pandas是使Python成为强大而高效的数据分析环境的重要因素之一。另外 在pandas包含了三种数据结构: Series DataFrame Time-series 下面我们就介绍一下Series和DataFrame这两种常用的数据结构,Time-series时间序列,我们后期会专门在开一篇文章仔细的去讲述一下。 一、Series Series是一维数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别是:List中的元素可以是不同的数据类型,而Array和Series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率,并且series可以运用Ndarray或字典的几乎所有索引操作和函数,融合了字典和ndarray的优点。 1、series索引 Series类型是由一组数据及与之相关的数据索引组成 自动索引:不创建系统自动创建索引。 自定义索引:自定义索引,创建完自定义索引后,自动索引也在。 Series是一维带’标签’数组,它的基本操作类似Ndarray和字典,genuine索引对齐。 2

3、内核对设备树的处理

a 夏天 提交于 2019-12-03 08:11:44
第01节_从源头分析_内核head.S对dtb的简单处理 bootloader启动内核时,会设置r0,r1,r2三个寄存器, r0一般设置为0; r1一般设置为machine id (在使用设备树时该参数没有被使用); 表示使用哪个单板 r2一般设置ATAGS或DTB的开始地址 bootloader给内核传递的参数时有2种方法: ATAGS 或 DTB 对于ATAGS传参方法, 可以参考我们的"毕业班视频-自己写bootloader" a. __lookup_processor_type : 使用汇编指令读取CPU ID, 根据该ID找到对应的proc_info_list结构体(里面含有这类CPU的初始化函数、信息) b. __vet_atags : 判断是否存在可用的ATAGS或DTB(根据DTB文件的格式或者ATAGS文件的格式来判断r2是存放的那种) c. __create_page_tables : 创建页表, 即创建虚拟地址和物理地址的映射关系 d. __enable_mmu : 使能MMU, 以后就要使用虚拟地址了 e. __mmap_switched : 上述函数里将会调用__mmap_switched f. 把bootloader传入的r2参数, 保存到变量__atags_pointer中 g. 调用C函数start_kernel head.S/head

Mybatis面试题一

半腔热情 提交于 2019-12-03 07:26:41
1、什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 (2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 (3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 2、Mybaits的优点: (1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 (2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; (3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 (4

【转载】poi读取word文档

断了今生、忘了曾经 提交于 2019-12-03 04:30:06
转载地址: https://blog.csdn.net/wangxintong_1992/article/details/80920843 目录 1 读docx文件 1.1 通过XWPFWordExtractor读 1.2 通过XWPFDocument读 2 写docx文件 2.1 直接通过XWPFDocument生成 2.2 以docx文件作为模板 POI在读写word docx文件时是通过xwpf模块来进行的,其核心是XWPFDocument。一个XWPFDocument代表一个docx文档,其可以用来读docx文档,也可以用来写docx文档。XWPFDocument中主要包含下面这几种对象: l XWPFParagraph:代表一个段落。 l XWPFRun:代表具有相同属性的一段文本。 l XWPFTable:代表一个表格。 l XWPFTableRow:表格的一行。 l XWPFTableCell:表格对应的一个单元格。 1 读docx文件 跟读doc文件一样,POI在读docx文件的时候也有两种方式,通过XWPFWordExtractor和通过XWPFDocument。在XWPFWordExtractor读取信息时其内部还是通过XWPFDocument来获取的。 1.1 通过XWPFWordExtractor读

《TypeScript入门教程》笔记

不打扰是莪最后的温柔 提交于 2019-12-03 04:27:42
基础 原始数据类型 布尔值 let isDone: boolean = false; 数值 let decLiteral: number = 6; 字符串 let myName: string = 'tom'; null/undefined 1.示例 let myName: null = null; let myName: undefined = undefined; 2.它们是所有类型的子类型 let val: 其它类型 = undefined; 非原始数据类型 空值 1.关键字为void,只能被赋值undefined和null let unusable: void = undefined; 任意值 1.可以赋值为任意类型的值(没有类型限制) let myFavoriteNumber: any = 'seven'; myFavoriteNumber = 7; 2.对任意值进行任何操作,返回值类型都是任意值 3.变量声明时,如果未指定类型 a.未赋值,则会默认为any类型 let something; something = 'seven'; something = 7; b.赋值了,则会被类型推断为所赋值的类型 let myFavoriteNumber = 'seven'; myFavoriteNumber = 7; // 会报错 联合类型 1.表示取值可以为多种类型中的一种 2