自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Wollens Blogs

Coding...

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

原创 github Warning: the ECDSA host key for ‘github.com‘ differs from the key for the IP address “xxx“ 解决

最近使用本机很久未使用的 git 提交代码,每次提交都会出现。

2023-03-28 23:05:03 1426 1

原创 局域网下连接非本机 Mysql

背景昨天在做一个小服务时,需要前端同事连接本机 Mysql 进行调试,但是在同一个局域网下连接总是失败,查找资料发现需要将 mysql 授权访问,使用 grant all privileges on * . * to 'user'@'192.168.0.163' identified by '123'; 其中 user 是授权用户名,后面的 IP 是允许连接的 IP,最后面则是登陆密码。在 Mysql 执行这条语句报错:You have an error in your SQL syntax; chec

2022-05-08 09:21:01 563

原创 CentOS 安装 mongodb

CentOS 安装 mongodb推荐使用 yum 源头安装方式,便于管理创建 mongodb yum 源头vim /etc/yum.repos.d/mongodb-org-5.0.repo编辑刚刚创建的文件,将下面👇内容写入[mongodb-org-5.0]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/gpgcheck

2022-04-16 11:12:46 8110

原创 多进程构建 IP 代理池

IPProxy_Pool🚀 Building Ip Proxy Pool相关知识点multiprocessing 【爬取数据】threading【校验数据有效性】lxml【解析 html】Project Structure├── LICENSE├── Makefile # make 服务启动命令├── README.md├── app.py # crawl 启动入口├── config.py # crawl config├── da

2022-04-05 22:23:14 1252

原创 Pymongo 使用

Pymongo说明:以下操作 pymongo: 4.0.4 mongo: 4.4.4MongoDB 是由 C++ 语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似 JSON 对象,它的字段值可以包含其他文档、数组以及文档数组,非常灵活。连接 MongoDB没有开启认证 mongo连接 MonogoDB 时,我们需要使用 PyMonogo 中的 MongoClient。连接 MongoDB 有两种形式方式一:传入 host 和 portimport

2022-03-26 01:37:22 5079 2

原创 一个 emoji 引发的思考

MySQL 字符集相关梳理故事背景今天在做项目数据迁移,涉及到将 A 表中的某个字段复制到 B 表,本地(MAC Mysql 8.0.25)完全没问题,但是在服务器上执行迁移文件时报错:经过一番查阅资料发现是由于 emoji 字符导致的,由于服务器中 Mysql 版本为 5.6 在 A 表中设置的字符集为 utf8mb4 而 B 表中默认使用 utf8,utf8 最大只支持三个字节,而 emoji 表情字节占用大于三个,因此导入失败。下面关于 MySQL 字符相关做如下梳理:MySQL 字符集版本

2022-03-18 16:01:43 1154

原创 Python 进程、线程、协程

进程和线程在爬虫开发中,进程和线程的概念非常重要的,提高爬虫的工作效率,打造分布式爬虫,都离不开进程和线程的身影。本节将从多进程、多线程、协程三个方面,帮组大家回顾 Python 语言中进程和线程的常用操作,以便在接下来的爬虫开发中灵活运用进程和线程。多进程Python 实现多进程的方式主要有两种,一种方法是使用 os 模块中的 fork 方法,另一种方法是使用 multiprocessing 模块。这两种方法的区别在于前者仅使用 Unix/Linux 操作系统,对 Windows 不支持,后者则是跨

2022-03-15 17:43:00 1387 1

原创 Python 操作文件和目录方法总结

Python 操作文件和目录方法总结源文件下载地址

2022-03-11 16:01:52 1029

原创 Git Commit emoji Guide

Git Commit emoji Guide背景gitmoji 是一个标准化和解释在 GitHub 提交消息上使用 emoji 的提议,gitmoji 是一个开源项目,专门规定了在 ``github 提交代码是应当遵循的 emoji 规范。在 git commit上使用 emoji 提供了一种简单的方法,仅通过查看所使用的表情符号来确定提交的目的或意图概述在执行 git commit 指令时使用 emoji 图标为本次提交一个特别的图标,这个本次提交的记录很容易突出重点,也可以光看图标就知道本次提交

2022-03-01 20:51:04 686

原创 分布式多机集群环境下如何保证任务只执行一次

问题背景:当我们有多个服务器,每个服务器上都有相同的定时任务,如每天凌晨定时插入数据,如果多个服务器上的定时任务都执行了会导致数据重复,如果只让一个服务器存在定时任务代码,部署起来比较麻烦,需要多套代码,万一定时任务机器宕机这会导致系统不稳定性一般解决方案有如下几种:数据库实现基于 Redis 的分布式锁利用 quartz 集群分布式数据库实现数据库建立一个定时表,记录 IP 和插入时间当多个服务器通知执行任务时把自己的 IP 和当前时间插入定时表定时表中查询当天最早插入的时间那条记录

2022-02-19 12:31:26 3179

原创 API 接口的安全性及鉴权方式

什么是 API 鉴权公司、个人开发的系统上线后,系统中 API 暴露到互联网上会存在一定的安全风险,eg: 爬虫、恶意访问等。因此我们要先对接口调用方做一个用户鉴权,对访问 API 权限进行限制,如果鉴权通过则允许用户调用 API。根据不同的场景鉴权方案也有很多种。常用 API 接口安全措施????数据加密数据在互联网传输过程很容易被抓包,如果直接传输,那么用户数据可能被其他人获取,导致系统安全性等问题,所以必须对数据加密。常见的做法是对关键字段加密,比如用户密码直接通过 md5 加密。数据签名

2022-01-16 11:29:12 19152 2

原创 多容器 GRPC 服务通信

创建 docker networkdocker network create flask-admin-dev编排容器# serverversion: "2"services: notify_service_dev: build: . image: notify-service:0.1 container_name: notify_service_dev volumes: - .:/code..

2022-01-01 15:18:54 1585

原创 Vscode 使用 Python

???? python + vscode

2021-12-23 14:57:39 1200

原创 pytesseract 使用

pytesseract 使用pip install pytesseract在识别图片时会出现如下报错:# error messagepytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH. See README file for more information.该报错是由于本机没有安装 tesseract 导致,其实 pytesseract 是在

2021-11-13 14:43:40 570

原创 生成器、迭代器、可迭代对象

本节内容列表生成式生成器(Generator)可迭代对象(Iterable)迭代器(Iterator)生成器、迭代器、可迭代对象关系列表生成式列表生成式是 python 中的一种语法糖,就是一个用来生成列表特定语法形式的表达式,是 python 提供的一种生成列表的简洁形式基础语法格式[exp for iter_var in iterable]工作过程迭代 iterable 中的每个元素每次迭代都先把结果赋值给 iter_var,然后通过 exp 得到一个新的计

2021-10-18 15:38:31 695

原创 python argsparse 构建终端交互程序

argparseargparse 模块可以让让轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息ArgumentParser 对象创建一个新的 ArgumentParser 对象。所有的参数都作为关键字参数传入,参数描叙如下(???? 表示常用参数):ArgumentParser -h 命令行展示格式:usagedescriptionoption argumentsepilogpro

2021-09-30 17:58:33 237

原创 Git 多用户配置

Git 多用户配置MacOS 系统故事背景日常工作中我习惯带自己的电脑去公司上班,公司使用 Gitlab 管理代码,但是个人使用全球同性交友平台 Github 管理代码。在公司时你需要将公司代码提交到 Gitlab 中,下班后个人代码提交到 Github ,这两个仓库不仅地址不一样仓库的用户名和邮箱????都不一样,这里就需要我们在 git 中配置多个 git 用户以此来满足不同的代码提交需求。多用户配置用户名邮箱代码管理tomtom@163.comGithub

2021-08-17 21:52:58 468

原创 为什么精英都是时间控

????为什么精英都是时间控 --日本.华泽紫苑微信读书序章我所主张的时间管理术,是将人“从忙碌中解放出来的方法”。我会把工作限定在一个相对固定的时间范围内,在规定的时间内尽量增加工作量,提高工作的质量。如果您能坚决执行我的时间管理术,您一定能从忙碌的工作中解脱出来。时间管理术第一原则:专注力为中心对时间分配进行思考????■工作大体上可以分为两种:“专注性工作”和“非专注性工作”。■“专注性工作”应该放在上午做。■上午的时间价值是晚上的时间价值的4倍。■不必勉强自己提高专注力。

2021-08-17 08:14:21 1076

原创 拖拽排序实现方式

拖拽排序实现方式问题背景最近在做项目时遇到一个需求,需要支持数据拖拽排序。通过拖动数据以此来达到对数据重新排列,且可能存在多人同时对相同数据重新排列问题需求描叙支持数据拖拽排序,一次只允许拖动一列允许多人同时对相同数据列表拖拽排序数据数量最多允许 1000解决方式取中值法实现思路:创建元素时给元素赋默认位置(position 字段记录该值)。赋值规则:当创建第一个元素时,默认位置赋值为100,第二个元素为 2 * 100 = 200,增加第N个元素时,位置赋值为N*100(等差数列

2021-08-09 15:57:03 4846

原创 黑盒测试 & 白盒测试

任何工程产品都可以使用一下两法之一进行测试:黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现的功能是否符合要求白盒测试:已知产品内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查软件的黑盒测试意味着测试要在软件的接口处进行,这种方法是把测试对象看成一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能性测试或数据驱动测试软件白盒测试是对软件的过程细节作细致的检查,

2021-08-07 22:45:13 1704

原创 装饰器的使用

装饰器特殊的类型声明,它能够附加到类声明、方法、数据或参数上,可以修改类的行为。通俗来水装饰器就是一个方法,可以注入到类、方法、属性参数上来扩展类、属性、方法、参数的功能。常见的装饰器有:类装饰器、属性装饰器、方法装饰器、参数装饰器装饰器的写法:普通装饰器(无参数)、装饰器工厂(可传参数)Python 装饰器Python 装饰器(decorator)本质上是一个嵌套函数,它接受被装饰函数作为参数,并返回一个包装过的函数。这样我们可以在不改变被装饰器函数代码的情况下给被装饰函数或程序添加新功能。Py

2021-06-26 12:42:17 275

原创 API 版本控制

背景​ 在常规的业务开发中假设我们的接口提供给客户端同时提供移动端应用,但是在产品迭代的过程中客户端迭代速度更快需要将部分接口结构更新原来的接口又不得不升级,但是移动端还是保持原来接口结构。遇到类似的情况我们可以考虑使用 API 版本控制API 版本控制模式常用的API版本控制模式有以下三种:无版本模式API 自带版本模式兼容性版本模式无版本模式使用这种模式意味着服务端每个 API 只提供一个版本,如果 API 升级结构调整所有调用方都需要同步更新 API 结构,任何 API 的修改可能

2021-06-05 09:45:06 570

原创 Kubernetes——Service & Ingress(外部请求访问集群内部服务方式)

Service将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。使用 kubernetes 你无需修改应用程序即可使用不熟悉的服务发现机制,kubernetes 为 Pods 提供自己的 IP 地址,并为一组 Pod 提供相同的 DNS 名,并且可以在它们之间进行负载均衡。发布服务(服务类型)由于运行的 Pod IP 是 docker 网桥的 IP 地址段进行分配的通常是一个虚拟的二层网络,外部网络并没有办法直接访问且由于 Pod IP 不是固定的、随时改变的, K8s 引入 Servic

2021-05-15 12:56:50 1670

原创 Error 413 Request Entity Too Large 处理方式

背景今天公司某个服务接口在使用过程中出现 413 Request Entity Too Large 错误。原因经过排查发现是由于在调用该接口(post 请求)是发送的数据量超过 nginx 默认数据上传大小,查看 nginx 官网可以看到如下解释:syntax: client_max_body_size sizedefault: client_max_body_size 1mcontext: http, server, locationDirective assigns the maxi

2021-05-14 22:42:11 793

原创 mysqlclient MacOS 使用报错 NameError: name ‘_mysql’ is not defined

背景最近使用 django 作为一个服务的后台,在使用 mysqlclient 链接 mysql 数据库时发生一个奇怪的报错 NameError: name ‘_mysql’ is not defined下面是具体报错信息INFO] 2021-04-07 02:27:57,613 Watching for file changes with StatReloaderException in thread django-main-thread:Traceback (most recent call

2021-04-07 10:40:49 4490 4

原创 leetcode 题解

数组中重复的数字题目链接题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1eg:# input[2,3,1,0,2,5,3]# output2或3解题思路需要找到数字中重复数字,可以采用 dict 数据结构记录列表中每个数字是否出现,如果

2021-04-04 14:52:45 227 2

原创 计算机中的进制 & 进制转换 & 位运算符号

进制计算机内部是由 IC(intergrated Ciruit)这种电子部件构成, CPU 和内存也是 IC 的一种,IC的所有引脚只有直流电压 0V 或 5V两个状态,也就是说 IC 的一个引脚只能表示两个状态。现代计算机都是基于 0、1两个符号表示信息的,即现代计算机中数值的表示是二进制。进制的定义进制:进位计数制的简称,指针数的方法,一般用于刻画实物之间的数量关系,是人们长期实践中发现和发明的。十进制运算规则:逢十进一十进制是我们日常中最熟悉的进制方法,计数符号使用 0~9 来记录数字

2021-01-18 19:51:18 5721

原创 redis 数据类型相关

redis 数据类型redis 目前支持五种数据类型,分别为:String(字符串)List(列表)Hash(字典)Set(集合)Sorted Set(有序集合)数据类型对应的操作StringString 是一种简单的 key-value 的键值对,value 可以是 String,也可以是 number,String 在redis的内部存储默认就是一个字符串,被 redisObject 所引用,当遇到 incr,decr 等操作时会转成数值型进行计算,此时 redisObject 的

2021-01-13 22:39:48 110

原创 python 定时任务实现方式

python 实现定时任务循环 sleep 方式这种方式实现最简单,在循环里放入要执行的任务,然后 sleep 一段时间在执行。这个方法的缺点是只能在固定的时间间隔下执行,如果有定时任务也无法完成。,n 值需要自己计算,并且 sleep 会阻塞进程的执行,在阻塞过程中程序什么都无法只能等。import timefrom datetime import datetime# 每 n 秒执行一次def timer(n): while True: print('do something

2021-01-05 23:28:00 290 1

原创 Typora + picGo 配置图床实现图片自动上传

背景Typora 是一款非常好用的 markdown 编辑器,简洁方便,但是 Typora 中插入的图片默认是保存在本地,如果我们想将本地文档复制到 blog 或者其他地方由于图片保存在本地复制到其他地方无法查看,所以我们这里需要为 Typora 配置图床试我们在 Typora 中插入的图片能够自动的上传到对应的网络对象存储中配置 picGopicGo 下载根据不同的系统选择对应的版本下载picGo 下载地址:https://github.com/Molunerfinn/PicGo/release

2020-12-23 19:49:24 554

原创 python 时间转换(时间戳、格式化时间)

背景故事在日常工作中经常会遇到 python 时间格式转换问题,如时间戳转换为格式化时间、格式化时间转换为时间戳,这里做个总结。在总结之前我们需要先弄清楚一个关键????点:时区时区:我们通常使用的时区一般分为 UTC时间和 UTC+8 (东八)时间,东八 CT — 中国标准时间 简单理解为中国时间,UTC WET — 欧洲西部时区,GMT - 格林威治标准时间,简单理解为英国时间。东八时间比 UTC 时间快八小时。世界时区图格式化时间转化为时间戳获取本地(东八)时间戳impo

2020-12-16 16:30:58 4951

原创 Django signals 信号总结

故事背景最近在做的项目中都遇到使用 django 信号量,故此总结信号相关的使用。什么是信号Django 中内置一个 信号调度器,它可以帮助应用程序在框架中的其他地方发生某些固定操作时能够得到通知。简而言之:信号允许某些发送器通知一组接收器某些操作已经发生。当接受器接受到这一通知时可以做响应的处理。Django 中内置的信号集模型信号模型初始化时django.db.models.signals.pre_init(模型在初始化时发出)django.db.models.signals.p

2020-12-15 16:08:39 846

原创 图像元数据(Metadata)获取与修改

图像元数据(Metadata)元数据元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描叙数据属性(property)的信息。用来支持如指示存储位置、历史数据、文件记录等功能。元数据就是关于数据的组织、数据域及其关系的信息,简而言之元数据就是关于数据的数据。图片元信息图片元信息(Metadata) 是嵌入到图片文件中的一些标签,可以类比为图片的属性,但是种类繁多。但是对于数码图像目前最常见的元数据类型有:EXIF、IPTC、XMP 这三种格

2020-12-07 20:16:26 12630 2

原创 Django 模型继承以及 model related_name 使用

背景知识最近开发的一个项目中用到模型快照刚开始准备用 Django 模型做,于是查看了 Django 模型继承的几种方式,由于该项目只是使用 Django 作为后台管理并没有直接生成迁移文件定义数据库。最后这些模型继承方案都未被采用但是这里还是需要总结记录。Django 模型继承的三种方式抽象继承抽象继承:创建一个通用的父类,但是我们并不想父类被创建,但是继承该父类的子类都有该抽象父类的字段。在抽象父类的 Meta 中设置 abstract=true 即可实现。应用场景举例:我们有两个模型 Bo

2020-12-05 15:36:51 1103

原创 Mysql 字段类型以及对应的长度 & 字节

字节篇字节历史美国人首先对英文字母进行编码,也就是最早的 ascii 码,用一个字节对的底7位来表示英文的128个字符。后来欧洲人发现128为根本不够用,法语中还有注音符这个怎么区分得把高一位编进来,这样欧洲普遍使用一个全字节进行编码,最多可表示256位。欧美人就是喜欢直来直去,字符少,编码用得位数少;但是即使位数少,不同国家地区用不同的字符编码,虽然0–127表示的符号是一样的,但是128–255这一段的解释完全乱套了,即使2进制完全一样,表示的字符完全不一样,比如135在法语,希伯来语,俄语编

2020-12-02 22:44:58 1123

原创 使用 python 完成 IP 存活检测

IP 存活检测最近在构建自用 IP 池,其中在获取 IP 后筛选存活 IP方法做如下总结。主要有三种方式:使用 telnetlib 模块使用 urllib 模块使用 request 模块下面就上面三种方式使用简单介绍:使用 telnetlib 模块检测 IP 存活性(不推荐)import telnetlibip = '195.170.38.230'port = '8080'try: res = telnetlib.Telnet(ip, port, timeout=10)

2020-11-24 22:38:12 15724

原创 python 构建 ip 代理池以及简单的应用

背景摘要由于最近在研究爬虫相关知识,有时在频繁获取(爬取)网站数据时会出现 ip 被限制的情况导致无法及时获取想要的数据,因此想着该搞个 ip proxy pool 啦,啥也不说开始干呗。代码实现import reimport jsonimport requestsimport urllibfrom lxml import etreeurl = 'https://raw.githubusercontent.com/fate0/proxylist/master/proxy.list'c

2020-11-21 09:08:49 1132

原创 记一则服务器内存泄漏解决过程

故事背景很早之前用表弟的学生证薅了一个阿里云低配的主机,前段时间快到期也一只没续费等到过期啦才想起来要续费,还好赶在服务器数据清除之前续费成功,但当我登录到服务器中发现有点卡不流畅这是什么情况,而且发现服务器中 docker 无法运行.事件排查当在服务器运行 docker 时会抱如下错误:fatal error: runtime: out of memory很明显服务器内存泄漏,撑爆了。解决方式排查原因发现是由于一个 gitlab 进程导致,杀掉 gitlab 相关进程服务正常使用但是发现在浏

2020-11-18 08:27:30 1265

原创 Python 爬取拉勾招聘信息

Python 爬取拉勾招聘信息故事背景最近有个好哥们啊浪迫于家里工资太低,准备从北方老家那边来深圳这边找工作,啊浪是学平面设计的知道我在深圳这边于是向我打听深圳这边平面设计薪资水平,当时我有点懵逼这个行业不熟悉啊咋搞呢,准备打开招聘网站先看看再说打开网站输入招聘职位发先量还挺大,这样慢慢看不行啊效率太低啦,咋是程序员啊直接把数据拉下来不就行啦于是有啦这篇博客。技术实现用到的库import osimport jsonimport urllibimport requests页面分析数据地址

2020-11-14 10:14:12 553

原创 python3 urlencode 和 urldecode 使用

python3 urlencode 和 urldecode故事背景当我们在浏览器搜索内容时会发现浏览器会自动的将我们输入的内容转化为带有 很多% 的地址如下所示:https://www.baidu.com/s?wd=%E4%B8%BA%E4%BB%80%E4%B9%88&rsv_spt=1&rsv_iqid=0xeaa7d7410002e421&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baid

2020-11-11 04:26:36 966

空空如也

空空如也

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

TA关注的人

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