自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

smarterpan

个人主页:Github/panguangyu

  • 博客(203)
  • 收藏
  • 关注

原创 MySQL 添加索引报错:BLOB/TEXT column used in key specification without a key length

当我们对一个名称为platform的字段,类型为 text 添加索引时,会报错:BLOB/TEXT column 'platform' used in key specification without a key length这样的错误,同样存在于将某个字段从 varchar 修改成 text,而该字段此前已经存在索引原因:MySQL只能将BLOB/TEXT类型字段设置索引数据的前N个字符,因此,只需要通过sql在增加索引时指定对应字段的长度即可,如:ALTER TABLE hello_

2020-08-21 16:00:15 64

原创 利用 ssh RSA 公钥私钥登录 Linux 服务器

一、利用 puttygen.exe 生成 一对 RSA 公钥/私钥1)公钥:存放到 Linux 服务器2)私钥:用于登录 Linux 服务器二、Linux 服务器配置公钥vim .ssh/authorized_keys添加一或多条生成的公钥内容:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCys3aOkFm1Xh8iN0lijeQF5mz9Iw... user1ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCys3a

2020-07-04 18:09:55 42

原创 shell 检测服务端口状态

#!/bin/bashport_array=(3306 27017 80 10080)service_array=(mysql mongod nginx php-fpm)for(( i=0;i<${#port_array[@]};i++)) do time=$(date "+%Y-%m-%d %H:%M:%S") port=${port_array[i]}; service_name=${service_array[i]}; port_status=.

2020-07-04 17:10:31 280

原创 实时获取 Linux 前五大 CPU 和内存占用高的进程

CPU 前五大占用:ps axu|sort -r -k3 |head -n 6内存前五大占用:ps axu|sort -r -k4 |head -n 6

2020-07-03 11:50:21 71

原创 Python 实现获取随机单词翻译

from random_words import RandomWordsimport requestsimport jsonrw = RandomWords()YOUDAO_URI = 'http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i='MAX_WORD_LETTER = 20WORD_NUMBER = 10vocabulary = rw.random_words(count = WORD_.

2020-05-27 11:38:11 239

原创 Python 多进程 + 协程 (gevent) 实例

利用多进程(multiprocessing)+多协程(gevent)实现同时请求10个网站urlfrom multiprocessing import Poolimport geventimport requestsimport timefrom collections import dequefrom functools import wrapslist = [ "http://www.baidu.com", "http://www.qq.com", "http://www.we

2020-05-14 14:42:26 118

原创 Python Gevent 中文入门教程,中文文档

个人写的一个来自http://sdiehl.github.io/gevent-tutorial/的翻译文档详见:https://github.com/panguangyu/gevent-tutorial-chinese

2020-05-14 11:05:36 485

原创 Sublime Python 的一些环境配置

安装好看的主题Install Package : ayuInstall Package : edge安装 Python shell 编辑器:Install Package : SublimeREPL安装 Python 代码提示:或者安装 KiteInstall Package : sublimeLinterInstall Package : bracket Hightlighter安装 Python 快捷键:F1 打开 shell,F5 运行代码preferenc

2020-05-09 11:44:43 53

原创 Host 'xx' is not allowed to connect to this MySQL server 处理

使用命令行连接 docker 中的 mysql 时:mysql -h127.0.0.1 -P3310 -uroot -p会报错:Host '172.22.0.1' is not allowed to connect to this MySQL server在容器中能正常进入 mysql,但是容器外无法连接进入经排查,其实是MySQL默认不允许远程登录,需要进入docke...

2020-05-06 16:59:42 60

原创 Centos 上 Percona-toolkit 安装方式

一、官网下载 rpm 包,可用迅雷下载再上传到服务器官网:https://www.percona.com/downloads/percona-toolkit/LATEST/yum install https://www.percona.com/downloads/percona-toolkit/3.2.0/binary/redhat/7/x86_64/percona-toolkit-3....

2020-05-05 14:36:24 196

原创 Mysql8.0 pt-online-schema-change 报错处理

执行命令:pt-online-schema-change D=test,t=test_a,h=127.0.0.1 -u root -P 3309 --ask-pass --alter="ADD COLUMN address varchar(100)" --alter-foreign-keys-method=auto --execute# 在线修改表结构发现报错:There is ...

2020-05-05 14:33:01 224 2

原创 Linux 获取当前文件夹下大小最大的前 n 个文件

du -s * | sort -nr | head -n 10 # 获取大小最大的10个文件du -s * | sort -nr | tail -n 10 # 获取大小最小的10个文件

2020-05-04 11:31:56 88

原创 利用 Lua 脚本在 Redis 中实现秒杀商品减库存

一、情景描述公司开展商品秒杀活动,共有 A、B、C、D 四个商品提供秒杀抢购,每件商品限售 5 件,售完即止。二、实现方案1)使用 redis 保存四件商品的库存数量,如:set goods_A 5set goods_B 5set goods_C 5set goods_D 52)利用 lua 脚本操作库存数量:-- 判断商品是否存在local isExi...

2020-04-20 14:24:24 504

原创 理解 Python Cookbook 元编程例子的 attach_wrapper 函数

from functools import wraps, partialimport loggingdef attach_wrapper(obj, func=None): if func is None: return partial(attach_wrapper, obj) setattr(obj, func.__name__, func) return funcdef l...

2020-04-17 16:32:31 70

原创 基于 Python 的 Cmd 命令行的 HTTP 请求工具

# 需 Windows 安装 Python 环境pip install requests详见项目源码:https://github.com/panguangyu/CmdHttpTool# -*- coding:utf-8 -*-import requestsimport sysimport jsondef sendRequest(method: str, url: st...

2020-04-14 19:18:15 95

原创 Python No module named '_ctypes' 报错

解决方案:yum -y install libffi-devel tk-devel重新编译 Python:make install注意,如果gcc版本较低(8.1.0已兼容),在configure参数中不要使用 --enable-optimazations实测:Python 3.8.2,GCC版本:4.8.5 ./configure --enable-optimazat...

2020-04-07 12:10:17 101

原创 Python concurrent.futures 的 as_completed 函数解释

先来看一段 demo 代码:from concurrent import futuresimport timeimport randomdef returnNumber(number: int)->int: print("start return number {}".format(number)) time.sleep(random.randint(10, 2...

2020-04-05 23:15:08 560

原创 Python concurrent.futures 的 map 函数解释

先看一个 demo 程序:from concurrent import futuresimport timeimport randomdef returnNumber(number: int)->int: print("start return number {}".format(number)) time.sleep(random.randint(10, 20...

2020-04-05 21:32:10 356

原创 Wing IDE 使用 Yapf 规范 Python 代码格式

pip install blackpip install yapf以在 Wing IDE 为例,点击 Source -> Reformatting -> Reformat file with YAPF 即可

2020-04-03 10:19:57 117

原创 Python 实现一个加密函数的简单封装

# -*- coding:utf-8 -*-"""# @function 实现加密算法简单封装# @package 无# @environment Python 2.0+# @author Panguangyu"""import hashlib, base64class Encrypt(object): """ 实现简单的md5 ...

2020-03-30 20:58:39 250

原创 Python 实现 Datetime 和 timestamp 时间戳互转

# -*- coding:utf-8 -*-import datetime, timeclass DateTimestamp(object): def __init__(self): self._timestamp = int(time.time()) self._datetime = self.getDateTimeByTimestamp(sel...

2020-03-30 18:01:59 1052

原创 Python nonlocal 关键字学习

1、nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)2、nonlocal关键字只能用于嵌套函数中,并且外层函数中定义了相应的局部变量,否则会发生错误摘录自:https://blog.csdn.net/xcyansun/article/details/79...

2020-03-28 15:19:52 83

原创 Python 实现一个简单的多线程

import threadingdef main(str): print(str)def create_thread(num, *args): threads = [] for i in range(num): try: t = threading.Thread(target=main, args=args) ...

2020-03-28 11:23:17 122

原创 基于 Python difflib 的 Windows 文件对比工具

源代码详见:https://github.com/panguangyu/Diffoo效果如下:

2020-03-26 12:03:00 69

原创 Python GUI 制作一个浏览器

from PyQt5 import QtWidgets,QtCore,QtGuifrom PyQt5.QtWidgets import *from PyQt5.QtGui import *import sys,os,requestsfrom PyQt5.QtWebEngineWidgets import *class UI(QMainWindow,): def __init...

2020-03-25 19:52:22 653 3

原创 Python 实现一个带有超链接加文字的窗口

from tkinter import *import webbrowserroot = Tk()text = Text(root,width=30,height = 5)text.pack()text.insert(INSERT, "百度一下,你就知道")text.tag_add("link","1.0","1.4")text.tag_config("link", fo...

2020-03-25 19:49:48 622

原创 利用 bat 脚本强制杀死 Windows 进程

@echo off :starttaskkill /im a.exe /ftaskkill /im b.exe /fgoto start保存为 clear.bat 文件,打开后将一直无限循环执行。不断杀死 Windows 进程中的 a.exe b.exe 等进程,可以用来强制清理广告弹窗的进程...

2020-03-24 16:52:10 958

原创 Linux awk 统计 nginx 日志状态码非 200 的地址及其数量

cat nginx.log | awk '{print $8,$10}' | awk 'BEGIN{count[$1]=0}($2!=200){count[$1]+=1}END{for(i in count) print(i, count[i])}'输出:/hello.html 1/favicon.ico 559/hello2.html 11

2020-03-24 14:17:58 722

原创 Linux awk 命令总结

一、awk 处理方式awk 一次处理一行内容,可以对每行进行切片处理awk '{print $1}' 输出首个单词二、使用 awk 格式1)命令行格式:awk [options] 'command' file2)脚本格式:awk -f 脚本文件 file三、awk 的内置变量$0:表示整个当前行$1:每行第一个字段$2:每行第二个字段分隔符:-F '分隔...

2020-03-23 19:52:26 68 1

原创 Linux sed 命令总结

sed一次处理一行内容,不改变文件内容命令行格式:sed [options] command fileoptions: -e 以选项中指定的script来处理输入的文本文件。 -n 仅显示script处理后的结果 command:行定位(正则表达式)+sed命令脚本格式:sed -f 脚本文件 file二、基本操作 - p命...

2020-03-23 19:51:02 51

原创 Linux grep 正则表达式

一、正则表达式的单字符字符:特定字符、范围内字符、任意字符特定字符:某个具体的字符,如 'l','a'grep 'a' a.txt # 找到a.txt中包含a的记录范围内字符:单个字符[],代表一个字符的范围数字范围: [0-9]、[259]字符范围:[a-z]、[A-Z]其他符号:[:?/,+=<] 等等grep '[259]' a.tx...

2020-03-22 21:03:00 35

原创 Redis + Logstash 缓存数据导入 Elasticsearch 实战

应用场景:将 redis 队列存放的数据导入 elasticsearch,进行全文搜索一、编写 redis-es.conf ,文件可以存放在:/etc/logstash/conf.d/redis-es.confinput { redis { data_type => "list" # 使用 redis 的list数据类型 ...

2020-03-20 16:19:04 421

原创 Linux 不间断后台执行进程

nohup command > /dev/null 2>&1 &

2020-03-20 15:13:11 147

原创 -bash: mongo-connector: command not found 解决

截止我发稿,elastic2-doc-manager 仅支持 2.x 和 5.x 的 elasticsearch 版本一、安装 mongo-connectorpip3 install mongo-connectorpip3 install elastic2-doc-manager二、执行 mongo-connectormongo-connector -m localhost...

2020-03-20 10:23:19 297 2

原创 鸟哥Linux私房菜学习笔记:第五章(二)

改变文件的属性与权限chgrp 改变文件的组 chgrp -R dirname/filenamechown 改变文件所有者 chown -R 账号名称 文件/目录 chown -R 账号名称:组名 文件/目录chmod 改变文件的权限chmod -R xyz 文件/目录,xyz 表示文件的权限数字,r:4,w:2,x:1基于符号的改变方法u:...

2020-03-15 12:42:17 51

原创 鸟哥Linux私房菜学习笔记:第五章(一)

个人密码 /etc/shadowroot相关信息 /etc/passwd所有组名 /etc/group-rw-r--r-- 1 root root 1864 May 4 18:01 abc.txt具体解析:[-rw-r--r--]第一个字符表示文件的类型:- 文件,d 是目录,l 是链接后面的字符依次表示文件的权限:r 可读,w 可写, e 可执行。从左到右依次的权限...

2020-03-15 11:57:21 30

原创 基于 Pyjwt 的 Flask 用户授权登录

一个比较简单清晰的demo:https://github.com/yaoyonstudio/flask-pyjwt-auth梳理一下这个授权登录的核心:用户登录成功生成加密的token传递给前端,前端要在用户登录成功后返回的token记录在浏览器cookie里,前端下次请求其他接口,需要在请求头增加字段 Authorization : JWT 对应的token子串,后端校验token的合法...

2020-03-10 22:09:46 127

原创 Centos 搭建双 Python 环境

因为 Centos 默认带有的是 Python 2.7 版本,由于生产环境需要,经常会使用到 Python 3 环境,因此需要给 Centos 搭建双 Python 环境,步骤如下。一、在 /usr/src/ 新建 python 3 目录cd /usr/src/python3二、下载 Python 3.x 的软件包到任意目录wget Python-3.x.tgztar -z...

2020-03-08 12:16:52 47

原创 简单理解 Python yield from 关键字

def test(num): while True: print("start {}".format(num)) yield from range(num) print("end {}".format(num)) num = num + 1 if (num >= 5): break #print("生成 {}".format(num))for it in...

2020-03-03 09:16:49 61

原创 简单理解 Python yield 关键字

# encoding=UTF-8 #def test(max): print("这里只运行一次") while True: yield max max = max + 1 if max > 10: breakfor n in test(0): print(n)# 打印结果 这里只运行一次 0 1 2 3 4 5 6 7 8 9 10# 一个带有 yi...

2020-03-02 20:21:53 78

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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