- 博客(58)
- 问答 (1)
- 收藏
- 关注
原创 python虚拟环境
为什么需要虚拟环境: 背景: 项目1:django_project_01 环境:python3.6 + redis + mysql + win10 库:django1.10 项目2:django_project_02 环境:python3.6 + redis + mysql + win10 库:django0.9 这时候python版本是3.6,这时候在你的电脑上要开发2个项目...
2020-04-04 14:40:59
214
原创 GitHub使用
一、GitHub的使用 注册 登录 创建新的项目 切换分支 git checkout 分支 给远程仓库起别名 git remote add origin 远程仓库地址 向远程推送代码 git push -u origin 分支 拉代码 git pull origin dev 克隆远程仓库代码 git clone 远程仓库地址 ...
2020-03-14 12:23:18
218
原创 Git简介与操作、Git分支
一、Git是什么 Git是分布式的版本控制软件 类似QQ等电脑上的软件 版本控制相当于毕业论文的对数据修改后的提交老师的多个版本 分布式: 文件夹拷贝 本地版本控制 集中式版本控制 分布式版本控制 Git:版本控制是先在本地上传然后同步到Git中心,Git中心保存所有的版本,这就是分布式版本控制 二、为什么要版本控制? 例如一个客户需要开发app,其中只有一个功能是首页,没有其他功能,这...
2020-03-12 19:43:16
170
原创 Redis主从配置
一、Redis主从配置 如果有一天Redis缓存崩溃了,服务器的硬件损坏,缓存就没有了,那么用户流量就会直接访问数据库,从而增大了访问数据库的次数,瞬间就会把我们的网站搞崩了,这时候就就需要主从缓存,从缓存相当于是主缓存的备份。如果主缓存坏了,用户流量也可以在从缓存中读取,主从缓存跟主从数据库是保持数据一致的。 主从数据库是用空间换时间,就是用内存换网站的访问速度,高可用性比服务器的空间重要,...
2020-03-08 10:58:10
274
原创 Python操作Redis
Python操作Reids 1、安装Redis pip install redis 2、 连接Redis r = redis.StrictRedis(host='localhost',port=6379,db=0) Redis - string import redis class StringRedis(object): # 初始化 def __init__(self)...
2020-03-07 21:51:47
162
原创 Redis - 五种数据类型——String、List、Hash、Set、Zset
一、redis-string string是redis最基本的类型,一个key对应一个value string可以包含任何数据,最大不能超过512M set ---- 设置值 get ---- 获取值 mset ---- 设置多个值 mget ---- 获取多个值 append ---- 添加字段 del ---- 删除 strlen ---- 返回字符串长度 incr ----...
2020-03-07 21:43:05
668
原创 Redis
一、数据库的发展历史 在互联网+大数据时代来临之前,企业的一些内部信息管理系统,一个单个数据库实例就能满足系统的需求 单数据库实例 随着系统访问用户的增多,数据量的增大,单个数据库实例已经满足不了系统的读取需求 缓存(memcache)+单数据库实例 缓存可以缓解系统的读取压力,但是数据量的写入压力持续增大, 缓存+主从数据库+读写分离 数据量再次增大,读写分离以后,主数据库的写库压力出现瓶颈、...
2020-03-05 13:47:29
209
原创 Web安全第10讲 - 存储型XSS测试、CSRF原理介绍、文件上传
一、存储型XSS测试 环境搭建: 1.下载ROCBOSS:https://www.rocboss.com/ 2.按照文档进行安装 提示: 如果开启了服务器、网址输入127.0.0.1/pconline 出现以下报错,打开 PHPstudy --> 其他选项菜单 –> 软件设置 --> 允许目录列表 如果 ...
2020-03-05 12:20:32
339
原创 Web安全第9讲 - XSS攻击(下)
一、属性中的XSS发现 1、 select元素可创建单选或多选菜单 <select name="p2"> <option>Japan</option> <option>Germany</option> <option>USA</option> <option>United...
2020-03-05 12:19:58
343
原创 Web安全第8讲 - XSS攻击(上)
一、XSS跨站脚本分类 跨站脚本攻击(Cross Site Scripting),为了不和 层叠样式表(Cascading Style Sheets ) 的缩写混淆, 故将跨站脚本攻击缩写为XSS。恶意攻击者往web页面里插入恶意script代码,当用户浏览该 页时,嵌入其中web里面的script代码会被执行,从而达到恶意攻击用户的目的 1.1 cookie介绍(相当于一个通行证) 由于HTTP...
2020-02-22 18:55:23
542
原创 Web安全第7讲 - MySQL注入读写文件、HTTP头中的SQL注入、绕过SQL注入
一、MySQL注入读写文件 1.1 查看是否有权限在mysql读写文件 读取前提: 1.用户权限足够高,尽量具有root权限 2.secure_file_priv不为null 1.1.1 打开命令行查看 show global variables like 'secure_file_priv'; 1.1.2 打开mysql-ini 1.1.3 在最后添加,保存,并重启mysql服务 se...
2020-02-20 21:43:05
491
原创 Web安全第6讲 - SQL注入 - GET和POST请求
一、SQL注入 GET和POST请求 GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL 和传输数据,多个参数用&连接 POST提交:把提交的数据放置在是HTTP包的包体中。 因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变 二、 GET基于报错的SQL注入 通过url中修改对应的ID值,为正常数字、字符(单引号...
2020-02-18 18:09:27
1353
原创 Web安全第5讲 - sqlmap检索DBMS信息、SQL注入原理
一、sqlmap检索DBMS信息 获取后端数据库banner信息 参数 --banner或者-b 获取当前数据库名 参数 --current-db 获取主机名 参数 --hostname 探测当前用户是否是数据库管理员 参数 --is-dba Sqlmap会先列举用户,再列举用户密码Hash值。 参数 --passwords 获取DBMS所有用户 参数...
2020-02-18 17:43:34
490
原创 Web安全第4讲 - sqlmap性能优化&sqlmap注入参数&sqlmap注入技术参数
一、sqlmap性能优化 1.1 sqlmap设置持久HTTP连接(长连接) sqlmap中可以设置连接为持久连接。HTTP报文中设置 connection:keep-alive 命令行: python sqlmap.py -u "http://127.0.0.1/sqli/Less-1/?id=1" --keep-alive --banner 1.2 sqlmap设置不接收HTTP B...
2020-02-14 15:11:19
613
原创 Web安全第3讲 - 信息收集 - sqlmap
一、sqlmap Sqlmap是一个开源的渗透工具,它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程。他有一个强大的检测引擎,许多适合于终极渗透测试的小众特性和广泛的开关,从数据库指纹、从数据库获取数据到访问底层文件系统和通过带外连接在操作系统上执行命令 官方网址:http://sqlmap.org/ 1.1 Sqlmap特点 完全支持MySQL、Oracle、PostgreSQL...
2020-02-11 22:51:45
373
原创 Web安全第1讲 - 信息收集
一、信息收集 1.1 域名的介绍 域名(Domain Name)是有一串用点分割的名字组成的Internet上某一台计算机或者计算机组的名称,用于在数据传输是标识计算机的电子方位浏览网站的过程 从DNS服务器获得指定域名对应的IP地址 1.2 Whois Whois查询域名是否已经被注册,以及注册域名的详细信息的数据库(域名的所有人、域名注册商) 1.web接口查询 https://whois.a...
2020-02-08 20:41:03
292
原创 Web安全第2讲 - 信息收集 - shodan
一、shodan 1.1 信息收集方式: 主动信息收集:直接与目标进行交互,通过对交互过程中的信息进行收集 被动信息收集:通过第三方引擎与目标交互,或不予目标交互查询数据库,获得目标的信息 1.2 shodan搜索引擎介绍 虽然目前人们都认为谷歌是最强的搜索引擎,但shodan才是互联网上最可怕的搜索引擎。与谷 歌不同的是,shodan不是在网上搜索网址,而是直接进入互联网的背后通道。shod...
2020-02-08 20:40:34
302
原创 Web安全 - SQLI 和 DVWA 靶场测试环境的配置
一、SQLI 靶场环境配置 首先下载 PHPstudy:https://www.xp.cn/,并且安装到D盘根目录下 1️⃣. 进入http://sqlmap.org/ ,下载对应系统的安装包 2️⃣ 解压当前文件夹 3️⃣ 复制到 D:\PHPStudy\PHPTutorial\WWW 目录下 (注意:此文件夹的下级是很多文件的,我也不知道怎么说,反正点击进去有很多文件就是了!!...
2020-02-08 20:38:50
484
原创 Python高级编程技巧第9讲 - Python GIL
一、Python GIL GIL:全局解释器锁。每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码 Python多线程的影响: python语言和GIL没有关系,仅仅是由于历史原因在Cpython虚拟机,难以移除GIL 线程释放GIL锁的情况:在IO操作等可能会引起阻塞的system call之前,可以暂时释放GIL,但在执行完毕后,必须重新获取GIL,Python3使...
2020-02-05 17:07:57
442
原创 Python高级编程技巧第8讲 - Python多任务 - 协程
一、协程 同步、异步 同步:是指代码调用IO操作时,必须等待IO操作完成才返回的调用方式 异步:是指代码调用IO操作时,不必等IO操作完成就返回的调用方式 阻塞、非阻塞 阻塞:从调用者的角度出发,如果在调用的时候,被卡住,不能再继续向下运行,需要等待,就说是阻塞 非阻塞:从调用者的角度出发, 如果在调用的时候,没有被卡住,能够继续向下运行,无需等待,就说是非阻塞 1.1生成器-send方法...
2020-01-24 12:20:45
517
原创 Python高级编程技巧第7讲 - Python多任务 - 进程
一、进程和程序 进程:正在执行的程序 程序:没有执行的代码,是一个静态的 进程的状态 1.1 使用进程实现多任务 multiprocessing模块就是跨平台的多进程模块,提供了一个Process类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另外的事情。 1.2 线程和进程之间的对比 进程:能够完成多任务,一台电脑上可以同时运行多个QQ 线程:能够完成多任务,一个QQ中...
2020-01-22 23:47:07
472
原创 Python高级编程技巧第6讲 - Python多任务 - 线程
一、线程 1.1 多任务: 有很多的场景中的事情是同时进行的,比如开车的时候 手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的 1.2 多任务的理解: 并行::真的多任务, cpu大于当前执行的任务 并发::假的多任务 ,cpu小于当前执行的任务 主线程会等到子线程执行结果之后主线程 才会结束 守护线程 不会等子线程结束 t.setDaemon(True) 等待子线程执行结束 主线程...
2020-01-15 23:53:00
321
原创 Python高级编程技巧第5讲 - Python socket编程
一、IP地址的介绍 1.1 IP地址 windows和Linux查看网卡信息 Linux中 ifconfig windows中 ipconfig 1.1.1 IP地址的分类: 1.2 端口 1.2.1 端口分类 1.知名端口(well known ports): 80端口分配给HTTP服务 21端口分配给FTP服务 范围是从0到1023 2.动态端口: 动态端口的范围是从102...
2020-01-09 23:05:12
286
原创 Python高级编程技巧第4讲 - 元类编程、属性描述符、自定义元类、迭代器和生成器
一、元类编程 1.1 __getattr__和__getattribute__魔法函数 在查不到属性的时候调用__getattr__ __getattribute__在 __getattr__之前执行,这个方法不能轻易重写 from datetime import date,datetime class User: def __init__(self,name,birthday): ...
2020-01-08 22:55:34
340
原创 Python高级编程技巧第3讲 - 垃圾回收机制、调试和性能分析、经典的参数错误
一、垃圾回收机制 当这个对象的引用计数(指针数)为 0 的时候,说明这个对象永不可达,自然它也就成为了垃圾,需要被回收。 import os import psutil # 显示当前 python 程序占用的内存大小 def show_memory_info(hint): pid = os.getpid() p = psutil.Process(pid) inf...
2020-01-08 11:30:52
342
原创 Python高级编程技巧第2讲 - 对象深度问题与解决技巧
一、如何派生内置不可变类型并修改其实例化行为 我们想自定义一种新类型的元组,对于传入的可迭代对象,我们只保留其中int类型且值大于0的元素,例如: IntTuple([2,-2,'jr',['x','y'],4]) => (2,4) class IntTuple(tuple): def __new__(cls, iterable): # for i i...
2019-12-30 00:19:21
296
原创 Python高级编程技巧第1讲 - 深入类和对象
一、深入类和对象 鸭子类型和多态 多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚"鸭子类型" 1.1 鸭子类型 a = [1,2] b = [3,4] c = (5,6) # 元组 tuple d = {7,8} # 集合 set 无序的 # def extend(self,iterable): iterable可迭代的对象 可以用for a.exten...
2019-12-26 23:37:43
293
原创 数据库优化第13讲 - MySQL主从复制&命名规范
一、MySQL主从复制 基本原理 复制的三步骤 master将改变记录到二进制日志。这些记录过程叫做二进制日志事件,binary log events slave将master的binary log events拷贝到它的中继日志 slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行的 复制的基本原则 1.每个slave只有一个master 每个slav...
2019-12-25 00:16:47
625
原创 数据库优化第12讲 - 数据库锁&数据库分区
一、数据库锁 锁是计算机协调多个进程或线程并发访问某一资源的机制 数据库锁 表锁 行锁 间隙锁 1.1 表锁 偏向MyISAM存储引擎,开销小,加锁快;无死锁,锁定粒度大,发送锁冲突的概率最高,并发度低 手动增加表锁 lock table 表名字 read(write),表名字2 read(write); 释放表锁 unlock tables; 表锁总结 MyISAM在执行查询语句(sel...
2019-12-23 15:33:20
286
原创 数据库优化第11讲 - 排序优化&慢查询日志&Show Profile
一、排序的优化 分析 观察,至少跑一天,看看生产的慢SQL情况 开启慢查询日志,设置阙值,比如超过5秒钟的就是慢SQL,并抓取出来 explain + 慢SQL分析 show profile(相当于体检报告) 进行SQL数据库服务器的参数调优(运维orDBA来做) 总结 慢查询的开启并捕获 explain+慢SQL分析 show profile查询SQL在MySQL服务器里面的执行细节 SQ...
2019-12-23 15:12:44
743
原创 数据库优化第10讲 - 索引的优化
一、索引的优化 单表、双表、三表 口诀: 全值匹配我最爱,最左前缀要遵守 带头大哥不能死,中间兄弟不能断 索引列上少计算,范围之后全失效 like百分写最右,覆盖索引不写星 不等空值还有or,索引失效要少用 varchar引号不可丢,SQL高级也不难 二、排序的优化 分析 1.观察,至少跑一天,看看生产的慢SQL情况 2.开启慢查询日志,设置阙值,比如超过5秒钟的就是慢SQL,并抓取...
2019-12-22 22:20:30
193
原创 数据库优化第9讲 - explain分析SQL语句
一、explain分析SQL语句 1.1 影响服务器性能的几个方面: 1.服务器硬件 2.服务器的操作系统 3.数据库存储引擎的选择 4.数据库参数配置 5.数据库结构设计和SQL语句 1.2 SQL性能下降原因 查询语句写的不好 索引失效 关联查询太多join 服务器调优及各个参数设置 1.3 SQL加载顺序 1.3.1 手写SQL的顺序 select distinct <...
2019-12-21 00:05:27
248
原创 数据库优化第8讲 - MySQL存储引擎&基准测试
一、存储引擎—MyISAM 1.1 MySQL引擎之MyISAM MyISAM存储引擎表由MYD(数据文件)和MYI(索引文件)组成 MyISAM存储引擎特性: 1.并发性与锁级别 2.表损坏修复 3.MyISAM表支持数据压缩 myisampack -b -f myIsam.MYI 1.2 锁: 锁主要作用是管理共享资源的并发访问 锁用于实现事务的隔离性 锁的类型 共享...
2019-12-19 23:55:18
259
原创 数据库优化第7讲 - MySQL高级-视图&事务&索引&存储引擎介绍
一、视图 视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 1.定义视图 create view 视图名称 as select语句; 2.查看视图:查看表会将所有的视图也列出来 show tables; 3.使用视图:视图的用途就是查询 select * from v_stu_score; 4.删除视图:drop view...
2019-12-10 23:30:03
374
原创 数据库优化第6讲 - 封装类、查询、增删改的商品练习
一、封装类练习 from pymysql import * class Mydb(): # 初始化 def __init__(self): conn = self.conn() #连接数据库 def conn(self): try: self.conn = connect( host=...
2019-12-09 18:53:38
141
原创 数据库优化第4讲 - 聚合函数、分组、排序、分页、连接查询、子查询、自关联
数据库优化第4讲 - 聚合函数、分组、排序、分页、连接查询、子查询、自关联 一、聚合函数 -- count -- 查询学生总数 select count(*) from students; -- 查询男性有多少人,女性有多少人 select count(*) as 男性人数 from students where gender = 1; select count(*) as 女性人数...
2019-12-04 16:37:00
547
原创 数据库优化第3讲 - 数据库的查询
一、数据库的查询 1.1 MySQL查询 select基础语法 select * from 表名字; select完整语法 select 去重选项 字段列表 [as 字段别名] from 数据源 [where子句] [group by 子句] [having子句] [order by 子句] [limit子句]; 1.2 查询 -- 查询所有字段 -- select * from 表名;...
2019-12-04 16:22:20
154
原创 数据库优化第2讲 - 数据库的操作
一、数据库的操作 -- 连接数据库 mysql -u root -proot -- 不推荐 密码直接展示 mysql -uroot -p --退出数据库 exit/quit -- sql语句最后需要有分号;结尾 -- 显示数据库版本 select version(); -- 显示时间 select now(); -- 查看所有数据库 ...
2019-12-04 15:43:56
144
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人