艽野尘梦

往事并不如烟

Git - 如何将项目Clone至一个非空文件夹
Git

Git - 如何将项目Clone至一个非空文件夹

背景 在 GitHub 上创建了一个项目时,基本会选择初始化一个 readme 文件,有时还会生成 .gitignore 、LICENSE 文件,但是有时候会在本地进行了一些开发,这时候我们需要把两者关联起来。之前一直在使用临时文件夹的方式,直到找到了下面的方法,不用使用临时文件夹,就可以直接将两者关联起来。记录一下步骤。 步骤 进入目标文件夹 cd target/folder/ 初始化 git 仓库 git init 将需要忽略的文件、文件夹加入

拓扑排序
Algorithm

拓扑排序

含义 拓扑排序(Topological Sorting)是一个有向无环图(DAG,Directed Acyclic Graph) 的所有顶点的线性序列。且该序列必须满足如下两个条件: 每个顶点出现且只出现一次 若存在一条从顶点 A 到 B 的路径,那么在序列中顶点A出现在顶点B前面 步骤 从DAG图中选择一个没有前驱(即入度为0)的顶点并输出 从图中删除该顶点和所有以它为起点的有向边。 重复1和2,直到当前的 DAG 图为空,或者当前图中不存在无前驱的顶点为止,后一种情况说明有向图中必定存在环。 于是得到拓扑排序后的结果是

Python 方法解析顺序 MRO
Python

Python 方法解析顺序 MRO

对于支持继承的编程语言来说,其方法和属性可能定义在当前类,也可能来自基类,所以在方法调用时就需要对当前类和基类进行搜索以确定方法的位置。搜索的顺序,就是方法解析顺序 (Method Resolution Order, MRO)。对于只支持单继承的语言来说,MRO 比较简单;但对于Python这种支持多继承的语言来说,MRO 会相对复杂。 Python 的类 Python 有两种类: 经典类 python 2.1 之前,经典类是唯一可用的形式 新式类 python2.2 引入

使用Middleware为Scrapy Spider设置随机UA
Python

使用Middleware为Scrapy Spider设置随机UA

前言 做爬虫的都知道,模拟真实用户是很重要的,爬虫与反爬虫斗争的过程中,其实就是围绕伪装与鉴别,常见的反爬虫策略都会添加对 User Agent 的校验,会封掉常见的爬虫请求头,比如 Scrapy 默认的 User Agent 是什么呢?同过下面的方式试一下: scrapy shell https://httpbin.org/user-agent 在结果中使用: response.text 进行查看,结果为: { "user-agent":"Scrapy/

Python中的垃圾回收机制
Python

Python中的垃圾回收机制

简介 Python3 的垃圾回收机制(Garbage Collection)分为三点: 引用计数 — Reference Counting 标记-清除 — Mark and Sweep 分代回收 — Generational Collection 引用计数 — Reference Counting 什么是引用计数? 参考下维基百科的定义: 引用计数是计算机编程语言中的一种内存管理技术,是指将资源(可以是对象、内存或磁盘空间等等)的被引用次数保存起来,

如何在 Python3 中实现单例模式?
Python

如何在 Python3 中实现单例模式?

在最开始接触设计方法的时候,我们经常会接触到单例模式,它是23种GOF模式中最简单,也是最经常出现的一种设计模式,也是面试官最常爱考的一种模式。单例模式是一种创建型模式,它提供了一种创建对象的方式,确保只有单个对象被创建。这个设计模式主要目的是想在整个系统中只能出现类的一个实例,即一个类只有一个对象。 什么是单例模式? 单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 — Wikipedia 实现单例模式的思路 实现单例模式的思路是:一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,

CentOS7 php-fpm 参数优化
PHP

CentOS7 php-fpm 参数优化

背景 在linode上买了最低配的主机,将自己的个人博客站点搭建在上面,博客是用 WordPress 搭建的,对应的在服务器上部署了 Nginx + MySQL + php-fpm。 具体过程可参见之前的文章: 在CentOS 7上安装LEMP(Nginx+MySQL+PHP) Install WordPress 但最近一段时间站点总是莫名奇妙的离线,Jetpack 插件隔三差五给我发送监控邮件,告诉我我的站点没有响应了。之前几次在机器上看发现是 mariadb 数据库进程挂掉了,一直以为是我的数据库配置有问题,导致系统kill掉了它。所以每次都只是简单的重启了mariadb服务,也没有深究。后来将数据库的连接数调低,

关于 Gmail 邮件地址的校验
Python

关于 Gmail 邮件地址的校验

之前介绍了通用的email校验方法,参考之前的文章 如何校验邮件地址是否存在? ,但是对于 Gmail 的邮件地址,我们可以使用如下的办法进行邮件校验。 这个方式源于一个被发现的接口,这个接口对于存在的Gmail地址和不存的Gmail 地址,有着不同的表现形式。而且这个接口还没有速率限制,那我们可以利用这个接口做很多事情。 方法介绍 这个网址为: https://mail.google.com/mail/gxlu,我们准备一个不存在的邮件地址:zijixiabiandeyouxiandizhi@gmail.com $ curl -v https://mail.google.

如何校验邮件地址是否存在?
SMTP

如何校验邮件地址是否存在?

前言 在国外,大家更加倾向于使用邮件进行沟通,而不像国内,钉钉微信一顿轰炸。而且在国外,最常见和有效的营销方式还是EDM,做EDM过程中经常会遇到的一个问题就是如何验证一个电子邮箱地址的真实性?发送一封含有验证链接的邮件,这在网站注册时验证用户是很有效的,但并不适合EDM中大规模的邮件验证。接下来介绍一下基于SMTP协议验证邮箱有效性的基本原理,和具体的实现。 SMTP 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是在Internet传输电子邮件的事实标准。 SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail

CentOS 7上WordPress由于文件权限导致插件无法安装
Linux

CentOS 7上WordPress由于文件权限导致插件无法安装

Centos7 上使用 WordPress 搭建了一个小站,使用 Nginx 做服务器,配置环节一切正常,最后站点也可以正常访问,但是在安装插件的时候出现了 无法创建文件夹的错误。google 一番,都是说 WordPress 文件权限设置不对,但是我已经将所有 文件夹权限设置为 755 文件权限设置为 644。 直到我看到了这个 https://wordpress.stackexchange.com/questions/302778/installation-failed-could-not-create-directory-centos-7 才找到根源所在