import time from multiprocessing.dummy import Pool import requests import os filename = 网易云飙升榜// if not os.path.exists(filename): os.mkdir(filename) url = https://music.163.com/weapi/v6/playlist/detail?csrf_token= headers = { user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 } params = { params: 5fFJz3vX8o556VRwH1lQ1VOPliD5GUpmLB0gF92Q4bRf4q6wXyfj9/4BQ8DJMwvDErkW4wg7lfU+9wMLRL8J/pQpgFWbMCRpGBAmLHAmiRA=, encSecKey: 571762ea14eec58ed6b4e2f230a031e2c777eb0c37fe9f1e3727d19910660c138be02fa469da2d5c139a86f59da13fad1bac3e065d01eaed594a6a575d61189c4db2e0d1b3bf1f0d10ac86a2fbad554f82a9722a22066546b2dbd356ea4e612649ceb79560004363b531bbf43344617bd204fe50362ade347c37a0b9008383de } resp = requests.post(url=url, headers=headers, params=params).json() dic = {} result = [] for music_info in resp[playlist][tracks]: music_url = f'http://music.163.com/song/media/outer/url?id={music_info[id]}.mp3' dic = { 'url': music_url, 'name': music_info[name] } result.
昨日内容回顾
* 存取演变史 ```python # 1.普通文本文件 # 2.软件开发目录规范 # 3.数据库应用 ``` * 应用发展史 ```python # 1.本地服务 # 2.网络服务 ``` * 数据库本质 ```python # 数据库与数据库软件的区别 数据库可以指代正在运行的专门处理数据的进程 数据库软件指代的是操作该进程的快捷方式(软件) # 数据库软件的本质 CS架构的软件 ``` * 数据库分类 ```python # 1.关系型数据库 主要特征就是有固定的表结构 MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server # 2.非关系型数据库 主要特征就是K:V键值对存取 Redis、MongoDB、Memcache ``` * SQL与NoSQL ```python # 语句的由来 为了解决服务端兼容性问题 SQL指代的就是操作关系型数据库的语句 NoSQL指代的就是操作非关系型数据库的语句 ``` * MySQL下载与安装 ```python # 版本问题 window使用5.6.X即可(5.6.44) mac使用8.0X linux目前无需掌握 # 下载安装 下载压缩包并解压 先测试启动是否可行(cmd命令) ``` * 系统服务制作 ```python 1.环境变量添加 2.系统服务制作 mysqld --install 3.
task 1
1 print(sum) 2 sum = 42 3 print(sum) 4 5 def inc(n): 6 sum = n + 1 7 print(sum) 8 return sum 9 10 sum = inc(7) + inc(7) 11 print(sum) question:task1.py源码中,共有4处有python语句print(sum)(line1, line3, line7, line11)。这4处使用的标识符sum是代表一个变量名吗?如果不是,请分别指出这4行中变量sum的作用域。
answer:不是。
1.Built-in
2.Global
3.Local
4.Global task 2_1
1 def func1(a,b,c,d,e,f): 2 ''' 3 返回参数a,b,c,d,e,f构成的列表 4 默认,参数按位置传递;也支持关键词传递 5 ''' 6 return [a,b,c,d,e,f] 7 8 9 def func2(a,b,c,*,d,e,f): 10 ''' 11 返回参数a,b,c,d,e,f构成的列表 12 *后面的参数只能按关键词传递 13 ''' 14 return [a,b,c,d,e,f] 15 16 17 def func3(a,b,c,/,d,e,f): 18 ''' 19 返回参数a,b,c,d,e,f构成的参数 20 /前面的参数只能按位置传递 21 ''' 22 return[a,b,c,d,e,f] 23 24 25 print( func1(1,9,2,0,5,3)) 26 print( func1(a = 1,b = 9,c = 2,d = 0,e = 5,f = 3)) 27 print( func1(1,9,2,f = 3,d = 0,e = 5)) 28 29 print( func2(11,99,22,d = 0,e = 55,f = 33)) 30 print( func2(a = 11,b = 99,c = 22,d = 0,e = 55,f = 33)) 31 32 print( func3(111,999,222,0,555,333)) 33 print( func3(111,999,222,d = 0,e = 555,f = 333)) line30后增加一行函数
目录 字符编码 存储引擎 创建表的完整语法 字段类型之整型 字段类型之浮点型 字段类型之字符串 数字含义 字段类型之枚举与集合 字段类型之日期类型 字段类型约束条件 内容 字符编码 查看MySQL默认字符编码 \s
5.x系列显示的编码有很多种:Latin1;gbk
8.x系列:统一显示utf8mb4
utf8mb4是utf8优化版本,支持存储表情
统一字符编码 5.X默认编码有多种,可能会导致乱码的情况,所以应该统一编码
my-default.ini配置文件
步骤1:拷贝一份该配置文件并修改名称为my.ini 步骤2:清空my.ini文件内的内容 步骤3:添加固定的配置信息即可 步骤4:保存并重启服务端即可生效: 配置信息:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
存储引擎 存储引擎可以理解为处理数据的不同方式 查看存储引擎 show engines
引擎 MyISAM:5.1之前版本MySQL默认的存储引擎;特点:存取数据的速度快,但是功能很少,安全性较低
InnoDB:5.1之后版本MySQL默认的存储引擎;特点:有诸多功能,安全性较高,存取速度没有MyISAM快
BlackHole:任何写入的数据都会立刻消失(类似于垃圾回收处理站)
Memory:以内存作为数据存取地,速度快但是断电立刻丢失 自定义选择存储引擎 create table t1(id int)engine=myisam;
1、解决DOS攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP 并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频 率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT
#!/bin/bash log=/tmp/tmp.log [ -f $log ] || touch $log function add_iptables(){ while read line do ip=`echo $line|awk '{print $2}'` count=`echo $line|wc -l` if [ $count -gt 100 ] && [`iptables -L -n|grep $ip|wc -l` -lt 1 ] then iptables -I INPUT -s $ip -jDROP echo $line isdropped >>/tmp/droplist.log fi done<$log } function main(){ while true do netstat -an|grep EST|awk '{print $(NF-1)}'|awk -F '[:]' '{print $1}'|sort|uniq -c >$log add_iptables sleep 180 done } main 2、描述密钥交换的过程
终于又更新博客了,这次更新的内容是关于C++学习记录的。 1 #include <iostream> 2 #include <cstring> 3 4 //using namespace std; // 这种方式会包含许多不需要的内容 5 using std::cout; // 这种方式就很轻便 6 using std::endl; 7 using std::string; 8 9 // C++手册,https://www.apiref.com/cpp-zh/index.html 10 11 // 结构体的用法,C++中默认是public; 而struct换成class后变为private 12 struct Stu 13 { 14 int age = 27; 15 string name = Heze; 16 int height = 171; 17 void action() { cout << he is writing the code ! << endl; } 18 }; 19 20 bool compair(string str1, string str2) 21 { 22 if(str1 < str2) { cout << str1 << endl; } 23 else{ cout << str2 << endl;} 24 } 25 26 // 内联函数 27 inline void show() 28 { 29 cout << hello C++ !
目录一.字符编码与配置文件二.存储引擎三.创建表的完整语法四.字段类型之整型六.字段类型之浮点型七.字段类型之字符串八.数字的含义九.字段类型之枚举与集合十.字段类型值日期类型十一.约束条件
一.字符编码与配置文件 字符编码与配置文件 \s
统一字符编码 X默认编码有多种 可能会导致乱码的情况 所以应该统一编码 my-default.ini配置文件
步骤1:拷贝一份该配置文件并修改名称为my.ini 步骤2:清空my.ini文件内的内容 步骤3:添加固定的配置信息即可
[mysqld] character-set-server=utf8 collation-server=utf8_general_ci [client] default-character-set=utf8 [mysql] default-character-set=utf8 步骤4:保存并重启服务端即可生效 net stop mysql 关闭服务器 net start mysql 启动服务器
二.存储引擎 存储引擎可以理解为处理数据的不同方式
查看存储引擎 show engines;
5.1之前版本MySQL默认的存储引擎 MyISAM : 存取数据的速度快 但是功能很少 安全性较低
5.1之后版本MySQL默认的存储引擎 InnoDB : 有诸多功能 安全性较高 存取速度没有MyISAM快
BlackHole : 任何写入的数据都会立刻消失
Memory : 以内存作为数据存取地 速度快但是断电立刻丢失
自定义选择存储引擎
create table t1(id int)engine=myisam\innob\blackhole\memory;
三.创建表的完整语法 create table 表名 (字段名1 字段类型(数字) 约束条件)
1.字段名与字段类型是必须的 2.数字和约束条件是可选择的(不加也行有的默认) 3.约束条件可以写多个 空格隔开 4.
1.cat -n 文件名.log | grep '关键词' | more/less > 文件名.txt 查看文件名.log(-n 显示内容的同时显示行号)中 | 含有'关键词'的词条 | 并分页显示(空格翻页 q退出)/分页逐行可上下查阅 q退出 > 并保存到文件名.txt文件中
ps: 多个方法可通过 | 隔开一起使用 例如 ls | grep '文件名'
一、USB总线介绍 1.1 简介 我们之前接触过的通信协议有串口、I2C、SPI以及CAN总线,这里我们又去学习USB总线,那USB和之前我们介绍过那些总线有什么区别呢。
通用串行总线(英语:Universal Serial Bus,缩写:USB)是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其它相关领域。
在USB总线出现之前,计算机与键盘、鼠标、扫描仪、打印机等的设备连接都使用专用的接口连接,不同的设备的接口不能互用,扩展性很差,每次插拔设备都要关闭计算机,不支持热插拔,且通信速率很低。
为了解决上述问题,USB总线诞生了。USB总线就好像一条管道,管道里流过的东西只要符合USB协议,至于具体流的是什么东西,USB总线并不关心。对应具体的设备上,只要是支持USB协议的设备,都可以连接计算机,如USB键盘、USB鼠标、USB摄像头、USB音箱等。USB的出现简化了计算机与外围设备的连接,增强了扩展性,支持热插拔,且通信速度很快。
1.2 USB协议版本 从USB协议诞生至今,出现了多个USB协议版本,如USB1.0、USB1.1、USB2.0、USB3.0、USB3.1、USB3.2。最新的是USB4.0协议,可直连CPU的PCIe总线,最大速度可达40Gbps,使用Type-C接口,兼容DP视频协议、PD快充协议等,最高支持100W供电。
USB协议版本速率称号最大速率电源类型推出时间 USB1.0 低速(Low-Speed) 1.5Mbps 5V/500mA 半双工 1996年1月 USB1.1 全速(Full-Speed) 12Mbps 5V/500mA 半双工 1998年9月 USB2.0 高速(High-Speed) 480Mbps 5V/500mA 半双工 2000年4月 USB3.0(USB3.2 Gen1) 超高速(SuperSpeed USB) 5Gbps 5V/900mA 全双工 2008年月11月 USB3.1(USB3.2 Gen2) SuperSpeed USB 10Gbps 10Gbps 20V/5A 全双工 2013年月7月 USB3.2(USB3.2 Gen2×2) SuperSpeed USB 20Gps 20Gbps 20V/5A dual-lane 2017年月9月 USB4.
Linux 安装并配置 OpenLDAP 新编(3)YUM安装 我实操OpenLDAP的过程,是先根据官网资料编译安装,大约花费了近2周时间,也有点陷入牛角尖了,一时不得出。后来加了一个群,经过提醒发现了配置文件中的不同,但是依旧不得其果,最终还是自行再折腾了几遍YUM方式的安装,终于才对比发现了一些问题所在,同时也进一步了解了更多内容,知其所以然~~
注意!注意!注意! 根据官方信息来说,2.4不再推荐使用,2.5为LTS版本,2.6为特性版本。因此虽然本章为了省事是基于2.4编写的,仅用于研究,依旧不建议在生产环境中部署了。
安装 前往symas选择对应OpenLDAP版本在相应OS中的repo仓库文件。
symas同时还提供了一些第三方库,可根据具体情况决定是否安装。
wget -q https://repo.symas.com/configs/SOFL/rhel8/sofl.repo -O /etc/yum.repos.d/sofl.repo yum update yum install symas-openldap-servers systemctl start slapd 再次回到那句老话 设定先行! ,这里什么叫设定先行?
openldap-clients : 我并没有安装 symas 提供的客户端,安装的是系统自带的客户端,当前版本为:2.4.46; 同为 symas 提供的源,2.4 和 2.5 、 2.6 的安装过程略有不同,2.5 与 2.6 安装后要先配置,否则无法启动。切记!切记!切记! ; 理论上,2.5 和 2.6 在启动前的配置方法,应该和源码安装后的配置是一样的,这里 未实测 。 默认配置 如上所说,对于 OpenLDAP2.4 来说,安装后直接启动即会成功运行服务。然鹅……上一章所谓带着问题的问题是什么?我们要操作的DN是什么?密码是什么?
身份验证 上章的结尾,提到使用 SASL 机制添加前面创建的条目时会提示没有写入权限,现在我们利用前面的文件再试一下:
ldapadd -Q -Y EXTERNAL -H ldapi:// -f add_group.ldif # 一般会返回如下结果 adding new entry ou=group,dc=example,dc=com ldap_add: Server is unwilling to perform (53) additional info: no global superior knowledge 诶?先不要管具体的错误原因,但至少身份验证很显然是通过了,这是为什么呢?