python

Celery 使用入门

Celery 使用入门 Celery是一个用 Python 实现的任务队列框架(Task Queue),是一种在线程或机器间分发任务的机制。 一共有五部分组成,Beat、Broker、Worker、Task、Backend * Task:任务 * Beat:定时触发 * Broker: 接收消息,将消息放入队列 * Worker:持续监听队列,接收消息后执行特定的任务 * Backend:存储结果 我们平时经常也会做类似的工作,比如发邮件、发短信等用异步队列来做,把消息打入队列,然后由一个 Worker 来执行。

  • zgljl2012
4 min read
ubuntu

ubuntu 18.04 开启二次验证

首先,安装好 google-authenticator,如下: sudo apt update && sudo apt install -y libpam-google-authenticator 安装好后,输入:google-authenticator,将输出二维码及 secret-key 的信息以及几个紧急验证码。 在移动端或相关设备上安装好 google 身份验证器 app,扫描二维码即可。同时,请备份好此二维码及相关信息,因为移动端上的 app 无法进行备份。最好是将其备份在 1password 或者 MacPass 等相关密码保存软件上。

  • zgljl2012
1 min read
shell

Shell 脚本中用 set 设置 shell 的执行方式

如下: #Description-a标示已修改的变量,以供输出至环境变量-b使被中止的后台程序立刻回报执行状态-C转向所产生的文件无法覆盖已存在的文件-d Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消-e若指令传回值不等于0,则立即退出shell-f取消使用通配符-h 自动记录函数的所在位置-HShell 可利用"!"加<指令编号>的方式来执行history中记录的指令-k指令所给的参数都会被视为此指令的环境变量-l 记录for循环的变量名称-m使用监视模式-n只读取指令,而不实际执行-p启动优先顺序模式-P启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接-t 执行完随后的指令,即退出shell-u当执行时使用到未定义过的变量,则显示错误信息-v显示shell所读取的输入值-x执行指令后,会先显示该指令及所下的参数 +<参数>  取消某个set曾启动的参数。

  • zgljl2012
1 min read
数据结构与算法

【学习笔记】【数据结构与算法篇】链表

什么是链表?是一种线性表,但不按线性存储,即内存不连续,链表在每一个节点里存到下一个节点的指针(Pointer),从而形成顺序关系。 > 数据结构的意思指的是,我们如何在计算机中存储及表示我们的数据 链表的第一个元素,称之为头节点。 如果链表的最后的一个元素指向了头节点,那么这个链表就成为了一个环。就像一条咬到自己尾巴的蛇。 我们用线性表存储我们的数据时,依然(同数组 [https://zgljl2012.com/xue-xi-bi-ji-shu-ju-jie-gou-yu-suan-fa-pian-shu-zu/])是需要 CRUD 四个操作: * 插入 * 更新 * 删除 * 查询 CRUB 操作分析 插入 比如说,我们要在

  • zgljl2012
2 min read
数据结构与算法

【学习笔记】【数据结构与算法篇】数组

什么是数组?由相同类型的元素(element)的集合所组成的数据结构,分配一块连续的内存来存储。利用元素的索引(index)可以计算出该元素对应的存储地址。 请注意: 1. 数组元素类型相同 2. 内存连续 3. 随机访问,也即直接访问 数据结构是用来存储数据的,我们的目的是将数据存储在数组中,所以需要对数组进行一些操作: 1. 插入 insert 2. 更新 update 3. 删除 delete 4. 查询 query 插入数据:插入数据时,

  • zgljl2012
1 min read
zgljl2012@gmail.com