0%

0X00 使用docker部署的优势

在使用docker部署之前,一般都是直接将MySQL和Redis这类服务直接安装在机器上的。以至于好多新手才开始安装使用的时候经常会出问题,出了问题解决不了就重装系统然后再重装软件,而且如果想同时用MySQL5和MySQL8就非常麻烦了。话说回来,在生产环境服务器上其实还是很多直装的服务的,不过其实使用docker部署一套相同的环境是非常有利于自己本地开发的。

我个人看来使用docker部署的优势有这几点比较明显的:

  1. 很容易做到开发环境、测试环境和生产环境的“环境与版本”大统一;
  2. 很容易在开发环境本地同时部署多套不同版本的同一服务;(比如你负责8个项目,这8个项目要用8个不同版本的MySQL)
  3. 能很快部署一套开发环境;(事实证明在一台网络环境好的机器上,能在5分钟内部署一套数据库)
  4. 整理好配置文件后可以很容易备份整套配置;
  5. 安全问题,在物理机上直接装了MySQL,如果部署不够仔细的话有数据库被攻破后危及服务器的风险,而Docker部署的由于容器所在就不会有这种问题;
阅读全文 »

0X00 线程池和进程池

多线程和多进程在平时编程中是挺常见的操作,不过控制进程和线程的数量是一件比较麻烦的事情。尤其是线程,之前在搜索到的关于线程池的内容多数都是“造轮子”,实际上Python已经给我们造好了这个轮子。文档在这里,甚至还是中文的https://docs.python.org/zh-cn/3.7/library/concurrent.futures.html#module-concurrent.futures

我这里简单的整理了一下,做个小样例展示出来方便查阅。这里就假装大家对Python有一定的了解,而且也对操作系统中的线程和进程有一些了解了。(哦对了,还需要了解一下GIL才行)

阅读全文 »

0X00 前言

实话讲,Django的信号(signal)机制其实用到的时候并不多,但是某些特定场景下一个信号能解决非常大的问题,所以信号这个东西还是值得了解一下的。那么为什么这里只说一些初级内容呢,主要是因为通过调查发现信号的高级知识用(我)的(也)很(不)少(会)。

目前我工作中用到的信号机制也比较少,所以可能有些事情说不到点上还请见谅。那我们开始吧~

0X01 什么是信号

“信号机制”光从名字上来就大概能懂了。应该就是:某人发出某信号,某人接受到之后做一些事情。所以看起来非常类似我们熟悉的“订阅-发布”模式,实际上也也确实很类似。整个信号机制分成这么几个部分:发布者、信号、接收者和一个函数。

我们传统战场上的一个行为来类比会比较好解释

  1. 发送者:类似于战场上打信号弹的人
  2. 信号:信号弹(信号弹会分成几种比如红色、蓝色、绿色的)
  3. 接受者:各个不同阵地都有人观察着战场的信号弹
  4. 一个函数:接受者看到信号弹后会对应作出战术动作

比如我们有三个人:小明、小强和李铁蛋,每人又有三种信号弹:红色、蓝色和绿色,又有三个不同阵地:路口、广场和理发店。其中每个人的信号弹不同,小明的红色信号弹打出去是一个”明“字,小强的是”强“,李铁蛋的是个”蛋“。

那么这个时候场上的小明发射了蓝色的信号弹(发送者发送了特定信号),三个阵地的人都看到了,但是之前首长说只有广场的阵地要响应小明的蓝色信号弹(提前固定好接受者要接收哪部分信号),广场的阵地接受到信号之后按照之前的计划前去攻打碉堡(接受者收到指定信号后执行一个函数)。

大概的流程是这个样子的,中间可能有些不准确不过大体是对的,下面我们来看一下Django自身内置的一些信号。

阅读全文 »

0X00 IO总是比运算慢

众所周知计算机的IO都要比计算慢很多很多,即时是目前民用的高级SSD:三星970PRO,它的读写速度都要比内存慢上几个数量级,更不要说CPU了。所以软件的IO通常都是瓶颈,很多时候都是CPU等内存,内存等磁盘,磁盘等网络。

那么如何才能提升自己web服务的响应速度呢?通常来说简单的操作有如下两种:换硬盘或者改SQL。

0X01 换硬盘

“这难道不是废话吗?”对呀,这就是废话。当瓶颈出现在数据库的查询上了,那么把正在用的机械硬盘换成固态硬盘当然会提升效率,稍微想想就呢能明白的事情。事实上也是这样的,之前我把同样量级的数据从我们的测试环境搞到我本地,测试环境是企业级HDD,而我本地是三星970EVOPlus的SSD,会发现查询同一个内容就快了好多好多。

那其实这个换硬盘并不是好办法,毕竟不能指望全都用上SSD。而且即使用上SSD了,在查询更复杂或者数据量更多的情况下还是会出现瓶颈。那首先想到的方式就是优化SQL了。

阅读全文 »

0X00 前言

这篇博客的目标读者:正在使用Linux桌面,打算长期继续使用下去的同学(这也就意味着熟悉Linux下的基础操作,理解Linux下的常见概念)。

这里有一个我之前写的“在Linux桌面下存活”可以参考一下。

0X01 颜值就是战斗力

Linux也不都是黑色背景白色字的命令行。

首先要换的就是一套主题和图标,不论是KDE、Gnome还是Xfce都可以在对应的网站找到大量的主题,简单换过图标和主题之后再配合一张好看的壁纸,整个观感立马就好了不少。

KDE: https://store.kde.org/
Gnome: https://www.gnome-look.org/
Xfce: https://www.xfce-look.org/

然后要换的就是字体了,等宽字体我推荐这几个HackSource Code ProCascadia Code都很好看,适合在终端、IDE和编辑器里使用。

最后就是zsh主题,如果使用的是zsh的话推荐使用powerlevel10k这个主题,是由powerlevel9k发展而来的,但是速度比powerlevel9k快好多。

0X02 善用alias和bash函数

相信大家在初学Linux的时候都学过alias指令,没学过的话我简单介绍一句:“alias是给命令取别名的工具,例如执行alias new_ls="ls -l"过后再使用new_ls命令就和使用ls -l一样了”。

首先我们知道将alias命令直接写在shell里,在关闭重开shell之后就失效了(起码现在知道了)。所以我们要把alias写在.bashrc或者.zshrc中(依你使用的shell而定)。现在我的.zshrc中就有很多已经写好了的,下面给大家分项几个对大家都有用的

阅读全文 »