PageSourceSearch

http://www.wangyapu.com/about/

html wangyapu.com collected 2026-10-03 23:20:14 UTC 26,125 bytes, 757 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5    <meta charset="utf-8">
6    <meta http-equiv="X-UA-Compatible" content="IE=edge">
7    <meta name="google-site-verification" content="xBT4GhYoi5qRD5tr338pgPM5OWHHIDR6mNg1a3euekI" />
8    <meta name="viewport" content="width=device-width, initial-scale=1">
9    <meta name="description" content="Java、Go、Docker、Nginx爱好者, 折腾各种开发工具的高效开发">
10    <meta name="keyword"  content="王亚普 博客 互联网 服务端技术">
11    <link rel="shortcut icon" href="/img/favicon.ico">
12
13    <title>About - 王亚普的博客 | Wyp Blog</title>
14
15    <link rel="canonical" href="http://wangyapu.github.io/about/">
16
17    <!-- Bootstrap Core CSS -->
18    <link rel="stylesheet" href="/css/bootstrap.min.css">
19
20    <!-- Custom CSS -->
21    <link rel="stylesheet" href="/css/hux-blog.min.css">
22
23    <!-- Pygments Github CSS -->
24    <link rel="stylesheet" href="/css/syntax.css">
25
26    <!-- Custom Fonts -->
27    <!-- <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" type="text/css"> -->
28    <!-- Hux change font-awesome CDN to qiniu -->
29    <!--<link href="https://cdn.staticfile.org/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">-->
30    <link href="/css/font-awesome.min.css" rel="stylesheet" type="text/css">
31
32
33    <!-- Hux Delete, sad but pending in China
34    <link href='http://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
35    <link href='http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/
36    css'>
37    -->
38
39
40    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
41    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
42    <!--[if lt IE 9]>
43        
43<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
43
44        
44<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
44
45    <![endif]-->
46
47    <!-- ga & ba script hoook -->
48    
48<script></script>
48
49
50    
50<script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
50
51</head>
52
53
54<!-- hack iOS CSS :active style -->
55<body ontouchstart="">
56
57    <!-- Navigation -->
58<nav class="navbar navbar-default navbar-custom navbar-fixed-top">
59    <div class="container-fluid">
60        <!-- Brand and toggle get grouped for better mobile display -->
61        <div class="navbar-header page-scroll">
62            <button type="button" class="navbar-toggle">
63                <span class="sr-only">Toggle navigation</span>
64                <span class="icon-bar"></span>
65                <span class="icon-bar"></span>
66                <span class="icon-bar"></span>
67            </button>
68            <a class="navbar-brand" href="/">Wang Yapu Blog</a>
69        </div>
70
71        <!-- Collect the nav links, forms, and other content for toggling -->
72        <div id="huxblog_navbar">
73            <div class="navbar-collapse">
74                <ul class="nav navbar-nav navbar-right">
75                    <li>
76                        <a href="/">Home</a>
77                    </li>
78                    
79                    <li>
80                        <a href="/about/">About</a>
81                    </li>
82                    
83                    <li>
84                        <a href="/tags/">Tags</a>
85                    </li>
86                    
87                </ul>
88            </div>
89        </div>
90        <!-- /.navbar-collapse -->
91    </div>
92    <!-- /.container -->
93</nav>
94<script>
95    // Drop Bootstarp low-performance Navbar
96    // Use customize navbar with high-quality material design animation
97    // in high-perf jank-free CSS3 implementation
98    var $body   = document.body;
99    var $toggle = document.querySelector('.navbar-toggle');
100    var $navbar = document.querySelector('#huxblog_navbar');
101    var $collapse = document.querySelector('.navbar-collapse');
102
103    var __HuxNav__ = {
104        close: function(){
105            $navbar.className = " ";
106            // wait until animation end.
107            setTimeout(function(){
108                // prevent frequently toggle
109                if($navbar.className.indexOf('in') < 0) {
110                    $collapse.style.height = "0px"
111                }
112            },400)
113        },
114        open: function(){
115            $collapse.style.height = "auto"
116            $navbar.className += " in";
117        }
118    }
119
120    // Bind Event
121    $toggle.addEventListener('click', function(e){
122        if ($navbar.className.indexOf('in') > 0) {
123            __HuxNav__.close()
124        }else{
125            __HuxNav__.open()
126        }
127    })
128
129    /**
130     * Since Fastclick is used to delegate 'touchstart' globally
131     * to hack 300ms delay in iOS by performing a fake 'click',
132     * Using 'e.stopPropagation' to stop 'touchstart' event from 
133     * $toggle/$collapse will break global delegation.
134     * 
135     * Instead, we use a 'e.target' filter to prevent handler
136     * added to document close HuxNav.  
137     *
138     * Also, we use 'click' instead of 'touchstart' as compromise
139     */
140    document.addEventListener('click', function(e){
141        if(e.target == $toggle) return;
142        if(e.target.className == 'icon-bar') return;
143        __HuxNav__.close();
144    })
145</script>
145
146
147
148    <!-- Page Header -->
149<header class="intro-header" style="background-image: url('/img/home-bg.jpg')">
150    <div class="container">
151        <div class="row">
152            <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1 ">
153                <div class="site-heading">
154                    <h1>About</h1>
155                    <!--<hr class="small">-->
156                    <span class="subheading">Hey, this is wangyapu.</span>
157                </div>
158            </div>
159        </div>
160    </div>
161</header>
162
163<!-- Main Content -->
164<div class="container">
165	<div class="row">
166        
167
168<!-- USE SIDEBAR -->
169    <!-- PostList Container -->
170    		<div class="
171                col-lg-8 col-lg-offset-1
172                col-md-8 col-md-offset-1
173                col-sm-12
174                col-xs-12
175                postlist-container
176            ">
177    			<!-- Language Selector -->
178<select onchange= "onLanChange(this.options[this.options.selectedIndex].value)">
179    <option value="0" selected> 中文 Chinese </option>
180    <option value="1"> 英文 English </option>
181</select>
182
183<!-- Chinese Version -->
184<div class="zh post-container">
185
186    <!--copied from markdown -->
187    <blockquote><p>会十事,不如精一事。</p></blockquote>
188
189    <p>我是<strong>王亚普</strong>,毕业于河海大学,计算机科学与技术系。现就职于美团点评基础架构部,小码农一枚,专注于中间件开发,高性能组件以及高效开发工具的狂热爱好者,爱折腾各种东西,先后参与Docker私有云、Slb软负载项目,目前专注于分布式监控系统Cat研发。Stay hungry Stay foolish!</p>
190
191
192    <h5>喜欢的博客</h5>
193
194    <ul>
195        <li><a href="http://www.importnew.com/">importnew</a></li>
196        <li><a href="http://www.infoq.com/cn/">Info</a></li>
197    </ul>
198
199
200
201
202</div>
203
204<!-- English Version -->
205<div class="en post-container">
206    <blockquote><p>Better master one than engage with ten.</p></blockquote>
207
208    <p>My name is <strong>Wang Yapu</strong>, software development engineer, Graduated from hohai university, computer science and technology</p>
209
210    <p>As a engineer, I work at platform architecture department of dianping.</p>
211
212    <h5>Favourite Blogs</h5>
213
214    <ul>
215        <li><a href="http://www.importnew.com/">importnew</a></li>
216        <li><a href="http://www.infoq.com/cn/">Info</a></li>
217    </ul>
218
219
220</div>
221
222<!-- Handle Language Change -->
223<script type="text/javascript">
224    // get nodes
225    var $zh = document.querySelector(".zh");
226    var $en = document.querySelector(".en");
227    var $select = document.querySelector("select");
228
229    // bind hashchange event
230    window.addEventListener('hashchange', _render);
231
232    // handle render
233    function _render(){
234        var _hash = window.location.hash;
235        // en
236        if(_hash == "#en"){
237            $select.selectedIndex = 1;
238            $en.style.display = "block";
239            $zh.style.display = "none";
240        // zh by default
241        }else{
242            // not trigger onChange, otherwise cause a loop call.
243            $select.selectedIndex = 0;
244            $zh.style.display = "block";
245            $en.style.display = "none";
246        }
247    }
248
249    // handle select change
250    function onLanChange(index){
251        if(index == 0){
252            window.location.hash = "#zh"
253        }else{
254            window.location.hash = "#en"
255        }
256    }
257
258    // init
259    _render();
260</script>
260
261
262
263
264
265
266
267
268
269
270<!-- 畅言 评论框 start -->
271<div class="comment">
272    <div id="SOHUCS" ></div>
273</div>
274<!-- 畅言 评论框 end -->
275
276<!-- 畅言 公共JS代码 start (一个网页只需插入一次) -->
277<script charset="utf-8" type="text/javascript" src="https://changyan.sohu.com/upload/changyan.js" ></script>
vendor: 1 bytes, line 277
277
278<script type="text/javascript">
279    window.changyan.api.config({
280        appid: 'cysUXlWx5',
281        conf: 'prod_4942ff5b5af83f77c4caaf316c8d0c96'
282    });
283</script>
283
284<!-- 畅言 公共JS代码 end -->
285
286
287    		</div>
288    <!-- Sidebar Container -->
289            <div class="
290                col-lg-3 col-lg-offset-0
291                col-md-3 col-md-offset-0
292                col-sm-12
293                col-xs-12
294                sidebar-container
295            ">
296                <!-- Featured Tags -->
297                
298                <section>
299                    <hr class="hidden-sm hidden-xs">
300                    <h5><a href="/tags/">FEATURED TAGS</a></h5>
301                    <div class="tags">
302                        
303                            
304                                <a href="/tags/#工作分享" title="工作分享" rel="3">
305                                    工作分享
306                                </a>
307                            
308                        
309                            
310                                <a href="/tags/#docker" title="docker" rel="4">
311                                    docker
312                                </a>
313                            
314                        
315                            
316                                <a href="/tags/#nginx" title="nginx" rel="6">
317                                    nginx
318                                </a>
319                            
320                        
321                            
322                                <a href="/tags/#读书笔记" title="读书笔记" rel="1">
323                                    读书笔记
324                                </a>
325                            
326                        
327                            
328                                <a href="/tags/#Linux" title="Linux" rel="1">
329                                    Linux
330                                </a>
331                            
332                        
333                            
334                                <a href="/tags/#Java" title="Java" rel="2">
335                                    Java
336                                </a>
337                            
338                        
339                            
340                                <a href="/tags/#架构" title="架构" rel="7">
341                                    架构
342                                </a>
343                            
344                        
345                            
346                                <a href="/tags/#工具" title="工具" rel="4">
347                                    工具
348                                </a>
349                            
350                        
351                            
352                                <a href="/tags/#云原生" title="云原生" rel="4">
353                                    云原生
354                                </a>
355                            
356                        
357                            
358                                <a href="/tags/#基本功" title="基本功" rel="1">
359                                    基本功
360                                </a>
361                            
362                        
363                            
364                                <a href="/tags/#软实力与方法论" title="软实力与方法论" rel="2">
365                                    软实力与方法论
366                                </a>
367                            
368                        
369                    </div>
370                </section>
371                
372
373                <!-- Short About -->
374                <section class="visible-md visible-lg">
375                    <hr><h5><a href="/about/">ABOUT ME</a></h5>
376                    <div class="short-about">
377                        
378                        
379                            <img src="/img/public_wechat.jpg" />
380                        
381                        
382                            <p>欢迎关注亚普的技术轮子</p>
383                        
384                        <!-- SNS Link -->
385                        <ul class="list-inline">
386                            
387                            
388
389                            
390
391                            
392                            <li>
393                                <a target="_blank" href="http://www.jianshu.com/u/c1cd178d13cb">
394                                    <span class="fa-stack fa-lg">
395                                        <i class="fa fa-circle fa-stack-2x"></i>
396                                        <i class="fa  fa-stack-1x fa-inverse">简</i>
397                                    </span>
398                                </a>
399                            </li>
400                            
401
402                            
403                            
404                            
405                            <li>
406                                <a target="_blank" href="https://github.com/wangyapu">
407                                    <span class="fa-stack fa-lg">
408                                        <i class="fa fa-circle fa-stack-2x"></i>
409                                        <i class="fa fa-github fa-stack-1x fa-inverse"></i>
410                                    </span>
411                                </a>
412                            </li>
413                            
414                        </ul>
415                    </div>
416                </section>
417                <!-- Friends Blog -->
418                
419                <hr>
420                <h5>FRIENDS</h5>
421                <ul class="list-inline">
422                    
423                        <li><a href="http://www.iocoder.cn/">芋道源码,遇到源码</a></li>
424                    
425                        <li><a href="http://www.jiangxinlingdu.com/">匠心零度</a></li>
426                    
427                        <li><a href="http://xuxinkun.github.io">xunxinkun的博客</a></li>
428                    
429                        <li><a href="http://www.dozer.cc">Dozer技术小站</a></li>
430                    
431                </ul>
432                
433    		</div>
434        
435	</div>
436</div>
437
438
439    <!-- Footer -->
440<footer>
441    <div class="container">
442        <div class="row">
443            <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
444                <ul class="list-inline text-center">
445                    
446                    
447
448                    <!-- add Weibo, Zhihu by Hux, add target = "_blank" to <a> by Hux -->
449                    
450
451                    
452                    <li>
453                        <a target="_blank" href="http://www.jianshu.com/u/c1cd178d13cb">
454                                    <span class="fa-stack fa-lg">
455                                        <i class="fa fa-circle fa-stack-2x"></i>
456                                        <i class="fa  fa-stack-1x fa-inverse">简</i>
457                                    </span>
458                        </a>
459                    </li>
460                    
461
462                    
463
464
465                    
466                    
467                    <li>
468                        <a target="_blank" href="https://github.com/wangyapu">
469                            <span class="fa-stack fa-lg">
470                                <i class="fa fa-circle fa-stack-2x"></i>
471                                <i class="fa fa-github fa-stack-1x fa-inverse"></i>
472                            </span>
473                        </a>
474                    </li>
475                    
476                </ul>
477                <p class="copyright text-muted">
478                    Copyright &copy; Wang Yapu Blog 2020
479                </p>
480                <p class="copyright text-muted">
481                    <i class="fa fa-eye"></i>&nbsp;<span id="busuanzi_value_site_pv"></span>
482                    您是本站第<span id="busuanzi_value_site_uv"></span>位访客
483                </p>
484            </div>
485        </div>
486    </div>
487</footer>
488
489<!-- jQuery -->
490<script src="/js/jquery.min.js "></script>
490
491
492<!-- Bootstrap Core JavaScript -->
493<script src="/js/bootstrap.min.js "></script>
493
494
495<!-- Custom Theme JavaScript -->
496<script src="/js/hux-blog.min.js "></script>
496
497
498
499<!-- async load function -->
500<script>
501    function async(u, c) {
502      var d = document, t = 'script',
503          o = d.createElement(t),
504          s = d.getElementsByTagName(t)[0];
505      o.src = u;
506      if (c) { o.addEventListener('load', function (e) { c(null, e); }, false); }
507      s.parentNode.insertBefore(o, s);
508    }
509</script>
509
510
511<!-- 
512     Because of the native support for backtick-style fenced code blocks 
513     right within the Markdown is landed in Github Pages, 
514     From V1.6, There is no need for Highlight.js, 
515     so Huxblog drops it officially.
516
517     - https://github.com/blog/2100-github-pages-now-faster-and-simpler-with-jekyll-3-0  
518     - https://help.github.com/articles/creating-and-highlighting-code-blocks/ 
519     - https://github.com/jneen/rouge/wiki/list-of-supported-languages-and-lexers   
520-->
521<!--
522    
522<script>
523        async("http://cdn.bootcss.com/highlight.js/8.6/highlight.min.js", function(){
524            hljs.initHighlightingOnLoad();
525        })
526    </script>
526
527    <link href="http://cdn.bootcss.com/highlight.js/8.6/styles/github.min.css" rel="stylesheet">
528-->
529
530
531<!-- jquery.tagcloud.js -->
532<!--
532<script>-->
533    <!--async("http://cdn.bootcss.com/highlight.js/9.2.0/highlight.min.js", function(){-->
534        <!--hljs.initHighlightingOnLoad();-->
535    <!--})-->
536<!--</script>
536-->
537<!--<link href="http://cdn.bootcss.com/highlight.js/9.2.0/styles/github.min.css" rel="stylesheet">-->
538
539<script>
540    async("/js/highlight.min.js", function(){
541        hljs.initHighlightingOnLoad();
542    })
543</script>
543
544<link href="/css/github.min.css" rel="stylesheet">
545
546<script>
547
548    // only load tagcloud.js in tag.html
549    if($('#tag_cloud').length !== 0){
550        async("/js/jquery.tagcloud.js",function(){
551            $.fn.tagcloud.defaults = {
552                //size: {start: 1, end: 1, unit: 'em'},
553                color: {start: '#bbbbee', end: '#0085a1'},
554            };
555            $('#tag_cloud a').tagcloud();
556        })
557    }
558</script>
558
559
560
561<!--fastClick.js -->
562<script>
563    async("https://cdn.bootcss.com/fastclick/1.0.6/fastclick.min.js", function(){
564        var $nav = document.querySelector("nav");
565        if($nav) FastClick.attach($nav);
566    })
567//    async("/js/fastclick.min.js", function(){
568//        var $nav = document.querySelector("nav");
569//        if($nav) FastClick.attach($nav);
570//    })
571</script>
571
572
573
574<!-- Google Analytics -->
575
576
577
578<!-- Baidu Tongji -->
579
580
581
582
583<!-- Side Catalog -->
584
585<script type="text/javascript">
586    function generateCatalog (selector) {
587        var P = $('div.post-container'),a,n,t,l,i,c;
588        a = P.find('h1,h2,h3,h4,h5,h6');
589        a.each(function () {
590            n = $(this).prop('tagName').toLowerCase();
591            i = "#"+$(this).prop('id');
592            t = $(this).text();
593            c = $('<a href="'+i+'" rel="nofollow">'+t+'</a>');
594            l = $('<li class="'+n+'_nav"></li>').append(c);
595            $(selector).append(l);
596        });
597        return true;    
598    }
599
600    generateCatalog(".catalog-body");
601
602    // toggle side catalog
603    $(".catalog-toggle").click((function(e){
604        e.preventDefault();
605        $('.side-catalog').toggleClass("fold")
606    }))
607
608    /*
609     * Doc: https://github.com/davist11/jQuery-One-Page-Nav
610     * Fork by Hux to support padding
611     */
612    async("/js/jquery.nav.js", function () {
613        $('.catalog-body').onePageNav({
614            currentClass: "active",
615            changeHash: !1,
616            easing: "swing",
617            filter: "",
618            scrollSpeed: 700,
619            scrollOffset: 0,
620            scrollThreshold: .2,
621            begin: null,
622            end: null,
623            scrollChange: null,
624            padding: 80
625        });
626    });
627</script>
627
628
629
630
631
632    
633
634<script src="https://code.jquery.com/jquery-3.2.0.min.js"></script>
vendor: 1 bytes, line 634
634
635<script src="https://cdn1.lncld.net/static/js/av-core-mini-0.6.1.js"></script>
vendor: 1 bytes, line 635
635
636<script>AV.initialize("4u7AwHWc40N58tdE0N4meM1C-gzGzoHsz", "ddCMdwW7Mfl6dFt7iw97RdXI");</script>
vendor: 1 bytes, line 636
636
637<script>
638    function showHitCount(Counter) {
639        /* 这是给一个页面中有多篇文章时所调用的,例如博客主界面或者存档界面。
640        */
641        var query = new AV.Query(Counter);
642        var entries = [];
643        var $visitors = $(".leancloud_visitors");
644
645        // 获取页面中所有文章的id(page.url)
646        $visitors.each(function () {
647            entries.push($(this).attr("id").trim());
648        });
649
650        // 批量查询
651        query.containedIn('url', entries);
652        query.find()
653            .done(function (results) {
654                var COUNT_CONTAINER_REF = '.leancloud-visitors-count';
655
656                if (results.length === 0) {
657                    $visitors.find(COUNT_CONTAINER_REF).text(0);
658                    return;
659                }
660
661                for (var i = 0; i < results.length; i++) {
662                    var item = results[i];
663                    var url = item.get('url');
664                    var hits = item.get('hits');// 获取点击次数
665                    var element = document.getElementById(url);
666
667                    // 显示点击次数
668                    $(element).find(COUNT_CONTAINER_REF).text(hits);
669                }
670                for (var i = 0; i < entries.length; i++) {
671                    var url = entries[i];
672                    var element = document.getElementById(url);
673                    var countSpan = $(element).find(COUNT_CONTAINER_REF);
674                    if (countSpan.text() == '') {
675                        countSpan.text(0);
676                    }
677                }
678            })
679            .fail(function (object, error) {
680                console.log("Error: " + error.code + " " + error.message);
681            });
682    }
683
684    function addCount(Counter) {
685        // 页面(博客文章)中的信息:leancloud_visitors
686        // id为page.url, data-flag-title为page.title
687        var $visitors = $(".leancloud_visitors");
688        var url = $visitors.attr('id').trim();
689        var title = $visitors.attr('data-flag-title').trim();
690        var query = new AV.Query(Counter);
691
692        // 只根据文章的url查询LeanCloud服务器中的数据
693        query.equalTo("url", url);
694        query.find({
695            success: function (results) {
696                if (results.length > 0) {//说明LeanCloud中已经记录了这篇文章
697                    var counter = results[0];
698                    counter.fetchWhenSave(true);
699                    counter.increment("hits");// 将点击次数加1
700                    counter.save(null, {
701                        success: function (counter) {
702                            var $element = $(document.getElementById(url));
703                            $element.find('.leancloud-visitors-count').text(counter.get('hits'));
704                        },
705                        error: function (counter, error) {
706                            console.log('Failed to save Visitor num, with error message: ' + error.message);
707                        }
708                    });
709                } else {
710                    // 执行这里,说明LeanCloud中还没有记录此文章
711                    var newcounter = new Counter();
712                    /* Set ACL */
713                    var acl = new AV.ACL();
714                    acl.setPublicReadAccess(true);
715                    acl.setPublicWriteAccess(true);
716                    newcounter.setACL(acl);
717                    /* End Set ACL */
718                    newcounter.set("title", title);// 把文章标题
719                    newcounter.set("url", url); // 文章url
720                    newcounter.set("hits", 1); // 初始点击次数:1次
721                    newcounter.save(null, { // 上传到LeanCloud服务器中
722                        success: function (newcounter) {
723                            var $element = $(document.getElementById(url));
724                            $element.find('.leancloud-visitors-count').text(newcounter.get('hits'));
725                        },
726                        error: function (newcounter, error) {
727                            console.log('Failed to create');
728                        }
729                    });
730                }
731            },
732            error: function (error) {
733                console.log('Error:' + error.code + " " + error.message);
734            }
735        });
736    }
737
738    $(function () {
739        var Counter = AV.Object.extend("Counter");
740        if ($('.leancloud_visitors').length == 1) {
741            // in post.html, so add 1 to hit counts
742            addCount(Counter);
743        } else if ($('.post-preview').length > 1) {
744            // in index.html, there are many 'leancloud_visitors' and 'post-link', so just show hit counts.
745            showHitCount(Counter);
746        }
747    });
748</script>
748
749
750
751<!-- Image to hack wechat -->
752<img src="/img/icon_wechat.png" width="0" height="0" />
753<!-- Migrate from head to bottom, no longer block render and still work -->
754
755</body>
756
757</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.