自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wktadmin

not a blog

  • 博客(14)
  • 收藏
  • 关注

原创 基于python实现的内网穿透工具 (proxynt)

1. 随时随地打开浏览器管理端口映射2. 公网服务器和内网客户端之间使用 WebSocket 加密传输3. 依赖少, 使用 pip一键安装4. 稳定, 自动重连, 已在生产环境中使用

2022-10-30 12:57:08 4997 13

原创 像spring一样定义django的路由

spring的类视图比django的类视图灵活.@request_mapping(value="/user")class UserView(View): @request_mapping(value="/get_info/") def get_user_info_by_token(self, request, *args, **kwargs): return H...

2019-08-18 22:46:08 191

转载 tmux快捷键速查

Tmux 快捷键 & 速查表启动新会话:tmux [new -s 会话名 -n 窗口名]恢复会话:tmux at [-t 会话名]列出所有会话:tmux ls关闭会话:tmux kill-session -t 会话名关闭所有会话:tmux ls | grep : | cut -d. -f1 | awk '{print substr($1, 0...

2018-07-11 22:36:38 464

原创 python多线程高级锁condition

多线程编程中如果使用Condition对象代替lock, 能够实现在某个事件触发后才处理数据, condition中含有的方法: - wait:线程挂起,收到notify通知后继续运行 - notify:通知其他线程, 解除其它线程的wai状态 - notifyAll(): 通知所有线程 - acquire和release: 获得锁和解除锁, 与lock类似, - enter和exi...

2018-07-11 21:48:15 2716

原创 socket非阻塞通讯

fd 非阻塞需要多线程编程服务端方式1: 使用threading库实现多线程基本方法和单进程基本写法一致, 将收发部分封装为函数以便开启其他线程: import socketimport timeimport threadingdef handle_socket(conn, addr): while True: data = conn.rec...

2018-07-06 23:08:51 451

原创 python对象转字典的两种方式

一. 方便但不完美的__dict__对象转字典用到的方法为__dict__. 比如对象对象a的属性a.name='wk', a.age=18, 那么如果直接将使用a.__dict__获得对应的字典的值为: {name: 'wk', aget:18}, 很方便, 但是也存在一些限制. 其不完美之处在于: 比如: class A(object): name = 'wukt'...

2018-07-02 11:57:16 35124 2

原创 flask: 重写HttpException以抛出json类型异常(restful的设计)

http://blog.wktadmin.com 在api的设计中, 无论异常还是正常数据均需要服务器以json的格式返回, 为了对异常的统一管理, 同时为了后续更加方便的返回和验证数据, 我们自定义异常返回类. 设计异常数据的返回格式为: { "error_code": 999, "msg": "sorry, we make a mistake", "reques...

2018-06-29 08:42:50 3061 8

原创 vim: YouCompleteMe安装过程(简易安装)

YouCompleteMe的安装过程删除原有的vim配置rm -rf ~/.vimrcrm -rf ~/.vimclone项目cd ~git clone https://github.com/wktadmin/config_files执行安装文件作者已经将安装过程写到了脚本里config_files/vim/install_ubuntu.s...

2018-06-23 16:24:48 1334

原创 flask_sqlalchemy: 重写查询方法例子(重写filter_by)

http://blog.wktadmin.com 1. 引出比如某个项目中, status是逻辑删除的标志, 每次查询都需要加上status=1,Gifts.query.filter_by(uid=current_user.id, isbn=isbn, launched=False, status=1)非常的不方便, 重写filter_by是一个不错的选择重写filter...

2018-06-22 11:15:59 2446

原创 contextmanager: 上下文管理器类和上下文管理器装饰器

一. 什么是上下文管理器二. 自定义一个上下文管理器类:三. 使用contextmanager四. 一个例子, sqlalchemy: 数据库的自动提交和回滚一. 什么是上下文管理器上下文管理器是在Python2.5之后加入的功能,可以在方便的需要的时候比较精确地分配和释放资源, with便是上下文管理器的最广泛的应用, 比如: with open(...

2018-06-20 10:12:56 5261 2

原创 werkzeug: LocalStack作为线程隔离对象栈的基本特性

  Werkzeug 通过自定义 werkzeug.local.Local 类实现线程隔离的栈结构, 封装了push, pop, 和top方法.可以将对象推入、弹出,也可以快速拿到栈顶对象. 同样具有线程隔离的作用. 并没有直接使用threading.Local .LocalStack作为栈结构的特性栈是一种先进后出的基本数据结构.from werkzeug.local imp...

2018-06-19 14:06:28 418

原创 vim: 显示树形目录插件NERDTree安装和常用指令

一. 安装:将压缩包内文件放入指定目录即可: 将plugin/NERD_tree.vim拷贝~/.vim/plugin, doc/NERD_tree.txt拷贝到~/.vim/doc.wget http://www.vim.org/scripts/download_script.php?src_id=17123 -O nerdtree.zip unzip nerdtree.zip...

2018-06-18 17:42:44 337

原创 python函数装饰器之带参数的函数和带参数的装饰器

1. 函数带多个参数# 普通的装饰器, 打印函数的运行时间def decrator(func): def wrap(*args, **kwargs): start_time = time.time() res = func(*args, **kwargs) end_time = time.time() print('...

2018-06-12 21:56:48 4295

原创 flask自定义一个过滤器例子: markdown文件读取和展示

除了一些内置的join length safe等过滤器外, flask还提供了自定义过滤器的功能. 一. 自定义一个mardown过滤器自定义一个markdown过滤器, 使过滤器可以像safe解析html标签一样解析md语法. 安装库pip install Markdown==2.3.1自定义过滤器使用@app.template_filter(‘md’)过...

2018-06-01 08:49:24 1087

空空如也

空空如也

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

TA关注的人

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