- 博客(164)
- 资源 (1)
- 收藏
- 关注
原创 解决Python TypeError: Object of type int64 is not JSON serializable
错误场景:在使用json.dumps时,出现问题: TypeError: Object of type int64 is not JSON serializable问题分析:python3中没有int64这个数据类型,所有的整型都是int报错里的int64指的是<class ‘numpy.int64’>,所以很有迷惑性解决方案:TypeError: Object of type int64 is not JSON serializabledef default_dump(obj
2022-03-02 12:59:27
22272
5
原创 用户关注表设计(查询包含是否互关等状态)
最近在写用户关注这方面的东西,本想偷懒,结果网上也没找到一个能在查出来粉丝列表的同时告知我是否与该用户为互相关注,又碍于项目没法用图数据库,只能自己写一写了表结构首先uid和followed_uid为本表的唯一主键, id为自增字段,用来统计,其他字段多为辅助字段。说明一下:status为1代表关注 为0代表未关注,这个的意义是在大部分情况下修改的效率是大于删除的。(大部分情况下修改不是单纯的删除再插入)create table user_follows( updated_at t.
2021-09-16 15:23:43
2883
6
原创 用户留存 Postgresql&&Mysql双版本
渠道留存 Postgresql&&Mysql双版本Postgresql版本是我工作在用的,写的留存是给我们公司后台用的,所以确保可用Mysql版本是我回忆Mysql语法改的,八九不离十,稍微改改问题也不大。postgresql版本---- 1. 获取需要查看留存的用户uid,create_timeSELECT id, to_char(created_at, 'YYYY-MM-DD') create_timeFROM usersWHERE to_char(users.crea
2021-06-10 19:35:30
255
1
原创 Grpc使用(go && python)
一、Http和Rpc误区:http协议是支持连接池复用的,也就是建立一定数量的连接不断开,并不会频繁的创建和销毁连接。传输协议RPC,可以基于TCP协议,也可以基于HTTP协议HTTP,基于HTTP协议,一种对TCP协议的应用传输效率RPC,使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减少报文的体积,提高传输效率HTTP,如果是基......
2020-02-27 19:35:20
1523
原创 LCS (Longest Common Subsequence)
一、最长公共子序列一个数列 S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则S称为已知序列的最长公共子序列。最长公共子串(Longest CommonSubstring)和最长公共子序列(LongestCommon Subsequence,LCS)的区别:子串是串的一个连续的部分,子序列则是从不改变序列的顺序,而从序列中去掉任意的元素而获得的新序列;更简略地说,子串...
2020-02-20 11:32:30
425
原创 Jaccard相似系数
Jaccard相似系数(Jaccard similarity coefficient)用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。定义给定两个集合A,B,Jaccard 系数定义为A与B交集的大小与A与B并集的大小的比值,定义如下:当集合A,B都为空时,J(A,B)定义为1。与Jaccard 系数相关的指标叫做Jaccard 距离,用于描述集合之...
2020-02-20 11:30:56
2691
原创 BK-Tree
用于根据编辑距离(Levenshtein距离)概念执行拼写检查。 BK树也用于近似字符串匹配。基于该数据结构,可以实现许多软件中的各种自动校正特征。BKTree算法上分两步:1 构造在词典里面随便找一个词作为root节点,然后与其他词计算编辑距离n。若已有相同编辑距离n的子节点,就挂在子节点下;若没有,就新建边为n的子节点。如此递归下去。2 查询这里重点来了,编辑距离符合三角不等式...
2020-02-20 11:29:49
1993
原创 编辑距离(Levenshtein Distance)
是用来度量两个序列相似程度的指标。通俗地来讲,编辑距离指的是在两个单词[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-msKmtzEa-1582169184523)(https://math.jianshu.com/math?formula=%3Cw_1%2Cw_2%3E)]之间,由其中一个单词[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(im...
2020-02-20 11:28:36
532
原创 WebSocket
WebsocketWebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API 中,浏览器和服务器只需要完成一次握手,浏览器和服务器之间就形成了一条快速通道, 两者之间就直接可以创建持久性的连接,并进行双向数据传输1、 webso...
2020-01-04 15:43:31
484
1
原创 永久token
在HTTP检查的时候,出现如下错误:401的意思代表访问由于凭据无效被拒绝,总结一下就是我们设置的token过期了,那如何设置一个永久有效的token呢?我们的token认证是通过JWT实现的,JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。JWT TOKEN组成一个JWT TOKEN为三个部分组成:JWT头JWT头部分是一个描述JWT元数据的JSON对...
2019-07-23 09:40:30
4752
1
原创 python中subprocess模块的使用
import os## os.system() #输出命令结果到屏幕,返回命令的执行状态## os.popen("dir").read #会保存命令的执行结果并输出# 在linux里面import subprocesssubprocess.run(["ipconfig","ping 192.168.1.1"]) #同时执行多条命令subprocess.run("df -h |gre...
2019-06-27 17:46:17
481
1
原创 【python-docx 07】使用word样式
定义样式使用Document.styles属性定义样式:>>> document = Document()>>> styles = document.styles>>> styles<docx.styles.styles.Styles object at 0x10a7c4f50>Styles对象可以像字典一样访问,ke...
2019-06-05 19:43:53
4791
4
原创 【python-docx 06】理解word样式
Word中的样式是什么?当类似元素的格式一致时,文档会更加直观。为了实现这种一致性,专业文档设计人员开发了一个样式表,用于定义文档元素类型并指定每个元素的格式。例如,也许主干段落字体设置在9pt Times Roman中,线高11 pt,左齐右齐,右边粗糙。当这些规范应用于文档的每个元素时,实现了一致美观的结构。Word中的样式是一组规范,可以一次性应用于每个文档元素。Word具有段落样式,...
2019-06-05 18:11:56
1458
1
原创 【python-docx 05】操作页眉和页脚
Word支持页眉和页脚。页眉是出现在每个页面的上边距区域中的文本,与文本主体分开,并且通常传达上下文信息,例如文档标题,作者,创建日期或页码。文档中的页眉在页面之间是相同的,内容上只有很小的差异,例如更改部分标题或页码。页眉也称为运行头。页脚在页眉的每个方面都类似,只不过它出现在页面底部。它不应与脚注混淆,脚注在页面之间内容是不一致的。访问章节的标题页眉和页脚与一个部分相关联,这允许每个...
2019-06-04 13:26:26
9967
3
原创 【python-docx 04】对章节操作
Word支持章节的概念,即具有相同页面布局的文档的分区。例如:页边距和页面方向。例如,这是一种文档可以包含纵向布局中的某些页面以及横向上的其他页面的方式。大多数Word文档只有默认的单个部分,而且大部分都没有理由更改默认边距或其他页面布局。但是当您确实需要更改页面布局时,您需要了解部分才能完成它。访问章节Document对象的sections属性提供对文档章节的访问:>>&...
2019-06-04 11:02:12
3698
2
原创 【python-docx 03】对文本操作
为了有效地处理文本,首先要了解一些块级元素(如段落)和内联级对象(如run),这很重要。块级与内联文本对象段落是Word中的主要块级对象,块级项目在其左右边缘之间流动包含的文本,每次文本超出其右边界时添加一条附加行。对于段落,边界通常是页边距,但如果页面按列布局,它们也可以是列边界,如果段落出现在表格单元格内,则它们也可以是单元格边界。表也是块级对象。内联对象是在块级项目内发生的内容的...
2019-06-04 10:27:20
1152
原创 【python-docx 02】对文档操作
使用python-docx不仅可以编写文档,还可以对现有文档进行编辑操作。让我们逐步完成一个示例创建文档的步骤,从您可以对文档执行的两个主要操作开始,打开和保存。打开一个文档最简单的就是打开一个文档,但是不指定文件路径:from docx import Documentdocument = Document()document.save('test.docx')这就相当于新建一个...
2019-06-03 18:11:20
696
原创 【python-docx 01】python-docx入门
python-docx是一个用于创建和更新Microsoft Word(.docx)文件的Python库。官方文档链接使用前首先通过pip install python-docx来安装此库。打开一个文档from docx import Documentdocument = Document()这将打开一个基于默认“模板”的空白文档,几乎是您使用内置默认值在Word中启动新文档时获得的文...
2019-06-03 17:54:13
1982
原创 使用Celery+redis实现定时删除数据库过期信息
上次有个需求是数据库每天定时清理,最后使用了mysql自带的事件调度+存储过程完成了这个事情,详见(点击查看),但是事后仔细回味感觉这很不python,所以决定使用异步列队神器Celery来完成这个事情。首先需要用到redis来做缓存,所以首先需要保证电脑上有redis环境,安装教程参见我之前的redis教程(点击查看)这里假设已经安装好redis服务了,接下来就是安装python的依赖包:...
2019-06-01 19:20:19
2358
原创 Python中的ZipFile模块
今天在做项目的时候,要求解析word的xml文件,经过研究发现,将word文件的后缀名改为.zip解压后就可以在word文件夹中找到一个名为document.xml的xml文件。里面包含了word的结构和所有文本内容。但是作为一个python程序员,如何用python优雅的解决这个问题呢?这就需要使用Python中的ZipFile模块了。zipfile模块用来做zip格式编码的压缩和解压缩...
2019-06-01 11:51:59
692
原创 MySQL定时删除数据表过期数据
需求:Mysql用户信息表,每隔15天进行一次清理,只保留15天内的用户数据1. 表结构class UserInfo(db.Model): __tablename__ = '用户信息表' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(32), index=Tr...
2019-05-29 21:27:23
2445
2
原创 【Docker-03】Docker数据管理
容器中的管理数据主要有两种方式:数据卷(Data Volumes):容器内数据直接映射到本地主机环境数据卷容器(Data Volume Containers):使用特定容器维护数据数据卷数据卷是一个可提供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似Linux的挂载。数据卷可以提供很多有用的特性:数据卷可以在容器之间共享和重用,容器间传递数据将变得高效与方便对数据...
2019-05-23 17:58:17
167
2
原创 【Docker-02】Docker容器操作
容器时Docker的一个核心概念。容器是镜像的一个运行实例。镜像是静态只读文件,容器带有运行时需要的可写文件层容器中的应用进程处于运行状态与虚拟机完整的操作系统不同,Docker容器就是独立运行的一个(一组)应用,以及他们必须的运行环境。创建容器新建容器可以用docker creat命令创建一个容器,例如:~$ docker create -it ubuntu:18.04cb...
2019-05-21 15:41:37
237
原创 【Docker-01】Docker基础入门
Docker与虚拟机相比优势:快,启动停止秒级实现占用较少资源,一个主机上可以同时运行数千个Docker容器类似Git的操作来方便用户获取、分发和更新应用镜像,学习成本低通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高工作效率Docker可以使用隔离容器来同时启动n个不同应用,基本不消耗二外的系统资源传统的虚拟机是在硬件层面实现虚拟化,需要有二外的虚拟机管理...
2019-05-21 11:23:25
282
原创 2013,Lost connection to MySQL server during query 报错处理
今天在单位改bug,有一个表总是在写入数据的时候报2013的错误查阅了一下官方文档,总结一下3种可能性,一般都是第一或第二种原因。首先SQLAlchemy官方对该错误的解释:针对与数据库操作相关的错误而引发的异常,并且不一定在程序员的控制之下,例如, 发生意外断开连接,找不到数据源名称,无法处理事务,处理期间发生内存分配错误等。此错误是DBAPI错误,源自数据库驱动程序(...
2019-05-14 20:27:07
51743
2
原创 Flask对数据库的增删改查
这里我们以mysql为例连接数据库:from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)app.config["SQLALCHEMY_DATABASE_URI"]="mysql+pymysql://username:password@host/dbname定义模型,...
2019-05-08 15:41:25
447
原创 网络七层协议:OSI
OSI(网络七层协议)是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。OSI的7层从上到下分别是7应用层6表示层5会话层4传输层3网络层2数据链路层1物理层 ;其中高层(即7、6、5、4层)定义了应用程序的功能,下面3层(即3、2、1层)主要面向通过网络的端到端的数据流。OSI层 功能 T...
2019-05-04 12:37:54
331
原创 linux后台运行和关闭、查看后台任务
这里我写一个python脚本用作测试:#!/bin/python3import timefor i in range(100): print(i) time.sleep(1)一、&加在一个命令的最后,可以把这个命令放到后台执行,如python3 test.py &虽然会后台运行,但是会输出结果,如果关闭xshell窗口,进程会结束,也就是结束后台运...
2019-05-02 21:47:56
2044
原创 Linux定时任务Crontab命令详解
linux 系统由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划任务,所以,Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。一、crond简介crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计...
2019-05-02 21:21:01
762
原创 排序算法的时间与空间复杂度分析
时间复杂度时间复杂度是同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷...
2019-04-28 21:17:54
4547
1
原创 Python的内存管理机制(简单易懂版)
我们在创建变量的时候,每创建一个新的变量就会在内存中申请一块区域,我们计算机的内存不是无限的,一般的电脑还都是8g内存,好点的已经用上了16g内存,所以计算机的内存地址也是有限的。学过C语言的应该知道,new语句申请的内存需要手动释放,否则就会变成“脏地址”,也就是无法使用的内存,任凭你有再多的内存,没一会儿就被吃的干干净净的了!何为脏地址?如下所示>>> l...
2019-04-27 13:08:27
735
原创 Python实现二叉树的遍历(前序,中序,后序,层级,深度)
前序遍历:前序遍历算法先访问树的根节点,然后以类似的方式分别遍历左子树和右子树,如下图所示中序遍历:中序遍历算法先遍历左子树,然后访问根节点,最后遍历右子树,如下图所示:后序遍历:后序遍历算法先遍历左子树,然后右子树,最后访问根节点,如下图所示:层序遍历: 层序遍历的算法从0层级开始,在每一层级按照从左到右的顺序访问节点,如下图所示:用Python来实现:...
2019-04-26 23:06:11
834
转载 这可能是我看过写的最好的GET与POST请求本质区别的文章
本文转发自(原文链接),这可能是我看过的写的最好的GET和POST请求区别的文章。GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么...
2019-04-26 22:24:28
208
原创 子进程与子线程的区别
1、相同点:(a)二者都具有ID,一组寄存器,状态,优先级以及所要遵循的调度策略。(b)每个进程都有一个进程控制块,线程也拥有一个线程控制块。(c)线程和子进程共享父进程中的资源;线程和子进程独立于它们的父进程,竞争使用处理器资源;线程和子进程的创建者可以在线程和子进程上实行某些控制,比如,创建者可以取消、挂起、继续和修改线程和子进程的优先级;线程和子进程可以改变其属性并创建新的资源。...
2019-04-26 21:09:44
1085
原创 MySQL多表联查的深入浅出
一、多表连接查询如下图,把学生和班级表进行合并,合并后就能知道每个学生的班主任都是谁。特点:(1)将分散在多个表中的信息(列)横向合并在一起(2)通常需要指明连接条件只要2个或多个表中列的数据类型类似(例如:都为数值型、都为字符型等)就可以连接在一起,但通常会根据列的实际业务含义进行连接,这样才有实际意义(3)多表连接查询和单表查询相比会耗费更多的系统资源...
2019-04-25 22:37:27
736
原创 条件概率公式、全概率公式以及贝叶斯公式
一、条件概率公式P(A|B)——在 B 条件下 A 的概率.即事件A 在另外一个事件 B 已经发生条件下的发生概率. P(AB)——事件A、 B同时发生的概率,即联合概率.联合概率表示两个事件共同发生的概率.A 与 B 的联合概率表示为 P(AB) 或者 P(A,B). P(B)——事件B发生的概率.条件概率 示例:就是事件A 在另外一个事件 B 已经发生条件下的发生概率.条件概...
2019-04-25 09:27:35
6453
原创 散列表查找为何如此之快
一、散列函数散列是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。建立了关键字与存储位置的映射关系,公式如下:存储位置 =f(关键字)设所有可能出现的关键字集合记为U(简称全集),实际发生(即实际存储)的关键字集合记为K(|K|比|U|小得多)。散列方法是使用函数f将U映射到表T[0..m-1]的下标上(m=O(|U|...
2019-04-24 22:28:40
974
转载 Python抽象类和接口类
一、抽象类和接口类继承有两种用途:继承基类的方法,并且做出自己的改变或者扩展(代码重用)声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能.实践中,继承的第一种含义意义并不很大,甚至常常是有害的。因为它使得子类与基类出现强耦合。继承的第二种含义非常重要。它又叫“接口继承”。接口...
2019-04-19 17:32:18
373
多线程腾讯招聘爬虫
2019-04-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人