- 博客(15)
- 收藏
- 关注
原创 【无标题】
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S
2024-10-12 14:53:07
941
原创 基于python实现的内网穿透工具 (proxynt)
1. 随时随地打开浏览器管理端口映射2. 公网服务器和内网客户端之间使用 WebSocket 加密传输3. 依赖少, 使用 pip一键安装4. 稳定, 自动重连, 已在生产环境中使用
2022-10-30 12:57:08
6433
16
原创 像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
254
转载 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
531
原创 python多线程高级锁condition
多线程编程中如果使用Condition对象代替lock, 能够实现在某个事件触发后才处理数据, condition中含有的方法: - wait:线程挂起,收到notify通知后继续运行 - notify:通知其他线程, 解除其它线程的wai状态 - notifyAll(): 通知所有线程 - acquire和release: 获得锁和解除锁, 与lock类似, - enter和exi...
2018-07-11 21:48:15
2773
原创 socket非阻塞通讯
fd 非阻塞需要多线程编程服务端方式1: 使用threading库实现多线程基本方法和单进程基本写法一致, 将收发部分封装为函数以便开启其他线程: import socketimport timeimport threadingdef handle_socket(conn, addr): while True: data = conn.rec...
2018-07-06 23:08:51
515
原创 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
37133
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
3246
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
1387
原创 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
2564
原创 contextmanager: 上下文管理器类和上下文管理器装饰器
一. 什么是上下文管理器二. 自定义一个上下文管理器类:三. 使用contextmanager四. 一个例子, sqlalchemy: 数据库的自动提交和回滚一. 什么是上下文管理器上下文管理器是在Python2.5之后加入的功能,可以在方便的需要的时候比较精确地分配和释放资源, with便是上下文管理器的最广泛的应用, 比如: with open(...
2018-06-20 10:12:56
5561
原创 werkzeug: LocalStack作为线程隔离对象栈的基本特性
Werkzeug 通过自定义 werkzeug.local.Local 类实现线程隔离的栈结构, 封装了push, pop, 和top方法.可以将对象推入、弹出,也可以快速拿到栈顶对象. 同样具有线程隔离的作用. 并没有直接使用threading.Local .LocalStack作为栈结构的特性栈是一种先进后出的基本数据结构.from werkzeug.local imp...
2018-06-19 14:06:28
469
原创 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
378
原创 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
4389
原创 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
1194
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人