自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(385)
  • 资源 (6)
  • 收藏
  • 关注

原创 006 Nginx 全局异常兜底Json数据返回

Nginx 全局异常 返回jsonlocation / { proxy_pass http://lbs; proxy_redirect default; # 存放用户的真实ip proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_

2020-12-24 22:57:01 19

原创 005 Nginx 负载均衡

负载均衡 upstream# 这个和server同级别配置upstream lbs { server 192.168.56.11:8081; server 192.168.56.11:8082;}location /api/ { proxy_pass http://lbs; proxy_redirect default;}配置权重weightupstream lbs { server 192.168.56.11:8081 weight=5;

2020-12-24 22:56:21 33

原创 004 Nginx日志挖掘accessLog

日志模版 #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"';实际记录的日志192.168.56.1 - - [23/Dec/20

2020-12-24 22:55:45 40

原创 003 Nginx静态资源服务器

配置多域名 同端口 server服务首先修改本机的host文件,为了后面的域名访问# windowsC:\Windows\System32\drivers\etc\hosts# linux/etc/hosts将域名放入到 hosts中192.168.56.11 aa.com192.168.56.11 bb.com配置conf,配置两个域名,然后修改 Index.html,访问看效果server { listen 80; server_name aa.

2020-12-24 22:55:11 27

原创 002 Nginx 基础

核心目录conf #配置文件 nginx.conf # 默认的配置文件 nginx.conf.default # 默认配置模板备份 html # 编译安装时,Nginx的默认站点目录 50x.html #错误页面 index.html # 默认首页 logs # nginx默认日志路径 error.log # 错误日志 nginx.pid # nginx进程号 access.log #nginx访问日志 sbin # 程序目录 nginx # 启动命令常见命令# 启动.

2020-12-24 22:54:32 33

原创 001 Nginx 安装

Nginxhttp://nginx.org/en/download.htmlhttp://nginx.org/download/nginx-1.18.0.tar.gz# 安装依赖yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel# 解压nginx包tar -zxvf nginx-1.18.0.tar.gz# 编译cd nginx-1.18.0./configuremakemake install

2020-12-24 22:53:48 15

原创 链表:头插法实现逆序

#!/usr/bin/env python# coding: utf-8"""实现链表的逆序给定一个带头节点的单链表,将其逆序。head->1->2->3->4->5变为head->5->4->3->2->1https://www.bilibili.com/video/BV1AD4y1d7LX?from=search&seid=9167067349614497192"""# 定义链表的节点类class List

2020-12-20 22:39:00 71

原创 Redis 知识点 scan和keys 定位大key

在Redis中,查找特定条件的Key和定位大Keykeys *注意:keys 算法是遍历算法,复杂度是 O(n)没有 offset、limit 参数,不能控制返回的数量keys *keys game*keys gam*lolscan# 先录入一些keyimport redisclient = redis.StrictRedis()for i in range(10000): client.set("key%d" % i, i)现在 redis 中 有 1000

2020-12-14 00:23:07 58

原创 策略模式

"""策略模式1.Strategy 抽象的策略类2.XXXStratege 具体的策略类3.Context 上下文类 -> 设置/转换策略 执行策略"""from abc import ABCMeta,abstractmethod# ----------- 抽象的策略 接口 ----------- class Strategy(metaclass=ABCMeta): @abstractmethod def execute(self,data):

2020-12-13 23:28:32 32

原创 02 Django和数据库 更改表结构的命令

makemigrationspython manage.py makemigrations consumer 这个命令会扫描consumer应用中的模型在 consumer\migrations\0001_initial.py生成一个迁移文件sqlmigratepython manage.py sqlmigrate consumer 0001这个命令会输出一个sql,真正迁移时,实际执行的语句。migratepython manage.py migrate consumer真正创建数

2020-12-04 01:14:06 31

原创 01 Django 项目快速开始

1. 安装djangosource activate python-notebook # 进入python虚拟环境pip install django2. 创建项目django-admin startproject tmall3.django配置文件默认的配置文件,在django包中的 django/config/global_settings.py中项目的配置文件,在tmall/settings.py如果配置不同,项目自定义的会覆盖全局默认的配置文件想看不同,则使用pytho

2020-12-04 01:13:33 29

原创 Redis 应用02 简单限流/限制用户单位时间内的行为次数

简单限流回复帖子、点赞等操作,经常会提示你操作太快,也就是一个简单的限流问题。如一分钟用户最多回复5条,超过就会进行限制,用redis如何设计?实现思路使用zset数据结构, 每个用户的行为作为redis中的key比如 limit:tom:reply, 表示限制tom回复存储的数据为 value:sorce,value 可以使用时间戳 或者uuid唯一值sorce 使用发生行为的时间# 01# 每次操作行为,添加 value:sorce 使用zadd# 02# 删除1分钟之前

2020-12-01 00:18:57 51

原创 Redis 应用01 分布式锁

分布式锁在处理分布式应用并发的时候,常常会使用锁。为什么使用锁比如我们有个 num = 3, 应用对num操作去数据库取值取完值,在内存中,进行逻辑运算后重新赋值存回数据库当多个应用同时对num操作的时候比如 a和b 都对num进行操作取值 a1 b1赋值 b1 b3在数据库操作中,如果执行顺序是a1 a3 b1 b3 ,那num的值是正确的。如果执行顺序是 a1 b1 a3 b3 ,那么num值就会异常所以需要将 a1 b1 绑在一起执行,中间不能穿插其他操

2020-11-29 14:51:00 30 3

原创 Python避坑指南之字符串strip

strip 我们常常使用它去掉两边空白字符如str01.strip(" "), 这样使用没有什么问题但是像我,对它的理解就存在偏差之前的理解是a.strip("tom")去掉a 字符串 两边的 tom,开头结尾严格匹配。看下面的例子,可能就不符合我们的预期。a = "tot a totma"a.strip("toma")# Out: ' a '从现象来看,a.strip("toma")"toma",可以转化成一个集合,匹配开头结尾的时候,以第一个不在集合内的字符结束...

2020-11-24 23:05:53 58

原创 Python 字典列表,根据字段字段进行排序。

对字典列表进行排序from operator import itemgetter# 有如下一个列表,我们需要给其中的字典进行排序,比如根据uid排序rows = [ {'name': 'Brian', 'id': 1003}, {'name': 'David', 'id': 1002}, {'name': 'John', 'id': 1001}, {'name': 'Big', 'id': 1004}, {'name': 'Ag', 'id': 1004}]

2020-11-02 23:41:26 570

原创 Python 列表循环删除

案例列表循环删除中,第一次很容易采坑如下面案例,我们想把列表中 2全部删除alist = [1,2,3,1,2,2,3,4]for i in alist: if i == 2: alist.remove(i)print(alist)我们希望得到 [1, 3, 1, 3, 4]结果 [1, 3, 1, 2, 3, 4,有一个2漏掉了分析for循环一个list的时候,每次循环Index索引+1。如果这个时候动态的改变列表比如第一次循环 索引Index =

2020-10-15 21:14:48 68

原创 Linux /proc/$pid Linux进程文件

Linux中 /proc/$pid 目录下 存放着所有的进程信息https://www.linuxprobe.com/linux-proc-pid.html首先在/root目录下,启动一个进程# 启动一个简单的文件服务器,访问端口9999python -m http.server 9999查询这个进程的pid 号另外起一个终端shell,去查询刚才进程的pid号lsof -i:9999# 或ps -ef | grep python我的pid号是 1780# 进入进程的li.

2020-09-28 00:18:17 78

原创 Python bisect对有序序列进行插入值的操作

import bisect# 使用bisect前,需要先排序data = [4, 2, 9, 7]data.sort() # 排序print("sort", data)bisect.insort(data, 3)print("bisect.insort", data) # 插入并排序index = bisect.bisect(data, 0)print("bisect.bisect", data) # 不会插入,返回如果插入的话,插入的位置print("bisect.bisect -

2020-09-21 00:38:15 81

原创 Python 动态导入

Python 动态导入首先是项目目录结构其中 lib_a.py 和lib_b.py 代码如图# lib_a.pydef do_something(): print("this is lib_a.py") # lib_b.pydef do_something(): print("this is lib_a.py")main代码如下#!/usr/bin/env python# coding:utf8import importlibmodule_name =

2020-09-17 22:19:42 66

原创 小技巧 Python打印有格式的字典dict、json数据

小技巧 Python打印有格式的字典dict、json数据import jsonimport pprinthero_dict = { "heroId": "1", "name": "黑暗之女", "alias": "Annie", "title": "安妮", "roles": [], "isWeekFree": "0", "attack": "2", "defense": "3", "magic": "10", "di

2020-09-17 21:57:46 163

原创 Python Sched定时任务

sched 定时任务模块# coding:utf8import timeimport sched# 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。# 一般情况就使用time.time, time.sleep即可s = sched.scheduler(time.time, time.sleep)# 获取时间戳的函数 2020-09-16 19:03:01def get_time(): return time.strftime("%Y-%m-%d .

2020-09-16 22:52:57 117

原创 Python PDB 调试

PDBpython内置的调试工具,Python Debugger支持断点、单步调试、支持流程控制、支持堆栈检查。支持源码嵌入,也可以事后进行调试。源码嵌入调试就是在源代码中嵌入pdb语法,进行打断点。这种import pdbdef add(a,b): c = a + b pdb.set_trace() return cprint(add(3,4))事后进行调试# a.pydef add(a,b): c = a + b return c

2020-09-15 22:52:35 54

原创 Python Schedule定时任务

# 参考 https://zhuanlan.zhihu.com/p/23086148import scheduleimport time def job(name): print("her name is : ", name) name = "xxxxxxxxxx"schedule.every(2).seconds.do(job, name)schedule.every(10).minutes.do(job, name)schedule.every().hour.do(job,

2020-09-14 22:53:36 95

原创 Python 树的深度优先和广度优先

"""广度优先和深度优先"""# 树的节点,如果是第一个,则为root节点class Node: def __init__(self, value): self.val = value self.left = None self.right = None# 定义树class Tree: def __init__(self): self.root = None # 添加元素 def add_el

2020-09-09 11:55:57 80

原创 MySQL 使用篇 组合查询

组合查询组合查询,也叫合并查询,就是将多个sql语句的查询结果集合并为一个大的结果集。比如有如下两个sql语句mysql> SELECT m1 FROM t1 WHERE m1 < 2;+------+| m1 |+------+| 1 |+------+1 row in set (0.00 sec)mysql> SELECT m1 FROM t1 WHERE m1 > 2;+------+| m1 |+------+| 3 |+-

2020-08-25 14:24:09 66

原创 MySQL 使用篇 连接查询

连接查询 笛卡尔积现有t1 t2 两张表mysql> SELECT * FROM t1;+------+------+| m1 | n1 |+------+------+| 1 | a || 2 | b || 3 | c |+------+------+3 rows in set (0.00 sec)mysql> SELECT * FROM t2;+------+------+| m2 | n2 |+------+

2020-08-25 09:10:28 61

原创 MySQL 使用篇 子查询

多表查询的需求查询杜子腾的各科成绩首先查询 学生的ID,再根据id 去查询各科成绩mysql> SELECT number FROM student_info WHERE name = '杜子腾';SELECT * FROM student_score WHERE number = 20200803;将两句合并mysql> SELECT * FROM student_score \WHERE number = (SELECT number FROM student_info WH

2020-08-24 15:51:20 57

原创 MySQL 使用篇 分组查询

分别统计出 课程转行外卖骑手和 演员的素养 这两门课的平均分数SELECT AVG(score) FROM student_score WHERE subject = '转行外卖骑手';SELECT AVG(score) FROM student_score WHERE subject = '演员的素养';AVG 求平均数+------------+| AVG(score) |+------------+| 75.2500 |+------------+分组查询 group

2020-08-24 14:29:46 95

原创 MySQL 使用篇 库和表的操作

连接mysql -hlocalhost -uroot -p123456# 或者mysql --host=localhost --user=root --password=123456数据库操作# 查看一下都有哪些数据库:SHOW DATABASES; # 切换当前数据库USE 数据库名称;# 创建数据库CREATE DATABASE 数据库名;# 如果存在,则有警告提示,如果不存在则创建; 如果不太if not exists,已存在则报错。CREATE DATABASE IF

2020-08-24 10:30:58 39

原创 力扣(LeetCode) 每日一题: 20. 有效的括号

有效括号20. 有效的括号题目给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。解体思路判断括号的有效性可以使用「栈」这一数据结构来解决。我们对给定的 括号字符串 进行遍历,当我们遇到左括号的时候,我们就会期待遇到与其对应相同类型的右括号。栈的先入后出,可以很好的解决这个问题。首先我们创建将所有成对的括号编入到一个字典中dic = {'{': '}', '[': ']', '(': ')'}然后创建一个栈stack,专门存储我们的左括号

2020-08-14 09:58:02 94

原创 Flask 请求上下文

应用上下文和请求上下文flask 提供两种上下文:application context 和 request context 。application context 又演化出来两个变量 current_app 和 g,request context 则演化出来 request 和 session。变量名上下文说明current_app应用上下文当前应用的应用实例g应用上下文处理请求时,用作临时存储对象,每次请求都会重设这个变量request请求上下文请

2020-08-07 06:41:41 111

原创 k8s kubeadm 集群部署

k8s 集群 容器镜像准备使用kubeadm部署k8s集群,所以k8s集群的所有核心组件均以pod运行、需要准备镜像,不然初始化的时候会自动下载,时间会很长。所有用到的镜像,已经上传到百度云中链接:https://pan.baidu.com/s/1LjApqxw44q-xX–05Rs8pw提取码:6666# 查看所需要的镜像kubeadm config images listW0804 17:55:12.248884 13607 configset.go:202] WARNING:

2020-08-05 16:52:49 581

原创 k8s 环境搭建以及虚拟机准备

虚拟机准备配置静态IP地址参考 https://tenten.blog.csdn.net/article/details/103684856# 首先需要配置静态IPmaster1 10.0.10.100 192.168.56.100worker1 10.0.10.100 192.168.56.101worker2 10.0.10.100 192.168.56.102# 两个网卡配置,可能名字会不同,配置以master为例vi /etc/sysconfig/network-scrip

2020-08-04 17:10:58 409

原创 Python 获取时间戳,与本地时间不符,更改时区

Python 获取时间戳,与本地时间不符,时区不对https://www.cnblogs.com/mashuqi/p/11576705.html更改时区就可以了ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2020-08-04 10:09:32 734

原创 Python 异步操作文件 aiofiles

# 异步文件操作# pip install aiofiles# 基本用法import asyncioimport aiofilesasync def wirte_demo(): # 异步方式执行with操作,修改为 async with async with aiofiles.open("text.txt","w",encoding="utf-8") as fp: await fp.write("hello world ") print("数据

2020-07-31 16:39:03 1182

原创 解决报错 Docker无法启动

启动docker服务systemctl start docker.service错误信息Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.提示执行systemctl status docker.service and journalctl -

2020-07-29 16:39:23 173

原创 Docker 修改docker存储位置 修改容器镜像大小限制

新版本这样好像快不行了,不推荐了。不行可以直接软连接去修改存储位置。vim /usr/lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd --graph=/work/docker_data --storage-driver devicemapper --storage-opt dm.loopdatasize=1000G --storage-opt dm.loopmetadatasize=10G --storage-opt

2020-07-28 14:58:44 289

原创 ELK ElasticSearch基础概念 简单了解

安装elasticsearch 依赖java jdk,需要将jdk环境安装好。elasticsearch下载https://www.elastic.co/cn/downloads/elasticsearch如果要下载历史版本,点击页面的 past releases.# 启动bin/elasticsearch# 验证访问http://localhost:9200/入门ElasticSearch 名词index索引(数据库)type类型(表)注意:​ ES 5.x 一个索引

2020-07-28 11:17:15 58

原创 Python 异步框架FastAPI

安装pip install fastapi# 部署使用pip install uvicornHello Worldfrom typing import Optionalfrom fastapi import FastAPIapp = FastAPI()@app.get("/")async def read_root(): return {"Hello": "World"}# http://localhost:8000/items/it5?q=123456# it

2020-07-27 17:37:46 223

原创 Python 类似defer 延迟调用的功能

go语言中有 deferimport "fmt"func myfunc() { fmt.Println("B")}func main() { defer myfunc() fmt.Println("A")}python 使用 上下文管理器实现同样的效果import contextlibdef func_D(k,v): print(f"{k}:{v}")def func_C(): print('C')def func_B(): prin

2020-07-27 14:23:05 99

huoxingche.py

火星车/火星漫游车 Python版编程题

2020-08-24

shell编写 批量测试防火墙端口开通 使用telnet

# telnet ip port 批量测试多个 ip|port 每次telnet 都要手动关闭 ctrl + ] 然后 ctrl + d 很麻烦 使用 (sleep 1;) | telnet $ip $port 就能1秒自动断开了

2020-03-20

Python-RQ.md

python RQ 轻量级 消息队列 ,依赖redis 中文文档,markdown版 简介: RQ (Redis Queue)是一个简单的Python库,用于队列任务并在后台与工人(worker)一起处理它们。它由Redis提供支持,旨在降低入门门槛。它可以轻松集成到您的Web堆栈中。

2019-12-13

window版mysql +navicat

window版mysql 和 navicat for mysql,自带激活程序, 只能连接mysql数据库。

2019-01-03

Xshell+Xftp

Xshell+Xftp,绿色版,如果不能启动,请按照VC运行库。

2019-01-03

Postman网络请求工具.

windows版 postman,解压后,app中 postman.exe启动即可。

2018-12-31

空空如也

空空如也

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

TA关注的人 TA的粉丝

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