char函数

2019-2020-11 20199317 《Linux内核原理与分析》 第十一周作业

杀马特。学长 韩版系。学妹 提交于 2019-12-06 05:39:49
ShellShock 攻击实验 1 ShellShock 简介 Shellshock,又称Bashdoor,是在Unix中广泛使用的Bash shell中的一个安全漏洞,首次于2014年9月24日公开。许多互联网守护进程,如网页服务器,使用bash来处理某些命令,从而允许攻击者在易受攻击的Bash版本上执行任意代码。这可使攻击者在未授权的情况下访问计算机系统。 2 实验目的 在本实验中,学生需要亲手重现攻击来理解该漏洞,并回答一些问题。 3 实验前的准备工作 3.1 环境搭建 以root权限安装4.1版bash(4.2版本以上的漏洞已经被堵上了) bash4.1 原来的下载地址是 http://ftp/gnu.org/gnu/bash/bash-4.1.tar.gz ,为了加快速度,我们这里使用下面的下载地址 http://labfile.oss.aliyuncs.com/bash-4.1.tar.gz 下载: 安装: 链接: 到这里就安装完了,接下来检测是否存在shellshock漏洞。 输出vulnerable的话,说明bash有漏洞。 上面的这个命令分为了两部分: 后面是 bash -c "echo this is a test" ,功能用bash执行后面的字符串中的命令,也就是把引号中的内容当成一个bash脚本来执行。 前面 env x='() { :; }; echo

esp8266气象站2

£可爱£侵袭症+ 提交于 2019-12-06 05:20:45
承接上一篇,使用的数据源仍然是心知天气提供的数据接口,可以每分钟查询20次,也就是做多3s请求一次数据 替换原有的nodemcu,使用了ttgo-display,芯片esp32,自带一个1.14‘的ips显示屏 2,实现查询最近三天的天气信息,串口终端以及tft显示,界面还有问题,下次换屏。 通过轮询的方式查询多地的天气, 3,存在的问题,tft_espi显示函数不太熟悉,缺少全面的函数调用说明/应该可以找到吧,依然是一个测试版本。 4,改进,下一版本准备中文字库,或许添加图标 /* esp32 weather station * 191130,ver2 * ttgo_版本,同时查询四个城市的天气状况,使用心天气api * 串口打印所有的天气信息 * 适配ttgo屏幕 */ // Libraries //#include <ESP8266WiFi.h> #include <WiFi.h> //esp32used #include <HTTPClient.h> #include <ArduinoJson.h> //使用ArduinoJson库 #include <TFT_eSPI.h> // Graphics and font library for ST7735 driver chip #include <SPI.h> #include <Button2.h> #ifndef

实验四

て烟熏妆下的殇ゞ 提交于 2019-12-06 05:12:17
这次写了一些老师上课提到的.... //冒泡排序#include <stdio.h> const int N=4; void output(char x[], int n); // 函数声明 void sort(char x[],int n); int main() { char string[N] = {'2','0','1','9'}; int i; printf("排序前: \n"); output(string, N); sort(string,N); printf("\n排序后: \n"); output(string, N); printf("\n"); return 0; } void sort(char x[],int n){ for(int i=N;i>=0;--i){ for(int j=0;j<i;++j){ if(x[j]<x[j+1]){ int tmp=x[j]; x[j]=x[j+1]; x[j+1]=tmp; } } } } void output(char x[], int n) { int i; for(i=0; i<N; i++) printf("%c", x[i]); } //输出为偶数的余数#include <stdio.h> void fun(int k,int bb[]) { int i; int j=0; for(i=1; i<=k;

继承设计

荒凉一梦 提交于 2019-12-06 04:59:04
1 .回顾类和对象的创建 定义学生类Student,包含私有数据成员:num(学号)、name(姓名,字符数组)、age(年龄);公有成员函数:Student(构造函数)、~Student(析构函数),使用构造函数为Student类对象的数据成员赋值 (name使用动态内存分配),在析构函数中释放动态分配的内存 ,显示函数display(显示学生信息)。 法一: #include<iostream> #include<string> using namespace std; class Student { private: long num; char* name; int age; public: Student() {} Student(long nu, char* na, int a) :num(nu), name(na), age(a) {} ~Student() {} void display() { cout << "学号:" << num << " " << endl << "姓名:" << name << endl << "年龄:" << age << endl; } }; int main() { char ch[] = "李丽"; Student* ptr = new Student();//① ptr = new Student(3018314, ch, 18

C++ sscanf()用法

时间秒杀一切 提交于 2019-12-06 04:13:33
\\转载 1. 常见用法 sscanf("123456 ", "%s", str); 2. 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。 sscanf("123456 ", "%4s", str); 3. 取到指定字符为止的字符串。如在下例中,取遇到空格为止字符串。 sscanf("123456 abcdedf", "%[^ ]", str); 4. 取仅包含指定字符集的字符串。如在下例中,取仅包含1到9和小写字母的字符串。 sscanf("123456abcdedfBCDEF", "%[1-9a-z]", str); 5. 取到指定字符集为止的字符串。如在下例中,取遇到大写字母为止的字符串。 sscanf("123456abcdedfBCDEF", "%[^A-Z]", str); 6. 用它来分隔类似这样的字符串2006:03:18: int a, b, c; sscanf( "2006:03:18", "%d:%d:%d", &a, &b, &c); 以及2006:03:18 - 2006:04:18: char sztime1[ 16] = "", sztime2[ 16] = ""; sscanf( "2006:03:18 - 2006:04:18", "%s - %s", sztime1, sztime2); 7. 原问题:iios/12DDWDFF

字符流中第一个不重复的字符

天大地大妈咪最大 提交于 2019-12-06 03:45:48
问题: 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。如果当前字符流没有存在出现一次的字符,返回#字符。 input: 字符流 output: 第一个只出现一次的字符 解题思路: 使用字典存储字符流中的字符以及每个字符出现的次数. 但为了获得 第一个 出现一次的字符,需要这个字典有序,或者能得到字符流的输入序列,因此有以下几种方法来解决: python3 中字典有序 使用list保存字符流内容,查找 第一个 时,就按list中顺序遍历 使用string 保存字符流内容, 查找 第一个 时,就按string中顺序遍历 另外一个获得字典的方法是: 先根据字符流得到list,这个list是有序的,之后使用 collect中的counter方法 计算字符出现的次数得到字典,最后按list顺序遍历查找. 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 from collections import

转载-经典面试题

◇◆丶佛笑我妖孽 提交于 2019-12-06 03:22:21
3.内功题   试题1:分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)   解答:    BOOL型变量:if(!var)    int型变量: if(var==0)    float型变量:    const float EPSINON = 0.00001;    if ((x >= - EPSINON) && (x <= EPSINON)    指针变量:  if(var==NULL)   剖析:   考查对0值判断的“内功”,BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思。   一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。   浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。如果写成if (x == 0.0),则判为错,得0分。 ==========

格式化输入输出

孤者浪人 提交于 2019-12-06 03:21:51
目录 格式化输入输出 printf原型 格式 scanf原型 格式 title: 格式化输入输出 date: 2019/11/29 20:26:40 toc: true --- 格式化输入输出 printf原型 #include <stdio.h> int printf(const char *format, ...); int fprintf(FILE *stream, const char *format, ...); int dprintf(int fd, const char *format, ...); int sprintf(char *str, const char *format, ...); int snprintf(char *str, size_t size, const char *format, ...); // 这个系列的函数可以看man的例子 #include <stdarg.h> int vprintf(const char *format, va_list ap); int vfprintf(FILE *stream, const char *format, va_list ap); int vdprintf(int fd, const char *format, va_list ap); int vsprintf(char *str, const

delphi 格式转换

戏子无情 提交于 2019-12-06 02:24:17
TO_CHAR 是把日期或数字转换为字符串 TO_DATE 是把字符串转换为数据库中得日期类型转换函数 TO_NUMBER 将字符转化为数字 TO_CHAR 使用TO_CHAR函数处理数字 TO_CHAR(number, '格式') TO_CHAR(salary,’$99,999.99’); 使用TO_CHAR函数处理日期 TO_CHAR(date,’格式’);  TO_NUMBER 使用TO_NUMBER函数将字符转换为数字 TO_NUMBER(char[, '格式']) TO_DATE 使用TO_DATE函数将字符转换为日期 TO_DATE(char[, '格式']) 数字格式格式 9 代表一个数字 0 强制显示0 $ 放置一个$符 L 放置一个浮动本地货币符 . 显示小数点 , 显示千位指示符  日期格式 格式控制 描述 YYYY、YYY、YY 分别代表4位、3位、2位的数字年 YEAR 年的拼写 MM 数字月 MONTH 月的全拼 MON 月的缩写 DD 数字日 DAY 星期的全拼 DY 星期的缩写 AM 表示上午或者下午 HH24、HH12 12小时制或24小时制 MI 分钟 SS 秒钟 SP 数字的拼写 TH 数字的序数词 “特殊字符” 假如特殊字符 HH24:MI:SS AM 15:43:20 PM 日期例子: SELECT TO_DATE('2006-05-01

Linux堆的一些基础知识

吃可爱长大的小学妹 提交于 2019-12-06 00:49:07
目录 堆的概述 什么是堆 堆的基本操作 堆操作背后的系统调用 堆的相关数据结构 微观结构 malloc_chuck chunk相关宏 bin 宏观结构 arena heap_info malloc_state 深入了解堆实现 堆初始化 malloc_consolidate() 创建堆 unlink 申请内存块 _libc_malloc _int_malloc 释放内存块 _libc_free 内容来源 堆的概述 什么是堆 堆用来在程序运行时动态的分配内存,对其实就是虚拟空间里从地址向高地址增长的连续的线性区域。 堆的基本操作 void *malloc(unsigned int size):作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是分配区域的起始地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。 void free(void *ptr):释放之前调用 calloc、malloc 或 realloc 所分配的内存空间。 堆操作背后的系统调用 brk():将数据段(.data)的最高地址指针_edata往高地址推。(从堆头开始,参数为地址) mmap():在进程的虚拟地址空间中(堆和栈中间,称为文件映射区域的地方)找一块空闲的虚拟内存。(分配大于128k) sbrk():将地址指针往高地址推。(从当前指针位置开始,参数为指针增量)