-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.json
218 lines (218 loc) · 22.7 KB
/
index.json
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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
[
{
"uri": "http://Ref.github.io/programmer/",
"title": "博文",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/reading/",
"title": "读书",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/_header/",
"title": "header",
"tags": [],
"description": "",
"content": "早时不作业,晚时不作息\n"
},
{
"uri": "http://Ref.github.io/reading/qyuhengo/",
"title": "go 语言学习笔记",
"tags": ["go", "development", "garbage collection"],
"description": "要么旅行,要么读书,身体和思想,必须有一个在路上",
"content": " 14章-15章 go 在初始化的过程中做了些什么,包括内存的初始化,gc 初始化,已经 main 函数和各个包 init 的初始化\n16章 内存分配 go 自主管理内存分配,有个很重要的原因是为了配合垃圾回收 评价内存分配器的一个点:在性能和利用率之间做到平衡\n"
},
{
"uri": "http://Ref.github.io/mysql-sandbox-usage/",
"title": "mysqlsandbox 的安装与使用",
"tags": ["development", "mysql", "效率"],
"description": "",
"content": " 说明 官网:http://mysqlsandbox.net/\n用途:\n安装 方便快捷迅速的在一台机器上搭建 mysql 实例,包括:单个 mysql 实例,主从复制的 mysql 实例,和mysql 多实例,对于测试非常方便 具体安装使用请参照官网,在使用时碰到了两个问题,\n Can\u0026rsquo;t locate ExtUtils/MakeMaker.pm in @INC\n解决办法:yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker\n 使用异常,不论是执行 make_replication_sandbox,还是make_replication_sandbox 都提示以下信息: \u0026gt; Use of uninitialized value $ENV{\u0026ldquo;USER\u0026rdquo;} in concatenation (.) or string at /usr/local/share/perl5/MySQL/Sandbox/Scripts.pm line 68. installing and starting master\n解决方法:设置环境变量 USER\n 使用 使用 gtid 的主从复制 make_replication_sandbox 建立复制集群时,指定 --gtid 并不生效,需要在建立复制后,使用 enable_gtid 命令工具使集群使用 gtid\n另外 check_slave 的输出是如下:\n, 并不会显示出 gtid 的信息,因此查看 slave 的复制情况仍然需要需要连入 mysql 查看况\n"
},
{
"uri": "http://Ref.github.io/reading/practices-of-agile-devepler/",
"title": "高效程序员的45个习惯",
"tags": [],
"description": "要么旅行,要么读书,身体和思想,必须有一个在路上",
"content": "思维导图: 相关文件 高效程序员的45个习惯.itmz (127 ko) "
},
{
"uri": "http://Ref.github.io/programmer/put_up_dev_env/",
"title": "利用 git hook 搭建自动编译部署测试环境",
"tags": ["golang", "development", "environment", "engineering"],
"description": "",
"content": " 说明: 利用 docker,git 搭建自动编译部署测试环境,每次 commit 后,能在测试服务器上自动编译并部署部署\n步骤: 在 ci_agent上搭建测试环境\n 在 ci_server 上创建代码远端仓库 test_repo\n 在远端仓库中添加 post-recieve hook\n 在开发机上本地仓库上新添加一个远程仓库指向的远端仓库\n 注意:\nci_agent和 ci_server都是docker container\n步骤说明 配置ci_agent测试环境:\n 新建并配置一个 container,部署好程序能正常运行的环境,然后将该 container 保存为image, 创建相关的 Dockfile 创建 Dockfile 并不是一个必须的步骤,但是创建测试环境的 Dockfile,并保存,能让开发人员在换了测试服务器(非ci_agent)后能快速的搭建测试环境而不需要重新搭建 创建ci_server container\n 新运行一个 container 名为ci_server,需要将ci_server 的端口22 映射到宿主机 安装运行ssh 配置程序编译环境 配置repo\n 创建远端仓库:在test_repo目录下执行 git init --bare 在开发环境代码仓库中添加一个远端仓库,并将项目的代码推送到test_repo\n 在 test_src目录下执行git clone $test_repo\n 配置自动编译部署脚本,在远端仓库中添加 post-recieve hook,hook 包括3部分\n 刚刚提交的代码 pull 到test_src目录 编译 部署测试环境 注意: 在 hook 中,GIT_DIR 的值被设置为.,因此在hook中的脚步使用 git 命令前需要删除这个变量,或者将它设置为你需要的的值\n参考资料 在测试服务器上建立代码的远程仓库\u0026amp;代码仓库 添加 post_recieve hook container 中安装 ssh:\n\t$ yum install openssh-server $ echo root:sshpass | chpasswd $ sed 's@session\\s*required\\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd $ /etc/init.d/sshd start 将ci_server的ssh端口(22)映射的宿主机时,一般无法映射到相同的22端口上,因此开发机的本地仓库添加ci_server远端仓库时,需要指定端口号,方法如下: ssh://[email protected]:22/asdf/asdf.git\n "
},
{
"uri": "http://Ref.github.io/programmer/mysql_variables/",
"title": "MySQL调整参数:open_files_limit & max_connections & table_open_cache",
"tags": ["development", "mysql"],
"description": "",
"content": " 起因 非root用户运行MySQL,当MySQL配置比较高时,MySQL运行中生效的参数值与配置的值不一样,所以具体分析一下MySQL是怎么调整这些参数值的。 所以这篇文章的目的是为了说明在系统资源不够的情况下,MySQL 是怎么调整者三个参数的\n说明 此文涉及到3个参数open_files_limit \u0026amp; max_connections \u0026amp; table_open_cache,这3个参数与系统相关的资源是最多能同时打开的文件(ulimit -n 查看)实际即文件描述符(fd)。\n系统参数与文件描述符的关系 - max_connection \u0026amp; fd : 每一个MySQL connection都需要一个文件描述符 - table_open_cache \u0026amp; fd 打开一张表至少需要一个文件描述符,如打开MyISAM需要两个fd\nMySQL调整参数的方式 根据配置(配置的3个参数值或默认值)计算request_open_files(需要的文件描述符) 获取有效的系统的限制值effective_open_files 根据effective_open_files调整request_open_files 根据调整后的request_open_files,计算实际生效的参数值(show variables 查看到的3个参数值) 计算request_open_files request_open_files有三个计算公式\n // 最大连接数+同时打开的表的最大数量+其他(各种日志等等) limit_1= max_connections + table_cache_size * 2 + 10; //假设平均每个连接打开的表的数量(2-4) //源码中是这么写的: //We are trying to allocate no less than //\tmax_connections*5 file handles limit_2= max_connections * 5; //mysql 默认的最低值是5000 limit_3= open_files_limit ? open_files_limit : 5000; 所以open_files_limit期待的最低 request_open_files= max(limit_1, limit_2,limit_3); 计算effective_open_files: MySQL 的思路: 在有限值的的范围内MySQL 尽量将effective_open_files的值设大\n修正request_open_files requested_open_files= min(effective_open_files, request_open_files);\n重新计算参数值 修正open_files_limit open_files_limit = effective_open_files\n修正max_connections max_connections 根据 request_open_files 来做修正。\nlimit = requested_open_files - 10 - TABLE_OPEN_CACHE_MIN * 2; 如果配置的max_connections值大于limit,则将 max_connections 的值修正为limit 其他情况下 max_connections 保留配置值\n 修正table_cache_size table_cache_size 会根据 request_open_files 来做修正\n// mysql table_cache_size 最小值,400 limit1 = TABLE_OPEN_CACHE_MIN // 根据 requested_open_files 计算 limit2 = (requested_open_files - 10 - max_connections) / 2 limit = max(limit1,limt2); 如果配置的 table_cache_size 值大于limit,则将 table_cache_size 的值修正为limit 其他情况下 table_cache_size 保留配置值 举例 以下用例全部在非 root 用户下运行\n 系统资源不够且无法调整 ``` 参数设置: //mysql max_connections = 1000 //ulimit -n 1024\n生效的值:\nopen_files_limit = 1024 max_connections = 1024 - 10 - 800 = 214 table_open_cache = ( 1024 - 10 - 214) / 2 = 400\n --- - 系统资源不够可以调整 参数设置:\n//mysql max_connections = 1000 //ulimit -S -n 1000 //ulimit -H -n 65535\n生效的值:\nopen_files_limit = 65535 max_connections = 1000 table_open_cache = ( 1024 - 10 - 214) / 2 = 400\n --- mysql 修改 open_files_limit 参数设置:\n//mysql max_connections = 1000 max_connections = 1000 //ulimit -n 65535\n生效的值:\nopen_files_limit = 65535 max_connections = 1000 table_open_cache = 2000 ```\n其它 淘宝数据库内核月报中说道的相关内容:\nMySQL · 答疑解惑 · open file limits 这篇主要讲的是,MySQL 在执行哪些操作时会执行打开文件的操作\n附注 1 . 非root用户,只能设置Hard limit之内的值,root用户可以设置hard limit的值 [2] .参考文章\n"
},
{
"uri": "http://Ref.github.io/reading/hexi-corridor/",
"title": "《河西走廊》观后感",
"tags": [],
"description": "要么旅行,要么读书,身体和思想,必须有一个在路上",
"content": " 整个纪录片是以时间线来讲述河西走廊的方方面面的,一集一个主题,每集的时间跨度大概是1-2个朝代,涵盖内容包括河西走廊的开辟,兴起,政治,军事,文化,宗教传播,以及敦煌石窟,自然资源,衰败等等,因为每集的时间跨度限定,因此在描述河西走廊的某一个维度时,就限制了只能描述规定的时间范围内的内容,对于了解河西走廊的某一个方面详细内容多少有影响,比如对于敦煌石窟,石窟建造的时间跨度超过1000年,因为纪录片的描述方式,所以只能详细的介绍了唐朝的所建石窟,其他年代的石窟便一笔带过了,不能不说有些可惜。\n第一集 使者 张骞出使西域开辟丝绸之路,即使被困匈奴多年,却也使者没有忘记自己的使命,虽然西域诸国联合抗胡的目的没有达成,但是在哪个信息封闭的年代,张骞作为一个在匈奴呆过多年的人,没有人能比他更了解匈奴了,这对于之后汉武帝挥师灭胡是至关重要的\n第二集 通道 霍去病三抗匈奴,终于将河西走廊纳入中国板块\n第三集 驿站 常惠和解忧公主最终促成了汉朝与西域国家(乌孙)联合抗匈奴的历史,屯垦戍边政策至今被视为国策,屯垦戍边是赵充国提出来的\n第四集 根脉 汉之后和北魏前河西走廊的儒家文化的发展 汉以后国内经历了非常长一顿时间的混战,三国鼎立之后五胡混乱,为了躲避战乱,大家世族一部分南下,到东晋,一部分越过黄河到了河西走廊,这段时间内政权基本上就是各种凉了,前凉,后凉,南凉,北凉,西凉。 此时中原混战,生存都无法保证的情况下,更不要说什么文化传承了,所以河西走廊从某种程度上保存了中原文化。\n第五集 造像 宗教在河西走廊的发展,尤指佛教,鸠摩罗什在被困河西走廊的十几年,不过从某种程度上来说如果不是鸠摩罗什被困十几年,无人生自由全新全新的投入译经,也许他也不会成为那么伟大的译经家\n第六集 思路 在中原混乱后,丝绸之路的贸易在河西走廊的重建,裴矩绘成《西域图记》,可惜只剩书序和三条丝绸之路的路线图了。然后对于隋炀帝的看法也有很大的改变,历史书上对于杨广的描述也就是简单的荒淫暴君,但是其实是一个非常有远见的君王,而且行动力非常强,开凿运河,开疆拓土,创建科举制度,重开丝绸之路,每一件事放在一个皇帝身上都是功劳一件,可惜放到一个皇帝身上,还是一个在位仅仅14年的皇帝身上,就必须套上劳财伤民几个字,欲速则不达,隋炀帝简直完美的诠释了这句话,如果他的步伐能稍微放慢一点,历史会是怎么样,是谁都无法预料的一件事了,就像历史对他的评论:其功也卓,其罪也彰,罪在当代,功在千秋。\n第七集 敦煌 以李工建造220窟为缩影介绍了敦煌石窟的发展\n第八集 会盟 元朝在河西走廊,通过和谈的方式,将西藏纳入中国领土,纪录片里面写得挺冠冕堂皇的,但是多达纳进西藏就杀了500名僧人的事,提都没提,反倒是说蒙古首领被佛教感化\n第九集 苍生 此时的河西走廊可以说是已经落寞了,不再有东西往来的商人,也没有僧人讲法造窟了,闭关锁国政策已将河西走廊作为东西方沟通的交通枢纽彻底切断\n第十集 宝藏 河西走廊是块风水宝地,拥有丰富的资源,油田,镍矿,凭借资源建立起来两座城市,嘉峪关市,和金昌市也是重要的战略通道,西气东送,河西走廊是重要的中转枢纽\n最后着重说一点就是,音乐非常棒!有些地方背景乐响起的时候真的让人泪目!\n"
},
{
"uri": "http://Ref.github.io/travel-to-mount-putuo/",
"title": "普陀行",
"tags": ["Broaden horizons", "travel"],
"description": "Hello world!",
"content": " 普陀山之行 前 大家如果需要上香的话可以在上岛前买好,在普陀山买香最便宜的是99,之后的差不多就是299,699了,我一直相信心诚则灵,所以在哪买香是没有什么很大关系的,然后岛上物价比较高(导游的原话是普陀山是全国物价第一高的),所以如果有什么东西能自备的,都可以备好\n开端 去普陀山也挺意外的,当时以为普陀山就在上海,所以同事相邀时很开心的答应了,反正平时也喜欢到处走走,同事说过去要4,5个小时时,还在想,哎,就上海本地,竟然还要那么久,知道去了长途车站,才后知后觉的知道,原来是在浙江,后来导游也说道,上海普陀区的命名跟普陀山是很有关系的,当年普陀寺送了一个玉佛给上海,因此又来普陀路,后来上海规划区,命名时是以路命名的,因此就有了普陀区。哦,对于路痴来说,又长见识了\n到了普陀山后,山上的道路基本上都刻着莲花,导游让我们踩着莲花前进,莲花的样式非常多,极少看到重复的,有兴趣的人可以自己看看哟,当时坐车坐晕了,也就没拍照了\n话说如果不是专程去拜佛,而只是游玩的,不太建议在人多的时候去,普陀山作为中国佛教四大名山,香客非常多,游玩参观的话会很拥挤,因此观音菩萨的3个生日,还有清明前后1,2周都是人流高峰期,记得避开这几个时间点,人太多的时候,为了交通管制,山上的公交车一来需要排队二来有可能交通管制而停开\n去禅寺参观时,感觉跟其它地方的寺院挺不一样的,因为普陀山的寺院大部分都不能进去参观,只能在门口参拜 然后普陀寺也是历来受到官方认同的,因为导游讲解到的一些点,基本上就是,这是当年XX皇帝当年\u0026hellip; 观音卧像\n不肯去观音寺,和喜欢这个名字,传说是唐朝时,日本过来僧人慕名来中国学法,求得了一尊观音像想带回日本,原本是打算在此处登船回日本,但是每次登船行船不远海里起狂风,掀海浪,连续几天如此,佛家比较讲佛缘,这个日本僧人一看这这种情况,因此就将观音像留在了普陀山,百度《不肯去观音院》词条中的观音像是现代修建的,叫做南海观音像,里面的佛像非常多,同事为了给父亲祈福,在每个佛像前都拜了三拜\n南海观音像 南海观音像建造时间并不长,当年是花费了5千万建造的,但是没有要政府和佛教协会出资,而是由普陀山自己筹资建造的,挺多明显都有捐款,像赵薇啊章子怡之类的,然后台湾佛教徒捐赠了13斤黄金,全部融入佛面。 南海观音像跟一般的观音像有一个很多不同点就是,这个观音像手上拿着的不是净瓶而是一个舵,因为本意就是保佑出海的人平安健康的。 关于为什么建造33米,当时有很多富商对于普陀寺决定只将观音像建造33米不太理解,但是是寺院没钱纷纷表示愿意捐助香油钱,但是佛教怎么可能没钱呢?早年主持圆寂时,赠送给普陀的钱就高达2亿,所以观音像之所以建造33米,是因为佛教有个33重天的说法,另外就是普陀寺与33这个数字很有缘,因此南海观音像只建造的33米,在国内的众多佛像中并不算大\n海上布达拉宫 跟布达拉宫东西相对的海上布达拉宫,布达拉宫其实就是普陀的意思 \n磐陀石 海印池[放生池] 里面的锦鲤真的超多超多的,还看到了三只白鹤(大概是),可惜没有拍到白鹤振翅高飞的场景,忽悠背景的人山人海,还是有几分仙风道骨的风范的(在佛教圣地说仙风道骨也不知道对不对) \n\n吃 关于吃,要说的就是,山上的蔬菜特别特别贵,跟吃海鲜一个价,我跟同事两个人吃的海鲜,比另外两个人吃的素材还便宜, 晚上在大排档吃的海鲜,1斤花蛤,一斤海瓜子,一斤濑尿虾110多块钱,感觉挺划得来的吧,都没还价,应该有还价空间,味道也不错,就是海瓜子掺杂了不新鲜的,花蛤和濑尿虾都挺好吃的,然后大排档的海鲜更加便宜,但是一些餐馆饭店的价格比较高,我们在大排档吃的濑尿虾是45一斤,餐馆饭店的是60还是80一斤来着\n在舟山吃的最后一餐,35元,三个菜!味道不错 \n住 来欣赏一下岛上住宿的物价,听说这一家宾馆是当年蒋介石住过的 \n尾声 在去之前,很随意的挑选了了一部电影,当时没也注意看具体是什么,知道回家路上看的时候才发现是看的是《peekay》,当时有点啼笑皆非的感觉,果然就像电影中的那句话一样,如果这世界上真有神,怎么会要求我们用这种方式了祈祷和寻求帮助呢?\n"
},
{
"uri": "http://Ref.github.io/",
"title": "关于我",
"tags": [],
"description": "关于我",
"content": " Hello World! 博文 \n mysqlsandbox 的安装与使用 说明 官网:http://mysqlsandbox.net/ 用途: 安装 方便快捷迅速的在一台机器上搭建 mysql 实例,包括:单个 mysql 实例,主从复制的 mysql 实例\n 利用 git hook 搭建自动编译部署测试环境 说明: 利用 docker,git 搭建自动编译部署测试环境,每次 commit 后,能在测试服务器上自动编译并部署部署 步骤: 在 ci_agent上搭建测试环境 在\n MySQL调整参数:open_files_limit \u0026amp; max_connections \u0026amp; table_open_cache 起因 非root用户运行MySQL,当MySQL配置比较高时,MySQL运行中生效的参数值与配置的值不一样,所以具体分析一下MySQL是怎么调\n git 项目 label 规范 列表 状态 Status/WIP(Work In progress) Status/Block 等待其他issue完成才能继续进行 Status/More detail 需要更详细的信息 Status/Verified 开发已经完成,QA已经测试并验证结果 Status/Invalid 无效的issue Status/Duplicate 重复的iss\n 通过 pid 查找docker容器 原理:通过 docker ps找到所有的 container,然后对所有的 container 逐个执行 docker top,通过对比给定的 pid 找到对应的 container\n 读书 \n go 语言学习笔记 要么旅行,要么读书,身体和思想,必须有一个在路上\n 高效程序员的45个习惯 要么旅行,要么读书,身体和思想,必须有一个在路上\n 《河西走廊》观后感 要么旅行,要么读书,身体和思想,必须有一个在路上\n 旅行 \n 普陀行 Hello world!\n "
},
{
"uri": "http://Ref.github.io/me/",
"title": "关于我",
"tags": [],
"description": "关于我",
"content": "一个在魔都工作的女程序员,看看书,写写博客,出去走走,生活大概就这样了\n"
},
{
"uri": "http://Ref.github.io/tags/bash/",
"title": "Bash",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/broaden-horizons/",
"title": "Broaden Horizons",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/categories/",
"title": "Categories",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/development/",
"title": "Development",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/docker/",
"title": "Docker",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/engineering/",
"title": "Engineering",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/environment/",
"title": "Environment",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/garbage-collection/",
"title": "Garbage Collection",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/git/",
"title": "Git",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/go/",
"title": "Go",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/golang/",
"title": "Golang",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/mysql/",
"title": "Mysql",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/",
"title": "Tags",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/tips/",
"title": "Tips",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/tags/travel/",
"title": "Travel",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/programmer/git-labels/",
"title": "git 项目 label 规范",
"tags": ["git"],
"description": "",
"content": " 列表 状态\n Status/WIP(Work In progress)\n Status/Block 等待其他issue完成才能继续进行 Status/More detail 需要更详细的信息 Status/Verified 开发已经完成,QA已经测试并验证结果 Status/Invalid 无效的issue Status/Duplicate 重复的issue Status/Wontfix 该issue不会处理 类型\n Type/Bug Type/Feature Type/Refactor Type/Performance Type/Enhancement 优先级\n Priority/High Priority/Medium Priority/Low 初始化脚本 脚本\n"
},
{
"uri": "http://Ref.github.io/tags/%E6%95%88%E7%8E%87/",
"title": "效率",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/travel/",
"title": "旅行",
"tags": [],
"description": "",
"content": ""
},
{
"uri": "http://Ref.github.io/programmer/findcontainerbypid/",
"title": "通过 pid 查找docker容器",
"tags": ["bash", "docker", "tips"],
"description": "",
"content": " 原理:通过 docker ps找到所有的 container,然后对所有的 container 逐个执行 docker top,通过对比给定的 pid 找到对应的 container\n"
}]