{"@attributes":{"version":"2.0"},"channel":{"title":"Power Yang","description":"Developer","link":"https:\/\/poweryang1990.github.io\/","pubDate":"Fri, 29 Jul 2016 09:59:07 +0000","lastBuildDate":"Fri, 29 Jul 2016 09:59:07 +0000","generator":"Jekyll v3.1.6","item":[{"title":"\u6d88\u606f\u961f\u5217","description":{},"pubDate":"Thu, 30 Jun 2016 00:00:00 +0000","link":"https:\/\/poweryang1990.github.io\/2016-06-30\/mq\/","guid":"https:\/\/poweryang1990.github.io\/2016-06-30\/mq\/","category":["MQ","\u67b6\u6784"]},{"title":"RPC \u53ca \u6846\u67b6","description":"<h2 id=\"\u5b66\u4e60\u8d44\u6599\">\u5b66\u4e60\u8d44\u6599<\/h2>\n\n<h4 id=\"\u4f60\u5e94\u8be5\u77e5\u9053\u7684rpc\u539f\u7406\uff08http-www-cnblogs-com-lbser-p-4853234-html\uff09\">\u4f60\u5e94\u8be5\u77e5\u9053\u7684RPC\u539f\u7406\uff08<a href=\"http:\/\/www.cnblogs.com\/LBSer\/p\/4853234.html%EF%BC%89\">http:\/\/www.cnblogs.com\/LBSer\/p\/4853234.html\uff09<\/a><\/h4>\n","pubDate":"Fri, 06 May 2016 00:00:00 +0000","link":"https:\/\/poweryang1990.github.io\/2016-05-06\/rpc\/","guid":"https:\/\/poweryang1990.github.io\/2016-05-06\/rpc\/","category":["RPC","\u67b6\u6784"]},{"title":"\u5fae\u670d\u52a1API Gateway","description":"<h1 id=\"\u5fae\u670d\u52a1-api\u7f51\u5173\">\u5fae\u670d\u52a1 API\u7f51\u5173<\/h1>\n\n<h2 id=\"api\u7f51\u5173\">API\u7f51\u5173<\/h2>\n\n<p>\u4e00\u4e2aAPI \u7f51\u5173\uff0c\u4ed6\u662f\u6240\u6709\u5ba2\u6237\u7aef\u7684\u5165\u53e3\u3002 API\u7f51\u5173\u6709\u4e24\u79cd\u65b9\u5f0f\u6765\u5904\u7406\u8bf7\u6c42\u3002\u6709\u4e9b\u8bf7\u6c42\u88ab\u7b80\u5355\u5730\u4ee3\u7406\/\u8def\u7531\u5230\u5408\u9002\u7684\u670d\u52a1\u4e0a\uff0c\u5176\u4ed6\u7684\u8bf7\u6c42\u88ab\u8f6c\u7ed9\u5230\u4e00\u7ec4\u670d\u52a1 \n\u8be5API\u7f51\u5173\u53ef\u4ee5\u4e3a\u6bcf\u4e2a\u5ba2\u6237\u7aef\u63d0\u4f9b\u4e0d\u540c\u7684API\uff0c\u800c\u4e0d\u662f\u63d0\u4f9b\u4e00\u4e2a\u9002\u5408\u6240\u6709\u60c5\u51b5\u4e0b\u7684API\u3002\u4f8b\u5982\uff0cNetflix\u7684API\u7f51\u5173\u8fd0\u884c\u5ba2\u6237\u7aef\u7279\u5b9a\u9002\u914d\u5668\u4ee3\u7801\uff0c\u63d0\u4f9b\u7ed9\u6bcf\u4e2a\u5ba2\u6237\u7aef\u5b83\u4eec\u9700\u8981\u7684API\u3002\nAPI\u7f51\u5173\u8fd8\u53ef\u4ee5\u5b9e\u73b0\u5b89\u5168\u6027\uff0c\u4f8b\u5982\uff1a \u9a8c\u8bc1\u5ba2\u6237\u7aef\u88ab\u6388\u6743\u6267\u884c\u8bf7\u6c42\n<img src=\"https:\/\/poweryang1990.github.io\/static\/img\/apigateway\/apigateway001.jpg\" alt=\"Use an Api GateWay\" title=\"Use an Api GateWay\"><\/p>\n\n<p>\u4f7f\u7528API\u200b\u200b\u7f51\u5173\u5177\u6709\u4ee5\u4e0b\u4f18\u70b9\uff1a <\/p>\n\n<p>\u3000*  \u4f7f\u670d\u52a1\u548c\u5ba2\u6237\u7aef\u89e3\u8026\u3002<\/p>\n\n<p>\u3000* \u4f7f\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u90e8\u7f72\u73af\u5883\u89e3\u8026\u3002<\/p>\n\n<p>\u3000*  \u63d0\u4f9b\u4e86\u6700\u4f73\u7684API\u7ed9\u6bcf\u4e2a\u5ba2\u6237\u7aef\u3002<\/p>\n\n<p>\u3000*  \u51cf\u5c11\u7684\u8bf7\u6c42\/\u5f80\u8fd4\u6b21\u6570\u3002\u4f8b\u5982\uff0cAPI\u7f51\u5173\u53ef\u4ee5\u4e00\u6b21\u6027\u68c0\u7d22\u591a\u4e2a\u670d\u52a1\u7684\u6570\u636e\u3002\u66f4\u5c11\u7684\u8bf7\u6c42\u4e5f\u610f\u5473\u7740\u66f4\u5c11\u7684\u5f00\u9500\uff0c\u63d0\u9ad8\u4e86\u7528\u6237\u4f53\u9a8c\u3002\u4e00\u4e2aAPI\u7f51\u5173\u5bf9\u4e8e\u79fb\u52a8\u5e94\u7528\u81f3\u5173\u91cd\u8981\u3002<\/p>\n\n<p>\u3000* \u7b80\u5316\u4e86\u5ba2\u6237\u7aef\u7684\u8c03\u7528\uff0c\u56e0\u4e3aAPI\u7f51\u5173\u53ef\u4ee5\u7ec4\u5408\u670d\u52a1\uff0c\u5e76\u63d0\u4f9b\u7ec4\u5408\u540e\u7684fa\u00e7ade\u63a5\u53e3\u3002<\/p>\n\n<p>\u3000\u3000API\u7f51\u5173\u6a21\u5f0f\u4e5f\u6709\u4e00\u4e9b\u7f3a\u70b9\uff1a<\/p>\n\n<p>\u3000*  \u589e\u52a0\u7684\u590d\u6742\u6027\uff0cAPI\u7f51\u5173\u662f\u5fc5\u987b\u5f00\u53d1\u3001\u90e8\u7f72\u548c\u7ba1\u7406\u7684\u53e6\u4e00\u4e2a\u5e94\u7528\u3002<\/p>\n\n<p>\u3000* \u589e\u52a0\u7684\u54cd\u5e94\u65f6\u95f4\uff0c\u56e0\u4e3a\u901a\u8fc7API\u7f51\u5173\u591a\u4e86\u4e00\u5c42\u7f51\u7edc\u8df3\u8f6c\u3002\u7136\u800c\uff0c\u5bf9\u4e8e\u5927\u591a\u6570\u5e94\u7528\u7684\u989d\u5916\u5f80\u8fd4\u7684\u6210\u672c\u662f\u5fae\u4e0d\u8db3\u9053\u7684\u3002 <\/p>\n\n<h3 id=\"how-implement-a-api-gateway-with-consul\">How implement a API Gateway with Consul?<\/h3>\n\n<p><a href=\"https:\/\/github.com\/hashicorp\/consul\/issues\/1012\">https:\/\/github.com\/hashicorp\/consul\/issues\/1012<\/a>\n<a href=\"http:\/\/www.mammatustech.com\/Microservice-Service-Discovery-with-Consul\">http:\/\/www.mammatustech.com\/Microservice-Service-Discovery-with-Consul<\/a>\n<a href=\"http:\/\/www.mammatustech.com\/consul-service-discovery-and-health-for-microservices-architecture-tutorial\">http:\/\/www.mammatustech.com\/consul-service-discovery-and-health-for-microservices-architecture-tutorial<\/a><\/p>\n\n<h3 id=\"consul-data-persisten\">consul  data Persisten<\/h3>\n\n<p>\u7528 -data-dir \u6307\u5b9a \u6570\u636e\u6301\u4e45\u5316\u76ee\u5f55<\/p>\n\n<h3 id=\"consul-multi-environment-config\">consul Multi environment config<\/h3>\n\n<p>We have multiple data centers, and we also have environments like DEV, TEST, QA, PROD<br>\n <a href=\"https:\/\/groups.google.com\/forum\/#!topic\/consul-tool\/R61ISkfAzwo\">https:\/\/groups.google.com\/forum\/#!topic\/consul-tool\/R61ISkfAzwo<\/a><br>\n <a href=\"https:\/\/github.com\/hashicorp\/consul-template\/issues\/374\">https:\/\/github.com\/hashicorp\/consul-template\/issues\/374<\/a><br>\n <a href=\"https:\/\/groups.google.com\/forum\/#!topic\/consul-tool\/0P_27-j3SYQ\">https:\/\/groups.google.com\/forum\/#!topic\/consul-tool\/0P_27-j3SYQ<\/a><\/p>\n\n<p>\u6211\u4eec\u4e5f\u53ef\u4ee5\u7528 Tags\u6765\u533a\u5206\u591a\u73af\u5883<\/p>\n\n<h3 id=\"\u7528consul\u5b9e\u73b0\u670d\u52a1\u6ce8\u518c\u548c\u53d1\u73b0\">\u7528Consul\u5b9e\u73b0\u670d\u52a1\u6ce8\u518c\u548c\u53d1\u73b0<\/h3>\n\n<p><a href=\"http:\/\/blog.leanote.com\/post\/proyang\/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84%E4%B8%AD%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0\">http:\/\/blog.leanote.com\/post\/proyang\/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84%E4%B8%AD%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0<\/a>\n <a href=\"http:\/\/tonybai.com\/2015\/07\/06\/implement-distributed-services-registery-and-discovery-by-consul\/\">http:\/\/tonybai.com\/2015\/07\/06\/implement-distributed-services-registery-and-discovery-by-consul\/<\/a>\n \u6211\u4eec\u5efa\u7acbConsul Cluster\u662f\u4e3a\u4e86\u5b9e\u73b0\u670d\u52a1\u7684\u6ce8\u518c\u548c\u53d1\u73b0\u3002<br>\n Consul\u652f\u6301\u4e24\u79cd\u670d\u52a1\u6ce8\u518c\u7684\u65b9\u5f0f\uff0c\u4e00\u79cd\u662f\u901a\u8fc7Consul\u7684\u670d\u52a1\u6ce8\u518cHTTP API\uff0c\n \u7531\u670d\u52a1\u81ea\u8eab\u5728\u542f\u52a8\u540e\u8c03\u7528API\u6ce8\u518c\u81ea\u5df1\uff0c\u53e6\u5916\u4e00\u79cd\u5219\u662f\u901a\u8fc7\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u5b9a\u4e49\u670d\u52a1\u7684\u65b9\u5f0f\u8fdb\u884c\u6ce8\u518c\u3002Consul\u6587\u6863\u4e2d\u5efa\u8bae\u4f7f\u7528\u540e\u9762\u4e00\u79cd\u65b9\u5f0f\u6765\u505a\u670d\u52a1 \u914d\u7f6e\u548c\u670d\u52a1\u6ce8\u518c\u3002 <\/p>\n\n<p>Consul\u63d0\u4f9b\u4e86\u4e24\u79cd\u53d1\u73b0\u670d\u52a1\u7684\u65b9\u5f0f\uff0c\u4e00\u79cd\u662f\u901a\u8fc7HTTP API\u67e5\u770b\u5b58\u5728\u54ea\u4e9b\u670d\u52a1\uff1b\u53e6\u5916\u4e00\u79cd\u662f\u901a\u8fc7consul agent\u5185\u7f6e\u7684DNS\u670d\u52a1\u6765\u505a\u3002\n \u4e24\u8005\u7684\u5dee\u522b\u5728\u4e8e\u540e\u8005\u53ef\u4ee5\u6839\u636e\u670d\u52a1check\u7684\u5b9e\u65f6\u72b6\u6001\u52a8\u6001\u8c03\u6574available\u670d\u52a1\u8282\u70b9\u5217\u8868\u3002\u6211\u4eec\u8fd9\u91cc\u4e5f\u7740\u91cd\u8bf4\u660e\u9002\u7528 DNS\u65b9\u5f0f\u8fdb\u884c\u670d\u52a1\u53d1\u73b0\u7684\u5177\u4f53\u6b65\u9aa4\n consul\u4e3a\u670d\u52a1\u7f16\u6392\u7684\u5185\u7f6e\u57df\u540d\u4e3a \u201cNAME.service.consul&quot;<\/p>\n\n<p>### How to use Consul-template?<\/p>\n\n<p><a href=\"https:\/\/github.com\/hashicorp\/consul-template\/tree\/master\">https:\/\/github.com\/hashicorp\/consul-template\/tree\/master<\/a><\/p>\n\n<p>## consul load balancer \n DNS NGINX<br>\n ## service Discovery -Prepared Query<\/p>\n\n<p><a href=\"https:\/\/www.consul.io\/docs\/agent\/http\/query.html\">https:\/\/www.consul.io\/docs\/agent\/http\/query.html<\/a><\/p>\n","pubDate":"Wed, 30 Mar 2016 00:00:00 +0000","link":"https:\/\/poweryang1990.github.io\/2016-03-30\/apigateway\/","guid":"https:\/\/poweryang1990.github.io\/2016-03-30\/apigateway\/","category":["\u5fae\u670d\u52a1","\u670d\u52a1\u5316","apigateway","\u67b6\u6784"]},{"title":"\u914d\u7f6e\u4e2d\u5fc3","description":"<h1 id=\"\u5f00\u6e90\u5206\u5e03\u5f0f\u914d\u7f6e\u4e2d\u5fc3\u9009\u578b\">\u5f00\u6e90\u5206\u5e03\u5f0f\u914d\u7f6e\u4e2d\u5fc3\u9009\u578b<\/h1>\n\n<h2 id=\"\u4e00\u3001\u76ee\u6807\">\u4e00\u3001\u76ee\u6807<\/h2>\n\n<p>\u5b9e\u73b0\u5206\u5e03\u5f0f\u914d\u7f6e\u4e2d\u5fc3\uff1a<br>\n\uff081\uff09\u96c6\u4e2d\u7ba1\u7406\u5916\u90e8\u4f9d\u8d56\u7684\u670d\u52a1\u914d\u7f6e\u548c\u670d\u52a1\u5185\u90e8\u914d\u7f6e<br>\n\uff082\uff09\u63d0\u4f9bweb\u7ba1\u7406\u5e73\u53f0\u8fdb\u884c\u914d\u7f6e\u548c\u67e5\u8be2<br>\n\uff083\uff09\u652f\u6301\u914d\u7f6e\u7248\u672c\u63a7\u5236<br>\n\uff084\uff09\u652f\u6301\u5ba2\u6237\u7aef\u62c9\u53d6\u914d\u7f6e<br>\n\uff085\uff09\u652f\u6301\u8ba2\u9605\u4e0e\u53d1\u5e03\uff0c\u914d\u7f6e\u53d8\u66f4\u4e3b\u52a8\u901a\u77e5\u5230client\uff0c\u5b9e\u65f6\u53d8\u66f4\u914d\u7f6e<br>\n\uff086\uff09client\u652f\u6301.Net\uff0cJava <\/p>\n\n<h2 id=\"\u4e8c\u3001\u5f00\u6e90\u89e3\u51b3\u65b9\u6848\u8c03\u7814\">\u4e8c\u3001\u5f00\u6e90\u89e3\u51b3\u65b9\u6848\u8c03\u7814<\/h2>\n\n<h3 id=\"2-1-disconf\">2.1 disconf<\/h3>\n\n<p>\u767e\u5ea6\u5f00\u6e90\n\u4e0espring\u96c6\u6210\u7684\u5f88\u597d\uff0c\u6709web\u7ba1\u7406\uff0cclient\u53ea\u652f\u6301java\u3002<\/p>\n\n<h4 id=\"2-1-1-\u4ecb\u7ecd\">2.1.1 \u4ecb\u7ecd<\/h4>\n\n<p><a href=\"https:\/\/github.com\/knightliao\/disconf\/wiki\">https:\/\/github.com\/knightliao\/disconf\/wiki<\/a><\/p>\n\n<h4 id=\"2-1-2-\u6e90\u7801\">2.1.2 \u6e90\u7801<\/h4>\n\n<p><a href=\"https:\/\/github.com\/knightliao\/disconf\">https:\/\/github.com\/knightliao\/disconf<\/a><\/p>\n\n<h3 id=\"2-2-diamond\">2.2 diamond<\/h3>\n\n<p>\u963f\u91cc\u5f00\u6e90\n\u963f\u91cc\u5185\u90e8\u5e94\u7528\u5e7f\u6cdb\uff0c\u7531http server(nameservers), diamond-server \uff0cweb\u7ec4\u6210\uff0cdiamond-server\u8fde\u63a5\u540c\u4e00\u4e2amysql\uff0c\u6570\u636e\u540c\u6b65\u901a\u8fc7mysql dump\u6587\u4ef6\u540c\u6b65\uff08\u540c\u6b65\u6548\u7387\uff1f\uff09\uff0c\u652f\u6301\u8ba2\u9605\u53d1\u5e03\uff0cclient\u53ea\u652f\u6301java\u3002<\/p>\n\n<h4 id=\"2-2-1-\u4ecb\u7ecd\">2.2.1 \u4ecb\u7ecd<\/h4>\n\n<p><a href=\"http:\/\/code.taobao.org\/p\/diamond\/wiki\/index\/\">http:\/\/code.taobao.org\/p\/diamond\/wiki\/index\/<\/a><\/p>\n\n<h4 id=\"2-2-2-\u6e90\u7801\">2.2.2 \u6e90\u7801<\/h4>\n\n<p><a href=\"http:\/\/code.taobao.org\/svn\/diamond\/trunk\">http:\/\/code.taobao.org\/svn\/diamond\/trunk<\/a><\/p>\n\n<h3 id=\"2-3-zookeeper\">2.3 zookeeper<\/h3>\n\n<p>Zookeeper\u662f\u4e3a\u5206\u5e03\u5f0f\u5e94\u7528\u7a0b\u5e8f\u63d0\u4f9b\u9ad8\u6027\u80fd\u534f\u8c03\u670d\u52a1\u7684\u5de5\u5177\u96c6\u5408\uff0c\u4e5f\u662fGoogle\u7684Chubby\u4e00\u4e2a\u5f00\u6e90\u7684\u5b9e\u73b0\uff0c\u662fHadoop\u7684\u5206\u5e03\u5f0f\u534f\u8c03\u670d\u52a1\u3002\u5206\u5e03\u5f0f\u5e94\u7528\u7a0b\u5e8f\u53ef\u4ee5\u57fa\u4e8e\u5b83\u5b9e\u73b0\u914d\u7f6e\u7ef4\u62a4\u3001\u547d\u540d\u670d\u52a1\u3001\u5206\u5e03\u5f0f\u540c\u6b65\u3001\u7ec4\u670d\u52a1\u7b49\u3002\u5b83\u4e3b\u8981\u7528\u6765\u89e3\u51b3\u5206\u5e03\u5f0f\u5e94\u7528\u4e2d\u7ecf\u5e38\u9047\u5230\u7684\u6570\u636e\u7ba1\u7406\u95ee\u9898\uff0c\u5982\u96c6\u7fa4\u7ba1\u7406\u3001\u7edf\u4e00\u547d\u540d\u670d\u52a1\u3001\u5206\u5e03\u5f0f\u914d\u7f6e\u7ba1\u7406\u3001\u5206\u5e03\u5f0f\u6d88\u606f\u961f\u5217\u3001\u5206\u5e03\u5f0f\u9501\u3001\u5206\u5e03\u5f0f\u534f\u8c03\u7b49\u3002\nZooKeeper \u662f\u76f8\u5bf9\u6210\u719f\u7684\u6846\u67b6<\/p>\n\n<h4 id=\"2-3-1-\u7279\u6027\">2.3.1 \u7279\u6027-<\/h4>\n\n<ul>\n<li><\/li>\n<li>\u7b80\u5355\u3001\u5065\u58ee\u3001\u6709\u5e8f\u3001\u5feb\u901f<br><\/li>\n<li>\u4ee5\u76ee\u5f55\u6811\u7684\u7684\u65b9\u5f0f\u5b58\u50a8\u548c\u7ba1\u7406<br>\n(1) ZooKeeper\u76ee\u5f55\u6811\u4e2d\u6bcf\u4e00\u4e2a\u8282\u70b9\u5bf9\u5e94\u4e00\u4e2aZnode\u3002\u6bcf\u4e2aZnode\u7ef4\u62a4\u7740\u4e00\u4e2a\u5c5e\u6027\u7ed3\u6784\uff0c\u5b83\u5305\u542b\u7740<strong>\u7248\u672c\u53f7(dataVersion)<\/strong>\uff0c\u65f6\u95f4\u6233(ctime,mtime)\u7b49\u72b6\u6001\u4fe1\u606f\n(2) <strong>Znode\u662f\u5ba2\u6237\u7aef\u8bbf\u95eeZooKeeper\u7684\u4e3b\u8981\u5b9e\u4f53 ,\u5f53\u8282\u70b9\u72b6\u6001\u53d1\u751f\u6539\u53d8\u65f6(\u6570\u636e\u7684\u589e\u3001\u5220\u3001\u6539)\u5c06\u4f1a\u89e6\u53d1watch\u6240\u5bf9\u5e94\u7684\u64cd\u4f5c\uff0c\u8fd9\u4ee5\u7279\u6027\u5f88\u91cd\u8981 \u53ef\u4ee5\u5e2e\u6211\u4eec\u5b8c\u6210\u914d\u7f6e\u7ba1\u7406\u3001\u4fe1\u606f\u540c\u6b65\u3001\u5206\u5e03\u5f0f\u9501\u7b49\u7b49\u3002<\/strong>\n(3) \u5206\u4e34\u65f6\u8282\u70b9\uff08\u4e34\u65f6znode\u4e0d\u80fd\u6709\u5b50znode\uff09\u548c\u6c38\u4e45\u8282\u70b9\uff0c\u6bcf\u4e2a\u8282\u70b9\u90fd\u62e5\u6709\u7740\u81ea\u5df1\u7684\u8bbf\u95ee\u63a7\u5236\u5217\u8868<strong>\uff08\u53ef\u7528\u6765\u505a\u6743\u9650\u63a7\u5236\uff09<\/strong>\n(4) \u8282\u70b9\u552f\u4e00\u6027<br>\n#### 2.3.2\u7248\u672c\n\u5b98\u65b9\u8d44\u6599(<a href=\"https:\/\/zookeeper.apache.org\/doc\/r3.3.2\/index.html\">https:\/\/zookeeper.apache.org\/doc\/r3.3.2\/index.html<\/a>) \n\u5b98\u65b9\u652f\u6301Java  \u4ee5\u53ca.Net\u5ba2\u6237\u7aef\n#### 2.3.3 \u5b66\u4e60\u8d44\u6599<\/li>\n<li>CSDN\u4f18\u79c0\u535a\u5ba2 (<a href=\"http:\/\/blog.csdn.net\/tswisdom\/article\/details\/41522069\">http:\/\/blog.csdn.net\/tswisdom\/article\/details\/41522069<\/a>)<\/li>\n<li>cnblogs\u5b66\u4e60\u7b14\u8bb0(<a href=\"http:\/\/www.cnblogs.com\/sunddenly\/category\/620563.html\">http:\/\/www.cnblogs.com\/sunddenly\/category\/620563.html<\/a>)<\/li>\n<li>Windows\u4e0b\u5b89\u88c5\u4f7f\u7528 (<a href=\"http:\/\/www.cnblogs.com\/shanyou\/p\/3221990.html\">http:\/\/www.cnblogs.com\/shanyou\/p\/3221990.html<\/a>)\n###2.4 etcd\nCoreOS\u5f00\u6e90\u3002\n\u8f7b\u91cf\u7ea7\u5206\u5e03\u5f0fkey-value\u6570\u636e\u5e93\uff0c\u540c\u65f6\u4e3a\u96c6\u7fa4\u73af\u5883\u7684\u670d\u52a1\u53d1\u73b0\u548c\u6ce8\u518c\u800c\u8bbe\u8ba1\u3002\n\u5b83\u63d0\u4f9b\u4e86\u6570\u636eTTL\u5931\u6548\uff08\u901a\u8fc7TTL\u66f4\u65b0\u6765\u5224\u65ad\u673a\u5668\u4e0b\u7ebf\uff0c\u6765\u907f\u514d\u4e00\u5b9a\u7684\u7f51\u7edc\u5206\u533a\u95ee\u9898\uff09\u3001\u6570\u636e\u6539\u53d8\u76d1\u89c6\u3001\u591a\u503c\u3001\u76ee\u5f55\u76d1\u542c\u3001\u5206\u5e03\u5f0f\u9501\u539f\u5b50\u64cd\u4f5c\u7b49\u529f\u80fd\uff0c\u6765\u7ba1\u7406\u8282\u70b9\u72b6\u6001\u3002<\/li>\n<\/ul>\n\n<h4 id=\"2-4-1-\u7279\u6027\">2.4.1 \u7279\u6027<\/h4>\n\n<p>\u7b80\u5355: curl\u53ef\u8bbf\u95ee\u7684\u7528\u6237\u7684API\uff08HTTP+JSON\uff09\n\u5b89\u5168: \u53ef\u9009\u7684SSL\u5ba2\u6237\u7aef\u8bc1\u4e66\u8ba4\u8bc1\n\u5feb\u901f: \u5355\u5b9e\u4f8b\u6bcf\u79d2 1000 \u6b21\u5199\u64cd\u4f5c\n\u53ef\u9760: \u4f7f\u7528Raft\u4fdd\u8bc1\u4e00\u81f4\u6027\n\u6ce8\uff1azookeeper\u4f7f\u7528\u7684\u6bd4\u8f83\u590d\u6742\u57fa\u4e8ePaxos\u7684Zab\u534f\u8bae\uff0cetcd\u4f7f\u7528\u7684Standford\u65b0\u7684\u4e00\u81f4\u6027\u7b97\u6cd5Raft\uff0c\u6982\u5ff5\u4e0a\u4f1a\u7b80\u5355\u4e9b\uff0c0.4.6\u7248\u672c\u4f9d\u8d56\u4e8ego-raft\uff0c0.5.0\u4ee5\u4e0a\u91cd\u65b0\u8bbe\u8ba1\u3002<\/p>\n\n<h4 id=\"2-4-2-\u76ee\u524d\u7248\u672c\">2.4.2 \u76ee\u524d\u7248\u672c<\/h4>\n\n<p>\u7f51\u4e0a\u7684\u4ecb\u7ecd\u6587\u7ae0\u57fa\u672c\u505c\u7559\u5230\u7a33\u5b9a\u72480.4.6\u4e0a\u3002\u76ee\u524d\u7248\u672c\u5df2\u4ece0.x\u76f4\u63a5\u8df3\u5230\u4e862.0\u7248\u672c\u3002\uff082015-1-28\uff09\n<a href=\"https:\/\/coreos.com\/blog\/etcd-2.0-release-first-major-stable-release\/\">https:\/\/coreos.com\/blog\/etcd-2.0-release-first-major-stable-release\/<\/a>\n2.0\u4ecb\u7ecd\uff08\u9700\u8981\u7ffb\u5899\uff09\uff1a\n<a href=\"https:\/\/www.youtube.com\/watch?v=z6tjawXZ71E\">https:\/\/www.youtube.com\/watch?v=z6tjawXZ71E<\/a><\/p>\n\n<p>\u4f7f\u7528go\u8bed\u8a00\uff0c\u90e8\u7f72\u7b80\u5355\uff0c\u540c\u65f6\u9879\u76ee\u8f83\u5e74\u8f7b\u3002<\/p>\n\n<h4 id=\"2-4-3-\u4ecb\u7ecd\">2.4.3 \u4ecb\u7ecd<\/h4>\n\n<p>\u4ece\u5b9e\u73b0\u539f\u7406\u5230\u5e94\u7528\u573a\u666f\u591a\u65b9\u4f4d\u89e3\u8bfb\uff082015-1-30\uff09\n<a href=\"http:\/\/www.infoq.com\/cn\/articles\/etcd-interpretation-application-scenario-implement-principle\">http:\/\/www.infoq.com\/cn\/articles\/etcd-interpretation-application-scenario-implement-principle<\/a><\/p>\n\n<h4 id=\"2-4-4-\u6e90\u7801\">2.4.4 \u6e90\u7801<\/h4>\n\n<p><a href=\"https:\/\/github.com\/coreos\/etcd\">https:\/\/github.com\/coreos\/etcd<\/a><\/p>\n\n<h3 id=\"2-5-consul\">2.5 Consul<\/h3>\n\n<p>Consul\u662fHashiCorp\u516c\u53f8\u63a8\u51fa\u7684\u5f00\u6e90\u5de5\u5177\uff0c\u7528\u4e8e\u5b9e\u73b0\u5206\u5e03\u5f0f\u7cfb\u7edf\u7684\u670d\u52a1\u53d1\u73b0\u4e0e\u914d\u7f6e\u3002\u4e0e\u5176\u4ed6\u5206\u5e03\u5f0f\u670d\u52a1\u6ce8\u518c\u4e0e\u53d1\u73b0\u7684\u65b9\u6848\uff0cConsul\u7684\u65b9\u6848\u66f4<q>\u4e00\u7ad9\u5f0f<\/q>\uff0c\u5185\u7f6e\u4e86\u670d\u52a1\u6ce8\u518c\u4e0e\u53d1\u73b0\u6846 \u67b6\u3001\u5206\u5e03\u4e00\u81f4\u6027\u534f\u8bae\u5b9e\u73b0\u3001\u5065\u5eb7\u68c0\u67e5\u3001Key\/Value\u5b58\u50a8\u3001\u591a\u6570\u636e\u4e2d\u5fc3\u65b9\u6848\uff0c\u4e0d\u518d\u9700\u8981\u4f9d\u8d56\u5176\u4ed6\u5de5\u5177\uff08\u6bd4\u5982ZooKeeper\u7b49\uff09\u3002\u4f7f\u7528\u8d77\u6765\u4e5f\u8f83 \u4e3a\u7b80\u5355\u3002Consul\u7528Golang\u5b9e\u73b0\uff0c\u56e0\u6b64\u5177\u6709\u5929\u7136\u53ef\u79fb\u690d\u6027(\u652f\u6301Linux\u3001windows\u548cMac OS X)\uff1b\u5b89\u88c5\u5305\u4ec5\u5305\u542b\u4e00\u4e2a\u53ef\u6267\u884c\u6587\u4ef6\uff0c\u65b9\u4fbf\u90e8\u7f72\uff0c\u4e0eDocker\u7b49\u8f7b\u91cf\u7ea7\u5bb9\u5668\u53ef\u65e0\u7f1d\u914d\u5408\u3002 <\/p>\n\n<h4 id=\"2-5-1-consul-\u7684\u4f7f\u7528\u573a\u666f\">2.5.1 Consul \u7684\u4f7f\u7528\u573a\u666f<\/h4>\n\n<p>docker \u5b9e\u4f8b\u7684\u6ce8\u518c\u4e0e\u914d\u7f6e\u5171\u4eab\ncoreos \u5b9e\u4f8b\u7684\u6ce8\u518c\u4e0e\u914d\u7f6e\u5171\u4eab\nvitess \u96c6\u7fa4\nSaaS \u5e94\u7528\u7684\u914d\u7f6e\u5171\u4eab\n\u4e0e confd \u670d\u52a1\u96c6\u6210\uff0c\u52a8\u6001\u751f\u6210 nginx \u548c haproxy \u914d\u7f6e\u6587\u4ef6<\/p>\n\n<h4 id=\"2-5-2-consul-\u7684\u4f18\u52bf\">2.5.2 Consul \u7684\u4f18\u52bf<\/h4>\n\n<p>\u4f7f\u7528 Raft \u7b97\u6cd5\u6765\u4fdd\u8bc1\u4e00\u81f4\u6027, \u6bd4\u590d\u6742\u7684 Paxos \u7b97\u6cd5\u66f4\u76f4\u63a5. \u76f8\u6bd4\u8f83\u800c\u8a00, zookeeper \u91c7\u7528\u7684\u662f Paxos, \u800c etcd \u4f7f\u7528\u7684\u5219\u662f Raft.\n\u652f\u6301\u591a\u6570\u636e\u4e2d\u5fc3\uff0c\u5185\u5916\u7f51\u7684\u670d\u52a1\u91c7\u7528\u4e0d\u540c\u7684\u7aef\u53e3\u8fdb\u884c\u76d1\u542c\u3002 \u591a\u6570\u636e\u4e2d\u5fc3\u96c6\u7fa4\u53ef\u4ee5\u907f\u514d\u5355\u6570\u636e\u4e2d\u5fc3\u7684\u5355\u70b9\u6545\u969c,\u800c\u5176\u90e8\u7f72\u5219\u9700\u8981\u8003\u8651\u7f51\u7edc\u5ef6\u8fdf, \u5206\u7247\u7b49\u60c5\u51b5\u7b49. zookeeper \u548c etcd \u5747\u4e0d\u63d0\u4f9b\u591a\u6570\u636e\u4e2d\u5fc3\u529f\u80fd\u7684\u652f\u6301.\n\u652f\u6301\u5065\u5eb7\u68c0\u67e5. etcd \u4e0d\u63d0\u4f9b\u6b64\u529f\u80fd.\n\u652f\u6301 http \u548c dns \u534f\u8bae\u63a5\u53e3. zookeeper \u7684\u96c6\u6210\u8f83\u4e3a\u590d\u6742, etcd \u53ea\u652f\u6301 http \u534f\u8bae.\n\u5b98\u65b9\u63d0\u4f9bweb\u7ba1\u7406\u754c\u9762, etcd \u65e0\u6b64\u529f\u80fd.\n\u7efc\u5408\u6bd4\u8f83, Consul \u4f5c\u4e3a\u670d\u52a1\u6ce8\u518c\u548c\u914d\u7f6e\u7ba1\u7406\u7684\u65b0\u661f, \u6bd4\u8f83\u503c\u5f97\u5173\u6ce8\u548c\u7814\u7a76.<\/p>\n\n<h4 id=\"2-5-3-consul-\u7684\u89d2\u8272\">2.5.3 Consul \u7684\u89d2\u8272<\/h4>\n\n<p>client: \u5ba2\u6237\u7aef, \u65e0\u72b6\u6001, \u5c06 HTTP \u548c DNS \u63a5\u53e3\u8bf7\u6c42\u8f6c\u53d1\u7ed9\u5c40\u57df\u7f51\u5185\u7684\u670d\u52a1\u7aef\u96c6\u7fa4. \nserver: \u670d\u52a1\u7aef, \u4fdd\u5b58\u914d\u7f6e\u4fe1\u606f, \u9ad8\u53ef\u7528\u96c6\u7fa4, \u5728\u5c40\u57df\u7f51\u5185\u4e0e\u672c\u5730\u5ba2\u6237\u7aef\u901a\u8baf, \u901a\u8fc7\u5e7f\u57df\u7f51\u4e0e\u5176\u4ed6\u6570\u636e\u4e2d\u5fc3\u901a\u8baf. \u6bcf\u4e2a\u6570\u636e\u4e2d\u5fc3\u7684 server \u6570\u91cf\u63a8\u8350\u4e3a 3 \u4e2a\u6216\u662f 5 \u4e2a.  <\/p>\n\n<h3 id=\"2-6-\u6bd4\u8f83etcd\u3001zookeeper\u3001consul\">2.6 \u6bd4\u8f83etcd\u3001zookeeper\u3001consul<\/h3>\n\n<p>Jason Wilder\u7684\u4e00\u7bc7\u535a\u5ba2\u5206\u522b\u5bf9\u5e38\u89c1\u7684\u670d\u52a1\u53d1\u73b0\u5f00\u6e90\u9879\u76eeZookeeper\u3001Doozer\u3001etcd\u8fdb\u884c\u4e86\u603b\u7ed3\u3002\n<a href=\"http:\/\/jasonwilder.com\/blog\/2014\/02\/04\/service-discovery-in-the-cloud\/\">http:\/\/jasonwilder.com\/blog\/2014\/02\/04\/service-discovery-in-the-cloud\/<\/a>  <\/p>\n\n<p>\u670d\u52a1\u53d1\u73b0\uff1aZookeeper vs etcd vs Consul\n<a href=\"http:\/\/dockone.io\/article\/667\">http:\/\/dockone.io\/article\/667<\/a>   <\/p>\n\n<p>Consul\u548cZooKeeper\u7684\u533a\u522b\n<a href=\"http:\/\/dockone.io\/article\/300\">http:\/\/dockone.io\/article\/300<\/a>  <\/p>\n\n<p>Consul vs. ZooKeeper, doozerd, etcd\uff08\u8bd1\u6587\uff09 \n<a href=\"https:\/\/www.douban.com\/note\/496362733\/\">https:\/\/www.douban.com\/note\/496362733\/<\/a><\/p>\n\n<h3 id=\"\u603b\u7ed3\">\u603b\u7ed3<\/h3>\n\n<hr>\n\n<h1 id=\"consul-k-v\">Consul K\/V<\/h1>\n\n<p>\u672c\u6b21\u91c7\u7528Consul\u7684K\/V \u5b9e\u73b0\u4e86 \u914d\u7f6e\u4e2d\u5fc3 \u8be6\u7ec6\u89c1\u5f00\u6e90\u9879\u76ee  <\/p>\n\n<p><a href=\"https:\/\/github.com\/uoko-J-Go\/UOKOConsul\">https:\/\/github.com\/uoko-J-Go\/UOKOConsul<\/a> <\/p>\n\n<h2 id=\"\u914d\u7f6e-\u8de8\u6570\u636e\u4e2d\u5fc3-\u590d\u5236\">\u914d\u7f6e \u8de8\u6570\u636e\u4e2d\u5fc3 \u590d\u5236<\/h2>\n\n<p><a href=\"https:\/\/github.com\/hashicorp\/consul-replicate\">https:\/\/github.com\/hashicorp\/consul-replicate<\/a><\/p>\n","pubDate":"Thu, 24 Mar 2016 00:00:00 +0000","link":"https:\/\/poweryang1990.github.io\/2016-03-24\/configmanage\/","guid":"https:\/\/poweryang1990.github.io\/2016-03-24\/configmanage\/","category":["zookkeeper","Consul","go","java","\u5206\u5e03\u5f0f","\u67b6\u6784"]},{"title":"GoLang \u5b66\u4e60\u4e4b\u8def","description":"<h1 id=\"golang\u5b66\u4e60\u4e4b\u8def\">GoLang\u5b66\u4e60\u4e4b\u8def<\/h1>\n\n<h2 id=\"\u5165\u95e8\">\u5165\u95e8<\/h2>\n\n<ul>\n<li>\u57fa\u672c\u8bed\u6cd5<br>\n<a href=\"https:\/\/tour.golang.org\">https:\/\/tour.golang.org<\/a> \n<a href=\"http:\/\/go-tour-zh.appspot.com\">http:\/\/go-tour-zh.appspot.com<\/a>  \uff08\u4e2d\u6587\uff09<\/li>\n<li>\u57fa\u7840\u73af\u5883<br>\n<a href=\"http:\/\/docs.studygolang.com\/doc\/code.html\">http:\/\/docs.studygolang.com\/doc\/code.html<\/a><br>\n<a href=\"http:\/\/docscn.studygolang.com\/doc\/code.html%EF%BC%88%E4%B8%AD%E6%96%87%EF%BC%89\">http:\/\/docscn.studygolang.com\/doc\/code.html\uff08\u4e2d\u6587\uff09<\/a><\/li>\n<li>\u5b9e\u6548\u7f16\u7a0b \n<a href=\"http:\/\/docs.studygolang.com\/doc\/effective_go.html\">http:\/\/docs.studygolang.com\/doc\/effective_go.html<\/a>\n<a href=\"http:\/\/docscn.studygolang.com\/doc\/effective_go.html\">http:\/\/docscn.studygolang.com\/doc\/effective_go.html<\/a> \uff08\u4e2d\u6587\uff09<\/li>\n<\/ul>\n","pubDate":"Wed, 02 Mar 2016 00:00:00 +0000","link":"https:\/\/poweryang1990.github.io\/2016-03-02\/golang\/","guid":"https:\/\/poweryang1990.github.io\/2016-03-02\/golang\/","category":["go","go"]},{"title":"Asp.Net vNext","description":"<h2 id=\"\u5b66\u4e60\u8def\u7ebf\">\u5b66\u4e60\u8def\u7ebf<\/h2>\n\n<ol>\n<li>\u5f00\u6e90\u5730\u5740 <a href=\"https:\/\/github.com\/aspnet\/\">https:\/\/github.com\/aspnet\/<\/a><\/li>\n<li>\u5b66\u4e60\u5730\u5740 <a href=\"http:\/\/www.asp.net\/vnext\">http:\/\/www.asp.net\/vnext<\/a><\/li>\n<\/ol>\n\n<h3 id=\"\u9047\u5230\u95ee\u9898\">\u9047\u5230\u95ee\u9898<\/h3>\n\n<p>\u5728Win8\u4e0b IIS\u90e8\u7f72 \u9047\u5230\u95ee\u9898\n <q>Error: Unable to load application or execute command 'Microsoft.AspNet.Server.Kestrel'. Available commands: web, ef.<\/q><br>\n<em>\u95ee\u9898\u539f\u56e0\u5206\u67901<\/em>\uff1a\u9700\u8981\u5728\u670d\u52a1\u5668\u4e0a\u5b89\u88c5 ASP.NET 4.5 \u6765\u652f\u6301 ASP.NET5 \u8fd0\u884c\n<a href=\"http:\/\/stackoverflow.com\/questions\/28917865\/problems-publishing-asp-vnext-website-on-iis-8\/29064739#29064739\">http:\/\/stackoverflow.com\/questions\/28917865\/problems-publishing-asp-vnext-website-on-iis-8\/29064739#29064739<\/a><\/p>\n\n<p><a href=\"http:\/\/www.c-sharpcorner.com\/UploadFile\/7e39ca\/how-to-install-Asp-Net-4-5-in-windows-8\/\">\u5b89\u88c5ASP.NET4.5\u6b65\u9aa4<\/a><br>\n<em>\u95ee\u9898\u539f\u56e0\u5206\u67902<\/em>\uff1a \n\u5f53\u524d\u7cfb\u7edf\u7528\u6237\u6ca1\u6709Administrator\u7528\u6237\u6743\u9650 \uff0c\u5e94\u7528\u7a0b\u5e8f\u6c60\u7528\u6237\u8eab\u4efd ApplicationPoolIdentity \u65e0\u6cd5\u8bbf\u95eeC\u76d8 \u7684\u5bfc\u81f4  \u65e0\u6cd5\u6267\u884cHttpPlatformHandler\n<a href=\"https:\/\/github.com\/aspnet\/Hosting\/issues\/464\">https:\/\/github.com\/aspnet\/Hosting\/issues\/464<\/a><br>\n\u89e3\u51b3\u529e\u6cd5\uff1a \u4fee\u6539 \u5e94\u7528\u7a0b\u5e8f\u6c60Identity<\/p>\n","pubDate":"Thu, 03 Dec 2015 00:00:00 +0000","link":"https:\/\/poweryang1990.github.io\/2015-12-03\/aspnet5\/","guid":"https:\/\/poweryang1990.github.io\/2015-12-03\/aspnet5\/","category":["vNext",".Net"]},{"title":"Ruby on Rails","description":"<h3 id=\"ruby-on-rails\">Ruby On Rails<\/h3>\n\n<ol>\n<li><a href=\"http:\/\/guides.rubyonrails.org\/\">Guides<\/a><\/li>\n<\/ol>\n","pubDate":"Tue, 01 Dec 2015 00:00:00 +0000","link":"https:\/\/poweryang1990.github.io\/2015-12-01\/ruby-on-rails\/","guid":"https:\/\/poweryang1990.github.io\/2015-12-01\/ruby-on-rails\/","category":["Ruby","Ruby"]},{"title":"\u6301\u7eed\u96c6\u6210\u90e8\u7f72","description":"<h3 id=\"1\u3001\u6d41\u7a0b\">1\u3001\u6d41\u7a0b<\/h3>\n\n<p>\u66f4\u65b0\u7f16\u8bd1\u4ee3\u7801\u3001\u4ee3\u7801\u8d28\u91cf\u68c0\u67e5\u3001\u66f4\u65b0\u6570\u636e\u5e93\u3001\u6267\u884c\u5355\u5143\u6d4b\u8bd5\u3001\u90e8\u7f72\u540e\u53f0\u670d\u52a1\u3001\u6267\u884c\u63a5\u53e3\u6d4b\u8bd5\u3001\u90e8\u7f72\u524d\u53f0\u5e94\u7528\u3001\u6267\u884cUI\u6d4b\u8bd5\u3001\u6784\u5efa\u7ed3\u679c\u53d1\u5e03<br>\n<a href=\"http:\/\/www.infoq.com\/cn\/articles\/develop-continuous-integration-around-automation-test\">http:\/\/www.infoq.com\/cn\/articles\/develop-continuous-integration-around-automation-test<\/a><\/p>\n\n<h3 id=\"2\u3001\u6301\u7eed\u96c6\u6210\u4e4b\u201c\u4f9d\u8d56\u7ba1\u7406\u201d\">2\u3001\u6301\u7eed\u96c6\u6210\u4e4b\u201c\u4f9d\u8d56\u7ba1\u7406\u201d<\/h3>\n\n<p><a href=\"http:\/\/www.infoq.com\/cn\/news\/2011\/05\/ci-dependency-management\">http:\/\/www.infoq.com\/cn\/news\/2011\/05\/ci-dependency-management<\/a><\/p>\n\n<h3 id=\"3\u3001eg-continuous-integration-amp-delivery-for-github-with-teamcity\">3\u3001eg:Continuous Integration &amp; Delivery For GitHub With TeamCity<\/h3>\n\n<p><a href=\"http:\/\/www.codeproject.com\/Articles\/703244\/Continuous-Integration-Delivery-For-GitHub-With-Te\">http:\/\/www.codeproject.com\/Articles\/703244\/Continuous-Integration-Delivery-For-GitHub-With-Te<\/a>  <\/p>\n\n<h3 id=\"4\u3001using-teamcity-for-asp-net-development-deploying\">4\u3001Using TeamCity for ASP.NET development: Deploying<\/h3>\n\n<ul>\n<li><a href=\"https:\/\/johanleino.wordpress.com\/2013\/03\/19\/using-teamcity-for-asp-net-development\/\">Installing\/Configuring TeamCity for use with IIS<\/a> <\/li>\n<li><a href=\"https:\/\/johanleino.wordpress.com\/2013\/03\/19\/using-teamcity-for-asp-net-development-part-2\/\">MSBuild requirements for web package publishing<\/a><\/li>\n<li><a href=\"https:\/\/johanleino.wordpress.com\/2013\/04\/02\/using-teamcity-for-asp-net-development-part-3\/\">Deploying via Web Deploy<\/a><\/li>\n<li><a href=\"https:\/\/johanleino.wordpress.com\/2013\/05\/24\/using-teamcity-for-asp-net-development-part-4\/\">Backup (pre-deploy)<\/a><\/li>\n<\/ul>\n\n<h3 id=\"5\u3001gitlabci-gitlab-runner\">5\u3001GitLabCI GitLab Runner<\/h3>\n\n<ul>\n<li><p>\u5b89\u88c5Runner<br>\n<a href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab-ci-multi-runner\">https:\/\/gitlab.com\/gitlab-org\/gitlab-ci-multi-runner<\/a><\/p><\/li>\n<li><p>\u914d\u7f6e.gitlab-ci.yml<\/p><\/li>\n<\/ul>\n\n<pre><code>\n    variables:\n    Solution: UOKO.SSO.sln\n    before_script:\n    - 'echo off'\n    stages:\n    - nugetrestore\n    - build\n    nugetrestore:\n    stage: nugetrestore\n    script:\n        - 'cd .nuget'\n        - 'echo restoring..'\n        - 'nuget restore \"..\/%Solution%\"'\n        - 'cd ..'\n        - 'echo restored'\n    only:\n        - master\n    tags:\n        - zhipingrunner\n\n    build:\n    stage: build\n    script:\n        - 'echo building..'\n        - '\"%SystemRoot%\\Microsoft.NET\\Framework\\v4.0.30319\\MSBuild.exe\" \"%Solution%\" \/t:Build \/property:Configuration=Debug \/p:VisualStudioVersion=12.0'\n    only:\n        - master\n    tags:\n        - zhipingrunner\n <\/code><\/pre>\n\n<h3 id=\"6\u3001msbuild-appcmd-msdeploy\">6\u3001MSbuild AppCmd MSDeploy<\/h3>\n\n<pre><code>\n\n    #\u6253\u5305 MSBuild=\"%SystemRoot%\\Microsoft.NET\\Framework\\v4.0.30319\\MSBuild.exe\"\n\n    MSBuild \"F:\\UOKOWorkspace\\Git\\uoko.sso\\UOKO.SSO.Server\\UOKO.SSO.Server.csproj\" \/T:Package \/property:Configuration=Release \/P:VisualStudioVersion=12.0 \n    \/P:PackageLocation=\"F:\\\u53d1\u5e03\\pakagezip\\uokossodeploy.zip\"\n\n    #\u521b\u5efa\u7ad9\u70b9 appcmd=\"%SystemRoot%\\C:\\Windows\\System32\\inetsrv\\appcmd.exe\"\n    appcmd add site \/name:\"ids.uoko.ioc\"  \/bindings:http:\/\/ids.uoko.ioc:80 \/physicalPath:\"F:\\\u53d1\u5e03\\ids.uoko.ioc\"\n    appcmd add appplool \/name:ids.uoko.ioc\n    appcmd set app ids.uoko.ioc\/ -applicationPool:ids.uoko.ioc\n\n    #\u672c\u5730\u90e8\u7f72\n    F:\\\u53d1\u5e03\\pakagezip\\uokossodeploy.deploy.cmd \"-setParam:name='IIS Web Application Name',value=ids.uoko.ioc\" \/y\n\n    #\u8fdc\u7a0b\u90e8\u7f72\n    F:\\\u53d1\u5e03\\pakagezip>uokossodeploy.deploy.cmd \/Y \/U:simple-deploy \/P:deploy \/A:Basic \"\/M:https:\/\/WIN-DEVTEST-002:8172\/msdeploy.axd?site=ids.uoko.ioc\" -allowUntrusted \"-setParam:name='IIS Web Application Name',value='ids.uoko.ioc'\"\n <\/code><\/pre>\n \n\n<p><a href=\"http:\/\/stackoverflow.com\/questions\/6511380\/how-do-i-build-a-solution-programatically-in-c\">http:\/\/stackoverflow.com\/questions\/6511380\/how-do-i-build-a-solution-programatically-in-c<\/a><\/p>\n","pubDate":"Wed, 25 Nov 2015 00:00:00 +0000","link":"https:\/\/poweryang1990.github.io\/2015-11-25\/continuous-integration\/","guid":"https:\/\/poweryang1990.github.io\/2015-11-25\/continuous-integration\/","category":["CI","CD","TeamCity","Git",".Net"]},{"title":"\u5355\u70b9\u767b\u5f55","description":"<h1 id=\"\u7edf\u4e00\u8ba4\u8bc1-\u4e0e\u7edf\u4e00\u6388\u6743\">\u7edf\u4e00\u8ba4\u8bc1 \u4e0e\u7edf\u4e00\u6388\u6743<\/h1>\n\n<h2 id=\"oauth2-0\">OAuth2.0<\/h2>\n\n<h2 id=\"openid-connect\">OpenID Connect<\/h2>\n","pubDate":"Tue, 20 Oct 2015 00:00:00 +0000","link":"https:\/\/poweryang1990.github.io\/2015-10-20\/sso\/","guid":"https:\/\/poweryang1990.github.io\/2015-10-20\/sso\/","category":["SSO","\u5355\u70b9",".Net"]},{"title":"\u516b\u79cd\u6392\u5e8f","description":"<div class=\"toc\"><\/div>\n\n<p><img src=\"http:\/\/my.csdn.net\/uploads\/201205\/12\/1336792573_1570.png\" alt=\"\u516b\u5927\u6392\u5e8f\"><\/p>\n\n<p><br\/> <\/p>\n\n<h2 id=\"1-\u76f4\u63a5\u63d2\u5165\u6392\u5e8f\">1.\u76f4\u63a5\u63d2\u5165\u6392\u5e8f<\/h2>\n\n<p>\u57fa\u672c\u601d\u60f3\uff1a\u5728\u8981\u6392\u5e8f\u7684\u4e00\u7ec4\u6570\u4e2d\uff0c\u5047\u8bbe\u524d\u9762(n-1) [n&gt;=2] \u4e2a\u6570\u5df2\u7ecf\u662f\u6392\u597d\u987a\u5e8f\u7684\uff0c\u73b0\u5728\u8981\u628a\u7b2cn\u4e2a\u6570\u63d2\u5230\u524d\u9762\u7684\u6709\u5e8f\u6570\u4e2d\uff0c\u4f7f\u5f97\u8fd9n\u4e2a\u6570\u4e5f\u662f\u6392\u597d\u987a\u5e8f\u7684\u3002\u5982\u6b64\u53cd\u590d\u5faa\u73af\uff0c\u76f4\u5230\u5168\u90e8\u6392\u597d\u987a\u5e8f\u3002<\/p>\n\n<p><img src=\"http:\/\/my.csdn.net\/uploads\/201205\/12\/1336792682_4218.png\" alt=\"\u63d2\u5165\u6392\u5e8f\"><\/p>\n<div class=\"highlight\"><pre><code class=\"language-java\" data-lang=\"java\"><span class=\"cm\">\/**\n * \u5f62\u8c61\u63cf\u8ff0:\u8e22\u9986\n * \u76f4\u63a5\u63d2\u5165\u6392\u5e8f(\u4ece\u5c0f\u5230\u5927)\n * @param src \u5f85\u6392\u5e8f\u7684\u6570\u7ec4\n *\/<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">straight_insertion_sort<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">){<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">;<\/span>\n    <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">src<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span><span class=\"o\">++)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"n\">tmp<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">i<\/span><span class=\"o\">];<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">j<\/span> <span class=\"o\">=<\/span> <span class=\"n\">i<\/span> <span class=\"o\">-<\/span> <span class=\"mi\">1<\/span><span class=\"o\">;<\/span>\n        <span class=\"c1\">\/\/\u5411\u524d\u5339\u914d,\u51e1\u662f\u6bd4\u81ea\u5df1\u5927\u7684\u90fd\u5f80\u540e\u79fb\u4e00\u4f4d,\u78b0\u5230\u4e0d\u6bd4\u81ea\u5df1\u5927\u7684\u76f4\u63a5\u8df3\u51fa<\/span>\n        <span class=\"k\">for<\/span> <span class=\"o\">(;<\/span> <span class=\"n\">j<\/span> <span class=\"o\">&gt;=<\/span> <span class=\"mi\">0<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">]<\/span> <span class=\"o\">;<\/span> <span class=\"n\">j<\/span><span class=\"o\">--)<\/span> <span class=\"o\">{<\/span>\n            <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">];<\/span>\n        <span class=\"o\">}<\/span>\n        <span class=\"c1\">\/\/j-1\u4f4d\u7f6e\u5339\u914d\u5931\u8d25,\u5728\u540e\u4e00\u4f4d\u63d2\u5165<\/span>\n        <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre><\/div>\n<p><br\/> <\/p>\n\n<h2 id=\"2-\u5e0c\u5c14\u6392\u5e8f-\u7f29\u5c0f\u589e\u91cf\u6392\u5e8f\">2.\u5e0c\u5c14\u6392\u5e8f(\u7f29\u5c0f\u589e\u91cf\u6392\u5e8f)<\/h2>\n\n<p>\u57fa\u672c\u601d\u60f3\uff1a\u7b97\u6cd5\u5148\u5c06\u8981\u6392\u5e8f\u7684\u4e00\u7ec4\u6570\u6309\u67d0\u4e2a\u589e\u91cfd\uff08n\/2,n\u4e3a\u8981\u6392\u5e8f\u6570\u7684\u4e2a\u6570\uff09\u5206\u6210\u82e5\u5e72\u7ec4\uff0c\u6bcf\u7ec4\u4e2d\u8bb0\u5f55\u7684\u4e0b\u6807\u76f8\u5deed.\u5bf9\u6bcf\u7ec4\u4e2d\u76f8\u540c\u4f4d\u7f6e\u7684\u5143\u7d20\u8fdb\u884c\u76f4\u63a5\u63d2\u5165\u6392\u5e8f\uff0c\u7136\u540e\u518d\u7528\u4e00\u4e2a\u8f83\u5c0f\u7684\u589e\u91cf\uff08d\/2\uff09\u5bf9\u5b83\u8fdb\u884c\u5206\u7ec4\uff0c\u518d\u5bf9\u6bcf\u7ec4\u4e2d\u76f8\u540c\u4f4d\u7f6e\u7684\u5143\u7d20\u8fdb\u884c\u76f4\u63a5\u63d2\u5165\u6392\u5e8f\u3002\u5f53\u589e\u91cf\u51cf\u52301\u65f6\uff0c\u8fdb\u884c\u76f4\u63a5\u63d2\u5165\u6392\u5e8f\u540e\uff0c\u6392\u5e8f\u5b8c\u6210\u3002<\/p>\n\n<p><img src=\"http:\/\/my.csdn.net\/uploads\/201205\/12\/1336792712_3691.png\" alt=\"\u5e0c\u5c14\u6392\u5e8f\"><\/p>\n<div class=\"highlight\"><pre><code class=\"language-java\" data-lang=\"java\"><span class=\"cm\">\/**\n * \u5e0c\u5c14\u6392\u5e8f(\u7f29\u5c0f\u589e\u91cf\u6392\u5e8f)(\u4ece\u5c0f\u5230\u5927)\n * @param src\n *\/<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">shell_sort<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">){<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">inc<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">;<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">;<\/span>\n    <span class=\"k\">while<\/span><span class=\"o\">(<\/span><span class=\"kc\">true<\/span><span class=\"o\">){<\/span>\n        <span class=\"n\">inc<\/span> <span class=\"o\">=<\/span> <span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">)<\/span><span class=\"n\">Math<\/span><span class=\"o\">.<\/span><span class=\"na\">ceil<\/span><span class=\"o\">(<\/span><span class=\"n\">inc<\/span><span class=\"o\">\/<\/span><span class=\"mi\">2<\/span><span class=\"o\">);<\/span><span class=\"c1\">\/\/\u589e\u91cf,\u4ea6\u5373\u6bcf\u7ec4\u957f\u5ea6<\/span>\n        <span class=\"c1\">\/\/\u904d\u5386\u6bcf\u7ec4\u8fdb\u884c\u6392\u5e8f\u7684\u5143\u7d20\u7d22\u5f15,\u5177\u4f53\u770b\u5185\u90e8\u6ce8\u91ca<\/span>\n        <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">x<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span> <span class=\"n\">x<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">inc<\/span><span class=\"o\">;<\/span> <span class=\"n\">x<\/span><span class=\"o\">++)<\/span> <span class=\"o\">{<\/span>\n            <span class=\"c1\">\/\/\u4ee5\u4e0b\u5185\u5bb9\u5373\u63d2\u5165\u6392\u5e8f,\u4f46\u662f\u641c\u7d22\u5934\u6b65\u8fdbinc,\u56de\u987e\u65f6\u6b65\u9000inc<\/span>\n            <span class=\"c1\">\/\/\u8fd9\u662f\u4e00\u4e2a\u6a21\u62df,\u53ef\u4ee5\u60f3\u8c61\u4e3a:\u5c06src\u5206\u7ec4,\u6bcf\u7ec4\u957f\u5ea6\u4e3ainc,\u7136\u540e\u5bf9\u6bcf\u7ec4\u7684\u7b2c0,1,2,3...\u4e2a\u5143\u7d20\u5206\u522b\u8fdb\u884c\u63d2\u5165\u6392\u5e8f<\/span>\n            <span class=\"c1\">\/\/\u5373:\u7b2c\u4e8c\u7ec4\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u4e0e\u7b2c\u4e00\u7ec4\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u8fdb\u884c\u63d2\u5165\u6392\u5e8f,\u7b2c\u4e09\u7ec4\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u4e0e\u7b2c\u4e00\u4e8c\u7ec4\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u8fdb\u884c\u63d2\u5165\u6392\u5e8f...<\/span>\n            <span class=\"c1\">\/\/   \u7b2c\u4e8c\u7ec4\u7684\u7b2c\u4e8c\u4e2a\u5143\u7d20\u4e0e\u7b2c\u4e00\u7ec4\u7684\u7b2c\u4e8c\u4e2a\u5143\u7d20\u8fdb\u884c\u63d2\u5165\u6392\u5e8f,\u7b2c\u4e09\u7ec4\u7684\u7b2c\u4e8c\u4e2a\u5143\u7d20\u4e0e\u7b2c\u4e00\u4e8c\u7ec4\u7684\u7b2c\u4e8c\u4e2a\u5143\u7d20\u8fdb\u884c\u63d2\u5165\u6392\u5e8f...<\/span>\n            <span class=\"c1\">\/\/   ...<\/span>\n            <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">i<\/span> <span class=\"o\">=<\/span> <span class=\"n\">x<\/span> <span class=\"o\">+<\/span> <span class=\"n\">inc<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">src<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span> <span class=\"o\">+=<\/span> <span class=\"n\">inc<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n                <span class=\"n\">tmp<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">i<\/span><span class=\"o\">];<\/span>\n                <span class=\"kt\">int<\/span> <span class=\"n\">j<\/span> <span class=\"o\">=<\/span> <span class=\"n\">i<\/span> <span class=\"o\">-<\/span> <span class=\"n\">inc<\/span><span class=\"o\">;<\/span>\n                <span class=\"k\">for<\/span> <span class=\"o\">(;<\/span> <span class=\"n\">j<\/span> <span class=\"o\">&gt;=<\/span> <span class=\"mi\">0<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">tmp<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">];<\/span> <span class=\"n\">j<\/span><span class=\"o\">-=<\/span><span class=\"n\">inc<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n                    <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span> <span class=\"o\">+<\/span> <span class=\"n\">inc<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">];<\/span>\n                <span class=\"o\">}<\/span>\n                <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span> <span class=\"o\">+<\/span> <span class=\"n\">inc<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">;<\/span>\n            <span class=\"o\">}<\/span>\n        <span class=\"o\">}<\/span>\n        <span class=\"c1\">\/\/\u4e0d\u5fc5\u62c5\u5fc3\u589e\u91cf\u4e3a1\u65f6\u4f1a\u5b8c\u5168\u7b49\u540c\u4e8e\u666e\u901a\u7684\u76f4\u63a5\u63d2\u5165\u6392\u5e8f,\u8fdb\u800c\u9020\u6210\u6027\u80fd\u95ee\u9898<\/span>\n        <span class=\"c1\">\/\/\u539f\u56e0:\u5728\u6392\u5e8f\u8fc7\u7a0b\u4e2d\u5339\u914d\u65f6\u9075\u5faa\"\u5c0f\u8005\u80dc,\u5927\u8005\u8ba9\"\u7684\u539f\u5219,\u56e0\u6b64\u5728\u641c\u7d22\u5934\u8fdb\u884c\u56de\u987e\u5339\u914d\u65f6,\u4f1a\u5f88\u5feb(1~2\u4e2a\u5143\u7d20\u5de6\u53f3)\u78b0\u4e0a\u4e0d\u4e45\u524d\u521a\u521a\u6253\u8d25\u8fc7\u81ea\u5df1\u7684\u5bf9\u624b.<\/span>\n        <span class=\"k\">if<\/span><span class=\"o\">(<\/span><span class=\"n\">inc<\/span> <span class=\"o\">==<\/span> <span class=\"mi\">1<\/span><span class=\"o\">){<\/span>\n            <span class=\"k\">break<\/span><span class=\"o\">;<\/span>\n        <span class=\"o\">}<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre><\/div>\n<p><br\/> <\/p>\n\n<h2 id=\"3-\u7b80\u5355\u9009\u62e9\u6392\u5e8f\">3.\u7b80\u5355\u9009\u62e9\u6392\u5e8f<\/h2>\n\n<p>\u57fa\u672c\u601d\u60f3\uff1a\u5728\u8981\u6392\u5e8f\u7684\u4e00\u7ec4\u6570\u4e2d\uff0c\u9009\u51fa\u6700\u5c0f\u7684\u4e00\u4e2a\u6570\u4e0e\u7b2c\u4e00\u4e2a\u4f4d\u7f6e\u7684\u6570\u4ea4\u6362\uff1b\u7136\u540e\u5728\u5269\u4e0b\u7684\u6570\u5f53\u4e2d\u518d\u627e\u6700\u5c0f\u7684\u4e0e\u7b2c\u4e8c\u4e2a\u4f4d\u7f6e\u7684\u6570\u4ea4\u6362\uff0c\u5982\u6b64\u5faa\u73af\u5230\u5012\u6570\u7b2c\u4e8c\u4e2a\u6570\u548c\u6700\u540e\u4e00\u4e2a\u6570\u6bd4\u8f83\u4e3a\u6b62\u3002<\/p>\n\n<p><img src=\"http:\/\/my.csdn.net\/uploads\/201205\/12\/1336793705_2932.png\" alt=\"\u7b80\u5355\u9009\u62e9\u6392\u5e8f\"><\/p>\n<div class=\"highlight\"><pre><code class=\"language-java\" data-lang=\"java\"><span class=\"cm\">\/**\n * \u7b80\u5355\u9009\u62e9\u6392\u5e8f(\u4ece\u5c0f\u5230\u5927)\n * @param src\n *\/<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">select_sort<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">){<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">pos<\/span><span class=\"o\">,<\/span><span class=\"n\">tmp<\/span><span class=\"o\">,<\/span><span class=\"n\">j<\/span><span class=\"o\">;<\/span> <span class=\"c1\">\/\/\u5b9a\u4e49\u6700\u5c0f\u503c\u7d22\u5f15,\u6700\u5c0f\u503c\u7f13\u5b58,\u6700\u5c0f\u503c\u68c0\u7d22\u8d77\u70b9\u7d22\u5f15<\/span>\n    <span class=\"c1\">\/\/\u5728\u6bcf\u4e2ai\u4f4d\u7f6e\u653e\u5165\u5408\u9002\u7684\u503c:i==0\u65f6\u653e\u6700\u5c0f\u503c;i==1\u65f6\u653e\u7b2c\u4e8c\u5c0f\u7684\u503c...<\/span>\n    <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">src<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span><span class=\"o\">++)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"c1\">\/\/\u5047\u5b9ai\u4f4d\u7f6e\u7684\u503c\u5c31\u662f\u5408\u9002\u7684\u503c<\/span>\n        <span class=\"n\">tmp<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">i<\/span><span class=\"o\">];<\/span>\n        <span class=\"n\">pos<\/span> <span class=\"o\">=<\/span> <span class=\"n\">i<\/span><span class=\"o\">;<\/span>\n        <span class=\"c1\">\/\/\u68c0\u7d22i\u4e4b\u540e\u7684\u6240\u6709\u5143\u7d20(\u524d\u9762\u7684\u5143\u7d20\u90fd\u6bd4i\u4f4d\u7f6e\u7684\u5c0f),\u627e\u5230\u4e00\u4e2a\u6700\u5c0f\u7684,\u4e0ei\u4f4d\u7f6e\u7684\u5143\u7d20\u6362\u4f4d<\/span>\n        <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"n\">j<\/span> <span class=\"o\">=<\/span> <span class=\"n\">i<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"o\">;<\/span> <span class=\"n\">j<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">src<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">;<\/span> <span class=\"n\">j<\/span><span class=\"o\">++)<\/span> <span class=\"o\">{<\/span>\n            <span class=\"k\">if<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">]<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">){<\/span>\n                <span class=\"n\">tmp<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">];<\/span>\n                <span class=\"n\">pos<\/span> <span class=\"o\">=<\/span> <span class=\"n\">j<\/span><span class=\"o\">;<\/span>\n            <span class=\"o\">}<\/span>\n        <span class=\"o\">}<\/span>\n        <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">pos<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">i<\/span><span class=\"o\">];<\/span>\n        <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">i<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre><\/div>\n<p><br\/> <\/p>\n\n<h2 id=\"4-\u5806\u6392\u5e8f\">4.\u5806\u6392\u5e8f<\/h2>\n\n<p>\u57fa\u672c\u601d\u60f3\uff1a\u6784\u5efa\u4e00\u4e2a\u5927\u9876\u5806\u5b8c\u5168\u4e8c\u53c9\u6811\uff0c\u6b64\u65f6\u6574\u4e2a\u4e8c\u53c9\u6811\u662f\u65e0\u5e8f\u7684\uff0c\u4e8c\u53c9\u6811\u4e2d\u7684\u65e0\u5e8f\u90e8\u5206\u79f0\u4e3a\u5806\uff0c\u5806\u9876\u4e3a\u6700\u5927\u503c\u3002\u5c06\u5806\u4e2d\u7684\u672b\u5c3e\u8282\u70b9\u4e0e\u5806\u9876\u8282\u70b9\u4e92\u6362\uff0c\u5c06\u521a\u6362\u5230\u672b\u5c3e\u7684\u8282\u70b9\u8e22\u51fa\u5806(\u521a\u88ab\u6362\u5230\u672b\u5c3e\u7684\u8282\u70b9\u4e0e\u4e4b\u524d\u88ab\u6362\u5230\u672b\u5c3e\u7684\u8282\u70b9\u4e4b\u95f4\u5c06\u662f\u6709\u5e8f\u7684)\uff0c\u8c03\u6574\u5269\u4f59\u8282\u70b9\uff0c\u4f7f\u5176\u6ee1\u8db3\u5927\u9876\u5806\u7684\u8981\u6c42\u3002\u4ee5\u6b64\u7c7b\u5806\uff0c\u6700\u540e\u5806\u5c06\u6d88\u5931\uff0c\u5f97\u5230\u4e00\u7ec4\u6b63\u5e8f\u6392\u5217\u7684\u8282\u70b9\u3002<\/p>\n\n<p>\u5efa\u5806\uff1a <\/p>\n\n<p><img src=\"http:\/\/my.csdn.net\/uploads\/201205\/12\/1336793950_6973.png\" alt=\"\u5806\u6392\u5e8f1\"><\/p>\n\n<p>\u4ea4\u6362\uff0c\u4ece\u5806\u4e2d\u8e22\u51fa\u6700\u5927\u6570<\/p>\n\n<p><img src=\"http:\/\/my.csdn.net\/uploads\/201205\/12\/1336793977_2095.png\" alt=\"\u5806\u6392\u5e8f2\"><\/p>\n\n<p>\u5269\u4f59\u7ed3\u70b9\u518d\u5efa\u5806\uff0c\u518d\u4ea4\u6362\u8e22\u51fa\u6700\u5927\u6570<\/p>\n\n<p><img src=\"http:\/\/my.csdn.net\/uploads\/201205\/12\/1336793996_7183.png\" alt=\"\u5806\u6392\u5e8f3\"><\/p>\n<div class=\"highlight\"><pre><code class=\"language-java\" data-lang=\"java\"><span class=\"cm\">\/**\n * \u8c03\u6574\u5806\n * @param src \u5b58\u653e\u8282\u70b9\u7684\u6570\u7ec4,\u8282\u70b9\u53f7\u4ece1\u5f00\u59cb\n * @param i \u8c03\u6574\u8d77\u70b9\u8282\u70b9\u53f7\n * @param size  \u6709\u6548\u8282\u70b9\u957f\u5ea6\n *\/<\/span>\n<span class=\"kd\">private<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">adjHeap<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"kt\">int<\/span> <span class=\"n\">i<\/span><span class=\"o\">,<\/span><span class=\"kt\">int<\/span> <span class=\"n\">size<\/span><span class=\"o\">){<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">lc<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">2<\/span><span class=\"o\">*<\/span><span class=\"n\">i<\/span><span class=\"o\">;<\/span><span class=\"c1\">\/\/\u5de6\u5b50\u8282\u70b9\u53f7<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">rc<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">2<\/span><span class=\"o\">*<\/span><span class=\"n\">i<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"o\">;<\/span><span class=\"c1\">\/\/\u53f3\u5b50\u8282\u70b9\u53f7<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">mx<\/span> <span class=\"o\">=<\/span> <span class=\"n\">i<\/span><span class=\"o\">;<\/span><span class=\"c1\">\/\/\u6700\u5927\u503c\u8282\u70b9\u53f7<\/span>\n    <span class=\"c1\">\/\/\u975e\u53f6\u8282\u70b9\u6700\u5927\u5e8f\u53f7\u4e3asize\/2<\/span>\n    <span class=\"k\">if<\/span><span class=\"o\">(<\/span><span class=\"n\">i<\/span><span class=\"o\">&lt;=<\/span><span class=\"n\">size<\/span><span class=\"o\">\/<\/span><span class=\"mi\">2<\/span><span class=\"o\">){<\/span>\n        <span class=\"c1\">\/\/\u5982\u679c\u5de6\u5b50\u8282\u70b9\u5b58\u5728\uff0c\u4e14\u5927\u4e8e\u6700\u5927\u8282\u70b9<\/span>\n        <span class=\"k\">if<\/span><span class=\"o\">(<\/span><span class=\"n\">lc<\/span><span class=\"o\">&lt;=<\/span><span class=\"n\">size<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">lc<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">]&gt;<\/span><span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">mx<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">]){<\/span>\n            <span class=\"n\">mx<\/span> <span class=\"o\">=<\/span> <span class=\"n\">lc<\/span><span class=\"o\">;<\/span>\n        <span class=\"o\">}<\/span>\n        <span class=\"c1\">\/\/\u5982\u679c\u53f3\u5b50\u8282\u70b9\u5b58\u5728\uff0c\u4e14\u5927\u4e8e\u6700\u5927\u8282\u70b9<\/span>\n        <span class=\"k\">if<\/span><span class=\"o\">(<\/span><span class=\"n\">rc<\/span><span class=\"o\">&lt;=<\/span><span class=\"n\">size<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">rc<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">]&gt;<\/span><span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">mx<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">]){<\/span>\n            <span class=\"n\">mx<\/span> <span class=\"o\">=<\/span> <span class=\"n\">rc<\/span><span class=\"o\">;<\/span>\n        <span class=\"o\">}<\/span>\n        <span class=\"c1\">\/\/\u8868\u793a\u8282\u70b9\u5173\u7cfb\u9700\u8981\u53d8\u5316<\/span>\n        <span class=\"k\">if<\/span><span class=\"o\">(<\/span><span class=\"n\">mx<\/span><span class=\"o\">!=<\/span><span class=\"n\">i<\/span><span class=\"o\">){<\/span>\n            <span class=\"n\">swap<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"n\">mx<\/span><span class=\"o\">,<\/span><span class=\"n\">i<\/span><span class=\"o\">);<\/span>\n            <span class=\"n\">adjHeap<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"n\">mx<\/span><span class=\"o\">,<\/span><span class=\"n\">size<\/span><span class=\"o\">);<\/span>\n        <span class=\"o\">}<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"cm\">\/**\n * \u4ea4\u6362\u8282\u70b9\n * @param src \u5b58\u653e\u8282\u70b9\u7684\u6570\u7ec4,\u8282\u70b9\u53f7\u4ece1\u5f00\u59cb\n * @param p \u524d\u4e00\u4e2a\u8282\u70b9\u53f7\n * @param n \u540e\u4e00\u4e2a\u8282\u70b9\u53f7\n *\/<\/span>\n<span class=\"kd\">private<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">swap<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"kt\">int<\/span> <span class=\"n\">p<\/span><span class=\"o\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">n<\/span><span class=\"o\">){<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">tmp<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">p<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">];<\/span>\n    <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">p<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">n<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">];<\/span>\n    <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">n<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">;<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"cm\">\/**\n * \u521b\u5efa\u521d\u59cb\u5806\n * @param src \u5b58\u653e\u8282\u70b9\u7684\u6570\u7ec4,\u8282\u70b9\u53f7\u4ece1\u5f00\u59cb\n * @param size \u6709\u6548\u8282\u70b9\u957f\u5ea6\n *\/<\/span>\n<span class=\"kd\">private<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">buildHeap<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">size<\/span><span class=\"o\">){<\/span>\n    <span class=\"k\">for<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"n\">size<\/span><span class=\"o\">\/<\/span><span class=\"mi\">2<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span><span class=\"o\">&gt;=<\/span><span class=\"mi\">1<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span><span class=\"o\">--){<\/span>\n        <span class=\"n\">adjHeap<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"n\">i<\/span><span class=\"o\">,<\/span><span class=\"n\">size<\/span><span class=\"o\">);<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"cm\">\/**\n * \u6700\u5927\u5806\u6392\u5e8f(\u4ece\u5c0f\u5230\u5927)\n * @param src\n *\/<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">heap_sort<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">){<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">size<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">;<\/span>\n    <span class=\"n\">buildHeap<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"n\">size<\/span><span class=\"o\">);<\/span>\n    <span class=\"k\">for<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">i<\/span><span class=\"o\">=<\/span><span class=\"n\">size<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span><span class=\"o\">&gt;=<\/span><span class=\"mi\">1<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span><span class=\"o\">--){<\/span>\n        <span class=\"n\">swap<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"mi\">1<\/span><span class=\"o\">,<\/span><span class=\"n\">i<\/span><span class=\"o\">);<\/span>\n        <span class=\"n\">adjHeap<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"mi\">1<\/span><span class=\"o\">,<\/span><span class=\"n\">i<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">);<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre><\/div>\n<p><br\/> <\/p>\n\n<h2 id=\"5-\u5192\u6ce1\u6392\u5e8f\">5.\u5192\u6ce1\u6392\u5e8f<\/h2>\n\n<p>\u57fa\u672c\u601d\u60f3\uff1a\u5728\u8981\u6392\u5e8f\u7684\u4e00\u7ec4\u6570\u4e2d\uff0c\u5bf9\u5f53\u524d\u8fd8\u672a\u6392\u597d\u5e8f\u7684\u8303\u56f4\u5185\u7684\u5168\u90e8\u6570\uff0c\u7531\u59cb\u81f3\u7ec8\u5bf9\u76f8\u90bb\u7684\u4e24\u4e2a\u6570\u4f9d\u6b21\u8fdb\u884c\u6bd4\u8f83\u548c\u8c03\u6574\uff0c\u8ba9\u8f83\u5927\u7684\u6570\u5f80\u4e0b\u6c89\uff0c\u8f83\u5c0f\u7684\u5f80\u4e0a\u5192\u3002<\/p>\n\n<p><img src=\"http:\/\/my.csdn.net\/uploads\/201205\/12\/1336807392_9769.png\" alt=\"\u5192\u6ce1\u6392\u5e8f\"><\/p>\n<div class=\"highlight\"><pre><code class=\"language-java\" data-lang=\"java\"><span class=\"cm\">\/**\n * \u5192\u6ce1\u6392\u5e8f(\u4ece\u5c0f\u5230\u5927)\n * @param src\n *\/<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">bubble_sort<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">){<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">;<\/span>\n    <span class=\"c1\">\/\/\u79fb\u52a8\u6d4b\u5934<\/span>\n    <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">src<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span><span class=\"o\">++)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"c1\">\/\/\u4ece\u6d4b\u5934\u5411\u524d\u63a8\u8fdb,\u82e5\u76f8\u90bb\u5143\u7d20\u524d\u8005\u5927\u4e8e\u540e\u8005\uff0c\u5219\u4e24\u8005\u6362\u4f4d<\/span>\n        <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">j<\/span> <span class=\"o\">=<\/span> <span class=\"n\">i<\/span><span class=\"o\">;<\/span> <span class=\"n\">j<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span> <span class=\"n\">j<\/span><span class=\"o\">--)<\/span> <span class=\"o\">{<\/span>\n            <span class=\"k\">if<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">]<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">]){<\/span>\n                <span class=\"n\">tmp<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">];<\/span>\n                <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">];<\/span>\n                <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">;<\/span>\n            <span class=\"o\">}<\/span>\n        <span class=\"o\">}<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre><\/div>\n<p><br\/> <\/p>\n\n<h2 id=\"6-\u5feb\u901f\u6392\u5e8f\">6.\u5feb\u901f\u6392\u5e8f<\/h2>\n\n<p>\u57fa\u672c\u601d\u60f3\uff1a\u9009\u62e9\u4e00\u4e2a\u57fa\u51c6\u5143\u7d20,\u901a\u5e38\u9009\u62e9\u7b2c\u4e00\u4e2a\u5143\u7d20\u6216\u8005\u6700\u540e\u4e00\u4e2a\u5143\u7d20,\u901a\u8fc7\u4e00\u8d9f\u626b\u63cf\uff0c\u5c06\u5f85\u6392\u5e8f\u5217\u5206\u6210\u4e24\u90e8\u5206,\u4e00\u90e8\u5206\u6bd4\u57fa\u51c6\u5143\u7d20\u5c0f,\u4e00\u90e8\u5206\u5927\u4e8e\u7b49\u4e8e\u57fa\u51c6\u5143\u7d20,\u6b64\u65f6\u57fa\u51c6\u5143\u7d20\u5728\u5176\u6392\u597d\u5e8f\u540e\u7684\u6b63\u786e\u4f4d\u7f6e,\u7136\u540e\u518d\u7528\u540c\u6837\u7684\u65b9\u6cd5\u9012\u5f52\u5730\u6392\u5e8f\u5212\u5206\u7684\u4e24\u90e8\u5206\u3002<\/p>\n\n<p><img src=\"http:\/\/my.csdn.net\/uploads\/201205\/12\/1336807447_1275.png\" alt=\"\u5feb\u901f\u6392\u5e8f\"><\/p>\n<div class=\"highlight\"><pre><code class=\"language-java\" data-lang=\"java\"><span class=\"cm\">\/**\n * \u5feb\u901f\u6392\u5e8f(\u4ece\u5c0f\u5230\u5927)\n * @param src\n *\/<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">quick_sort<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">){<\/span>\n    <span class=\"n\">doSort<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"mi\">0<\/span><span class=\"o\">,<\/span><span class=\"n\">src<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">);<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"cm\">\/**\n * @param src \u6570\u7ec4\u5bf9\u8c61\n * @param bi \u6709\u6548\u4f4d\u5f00\u5934\n * @param ei \u6709\u6548\u4f4d\u7ed3\u5c3e\n * @return\n *\/<\/span>\n<span class=\"kd\">private<\/span> <span class=\"kt\">int<\/span> <span class=\"nf\">getMiddle<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">bi<\/span><span class=\"o\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">ei<\/span><span class=\"o\">){<\/span>\n    <span class=\"c1\">\/\/\u7f13\u5b58\u5f00\u5934\u7684\u5143\u7d20\u4f5c\u4e3a\u4e2d\u8f74<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">tmp<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">bi<\/span><span class=\"o\">];<\/span>\n    <span class=\"k\">while<\/span><span class=\"o\">(<\/span><span class=\"n\">bi<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">ei<\/span><span class=\"o\">){<\/span>\n        <span class=\"c1\">\/\/\u4ece\u53f3\u5411\u5de6\u5f00\u59cb\u5bf9\u6bd4\uff0c\u4e0d\u6bd4\u4e2d\u8f74\u5c0f\u7684\u5143\u7d20\u8df3\u8fc7\uff0c\u5e76\u7ee7\u7eed\u5411\u5de6\u63a8\u8fdb<\/span>\n        <span class=\"k\">while<\/span><span class=\"o\">(<\/span><span class=\"n\">bi<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">ei<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">ei<\/span><span class=\"o\">]<\/span> <span class=\"o\">&gt;=<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">){<\/span>\n            <span class=\"n\">ei<\/span><span class=\"o\">--;<\/span>\n        <span class=\"o\">}<\/span>\n        <span class=\"c1\">\/\/\u80fd\u591f\u6267\u884c\u5230\u8fd9\u91cc\uff0c\u8868\u793asrc[ei]&lt;tmp\uff0c\u90a3\u4e48ei\u4f4d\u5143\u7d20\u5e94\u8be5\u88ab\u653e\u5230tmp\u5143\u7d20\u5de6\u8fb9\uff0c<\/span>\n        <span class=\"c1\">\/\/\u4f46\u662ftmp\u5de6\u8fb9\u53ef\u80fd\u6709\u591a\u4e2a\u5143\u7d20\uff0c\u8be5\u653e\u5728\u4ec0\u4e48\u4f4d\u7f6e\u6682\u65f6\u672a\u77e5\uff0c\u5148\u653e\u5728\u4f4e\u4e8etmp\u7684\u5143\u7d20\u533a\u7684\u5f00\u5934\u5373bi\u4f4d<\/span>\n        <span class=\"c1\">\/\/bi\u4f4d\u5143\u7d20\u5df2\u7f13\u5b58\u4e3atmp\uff0c\u4e0d\u4f1a\u4e22\u5931<\/span>\n        <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">bi<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">ei<\/span><span class=\"o\">];<\/span>\n        <span class=\"c1\">\/\/\u4ece\u5de6\u5411\u53f3\u5f00\u59cb\u5bf9\u6bd4\uff0c\u4e0d\u6bd4\u4e2d\u8f74\u5927\u7684\u5143\u7d20\u8df3\u8fc7\uff0c\u5e76\u7ee7\u7eed\u5411\u53f3\u63a8\u8fdb<\/span>\n        <span class=\"k\">while<\/span><span class=\"o\">(<\/span><span class=\"n\">bi<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">ei<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">bi<\/span><span class=\"o\">]<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">){<\/span>\n            <span class=\"n\">bi<\/span><span class=\"o\">++;<\/span>\n        <span class=\"o\">}<\/span>\n        <span class=\"c1\">\/\/\u539f\u7406\u540c\u4e0a\uff0cei\u4f4d\u5143\u7d20\u5728\u4e4b\u524d\u5df2\u7ecf\u590d\u5236\u5230bi\u4f4d\uff0cei\u4f4d\u5df2\u7ecf\u6ca1\u6709\u610f\u4e49\u4e86<\/span>\n        <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">ei<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">bi<\/span><span class=\"o\">];<\/span>\n    <span class=\"o\">}<\/span>\n    <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">bi<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">;<\/span>\n    <span class=\"k\">return<\/span> <span class=\"n\">bi<\/span><span class=\"o\">;<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"cm\">\/**\n * @param src \u6570\u7ec4\u5bf9\u8c61\n * @param bi \u6709\u6548\u4f4d\u5f00\u5934\n * @param ei \u6709\u6548\u4f4d\u7ed3\u5c3e\n *\/<\/span>\n<span class=\"kd\">private<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">doSort<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">bi<\/span><span class=\"o\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">ei<\/span><span class=\"o\">){<\/span>\n    <span class=\"k\">if<\/span><span class=\"o\">(<\/span><span class=\"n\">bi<\/span> <span class=\"o\">&gt;=<\/span> <span class=\"n\">ei<\/span><span class=\"o\">)<\/span> <span class=\"k\">return<\/span><span class=\"o\">;<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">mid<\/span> <span class=\"o\">=<\/span> <span class=\"n\">getMiddle<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"n\">bi<\/span><span class=\"o\">,<\/span><span class=\"n\">ei<\/span><span class=\"o\">);<\/span>\n    <span class=\"n\">doSort<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"n\">bi<\/span><span class=\"o\">,<\/span><span class=\"n\">mid<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">);<\/span>\n    <span class=\"n\">doSort<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"n\">mid<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"o\">,<\/span><span class=\"n\">ei<\/span><span class=\"o\">);<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre><\/div>\n<p><br\/> <\/p>\n\n<h2 id=\"7-\u5f52\u5e76\u6392\u5e8f\">7.\u5f52\u5e76\u6392\u5e8f<\/h2>\n\n<p>\u57fa\u672c\u601d\u60f3\uff1a\u5f52\u5e76\u6392\u5e8f\u6cd5\u662f\u5c06\u4e24\u4e2a\u4ee5\u4e0a\u6709\u5e8f\u8868\u5408\u5e76\u6210\u4e00\u4e2a\u65b0\u7684\u6709\u5e8f\u8868\uff0c\u5373\u628a\u5f85\u6392\u5e8f\u5e8f\u5217\u5206\u4e3a\u82e5\u5e72\u4e2a\u5b50\u5e8f\u5217\uff0c\u6bcf\u4e2a\u5b50\u5e8f\u5217\u662f\u6709\u5e8f\u7684\u3002\u7136\u540e\u518d\u628a\u6709\u5e8f\u5b50\u5e8f\u5217\u5408\u5e76\u4e3a\u6574\u4f53\u6709\u5e8f\u5e8f\u5217<\/p>\n\n<p><img src=\"http:\/\/my.csdn.net\/uploads\/201205\/12\/1336807959_9188.png\" alt=\"\u5f52\u5e76\u6392\u5e8f\"><\/p>\n<div class=\"highlight\"><pre><code class=\"language-java\" data-lang=\"java\"><span class=\"cm\">\/**\n * @param src \u6570\u7ec4\u5bf9\u8c61\n * @param bi \u6709\u6548\u4f4d\u5f00\u5934\n * @param ei \u6709\u6548\u4f4d\u7ed3\u5c3e\n *\/<\/span>\n<span class=\"kd\">private<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">doSort<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">bi<\/span><span class=\"o\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">ei<\/span><span class=\"o\">){<\/span>\n    <span class=\"k\">if<\/span><span class=\"o\">(<\/span><span class=\"n\">bi<\/span> <span class=\"o\">&gt;=<\/span> <span class=\"n\">ei<\/span><span class=\"o\">)<\/span> <span class=\"k\">return<\/span><span class=\"o\">;<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">mid<\/span> <span class=\"o\">=<\/span> <span class=\"o\">(<\/span><span class=\"n\">bi<\/span> <span class=\"o\">+<\/span> <span class=\"n\">ei<\/span><span class=\"o\">)\/<\/span><span class=\"mi\">2<\/span><span class=\"o\">;<\/span>\n    <span class=\"n\">doSort<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span> <span class=\"n\">bi<\/span><span class=\"o\">,<\/span> <span class=\"n\">mid<\/span><span class=\"o\">);<\/span>\n    <span class=\"n\">doSort<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span> <span class=\"n\">mid<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"o\">,<\/span> <span class=\"n\">ei<\/span><span class=\"o\">);<\/span>\n    <span class=\"n\">merge<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span> <span class=\"n\">bi<\/span><span class=\"o\">,<\/span> <span class=\"n\">mid<\/span><span class=\"o\">,<\/span> <span class=\"n\">ei<\/span><span class=\"o\">);<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"cm\">\/**\n * @param src \u6570\u7ec4\u5bf9\u8c61\n * @param bi \u6709\u6548\u4f4d\u5f00\u5934\n * @param mid \u6709\u6548\u4f4d\u4e2d\u70b9\n * @param ei \u6709\u6548\u4f4d\u7ed3\u5c3e\n *\/<\/span>\n<span class=\"kd\">private<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">merge<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">bi<\/span><span class=\"o\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">mid<\/span><span class=\"o\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">ei<\/span><span class=\"o\">){<\/span>\n    <span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">tmp<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"kt\">int<\/span><span class=\"o\">[<\/span><span class=\"n\">ei<\/span><span class=\"o\">-<\/span><span class=\"n\">bi<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"o\">];<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">ti<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span> <span class=\"c1\">\/\/tmp\u6570\u7ec4\u7684\u7d22\u5f15<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">fbi<\/span> <span class=\"o\">=<\/span> <span class=\"n\">bi<\/span><span class=\"o\">;<\/span> <span class=\"c1\">\/\/\u524d\u534a\u6bb5\u7684\u8d77\u70b9<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">bbi<\/span> <span class=\"o\">=<\/span> <span class=\"n\">mid<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"o\">;<\/span><span class=\"c1\">\/\/\u540e\u534a\u6bb5\u7684\u8d77\u70b9<\/span>\n    <span class=\"k\">while<\/span> <span class=\"o\">(<\/span><span class=\"n\">fbi<\/span><span class=\"o\">&lt;=<\/span><span class=\"n\">mid<\/span><span class=\"o\">&amp;&amp;<\/span><span class=\"n\">bbi<\/span><span class=\"o\">&lt;=<\/span><span class=\"n\">ei<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">if<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">fbi<\/span><span class=\"o\">]<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">bbi<\/span><span class=\"o\">]){<\/span>\n            <span class=\"c1\">\/\/\u66f4\u5c0f\u7684\u5143\u7d20\u5c06\u5148\u88ab\u653e\u5165tmp\uff0c\u7136\u540e\u518d\u5bf9\u6bd4\u4e0b\u4e00\u4e2a<\/span>\n            <span class=\"c1\">\/\/\u56e0\u4e3a\u662f\u9012\u5f52\u65b9\u6cd5\uff0c\u6240\u4ee5\u524d\u534a\u6bb5\u662f\u6709\u5e8f\u7684\uff0c\u540e\u534a\u6bb5\u4e5f\u662f\u6709\u5e8f\u7684\uff0c<\/span>\n            <span class=\"c1\">\/\/\u6240\u4ee5\u524d\u534a\u6bb5\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u6bd4\u540e\u534a\u6bb5\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u5c0f\uff0c\u90a3\u4e48\u524d\u534a\u6bb5\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u4e00\u5b9a\u662f\u6700\u5c0f\u7684<\/span>\n            <span class=\"c1\">\/\/\u6bd4\u8f83\u5927\u5c0f\u5f80tmp\u4e2d\u63d2\u5165\u7684\u8fc7\u7a0b\u5176\u5b9e\u7c7b\u4f3c\u9009\u62e9\u6392\u5e8f+\u5e0c\u5c14\u6392\u5e8f<\/span>\n            <span class=\"n\">tmp<\/span><span class=\"o\">[<\/span><span class=\"n\">ti<\/span><span class=\"o\">++]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">fbi<\/span><span class=\"o\">++];<\/span>\n        <span class=\"o\">}<\/span><span class=\"k\">else<\/span><span class=\"o\">{<\/span>\n            <span class=\"n\">tmp<\/span><span class=\"o\">[<\/span><span class=\"n\">ti<\/span><span class=\"o\">++]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">bbi<\/span><span class=\"o\">++];<\/span>\n        <span class=\"o\">}<\/span>\n    <span class=\"o\">}<\/span>\n    <span class=\"c1\">\/\/\u6709\u5e8f\u5143\u7d20\u653e\u5165tmp\u540e,\u524d\u534a\u6bb5\u7684\u6e38\u6807\u53ef\u80fd\u6ca1\u6709\u5230\u5934(\u56e0\u4e3a\u540e\u534a\u6bb5\u7684\u53ef\u80fd\u5148\u5230\u5934\u4e86)<\/span>\n    <span class=\"k\">while<\/span> <span class=\"o\">(<\/span><span class=\"n\">fbi<\/span><span class=\"o\">&lt;=<\/span><span class=\"n\">mid<\/span><span class=\"o\">){<\/span>\n        <span class=\"n\">tmp<\/span><span class=\"o\">[<\/span><span class=\"n\">ti<\/span><span class=\"o\">++]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">fbi<\/span><span class=\"o\">++];<\/span>\n    <span class=\"o\">}<\/span>\n    <span class=\"c1\">\/\/\u6709\u5e8f\u5143\u7d20\u653e\u5165tmp\u540e,\u540e\u534a\u6bb5\u7684\u6e38\u6807\u53ef\u80fd\u6ca1\u6709\u5230\u5934(\u56e0\u4e3a\u524d\u534a\u6bb5\u7684\u53ef\u80fd\u5148\u5230\u5934\u4e86)<\/span>\n    <span class=\"k\">while<\/span> <span class=\"o\">(<\/span><span class=\"n\">bbi<\/span><span class=\"o\">&lt;=<\/span><span class=\"n\">ei<\/span><span class=\"o\">){<\/span>\n        <span class=\"n\">tmp<\/span><span class=\"o\">[<\/span><span class=\"n\">ti<\/span><span class=\"o\">++]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">bbi<\/span><span class=\"o\">++];<\/span>\n    <span class=\"o\">}<\/span>\n    <span class=\"c1\">\/\/\u7528tmp\u4e2d\u6392\u597d\u5e8f\u7684\u5143\u7d20\u66ff\u6362\u6389src\u4e2d\u6307\u5b9a\u8303\u56f4\u7684\u5143\u7d20<\/span>\n    <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"n\">ti<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span> <span class=\"n\">ti<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">;<\/span> <span class=\"n\">ti<\/span><span class=\"o\">++)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">bi<\/span><span class=\"o\">+<\/span><span class=\"n\">ti<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">tmp<\/span><span class=\"o\">[<\/span><span class=\"n\">ti<\/span><span class=\"o\">];<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"kd\">public<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">merge_sort<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">){<\/span>\n    <span class=\"n\">doSort<\/span><span class=\"o\">(<\/span><span class=\"n\">src<\/span><span class=\"o\">,<\/span><span class=\"mi\">0<\/span><span class=\"o\">,<\/span><span class=\"n\">src<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">-<\/span><span class=\"mi\">1<\/span><span class=\"o\">);<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre><\/div>\n<p><br\/> <\/p>\n\n<h2 id=\"8-\u57fa\u6570\u6392\u5e8f\">8.\u57fa\u6570\u6392\u5e8f<\/h2>\n\n<p>\u57fa\u672c\u601d\u60f3:\u521b\u5efa0-9\u5341\u4e2a\u5bb9\u5668,\u5bf9\u6570\u7ec4\u4e2d\u6bcf\u4e2a\u6570\u53d6\u5176\u76f8\u540c\u4f4d\u7684\u6570\u5b57,\u5c06\u6570\u7ec4\u5143\u7d20\u653e\u5165\u5230\u5bf9\u5e94\u7684\u5bb9\u5668\u4e2d,\u7136\u540e\u6309\u5bb9\u5668\u987a\u5e8f\u4ece\u5bb9\u5668\u4e2d\u53d6\u51fa\u653e\u56de\u6570\u7ec4,\u4ee5\u6b64\u7c7b\u63a8\u5f53\u4f4d\u6570\u9012\u589e\u5230\u6700\u5927\u6570\u7684\u4f4d\u5bbd\u65f6,\u6392\u5e8f\u5b8c\u6210<\/p>\n\n<p><img src=\"http:\/\/my.csdn.net\/uploads\/201205\/12\/1336807988_2428.png\" alt=\"\u57fa\u6570\u6392\u5e8f\"><\/p>\n<div class=\"highlight\"><pre><code class=\"language-java\" data-lang=\"java\"><span class=\"kd\">public<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">radix_sort<\/span><span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">src<\/span><span class=\"o\">){<\/span>\n    <span class=\"c1\">\/\/\u53d6\u6700\u5927\u503c<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">max<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">];<\/span>\n    <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">src<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span><span class=\"o\">++)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"n\">max<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">i<\/span><span class=\"o\">]<\/span> <span class=\"o\">&gt;<\/span> <span class=\"n\">max<\/span> <span class=\"o\">?<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">i<\/span><span class=\"o\">]<\/span> <span class=\"o\">:<\/span> <span class=\"n\">max<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n    <span class=\"c1\">\/\/\u53d6\u6700\u5927\u503c\u7684\u4f4d\u6570<\/span>\n    <span class=\"kt\">int<\/span> <span class=\"n\">w<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span>\n    <span class=\"k\">while<\/span> <span class=\"o\">(<\/span><span class=\"n\">max<\/span><span class=\"o\">&gt;<\/span><span class=\"mi\">0<\/span><span class=\"o\">){<\/span>\n        <span class=\"n\">max<\/span><span class=\"o\">\/=<\/span><span class=\"mi\">10<\/span><span class=\"o\">;<\/span>\n        <span class=\"n\">w<\/span><span class=\"o\">++;<\/span>\n    <span class=\"o\">}<\/span>\n    <span class=\"c1\">\/\/\u521b\u5efa\u5341\u4e2a\u961f\u5217,\u7528\u4e8c\u7ef4\u6570\u7ec4\u6a21\u62df<\/span>\n    <span class=\"kt\">int<\/span><span class=\"o\">[][]<\/span> <span class=\"n\">bkt<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"kt\">int<\/span><span class=\"o\">[<\/span><span class=\"mi\">10<\/span><span class=\"o\">][<\/span><span class=\"n\">src<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">];<\/span>\n\n    <span class=\"c1\">\/\/\u8bb0\u5f55\u6bcf\u4e2abkt\u961f\u5217\u4e2d\u6709\u51e0\u4e2asrc\u5143\u7d20<\/span>\n    <span class=\"kt\">int<\/span><span class=\"o\">[]<\/span> <span class=\"n\">cm<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"kt\">int<\/span><span class=\"o\">[<\/span><span class=\"mi\">10<\/span><span class=\"o\">];<\/span>\n\n    <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">i<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">w<\/span><span class=\"o\">;<\/span> <span class=\"n\">i<\/span><span class=\"o\">++)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"c1\">\/\/\u904d\u5386\u5143\u7d20\uff0c\u6309\u5143\u7d20\u7684\u7b2ci\u4f4d\u6570\u503c\u5206\u7c7b\u6392\u653e<\/span>\n        <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">j<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span> <span class=\"n\">j<\/span> <span class=\"o\">&lt;<\/span> <span class=\"n\">src<\/span><span class=\"o\">.<\/span><span class=\"na\">length<\/span><span class=\"o\">;<\/span> <span class=\"n\">j<\/span><span class=\"o\">++)<\/span> <span class=\"o\">{<\/span>\n            <span class=\"kt\">int<\/span> <span class=\"n\">item<\/span> <span class=\"o\">=<\/span> <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">];<\/span>\n            <span class=\"c1\">\/\/\u6c42src\u4e2d\u7b2cj(\u4ece0\u5f00\u59cb)\u4e2a\u5143\u7d20\u7684\u7b2ci(\u4ece0\u5f00\u59cb)\u4f4d\u6570\u5b57<\/span>\n            <span class=\"c1\">\/\/\u4f8b\u5982987\u7684\u7b2c1\u4f4d\u6570\u5b57\u662f(987%100)\/10<\/span>\n            <span class=\"kt\">int<\/span> <span class=\"n\">l<\/span> <span class=\"o\">=<\/span> <span class=\"o\">(<\/span><span class=\"n\">item<\/span> <span class=\"o\">%<\/span> <span class=\"o\">(<\/span><span class=\"kt\">int<\/span><span class=\"o\">)<\/span><span class=\"n\">Math<\/span><span class=\"o\">.<\/span><span class=\"na\">pow<\/span><span class=\"o\">(<\/span><span class=\"mi\">10<\/span><span class=\"o\">,<\/span><span class=\"n\">i<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"o\">))\/(<\/span><span class=\"kt\">int<\/span><span class=\"o\">)<\/span><span class=\"n\">Math<\/span><span class=\"o\">.<\/span><span class=\"na\">pow<\/span><span class=\"o\">(<\/span><span class=\"mi\">10<\/span><span class=\"o\">,<\/span><span class=\"n\">i<\/span><span class=\"o\">);<\/span>\n            <span class=\"c1\">\/\/bkt\u7b2cl\u4e2a\u961f\u5217\u53ef\u80fd\u6709\u591a\u4e2a\u6570\u636e,\u7528\u73b0\u6709\u7684\u6570\u91cf\u8868\u793a\u4f4d\u7f6e<\/span>\n            <span class=\"n\">bkt<\/span><span class=\"o\">[<\/span><span class=\"n\">l<\/span><span class=\"o\">][<\/span><span class=\"n\">cm<\/span><span class=\"o\">[<\/span><span class=\"n\">l<\/span><span class=\"o\">]]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">item<\/span><span class=\"o\">;<\/span>\n            <span class=\"c1\">\/\/\u4f4d\u7f6e\u540e\u79fb1\u4f4d<\/span>\n            <span class=\"n\">cm<\/span><span class=\"o\">[<\/span><span class=\"n\">l<\/span><span class=\"o\">]<\/span> <span class=\"o\">+=<\/span> <span class=\"mi\">1<\/span><span class=\"o\">;<\/span>\n        <span class=\"o\">}<\/span>\n        <span class=\"c1\">\/\/\u91cd\u65b0\u53d6\u51fa\u653e\u56desrc<\/span>\n        <span class=\"c1\">\/\/\u8bb0\u5f55\u5df2\u7ecf\u53d6\u51fa\u7684\u4e2a\u6570<\/span>\n        <span class=\"kt\">int<\/span> <span class=\"n\">count<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span>\n        <span class=\"k\">for<\/span> <span class=\"o\">(<\/span><span class=\"kt\">int<\/span> <span class=\"n\">j<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">;<\/span> <span class=\"n\">j<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mi\">10<\/span><span class=\"o\">;<\/span> <span class=\"n\">j<\/span><span class=\"o\">++)<\/span> <span class=\"o\">{<\/span>\n            <span class=\"c1\">\/\/\u7b2ci\u4f4d\u4e3aj\u7684\u5143\u7d20\u7684\u4e2a\u6570<\/span>\n            <span class=\"kt\">int<\/span> <span class=\"n\">cml<\/span> <span class=\"o\">=<\/span> <span class=\"n\">cm<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">];<\/span>\n            <span class=\"k\">while<\/span> <span class=\"o\">(<\/span><span class=\"n\">cm<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">]<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span><span class=\"o\">){<\/span>\n                <span class=\"c1\">\/\/j\u4ece\u5c0f\u5230\u5927\u9012\u589e,\u8fd9\u6837\u53d6\u6570\u636e\u5c06\u4f7fsrc\u5177\u6709\u9012\u589e\u8d8b\u52bf<\/span>\n                <span class=\"c1\">\/\/\u5c06\u8fd9\u6837\u7684\u5143\u7d20\u5b58\u5165bkt,\u5c06\u4f7fbkt\u4e2d\u6bcf\u4e2a\u961f\u5217\u90fd\u5177\u6709\u9012\u589e\u8d8b\u52bf<\/span>\n                <span class=\"c1\">\/\/\u4e3a\u4e86\u4e0d\u7834\u6362\u8fd9\u6837\u7684\u8d8b\u52bf,\u5c06\u9700\u8981\u4ece\u6bcf\u4e2abkt\u961f\u5217\u7684\u5f00\u5934\u5f00\u59cb\u53d6\u6570\u636e<\/span>\n                <span class=\"n\">src<\/span><span class=\"o\">[<\/span><span class=\"n\">count<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">bkt<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">][<\/span><span class=\"n\">cml<\/span><span class=\"o\">-<\/span><span class=\"n\">cm<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">]];<\/span>\n                <span class=\"c1\">\/\/\u51cf\u53bb\u4e00\u4e2a\u5143\u7d20<\/span>\n                <span class=\"n\">cm<\/span><span class=\"o\">[<\/span><span class=\"n\">j<\/span><span class=\"o\">]<\/span> <span class=\"o\">-=<\/span> <span class=\"mi\">1<\/span><span class=\"o\">;<\/span>\n                <span class=\"n\">count<\/span><span class=\"o\">++;<\/span>\n            <span class=\"o\">}<\/span>\n        <span class=\"o\">}<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre><\/div>","pubDate":"Fri, 19 Sep 2014 00:00:00 +0000","link":"https:\/\/poweryang1990.github.io\/2014-09-19\/sort\/","guid":"https:\/\/poweryang1990.github.io\/2014-09-19\/sort\/","category":["\u7b97\u6cd5","algorithm","\u6392\u5e8f","algorithm"]}]}}