返回值

mvc view返回值

天大地大妈咪最大 提交于 2020-01-14 18:01:10
MVC View各种返回类型如下: public ContentResult Index() { return Content("测试"); //浏览器显示测试 } public EmptyResult Index() { return new EmptyResult(); //浏览器显示空白 } public FileResult Index() { return File(Server.MapPath("~/demo.jpg"), "application/x-jpg", "demo.jpg"); //浏览器直接下载demo.jpg } public HttpNotFoundResult Index() { return HttpNotFound(); //报404错误 } public HttpUnauthorizedResult Index() { return new HttpUnauthorizedResult(); //未授权的页面,跳转到/Account/LogOn } public JavaScriptResult hello() { string js = "alert('你还好吗?');"; return JavaScript(js); //页面显示 alert('你还好吗?');} 并不会执行这个js,要执行这个js可以在任意视图里<script src="

UNIX环境高级编程 第三章 文件I/O

回眸只為那壹抹淺笑 提交于 2020-01-14 02:48:55
UNIX环境高级编程——文件I/O 3.1 文件描述符 3.2 函数open和openat 参数 path: oflag: fd: 文件名和路径名截断 3.3 函数creat 3.4 函数close 3.5 函数lseek 3.6 函数read 3.7 函数write 3.8 I/O的效率 3.9 文件共享 3.10 原子操作 函数pread和pwrite 3.11 函数dup和dup2 3.12 函数sync、fsync和fdatasync 3.13 函数fcntl 3.14 函数ioctl 3.15 /dev/fd 3.1 文件描述符 作用:唯一表示一个文件(unix中设备也被看作文件) 当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。 文件描述符的范围:0~OPEN_MAX-1 标准shell建立的文件描述符关联: STDIN_FILENO (文件描述符:0):标准输入 STDOUT_FILENO (文件描述符:1):标准输出 STDERR_FILENO (文件描述符:2):标准错误 3.2 函数open和openat 利用open或openat函数可以打开或创建一个文件 # include <fcntl.h> int open ( const char * path , int oflag , . . . . ) ; int openat ( int

linux c获得时间和设置时间

穿精又带淫゛_ 提交于 2020-01-13 15:01:29
linux c获得时间和设置时间 #include<time.h> //C语言的头文件 #include<stdio.h> //C语言的I/O void main() { time_t now; //实例化time_t结构 struct tm *timenow; //实例化tm结构指针 time(&now); //time函数读取现在的时间(国际标准时间非北京时间),然后传值给now timenow = localtime(&now); //localtime函数把从time取得的时间now换算成你电脑中的时间(就是你设置的地区) printf( "Local time is %s/n",asctime(timenow)); //上句中asctime函数把时间转换成字符,通过printf()函数输出 } 注释:time_t是一个在time.h中定义好的结构体。而tm结构体的原形如下: struct tm { int tm_sec; //seconds 0-61 int tm_min; //minutes 1-59 int tm_hour; //hours 0-23 int tm_mday; //day of the month 1-31 int tm_mon; //months since jan 0-11 int tm_year; //years from 1900 int tm

系统安全——PAM模块

北慕城南 提交于 2020-01-13 13:15:09
本文为在前辈的文章基础之上学习总的PAM认证机制。 Linux提供的安全机制主要有:身份标识与鉴别、文件访问控制、特权管理、安全审计、IPC资源的访问控制。本文为身份标识与鉴别其中的部分。 0x01:PAM简介 PAM 的全称为“可插拔认证模块(Pluggable Authentication Modules)”。设计的初衷是将不同的底层认证机制集中到一个高层次的API中,从而省去开发人员自己去设计和实现各种繁杂的认证机制的麻烦。如果没有 PAM ,认证功能只能写在各个应用程序中,一旦要修改某个认证方法,开发人员可能不得不重写程序,然后重新编译程序并安装;有了 PAM ,认证的工作都交给 PAM ,程序主体便可以不再关注认证问题了:“ PAM 允许你进来,那你就进来吧。” 可插入身份认证模块,即为PAM机制。当用户在登录Linux时,首先要通过系统的PAM验证。PAM机制可以用来动态地改变身份验证的方法和要求,允许身份认证模块按需要被加载到内核中,模块在加入后即可用于对用户进行身份认证,而不需要重新编译其它公用程序。PAM体系结构的模块化设计及其定义的良好接口,使得无需改变或者干扰任何现有的登录服务就可以集成范围广泛的认证和授权机制,因此,近年来,对PAM的底层鉴别模块的扩展广泛应用于增强Linux操作系统的安全性。使本地系统管理员可以随意选择程序的认证方式。换句话说,不用

Python函数

╄→гoц情女王★ 提交于 2020-01-13 01:53:55
01. 函数的快速体验 1.1 快速体验 所谓 函数 ,就是把 具有独立功能的代码块 组织为一个小模块,在需要的时候 调用 函数的使用包含两个步骤: 定义函数 —— 封装 独立的功能 调用函数 —— 享受 封装 的成果 函数的作用 ,在开发程序时,使用函数可以提高编写的效率以及代码的 重用 02. 函数基本使用 2.1 函数的定义 定义函数的格式如下: def 函数名(): ​ 函数封装的代码 def 是英文 define 的缩写 函数名称 应该能够表达 函数封装代码 的功能,方便后续的调用 函数名称 的命名应该 符合 标识符的命名规则 可以由 字母 、 下划线 和 数字 组成 不能以数字开头 不能与关键字重名 2.2 函数调用 调用函数很简单的,通过 函数名() 即可完成对函数的调用 2.3 第一个函数演练 name = "小明" ​ ​ # 解释器知道这里定义了一个函数 def say_hello(): print("hello 1") print("hello 2") print("hello 3") ​ print(name) # 只有在调用函数时,之前定义的函数才会被执行 # 函数执行完成之后,会重新回到之前的程序中,继续执行后续的代码 say_hello() ​ print(name) 定义好函数之后,只表示这个函数封装了一段代码而已 如果不主动调用函数

Linux字符串函数集

戏子无情 提交于 2020-01-11 22:31:51
//Linux字符串函数集: 头文件:string.h   函数名: strstr   函数原型: extern char *strstr( char *str1, char *str2);   功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。   返回值:返回该位置的指针,如找不到,返回空指针。 包含文件:string.h   函数名: strstr   函数原型:extern char *strstr(char *str1, char *str2);   功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。   返回值:返回该位置的指针,如找不到,返回空指针。 原型: extern char *strchr( const char *s, char c);    const char *strchr( const char* _Str, int _Val)    char *strchr( char* _Str, int _Ch)   头文件:#include <string.h>   功能:查找字符串s中首次出现字符c的位置   说明:返回首次出现c的位置的指针,如果s中不存在c则返回NULL。   返回值:Returns the address of the first occurrence of

python学习笔记之初识函数

旧城冷巷雨未停 提交于 2020-01-11 14:35:15
初识函数 函数的定义 def my_len(s): #定义函数用def ,参数可写可不写 i = 0 for k in s: i += 1 return i #返回值 ret1 = my_len('今天也要努力工作呀') #传递参数:传参,实际参数,实参 ret2 = my_len([1,2,3,4,5]) #传递参数:传参 print(ret1) print(ret2) 函数的参数 定义函数的时候: 位置参数 : 直接定义参数 默认参数,关键字参数 :参数名 = '默认的值' 动态参数 : 可以接受任意多个参数 参数名之前加*,习惯参数名args,即*args 参数名之前加,习惯参数名kwargs,即kwargs 顺序:位置参数,*args,默认参数,kwargs 函数的返回值 返回值的3种情况: 1.没有返回值 —— 返回None 不写return 只写return:结束一个函数的继续 return None —— 不常用 2.返回1个值 可以返回任何数据类型 只要返回就可以接收到 如果在一个程序中有多个return,那么只执行第一个 3.返回多个值 用多个变量接收:有多少返回值就用多少变量接收 用一个变量接收: 得到的是一个元组 函数的注释 def func(): ''' 这个函数实现了什么功能 参数1: 参数2: :return: 是字符串或者列表的长度 ''' pass

Day05——Java基础——方法的定义、方法的调用、方法的重载

有些话、适合烂在心里 提交于 2020-01-11 10:43:05
Java中方法的定义与使用 在程序书写过程中,以指定方法名书写并提供用于完成指定功能的数据、参数的代码块称之为方法 按照特定语法定义书写的包含一条或多条执行语句的代码块 在其他语言中也称之为函数、过程 方法由五部分组成: Public static void main(String [] args){代码} 修饰符:用于修饰方法使方法具有某些”权限” 返回值类型:方法运行结束后返回的java中的数据类型 如果没有用void代替 (若方法定义时定义了非void 那么在代码块中必须使用return返回指定数据类型的数据) 方法名:自己定义的标识符 用于标识一个方法 通过方法名进行方法的查询与调用 参数列表:在方法调用时动态输入的数据(可以由0~无穷个变量组成) 代码块:方法执行过程中具体执行的代码 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) { 函数体; return 返回值; } 按照参数个数0或者其他个 有无返回值 方法分为四类: 无返回值 无参数的方法 用于那些固定功能。代码固定的方法定义(不建议定义此方法,不利于代码复用) 无返回值 有参数的方法 用于动态执行某些可以直接输出结果并展示的方法(可以定义但尽量减少,对于数据的使用不方便) 有返回值 无参数的方法 用于返回固定的数据(使用较少,与直接定义变量使用没有太大差别) 有返回值

集合介绍

不羁岁月 提交于 2020-01-11 09:49:08
1 1:集合 2 Collection(单列集合) 3 List(有序,可重复) 4 ArrayList 5 底层数据结构是数组,查询快,增删慢 6 线程不安全,效率高 7 Vector 8 底层数据结构是数组,查询快,增删慢 9 线程安全,效率低 10 LinkedList 11 底层数据结构是链表,查询慢,增删快 12 线程不安全,效率高 13 Set(无序,唯一) 14 HashSet 15 底层数据结构是哈希表。 16 哈希表依赖两个方法:hashCode()和equals() 17 执行顺序: 18 首先判断hashCode()值是否相同 19 是:继续执行equals(),看其返回值 20 是true:说明元素重复,不添加 21 是false:就直接添加到集合 22 否:就直接添加到集合 23 最终: 24 自动生成hashCode()和equals()即可 25 26 LinkedHashSet 27 底层数据结构由链表和哈希表组成。 28 由链表保证元素有序。 29 由哈希表保证元素唯一。 30 TreeSet 31 底层数据结构是红黑树。(是一种自平衡的二叉树) 32 如何保证元素唯一性呢? 33 根据比较的返回值是否是0来决定 34 如何保证元素的排序呢? 35 两种方式 36 自然排序(元素具备比较性) 37 让元素所属的类实现Comparable接口 38

day05_数组

こ雲淡風輕ζ 提交于 2020-01-10 23:16:20
容器概念 容器: 是将多个数据存储到一起,每个数据称为该容器的元素。 生活中的容器 :水杯,衣柜,教室 数组概念 数组: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致 数组的特点: 数组是一种引用数据类型 数组当中的多个数据,类型必须统一 数组的长度在程序运行期间不可改变 数组的初始化 在内存当中创建一个数组,并且向其中赋予一些默认值就是数组的初始化 两种常见的初始化方式: 动态初始化(指定长度): 在创建数组的时候,直接指定数组当中的数据元素个数。 静态初始化(指定内容): 在创建数组的时候,不直接指定数据个数多少,而是直接将具体的数据内容进行指定。 数组的定义 动态初始化数组 格式: 数据类型[] 数组名称 = new 数据类型[数组长度]; 数组定义格式详解: 数据类型: 创建的数组容器可以存储什么数据类型。 [ ] : 表示数组。 数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。 new:关键字,创建数组使用的关键字。 数据类型: 创建的数组容器可以存储什么数据类型。 [长度]:数组的长度,表示数组容器中可以存储多少个元素。 注意: 数组有定长特性,长度一旦指定,不可更改。和水杯道理相同,买了一个2升的水杯,总容量就是2升,不能多也不能少。 举例 // 创建一个数组,里面可以存放300个int数据 int[] arrayA = new