【Picgo】正确重命名文件,避免重复上传
picgo正确设置重命名文件,避免同文件重复上传 1.问题来源在之前配置picgo+阿里云oss图床的博客中,我提到了需要开启picgo的时间戳重命名功能,以避免同名文件冲突。 阿里云OSS默认策略:同名文件会被覆盖 现在看来,这个方法还是有一个缺点:那就是没有办法避免同一个文件的多次上传 说白了就是,我有一个图片,结果因为自己不小心多复制了几次,导致picgo多次上传了这个文件。再加上时间戳不同,之前上传的图片并不会被覆盖,而是留在那儿无人问津; 亦或者是开启了typora下图中对于网络位置的图片应用上述规则,同一个图片需要在一篇文章中出现两次,复制的时候,因为开启了该策略,typora自动帮你又上传了一遍; 1.1...
【Docker】用开源umami监控你的站点访问量
新年到,祝大家兔年吉祥!🎉 1.介绍umami是一个开源的站点访问量监看程序,其支持docker部署到自己的服务器上。相比较百度等收费的网站信息监看,这种方式对于小站长来说更加实惠一些 2.docker安装的坑2.1 docker-compose以下是官方提供的yml文件,我只是将数据库docker的名字改成了umi-db,将3000端口映射给了本机的3010端口 12345678910111213141516171819202122232425version: '3'services: umami: image: ghcr.io/umami-software/umami:postgresql-latest ports: - "3010:3000" environment: DATABASE_URL: postgresql://umami:umami@umi-db:5432/umami DATABASE_TYPE: postgresql HASH_SALT:...
【Linux】设置系统防火墙,解决控制台开了防火墙依旧无法访问问题
今天在控制台开放了腾讯云服务器的防火墙,发现用ip:端口还是不能访问,查询了之后,才知道需要设置系统里面的防火墙 1.命令12firewall-cmd --zone=public --add-port=30100/tcp --permanentfirewall-cmd --reload 语句的意思是开放30100的tcp端口,随后重新加载防火墙。 如果要开放udp端口,吧tcp改成udp就可以了 2.使用示例12345# firewall-cmd --zone=public --add-port=30100/tcp --permanentsuccess# firewall-cmd --reloadsuccess 调用完上面两个命令,还可以看看当前开了什么端口 12# firewall-cmd --list-ports30100/tcp 出现这个就是ok了 3.关闭端口开启了,也得学会关闭 12firewall-cmd --zone=public --remove-port=3000/tcp --permanentfirewall-cmd...
【Linux】旋转锁 | 读写锁
在之前的线程学习中,用到的锁都是挂起等待锁,如果申请不到锁,那就会在锁中等待; 自旋锁则不大相似 [TOC] 1.自旋锁1.1 概念自旋锁是一个轮询检测锁,其检测机制并不是挂起等待,而是不断的询问锁有没有空闲;类似于一个while(1)循环的trylock() 由于其需要不断的轮询检测,所以会占用一定的CPU资源;如果线程较多,就容易给cpu造成负荷。 但是自旋锁无须唤醒挂起等待状态的线程,其消耗较小。 总结一下: 自旋锁适合竞争不激烈,且临界区较小(呆的时间短)的情况(因为这种情况使用互斥锁时,用户态和内核态之间的切换耗时可能都远大于临界区耗时); 自旋锁不适合大量线程,临界区长的情况; 自旋锁的优缺点反过来,便是挂起等待锁的优缺点了。我们要根据不同场景,正确选择锁的类型 1.2 接口相关接口和mutex都是很相似的,这里就不演示使用的效果了 1.2.1 pthread_spin_init/destroy1234#include <pthread.h>int pthread_spin_destroy(pthread_spinlock_t...
【Linux】线程实例 | 简单线程池
今天来写一个简单版本的线程池 1.啥是线程池池塘,顾名思义,线程池就是一个有很多线程的容器。 我们只需要把任务交到这个线程的池子里面,其就能帮我们多线程执行任务,计算出结果。 与阻塞队列不同的是,线程池中内有一个队列用于任务管理,并帮我们封装了线程创建的工作。我们不再需要在主执行流里面创建线程(创建线程也是有时间消耗的),而是只关注于任务的创建,交给线程池来运行并产生结果就OK了 前面已经学习过阻塞队列了,此时再来写线程池,就没有那么困难了! 本次线程池的设计还会采用单例模式,同一个模板类型的任务,只需要一个线程池即可 1.1 简单复习单例模式单例模式分为两种设计方式,一个是懒汉,一个是饿汉 懒汉:刚开始先不创建单例,等第一次使用的时候在创建;缺点是第一次获取单例需要等待,优点是程序启动快 饿汉:main函数执行前,就将单例创建起来;缺点是程序启动会比较慢,优点是启动之后获取单例会快 2.代码示例-处理task2.1 成员变量因为是线程池,需要在内部创建出线程来运行,所以我们需要一个num来标识需要创建的线程的数量 12345678910template...
【Python】生成本项目的requeirments.txt
有的时候,我们需要对自己写的项目生成一个requeirments.txt,方便其他使用者快速安装依赖项 参考https://www.cnblogs.com/shun7man/p/14080921.html 1.使用pip如果你的项目本身就是在venv虚拟环境下跑的,那么可以直接用下面的语句生成一个依赖项文件 1pip freeze > requirements.txt 但如果你和我一样,没有使用虚拟环境,而是用全局的包的话,那就会出现上图的情况,生成的txt文件里面出现了太多本项目没有用到的包,那你让别人安装那么多没有用的包,岂不是坑人嘛! 所以可以用另外一个项目来解决这个问题 2.pipreqs安装项目地址 https://github.com/bndr/pipreqs 使用之前需要先安装一个包 1pip install pipreqs 123456789101112131415161718[muxue@bt-7274:~/kook/val-bot]$ pip3.10 install pipreqsDefaulting to user...
【Linux】tar命令打包 | 查看压缩文件 | 打包时忽略文件
tar命令打包 | 查看压缩文件 | 打包时忽略文件 等操作 1.起因今天下午写阿狸bot的代码的时候,写错了aiofiles的保存操作 12345678# 正确写法async def write_file_aio(path:str, value): async with aiofiles.open(path, 'w', encoding='utf-8') as f: await f.write(json.dumps(value, indent=2, sort_keys=True,ensure_ascii=False)) # 错误写法# 前面是一样的await f.write(json.dump(value, indent=2,...
【Python】request.session的cookie如何导入aiohttp._cookie_jar
request.session的cookie导入aiohttp._cookie_jar的教程 1.起因我的 kook-valorant-bot 使用了两个开源库,用于riot账户的登录并获取token 其中最主要用的是基于aiohttp的floxay/python-riot-auth,但这个仓库不支持2fa用户(开启了邮箱双重验证的用户)作者去年就说会写上,但是他比较忙没有排期; 于是我又去找了一个另外一个基于request的Prodzify/Riot-auth 支持2fa登录的,半月前已经给bot加上了这个缺失半年的功能。 可是 Prodzify/Riot-auth 没有写cookie登录方法,其每次登录都需要账户密码,2fa用户每次都需要提供邮箱验证码;对于一个bot来说,每次操作这么麻烦,很是难受! 随后,我去询问了写discord valorant bot的作者,得知如果2fa用户使用cookie登录,其是不需要提供邮箱验证码的! 那么问题就变成了,如何将...
【Python】request库InsecureRequestWarning的原因
今天在测试我自己写的api的时候,发现了之前出现的一个warning的真正原因 1.起因先来看请求api的代码 1234567def ApiRq(account:str,passwd:str,background=''): url = "https://val.musnow.top/shop-url" params = { # 参数涉及到隐私,省略 } res = requests.get(url,params=params,verify=False) # 请求api return res.json() 运行,会出现这个警告 1/home/muxue/.local/lib/python3.10/site-packages/urllib3/connectionpool.py:1045: InsecureRequestWarning: Unverified HTTPS request is being made to host...
【Python】如何多文件编写KOOK机器人
如何多文件编写KOOK机器人