MySQL InnoDB 存储引擎的锁类型 InnoDB 实现了多种锁,本文若未特殊说明,都是在 MySQL 8.0.16,REPEATABLE READ 隔离级别下验证的。只总结了 InnoDB 存储引擎层面实现的锁,其他诸如 MDL 不属于本篇内容范围。 共享与排他锁(Shared and Exclusive Locks) 这是 InnoDB 实现的标准行级锁,包括 shared(S) 锁和 exclusive(X) 锁。 S
MySQL 使用参数化查询 参数化查询(prepared statement / parameterized statement)的意义主要有两点,一是可以有效防止 SQL 注入攻击,二是可以减少每次执行 SQL 语句的所需要的解析语句开销。 关于第一点的理解,很多人认为是语句在传给数据库服务器之前,客户端将语句里的参数转义并发送,虽然这样可以有效防止 SQL 注入,但这并不是真正的参数化查询。 参数化查询是指数据库服务器在解析语句时,只解析非参数部分,参数部分采用模板参数占位的形式,在每次执行语句时,将某些常量值替换至相应的模板参数位置。 这样一来,数据库服务器不会将参数的内容视为 SQL 的一部分来处理,而是在数据库完成 SQL 编译后,才将参数套用并运行。解析器编译执行相同的语句时,
Flask Flask 上下文机制解析 在用 Flask 写视图代码的时候经常会用到诸如 request、session 和 g 这类看上去是全局变量的东西,这些变量往往带有处理请求需要用到的比如请求对象、会话参数等信息,允许我们访问一些请求信息或者全局的信息。而实现这些的就是 Flask 特殊的 Context(上下文)机制。 本地上下文 from flask import Flask, request app = Flask(__name__) @app.route('/', methods=['GET']) def
Kernel 迫于 Meltdown, 升级内核 转自 Solidot:Google Project Zero 和奥地利格拉茨技术大学等机构的研究人员披露了三个处理器高危漏洞,分别编号为 CVE-2017-5753(Variant 1)、CVE-2017-5715(Variant 2)和 CVE-2017-5754(Variant 3),前两个漏洞被称为 Spectre,后一个漏洞被称为 Meltdown,Spectre Variant 1 影响 AMD,英特尔和 ARM 处理器,而所有三个漏洞都影响英特尔处理器,研究人员已经开发出了概念验证的漏洞利用。AMD 和
Linux 在 Linux 上使用 Tshock 搭建 Terraria 服务器 WARNING: 当心沉迷挖矿不可自拔!为什么要使用独立服务器?当然是为了能够多人同时在线游戏,并且让服务器永远在线,减轻本地计算机负担,也不用担心管理员下线后其他人就玩不了了。运行前准备官方给出的内存要求是 2GB,并且是单独给予 Tshock 而不是服务器总值,但实测 swap 也可以,不过至少也需要 1GB,否则创建大型世界时内存有泄漏的 Bug。另外为了 Tshock 进程在后台运行,可以使用 tmux 或 screen 等工具,这里不再赘述。接着在这里下载最新版本的 Tshock 压缩包至服务器并解压。由于 Tshock
Redis 使用 Redis 缓存 OAuth 令牌 之前设计一个采用 OAuth 鉴权的 RESTFul API Web Service,用户的 Access Token 和 Refresh Token 均缓存在 Redis 中,因为 API 资源受访问较频繁,且 OAuth 令牌不需要串行化保存,即使宕机重启用户也只需重新认证获取新令牌。令牌保存发放令牌时,所需字段除了 token 本身和 token_type 外,还需要包括 OAuth 的
Nginx Nginx 网站升级到 HTTPS 和 HTTP/2 以 Ubuntu 14.04 为例,由于系统版本的原因及后续对 ALPN 的支持需要等原因,需要先升级 Nginx、OpenSSL。Nginx 在1.9.5后支持 HTTP/2,OpenSSL 在1.0.2后支持 ALPN,可以使用 nginx -v 和 openssl version 来查看当前版本。 升级 Nginx 和 OpenSSL
Python requests 使用 SOCKS 代理 之前看到 Github 上有人提 issue 问是否支持 SOCKS 代理,官方终于在 Version 2.10.0 之后将 SOCKS 作为一个可选特性加入了支持,需要安装第三方库。 $ pip install 'requests[socks]' Usage: import requests proxies = { 'http':'socks5://user:pass@host:port', 'https':'socks5:
Domain 失而复得的域名 把之前在 DO-SFA 的 VPS 换到 ConoHa-Tokyo 了,顺带捎两手准备把过期一个月的域名给续了,也没仔细看 Namecheap 的写的是什么就直接点交钱续一年了,没想到点的是一个 Transfer in 转入域名,要求我提供上家注册商的 Auth code,懵了。难道过期了一个月就被别人注册了吗?但是域名显示注册商还是 NC,遂找人工客服,被告知被人注册,还问我是否有其他帐号…… 本想算了换个域名吧,但是一查 Whois 信息显示是我的信息,原来的 Whois guard 也没有了,