制件自己的编程语言之基础,字节码解释器,也是一个mini虚拟机。
]]>记录分别Visuall Studio 2015和GCC创建和使用动态库与静态库的方法。
]]>如何使用py2exe将python脚本转换为Windows下的exe文件。
]]>在应用程序中嵌入Python或其它什么,关键就是如何让应用程序与Python脚本交互,即在 应用程序中解释执行Python代码。回想一下你是如何调用Python标准模块的?应用程序采 取相同的方式与Python交互:
new expression 实际上完成了两项工作:
可以通过订制operator new和placement new来控制内存分配。
]]>shadowsocks服务端源分析。
]]>this指针与const修饰符的关系。
]]>Python中的函数式编程。
]]>学习Bash,记录一些新学到的知识和tips。
]]>一段Python代码的进化:
]]>通过将Firefox的配置文件和临时文件目录存放至内存中,可以加快Firefox的启动迅速,减 少上网时对硬盘的读写,可能在一定程度上加速网页渲染。
]]>记录使用github的一些经历。
]]>本文通过学习马欢[1]的Gnuplot系列教程后,练习处理我的计算数据完成。
]]>以前不知道在哪个博客上看到的一篇文章,遂存于此。
]]>当前(2013-10-16)赤兔项目主要针对:android, iOS和Web浏览器三个平台发布客户端。本文主要介绍客户端的持续集成。
]]>Matplot是一个超强的Python绘图库。
在此记录学习Matplot一些例子,以便于日后可以较快的熟悉学习。
]]>假定有一个线程(进程)A, 多个线程(进程)B,A知道所有的B的状态,B之间相互不了 解
对于一类数据,最好由一个进程来管理,如果其它进程需要相应的数据,与数据管理进程 沟通,以获取数据,而不是直接去操作数据。
MySQL Server参数中与日志相关的选项。如:Error Log, General query log, Binary log, Relay log, Slow query log。
]]>简单的MySQL主从架构的建立和维护。
]]>详细信息请查看Nginx 原文档(English[#ref1]_, 淘宝中文版[2])
prox_cache zone_name | off;
为cache指定一个共享存储区。相同的存储区可以在不同的地方使用。如果设定为off可以关闭从上级配置中继承的cache定义。
共享存储区域”zone_name“是由指令proxy_cache_path定义的。
proxy_cache_path path [levels=levels] keys_zone=name:size
[inactive=time] [max_size=size] [loader_files=number]
[loader_sleep=time] [loader_threshold=time];
设定缓存的存储路径和其他一些参数。被缓存的数据都存储在文件中。存储在缓存区的key和文件名是通过被代理的URL的MD5值处理后得到的。参数`levels`用于定义缓存的存放级别的。例如:下面的指令:
proxy_cache_path /data/nginx/cache *levels*=1:2 keys_zone=one:10m;
被缓存的文件在缓存区中是这样存放的:
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d650*29c*
A cached response is first written to a temporary file, then a file is renamed. Starting from version 0.8.9 temporary files and the cache can be put on different file systems but be aware that in this case a file is copied across two file systems instead of the cheap rename operation. It is thus recommended that for any given location both cache and a directory holding temporary files set by the proxy_temp_path directive are put on the same file system. 缓存的响应首先写入到一个临时文件,然后进行重命名。
In addition, all active keys and information about data are stored in a shared memory zone, whose name and size are configured by the keys_zone parameter. Cached data that are not accessed during the time specified by the inactive parameter get removed from the cache regardless of their freshness. By default, inactive is set to 10 minutes.
The special process “cache manager” monitors the maximum cache size set by the max_size parameter; when this size is exceeded it removes the least recently used data.
A minute after the start the special process “cache loader” is activated that loads information about previously cached data stored on file system into a cache zone. A load is done in iterations. During one iteration no more than loader_files items are loaded (by default, 100). Besides, the duration of one iteration is limited by the loader_threshold parameter (by default, 200 milliseconds). A pause is made between iterations, configured by the loader_sleep parameter (by default, 50 milliseconds).
proxy_cache_bypass string ...;
定义在哪些情况下,响应数据不从缓存中取得。当至少有一个字符参数不为空(“”)且不等于”0”,响应就不会从缓存中提取。
proxy_cache_bypass的功能与下面的proxy_no_cache相同。
proxy_no_cache string ...;
与proxy_cache_bypass相同。
proxy_cacke_key $scheme$proxy_host$request_uri;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_valid any 1m;
proxy_cache_lock on | off
proxy_cache_lock_timeout 5s
proxy_cache_min_uses 1;
proxy_cache_use_stale error | timeout | invalid_header | updating | http_500
| http_502 | http_503 | http_504 | http_404 | off ...;
proxy_cache_methods GET | HEAD | POST ...;
学习NSA的开源工具SELinux
]]>学习shadowsocks[1]服务端源码。
]]>学习SQL的一些基本语法。[1]
一些基本术语:实体,列,行,表,结果集,主键,外键,事务,索引,视图,约 束。
SQL语言可以分为几个模块:
一定要注意,不同的数据库软件使用的SQL语法略有不同,如果某条语句提示语法错误请查找相应手册,确认语法符合要求。
标准语法定义:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)] [table_options] [select_statement]
-- 或:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(] LIKE old_tbl_name [)];
使用IF NOT EXISTS判断表是否存在:
CREATE TABLE IF NOT EXISTS tbl_name ......
SQL格式:
ALTER TABLE tbl_name ADD (col_name1, col_name2);
ALTER TABLE tbl_name DROP COLUMN col_name;
调整列的数据类型(在MariaDB 5.5.32上测试)[2]
ALTER TABLE tbl_name MODIFY [COLUMN] col_name col_definition
创建一个主键(在MariaDB 5.5.32上测试)
ALTER TABLE tbl_name ADD PRIMARY KEY (index_col_name)
删除列
ALTER TABLE tbl_name DROP COLUMN col_name;
即:a > 0 and a < 10等同于a BETWEEN 0 10。例如下列两条SQL语句等同。
SELECT name FROM employee WHERE start_time < '2007-01-01' AND start_time < '2005-01-01'
SELECT name FROM employee WHERE start_time BETWEEN '2005-01-01' '2007-01-01'
当对某个值的限制为一个有限集合时,SQL可以写为:
SELECT name FROM employee WHERE district = 'CHN' OR district = 'CHK' OR district = 'CD' OR district = 'SAV'
使用IN可以写的更为简洁,如:
SELECT name FROM employee WHERE district IN ('CHN', 'CHK', 'CD', 'SAV')
除了自定义集合,也可以使用子查询产生的集合。如:
SELECT name FROM employee WHERE district IN (SELECT district_code IN district WHERE people_count < 1000000)
对于IN也可以使用“非”操作,即表示不在集合内。关键字为:NOT IN。
SELECT name FROM employee WHERE district NOT IN ('CHN', 'CHK', 'CD', 'SAV')
在各种匹配条件中,也可以使用内置函数。如:
SELECT name FROM employee WHERE LEFT(lname, 1) = 'T'
上面使用内置函数LEFT提取lname的首字母,然后与字母“T”进行比较。
符号 | 匹配 |
---|---|
% | 匹配任意数目的字符(包括0)。类似于正则表达式中的“.*” |
_ | 匹配一个字符。类似于正则表达式中的“.” |
[abc] | 匹配集合中的元素 |
[^abc] | 不匹配集合中的元素 |
SELECT name FROM employee WHERE lname REGEXP '^[FG]'
在Oracle中使用函数regexp_like代替REGEXP,而在MS SQL SERVER中可以直接在LIKE中使用正则表达式。
当使用NULL需要注意:
/* 假定superior_emp_id存在NULL值 */
/* 错误的做法 */
SELECT emp_id, name FROM employee WHERE superior_emp_id = NULL
/* 正确的做法 */
SELECT emp_id, name FROM employee WHERE superior_emp_id IS NULL
另外进行条件筛选时也要考虑全面,注意NULL值的存在
这一部分貌似有点像简单的数据分析和挖掘,当然是最最初级的。 它主要包括:分组和聚集两种操作。
SQL:
SELECT * FROM tbl_name WHERE conditions GROUP BY col_names;
SQL的执行顺序:(不同软件实现可能不同)
关于GROUP BY需要注意的:``SELECT``字句中只能包含常数、聚合函数、``GROUP BY``子句中的列(聚合键)
思考:
-- 执行一下下面的语句,看看结果如何?分析一下?
SELECT col_name AS COL_NAME, COUNT(*) FROM tbl_name GROUP BY COL_NAME;
HAVING子句类似于WHERE,为指定条件的语句。但是HAVING的条件主要是针对聚合结果进行判断。所以,HAVING子句的条件可以是什么?不能是什么?
SQL格式:
SELECT * FROM tbl_name WHERE conditions GROUP BY col_names HAVING conditions;
思考:
子查询是指包含在另一个SQL语句内部的查询。它总是被括号包围,且通常在包含语句前执行。可以分为两类:
SELECT COUNT(*) FROM (
SELECT 1 FROM City
GROUP BY district
) AS d;
等同于数学中关于集合的一些操作,如并集,交集,差集。 并集操作
一个简单的例子:
SELECT 1 NUM, 'abc' STR
UNION
SELECT 9 NUM, 'xyz' STR
语法与UNION一样。在MySQL中没有实现,SQL Server、Oracle和IBM DB2中有实现。
MySQL中没有实现。
想想数学中的集合操作规则。
如果使用ORDER BY指定按某一列进行排序,此列名只能是第一个查询的列名。
如:
SELECT num, name FROM employee
UNION
SELECT product_id, open_b_id FROM account
ORDER BY num
锁是数据库用于控制数据被并行使用的一种机制。当数据库的一些内容被锁定时,任何对这个数据的修改(甚至是读取)都必须等待锁被释放。主流有两种锁策略:
SQL Server使用表锁,页锁和行锁,Oracle只有行锁,MySQL取决于存储引擎的选择。在某些情况下,SQL Server会逐步升级锁,Oracle从不升级锁
Spam or ham the foo.
The function spam() does a similar thing.
work recursively and force
|
|
|
See also
tmux是screen的替代工具,功能比screen更为强大。
]]>网页因为乱码显示的一团糟就不说了。说下比较少见的情形。
]]>2014年7月30号出发,8月3号返回。
]]>