自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(142)
  • 收藏
  • 关注

原创 python读写excel文件

# coding: utf-8import osimport xlwtimport xlrdclass ExcelProcess(): def __init__(self, file_path, file_name): self.file_path = file_path self.file_name = file_name self.file = os.path.join(self.file_path, self.file_name).

2022-05-11 16:37:23 623

原创 python执行js代码进行aes加解密以及python代码与前端交互加解密

在前后端交互的过程中,基于安全考虑,往往需要对某些数据进行加密传输,我们以传输密码为例:如果密码明文传输的话,有被截取的风险,因此我们可以考虑采取rsa加密或者aes加密的方式,本文采用aes加密的方法进行传输。aes加解密,前后端要商定好一致的密钥一、python调用js代码加解密前端js代码如下:const CryptoJS = require('crypto-js'); //引用AES源码jsconst key = CryptoJS.enc.Utf8.parse("eeeeee

2022-02-23 10:22:41 3419 2

原创 django,flask上传文件,接收文件流

def index(request): if request.method == 'POST': file_obj = request.FILES.get('my_file') print(file_obj.name) with open(file_obj.name,'wb') as f: for line in file_obj.chunks(): # 这里.chunks()可加可不加,反正for循环也是一行一读.

2022-02-10 10:11:18 870

原创 从edgedb的源码学习如何简化大量if...elif...else

我们有一个变量s_fruit,需要根据其值来判断执行哪个逻辑,常规的写法就是if..elif...else的多重if语句,好一点就是把每个if给他提出去。s_fruit = 'qqq'if s_fruit == 'apple': print("I love apples!")elif s_fruit in ['eggplant', 'squash']: print(f"I didn't know {s_fruit} is a fruit!")else: print(f"I

2021-12-15 17:16:51 324 2

原创 python利用flask-socketio推送数据给前端(websocket协议)

flask-socketio可以实现全双工通信,本文使用的版本是:python==2.7Flask-SocketIO==4.3.2gevent-websocket==0.10.1下面直接看服务端的代码:其中前端直接访问也要访问这个name_space# coding: utf-8import jsonfrom flask import Flask, requestfrom flask_socketio import SocketIO, emitfrom monitor_

2021-11-17 15:58:50 9187 2

原创 gin框架使用jwt做认证

package mainimport ( "errors" "net/http" "strings" "time" jwt "github.com/develop1024/jwt-go" "github.com/gin-gonic/gin")// MyClaims 自定义声明结构体并内嵌jwt.StandardClaims// jwt包自带的jwt.StandardClaims只包含了官方字段// 我们这里需要额外记录一个username字段,所以要自定义结构体// 如果想要.

2021-11-08 14:27:36 346

原创 go的文件操作

参考:Go语言文件操作 | 李文周的博客package mainimport ( "bufio" "fmt" "io" "io/ioutil" "os")// bufio读取文件,bufio是在file的基础上封装了一层API,支持更多的功能。func bufioReadFile() { file, err := os.Open("./go.mod") if err != nil { fmt.Printf("read failed, error: %v\n", err

2021-11-04 15:42:37 105

原创 go的path和filepath包

package mainimport ( "fmt" "os" "path" "path/filepath")func main() { p := "/opt/assess/wsgi.py" fmt.Println(path.Base(p)) // wsgi.py fmt.Println(path.Dir(p)) // /opt/assess fmt.Println(path.Ext(p)) // .py fmt.Println(path.IsAbs(p)) // t.

2021-11-04 14:20:01 517

转载 gorm 增删改查

新建一个库practice然后建表CREATE TABLE `animals` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT 'galeone', `age` int(10) unsigned DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;-- -------

2021-11-03 18:29:36 376

原创 go time包

package mainimport ( "fmt" "time")func timeDemo() { now := time.Now() //获取当前时间 fmt.Printf("current time:%v\n", now) year := now.Year() //年 month := now.Month() //月 day := now.Day() //日 hour := now.Hour() //小时 minute := now.M.

2021-11-02 18:18:38 73

原创 go操作mysql(原生database/sql, sqlx库)GORM

参考:Go语言操作MySQL | 李文周的博客安装:go get -u github.com/go-sql-driver/mysql示例:package mainimport ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql")// go get -u github.com/go-sql-driver/mysql// 定义一个全局对象dbvar db *sql.DB// 定义一个初始化数据库的

2021-11-02 11:48:49 723

原创 go并发channel

参考:Go语言基础之并发 | 李文周的博客package mainimport "fmt"func recv(s chan int) { s <- 10 // 把10发送到a中}func main() { a := make(chan int) /* 通过make(chan int),开辟的通道是一种无缓冲通道,无缓冲的通道只有在有人接收值的时候才能发送值,所以当对这个缓冲通道写的时候, 会一直阻塞等到某个协程对这个缓冲通道读。main函数的执行在go语言中本身.

2021-10-29 18:13:32 97

原创 go 结构体相关

参考链接:Go语言基础之结构体 | 李文周的博客以下是结构体的方法、构造函数、接收类型等示例package mainimport "fmt"type Persion struct { Name string Age int8}// 构造函数func NewPersion(name string, age int8) *Persion { return &Persion{ Name: name, Age: age, }}// 函数不属于任何类型,

2021-10-27 15:52:53 78

原创 制作简单的`linux`可执行bin包,做升级文件

制作简单的linux可执行bin包,做升级文件简单是升级操作,可以通过tar -czPf 压缩包名 需要的文件……来将需要升级的文件打包,然后命令行解压升级。我的思路是,有一个升级清单文件,是json格式,里面定义自己要升级的文件及要做的操作,例如:{ "ui": "dist.zip", # 如果升级前端写dist.zip,否则为空 "middleware": [ # 列表中写入所有更新的文件,否则为空 "middleware/app/check/views.so", "middlew

2021-09-07 15:21:51 972

原创 ffmpeg录屏及截图

"""录屏"""# 先将rtsp流转为rtmp流ffmpeg -i "rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0" -acodec copy -vcodec copy -f flv "rtmp://192.168.3.208:1935/live/play"# 利用rtmpdump录屏rtmpdump -v -m 0 -r rtmp://192.168.3.208:1935/live/.

2021-08-20 18:50:50 840

原创 ubuntu20.04-server版获取电源使用情况

一、upower获取apt install upower执行如下命令:upower --dump | grep --color=never -E "state|to\ full|to\ empty|percentage"如果笔记本连接电源,则显示如下:state pending-chargepercentage: 97%若未连接电源:state: dischargingtime to empty...

2021-07-14 10:46:26 4533 2

原创 联想G490装ubuntu20后wifi无法使用

联想G490是一个很老的型号了,我装完ubuntu20.04后,发现wifi无法使用,只能使用有线。开始直接到联想官网去查看有无驱动,发现老版本没有linux驱动支持后来逛,无意发现以下驱动,安装即可解决。通过有线的方式让电脑连上网,可以插网线或用手机网络。终端执行:sudo apt update终端执行:sudo apt-get install bcmwl-kernel-source重启...

2021-06-29 18:06:21 244

原创 ubuntu20.04安装ES及rabbitmq

-i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple# 安装elasticdump(以root身份) apt install nodejs curl -L https://npmjs.org/install.sh | sh npm install elasticdump -g# 安装elasticsearch(apt太慢:wget https://repo.huaweicloud.com...

2021-04-30 17:09:58 354 1

原创 flask wtforms传递一个字典的列表

from wtforms import Form, FormField, FieldListfrom wtforms.validators import InputRequired, Optionalclass KeyOptional(Optional): def __call__(self, form, field): if not field.raw_data: field.errors[:] = [] raise Sto.

2021-04-18 20:36:15 505 1

原创 git配置及初始化仓库,与已经存在的仓库关联

# Git 全局配置git config --global user.name "username"git config --global user.email "[email protected]"# 创建一个新仓库git clone ssh://git@localhost:30001/name/aaa.gitcd aaatouch README.mdgit add README.mdgit commit -m "add README"git push -u origin master# Pu

2021-04-18 20:28:04 297

原创 flask重写异常方法进行全局异常捕获

在实际开发中,我们需要捕获各种异常,有时候有需要自己抛出异常,自行捕获并return信息给前端,这可能会造成代码冗余。所以我们可以通过重写异常类来进行异常捕获以 HTTPException 为例:class APIException(HTTPException): code = 400 message = 'Sorry, there was an unexpected error(*^v^*)' def __init__(self, msg=None, code=No..

2020-12-16 10:10:01 1150

原创 nginx配置图片裁剪

配置图片裁剪,首先需要 Image Filter module(图像过滤处理模块)即我们在编译安装nginx的时候,需要指定该模块 ./configure --prefix=/usr/lib/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access...

2020-11-18 10:41:31 668

原创 配置nginx录制直播流

首先,nginx必须编译安装RTMP的模块:nginx-rtmp-module。然后配置文件如下:# rtmp_serverrtmp { server { listen 1935; chunk_size 4096; application live { live on; recorder all { record all manual; # 不自动启动录制,使

2020-11-05 14:53:30 1124

原创 关于python开发os创建目录更改用户和用户组以及subprocess.Popen产生僵尸进程,指定普通用户调用vlc程序

一、subprocess.Popen()产生僵尸进程在程序开发中,我们经常会用到Popen()去调用一些shell命令,只有在程序运行结束的时候才会回收资源,但是我们的程序是一直在运行的,这就会产生很多的僵尸进程,浪费服务器资源。解决方法很简单,就是指定在新进程中执行,并且不要继承父进程,让其最终被托管进程回收Popen( args="while true; do rtpplay -T -f '{}' /8000; done".format(rtp), st

2020-10-13 19:06:52 774 1

原创 ubuntu18重置密码的两种方式以及ssh公钥加入服务器

一、进入救援模式1. 重启 Ubuntu18.04 服务器,长按 shift 进入菜单界面 (或者按ESC)2. 方向键选择含...高级..的项,按e进入编辑模式(按e、按e、按e)3. 编辑对应的(最高版本、最新使用)内核版本(含有recovery mode的项)将 ro recovery nomodeset 改为 quiet splash rw init=/bin/bash4. 按F10, 选中刚才更改的内核版本的选项,按回车进入系统5. passwd root; 更改 ro.

2020-09-02 18:49:15 764

原创 python APScheduler定时任务模块

APScheduler是一个 Python 定时任务框架,提供了基于日期、固定时间间隔以及 crontab 类型的任务,并且可以持久化任务、并以 daemon 方式运行应用。安装:$ pip install apschedulerAPScheduler 四个组件分别为:触发器(trigger),作业存储(job store),执行器(executor),调度器(scheduler)。触发器(trigger):包含调度逻辑,每一个作业有它自己的触发器,用于决定接下来哪一个作业会运行。

2020-08-21 17:40:31 549

原创 原生sql及sqlalchemy指定使用某个索引

有时候表查询时,里面不止一个索引,命中的索引不一定是最优的,因此我们需要指定索引。一、原生sql-- 例如查询订单select * from order where price>20 and create_time>current_date order by id desc;-- 查询的时候发现特别慢,利用describe查看我们的sql语句,发现使用不同的索引,他的速度也不同。-- 指定索引用force index()select * from order force i

2020-08-07 10:01:43 774

原创 pycharm一直indexing,无法操作

直接上解决办法(我在ubuntu下试过,centos之类的没有试过)vim /etc/sysctl.conf# 加下面一句:fs.inotify.max_user_watches=524288# 重载生效sysctl -p --system完事儿后重启一下pycharm,如果点击关不了,直接ps查进程,然后kill掉就行。...

2020-07-27 09:46:40 625 2

转载 flask-restful入门详解

Flask-RESTful是一个 Flask 扩展,它添加了快速构建 REST APIs 的支持。它当然也是一个能够跟你现有的ORM/库协同工作的轻量级的扩展。Flask-RESTful 鼓励以最小设置的最佳实践。如果你熟悉 Flask 的话,Flask-RESTful 应该很容易上手。用户指南这部分文档将向你展示如何在 Flask 中使用 Flask-RESTful。安装 快速入门 一个最小的 API 资源丰富的路由(Resourceful Routing) 端点(Endpoin.

2020-07-07 11:50:56 528

原创 ELK搭建及ES数据定时清理以及nginx代理访问

logstash 采集和结构化日志,输入elasticsearch创建索引,kibana查询elasticsearch这个搜索引擎 来完成数据的分析展示。(三者版本要一致)官网:elastic.co一、Elasticsearch安装:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.0-x86_64.rpmyum localinstall -y elasticsearch-7.5.0-

2020-05-25 22:11:30 598

原创 ubuntu18.04安装redis,安装nginx,以及python虚拟环境

一、安装redis安装redis服务端apt-get install redis-server检查Redis服务器系统进程ps -agx|grep redis通过启动命令检查Redis服务器状态netstat -nlt|grep 6379通过命令行客户端访问Redis redis-cli二、安装nginxapt-get updateapt-get install nginxsystemctl reload nginxsystemctl restart

2020-05-18 22:14:44 285

原创 flask日志记录及将日志文件给前端下载

我们在使用flask时,需要记录日志,这里记录最简单的一种方式。# app.py文件import loggingfrom flask import Flask, make_response, send_from_directory, jsonifyapp = Flask(__name__)app.debug = True# 输出句柄handler = logging.File...

2020-03-31 18:40:51 526 1

原创 python通过ssl加密连接mysql

目录1、django程序的配置2、pymysql连接数据库3、DBUtils数据库连接池连接配置我们在连接某些数据库时,需要提供ssl证书,如果是IT的数据库,那么可能会提供下载。如果是自己想做,可参考如下步骤:https://dev.mysql.com/doc/refman/5.7/en/creating-ssl-rsa-files-using-mysql.html...

2020-03-17 21:23:50 3302

原创 Dockerfile构建镜像

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。一、常用命令 命令 作用 FROM image_name:tag 定义了使用哪个基础镜像启动构建流程 MAINTAINER user_name 声明镜像的创建者 ...

2020-03-08 20:24:20 117

原创 docker搭建harbor仓库以及拉取和推送镜像的设置

一、搭建harbor仓库访问 https://github.com/goharbor/harbor/releases/tag/v1.10.0,下载最新版的offline,一定要有足够的磁盘空间。mkdir /localdisk/docker-registorycd /localdisk/docker-registorywget https://github.com/goharbor...

2020-03-07 21:43:22 604

原创 centos7.6安装python3.6.8

mkdir /usr/local/python3cd /usr/local/python3# 从官方拉取python包wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz# 解压tar -xvf Python-3.6.8.tar.xzcd Python-3.6.8/# 安装gcc编译器yum -y ins...

2020-01-16 10:34:14 264

原创 powershell get-date计算指定日期及格式化

get-date -format "yyyyMMdd" # 获取当天日期并格式化为20200107的格式get-date -UFormat %V # 获取当天是本年度的第几周(这里有一个bug,就是每周一获取到的还是上周)(get-date).adddays(-1)| get-date -format "yyyyMMdd" # 获取前一天的日期并格式化(get-date).ad...

2020-01-07 16:33:53 4696

原创 ubuntu16.04导入报错"No module named _bz2"

1、安装依赖apt-get install bzip2-devel2、下载_bz2.cpython-37m-x86_64-linux-gnu.so文件链接:https://pan.baidu.com/s/1GzUY4E0G2yVUfqxHOIzn1A提取码:oiwh3、把下载的文件利用ftp工具上传到这个目录下/usr/local/python3/lib/pytho...

2019-10-31 16:28:06 2234 2

原创 ubuntu16.04导入报错"No module named _ssl"

1、安装sslapt-get install opensslapt-get install libssl-dev2、修改Moudles/Setup (该目录在python的解压目录下)cd /root/Python-3.6.9/Modules # 这是我的目录vi Setup# 末行模式敲:/_socket 搜索,然后按照下面的解注释# Socket module he...

2019-10-31 15:00:15 1704

原创 golang之基本数据类型(字符串/字符操作)、类型转换、函数练习

Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。一、整型# 整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64# 其中,uint8就是我们熟知的byte型,int16对应C语言中的short型,int64...

2019-09-04 16:39:34 588

空空如也

空空如也

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

TA关注的人

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