自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 资源 (10)
  • 收藏
  • 关注

原创 【NAS 折腾】个人音乐库解决方案-Music-Tag-Web【支持小爱同学 播放本地音乐】

通常音乐库的选择在Jel­lyfin/​Emby/​Plex 三种媒体程序。

2024-04-25 10:17:50 487 1

原创 celery怎么移除任务(在我不知道task_id的时候)

获取这在运行中的任务id。

2023-04-10 14:36:43 623

原创 Navidrome音乐打标签应用MusicTag Web版(线上刮削)

为什么开发web版?在使用Navidrome时,我的音乐都是在远程服务器上的,本地的Musictag和mp3tag不能满足我的需求, 我需要部署在远程服务器上去需改线上的音乐标签,相当于在使用Navidrome的边车应用。

2023-03-20 17:35:21 6575 9

原创 python redis 布隆过滤器实现

如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。链表、树、散列表(又叫哈希表,Hash table)等等数据结构都是这种思路。但是随着集合中元素的增加,我们需要的存储空间越来越大。同时检索速度也越来越慢,上述三种结构的检索时间复杂度分别为 O(n),O(log n),O(1)。

2022-11-03 11:24:19 816

原创 python读取大文件md5校验性能优化比较

后端分片的话可以考虑多线程,多进程的处理方案但是一般业务场景 更多是前端上传的文件流的形式更好的方案是前端拆分大文件,后端在接受文件的同时算出md5。

2022-10-27 11:42:03 3321

原创 使用SSE主动向浏览器推送消息(轮询以上,websocket未满)

SSE 全称是 Server Sent Event,翻译过来的意思就是 服务器派发事件。也就是说发送不是api那种一次性的json数据,而是一种流文件,会持续不断的发送,浏览器不会主动关闭连接,由服务端控制是否断开连接,相当于。

2022-10-20 15:03:32 1356

原创 无惧高并发!Python+Redis分布式锁,让你的业务高效稳定!

本文介绍了如何使用Python和Redis实现分布式锁,支持重入和续锁。通过使用Redis的setnx指令实现锁的加锁和解锁,使用Redis的expire指令实现锁的自动过期,从而保证锁的正确性和高效性。

2022-08-26 10:43:59 2604 1

原创 neo4j途径多个节点间的所有最短路径

例如:查询7个节点中途径这7个节点,会形成1条或多条的最短路径连线,都展示出来。

2022-08-12 14:41:53 1211

原创 python中werkzeug.Local模块

为什么使用werkzeug.Local而不是threading.local,因为python中应用基于协程运行,使用thread local变量可能会造成请求间数据相互干扰,因为一个线程中存在多个请求。Werkzeug 的设计者认为python自带的ThreadLocal并不能满足需求,主要因为下面两个原因:Werkzeug 主要用“ThreadLocal”来满足并发的要求,python 自带的ThreadLocal只能实现基于线程的并发。而python中还有其他许多并发方式,比如常见的协程(gr.

2022-05-18 18:15:23 398 1

原创 python中并发请求接口的多种实现

名词解释:事件循环:是每个 asyncio 应用程序的核心,每个协程任务都运行在事件循环中,事件循坏来管理分配不同任务的执行,比如aiohttp 请求后会让出控制权,事件循环就会继续执行下面的任务而不会造成阻塞,达到提高并发的目的。当然不是所有协程任务都可以让出控制权,所有要使用aiohttp而不是requests协程 :async关键字声明的特殊函数,就是协程,这时候协程已经不具备函数的特性,所以协程不是函数futures:调度的协程被包装在Tasks 中,它是一种Future类型,loop.cr

2021-12-10 10:55:30 3558

原创 mysql索引原理

文章中的索引均为介绍mysql中innodb引擎的索引什么是索引?索引是一种数据结构(B+树),索引的目的在于提高查询效率,与我们查阅图书所用的目录是一个道理:先定位到章,然后定位到该章下的一个小节,然后找到页数。磁盘预读?需要知道3个概念时间局部性,如果一个信息项正在被访问,那么在近期它很可能还会被再次访问空间局部性,在最近的将来将用到的信息很可能与正在使用的信息在空间地址上是临近的。顺序局部性,大部分指令是顺序进行的所以计算机操作系统做了一些优化,当一次IO时,不光把当前磁盘地址.

2021-10-08 11:48:47 78

原创 django celery中动态添加周期任务

常用实现方式@periodic_task(run_every=crontab(minute='*/5', hour='*', day_of_week="*"))def get_time(): """ celery 周期任务示例 run_every=crontab(minute='*/5', hour='*', day_of_week="*"):每 5 分钟执行一次任务 """ now = datetime.datetime.now() logger.er

2021-06-21 15:00:34 922

原创 django中bulk_create返回id的三种实现

Django中的QuerySet有bulk_create方法,但是此方法不会如预期的一样返回新增的所有对象的id,这个特性相当令人头疼,不过Postgre SQL在Django1.10后已经可以返回id了,MySQL还是不行所以 我们只能自己实现返回的ids一,category_ids = Category.objects.values_list('id', flat=True)categories = Category.objects.bulk_create([ Category(ti.

2021-05-20 11:44:18 2826

原创 python实现有向无环图(DAG)

from collections import OrderedDict, defaultdictfrom copy import copy, deepcopyclass DAG(object): """ Directed acyclic graph implementation. """ def __init__(self): """ Construct a new DAG with no nodes or edges. """ self.reset

2021-04-13 19:30:42 4695 1

转载 python slots魔法

在Python中,每个类都有实例属性。默认情况下Python用一个字典来保存一个对象的实例属性。这非常有用,因为它允许我们在运行时去设置任意的新属性。然而,对于有着已知属性的小类来说,它可能是个瓶颈。这个字典浪费了很多内存。Python不能在对象创建时直接分配一个固定量的内存来保存所有的属性。因此如果你创建许多对象(我指的是成千上万个),它会消耗掉很多内存。不过还是有一个方法来规避这个问题。这个方法需要使用__slots__来告诉Python不要使用字典,而且只给一个固定集合的属性分配空间。这里是一个

2021-03-29 11:16:29 2275

原创 django使用gzip实现数据压缩

使用django可以轻松将通过接口请求的数据进行gzip压缩。大大提升用户的体验。全局配置MIDDLEWARE_CLASSES = ( 'django.middleware.gzip.GZipMiddleware',)局部配置from django.views.decorators.gzip import gzip_page# 函数方法@gzip_pagedef viewFunc(request): return HttpResponse("hello"*100).

2021-03-25 10:45:44 1158 1

原创 Django celery 进阶使用

首先在项目中celery.py文件中定义一个celery实例# celery.pyimport osfrom celery import Celery# set the default Django settings module for the 'celery' program.os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')app = Celery('proj')# Using a string her

2021-03-20 13:32:56 390 1

原创 Django celery KeyError “Received unregistered task of type报错解决

报错提示 Did you remember to import the module containing this task?Or maybe you are using relative imports?下面总结几种可能结果消息队列中缓存之前的任务,清理删除消息队列(rabbitmq或redis)看你使用是什么消息队列,重启celery任务未被注册在celery.py中app.autodiscover_tasks(lambda: settings.INSTALLED_APPS.

2021-03-18 17:33:46 1559

原创 Django从零开始构建CMDB平台之模型设计(一)

一 模型设计传统设计来讲,是一个资产一个表,那么关系型数据库多少张合适?可以认为不同型号的产品都是一个资产,那么不同产品放在一张表中肯定不现实,每个场景一张表,那么如果新加场景如何考虑?增加字段?增加多少字段?所以我们要引入一种方式进行实现这些信息,不同信息是不一样的,比如id信息是一种信息,主机名等也是一种信息,即使分析的再好,一旦广泛使用起来,那么需求也陆续膨胀这样的设计带来很大的问题:字段无法控制,扩展性不够,大量的字段冗余,看似名字差不多,名字也差不多设计模型class CISche

2021-03-04 20:21:38 589 5

原创 Django orm跨多值关联,链式调用filter/exclude数据与预期不符合问题

一般情况下,QuerySet的切片返回一个新的QuerySet—— 其并未执行查询。一个特殊情况是使用了的 Python 切片语法的 “步长”。例如,这将会实际的执行查询命令,为了获取从前 10 个对象中,每隔一个抽取的对象组成的列表:Entry.objects.all()[:10:2]2,Blog.objects.filter(entry__authors__name='Lennon')(假设有个关联的Author模型),若某项条目没有任何关联的author,...

2020-12-24 19:30:38 4036 2

原创 python bad magic number:b‘\x03\xf3\r\n‘:ImportError

当在Python版本更改之间保留旧的.pyc文件时,这是由Python 2.x .pyc文件进入新的Python 3.x项目引起的。解决方法find . -name \*.pyc -deleteython文件*.py运行的时候会产生对应的*.pyc文件,这个是python的解释器把*.py文件编译得到的二进制文件,完全可以*.py文件一样运行,功能上没有任何差别。很多厂商为了防止源码外泄,经常会采用把*.py源码文件编译后删除,完全使用*.pyc文件运行自己的产品。当然了,你打开*.pyc文件是一.

2020-12-21 19:25:57 3767 2

原创 Python实现猴子补丁

猴子补丁猴子补丁(monkey patch)的主要功能就是模块运行时动态的属性的替换。运行时动态改变类的方法class A: def func(self): print("Hi") def monkey(self): print("Hi, monkey")a = A()a.func()'''运行结果Hi'''加上猴子补丁class A: def func(self): print("Hi") de

2020-12-12 16:32:13 381

转载 MySQL索引数据结构及算法原理

原文转载MySQL索引背后的数据结构及算法原理1. 什么是索引?MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是一种数据结构。数据库查询是数据库的主要功能之一,最基本的查询算法是顺序查找(linear search)时间复杂度为O(n),显然在数据量很大时效率很低。优化的查找算法如二分查找(binary search)、二叉树查找(binary tree search)等,虽然查找效率提高了。但是各自对检索的数据都有要求

2020-12-12 16:02:53 218

原创 csrf是什么? Django中csrf的原理?

CSRF攻击CSRF(英语:Cross-site request forgery)是跨站请求伪造的缩写,也被称为XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法,CSRF利用的是网站对用户网页浏览器的信任,。举个栗子受害者登录a.com,并保留了登录凭证(Cookie)。攻击者引诱受害者访问了b.com。b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie。a.com接收到请求后,对请求进行验证,并

2020-11-28 14:45:17 3348

转载 分布式事务

数据库事务数据库事务的几个特性:原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( Isolation)和持久性(Durabilily),简称就是ACID分布式事务分布式的网络环境很复杂,这种“断电”故障要比单机多很多,所以我们在做分布式系统的时候,最先考虑的就是这种情况。这些异常可能有 机器宕机、网络异常、消息丢失、消息乱序、数据错误、不可靠的TCP、存储数据丢失、其他异常等等当我们的单个数据库的性能产生瓶颈的时候,我们可能会对数据库进行分区,这里所说的分区

2020-11-14 21:53:52 163

原创 PDF.js跨域(django后端处理数据流方法)

前言PDF.js is a Portable Document Format (PDF) viewer that is built with HTML5.下载地址https://github.com/mozilla/pdf.js/releases跨域网上也有一些设置nginx服务器实现跨域,这里只考虑是把pdf文件请求到后端返回数据流的形式来实现首先修改viewer.jsfunction webViewerLoad() { var config = getViewerConfigu

2020-07-28 10:30:52 2527

原创 Docker部署应用 Django+daphne+Gunicorn+Nginx+Redis

title: Docker部署应用 Django+daphne+Gunicorn+Nginx+Redisdate: 2020-07-22author: charlesTags: dockerSlug: docker-django-daphne-gunicorn-nginxCategory: python前言发布于Docker部署应用 Django+daphne+Gunicorn+Nginx+Redis这里使用Docker部署应用,用到的技术栈Django==2.2.14Daphne,

2020-07-23 12:10:18 5397

转载 github pages不能自动更新

昨天往github pages的repository里提交了一篇文章后,却发现github pages的页面一直没有更新——看不到新提交的文章。网上搜了一些资料,最后解决了这个问题。一般来说,只要你的github pages repository有新的提交,github的服务器就会运行jekyll编译你的repository(延时很小)。如果编译出错,那么你的github pages页面是不会更新的;同时,github也会给你发一封提醒邮件,大致内容如下,The page build failed wi

2020-07-13 16:05:21 8416 2

原创 免费的Github博客搭建(python+pelican)

每个入门程序员或多都想拥有一个自己博客站点,苦于高额的服务器费用和较为麻烦的操作步骤,你完全可以通过 GitHub Pages来实现一个免费,可定制的书写,记录生活,技术分享的平台。为什么使用 GitHub Pages首先它是完全免费,可以省下一笔服务费无须自己购买云服务进行搭建,只需按步骤一步步操作即可,即使你不懂他的技术细节;支持的功能多,玩法丰富,你可以绑定你的域名、使用免费的 HTTPS、自己 DIY 网站的主题、使用他人开发好的插件等等当完成搭建后,你只需要专注于文章创作就可以了,其他

2020-07-13 11:19:57 597

原创 Python3最长递增子序列(Longest Increasing Subsequence/LIS)

最长递增子序列(Longest Increasing Subsequence; LIS)最长增加子序列(LIS)问题是找到给定序列的最长子序列的长度,以使该子序列的所有元素都按升序排序。例如,{10、22、9、33、21、50、41、60、80}的LIS长度为6,LIS为{10、22、33、50、60、80}。def lis(arr): if not arr: return 0 n = len(arr) # 存放每一步规划的最大解 dp = [1] * n

2020-07-01 15:14:57 565

原创 最长共同子序列 (Longest Common SubsequenceLCS)

1. 最长共同子序列 (Longest Common Subsequence; LCS)给定两个序列,找出两个序列中存在的最长子序列的长度。子序列是指以相同的相对顺序出现,但不一定是连续的序列 称为「最长共同子序列」(Longest Common Subsequence; LCS)」示例:序列“ ABCDGH”和“ AEDFHR”的LCS为长度3的“ ADH”。序列“ AGGTAB”和“ GXTXAYB”的LCS为长度4的“ GTAB”。解题思路首先看一个2个字符串abcdefg和c

2020-06-29 16:51:38 1312

原创 一篇基础了解python(非常实用)

Q: Python垃圾回收机制/内存管理机制?A:总体来说,在Python中,主要通过引用计数进行垃圾回收;通过 “标记-清除” 解决容器对象可能产生的循环引用问题;通过 “分代回收” 以空间换时间的方法提高垃圾回收效率。Python垃圾回收机制Q:__new__和__init__的区别?A:__new__作为构造器,起创建一个类实例的作用。而__init__作为初始化器,起初始化一个已被创建的实例的作用。__new__和__init__的区别Q:Python字典dict实现原理?A:散列表是一个

2020-06-23 15:54:21 92

原创 代码放在Docker image还是挂载到volume

首先需要明确的是:Docker到底能够带来什么样的好处,Docker带来轻量级虚拟化容器方面的优势(资源利用率高,创建快捷,环境纯粹) ?   还是镜像带来的优势(便于部署,记录容器状态,持续集成等)?  确定了使用的场景,才好说明代码到底放到什么地方更合适。举几个例子,可以根据场景灵活的方式使用代码和数据:场景一:如果做好了所有代码,想分发给其他使用者,这种无疑代码放到image是最佳的,包括数据库初始化脚本等。场景二:如果是开发环境,代码是用于调试,代

2020-06-12 16:22:31 975

原创 Python3 双向链表

双向链表双向链表:每一个元素都是一个对象,每个对象有一个关键字key和两个指针:next和prev在双向链表的实现中,使用一个伪头部(dummy head)和伪尾部(dummy tail)标记界限,这样在添加节点和删除节点的时候就不需要检查相邻的节点是否存在。双向链表:每一个元素都是一个对象(DLinkedNode类的实例),每个对象有一个关键字key和两个指针:next和prevclass DLinkedNode: def __init__(self, key=0, value=0

2020-05-25 16:46:06 543

原创 python 根据uuid 获取mac地址

import uuidtry: mac = uuid.UUID(int=uuid.getnode()).hex[-12:] mac_address = ':'.join([mac[e:e + 2] for e in range(0, 11, 2)])except: mac_address = ''print(mac_address)

2019-12-24 16:40:24 1937

原创 Python url的编码转换

基于python 自带module urllibfrom urllib.parse import parse_qs, urlparse, urlencode, unquote, unquote_plus, quote, quote_plusdef parse_url_params(url): """将url ?后的参数转成字典""" # 提取url参数 quer...

2019-11-19 16:15:16 2135

原创 Django 聚合函数进阶

Django里数据库sql函数example model:class Author(models.Model): name = models.CharField(max_length=50) age = models.PositiveIntegerField(null=True, blank=True) alias = models.CharField(max_leng...

2019-11-19 12:18:57 1722 4

原创 linux 系统 目录的含义

1、/bin :获得最小的系统可操作性所需要的命令2、/boot :内核和加载内核所需的文件3、/dev :终端、磁盘、调制解调器等的设备项4、/etc :关键的启动文件和配置文件5、/home :用户的主目录6、/lib :C编译器的库和部分C编译器7、/media :可移动介质上文件系统的安装点8、/opt :可选的应用安装包9、/proc :所有正在运行进程的映像10、/r...

2019-11-08 10:46:09 147

原创 appinum1.15 + python3 + iOS 环境搭建

安装 libimobiledevicebrew install libimobiledevice --HEAD安装xcode在app 搜索Xcode 点击安装。旧mac 系统不兼容最新版的xcode 可以到(https://developer.apple.com/download/more/)这里搜索较低的版版进行安装安装 Command Line Tools在终端机里输入指令...

2019-10-18 16:36:23 289

原创 appium后 安卓键盘调用不出来

A:appium 把默认键盘改成appium自带的那个输入法了 //获取当前的可用输入法`adb shell ime list -s` //设置当前的输入法 adb shell settings put secure default_input_method com.sohu.inputmethod.sogou/.SogouIME ...

2019-10-15 11:00:04 537

python3.9 macos m1 tensorflow-io whl

支持m1 macos 的 tensorflow_io wheel包

2022-09-06

MySQL-python-1.2.5 2.zip

将下载的MySQL-python-1.2.5的文件解压,然后打开编辑器编辑setup_posix,其中有一行mysql_config.path = "mysql_config",改为mysql_config.path = "/usr/local/Cellar/mysql-connector-c/6.1.11/bin/mysql_config" 这里注意了,/usr/local/Cellar/mysql-connector-c/6.1.11/bin/mysql_config是我的mysql的安装地址。也就是说安装之前需要先安装mysql,只需要去官网下载就行了。(只适用python2,python3 请用whl安装【https://pypi.org/project/mysqlclient/#files】)

2019-07-30

edit this cookie 谷歌插件

edit this cookie chrome插件是一款专为谷歌内核浏览器打造的cookie插件,安装谷歌浏览器edit this cookie插件后你就可以在浏览器中添加、删除、编辑、搜索、锁定和屏蔽cookies,还能有效保护你的数据安全和隐私。

2018-04-13

XSSme平台源码

SS平台可以辅助安全测试人员对XSS相关的漏洞危害进行深入学习,了解XSS的危害重视XSS的危害,如果要说XSS可以做哪些事情,XSS可以做js能够做的所有事情。包括但不限于:窃取Cookie、后台增删改文章、钓鱼、利用XSS漏洞进行传播、修改网页代码、网站重定向、获取用户信息(如浏览器信息,IP地址等)等。

2018-04-11

Pyqt5 入门教程例子

pyqt5&python; Gui入门教程,本人的教程比较基础,所用方法不够亮骚,仅供新手入门,若大家有更好的方法不胜赐教!

2018-02-26

adb 1.0.31版本

adb 1.0.31版本--解决4.3android系统adb offline问题 adb 1.0.31版本--解决4.3android系统adb offline问题亲测可行!

2018-01-05

Python网络数据采集

本书采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导。第一部分重点介绍网络数据采集的基本原理:如何用Python从网络服务器请求信息,如何对服务器的响应进行基本处理,以及如何以自动化手段与网站进行交互。第二部分介绍如何用网络爬虫测试网站,自动化处理,以及如何通过更多的方式接入网络。

2017-09-05

图解机器学习

本书用丰富的图示,从最小二乘法出发,对基于最小二乘法实现的各种机器学习算法进行了详细的介绍。第Ⅰ部分介绍了机器学习领域的概况;第Ⅱ部分和第Ⅲ部分分别介绍了各种有监督的回归算法和分类算法;第Ⅳ部分介绍了各种无监督学习算法;第Ⅴ部分介绍了机器学习领域中的新兴算法。书中大部分算法都有相应的MATLAB程序源代码,可以用来进行简单的测试。 本书适合所有对机器学习有兴趣的初学者阅读。 187张图解轻松入门 提供可执行的Matlab程序代码 覆盖机器学习中最经典、用途最广的算法 专业实用 东京大学教授、机器学习权威专家执笔,浓缩机器学习的关键知识点 图文并茂 187张图示帮助理解,详略得当,为读懂大部头开路。 角度新颖 基于最小二乘法讲解各种有监督学习的回归和分类算法,以及无监督学习算法。 实战导向 配有可执行的MATLAB程序代码,边学习边实践。

2017-09-03

图解HTTP(高清)

本书对互联网基盘——HTTP协议进行了全面系统的介绍。作者由HTTP协议的发展历史娓娓道来,严谨细致地剖析了HTTP协议的结构,列举诸多常见通信场景及实战案例,最后延伸到Web安全、最新技术动向等方面。本书的特色为在讲解的同时,辅以大量生动形象的通信图例,更好地帮助读者深刻理解HTTP通信过程中客户端与服务器之间的交互情况。读者可通过本书快速了解并掌握HTTP协议的基础,前端工程师分析抓包数据,后端工程师实现REST API、实现自己的HTTP服务器等过程中所需的HTTP相关知识点本书均有介绍。 本书适合Web开发工程师,以及对HTTP协议感兴趣的各层次读者。

2017-09-02

空空如也

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

TA关注的人

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