VScode打造Python开发环境

前言

VScode是一个相当优秀的IDE,具备开源、跨平台、模块化、插件丰富、启动时间快、颜值高、可高度定制等等优秀的特质。所以用VScode来编写Python,或者是做全栈开发,也是相当的好用的。所以,今天我们记录一下VScode中常用的插件和配置。

插件推荐

  1. Python插件。微软官方为 vscode 开发了python插件,这里安装这个插件就会提供全面的 python IDE 的功能了。
  2. Chinese(Simplified)Language。中文简体语言包。
  3. Auto Close Tag。自动添加HTML / XML关闭标签。 …

Python的赋值、浅拷贝和深拷贝解析

  1. 赋值:其实就是对象的引用(别名)。
  2. 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
  3. 深拷贝(deepcopy):copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

一、赋值

b = a: 赋值引用,a 和 …

八大排序算法的Python实现

一、冒泡排序

冒泡排序重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

步骤:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

代码实现:

# -*- coding:utf-8 -*-

def bubble_sort(nums): …

Linux使用shell脚本定时备份文件(夹)

备份的原理

使用Linux的Cron程序定时执行该脚本从而达到备份和删除备份历史的目的。

主要参数

脚本主要需要设置参数有三个:

  • ORIGIN_FOLDER:要备份的目录,必须以\结尾
  • DES_FOLDER:备份文件存储路径(可以是网络路径,前提是必须要有权限管理该路径下的文件夹)
  • DAYS_AGO:该参数表示要删除多少天之前的备份(比如今天是2012年12月31日,那么20121221的文件不会被删除,20121220或比之小的文件夹将会被删除)

脚本

#! /bin/sh
#---------------------------------------------------------------------
#   shell自动备份文件夹同时检查一定日期前的文件夹并删除
#   部署好本脚本后应当在linux中设置cron自动执行: …

缓存穿透,缓存击穿,缓存雪崩释义以及解决方案

一、缓存穿透

1.1、什么是缓存穿透

正常情况下,我们去查询数据都是存在。那么请求去查询一条压根儿数据库中根本就不存在的数据,也就是缓存和数据库都查询不到这条数据,但是请求每次都会打到数据库上面去。这种查询不存在数据的现象我们称为缓存穿透。

1.2、穿透带来的问题

试想一下,如果有黑客会对你的系统进行攻击,拿一个不存在的id去查询数据,会产生大量的请求到数据库去查询。可能会导致你的数据库由于压力过大而宕掉。

1.3、解决办法

  1. 缓存空值。之所以会发生穿透,就是因为缓存中没有存储这些空数据的key。从而导致每次查询都到数据库去了。那么我们就可以为这些key对应的值设置为null 丢到缓存里面去。后面再出现查询这个key 的请求的时候,直接返回null 。这样,就不用在到数据库中去走一圈了,但是别忘了设置过期时间。

  2. 布隆过滤器。BloomFilter 类似于一个hbase set 用来判断某个元素(key)是否存在于某个集合中。这种方式在大数据场景应用比较多,比如 Hbase …