fdisk -l 或者
parted -l
collections模块 这个模块实现了特定目标的容器,以提供Python标准内建容器 dict、list、set、tuple 的替代选择。
1.ametuple 具名元组 namedtuple('名称',[名字1,名字2,...]) namedtuple('名称','名字1 名字2 ...') 2.queue 内置队列模块(解释器自带) # 内置队列模块:FIFO import queue q = queue.Queue() # 初始化队列 q.put('添加内容') #往队列中添加元素 #从队列中获取元素 print(q.get()) # 值去没了则原地等待 3.deque 双端队列模块 from collections import deque q = deque([11,22,33]) q.append(44) # 从右边添加 q.appendleft(55) # 从左边添加 print(q.pop()) # 从右边取值 print(q.popleft()) # 从做边取值 4.orderedDict 有序字典 from collections import OrderedDict order_dict = OrderedDict([('name', 'lili'), ('age', 17)]) order_dict['hobby'] = 'read' print(order_dict) 5.defaultdict 默认字典 from collections import defaultdict values = [11, 22, 33,44,55,66,77,88,99,90] my_dict = defaultdict(list) for value in values: if value > 60: my_dict['k1'].
背景介绍 本地已经安装好一个MySQL版本号 5.7.27 ,端口号 3306 现想安装个较新版本的以供后期学习
一、下载所需版本mysql 打开 MYSQL官网 ,划到最下方 DOWNLOADS栏,选择 MYSQL Community Server 点击 Archives选择其他版本,下载 所需版本 此处可根据需要选择不同版本 ,我选择 的是8.0.18版本 下载后解压到一个没有中文,空格,特殊符号的目录中 ,此处我放在 D:\Environment\mysql-8.0.18
二、配置环境变量 新建一个系统变量,地址指向 mysql 存放目录
将新建的这个系统变量添加到 Path 中 可以看到 path 中有两个mysql 的系统变量
查看本地 path 变量可才命令提示符中输入 echo %PATH% 查看
若系统变量错误,则不会显示具体的路径,而是显示错误的引用路径 正确应为 %MYSQL8.0.18_HOME%\bin; 此处少了个百分号结束符
三、安装并配置 mysql 服务 新建 my.ini 文件 注意端口号设置为未被占用的端口,basedir 为mysql 存放目录,datadir 为 basedir\data
[mysqld] # 设置 3307 端口 port=3307 # 设置 mysql 的安装目录 basedir=D:\Environment\mysql-8.0.18 # 设置 mysql 数据库的数据的存放目录 datadir=D:\Environment\mysql-8.
Java基本数据类型 对于Java语言来说,它是一个强类型语言。因此对于所有变量的生成,都必须先声明一种类型。Java中对于数据类型主要分为引用数据类型和基本数据类型。本节主要对基本数据类型做一个介绍。
Java中对基本数据类型主要分为八种。其中4中整型、2种浮点类型、一种字符类型和一种用于表示真值的类型。
整形 整形用于表示没有小数部分的数值,可以是负数,Java提供了四种整形,如下表所示
类型存储需求取值范围 int 4字节 -2147483648~2147483647 short 2字节 -32768~32767 long 8字节 -9223372036854775808~9223372036854775805 byte 1字节 -128~127 浮点类型 浮点类型用于表示有小数部分的数值,
类型存储需求取值范围 float 4字节 double 8字节 一般来说,double数值的精度一般是float的两倍。float类型的值后面一般加一个后缀F或者f。而没有后缀F或者f的一般默认为double类型,当然double类型后缀D或者d。
char类型 对于char类型来说,其原本的含义是用来表示单个字符。不过现在也可以用来表示Unicode字符。char类型一般通过单引号括起来,比如A和'A'是不一样的,前者表示字符串,后者表示单个字符。char中类型的值可以用十六进制表示,范围从\u0000到\uFFFF----也就是所谓的Unicode编码。
除了转义字符\u以外,还有以下转义
转义序列名称UNICODE \b 退格 \u0008 \t 制表 \u0009 \n 换行 \u000a \r 回车 \u000d \ 双引号 \u0022 \' 单引号 \u0027 \\ 反斜杠 \u005c //\u000A is a newline 当你在java程序块里面又上面的注释的时候,你的程序就会报错,因为\u000A代表一个换行符,因此直接报错。
dynamic_cast应用于类的指针、类的引用或者 void*。 dynamic_cast运算符可以在执行期决定真正的类型。
如果downcast是安全的(也就说,如果基类指针或者引用确实指向一个派生类对象)这个运算符会传回适当转型过的指针。 如果downcast不安全,这个运算符会传回空指针(也就是说,基类指针或者引用没有指向一个派生类对象)。 dynamic_cast 主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。 基类指针下转时,如果发现指向的不是一个发生在多态中的子类对象,则会返回 NULL指针以后判断使用。
#include <iostream> using namespace std; class A { public: virtual ~A(){} }; class B:public A{}; class C:public A{}; class D{}; //downcast no-relation int main(int argc, char *argv[]) { // if(typeid(*pa) == typeid(b)) B b; A *pa = &b; B* pb = dynamic_cast<B*>(pa); if(pb != NULL) cout << pb != NULL << endl; else cout << pb == NULL << endl; C *pc = dynamic_cast<C*>(pa); if(pc !
一,需要解决的问题? 1.1,核心需求是:近期我需要部署本地代码到服务器,想现在本地走一下整体流程及简单原理。 1.2,相关知识: Nginx相关概念
二,部署思路 整体思路分两步:使用tornado启动django项目,然后通过Nginx进行部署。
1,通过tornado启动本地Django项目(而非本地的manage.py运行项目); 1.1,需要达到的前提条件 需要先用manage.py跑通项目
1.2,在1.1的基础上在manage.py同级目录新建tornado启动代码(tornado框架本身我不是很了解,只能不求甚解的贴出代码) 代码如下:
# tonadoService.py10 import os 11 from tornado.options import options, define 12 from tornado import httpserver 13 from tornado.ioloop import IOLoop 14 from tornado import wsgi 15 from django.core.wsgi import get_wsgi_application 16 17 port = 8000 18 projectName = renting 19 20 os.environ.setdefault('DJANGO_SETTINGS_MODULE', '{}.settings'.format(projectName)) 21 22 application = get_wsgi_application() 23 define('port', port, type=int) 24 25 if __name__ == '__main__': 26 options.
from:https://zhuanlan.zhihu.com/p/409007775 前言 其实,bootlin就是一个听不错的阅读源码的工具了,可以非常方便的帮我们查阅函数、宏的定义、引用等等。而且是基于浏览器,对我们本机的配置没有什么过高的要求。
但是如果想要做一些注释,修改,那我们就要将源码下载到本地了,这个时候我们可能就需要其他的工具了。
Clion我最熟悉的C/C++ IDE,我非常喜欢Jetbrains家族的IDE,因此使用Clion来阅读/注释/修改源码,就成了我的首选,很可惜的是,Linux kernel是通过Makefile进行构建的,然后Clion是用的是CMake,因此如果我们想要借助Clion来阅读源码,就需要生成Linux kernel的Cmake文件!
目前来看,可以成功的实现使用Clion来阅读/注释/修改源码,但是不能成功的进行编译,因此编译还得用make,不过这个无伤大雅!
配置要求 Clion需要大量的缓存内核文件,因此我们必须保证本机有足够的内存,并调高Clion的堆内存配置,本机至少要有8G内存,Clion堆内存至少调整到4G以上。配置方法:
点击CLion的状态栏上的Help->Change Memory Settings,然后修改MAX Heap Size,如下图所示,我将其调整到了8G,我本机有24G。然后重启配置生效!
源码准备 安装编译必须的工具
sudo apt update && sudo apt upgrade sudo apt-get install git zstd fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison 下载源码,最好到The Linux Kernel Archives下载源码的压缩包,然后再解压!
tar -zxf linux-5.14.2.tar.xz cd linux-5.14.2 使用本机的配置文件来配置内核
cp /boot/config-$(uname -r) .config make menuconfig 上述过程其实就是编译内核的步骤。
注意:直接使用ubuntu的.config在编译时可能遇到如下的错误:
No rule to make target 'debian/certs/
[email protected]', needed by 'certs/x509_certificate_list' 以及:
No rule to make target 'debian/canonical-revoked-certs.
ISCSI共享存储 ISCSI,小型计算机系统接口,又称为IP-SAN,是一种基于因特网及SCSI-3协议下的存储技术,它可以共享镜像文件(*.img)、分区(partition)、物理硬盘和逻辑卷等。现在使用ISCSI技术实现局域网内共享物理磁盘和磁盘分区。
1. 环境准备 1.1硬件环境 两台CentOS7.6的机器,一台额外安装2个硬盘的机器,用作存储设备。 两台机器均可访问Internet 1.2 软件环境 对额外挂载两个磁盘的机器,中的一个磁盘做分区操作
磁盘分区
[root@server ~]# fdisk /dev/sdc Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0xf9c6e7e6. Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): First sector (2048-20971519, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): Using default value 20971519 Partition 1 of type Linux and of size 10 GiB is set Command (m for help): w The partition table has been altered!
一.安装tesseract 1.下载链接 https://digi.bib.uni-mannheim.de/tesseract/
2.网盘下载地址 链接:https://pan.baidu.com/s/1CLPSf2TahIGaeL7zRCTQDg 提取码:x0kn
3.配置环境变量 3.1配置TESSDATA_PREFIX变量3.2配置Path变量
4.验证是否安装成功: C:\Users\特昂糖>tesseract -v tesseract 4.00.00alpha leptonica-1.74.1 libgif 4.1.6(?) : libjpeg 8d (libjpeg-turbo 1.5.0) : libpng 1.6.20 : libtiff 4.0.6 : zlib 1.2.8 : libwebp 0.4.3 : libopenjp2 2.1.0 5.命令行使用 tesseract --list-langs命令可查看当前软件支持的语言 C:\Users\特昂糖> tesseract --list-langs List of available languages (2): eng osd 6.拓展语言包 到https://github.com/tesseract-ocr/tessdata下载需要的的语言包,如下图,红框内为中文简体语言包,下载后将该包直接放在程序安装目录的tessdata文件夹里面即可。
二.安装pytesseract 安装命令:pip install pytesseract
C:\特昂糖>pip install pytesseract WARNING: Ignoring invalid distribution -ip (f:\python3\lib\site-packages) WARNING: Ignoring invalid distribution -ip (f:\python3\lib\site-packages) Collecting pytesseract Using cached pytesseract-0.
①nginx并发量优化
nginx.conf文件内work_process 是nginx进程数量这个数目最多可以修改为和cpu内核数目一致。
event下的work_connections 可以修改并发数目
②nginx数据包头优化
客户端发送数据包给到web服务器内存再打开,在配置文件里可以修改nginx使用多大的内存打开数据包
在http下client_header_buffer_size 1k #请求包头信息的缓存
large_client_header_buffers 4 4k #大请求包头信息的缓存个数与容量
先用1k内存,如果不够就用4个4k=16k
③nginx缓存时间优化
缓存的时间是有服务端决定的
location下 expire 30d #定义客户端的缓存时间是30天
④nginx的日志切割
logback.sh
date ='date+%Y%m%d'
logpath= /usr/local/nginx/logs
mv $logpath/access.log $logpath/access-$date.log
kill -USR1 $(cat $logpath/nginx.pid)
⑤nginx对页面进行压缩处理
页面的图片文本元素压缩处理
http下gzip on;#所有的浏览器都支持gzip解压
gizp_comp_level 4; #压缩比率
⑥服务器内部缓存优化
访问时资源从硬盘里放到内存里
因为硬盘的效率小于内存的效率
缺点是如果访问硬盘的资源被更改那么内存的相同资源不会更改
http下open_file_cache max=2000 inactive=20s #最多缓存2000个文件,关闭20s内无人访问的文件