自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 162

原创 GitHub - 多人协同开发流程

多人协同开发流程

2020-03-19 15:43:36 491

原创 GitHub使用

一、GitHub的使用注册登录创建新的项目切换分支git checkout 分支给远程仓库起别名git remote add origin 远程仓库地址向远程推送代码git push -u origin 分支拉代码git pull origin dev克隆远程仓库代码git clone 远程仓库地址...

2020-03-14 12:23:18 166

原创 Git简介与操作、Git分支

一、Git是什么Git是分布式的版本控制软件类似QQ等电脑上的软件版本控制相当于毕业论文的对数据修改后的提交老师的多个版本分布式:文件夹拷贝本地版本控制集中式版本控制分布式版本控制Git:版本控制是先在本地上传然后同步到Git中心,Git中心保存所有的版本,这就是分布式版本控制二、为什么要版本控制?例如一个客户需要开发app,其中只有一个功能是首页,没有其他功能,这...

2020-03-12 19:43:16 129

原创 Redis主从配置

一、Redis主从配置如果有一天Redis缓存崩溃了,服务器的硬件损坏,缓存就没有了,那么用户流量就会直接访问数据库,从而增大了访问数据库的次数,瞬间就会把我们的网站搞崩了,这时候就就需要主从缓存,从缓存相当于是主缓存的备份。如果主缓存坏了,用户流量也可以在从缓存中读取,主从缓存跟主从数据库是保持数据一致的。主从数据库是用空间换时间,就是用内存换网站的访问速度,高可用性比服务器的空间重要,...

2020-03-08 10:58:10 223

原创 Python操作Redis

Python操作Reids1、安装Redispip install redis2、 连接Redis r = redis.StrictRedis(host='localhost',port=6379,db=0)Redis - stringimport redisclass StringRedis(object): # 初始化 def __init__(self)...

2020-03-07 21:51:47 120

原创 Redis - 五种数据类型——String、List、Hash、Set、Zset

一、redis-stringstring是redis最基本的类型,一个key对应一个valuestring可以包含任何数据,最大不能超过512Mset ---- 设置值 get ---- 获取值mset ---- 设置多个值mget ---- 获取多个值append ---- 添加字段del ---- 删除strlen ---- 返回字符串长度incr ----...

2020-03-07 21:43:05 597

原创 Redis

一、数据库的发展历史在互联网+大数据时代来临之前,企业的一些内部信息管理系统,一个单个数据库实例就能满足系统的需求单数据库实例随着系统访问用户的增多,数据量的增大,单个数据库实例已经满足不了系统的读取需求缓存(memcache)+单数据库实例缓存可以缓解系统的读取压力,但是数据量的写入压力持续增大,缓存+主从数据库+读写分离数据量再次增大,读写分离以后,主数据库的写库压力出现瓶颈、...

2020-03-05 13:47:29 149

原创 Web安全第10讲 - 存储型XSS测试、CSRF原理介绍、文件上传

一、存储型XSS测试环境搭建:1.下载ROCBOSS:https://www.rocboss.com/2.按照文档进行安装提示:如果开启了服务器、网址输入127.0.0.1/pconline 出现以下报错,打开 PHPstudy --> 其他选项菜单–> 软件设置 --> 允许目录列表如果...

2020-03-05 12:20:32 286

原创 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 290

原创 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 478

原创 Web安全第7讲 - MySQL注入读写文件、HTTP头中的SQL注入、绕过SQL注入

一、MySQL注入读写文件1.1 查看是否有权限在mysql读写文件读取前提:1.用户权限足够高,尽量具有root权限2.secure_file_priv不为null1.1.1 打开命令行查看show global variables like 'secure_file_priv';1.1.2 打开mysql-ini1.1.3 在最后添加,保存,并重启mysql服务se...

2020-02-20 21:43:05 419

原创 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 1241

原创 Web安全第5讲 - sqlmap检索DBMS信息、SQL注入原理

一、sqlmap检索DBMS信息获取后端数据库banner信息 参数 --banner或者-b获取当前数据库名 参数 --current-db获取主机名 参数 --hostname探测当前用户是否是数据库管理员 参数 --is-dbaSqlmap会先列举用户,再列举用户密码Hash值。 参数 --passwords获取DBMS所有用户 参数...

2020-02-18 17:43:34 427

原创 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 --banner1.2 sqlmap设置不接收HTTP B...

2020-02-14 15:11:19 531

原创 Web安全第3讲 - 信息收集 - sqlmap

一、sqlmapSqlmap是一个开源的渗透工具,它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程。他有一个强大的检测引擎,许多适合于终极渗透测试的小众特性和广泛的开关,从数据库指纹、从数据库获取数据到访问底层文件系统和通过带外连接在操作系统上执行命令官方网址:http://sqlmap.org/1.1 Sqlmap特点完全支持MySQL、Oracle、PostgreSQL...

2020-02-11 22:51:45 302

原创 Web安全第1讲 - 信息收集

一、信息收集1.1 域名的介绍域名(Domain Name)是有一串用点分割的名字组成的Internet上某一台计算机或者计算机组的名称,用于在数据传输是标识计算机的电子方位浏览网站的过程 从DNS服务器获得指定域名对应的IP地址1.2 WhoisWhois查询域名是否已经被注册,以及注册域名的详细信息的数据库(域名的所有人、域名注册商)1.web接口查询https://whois.a...

2020-02-08 20:41:03 239

原创 Web安全第2讲 - 信息收集 - shodan

一、shodan1.1 信息收集方式:主动信息收集:直接与目标进行交互,通过对交互过程中的信息进行收集被动信息收集:通过第三方引擎与目标交互,或不予目标交互查询数据库,获得目标的信息1.2 shodan搜索引擎介绍虽然目前人们都认为谷歌是最强的搜索引擎,但shodan才是互联网上最可怕的搜索引擎。与谷 歌不同的是,shodan不是在网上搜索网址,而是直接进入互联网的背后通道。shod...

2020-02-08 20:40:34 239

原创 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 404

原创 Python高级编程技巧第9讲 - Python GIL

一、Python GILGIL:全局解释器锁。每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码Python多线程的影响:python语言和GIL没有关系,仅仅是由于历史原因在Cpython虚拟机,难以移除GIL线程释放GIL锁的情况:在IO操作等可能会引起阻塞的system call之前,可以暂时释放GIL,但在执行完毕后,必须重新获取GIL,Python3使...

2020-02-05 17:07:57 380

原创 Python高级编程技巧第8讲 - Python多任务 - 协程

一、协程同步、异步同步:是指代码调用IO操作时,必须等待IO操作完成才返回的调用方式异步:是指代码调用IO操作时,不必等IO操作完成就返回的调用方式阻塞、非阻塞阻塞:从调用者的角度出发,如果在调用的时候,被卡住,不能再继续向下运行,需要等待,就说是阻塞非阻塞:从调用者的角度出发, 如果在调用的时候,没有被卡住,能够继续向下运行,无需等待,就说是非阻塞1.1生成器-send方法...

2020-01-24 12:20:45 479

原创 Python高级编程技巧第7讲 - Python多任务 - 进程

一、进程和程序进程:正在执行的程序程序:没有执行的代码,是一个静态的进程的状态1.1 使用进程实现多任务multiprocessing模块就是跨平台的多进程模块,提供了一个Process类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另外的事情。1.2 线程和进程之间的对比进程:能够完成多任务,一台电脑上可以同时运行多个QQ线程:能够完成多任务,一个QQ中...

2020-01-22 23:47:07 424

原创 Python高级编程技巧第6讲 - Python多任务 - 线程

一、线程1.1 多任务:有很多的场景中的事情是同时进行的,比如开车的时候 手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的1.2 多任务的理解:并行::真的多任务, cpu大于当前执行的任务并发::假的多任务 ,cpu小于当前执行的任务主线程会等到子线程执行结果之后主线程 才会结束守护线程 不会等子线程结束 t.setDaemon(True)等待子线程执行结束 主线程...

2020-01-15 23:53:00 285

原创 Python高级编程技巧第5讲 - Python socket编程

一、IP地址的介绍1.1 IP地址windows和Linux查看网卡信息Linux中 ifconfigwindows中 ipconfig1.1.1 IP地址的分类:1.2 端口1.2.1 端口分类1.知名端口(well known ports):80端口分配给HTTP服务21端口分配给FTP服务范围是从0到10232.动态端口:动态端口的范围是从102...

2020-01-09 23:05:12 222

原创 Python高级编程技巧第4讲 - 元类编程、属性描述符、自定义元类、迭代器和生成器

一、元类编程1.1 __getattr__和__getattribute__魔法函数在查不到属性的时候调用__getattr____getattribute__在 __getattr__之前执行,这个方法不能轻易重写from datetime import date,datetimeclass User: def __init__(self,name,birthday):...

2020-01-08 22:55:34 292

原创 Python高级编程技巧第3讲 - 垃圾回收机制、调试和性能分析、经典的参数错误

一、垃圾回收机制当这个对象的引用计数(指针数)为 0 的时候,说明这个对象永不可达,自然它也就成为了垃圾,需要被回收。import osimport psutil# 显示当前 python 程序占用的内存大小def show_memory_info(hint): pid = os.getpid() p = psutil.Process(pid) inf...

2020-01-08 11:30:52 280

原创 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 249

原创 Python高级编程技巧第1讲 - 深入类和对象

一、深入类和对象鸭子类型和多态多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚"鸭子类型"1.1 鸭子类型a = [1,2]b = [3,4]c = (5,6) # 元组 tupled = {7,8} # 集合 set 无序的# def extend(self,iterable): iterable可迭代的对象 可以用fora.exten...

2019-12-26 23:37:43 240

原创 数据库优化第13讲 - MySQL主从复制&命名规范

一、MySQL主从复制基本原理复制的三步骤master将改变记录到二进制日志。这些记录过程叫做二进制日志事件,binary log eventsslave将master的binary log events拷贝到它的中继日志slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行的复制的基本原则1.每个slave只有一个master每个slav...

2019-12-25 00:16:47 524

原创 数据库优化第12讲 - 数据库锁&数据库分区

一、数据库锁锁是计算机协调多个进程或线程并发访问某一资源的机制数据库锁表锁行锁间隙锁1.1 表锁偏向MyISAM存储引擎,开销小,加锁快;无死锁,锁定粒度大,发送锁冲突的概率最高,并发度低手动增加表锁lock table 表名字 read(write),表名字2 read(write);释放表锁unlock tables;表锁总结MyISAM在执行查询语句(sel...

2019-12-23 15:33:20 214

原创 数据库优化第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 674

原创 数据库优化第10讲 - 索引的优化

一、索引的优化单表、双表、三表口诀:全值匹配我最爱,最左前缀要遵守带头大哥不能死,中间兄弟不能断索引列上少计算,范围之后全失效like百分写最右,覆盖索引不写星不等空值还有or,索引失效要少用varchar引号不可丢,SQL高级也不难二、排序的优化分析1.观察,至少跑一天,看看生产的慢SQL情况2.开启慢查询日志,设置阙值,比如超过5秒钟的就是慢SQL,并抓取...

2019-12-22 22:20:30 146

原创 数据库优化第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 196

原创 数据库优化第8讲 - MySQL存储引擎&基准测试

一、存储引擎—MyISAM1.1 MySQL引擎之MyISAMMyISAM存储引擎表由MYD(数据文件)和MYI(索引文件)组成MyISAM存储引擎特性:1.并发性与锁级别2.表损坏修复3.MyISAM表支持数据压缩myisampack -b -f myIsam.MYI 1.2 锁:锁主要作用是管理共享资源的并发访问锁用于实现事务的隔离性锁的类型共享...

2019-12-19 23:55:18 195

原创 数据库优化第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 327

原创 数据库优化第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 109

原创 数据库优化第5讲 - MySQL外键、Python与MySQL交互

数据库优化第5讲 - 自关联、MySQL外键自关联

2019-12-05 22:33:34 231 1

原创 数据库优化第4讲 - 聚合函数、分组、排序、分页、连接查询、子查询、自关联

数据库优化第4讲 - 聚合函数、分组、排序、分页、连接查询、子查询、自关联一、聚合函数 -- count -- 查询学生总数 select count(*) from students; -- 查询男性有多少人,女性有多少人 select count(*) as 男性人数 from students where gender = 1; select count(*) as 女性人数...

2019-12-04 16:37:00 476

原创 数据库优化第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 113

原创 数据库优化第2讲 - 数据库的操作

一、数据库的操作 -- 连接数据库 mysql -u root -proot -- 不推荐 密码直接展示 mysql -uroot -p --退出数据库 exit/quit -- sql语句最后需要有分号;结尾 -- 显示数据库版本 select version(); -- 显示时间 select now(); -- 查看所有数据库 ...

2019-12-04 15:43:56 113

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除