- 博客(28)
- 资源 (7)
- 收藏
- 关注
原创 python优化之用辅助函数来取代复杂的表达式
python优化之用辅助函数来取代复杂的表达式抛出问题:通常我们从URL中解码查询字符串:test_values = parse_qs('parms_a=0&parms_b=2&parms_c=3&parms_d=', keep_blank_values=True)print(test_values)输出{'parms_a': ['0'], 'parms_b': ['2'], 'parms_c': ['3'], 'parms_d': ['']}这个时候我们拿到参数的
2021-05-09 16:27:58 284
原创 python之bytes、str与unicode详解
今天我们来讲讲最最基础的东西,也是帮自己总结一下一、字符类型python3 中有两种表示字符序列的类型:bytes和str,bytes的实例包含原始的8位值,str包含的是unicode字符python2 也有两种,叫str和unicode,与python3不同,str的实例包含原始的8位值,而unicode的实例则是unicode字符何为原始的八位值:就是原始的字节,由于每个字节有8个二进制位,所以就是原始的8位值二、如何转换将unicode字符表示为二进制数据有很多种方法,最常见的编码方式是
2021-03-28 17:49:10 758
转载 mysql数据库表设计及sql优化总结(干货分享)
自己记录了一些mysql数据库的优化,针对于平时在工作中遇到的问题,做了一些总结1、数据库设计及表的创建要考虑性能设计表时,要注意:表字段避免null值出现,null值很难查询优化且占用额外的索引空间,推荐默认数字0代替null。尽量使用INT而非BIGINT,如果非负则加上UNSIGNED(这样数值容量会扩大一倍),当然能使用TINYINT、SMALLINT、MEDIUM_INT更好。使用枚举或整数代替字符串类型尽量使用TIMESTAMP而非DATETIME单表不要有太多字段,建议在20以
2021-03-27 14:13:59 482
转载 (收藏)Shell 分析服务器日志命令
Shell 分析服务器日志命令服务器系统为linux系统1、查看有多少个IP访问:awk '{print $1}' log_file|sort|uniq|wc -l2、查看某一个页面被访问的次数:grep "/index.php" log_file | wc -l3、查看每一个IP访问了多少个页面:awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file > log.txtsort -n -t ' ' -k 2 log.txt
2021-02-26 14:08:37 200
原创 (收藏)Python 10个正则表达式写法
关于Python 10个正则表达式写法主要是用到了 re这个库(1)、其中re.compile用于编译正则表达式,生成一个正则表达式( Pattern )对象(2)、 .findall用于在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。1、邮箱包含大小写字母,下划线,阿拉伯数字,点号,中划线表达式:[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)示例:strs = 'mrzhou@qq.com'
2021-01-13 16:26:49 706
原创 SQL防注入攻击之检测工具sqlmap的使用
今天突然想到了SQL防注入,于是想测试一下,顺便也把教程发出来这里使用到的是sqlmap工具,一款用python编写的请注意:这个sqlmap需要python2才可以正常执行,python3不行前言:一、什么是SQL防注入?攻击者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码。举例:’ OR ‘1’='1这是最常见的 SQL注入攻击,当我们输如用户名 admin ,然后密码输如’
2020-10-21 19:31:11 1818
原创 (读书笔记)关于msyql中的死锁
整个国庆长假自闭了,加上这段时间比较忙,所以一直没有更新,工作日一般晚上回家会看会书,然后总结一下,写写博客,然后存为草稿,一直到第二天白天才会发布出来,为什么要到第二天才发布,是因为白天会花个半小时检查一下,然后再发布好了,回归正题,这章节讲的是mysql中的死锁一、死锁的概念(1)在数据库中,死锁是指两个及两个以上的事务在执行过程中,因争夺锁资源造成一种相互等待的现象。(2)解决死锁最简单的方式是不要有等待,将所有等待的事务都进行回滚,让事务重新开始,虽然这可以解决问题,但是在生产环境中,这种操
2020-10-15 11:01:54 91
原创 python对PDF分割、合并、裁剪等
PyPDF2PyPDF2是一个第三方的python PDF库,它能够对PDF文件进行分割、合并、裁剪和转换页面。另外,它还可以对PDF文件添加自定义数据、水印、密码,也可以从PDF文件中检索出文本和元数据。安装使用pip直接安装:$ pip install PyPDF2下面就来演示几项PDF编辑功能,并且会逐行解释代码的含义。删除PDF页先给出实现代码,```bashfrom PyPDF2 import PdfFileWriter, PdfFileReaderoutput = Pd
2020-09-29 10:12:47 3725
原创 (读书笔记)mysql中的阻塞
mysql中的阻塞:因为锁之间的不兼容性,有些时刻一个事务中的锁需要等待另外一个事务中的锁释放它所占用的资源,我们称这种方式为阻塞,有时候,为了确保事务的正常进行,就需要阻塞在innoDB存储引擎中,参数innodb_lock_wait_timeout用来控制等待的时间(默认是50秒),innodb_rollback_on_timeout 用来设定是否在等待超时时对进行中的事务进行回滚操作(默认是OFF,代表不回滚)。参数innodb_lock_wait_timeout是动态的,可以在mysql数据库运
2020-09-15 16:08:37 211
原创 nginx报错upstream prematurely closed connection while reading response header from upstream
今天出现了一个这样的问题nginx报错upstream prematurely closed connection while reading response header from upstream导致这样的问题原因是,上游服务器阻塞了,没有响应,然后导致接口无法连接,从nginx内部看http的tcp并没有建立连接或者只是完成3次挥手的一半,然后服务器一直没有响应syn标记导致发现这样的问题之后,我的上游服务器使用的是uwsgi,于是我看了看我的uwsgi报错日志invalid request
2020-09-10 11:25:43 6188
原创 (读书笔记)关于InnoDB引擎中的一致性锁定读
我们上篇主要讲到,在默认配置下,即事务的隔离级别为 REPEATABLE READ模式下,InnoDB 存储引擎的select操作使用一致性非锁定读但是在某些情况下,用户需要显式地对数据库读取操作进行加锁以保证数据逻辑的一致性。而这要求数据库支持加锁语句,就算是select只读操作,InnoDB 存储引擎支持两种一致性的锁定读操作:1、SELECT .... FOR UPDATE2、SELECT LOCK IN SHARE MODE第一种对读取记录加一个排他锁,其他事务不能对已经锁定的行加上任何的
2020-08-28 16:09:21 798
原创 (读书笔记)mysql中InnoDB的一致性非锁定读
一致性的非锁定读的意思是InnoDB通过行多版本控制的方式来读取当前执行数据库中行的数据1、如果读取的行正在执行update或者delete操作时,这时读取操作不会因此去等待行的锁释放,而是会去读取一个行的一个快照数据2、之所以称为非锁定读,因为不需要等待行上锁的释放,快照数据指的是行之前的版本数据,该实现通过undo段来完成,而undo用来在事务中回滚数据,因此快照数据本身没有额外的开销。此外读取快照数据是不需要上锁的,因为没有事务需要对历史数据进行更改操作3、非锁定读机制从某种程度上极大的提高的
2020-08-26 17:27:36 193
原创 nginx_upstream_check_module模块健康检查并实现双机热备
因为使用nginx自带的健康检查模块是被动检查的,即请求到一台服务器上报错500之后,发现有问题再转发到其他服务器,这样就多了一次转发消耗,而且并不能对某个接口进行检查,有些接口是故意报500错误的,这样也转发到了另外一台服务器,所以不合逻辑在这里,可以使用淘宝团队研发的nginx_upstream_check_module模块对服务器主动健康检查,定时检查某个接口,只要这个接口没有报500,就认为该服务器没有异常至于安装这个模块,在这里就不多讲了,自行百度一下源码地址:https://github.
2020-08-24 14:25:06 474
原创 (读书笔记) innoDB存储引擎中的锁
最近在看mysql技术内幕这本书,分享一些阅读笔记innoDB存储引擎主要实现了以下两种标准的行级锁:1、共享锁:允许事务读一行数据。2、排他锁:允许事务删除或更新一行数据。如果一个事务T1已经获得了行r的共享锁,那么另外的事务T2可以立即获得行r的共享锁,因为读取并没有改变行r的数据,称这种情况为锁的兼容性,若有事务T3想要获得行r的排他锁,则必须等待T1和T2 释放行r的共享锁,这种情况称为锁的不兼容性以下列出了排他锁X和共享锁S的兼容情况我们可以发现X锁与任何的锁都不兼容,而S锁和S锁
2020-08-22 10:06:43 786
原创 mysql ON DUPLICATE KEY UPDATE 引起自增ID变化
有业务需求是 如果存在就更新,如果不存在就新增之前用的 django orm中自带的 update_or_create 发现操作1900条数据的时候将近两分钟,太耗时了,然后翻了翻mysql的书籍,发现了ON DUPLICATE KEY UPDATE 方法1、该语句是基于唯一索引或主键使用,需要建立unique index 索引2、更新操作必须是在已有的数据基础上才会被执行,如果要更新的字段是主键或者唯一索引,不能和表中已有的数据重复,否则插入更新都失败。3、不管是更新还是增加等操作,都不
2020-08-13 19:39:52 1505
原创 python获取二进制文件流,压缩并下载
对象存储用的是minio,所以是先到minio中取到文件,然后读取,存在本地指定目录,然后再通过迭代器读取的方式去读取文件返回给前端(怕一次性读取太多造成服务器卡死)直接上代码:import zipfiledef file_iterator(file_path, chunk_size=512): """ 文件读取迭代器 :param file_path:文件路径 :param chunk_size: 每次读取流大小 :return: """ with
2020-07-31 17:10:50 3112
转载 git回退到指定版本,并提交
查看所有的历史版本,获取你git的某个历史版本的id, git log回退本地代码库:git reset --hard ID推送到远程服务器:git push -f -u origin master重新拉代码:git pull
2020-07-30 09:10:05 1099
原创 (干货)Nginx实现双机热备(原创)
最近公司又重新规划了一下服务器架构,硬件层使用的是keeplived+nginx的组合,软件层规划使用nginx做双机热备,这里的双机热备的意思是,比如有两台服务器同时在运行,一台主,一台备,正常使用中,nginx都会将请求转发到主服务器,只有当主服务器报500的错误时候,才会将请求转发到备用服务器上一张简单的架构图:主要通过nginx转发到uwsgi,每个容器里都是uwsgi运行,先准备两台服务器:第一台服务器准备1、因为使用的服务器是docker开出来的,每个docker使用uwsgi进行部
2020-07-28 18:57:38 3054 1
原创 python垃圾回收机制
最近有些空余时间,看了看python方面的书,在这里进行一下自我总结其实我们都知道,python在运行过程中会产生很多变量,这些变量都是存储在内存中的,但是变量后续会越来越多,导致占满内存,然后程序就会异常终止,所以针对这些,python有自己的一套垃圾回收机制,解决办法有三种。1、引用计数在python中,每一个对象的生命周期绝大部分通过对象的引用计数来管理,每当对象被创建或者被引用的时候就会将该对象的引用计数加一,当对象的引用被销毁时该对象的引用次数减一,当引用计数为0时,表示程序中已经没有任何对
2020-07-18 11:10:52 170
原创 记录一次django使用mysqlclient包运行报错
事情经过是这样的,公司不让使用pymysql包来连接mysql,要求用mysqlclient环境:ubuntu 18.04django 2.1python 3.6刚开始我下载了mysqlclient,下载没有任何问题,也可以正常下载,然后运行报错我明明装了为什么还会报错呢?然后我各种谷歌、百度找不到方法于是我想到是不是有依赖没有装,百度了一下mysqlclient的依赖包apt-get install libmysqlclient-dev完美解决!...
2020-07-08 09:09:39 156
原创 celery详解(使用django+celery实现异步及定时任务以及使用supervisor进行管理)
最近工作之余,记录一下自己的笔记,首先来介绍一下celery(一)、为什么要使用celery,业务场景1、我们平时工作中,经常会碰到一个视图里面写了很多逻辑,导致里面有一些很耗时的操作,比如发送邮件、短信之类的操作,这些我们一般是调用第三方sdk去做的,通常客户端接收响应需要等待,降低了服务器的吞吐量及性能2、服务器难免会有定时任务的需求,比如用户数据更新,缓存清除等等(二)、celery介绍为了解决以上问题,我们可以使用celeryCelery是一个功能完备即插即用的任务队列。celery适
2020-06-23 10:51:08 10191 7
原创 关于supervisor使用的问题笔记
关于supervisor使用的问题总结我的python程序是通过uwsgi跑的,然后nginx代理到uwsgi,所以使用supervisor来管理uwsgi,平时每次更新代码都需要停掉uwsgi,然后又启动,第一操作起来麻烦,第二就是当你uwsgi意外怠机了,你又需要重新启动uwsgi,这里通过supervisor进行管理,当你的uwsgi挂了,会自动重启,提供了很多方便的地方客户端:supervisorctl的使用supervisord : 启动supervisorsupervisorctl r
2020-06-22 18:28:23 331
原创 python使用AES加密报错cannot be passed to C code
python使用AES报错报错 TypeError: Object type <class ‘str’> cannot be passed to C code环境:python3.7.2 、 pycryptodome 3.9.7报错代码先贴上:报错其实这个报错很显然提醒你,数据类型不能是str,我们看一波源码:找到报错的部分我们看到data类型打印出来,以下这个是str类型,所以就报错了于是我看了很多篇博客,把代码中的x转为
2020-05-21 16:44:27 10660 2
原创 linux中修改静态ip(亲测有效)
关于linux中修改静态ip的方法1、输入ifconfig命令,因为我是其他用户登录的,所以加了sudo记下来你的设备名br0、网卡地址inet addr、掩码mask2、cd 进入以下目录,部分linux系统的network文件名会有所区别3、找到你的设备名对应的文件,我的设备名是br0,所以我要修改的是ifcfg-br0文件,直接编辑4、进来后修改如下最后重启reboot,然后ifconfig看看你的ip修改成功没有就OK啦...
2020-05-20 17:23:17 2693
原创 关于Oracle数据库运行报错总结
关于Oracle数据库安装运行报错总结这2个月公司真的是太忙了,深深的理解了什么是007!就连五一也不带休息的,活活的搬了5天砖最近公司根据要求更换oracle数据库,然后我这边需要负责开发环境的搭建,于是趁着周六赶紧把数据库报错笔记先记下来进入正题:1、oracle安装完成之后是需要sqlplus命令连接到数据库,linux操作如下这个时候你会发现报错,Error 6 initializing SQL*PlusSP2-0667:Message file spl.msb not found
2020-05-16 17:44:52 811
原创 Python之json模块详解
Python之json模块详解在python中,可以使用json模块对JSON数据进行编码和解码操作json模块主要包含如下模块:(1)json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=No...
2020-03-29 18:35:33 1234
原创 Python小技巧之列表推导式到匿名函数
Python小技巧之列表推导式到匿名函数最近又看了一遍python的基础知识,所谓温故而知新,哈哈哈,所以在这里写下自己的一些见解,我觉得在实战过程中还是非常有用的一些小技巧,也分享给大家,如果写的不好,请大家留言或者私信我,一起学习一下!下面进入正题:列表推导式个人觉得列表推导式非常强大,在实战中也经常用到所谓列表推导式就是使用列表结合for循环快速创建一个新的列表,列表推导式返回的是...
2020-03-24 17:43:51 913
原创 前言
前言hello!大家好,本人目前是一名从事python开发已经有快5年的码农(小白)一枚,仅以此博客记录我的成长之路,包含一些技术笔记之类的,所有文章均为原创,如果写的不好,请大家轻喷,欢迎大家来学习交流,希望交到一些志同道合的朋友,谢谢!...
2020-03-23 11:07:49 168
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人