Nginx WebDev 服务器
2016-04-10
Nginx 商用版 1.5.7 (2013 年) 开始支持 sticky 指令。
文档: https://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky
Syntax: sticky cookie name [expires=time] [domain=domain] [httponly] [samesite=strict|lax|none] [secure] [path=path];
sticky route $variable ...;
sticky learn create=$variable lookup=$variable zone=name:size [timeout=time] [header] [sync];
Default: —
Context: upstream
开源版有 nginx-sticky-module。
C 语言写的,BSD 协议。
代码看起来并不复杂,如果需要用到的时候,可以进行一个粗略的 Review。
编译
# 下载 nginx 源码 (2016-04-26)
wget http://nginx.org/download/nginx-1.10.0.tar.gz http://nginx.org/download/nginx-1.10.0.tar.gz.asc
gpg --verify nginx-1.10.0.tar.gz.asc
# 下载 nginx-sticky-module (2015-08-06)
wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/1.2.6.zip
unzip 1.2.6.zip
cd nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d/
unzip nginx-1.10.0.zip
cd nginx-1.10.0/
# 其他参数按需添加
./configure --add-module=../nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d/
make && make install
# Configuration summary
# + using system PCRE library
# + OpenSSL library is not used
# + md5: using system crypto library
# + sha1: using system crypto library
# + using system zlib library
# nginx path prefix: "/usr/local/nginx"
# nginx binary file: "/usr/local/nginx/sbin/nginx"
# nginx modules path: "/usr/local/nginx/modules"
# nginx configuration prefix: "/usr/local/nginx/conf"
# nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
# nginx pid file: "/usr/local/nginx/logs/nginx.pid"
# nginx error log file: "/usr/local/nginx/logs/error.log"
# nginx http access log file: "/usr/local/nginx/logs/access.log"
# nginx http client request body temporary files: "client_body_temp"
# nginx http proxy temporary files: "proxy_temp"
# nginx http fastcgi temporary files: "fastcgi_temp"
# nginx http uwsgi temporary files: "uwsgi_temp"
# nginx http scgi temporary files: "scgi_temp"
用法
upstream {
sticky;
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}
sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h]
[hash=index|md5|sha1] [no_fallback] [secure] [httponly];
科学
2016-03-31
ABO 血型系统是根据血小板上的两种抗原——A 抗原和 B 抗原——来区分的:
- A 型血 :仅携带有 A 抗原
- B 型血 :仅携带有 B 抗原
- AB 型血 :同时携带 A 抗原和 B 抗原
- O 型血 :两种抗原都没有
A 型血的人会消灭 B 抗原,所以不能输 B 型血和 AB 型血,只能输 A 型血和 O 型血;
同理,B 型血的人会消灭 A 抗原,所以不能输 A 型血和 AB 型血,只能输 B 型血和 O 型血;
AB 型血的人自己就两种抗原都有,当然都不消灭,所有血型的血都可以;
相反,O 型血的人两种抗原都没有,哪种都不可接受,所以只能使用 O 型血。
遗传规律表
No |
父/母 |
父/母 |
子女 |
子女 |
子女 |
子女 |
1 |
O |
O |
O |
- |
- |
- |
2 |
O |
A |
O |
A |
- |
- |
3 |
O |
B |
O |
- |
B |
- |
4 |
O |
AB |
- |
A |
B |
- |
5 |
A |
A |
O |
A |
- |
- |
6 |
A |
B |
O |
A |
B |
AB |
7 |
A |
AB |
- |
A |
B |
AB |
8 |
B |
B |
O |
- |
B |
- |
9 |
B |
AB |
- |
A |
B |
AB |
10 |
AB |
AB |
- |
A |
B |
AB |
-
一共 10 种组合:
-
生 O 型血子女的组合有 6 种
- 生 A 型血子女的组合有 7 种
- 生 B 型血子女的组合有 7 种
-
生 AB 型血子女的组合有 4 种
-
AB 型血父母不能生 O 型血子女
- O 型血父母不能生 AB 型血子女
美文佳句
2016-03-17
牛耕田回来,躺在栏里,疲惫不堪地喘着粗气,狗跑过来看它。
“唉,老朋友,我实在太累了。”牛诉着苦,“明儿个我真想歇一天。”
狗告别后,在墙角遇到了猫。狗说:“伙计,我刚才去看了牛,这位大哥实在太累了,它说它想歇一天。也难怪,主人给它的活儿太多太重了。”
猫转身对羊说:“牛抱怨主人给它的活儿太多太重,它想歇一天,明天不干活儿了。”
个人
2016-03-16
每次春晚都必然问候海外华人华侨,但我从来没有思考过华人和华侨有什么区别,近日看到网络上的一些资料才弄明白。
Linux
2016-03-15
# 时间清零
touch -amt 197001010000.00 <file>
sudo apt install -y xattr
xattr -l <file>
# 删除所有附加属性
xattr -c <file>
DB SQL
2016-03-14
历史
- 70 年代初,IBM 公司开发了 SEQUEL 语言 (Structured English Query Language,结构化英语查询语言),用于管理 RDB。
- 70 年代末,IBM 和甲骨文分别开始开发基于 SQL 的 RDBMS。
PS: IBM 的产品就包括大名鼎鼎的 DB2,世界上最早的 SQL 数据库。
PS: 甲骨文当时还叫做 Relational Software, Inc
- 1980 年,由于商标问题,SEQUEL 改名 SQL。
虽然官方发音是 ess-cue-el
, 但至今为止,不少人还是将其读做 /ˈsiːkwəl/
。
- 1986 年被美国国家标准学会标准化(ANSI X3.135-1986)
- 1987 年,ISO 采纳 ANSI SQL (ISO 9075:1987),所以这个版本也被称之为 SQL87。
- 后来,SQL 陆续推出 89,92,1999, 2003 .... 多个版本。
应该是 ISO 负责制定和维护吧,也无所谓啦。
版本
SQL-86 (or SQL-87) is the ISO 9075:1987 standard of 1987
SQL-89 is the ISO/IEC 9075:1989 standard of 1989
SQL-92 is the ISO/IEC 9075:1992 standard of 1992
SQL:1999 is the ISO/IEC 9075:1999 standard of 1999
SQL:2003 is the ISO/IEC 9075:2003 standard of 2003
SQL:2006 is the ISO/IEC 9075:2006 standard of 2006
SQL:2008 is the ISO/IEC 9075:2008 standard of 2008
SQL:2011 is the ISO/IEC 9075:2011 standard of 2011
SQL:2016 is the ISO/IEC 9075:2016 standard of 2016
Year |
Name |
Alias |
Comments |
1986 |
SQL-86 |
SQL-87 |
First formalized by ANSI |
1989 |
SQL-89 |
|
Minor revision that added integrity constraints |
1992 |
SQL-92 |
SQL2 |
Major revision (ISO 9075) |
1999 |
SQL:1999 |
SQL3 |
|
2003 |
SQL:2003 |
|
|
2006 |
SQL:2006 |
|
|
2008 |
SQL:2008 |
|
|
2011 |
SQL:2011 |
|
|
2016 |
SQL:2016 |
|
|
2019 |
SQL:2019 |
|
|
SQL:1999
Added regular expression matching, recursive queries (e.g. transitive closure), triggers, support for procedural and control-of-flow statements, nonscalar types (arrays), and some object-oriented features (e.g. structured types), support for embedding SQL in Java (SQL/OLB) and vice versa (SQL/JRT)
2003
Introduced XML-related features (SQL/XML), window functions, standardized sequences, and columns with autogenerated values (including identity columns)
2006
ISO/IEC 9075-14:2006 defines ways that SQL can be used with XML. It defines ways of importing and storing XML data in an SQL database, manipulating it within the database, and publishing both XML and conventional SQL-data in XML form. In addition, it lets applications integrate queries into their SQL code with XQuery, the XML Query Language published by the World Wide Web Consortium (W3C), to concurrently access ordinary SQL-data and XML documents.
2008
Legalizes ORDER BY outside cursor definitions. Adds INSTEAD OF triggers, TRUNCATE statement,[34] FETCH clause
2011
Adds temporal data (PERIOD FOR)[35] (more information at: Temporal database#History). Enhancements for window functions and FETCH clause.
2016
Adds row pattern matching, polymorphic table functions, JSON
2019
Adds Part 15, multidimensional arrays (MDarray type and operators)
https://en.wikibooks.org/wiki/Structured_Query_Language
https://en.wikibooks.org/wiki/MySQL
https://en.wikibooks.org/wiki/PostgreSQL
https://en.wikibooks.org/wiki/SQLite
https://en.wikipedia.org/wiki/SQL_reserved_words
ISO 9075
最新的 SQL 标准一共分成 9 个部分(Part 5,6,7,8,12 可能是被废弃了):
- Part 1: Framework (SQL/Framework)
基本概念
- Part 2: Foundation (SQL/Foundation)
基础语法
- Part 3: Call-Level Interface (SQL/CLI)
应该是编程语言方面的接口
- Part 4: Persistent stored modules (SQL/PSM)
SQL 面向过程编程
- Part 9: Management of External Data (SQL/MED)
- Part 10: Object language bindings (SQL/OLB)
Java SQLJ 相关内容
- Part 11: Information and definition schemas (SQL/Schemata)
- Part 13: SQL Routines and types using the Java TM programming language (SQL/JRT)
又是 Java 相关
- Part 14: XML-Related Specifications (SQL/XML)
XML 相关
PS: 前缀 ISO/IEC 9075-<n>:2016 – Information technology – Database languages – SQL –
省略。
PS: 还有一个拓展标准:ISO/IEC 13249 SQL Multimedia and Application Packages
变种
多数数据库没有严格按照标准来实现,导致不通平台上的 SQL 语句是不能跨平台的。
以下是两种主要的 SQL 方言:
- T-SQL(Transact-SQL): SQLServer
- PL/SQL: Oracle
影视
2016-03-07
看了盗版电影,我有罪...
刚看了赵本山、闫妮的《过年好》,挺好的,本来赵本山那一伙人一出现就是烂片的印象被打破了。
一直忘不掉那个画面,妈妈(闫妮)和女儿吵架,姥爷(赵本山)在一旁默默的灌酒~
还有,那个好像有点傻的、一直在唱《一人我饮酒醉》的小天。
...
不过,为什么看海报上看起来好像是被当做是贺岁片在宣传呢?
和张国立、姚晨主演的《一切都好》类似的主题,本来都可以往文艺方向走的。
可能是文艺片在国内票房没市场吧,请来大腕拍电影,肯定是要算投资回报的。在年底的票房蛋糕中圈尽可能多的钱才是投资方的目标。明显,包装成贺岁片才能实现这个目标。
一人我饮酒醉
醉把那佳人成双对
两眼是独相随
我只求他日能双归
Excel
2016-02-20
Excel 文件 > Sheet(工作表) > 行和列
基础
!Sheetname
[filename]
- 引用
=A1
相对引用
=$A$1
绝对引用
- 混合地址引用
=A$1
列相对引用+行绝对引用
=$A1
行相对引用+列绝对引用
- 按 F4 依次切换引用方式
+
、-
、*
、/
、(
、)
- 搜索
?
单个字符
*
多个字符
- 字符串
- 第一个字符单引号表示数据为文本类型,表格左上角会有一个绿色三角标识
- 鼠标右键菜单中可以选:转换成数字
=A1&B1
字符串连接
函数
NOW
AND
、OR
、NOT
、XOR
- 查找
LOOKUP
、MATCH
、INDEX
VLOOKUP
XLOOKUP
HLOOKUP
- 统计
SUM
求和
SUMIF
SUMIFS
MAX
、MIN
、AVERAGE
、MEDIAN
最大,最小,平均值,中位数
MAXA
MAXIFS
MINA
MINIFS
AVERAGEIF
AVERAGEIFS
COUNT
计数
COUNTIF
COUNTIFS
COUNTA
COUNTBLANK
PRODUCT
(a1 * b1 * a2 * b2 * ...
)
SUBPRODUCT
(a1 * b1 + a2 * b2 + ...
)
- 标准差
STDEV
STDEVA
STDEVP
STDEVPA
STDEV.P
STDEV.S
- 方差
VAR
VARA
VARP
VARPA
VAR.P
VAR.S
小技巧
- 斜线表头
单元格格式 > 边框 > 斜线
表格内输入右上角内容,然后换行,再输入左下角内容,然后用空格来调整位置,对齐。
- 冻结窗格
Alt
+ Enter
换行
Ctrl
+ ;
输入日期
Ctrl
+ Shift
+ ;
输入时间
- 填充柄
- 选中单元格,拖动填充柄:顺序填充
- 加 Ctrl:复制填充
- 双击填充柄:顺序填充到对齐旁边的列
- 加 Ctrl:复制填充到对齐旁边的列
- 选中行/列,按 Shift 拖动,可以更改位置
- 移动表格 / 行 / 列:边界上出现黑色十字箭头之后,按 Shift 拖动
- 撤销
Ctrl
+ Z
/ 重做 Ctrl
+ Y
- 选中范围,DEL 删除数据
参考资料与拓展阅读
中国地理
2016-02-10

- 华北地区
- 北京市 (京)
- 天津市 (津)
- 河北省 (冀)
- 山西省 (晋)
- 内蒙古自治区 (蒙)
- 东北地区
- 华东地区
- 上海市 (沪)
- 江苏省 (苏)
- 浙江省 (浙)
- 安徽省 (皖)
- 福建省 (闽)
- 江西省 (赣)
- 山东省 (鲁)
- 华中地区
- 华南地区
- 广东省 (粤)
- 广西自治区 (桂)
- 海南省 (琼)
- 西南地区
- 重庆市 (渝)
- 四川省 (川)
- 贵州省 (贵)
- 云南省 (云)
- 西藏自治区 (藏)
- 西北地区
- 陕西省 (陕)
- 甘肃省 (甘)
- 青海省 (青)
- 宁夏自治区 (宁)
- 新疆自治区 (新)
- 港澳台地区
- 香港特别行政区 (港)
- 澳门特别行政区 (澳)
- 台湾省 (台)
一共 34 个省级行政区:
- 23 个省
- 5 个自治区:内蒙古,新疆,西藏,宁夏,广西
- 4 个直辖市:北京,天津,上海,重庆
- 2 个特别行政区:香港,澳门
河北 河南
湖北 湖南 江西
广东 广西 福建 海南
山东 山西
辽宁 吉林 黑龙江
新疆 西藏 内蒙古
陕西 甘肃 青海 宁夏
四川 重庆
贵州 云南
江苏 浙江 安徽
香港 澳门 台湾
北京 天津 上海
MySQL
2016-02-08
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name
[index_type]
ON tbl_name (key_part,...)
[index_option]
[algorithm_option | lock_option] ...
key_part:
col_name [(length)] [ASC | DESC]
index_option: {
KEY_BLOCK_SIZE [=] value
| index_type
| WITH PARSER parser_name
| COMMENT 'string'
}
index_type:
USING {BTREE | HASH}
algorithm_option:
ALGORITHM [=] {DEFAULT | INPLACE | COPY}
lock_option:
LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE}
功能类型
- 主键索引(PrimaryKey)
- 唯一索引(UNIQUE)
- 普通索引(KEY)
- 全文索引(FULLTEXT)
- 空间索引(SPATIAL)
算法类型
- B-Tree
- Hash
- R-TREE(空间索引使用)
- 倒排索引(Inverted Index,全文索引使用)
聚簇索引 Clustered Index
聚簇索引(Clustered Index)是一种特殊的索引类型,它决定了表中数据的物理存储顺序。
在聚簇索引中,数据行按照索引键的顺序存储在磁盘上,因此具有相邻的物理位置,这样可以提高查询效率。
聚簇索引只能有一个,因为它决定了表中数据的物理存储顺序,如果有多个聚簇索引,就会导致数据在磁盘上存储的位置不确定,影响查询效率。
其他索引叫二级索引(Secondary Index),或者辅助索引。
对于 InnoDB,有限使用主键做聚簇索引,其次找一个不含 NULL 值的唯一索引,还没有,就自动生成一个隐式的自增型 ROW_ID 字段(BIGINT UNSIGNED
)做聚簇索引 GEN_CLUST_INDEX。
注意:所有索引在提升查询效率的同时,都会影响插入和删除的性能。尤其是聚簇索引需要重新组织数据行的物理存储顺序。