- 博客(39)
- 资源 (2)
- 收藏
- 关注
原创 python实现菜单树算法
定义菜单树类结构from functools import reduceclass MenuTree(): def __init__(self, tree, primary_key='id', parent_key='parent_id', label='children', parent_label='parent'): self.tree = tree self.primary_key = primary_key self.parent_k
2022-05-05 16:48:56 505
原创 python实现压缩文件夹
新建ziputil.pyimport osimport zipfiledef write_zip_file(output_path, output_name, *input_path): """ 压缩文件 :param output_path: 输出的路径 :param output_name: 压缩包名称 :param input_path: 压缩的文件夹路径 :return: """ dir = os.path.dirname(ou
2022-05-05 16:34:32 1121
原创 创建基于ubuntu系统并搭建python环境的docker容器
新建requirements.txtflask==2.0.2新建doc/sources.list文件 ,写入ubuntu源配置deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb http://mirrors
2022-05-05 16:18:58 1433
原创 flask-cli数据库自动生成
pip安装flask-cli最新版本flask-migrate==3.1.0flask==2.0.2flask启动文件配置db = SQLAlchemy()app = Flask('HuiContourAPI')Migrate(app, db, directory=app.config['MIGRATIONS_DIRECTORY'])# 新建src/model/system文件夹,讲模型文件写入到system中from src.model import system数据库命令生成#
2022-05-05 16:07:24 1011
原创 python自动生成入库序列号
模型定义class Sequence(db.Model): __tablename__ = 'sys_sequence' __table_args__ = ({'comment': '序列维护表'}) id = db.Column(db.Integer, autoincrement=True, primary_key=True) create_at = db.Column(db.DateTime, default=func.now(), comment='创建时间')
2022-05-05 15:57:59 908
原创 flask环境变量动态配置
新建environments.pyimport osfrom flask.cli import load_dotenvfrom src.lib.error_code import NotFoundErrorclass Environments(object): def __init__(self, app=None, var_name=None, default_env=None): self.app = app self.var_name = v
2022-05-05 15:47:37 197
原创 flask封装错误类型异常
新建error.py,封装错误异常from flask import jsonfrom werkzeug.exceptions import HTTPExceptionclass APIException(HTTPException): status = 500 # 错误状态码500服务器产生一个未知的错误 msg = "操作异常" code = -1 # 错误代码,未知错误 # 设置构造函数,改变默认值 # headers是HTTP的头信息
2022-05-05 15:39:39 554
原创 pyhton封装http接口工具
新建http_lib.pyimport urllib.requestfrom flask import current_appclass HttpLib(object): @classmethod def _http_get(cls, url, headers={}): from urllib import error req = urllib.request.Request(url=url, headers=headers) try:
2022-05-05 15:31:35 508
原创 flask集成celery
flask启动文件app.pyfrom flask_celery import celeryapp = Flask('celery') app.config.from_json('config.json')celery.init_app(app)flask_celery文件from celery import Celeryclass FlaskCelery(Celery): def __init__(self, *args, **kwargs): super(F
2022-05-05 15:00:42 398 1
原创 python实现生产者和消费者模型
import threadingimport timefrom queue import Queuefrom threading import Threadmutex = threading.Lock()queue = Queue()data = []def produce(i): for i in range(i): queue.put_nowait((time.time(), [1, 2, 3]))def consume(): while Tru
2021-09-29 09:14:25 191
原创 ubuntu 设置开机启动脚本
cd /etc/systemd/systemvim rc-local.service[Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local After=mysql.service ssh.service[Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty Rema
2021-09-03 16:44:58 282
原创 python实现数组键值排序
from functools import cmp_to_keydata = [ { 'name': '云平台', 'value': 23 }, { 'name': '数据平台', 'value': 65 }, { 'name': '教育平台', 'value': 2 }]def compare(row1, row2): """ :pa
2021-06-22 18:12:25 382
原创 python实现拖拽排序
Pythondef change_intro_case(**kwargs): cur_id=kwargs.get('cur_id') next_id=kwargs.get('next_id') if cur_id==next_id: return cur_obj=Person.objects.get(pk=cur_id) next_obj=Person.objects.get(pk=next_id) if cur_obj.order >next_obj.order: # 上移
2021-06-10 10:35:51 513
原创 java实现访问接口限制次数
controllerimport com.example.springbootdemo.annotation.RateLimiter;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controller
2021-05-19 18:20:36 2338 1
原创 python迭代器进阶
迭代器分片import itertoolsclass BatchIterator: def __init__(self, wrapped, patch=pow(2, 1)): self.wrapped = wrapped self.patch = patch def __iter__(self): return Next(self.wrapped, self.patch)class Next(BatchIterator):
2021-03-15 18:16:25 128
原创 openpyxl处理excel封装
from openpyxl import load_workbookfrom openpyxl.styles import Fontfrom openpyxl.styles.colors import BLACKclass ParseExcel(object): """解析excel文件""" def __init__(self, filename, sheet_name=''): """ excel读取和写入 :param fil
2021-03-07 09:51:38 1146
原创 docker部署nginx入门指南
文章目录前言一、系统环境二、安装docker前准备1.更新yum源2.安装所需安装包3.设置yum源三、安装docker1.安装docker1.查看docker版本2.启动docker3.查看docker运行状态4.重启docker5.拉取nginx镜像4. 启动docker镜像5.拷贝容器配置6. 移除容器7.挂载容器配置8.访问nginx服务前言Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。一、系统
2021-02-27 17:09:19 2205 1
原创 mysql中排序将非null前排并升序
1.默认排序,会将null值排在首位select * from studentorder by age2.null值后排select * from studentorder by ISNULL(age)3.null值后排,非null升序select * from studentorder by ISNULL(age), age
2021-02-25 18:24:20 2607 1
原创 js实现密码强校验规则
密码校验规则如下passwordValidator(password){ retrun new Promise((rosolve,reject)=>{ if(password===''){ return reject(new Error('密码长度在6~16位')) } // 密码包含数字和字母 const reg1=/^(?=.*[0-9])(?=.*[a-zA-Z])(.{6,16})$/ // 密码包含符号 const reg2=/[`~!@#$%^&am.
2021-02-23 18:59:06 1159
原创 python实现网段划分
在计算机网络中,常常被子网划分所困扰,如下面这个例子,譬如将130.34.12.64划分成4个子网,通过计算得知每个子网划分16个,则得出:(‘130.34.12.64’, ‘130.34.12.79’), (‘130.34.12.80’, ‘130.34.12.95’), (‘130.34.12.96’, ‘130.34.12.111’), (‘130.34.12.112’, ‘130.34.12.127’),共4个子网。接下来通过算法计算出这个结果class Solution(object):
2021-02-22 18:32:18 2397
原创 django发送邮件
配置EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'EMAIL_USE_TLS = False # 是否使用TLS安全传输协议(用于在两个通信应用程序之间提供保密性和数据完整性。)EMAIL_USE_SSL = False # 是否使用SSL加密,qq企业邮箱要求使用EMAIL_HOST = 'smtp.163.com' # 发送邮件的邮箱 的 SMTP服务器,这里用了163邮箱EMAIL_PORT = 25 #.
2021-02-20 18:31:12 169
原创 django测试用例入门
from unittest import TestCaseimport unittestclass MyTest(TestCase): """ 测试用例 """ def setUp(self) -> None: """ 测试前执行 :return: """ pass def tearDown(self) -> None: """ 测试后
2021-02-19 18:51:53 336
原创 IPy中常用方法封装
from IPy import IPclass NetIp(object): def __init__(self,ip=''): self.ip=ip def check_valid_net(self): # 判定是否为网段 if not self.ip.__contains__('/'): return False return self.check_valid_ip() def check_valid_ip(self): try: # 判定ip是否合法
2021-01-14 17:17:54 143
原创 python按批次批量更新/新增
class Patch(object): def __init__(self,patch_list,instance,patch_number=500,fields=None): self.patch_list=patch_list self.instance=instance self.patch_number=patch_number self.fields=fields self.__result=[]
2021-01-08 13:52:22 751
原创 递归树以及循环树算法
一般情况下,我们从数据库拿到的数据是这样的但往往前端所要的数据是直接返回树,以便递归展示,即将每个节点下挂上孩子节点。既然如此,各个语言均是互通的,博主仅提供python递归写法,请客官细品:class BTree(object): def __init__(self,tree,primary_key='id',parent_key='parent'): self.tree = tree self.primary_key = primary_key self.parent_key =
2020-12-16 23:40:48 2334 2
原创 el-upload手动上传文件
很多上传场景不需要自动上传,而是需要请求后端上传,并返回成功结果,才算一次上传成功。接下来开始实现如何手动上传文件。<template> <div> <el-upload ref="uploadButton" action="" :on-preview="previewFile" :on-remove="handleRemove" :before-upload="beforeUpload" :limit="limit" :on-
2020-12-16 23:03:47 12046 4
原创 vue-tinymce富文本整合,并上传图片
安装tinymce-vue,tinymcenpm install @tinymce/tinymce-vue -Snpm install tinymce -S集成tinymce并封装成组件<template> <div> <Editor v-model="content" :init="options" :disabled="false" > </div></template><script>
2020-12-16 22:23:30 323
原创 蓝鲸实现上传和下载
上传文件def upload(request): from config import BASE_DIR from blueapps.conf import settings file=request.FILES.get('file') if file: file_path = os.path.join(BASE_DIR,'USERRES/static/') if not os.path.exists(file_path): os.makedirs(file_path) file
2020-12-16 21:37:19 2084
原创 蓝鲸接口分页
分页器class BkPageManage(object): def __init__(self, func, page=1, start=0, limit=200, no_page=False, **kwargs): self.func = func self.page = page self.start = start self.limit = limit self.no_page = no_page
2020-12-12 17:21:20 281
原创 element菜单实战
文件sidebar.vue<template> <el-menu unique-opened background-color="#182132" text-color="#9ca9bb" active-text-color="#fff" :default-active="defaultActive" @select="handleMenuSelect" > <template v-for="menu in menus"> <
2020-11-26 20:16:35 343
原创 element步骤条实战
文件StepManger.vue<template> <div> <el-steps :active="stepActive" finish-status="process" process-status="wait" align-center > <el-step v-for="step in data.steps" :key="step" :title="step"/> </el-steps>
2020-11-26 19:33:48 5044 5
原创 element合并单元格实战
<el-table :data="data" :span-method="spanMethod"/>spanMethod({rowIndex,columnIndex}){ if(columnIndex===0){ if(rowIndex===0){ return { rowspan:data.length,//合并行数 colspan:1 // 合并列数 } }else{ // 除第一行外,其他行不显示 return { row.
2020-11-26 18:51:29 121
原创 python自定义实现链式sql
class StrBuffer(array): # 将字符串放入缓冲队列 def extend(self,*args,**kwargs): super().extend(*args,**kwargs) return self def to_string(self,*args,**kwargs): super().tounicode(*args,**kwargs) return selfclass GenQuerySQL(object): def __init__(self,tab
2020-11-16 16:09:20 168
原创 基于element-upload的自定义图片裁剪上传
核心代码<el-upload list-type="picture-card" action="" :auto-upload="false" :show-file-list="false" :on-change="changeUpload"><img v-if="pic.file_url" :src="pic.file_url" :width="150" :height="150"><i v-else class="el-icon-plus ava.
2020-10-28 18:56:18 916
原创 基于vue的element-table分页选中
核心思路采用前端分页,通过复制引用,保证选中状态不丢失每次多选都需要清空当前页选择项,push完将其放入集合为列表中的所有属性添加索引分页后重新分配选中核心方法data(){ return{ data:[], copyData:[], pageInfo:{pageNum:1,pageSize:5,total:0}, multipleSelectionIndex:[] }}handleSelect(select,row){ if(select.length.
2020-10-21 14:13:10 572
原创 java处理占位符
import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.util.Map;/** * 配置文件或模板中的占位符替换工具类 */public class PlaceholderUtils { private static final Logger logger = LoggerFactory.getLogger(PlaceholderUtils.class); /** * 占位前缀: "
2020-09-13 16:17:13 1941
原创 蓝鲸结合vue部署手册
部署SaaS到测试/正式环境修改应用基本配置修改配置文件中Saas平台创建应用生成的APP_ID、APP_TOKEN,配置BK_PAAS_HOST为蓝鲸实际访问路径,APP_NAME为页面标题。编写第一个应用程序,HelloWorld创建应用# 根路径执行命令python manage.py startapp demo编写第一个程序HelloWorld,在刚刚新建的a...
2020-04-14 16:54:51 2338
原创 出差年度总结
年度总结——个人总结10月28号10月29号10月30号10月31号11月1号11月2号11月3号策略模式介绍10月28号 裁剪二维码,整理突发状况处理方案10月29号 检测pad的时间、Wifi以及将现场常用软件放在程序坞,访问项目网址,然后现场调查,检测网络。  ...
2020-01-17 15:12:21 216
bk-exam-one.zip
2020-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人