-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
161 lines (148 loc) · 6.46 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width">
<title>The Chinaxing's blog
</title>
<link rel="stylesheet" href="/css/styles.css">
<script type="text/javascript" src="/js/index.js"></script>
</head>
<body><a href="http://www.reactivemanifesto.org/" id="reactivemanifesto"><img style="border: 0; position: fixed; right: 0; top:0; z-index: 900" src="//d379ifj7s9wntv.cloudfront.net/reactivemanifesto/images/ribbons/we-are-reactive-blue-right.png"></a>
<header id="header">
<div id="menu">
<div id="menu-header"><a id="site-name" href="/">ChinaXing</a><a id="github-icon" style="background-image: url(/lambda.png);" title="View Github profile" href="http://github.com/ChinaXing/"></a></div>
<ul id="menu-list">
<li><a href="/Database/index.html">Database<sup>2</sup></a></li>
<li><a href="/Compute/index.html">Compute<sup>8</sup></a></li>
<li><a href="/distribute/index.html">distribute<sup>3</sup></a></li>
<li><a href="/Data/index.html">Data<sup>6</sup></a></li>
<li><a href="/Erlang/index.html">Erlang<sup>7</sup></a></li>
<li><a href="/Glory/index.html">Glory<sup>2</sup></a></li>
<li><a href="/Haskell/index.html">Haskell<sup>12</sup></a></li>
<li><a href="/Network/index.html">Network<sup>7</sup></a></li>
<li><a href="/Perl/index.html">Perl<sup>22</sup></a></li>
<li><a href="/Java/index.html">Java<sup>16</sup></a></li>
<li><a href="/Life/index.html">Life<sup>20</sup></a></li>
<li><a href="/Linux/index.html">Linux<sup>31</sup></a></li>
</ul>
<!-- vistor map-->
<script type="text/javascript" id="clustrmaps" src="//cdn.clustrmaps.com/map_v2.js?u=06Hb&d=Mo7Gcol92ZMAKeI3BglxNrATFMaDJKE57YFdy7GSyAg"></script><i id="motto">快乐地成功!</i>
</div>
</header>
<section id="content">
<article class="article intro">
<header>
<p class="date"><span>15. March 2018</span></p>
<h2><a href="/articles/Compute/2018/03/15/2018-03-15-Cpu-Cache.html">Cpu Cache</a></h2>
</header>
<section class="content">
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#sec-1">Cpu Cache</a></li>
<li><a href="#sec-2">memory order</a></li>
<li><a href="#sec-3">memory barrier</a></li>
<li><a href="#sec-4">不同体系结构的内存序</a></li>
<li><a href="#sec-5">refrent</a></li>
</ul>
</div>
</div>
<div id="outline-container-sec-1" class="outline-2">
<h2 id="sec-1">Cpu Cache</h2>
<div class="outline-text-2" id="text-1">
<p>
Cpu Cache是为了加速Cpu访问主存储 (memory)的速度,下面是一个Intel co</p></div></div>
<p class="more"><a href="/articles/Compute/2018/03/15/2018-03-15-Cpu-Cache.html">more</a></p>
</section>
</article>
<article class="article intro">
<header>
<p class="date"><span>08. February 2018</span></p>
<h2><a href="/articles/Database/2018/02/08/2018-02-08-semi-repl.html">MySQL semi-replication wait point的问题</a></h2>
</header>
<section class="content">
<p>
在MySQL半同步机制中,关于事务提交与等待Slave确认binlog复制完成有一个可选项,可以配置事务提交前/后等待slave完成复制。
</p>
<p>
<code>rpl_semi_sync_master_wait_point</code>
</p>
<ul class="org-ul">
<li>AFTER_SYNC 刷binlog日志到磁盘后,发起等待,Slave应答后,再Commit事务
</li>
<li>AFTER_COMMIT 刷binlog日志到磁盘,commit 事务,然后发起等待,Slave 应答后回应Client事务完成
</li>
</ul>
<p>
2种不同的同步点,决定了MySQL在主库故障后recover时的情况。
</p>
<p>
<code>AFTER_SYNC</code> 情形下,主库可能有未提交的事务,而Slave已提交,即主库的事务可能比备库少。
</p>
<p>
<code>AFTER_COMMIT</code> 情形下,主库事务可能会多于备库,这与异步复制时候是相同的。
</p>
<p>
MySQL默认的配置是 </p>
<p class="more"><a href="/articles/Database/2018/02/08/2018-02-08-semi-repl.html">more</a></p>
</section>
</article>
<article class="article intro">
<header>
<p class="date"><span>01. May 2016</span></p>
<h2><a href="/articles/Haskell/2016/05/02/2016-05-01-generic.html">Generic</a></h2>
</header>
<section class="content">
<p>
Generic 通用编程,目的是提高代码复用。
</p>
<p>
Haskell 中的通用编程,基于代数数据类型,将数据运算映射到代数数据类型上运算。因为多种数据类型可以对应到一种代数数据类型表达式,所以可以实现代码通用。
</p>
<p>
代数数据类型是指,数据类型的构造类似于代数运算,包含Unit,Multiply,Product等。
</p>
<p>
在引入<span class="caps">GHC</span>.Generic 包后,代数数据类型的一些标识符被导入。开发人员可以使用这些标识符表达基于ADT的Generic编程:
</p>
<ul class="org-ul">
<li>Unit 用 U 表示,类比于代数运算中的元,如加法运算的0,乘法运算的1。
</li>
<li>:*: 表示乘积,形如数据构造器: data Pair a b = (a,b) 和 data Person = Person String Int
</li>
<li>:+: 表示和,形如数据构造器:data Color = Red | Black | Yellow
</li>
</ul>
<p>
Generic编程的步骤是:
</p>
<p class="more"><a href="/articles/Haskell/2016/05/02/2016-05-01-generic.html">more</a></p>
</section>
</article>
<div id="paginator-nav"><a href="/archive.html" class="nav-archive">« Archives</a><a href="/page/2/" class="nav-next">Next page »</a>
</div>
</section>
<footer>
</footer>
</body>
<!-- google Analytics-->
<script>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-37422195-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<script>
if(window.location.href.indexOf("?expand=true") != -1){
$('#content').width('100%');
$('#header').hide();
}
</script>
</html>