使用部分python包可能会出现一下错误,
ImportError: libglog.so.0: cannot open shared object file: No such file or directory 具体:
解决办法,安装libgoogle-glog-dev (需要sudo权限):
$ sudo apt install libgoogle-glog-dev 安装完之后:
1. 静态文件
<div class=form-group> <label for=exampleInputFile>上传文件</label> <input type=file name=file> </div> 2. views.py
from django.shortcuts import render,HttpResponse def upload_list(request): if request.method == 'GET': return render(request, 'upload_list.html') #获取文件 file_obj = request.FILES.get('file') # 写入文件 f = open(file_obj.name, mode='wb') for chunk in file_obj.chunks(): f.write(chunk) f.close() return HttpResponse('111')
Linux有许多功能是通过模块的方式,在需要时才载入kernel。如此可使kernel较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程序。
语法 insmod [-fkmpsvxX][-o <模块名称>][模块文件][符号名称 = 符号值] 参数说明:
-f 不检查目前kernel版本与模块编译时的kernel版本是否一致,强制将模块载入。 -k 将模块设置为自动卸除。 -m 输出模块的载入信息。 -o<模块名称> 指定模块的名称,可使用模块文件的文件名。 -p 测试模块是否能正确地载入kernel。 -s 将所有信息记录在系统记录文件中。 -v 执行时显示详细的信息。 -x 不要汇出模块的外部符号。 -X 汇出模块所有的外部符号,此为预设置。 例如:
# insmod usb.o rmmod usb.o insmod是一个modutils模块实用程序,执行init_module函数这个程序完成下面一系列工作:
1.计算存放模块代码、模块名和module对象所需要的内存大小。2.在用户空间中分配一个内存区,把module对象、模块名以及为正在运行的内核所重定位的模块代码拷贝到这个内存里。其中,module对象中的init域指向这个模块的入口函数重新分配到的地址;exit域指向出口函数所重新分配的地址。3.调用init_module(),向它传递上面所创建的用户态的内存区的地址,4. 接着声明内核引用该模块;5. 呼叫该模块的初始化涵数6.释放用户态内存, 整个过程结束。
一、有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
1、写三个for循环,分别循环这四个数字,最内层的循环使用set的去重功能判断是否有重复数字、无则将数字拼接 2、将得到的数字放入一个set集合中,自动去重 3、集合元素的个数即为组成的数字个数 res = set() for x in range(1, 5): for y in range(1, 5): for z in range(1, 5): if len({x, y, z}) == 3: tmp = str(x) + str(y) + str(z) res.add(tmp) print('共组成{}个互不相同且无重复数字的三位数'.format(len(res))) print('组成的数字如下:') for i in sorted((list(res))): print(i, end=' ') 二、企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
1、获取键盘输入作为利润,注意input获取的输入都为str类型,需要转换为float(注意不要转换为int,若利润有小数则会报错) 2、使用if..elif..条件语句进行判断利润是否在某个区间 3、通过该区间的奖金提成比例、计算对应的奖金数 4、单位为万,便于计算 profit = float(input('请输入利润(单位为万):')) if profit <= 10: res = profit * 0.1 elif profit < 20: res = 10 * 0.
作者:TASK_RUNNING链接:https://www.jianshu.com/p/60e7238876a2
我们在驱动编程时,如果程序内使用了死循环,则一般会使CPU的占用率达到100%,某些情况下,我们希望降低CPU使用率,那应该怎么办呢?
1. schedule_timeout schedule_timeout,做了两件事:
设置timer schedule 此调用并没有改变进程的状态TASK_RUNNING,所以在__schedule()中,不会把进程从运行队列中移出去。当系统进行调度的时候,这个进程仍然会被调度进来。
2. schedule_timeout_interruptible schedule_timeout_interruptible, 在调用schedule之前,会先调用set_current_state设置进程状态,所以会将进程移出运行队列。从而达到降低CPU使用率的作用。 类似的还有: schedule_timeout_uninterruptible, schedule_timeout_killable
源码分析kernel/time/timer.c 1801/** 1802 * schedule_timeout - sleep until timeout 1803 * @timeout: timeout value in jiffies 1804 * 1805 * Make the current task sleep until @timeout jiffies have elapsed. 1806 * The function behavior depends on the current task state 1807 * (see also set_current_state() description): 1808 * 1809 * %TASK_RUNNING - the scheduler is called, but the task does not sleep 1810 * at all.
目录管理 绝对路径和相对路径 Linux的目录结构为树状结构,最顶级的目录为根目录 / 。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们
cd:切换目录命令
./:当前目录
cd.. :返回上一级
绝对路径:路径的写法,由根目录/ 写起,例如:/usr/share/dac这个目录
相对路径:不是由 / 写起,由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd/usr/share/doc/man 这就是相对路径的写法
处理目录的常用命令 ls: 列出目录
cd:切换目录
pwd:显示目前的目录
mkdir:创建一个新的目录
rmdir:删除一个空的目录
cp: 复制文件或目录
rm: 移除文件或目录
mv: 移动文件与目录,或修改文件与目录的名称
可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
ls: 列出目录 语法:
[pjs@bogon ~]$ ls [-aAdfFhilnrRSt] 目录名称 选项与参数:
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)
将目录下的所有文件列出来(含属性与隐藏档)
String.h 1 //#pragma once 2 #include<iostream> 3 #include<string.h> 4 #include<cstring> 5 using namespace std; 6 7 class String { 8 protected: 9 //串的数据成员 10 char* sVal; //串值 11 size_t length;//长度 12 13 public: 14 //串的成员函数 15 String(); //构造函数 16 virtual ~String(); //析构函数 17 String(const String& s); //复制构造函数 18 String(const char* s); //转换构造函数 19 //String(LinkList<char>&s); //从线性表转换的构造函数 20 int GetLength() const; //求长度 21 bool IsEmpty() const; //判断串是否为空 22 String& operator = (const String& s); //赋值语句重载 23 const char* CStr() const; //将串转换为字符数组 24 char& operator[](int p) const; //重载下标运算符 25 }; 26 27 //串的相关函数定义P121 - P124 28 29 int BF_find(const String& ob, const String& pat); 30 31 32 33 34 35 36 37 String.
#include<stdio.h> #define MAXSIZE 10 //默认的最大长度 //顺序表类型定义 typedef struct { int *elem; //指示动态分配数组的指针 int length; //顺序表的当前长度 }SqList; //初始化顺序表 bool InitList(SqList &L){ L.elem=new int[MAXSIZE]; //为顺序表分配空间 if(!L.elem) //存储分配失败 return false; L.length=0; return true; } //销毁顺序表 void DestroyList(SqList &L){ if(L.elem) delete L.elem; //释放存储空间 } //清空顺序表 void ClearList(SqList &L){ L.length=0; } //求顺序表的长度 int GetLength(SqList L){ return L.length; } //判断顺序表是否为空 bool IsEmpty(SqList L){ if(L.length==0) return true; else return false; } //顺序表的取值(取第i个元素) bool GetElem(SqList L,int i,int &e){ if(i<1 || i>L.
1数据(Data) 什么是数据
在JavaSE中,我们说过这样一句话,数据要运算,必须先存储,那么java中存储数据是使用变量,那么计算机怎么存储?文件
2. 数据库(DataBase) 数据库:顾名思义,就是用来存储数据的仓库。
文件跨平台性能差的原因是不是操作系统之间存储方式不一样,那么数据库为什麽就可以解决?
遵循一定数据格式的数据集合。
特点:可以认为它是对文件系统的改进。它解决了不同操作系统之间,数据格式的兼容性问题。也就是说,只要是同一个数据库的数据文件,即使是从Windows迁移到了Linux上,也可以正常处理的。
3. 数据库的分类 画红框的是我们重点关注的
Oracle
这是一种关系型数据库。它的特点是闭源收费,但是功能强大稳定,而且有一支专业的技术支撑团队。使用这种数据库的一般是大型企业、银行业、金融业。
MySQL
它也是关系型数据库。它的特点是开源免费,功能还是不错的,也比较稳定。通常使用这种数据库的,是中小企业等。因为它是开源的,所以我们有些企业可以对它做定制化、二次开发,以支持自己特殊的业务。比如阿里。说它是目前应用最广泛的DBMS,是MySQL的订制二次开发,也是比较好用。
Redis
Redis是非关系型数据库(Not Only SQL)。它通常用K-V键值对的形式存储数据,使用场景为缓存(可做为关系型数据库的补充)。基于内存存储的,数据都是在内存中,所以访问速度要快。Redis还提供了定期向磁盘中进行序列化的机制,它的IO性能也是非常高的。
MongoDB
这个也是NOSQL数据库。它使用文档形式存储数据。它使用文档形式存储数据。使用场景,通常是大数据量高并发访问。它的性能也非常高。
关系型数据库
关系型数据库 对于java而言,一个类就可以对应一个表,一个类对象就可以对应表中一行数据,一个成员变量可以对应表中的一个列(字段),能够做到一一的映射,数据库中是以表作为基本单位的。除此之外,关系型数据库的关系主要体现在它自己的关系模型,反应了表与表之间的关系。
非关系型数据库
是存储键值对的,每个表之间不存在关联,都是独立的。但是它既有关系型数据库处理数据的方便性,还能处理大量数据,比较火的就是Redis、mongoDB。
4.MYSQL简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle旗下产品。MySQL 是最流行的关系型数据库关系系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS(Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就提高了灵活性和精准性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
数据库对象:
表,视图,函数,存储过程,索引等。
表
就是存储数据的,里面有一条条的记录,记录是由字段组成的。每个字段都有自己的字段名、字段值、字段类型(数据类型)。字段是存储数据的基本单元。类似Java中的对象,用于存储数据。
视图
我们可以理解为一张虚表(它在物理磁盘上并不真实存在)。视图是基于select语句查询生成的结果集。当一条select语句比较复杂而且调用的频率也比较高时,我们不想再写一遍语句,这时候可以把这条select语句创建为一个视图。每次使用视图的时候,就可以把它当成一张表来用。
函数
通常是一个功能的实现,我们大部分使用的是系统函数(MYSQL提供的),我们也可以自定义函数。它的调用套路通过使用select 函数名(参数1,参数2..);来调用。它只有一个返回值。
存储过程
也是一个功能的实现。我们所说的数据库编程,SQL语句编程,就主要是指自定义一个存储过程。调用存储过程是使用exec 存储过程名 参数1等来调用。它是可以返回多个值,也可以没有返回值。
索引
我们之前接触过,它就像一本书的目录一样,是为了加快我们查询速度而建立的。
Redis-rdb-tools与rdr工具学习与使用 简要说明 rdb工具是python写的一套工具,可以分析dump文件,获取key等信息. rdb其实有一套rdb-profiler工具, 能够导出为html文件,但是发现已经太久了已经无法解析了. rdr 工具是雪球开源的一套简易的redis dump文件分析工具, 能够简要进行展示较大值的key rdr 的命令简单,但是今天发现他的数据值并不是非常精确.这里也总结一下,放在最后面. rdb 工具简要说明 安装 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel # 安装必须的部分组件 # 注意 我选用了之前离线安装python3以及pip的目录. 可以直接使用相对路径进行安装和处理 cd /opt/python3/bin ./pip install rdbtools -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com # 注意编译好了 再其他环境上可以复制整个python3的目录.用来使用. 这边引用一下之前写过的内容 https://mp.weixin.qq.com/s?__biz=MzU2MTA2MzQyNw==&mid=2247484342&idx=1&sn=a82bcff79faabf6ed308717bb46544f5&chksm=fc7f30dacb08b9cc7d19ec7ed7b03bde3cb52cd8bf5cb07bb68b4acab5a2b7576a238ead90dd&token=55803608&lang=zh_CN#rd 简单使用-获取redis的dump文件 第一步修改获取python3 刚才的文件夹 解压缩到 /opt/ 目录下面 第二步修改环境变量 echo 'PATH=$PATH:/opt/python3/bin/' > /etc/profile.