diff --git "a/Hexo\346\220\255\345\273\272\345\215\232\345\256\242.md" "b/Hexo\346\220\255\345\273\272\345\215\232\345\256\242.md" new file mode 100644 index 0000000..624ef13 --- /dev/null +++ "b/Hexo\346\220\255\345\273\272\345\215\232\345\256\242.md" @@ -0,0 +1,2 @@ +# Hexo搭建博客 + diff --git "a/Java8\347\263\273\345\210\227.md" "b/Java8\347\263\273\345\210\227.md" new file mode 100644 index 0000000..e0b069a --- /dev/null +++ "b/Java8\347\263\273\345\210\227.md" @@ -0,0 +1,2 @@ +# Java8系列 + diff --git a/README.md b/README.md index 924b566..5fcf4e2 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,107 @@ # java-bible -这里记录了一些我的技术摘要,部分文章来自网络,本项目的目的力求分享精品技术干货,以Java为主。 +这里记录了一些技术摘要,部分文章来自网络,本项目的目的力求分享精品技术干货,以Java为主。 如果你喜欢,`star` 便是,持续更新ing,还有Fork项目的同学,貌似没有什么卵用。。。 ## 目录 -* **开源组件实现** - * [MVC框架实现篇](mvc/index.md) - * [IOC容器实现篇](ioc/index.md) - * AOP原理和实现 - * 缓存的理解和实现 - * 使用NIO实现一个HTTP服务器 - * 实现一个数据库连接池 - * ORM框架实现篇 -* **设计模式该怎么用** - * [如何正确地写出单例模式](designpatterns/singleton.md) - * [代理模式剖析](designpatterns/proxy.md) - * [什么是策略模式](designpatterns/stratege.md) - * 装饰者 - * 观察者 - * 工厂 - * 享元 -* **Java8系列** - * [Java8简明教程](java8/java8-guide.md) - * [Java8 Foreach](java8/foreach.md) - * Java8 Lambda - * Java8 Stream -* **Hexo搭建博客** - * [分分钟部署一个Hexo环境](hexo/hello.md) - * [各种配置详解](hexo/config.md) - * [开始写作吧](hexo/writing.md) -* **用户指南** - * [git - 简明指南](git/guide.md) - * [Jersey-2.x用户指南](https://waylau.gitbooks.io/jersey-2-user-guide/content/index.html) - * [REST 实战](https://waylau.gitbooks.io/rest-in-action/content/) - * [Java Servlet 3.1 规范](https://github.com/waylau/servlet-3.1-specification) - * [MyBatis中文指南](http://mybatis.github.io/mybatis-3/zh/index.html) - * [Apache Shiro 用户指南](https://github.com/waylau/apache-shiro-1.2.x-reference) - * [Spring Boot参考指南](https://github.com/qibaoguang/Spring-Boot-Reference-Guide/blob/master/SUMMARY.md) - * [Netty4 用户指南](https://github.com/waylau/netty-4-user-guide/blob/master/SUMMARY.md) - * [Google Java编程风格指南](user_guide/google-java8-guide.md) -* **运维相关** - * [linux安装jdk、tomcat脚本](shell/install_jdk_tomcat.sh) - * [Web性能测试工具](web/test_tool.md) - * [Java 程序员眼中的 Linux](https://github.com/judasn/Linux-Tutorial) - -## 精品文章 +* [开源组件实现](#开源组件实现) + * [MVC框架实现篇](#MVC框架实现篇) + * [IOC容器实现篇](#IOC容器实现篇) +* [设计模式系列](#设计模式系列) +* [Java8系列](#Java8系列) +* [Hexo搭建博客](#Hexo搭建博客) +* [开发者指南](#开发者指南) +* [运维相关](#运维相关) +* [经典文章](#经典文章) + +## 开源组件实现 + +### [MVC框架实现篇](mvc/index.md) + +* [项目规划](mvc/1.plan.md) +* [路由设计](mvc/2.route.md) +* [控制器设计](mvc/3.controller.md) +* [配置设计](mvc/4.config.md) +* [视图设计](mvc/5.view.md) +* [数据库操作](mvc/6.dbutil.md) +* [增删改查](mvc/7.crud.md) + + +### [IOC容器实现篇](ioc/index.md) + +* [IOC的概念](ioc/1.concept.md) +* [Spring中怎么用](ioc/2.spring.md) +* [设计一个IOC](ioc/3.myioc.md) +* [原理分析](ioc/4.principle.md) + +## 设计模式系列 + +* [如何正确地写出单例模式](designpatterns/singleton.md) +* [代理模式剖析](designpatterns/proxy.md) +* [什么是策略模式](designpatterns/strategy.md) + +## Java8系列 + +* [Java8简明教程](java8/java8-guide.md) +* [Java8 Foreach](java8/foreach.md) + +## 架构博文专栏 + +- [朱晔的互联网架构实践心得](https://juejin.im/user/5ba37b9de51d450e7428affe/posts) + +## Hexo搭建博客 + +* [分分钟部署一个Hexo环境](hexo/hello.md) +* [各种配置详解](hexo/config.md) +* [开始写作吧](hexo/writing.md) + +## 开发者指南 + +* [git - 简明指南](git/guide.md) +* [Jersey-2.x用户指南](https://waylau.gitbooks.io/jersey-2-user-guide/content/index.html) +* [REST 实战](https://waylau.gitbooks.io/rest-in-action/content/) +* [Java Servlet 3.1 规范](https://github.com/waylau/servlet-3.1-specification) +* [MyBatis中文指南](http://mybatis.github.io/mybatis-3/zh/index.html) +* [Apache Shiro 用户指南](https://github.com/waylau/apache-shiro-1.2.x-reference) +* [Spring Boot参考指南](https://github.com/qibaoguang/Spring-Boot-Reference-Guide/blob/master/SUMMARY.md) +* [Netty4 用户指南](https://github.com/waylau/netty-4-user-guide/blob/master/SUMMARY.md) +* [Google Java编程风格指南](user_guide/google-java8-guide.md) + +## 运维相关 + +* [linux安装jdk、tomcat脚本](shell/install_jdk_tomcat.sh) +* [Web性能测试工具](web/test_tool.md) +* [Java 程序员眼中的 Linux](https://github.com/judasn/Linux-Tutorial) +* [写给java开发的运维笔记](learn_server/README.md) + +## 经典文章 * [HTTP请求报文解剖](articles/request_message.md) * [软件架构模式](articles/software_architecture_patterns.md) * [电商网站架构案例](articles/electrical-business-architecture.md) +## 服务器/域名/SSL证书 + +* [可用域名](https://domainr.com) | [秋玉米](http://www.qiuyumi.com/) +* [优惠域名](http://hk.hostsir.com/Affiliates/i/d/976) | [非主流域名]() +* [vultr VPS](http://www.vultr.com/?ref=6886447) | [DO VPS](https://m.do.co/c/e2ceeb8b08fe) +* [免费VPN/SSH服务](https://sshdropbear.net/) +* [免费SS](http://get.ishadow.website/) +* [1小时免费VPN]() +* [SSL.DO](https://saki.ssl.do/aff.php?aff=11) | [Let's Encrypt](http://frontenddev.org/article/using-certbot-deployment-let-s-encrypt-free-ssl-certificate-implementation-https.html) +* [免费虚拟主机](http://api.hostinger.com.hk/redir/22018310) + +## 实用工具/API + +* [PNG图片无损压缩](https://tinypng.com/) +* [在线给图片加水印](http://tool.c7sky.com/image-watermark/) +* [随机密码生成](http://tool.c7sky.com/password/) +* [随机头像生成](https://randomuser.me/) +* [微博一键清理工具](http://tool.c7sky.com/tcleaner/) +* [CSS压缩](http://csscompressor.com/) +* [在线工具](http://www.atool.org/) ## 联系 diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 0000000..3065aa4 --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,65 @@ +# Summary + +* [介绍](README.md) +* [开源组件实现](开源组件实现.md) + * [MVC框架实现篇](mvc/MVC框架实现篇.md) + * [MVC框架实现篇](mvc/index.md) + * [项目规划](mvc/1.plan.md) + * [路由设计](mvc/2.route.md) + * [控制器设计](mvc/3.controller.md) + * [配置设计](mvc/4.config.md) + * [视图设计](mvc/5.view.md) + * [数据库操作](mvc/6.dbutil.md) + * [增删改查](mvc/7.crud.md) + * [IOC容器实现篇](ioc/IOC容器实现篇.md) + * [IOC的概念](ioc/1.concept.md) + * [Spring中怎么用](ioc/2.spring.md) + * [设计一个IOC](ioc/3.myioc.md) + * [原理分析](ioc/4.principle.md) +* [设计模式系列](设计模式系列.md) + * [如何正确地写出单例模式](designpatterns/singleton.md) + * [代理模式剖析](designpatterns/proxy.md) + * [什么是策略模式](designpatterns/strategy.md) +* [Java8系列](Java8系列.md) + * [Java8简明教程](java8/java8-guide.md) + * [Java8 Foreach](java8/foreach.md) +* [Hexo搭建博客](Hexo搭建博客.md) + * [分分钟部署一个Hexo环境](hexo/hello.md) + * [各种配置详解](hexo/config.md) + * [开始写作吧](hexo/writing.md) +* [开发者指南](开发者指南.md) + * [git - 简明指南](git/guide.md) + * [Jersey-2.x用户指南](https://waylau.gitbooks.io/jersey-2-user-guide/content/index.html) + * [REST 实战](https://waylau.gitbooks.io/rest-in-action/content/) + * [Java Servlet 3.1 规范](https://github.com/waylau/servlet-3.1-specification) + * [MyBatis中文指南](http://mybatis.github.io/mybatis-3/zh/index.html) + * [Apache Shiro 用户指南](https://github.com/waylau/apache-shiro-1.2.x-reference) + * [Spring Boot参考指南](https://github.com/qibaoguang/Spring-Boot-Reference-Guide/blob/master/SUMMARY.md) + * [Netty4 用户指南](https://github.com/waylau/netty-4-user-guide/blob/master/SUMMARY.md) + * [Google Java编程风格指南](user_guide/google-java8-guide.md) +* [运维相关](运维相关.md) + * [Web性能测试工具](web/test_tool.md) + * [Java 程序员眼中的 Linux](https://github.com/judasn/Linux-Tutorial) + * [写给java开发的运维笔记](learn_server/README.md) +* [经典文章](经典文章.md) + * [HTTP请求报文解剖](articles/request_message.md) + * [软件架构模式](articles/software_architecture_patterns.md) + * [电商网站架构案例](articles/electrical-business-architecture.md) +* [服务器/域名/SSL证书](服务器相关.md) + * [可用域名](https://domainr.com) + * [优惠域名](http://hk.hostsir.com/Affiliates/i/d/976) + * [vultr VPS](http://www.vultr.com/?ref=6886447) + * [免费VPN/SSH服务](https://sshdropbear.net/) + * [免费SS](http://get.ishadow.website/) + * 1小时免费VPN + * [SSL.DO](https://saki.ssl.do/aff.php?aff=11) + * [免费虚拟主机](http://api.hostinger.com.hk/redir/22018310) +* [实用工具/API](实用工具.md) + * [PNG图片无损压缩](https://tinypng.com/) + * [在线给图片加水印](http://tool.c7sky.com/image-watermark/) + * [随机密码生成](http://tool.c7sky.com/password/) + * [随机头像生成](https://randomuser.me/) + * [微博一键清理工具](http://tool.c7sky.com/tcleaner/) + * [CSS压缩](http://csscompressor.com/) + * [在线工具](http://www.atool.org/) + diff --git "a/_book/Hexo\346\220\255\345\273\272\345\215\232\345\256\242.html" "b/_book/Hexo\346\220\255\345\273\272\345\215\232\345\256\242.html" new file mode 100644 index 0000000..b26ff3a --- /dev/null +++ "b/_book/Hexo\346\220\255\345\273\272\345\215\232\345\256\242.html" @@ -0,0 +1,1093 @@ + + + + + + + Hexo搭建博客 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + +
+
+ +
+
+ +
+ +

Hexo搭建博客

+ + +
+ +
+
+
+ +

results matching ""

+
    + +
    +
    + +

    No results matching ""

    + +
    +
    +
    + +
    +
    + +
    + + + + + + + + + + + + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/_book/Java8\347\263\273\345\210\227.html" "b/_book/Java8\347\263\273\345\210\227.html" new file mode 100644 index 0000000..088f627 --- /dev/null +++ "b/_book/Java8\347\263\273\345\210\227.html" @@ -0,0 +1,1093 @@ + + + + + + + Java8系列 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + +
    + +
    + +
    + + + + + + + + +
    +
    + +
    +
    + +
    + +

    Java8系列

    + + +
    + +
    +
    +
    + +

    results matching ""

    +
      + +
      +
      + +

      No results matching ""

      + +
      +
      +
      + +
      +
      + +
      + + + + + + + + + + + + + + +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/articles/electrical-business-architecture.html b/_book/articles/electrical-business-architecture.html new file mode 100644 index 0000000..ad6f4c8 --- /dev/null +++ b/_book/articles/electrical-business-architecture.html @@ -0,0 +1,1318 @@ + + + + + + + 电商网站架构案例 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + +
      + +
      + +
      + + + + + + + + +
      +
      + +
      +
      + +
      + +

      大型网站架构系列:电商网站架构案例

      +

      大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。

      +

      根据实际需要,进行改造,扩展,支持千万PV,是没问题的。

      +

      本次分享大纲

      +
        +
      1. 电商案例的原因
      2. +
      3. 电商网站需求
      4. +
      5. 网站初级架构
      6. +
      7. 系统容量估算
      8. +
      9. 网站架构分析
      10. +
      11. 网站架构优化
      12. +
      13. 架构总结
      14. +
      +

      电商网站案例,一共有三篇本篇主要说明网站的需求,网站初始架构,系统容量估算方法。

      +

      一、电商案例的原因

      +

      分布式大型网站,目前看主要有几类1.大型门户,比如网易,新浪等;2.SNS网站,比如校内,开心网等;3.电商网站:比如阿里巴巴,京东商城,国美在线,汽车之家等。大型门户一般是新闻类信息,可以使用CDN,静态化等方式优化,开心网等交互性比较多,可能会引入更多的NOSQL,分布式缓存,使用高性能的通信框架等。电商网站具备以上两类的特点,比如产品详情可以采用CDN,静态化,交互性高的需要采用NOSQL等技术。因此,我们采用电商网站作为案例,进行分析。

      +

      二、电商网站需求

      +

      客户需求:

      +
        +
      • 建立一个全品类的电子商务网站(B2C),用户可以在线购买商品,可以在线支付,也可以货到付款;
      • +
      • 用户购买时可以在线与客服沟通;
      • +
      • 用户收到商品后,可以给商品打分,评价;
      • +
      • 目前有成熟的进销存系统;需要与网站对接;
      • +
      • 希望能够支持3~5年,业务的发展;
      • +
      • 预计3~5年用户数达到1000万;
      • +
      • 定期举办双11,双12,三八男人节等活动;
      • +
      • 其他的功能参考京东或国美在线等网站。
      • +
      +

      客户就是客户,不会告诉你具体要什么,只会告诉你他想要什么,我们很多时候要引导,挖掘客户的需求。好在提供了明确的参考网站。因此,下一步要进行大量的分析,结合行业,以及参考网站,给客户提供方案。

      +

      其他的略~

      +

      需求功能矩阵

      +

      需求管理传统的做法,会使用用例图或模块图(需求列表)进行需求的描述。这样做常常忽视掉一个很重要的需求(非功能需求),因此推荐大家使用需求功能矩阵,进行需求描述。

      +

      本电商网站的需求矩阵如下:

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      网站需求功能需求非功能需求
      全品类的电子商务网站分类管理,商品管理方便进行多品类管理(灵活性)
      网站访问速度要快(高性能)
      图片存储的要求(海量小图片)
      用户可以在线购买商品会员管理,购物车,结算功能良好购物体验(可用性,性能)
      在线支付或货到付款多种在线支付方式支付过程要安全,数据加密(安全性)多种支付接口灵活切换(灵活性,扩展性)
      可以在线与客服沟通在线客服功能可靠性:即时通讯
      商品打分评价商品评论 
      目前有成熟的进销存系统对接进销存属于约束条件对接时要考虑数据一致性,鲁棒性
      支持3~5年,业务的发展 属于约束条件伸缩性,可扩展性
      3~5年用户数达到1000万 约束条件
      举办双11,双12,三八男人节等活动活动管理,秒杀突增访问流量(可伸缩)实时性要求(高性能)
      参考京东或国美在线 参考条件
      +

      以上是对电商网站需求的简单举例,目的是说明(1)需求分析的时候,要全面,大型分布式系统重点考虑非功能需求;(2)描述一个简单的电商需求场景,使大家对下一步的分析设计有个依据。

      +

      三、网站初级架构

      +

      一般网站,刚开始的做法,是三台服务器,一台部署应用,一台部署数据库,一台部署NFS文件系统。

      +

      这是前几年比较传统的做法,之前见到一个网站10万多会员,垂直服装设计门户,N多图片。使用了一台服务器部署了应用,数据库以及图片存储。出现了很多性能问题。

      +

      如下图:

      +

      +

      但是,目前主流的网站架构已经发生了翻天覆地的变化。一般都会采用集群的方式,进行高可用设计。至少是下面这个样子。

      +

      +

      (1) 使用集群对应用服务器进行冗余,实现高可用;(负载均衡设备可与应用一块部署)

      +

      (2) 使用数据库主备模式,实现数据备份和高可用;

      +

      四、系统容量预估

      +

      预估步骤:

      +
        +
      1. 注册用户数-日均UV量-每日的PV量-每天的并发量;
      2. +
      3. 峰值预估:平常量的2~3倍;
      4. +
      5. 根据并发量(并发,事务数),存储容量计算系统容量。
      6. +
      +

      客户需求:3~5年用户数达到1000万注册用户;

      +

      每秒并发数预估:

      +
        +
      1. 每天的UV为200万(二八原则);
      2. +
      3. 每日每天点击浏览30次;
      4. +
      5. PV量:200*30=6000万;
      6. +
      7. 集中访问量:240.2=4.8小时会有6000万0.8=4800万(二八原则);
      8. +
      9. 每分并发量:4.8*60=288分钟,每分钟访问4800/288=16.7万(约等于);
      10. +
      11. 每秒并发量:16.7万/60=2780(约等于);
      12. +
      13. 假设:高峰期为平常值的三倍,则每秒的并发数可以达到8340次。
      14. +
      15. 1毫秒=1.3次访问;
      16. +
      +

      没好好学数学后悔了吧?!(不知道以上算是否有错误,呵呵~~)

      +

      服务器预估:(以tomcat服务器举例)

      +
        +
      1. 按一台web服务器,支持每秒300个并发计算。平常需要10台服务器(约等于);[tomcat默认配置是150]
      2. +
      3. 高峰期:需要30台服务器;
      4. +
      +

      容量预估:70/90原则

      +

      系统CPU一般维持在70%左右的水平,高峰期达到90%的水平,是不浪费资源,并比较稳定的。内存,IO类似。

      +

      以上预估仅供参考,因为服务器配置,业务逻辑复杂度等都有影响。在此CPU,硬盘,网络等不再进行评估。

      +

      五、网站架构分析

      +

      根据以上预估,有几个问题:

      +
        +
      • 需要部署大量的服务器,高峰期计算,可能要部署30台Web服务器。并且这三十台服务器,只有秒杀,活动时才会用到,存在大量的浪费。
      • +
      • 所有的应用部署在同一台服务器,应用之间耦合严重。需要进行垂直切分和水平切分。
      • +
      • 大量应用存在冗余代码
      • +
      • 服务器SESSION同步耗费大量内存和网络带宽
      • +
      • 数据需要频繁访问数据库,数据库访问压力巨大。
      • +
      +

      大型网站一般需要做以下架构优化(优化是架构设计时,就要考虑的,一般从架构/代码级别解决,调优主要是简单参数的调整,比如JVM调优;如果调优涉及大量代码改造,就不是调优了,属于重构):

      +
        +
      • 业务拆分
      • +
      • 应用集群部署(分布式部署,集群部署和负载均衡)
      • +
      • 多级缓存
      • +
      • 单点登录(分布式Session)
      • +
      • 数据库集群(读写分离,分库分表)
      • +
      • 服务化
      • +
      • 消息队列
      • +
      • 其他技术
      • +
      +

      六、网站架构优化

      +

      6.1业务拆分

      +

      根据业务属性进行垂直切分,划分为产品子系统,购物子系统,支付子系统,评论子系统,客服子系统,接口子系统(对接如进销存,短信等外部系统)。

      +

      根据业务子系统进行等级定义,可分为核心系统和非核心系统。核心系统:产品子系统,购物子系统,支付子系统;非核心:评论子系统,客服子系统,接口子系统。

      +

      业务拆分作用:提升为子系统可由专门的团队和部门负责,专业的人做专业的事,解决模块之间耦合以及扩展性问题;每个子系统单独部署,避免集中部署导致一个应用挂了,全部应用不可用的问题。

      +

      等级定义作用:用于流量突发时,对关键应用进行保护,实现优雅降级;保护关键应用不受到影响。

      +

      拆分后的架构图:

      +

      +

      参考部署方案2

      +

      +
        +
      1. 如上图每个应用单独部署
      2. +
      3. 核心系统和非核心系统组合部署
      4. +
      +

      6.2应用集群部署(分布式,集群,负载均衡)

      +

      分布式部署:将业务拆分后的应用单独部署,应用直接通过RPC进行远程通信;

      +

      集群部署:电商网站的高可用要求,每个应用至少部署两台服务器进行集群部署;

      +

      负载均衡:是高可用系统必须的,一般应用通过负载均衡实现高可用,分布式服务通过内置的负载均衡实现高可用,关系型数据库通过主备方式实现高可用。

      +

      集群部署后架构图:

      +

      +

      6.3 多级缓存

      +

      缓存按照存放的位置一般可分为两类本地缓存和分布式缓存。本案例采用二级缓存的方式,进行缓存的设计。一级缓存为本地缓存,二级缓存为分布式缓存。(还有页面缓存,片段缓存等,那是更细粒度的划分)

      +

      一级缓存,缓存数据字典,和常用热点数据等基本不可变/有规则变化的信息,二级缓存缓存需要的所有缓存。当一级缓存过期或不可用时,访问二级缓存的数据。如果二级缓存也没有,则访问数据库。

      +

      缓存的比例,一般1:4,即可考虑使用缓存。(理论上是1:2即可)。

      +

      +

      根据业务特性可使用以下缓存过期策略:

      +
        +
      1. 缓存自动过期;
      2. +
      3. 缓存触发过期;
      4. +
      +

      6.4单点登录(分布式Session)

      +

      系统分割为多个子系统,独立部署后,不可避免的会遇到会话管理的问题。一般可采用Session同步,Cookies,分布式Session方式。电商网站一般采用分布式Session实现。

      +

      再进一步可以根据分布式Session,建立完善的单点登录或账户管理系统。

      +

      +

      流程说明

      +
        +
      1. 用户第一次登录时,将会话信息(用户Id和用户信息),比如以用户Id为Key,写入分布式Session;
      2. +
      3. 用户再次登录时,获取分布式Session,是否有会话信息,如果没有则调到登录页;
      4. +
      5. 一般采用Cache中间件实现,建议使用Redis,因此它有持久化功能,方便分布式Session宕机后,可以从持久化存储中加载会话信息;
      6. +
      7. 存入会话时,可以设置会话保持的时间,比如15分钟,超过后自动超时;
      8. +
      +

      结合Cache中间件,实现的分布式Session,可以很好的模拟Session会话。

      +

      6.5数据库集群(读写分离,分库分表)

      +

      大型网站需要存储海量的数据,为达到海量数据存储,高可用,高性能一般采用冗余的方式进行系统设计。一般有两种方式读写分离和分库分表。

      +

      读写分离:一般解决读比例远大于写比例的场景,可采用一主一备,一主多备或多主多备方式。

      +

      本案例在业务拆分的基础上,结合分库分表和读写分离。如下图:

      +

      +
        +
      1. 业务拆分后:每个子系统需要单独的库;
      2. +
      3. 如果单独的库太大,可以根据业务特性,进行再次分库,比如商品分类库,产品库;
      4. +
      5. 分库后,如果表中有数据量很大的,则进行分表,一般可以按照Id,时间等进行分表;(高级的用法是一致性Hash)
      6. +
      7. 在分库,分表的基础上,进行读写分离;
      8. +
      +

      相关中间件可参考Cobar(阿里,目前已不在维护),TDDL(阿里),Atlas(奇虎360),MyCat(在Cobar基础上,国内很多牛人,号称国内第一开源项目)。

      +

      分库分表后序列的问题,JOIN,事务的问题,会在分库分表主题分享中,介绍。

      +

      6.6服务化

      +

      将多个子系统公用的功能/模块,进行抽取,作为公用服务使用。比如本案例的会员子系统就可以抽取为公用的服务。

      +

      +

      6.7消息队列

      +

      消息队列可以解决子系统/模块之间的耦合,实现异步,高可用,高性能的系统。是分布式系统的标准配置。本案例中,消息队列主要应用在购物,配送环节。

      +
        +
      1. 用户下单后,写入消息队列,后直接返回客户端;
      2. +
      3. 库存子系统:读取消息队列信息,完成减库存;
      4. +
      5. 配送子系统:读取消息队列信息,进行配送;
      6. +
      +

      +

      目前使用较多的MQ有Active MQ,Rabbit MQ,Zero MQ,MS MQ等,需要根据具体的业务场景进行选择。建议可以研究下Rabbit MQ。

      +

      6.8其他架构(技术)

      +

      除了以上介绍的业务拆分,应用集群,多级缓存,单点登录,数据库集群,服务化,消息队列外。还有CDN,反向代理,分布式文件系统,大数据处理等系统。

      +

      此处不详细介绍,大家可以问度娘/Google,有机会的话也可以分享给大家。

      +

      七、架构总结

      +

      +

      以上是本次分享的架构总结,其中细节可参考前面分享的内容。其中还有很多可以优化和细化的地方,因为是案例分享,主要针对重要部分做了介绍,工作中需要大家根据具体的业务场景进行架构设计。

      +

      以上是电商网站架构案例的分享一共有三篇,从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。

      + + +
      + +
      +
      +
      + +

      results matching ""

      +
        + +
        +
        + +

        No results matching ""

        + +
        +
        +
        + +
        +
        + +
        + + + + + + + + + + + + + + +
        + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/articles/request_message.html b/_book/articles/request_message.html new file mode 100644 index 0000000..4cec1de --- /dev/null +++ b/_book/articles/request_message.html @@ -0,0 +1,1235 @@ + + + + + + + HTTP请求报文解剖 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + +
        + +
        + + + + + + + + +
        +
        + +
        +
        + +
        + +

        HTTP请求报文解剖

        +

        HTTP请求报文由3部分组成(请求行+请求头+请求体)

        +

        +

        下面是一个实际的请求报文:

        +

        +

        ① 是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST,Spring 3.0提供了一个HiddenHttpMethodFilter,允许你通过“_method”的表单参数指定这些特殊的HTTP方法(实际上还是通过POST提交表单)。服务端配置了HiddenHttpMethodFilter后,Spring会根据_method参数指定的值模拟出相应的HTTP方法,这样,就可以使用这些HTTP方法对处理方法进行映射了。

        +

        ② 为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL,③是协议名称及版本号。

        +

        ④ 是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。

        +

        ⑤ 是报文体,它将一个页面表单中的组件值通过param1=value1&param2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1&param2=value2”的方式传递请求参数。

        +

        对照上面的请求报文,我们把它进一步分解,你可以看到一幅更详细的结构图:

        +

        +
        +

        1.IE系 +HttpWatch是强大的网页数据分析工具,安装后将集成到Internet Explorer工具栏中。它不用代理服务器或一些复杂的网络监控工具,就能抓取请求及响应的完整信息,包括Cookies、消息头、查询参数、响应报文等,是Web应用开发人员的必备工具。 + 2.Chrome,firefox + 自身的调试器已经很好用了,按F12就可以看到(IE10以上也直接按F12就可以调试了)

        +
        +

        HTTP请求报文头属性

        +

        报文头属性是什么东西呢?我们不妨以一个小故事来说明吧。

        +
        +

        快到中午了,张三丰不想去食堂吃饭,于是打电话叫外卖:老板,我要一份[鱼香肉丝],要12:30之前给我送过来哦,我在江湖湖公司研发部,叫张三丰。

        +
        +

        这里,你要 [鱼香肉丝] 相当于HTTP报文体,而 “12:30之前送过来”,你叫 “张三丰” 等信息就相当于HTTP的报文头。它们是一些附属信息,帮忙你和饭店老板顺利完成这次交易。

        +

        请求HTTP报文和响应HTTP报文都拥有若干个报文关属性,它们是为协助客户端及服务端交易的一些附属信息。

        +

        常见的HTTP请求报文头属性

        +

        Accept

        +

        请求报文可通过一个 Accept 报文头属性告诉服务端 客户端接受什么类型的响应。

        +

        如下报文头相当于告诉服务端,俺客户端能够接受的响应类型仅为纯文本数据啊,你丫别发其它什么图片啊,视频啊过来,那样我会歇菜的~~~:

        +
        Accept:text/plain
        +
        +

        Accept属性的值可以为一个或多个MIME类型的值,关于MIME类型,大家请参考:http://en.wikipedia.org/wiki/MIME_type

        +

        Cookie

        +

        这是第一个要说的,客户端的Cookie就是通过这个报文头属性传给服务端的哦!如下所示:

        +
        Cookie:skin=blue; jsessionid=5F4771183629C9834F8382E23BE13C4C
        +
        +

        注意到后台的那个 jsessionid=5F4771183629C9834F8382E23BE13C4C 没有, +服务端是怎么知道客户端的多个请求是属于一个Session的,原来就是通过HTTP请求报文头的Cookie属性的jsessionid的值关联起来的!(当然也可以通过重写URL的方式将会话ID附带在每个URL的后后面哦)。

        +

        Referer

        +

        表示这个请求是从哪个URL过来的,假如你通过google搜索出一个商家的广告页面,你对这个广告页面感兴趣,鼠标一点发送一个请求报文到商家的网站,这个请求报文的Referer报文头属性值就是 http://www.google.com。

        +

        很多貌似神奇的网页监控软件(如著名的 我要啦),只要在你的网页上放上一段JavaScript,就可以帮你监控流量,全国访问客户的分布情况等报表和图表,其原理就是通过这个Referer及其它一些HTTP报文头工作的。

        +

        Cache-Control

        +

        对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的。

        +

        如以下设置,相当于让服务端将对应请求返回的响应内容不要在客户端缓存(当然响应报文也是通过响应报文头通知浏览器客户端的,这个下面再说):

        +
        Cache-Control: no-cache
        +
        +

        其它报文头属性

        +

        参见:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

        +

        如何访问请求报文头

        +

        由于请求报文头是客户端发过来的,服务端当然只能读取了,以下是 HttpServletRequest 一些用于读取请求报文头的API:

        +
        //获取请求报文中的属性名称
        +java.util.Enumeration<java.lang.String>    getHeaderNames();
        +
        +//获取指定名称的报文头属性的值
        +java.lang.String getHeader(java.lang.String name)
        +
        +

        由于一些请求报文头属性“太著名”了,因此HttpServletRequest为它们提供了VIP的API:

        +
        //获取报文头中的Cookie(读取Cookie的报文头属性)
        + Cookie[]    getCookies() ;
        +
        +//获取客户端本地化信息(读取 Accept-Language 的报文头属性)
        +java.util.Locale    getLocale() 
        +
        +//获取请求报文体的长度(读取Content-Length的报文头属性)
        +int getContentLength();
        +
        +

        HttpServletRequest可以通过 HttpSession getSession()

        +

        获取请求所关联的HttpSession,其内部的机理是通过读取请求报文头中Cookie属性的JSESSIONID的值,在服务端的一个会话Map中,根据这个JSESSIONID获取对应的HttpSession的对象。 +(这样,你就不会觉得HttpSession很神秘了吧,你自己也可以做一个类似的会话管理)

        +

        HTTP响应报文解剖

        +

        响应报文结构

        +

        HTTP的响应报文也由三部分组成(响应行+响应头+响应体):

        +

        +

        以下是一个实际的HTTP响应报文:

        +

        +

        ① 报文协议及版本; +② 状态码及状态描述; +③ 响应报文头,也是由多个属性组成; +④ 响应报文体,即我们真正要的“干货”。

        +

        响应状态码

        +

        和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果。

        +

        HTTP的响应状态码由5段组成:

        +
          +
        • 1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急...
        • +
        • 2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
        • +
        • 3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。
        • +
        • 4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。
        • +
        • 5xx 处理发生,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。
        • +
        +

        以下是几个常见的状态码:

        +

        200 OK

        +

        你最希望看到的,即处理成功!

        +

        303 See Other

        +

        我把你redirect到其它的页面,目标的URL通过响应报文头的Location告诉你。

        +
        +

        悟空:师傅给个桃吧,走了一天了 :relieved: +唐僧:我哪有桃啊!去王母娘娘那找吧 :unamused:

        +
        +

        304 Not Modified

        +

        告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊!

        +

        404 Not Found

        +

        你最不希望看到的,即找不到页面。如你在google上找到一个页面,点击这个链接返回404,表示这个页面已经被网站删除了,google那边的记录只是美好的回忆。

        +

        500 Internal Server Error

        +

        看到这个错误,你就应该查查服务端的日志了,肯定抛出了一堆异常,别睡了,起来改BUG去吧!

        +

        有些响应码,Web应用服务器会自动给生成。你可以通过HttpServletResponse的API设置状态码:

        +
        
        +//设置状态码,状态码在HttpServletResponse中通过一系列的常量预定义了,如SC_ACCEPTED,SC_OK
        +void    setStatus(int sc)
        +
        +

        常见的HTTP响应报文头属性

        +

        Cache-Control

        +

        响应输出到客户端后,服务端通过该报文头属告诉客户端如何控制响应内容的缓存。

        +

        下面,的设置让客户端对响应内容缓存3600秒,也即在3600秒内,如果客户再次访问该资源,直接从客户端的缓存中返回内容给客户,不要再从服务端获取(当然,这个功能是靠客户端实现的,服务端只是通过这个属性提示客户端“应该这么做”,做不做,还是决定于客户端,如果是自己宣称支持HTTP的客户端,则就应该这样实现)。

        +
        Cache-Control: max-age=3600
        +
        +

        ETag

        +

        一个代表响应服务端资源(如页面)版本的报文头属性,如果某个服务端资源发生变化了,这个ETag就会相应发生变化。它是Cache-Control的有益补充,可以让客户端“更智能”地处理什么时候要从服务端取资源,什么时候可以直接从缓存中返回响应。

        +

        关于ETag的说明,你可以参见:http://en.wikipedia.org/wiki/HTTP_ETag。 +Spring 3.0还专门为此提供了一个 org.springframework.web.filter.ShallowEtagHeaderFilter (实现原理很简单,对JSP输出的内容MD5,这样内容有变化ETag就相应变化了),用于生成响应的ETag,因为这东东确实可以帮助减少请求和响应的交互。

        +

        下面是一个ETag:

        +
        ETag: "737060cd8c284d8af7ad3082f209582d"
        +
        +

        Location

        +

        我们在JSP中让页面Redirect到一个某个A页面中,其实是让客户端再发一个请求到A页面,这个需要Redirect的A页面的URL,其实就是通过响应报文头的Location属性告知客户端的,如下的报文头属性,将使客户端redirect到iteye的首页中:

        +
        Location: https://github.com/biezhi/jb
        +
        +

        Set-Cookie

        +

        服务端可以设置客户端的Cookie,其原理就是通过这个响应报文头属性实现的:

        +
        Set-Cookie: UserID=Jack; Max-Age=3600; Version=1
        +
        +

        其它HTTP请求报文头属性

        +

        更多其它的HTTP请求头报文,参见:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

        +

        如何写HTTP请求报文头

        +

        在服务端可以通过HttpServletResponse的API写响应报文头的属性:

        +
        //添加一个响应报文头属性
        +void    setHeader(String name, String value)
        +
        +

        像Cookie,Location这些响应头是有福之人,HttpServletResponse为它们都提供了VIP(非API 哈):

        +
        //添加Cookie报文头属性
        +void addCookie(Cookie cookie) 
        +
        +//不但会设置Location的响应报文头,还会生成303的状态码呢,两者天仙配呢
        +void    sendRedirect(String location)
        +
        + + +
        + +
        +
        +
        + +

        results matching ""

        +
          + +
          +
          + +

          No results matching ""

          + +
          +
          +
          + +
          +
          + +
          + + + + + + + + + + + + + + +
          + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/articles/software_architecture_patterns.html b/_book/articles/software_architecture_patterns.html new file mode 100644 index 0000000..439e9cd --- /dev/null +++ b/_book/articles/software_architecture_patterns.html @@ -0,0 +1,1151 @@ + + + + + + + 软件架构模式 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          + + + + + + + + +
          + +
          + +
          + + + + + + + + +
          +
          + +
          +
          + +
          + +

          软件架构模式

          +

          +

          目录

          +

          简介

          +

          对程序员来说很常见一种情况是在没有合理的程序架构时就开始编程,没有一个清晰的和定义好的架构的时候,大多数开发者和架构师通常会使用标准式的传统分层架构模式(也被称为多层架构)—通过将源码模块分割为几个不同的层到不同的包中。不幸的是,这种编码方式会导致一系列没有组织性的代码模块,这些模块缺乏明确的规则、职责和同其他模块之间的关联。这通常被称为架构大泥球。

          +

          应用程序缺乏合理的架构一般会导致程序过度耦合、容易被破坏、难以应对变化,同时很难有个清晰的版本或者方向性。这样的结果是,如果你没有充分理解程序系统里每个组件和模块,就很难定义这个程序的结构特征。有关于程序的部署和维护的基本问题都难以回答,比如:程序架构是什么规模?应用程序有什么性能特点?应用程序有多容易应对变化?应用程序的部署特点是什么?架构是如何反应的?

          +

          架构模式帮助你定义应用程序的基本特征和行为。例如,些架构模式会让程序自己自然⽽而然地朝着具有良 好伸缩性的方向发展,⽽而其他架构模式会让程序朝着高度灵活的方向发展。知道了这些特点,了解架构模式 的优点和缺点是非常必要的,它帮助我们选择个适合自己特定的业务需求和目标的的程序。

          +

          作为个架构师,你必须证明你的架构模式的决策是正确的,特别是当需要选择一个特定的体系结构模式或方法 的时候。这本迷你书的目的就是给你⾜足够的信息让你去做出正确的架构决策。

          +

          第一章 分层架构

          +

          分层架构是一种很常⻅见的架构模式,它也叫N层架构。这种架构是大多数Jave EE应用的实际标准,因此很多 的架构师,设计师,还有程序员都知道它。许多传统IT公司的组织架构和分层模式十分的相似。所以它很自 然的成为大多数应用的架构模式。

          +

          模式分析

          +

          分层架构模式里的组件被分成几个平行的层次,每一层都代表了应用的一个功能(展示逻辑或者业务逻辑)。 尽管分层架构没有规定自⾝身要分成几层几种,大多数的结构都分成四个层次:展示层,业务层,持久层,和数 据库层。如表1-1,有时候,业务层和持久层会合并成单独的一个业务层,尤其是持久层的逻辑绑定在业务层 的组件当中。因此,有一些小的应用可能只有3层,一些有着更复杂的业务的大应用可能有5层或者更多的分 层。

          +

          分层架构中的每一层都着特定的角色和职能。举个例子,展示层负责处理所有的界面展示以及交互逻辑,业 务层负责处理请求对应的业务。架构里的层次是具体工作的高度抽象,它们都是为了实现某种特定的业务请 求。比如说展示层并不需要关⼼心怎样得到用户数据,它只需在屏幕上以特定的格式展示信息。业务层并不关 +⼼心要展示在屏幕上的用户数据格式,也不关⼼心这些用户数据从哪里来。它只需要从持久层得到数据,执行与 数据有关的相应业务逻辑,然后把这些信息传递给展示层。

          +

          +

          分层架构的一个突出特性是组件间关注点分离 (separation of concerns)。一个层中的组件只会处理本层的逻 辑。比如说,展示层的组件只会处理展示逻辑,业务层中的组件只会去处理业务逻辑。多亏了组件分离,让 我们更容易构造有效的角色和强⼒力的模型。这样应用变的更好开发,测试,管理和维护。

          +

          关键概念

          +

          注意表1-2中每一层都是封闭的。这是分层架构中非常重要的特点。这意味request必须一层一层的传递。举 个例子,从展示层传递来的请求⾸首先会传递到业务层,然后传递到持久层,最后才传递到数据层。

          +

          +

          那么为什么不允许展示层直接访问数据层呢。如果只是获得以及读取数据,展示层直接访问数据层,比穿过一层一层来得到数据来的快多了。这涉及到一个概念:层隔离。

          +

          层隔离就是说架构中的某一层的改变不会影响到其他层:这些变化的影响范围限于当前层次。如果展示层能够 直接访问持久层了,假如持久层中的SQL变化了,这对业务层和展示层都有一定的影响。这只会让应用变得 紧耦合,组件之间互相依赖。这种架构会非常的难以维护。

          +

          从另外一个方面来说,分层隔离使得层与层之间都是相互独立的,架构中的每一层的互相了解都很少。为了 说明这个概念的⽜牛逼之处,想象一个超级重构,把展示层从JSP换成JSF。假设展示层和业务层的之间的联系 保持一致,业务层不会受到重构的影响,它和展示层所使用的界面架构完全独立。

          +

          然⽽而封闭的架构层次也有不便之处,有时候也应该开放某一层。如果想往包含了一些由业务层的组件调用的 普通服务组件的架构中添加个分享服务层。在这个例子里,新建一个服务层通常是个好主意,因为从架构上来说,它限制了分享服务访问业务层(也不允许访问展示层)。如果没有隔离层,就没有任何架构来限制展示层访问普通服务,难以进行权限管理。

          +

          在这个例子中,新的服务层是处于业务层之下的,展示层不能直接访问这个服务层中的组件。但是现在业务 层还要通过服务层才能访问到持久层,这一点也不合理。这是分层架构中的老问题了,解决的办法是开放某 些层。如表1-3所示,服务层现在是开放的了。请求可以绕过这一层,直接访问这层下面的层。既然服务层 是开放的,业务层可以绕过服务层,直接访问数据持久层。这样就非常合理。

          +

          +

          开放和封闭层的概念确定了架构层和请求流之间的关系,并且给设计师和开发人员提供了必要的信息理解架 构里各种层之间的访问限制。如果随意的开放或者封闭架构里的层,整个项目可能都是紧耦合,一团糟的。以后也难以测试,维护和部署。

          +

          示例

          +

          为了演示分层架构是如何工作的,想象一个场景,如表1-4,用户发出了个请求要获得客户的信息。黑色的箭头是从数据库中获得用户数据的请求流,红色箭头显示用户数据的返回流的方向。在这个例子中,用户信 息由客户数据和订单数组组成(客户下的订单)。

          +

          用户界面只管接受请求以及显示客户信息。它不管怎么得到数据的,或者说得到这些数据要用到哪些数据 表。如果用户界面接到了一个查询客户信息的请求,它就会转发这个请求给用户委托(Customer Delegate)模 块。这个模块能找到业务层里对应的模块处理对应数据(约束关系)。业务层里的customer object聚合了业务 请求需要的所有信息(在这个例子里获取客户信息)。这个模块调用持久层中的 customer dao 来得到客户信 息,调用order dao来得到订单信息。这些模块会执行SQL语句,然后返回相应的数据给业务层。当 customer object收到数据以后,它就会聚合这些数据然后传递给 customer delegate,然后传递这些数据到 customer screen 展示在用户面前。

          +

          +

          从技术的角度来说,有很多的方式能够实现这些模块。比如说在Java平台中,customer screen 对应的是 (JSF) Java Server Faces ,用 bean 组件来实现 customer delegate。用本地的Spring bean或者远程的EJB3 bean 来实现业务层中的customer object。上例中的数据访问可以用简单的POJP's(Plain Old Java Objects),或者可以用MyBatis,还可以用JDBC或者Hibernate查询。Microsoft平台上,customer screen能 +用 .NET 库的ASP模块来访问业务层中的C#模块,用ADO来实现用户和订单数据的访问模块。

          +

          我们看一下淘宝前几年的架构的例子。

          +

          +

          这是一个标准的分层的架构。每一层中又可以详细的分成更细的层,比如服务层。

          +

          +

          围着着这个主架构还有一些外围的产品。比如监控和审计。

          +

          注意事项

          +

          分层架构是一个很可靠的架构模式。它适合大多数的应用。如果你不确定在项目中使用什么架构,分层架构 是再好不过的了。然后,从架构的角度上来说,选择这个模式还要考虑很多的东⻄西。

          +

          第一个要注意的就是 污水池反模式(architecture sinkhole anti-pattern)。 在这个模式中,请求流只是简单的 穿过层次,不留一点云彩,或者说只留下一阵⻘青烟。比如说界面层响应了一个获得数据的请求。响应层把这 个请求传递给了业务层,业务层也只是传递了这个请求到持久层,持久层对数据库做简单的SQL查询获得用户的数据。这个数据按照原理返回,不会有任何的二次处理,返回到界面上。

          +

          每个分层架构或多或少都可能遇到这种场景。关键在于这样的请求有多少。80-20原则可以帮助你确定架构是 否处于反污水模式。大概有百分之二十的请求仅仅是做简单的穿越,百分之八十的请求会做一些业务逻辑操 作。然而,如果这个比例反过来,大部分的请求都是仅仅穿过层,不做逻辑操作。那么开放一些架构层会比较好。不过由于缺少了层次隔离,项目会变得难以控制。

          +

          模式分析

          +

          下⾯面的的表⾥里分析了分层架构的各个⽅方⾯面。

          +

          整体灵活性

          +

          评级:低 分析:总体灵活性是响应环境变化的能⼒力。尽管分层模式中的变化可以隔绝起来,想在这种架构中做⼀一些也改 变也是并且费时费⼒力的。分层模式的笨重以及经常出现的组件之间的紧耦合是导致灵活性降低的原因。

          +

          易于部署

          +

          评级:低 分析:这取决于你怎么发布这种模式,发布程序可能⽐比较⿇麻烦,尤其是很⼤大的项目。⼀一个组件的⼩小⼩小改动可能 会影响到整个程序的发布(或者程序的⼤大部分)。发布必须是按照计划,在⾮非⼯工作时间或者周末进⾏行发布。因此,分层模式导致应⽤用发布⼀一点也不流畅,在发布上降低了灵活性。

          +

          可测试性

          +

          评级:高 分析:因为组件都处于各⾃自的层次中,可以模拟其他的层,或者说直接去掉层,所以分层模式很容易测试。开发者可以单独模拟⼀一个展⽰示组件,对业务组件进⾏行隔绝测试。还可以模拟业务层来测试某个展⽰示功能。

          +

          性能

          +

          评级:低 分析:尽管某些分层架构的性能表现的确不错,但是这个模式的特点导致它⽆无法带来⾼高性能。因为⼀一次业务请求要穿越所有的架构层,做了很多不必要的⼯工作。

          +

          伸缩性

          +

          评级:低 分析:由于这种模式以紧密耦合的趋势在发展,规模也⽐比较⼤大,⽤用分层架构构建的程序都⽐比较难以扩展。你可 以把各个层分成单独的物理模块或者干脆把整个程序分成多个节点来扩展分层架构,但是总体的关系过于紧

          +

          密,这样很难扩展。

          +

          易开发性

          +

          评级:容易 分析:在开发难度上⾯面,分层架构得到了⽐比较⾼高的分数。因为这种架构对⼤大家来说很熟悉,不难实现。⼤大部分 公司在开发项⺫⽬目的都是通过层来区分技术的,这种模式对于⼤大多数的商业项目开发来说都很合适。公司的组织架构和他们软件架构之间的联系被戏称为"Conway's law"。你可以Google⼀一下查查这个有趣的联系。

          +
          +

          未完待续

          +
          + + +
          + +
          +
          +
          + +

          results matching ""

          +
            + +
            +
            + +

            No results matching ""

            + +
            +
            +
            + +
            +
            + +
            + + + + + + + + + + + + + + +
            + + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/cache/1.concept.md b/_book/cache/1.concept.md new file mode 100644 index 0000000..57f5dc3 --- /dev/null +++ b/_book/cache/1.concept.md @@ -0,0 +1,94 @@ +# IOC的概念 + +## 什么是IOC? + +IoC(Inversion of Control),意为控制反转,不是什么技术,而是一种设计思想。Ioc意味着**将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制**。 + +如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下: + +- **谁控制谁,控制什么**:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。 + +- **为何是反转,哪些方面反转了**:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。 + +下面举个例子说明说明是IOC: + +假设我们要设计一个Girl和一个Boy类,其中Girl有kiss方法,即Girl想要Kiss一个Boy。那么,我们的问题是,Girl如何能够认识这个Boy? + +在我们中国,常见的MM与GG的认识方式有以下几种: + + +1. 青梅竹马 +2. 亲友介绍 +3. 父母包办 + +那么哪一种才是最好呢? +   +1. **青梅竹马:Girl从小就知道自己的Boy。** + +```java +public class Girl {  + void kiss(){ +    Boy boy = new Boy(); +  } +} +``` + +然而从开始就创建的Boy缺点就是无法在更换。并且要负责Boy的整个生命周期。如果我们的Girl想要换一个怎么办?(笔者严重不支持Girl经常更换Boy) + +2. **亲友介绍:由中间人负责提供Boy来见面** + +```java +public class Girl { +  void kiss(){ +    Boy boy = BoyFactory.createBoy();    +  } +} +``` + +亲友介绍,固然是好。如果不满意,尽管另外换一个好了。但是,亲友BoyFactory经常是以Singleton的形式出现,不然就是,存在于Globals,无处不在,无处不能。实在是太繁琐了一点,不够灵活。我为什么一定要这个亲友掺和进来呢?为什么一定要付给她介绍费呢?万一最好的朋友爱上了我的男朋友呢? + +3. **父母包办:一切交给父母,自己不用费吹灰之力,只需要等着Kiss就好了。** + +```java +public class Girl { +  void kiss(Boy boy){ +    // kiss boy  +   boy.kiss(); +  } +} +``` + +Well,这是对Girl最好的方法,只要想办法贿赂了Girl的父母,并把Boy交给他。那么我们就可以轻松的和Girl来Kiss了。看来几千年传统的父母之命还真是有用哦。至少Boy和Girl不用自己瞎忙乎了。 + +这就是IOC,将对象的创建和获取提取到外部。由外部容器提供需要的组件。 + +## IoC能做什么 + +IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。 + +其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC容器来创建并注入它所需要的资源了。 + +IoC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。 + +## IoC和DI + +DI—Dependency Injection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。 + +理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”,那我们来深入分析一下: + +- 谁依赖于谁:当然是应用程序依赖于IoC容器; + +- 为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源; + +- 谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象; + +- 注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。 + +IoC和DI由什么关系呢?其实它们是同一个概念的不同角度描述,由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”,相对IoC 而言,“依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。 + +对于Spring Ioc这个核心概念,我相信每一个学习Spring的人都会有自己的理解。这种概念上的理解没有绝对的标准答案,仁者见仁智者见智。 +理解了IoC和DI的概念后,一切都将变得简单明了,剩下的工作只是在框架中堆积木而已,下一节来看看Spring是怎么用的 + +## links + * [目录]() + * 下一节: [Spring中怎么用](<2.spring.md>) \ No newline at end of file diff --git a/_book/cache/2.spring.md b/_book/cache/2.spring.md new file mode 100644 index 0000000..2e6ce86 --- /dev/null +++ b/_book/cache/2.spring.md @@ -0,0 +1,96 @@ +# Spring中怎么用 + +我们在Spring中是这样获取对象的: + +```java +public static void main(String[] args) { + ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml"); + Lol lol = (Lol) context.getBean("lol"); + lol.gank(); +} +``` + +一起看看Spring如何让它生效呢,在 `applicationContext.xml` 配置文件中是酱紫的: + +```xml + + + +``` + +`Person` 类是这样的: + +```java +public class Lol { + + private String name; + + public Lol() { + } + + public void gank(){ + System.out.println(this.name + "在gank!!"); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} +``` + +上面的代码运行结果自然是 `剑圣在gank!!`。 + +Spring更高级的用法,在3.0版本之后有了基于Annotation的注入实现,为毛每次都要配置 `Xml` 看到都蛋疼。。 + +首先还是要在 `xml` 中配置启用注解方式 + +```xml + +``` + +这样就能使用注解驱动依赖注入了,下面是一个使用场景 + +```java +public class Lol { + + @Autowired + private DuangService duangService ; + + public void buyDuang(String name, int money) { + duangService.buy(name, money); + } +} +``` + +```java +@Service("duangService") +public class DuangService { + + public void buy(String name, int money){ + if(money > 0){ + System.out.println(name + "买了" + money + "毛钱的特效,装逼成功!"); + } else{ + System.out.println(name + "没钱还想装逼,真是匪夷所思"); + } + } +} +``` + +这只是一个简单的例子,剑圣打野的时候想要买5毛钱的三杀特效,嗯。。虽然不符合逻辑 + +此时 `DuangService` 已经注入到 `Lol` 对象中,运行代码的结果(这里是例子,代码不能运行的)就是: + +```sh +德玛买了5毛钱的特效,装逼成功! +``` + +好了,深入的不说了,我们不是学spring的,只是知道一下ioc在spring中高大上的形象,接下来步入正轨,开始设计一个IOC容器 + +## links + * [目录]() + * 上一节: [IOC的概念](<1.concept.md>) + * 下一节: [设计一个IOC](<3.myioc.md>) \ No newline at end of file diff --git a/_book/cache/3.myioc.md b/_book/cache/3.myioc.md new file mode 100644 index 0000000..fddb958 --- /dev/null +++ b/_book/cache/3.myioc.md @@ -0,0 +1,304 @@ +# 设计一个IOC + +我们要自己设计一个IOC,那么目标是什么呢? +我们的IOC容器要可以存储对象,还要有注解注入的功能即可。 + +首先设计接口,一个IOC容器中最核心的当属容器接口,来一个Container。 + +那么容器里应该有什么呢,我想它至少要有存储和移除一个对象的能力,其次可以含括更多的获取和注册对象的方法。 + +```java +/** + * IOC容器 + * @author biezhi + * + */ +public interface Container { + + /** + * 根据Class获取Bean + * @param clazz + * @return + */ + public T getBean(Class clazz); + + /** + * 根据名称获取Bean + * @param name + * @return + */ + public T getBeanByName(String name); + + /** + * 注册一个Bean到容器中 + * @param object + */ + public Object registerBean(Object bean); + + /** + * 注册一个Class到容器中 + * @param clazz + */ + public Object registerBean(Class clazz); + + /** + * 注册一个带名称的Bean到容器中 + * @param name + * @param bean + */ + public Object registerBean(String name, Object bean); + + /** + * 删除一个bean + * @param clazz + */ + public void remove(Class clazz); + + /** + * 根据名称删除一个bean + * @param name + */ + public void removeByName(String name); + + /** + * @return 返回所有bean对象名称 + */ + public Set getBeanNames(); + + /** + * 初始化装配 + */ + public void initWrited(); +} +``` + +那么我写一个简单的实现代码: + +```java +/** + * 容器简单实现 + * @author biezhi + */ +@SuppressWarnings("unchecked") +public class SampleContainer implements Container { + + /** + * 保存所有bean对象,格式为 com.xxx.Person : @52x2xa + */ + private Map beans; + + /** + * 存储bean和name的关系 + */ + private Map beanKeys; + + public SampleContainer() { + this.beans = new ConcurrentHashMap(); + this.beanKeys = new ConcurrentHashMap(); + } + + @Override + public T getBean(Class clazz) { + String name = clazz.getName(); + Object object = beans.get(name); + if(null != object){ + return (T) object; + } + return null; + } + + @Override + public T getBeanByName(String name) { + Object object = beans.get(name); + if(null != object){ + return (T) object; + } + return null; + } + + @Override + public Object registerBean(Object bean) { + String name = bean.getClass().getName(); + beanKeys.put(name, name); + beans.put(name, bean); + return bean; + } + + @Override + public Object registerBean(Class clazz) { + String name = clazz.getName(); + beanKeys.put(name, name); + Object bean = ReflectUtil.newInstance(clazz); + beans.put(name, bean); + return bean; + } + + @Override + public Object registerBean(String name, Object bean) { + String className = bean.getClass().getName(); + beanKeys.put(name, className); + beans.put(className, bean); + return bean; + } + + @Override + public Set getBeanNames() { + return beanKeys.keySet(); + } + + @Override + public void remove(Class clazz) { + String className = clazz.getName(); + if(null != className && !className.equals("")){ + beanKeys.remove(className); + beans.remove(className); + } + } + + @Override + public void removeByName(String name) { + String className = beanKeys.get(name); + if(null != className && !className.equals("")){ + beanKeys.remove(name); + beans.remove(className); + } + } + + @Override + public void initWrited() { + Iterator> it = beans.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry entry = (Map.Entry) it.next(); + Object object = entry.getValue(); + injection(object); + } + } + + /** + * 注入对象 + * @param object + */ + public void injection(Object object) { + // 所有字段 + try { + Field[] fields = object.getClass().getDeclaredFields(); + for (Field field : fields) { + // 需要注入的字段 + AutoWrited autoWrited = field.getAnnotation(AutoWrited.class); + if (null != autoWrited) { + + // 要注入的字段 + Object autoWritedField = null; + + String name = autoWrited.name(); + if(!name.equals("")){ + String className = beanKeys.get(name); + if(null != className && !className.equals("")){ + autoWritedField = beans.get(className); + } + if (null == autoWritedField) { + throw new RuntimeException("Unable to load " + name); + } + } else { + if(autoWrited.value() == Class.class){ + autoWritedField = recursiveAssembly(field.getType()); + } else { + // 指定装配的类 + autoWritedField = this.getBean(autoWrited.value()); + if (null == autoWritedField) { + autoWritedField = recursiveAssembly(autoWrited.value()); + } + } + } + + if (null == autoWritedField) { + throw new RuntimeException("Unable to load " + field.getType().getCanonicalName()); + } + + boolean accessible = field.isAccessible(); + field.setAccessible(true); + field.set(object, autoWritedField); + field.setAccessible(accessible); + } + } + } catch (SecurityException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + + private Object recursiveAssembly(Class clazz){ + if(null != clazz){ + return this.registerBean(clazz); + } + return null; + } + +} +``` + +这里将所有Bean的名称存储在 `beanKeys` 这个map中,将所有的对象存储在 `beans` 中,用 `beanKeys` 维护名称和对象的关系。 + +在装配的时候步骤如下: + +1. 判断是否使用了自定义命名的对象(是:根据name查找bean) +2. 判断是否使用了Class类型Bean(是:根据Class查找Bean,如果查找不到则创建一个无参构造函数的Bean) + +下面是一个测试: + +```java +public class IocTest { + + private static Container container = new SampleContainer(); + + public static void baseTest(){ + container.registerBean(Lol.class); + // 初始化注入 + container.initWrited(); + + Lol lol = container.getBean(Lol.class); + lol.work(); + } + + public static void iocClassTest(){ + container.registerBean(Lol2.class); + // 初始化注入 + container.initWrited(); + + Lol2 lol = container.getBean(Lol2.class); + lol.work(); + } + + public static void iocNameTest(){ + container.registerBean("face", new FaceService2()); + container.registerBean(Lol3.class); + // 初始化注入 + container.initWrited(); + + Lol3 lol = container.getBean(Lol3.class); + lol.work(); + } + + public static void main(String[] args) { + baseTest(); + //iocClassTest(); + //iocNameTest(); + } + +} +``` + +输出结果: + +```sh +剑圣买了5毛钱特效,装逼成功! +``` + +[代码出处](https://github.com/junicorn/easy-ioc/tree/master/src/test/java/com/junicorn/ioc/test) + +## links + * [目录]() + * 上一节: [Spring中怎么用](<2.spring.md>) \ No newline at end of file diff --git a/_book/cache/index.md b/_book/cache/index.md new file mode 100644 index 0000000..7c0aeab --- /dev/null +++ b/_book/cache/index.md @@ -0,0 +1,14 @@ +# 缓存的理解与实现 + +![](http://i.imgur.com/HLyJOSv.png) + +IOC是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱好、qq号、电话号、微信号...(balabala),想办法认识她们,投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的,我们必须自己设计和面对每个环节。传统的程序开发也是如此,在一个对象中,如果要使用另外的对象,就必须得到它(自己new一个,或者从 `JNDI` 中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来。 +下面的章节带你理解并实现一个IOC容器。 + +IOC源码:[https://github.com/junicorn/easy-ioc](https://github.com/junicorn/easy-ioc) + +## 目录 + +* [IOC的概念](1.concept.md) +* [Spring中怎么用](2.spring.md) +* [设计一个IOC](3.myioc.md) diff --git a/_book/designpatterns/proxy.html b/_book/designpatterns/proxy.html new file mode 100644 index 0000000..202ac93 --- /dev/null +++ b/_book/designpatterns/proxy.html @@ -0,0 +1,1630 @@ + + + + + + + 代理模式剖析 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            + + + + + + + + +
            + +
            + +
            + + + + + + + + +
            +
            + +
            +
            + +
            + +

            代理模式剖析

            + +

            代理模式定义

            +

            维基百科上是这样描述代理模式的:所谓代理者是指一个类可以作为其他东西的接口。代理者可以作任何东西的接口, 例如网络连接,存储器中的大对象,文件或者其他无法复制的资源。

            +

            著名的代理模式的例子就是引用计数(reference counting): 当需要一个复杂对象的多份副本时,代理模式可以结合享元模式以减少存储器的用量。典型做法是创建一个复杂对象以及多个代理者,每个代理者会引用到原本的对象。而作用在代理者的运算会转送到原本对象。一旦所有的代理者都不存在时,复杂对象会被移除。

            +

            静态代理

            +

            所谓静态代理,就是在编译阶段就生成代理类来完成对代理对象的一系列操作。下面是代理模式的结构类图:

            +

            代理模式的参与者

            +

            代理模式的角色分四种:

            +
              +
            • 主题接口: 即代理类的所实现的行为接口。
            • +
            • 目标对象: 也就是被代理的对象。
            • +
            • 代理对象: 用来封装真是主题类的代理类
            • +
            • 客户端
            • +
            +

            下面是代理模式的类图结构:

            +

            +

            代理模式的实现思路

            +
              +
            • 代理对象目标对象均实现同一个行为接口
            • +
            • 代理类目标类分别具体实现接口逻辑。
            • +
            • 代理类的构造函数中实例化一个目标对象
            • +
            • 代理类中调用目标对象的行为接口。
            • +
            • 客户端想要调用目标对象的行为接口,只能通过代理类来操作。
            • +
            +

            静态代理的实例

            +

            下面以一个延迟加载的例子来说明一下静态代理。我们在启动某个服务系统时,加载某一个类时可能会耗费很长时间。为了获取更好的性能,在启动系统的时候,我们往往不去初始化这个复杂的类,取而代之的是去初始化其代理类。这样将耗费资源多的方法使用代理进行分离,可以加快系统的启动速度,减少用户等待的时间。

            +
              +
            • 定义一个主题接口
            • +
            +
            public interface Subject {
            +    public void sayHello();
            +    public void sayGoodBye();
            +}
            +
            +
              +
            • 定义一个目标类, 并实现主题接口
            • +
            +
            public class RealSubject implements Subject {
            +    public void sayHello() {
            +        System.out.println("Hello World");
            +    }
            +
            +    public void sayGoodBye() {
            +        System.out.println("GoodBye World");
            +    }
            +}
            +
            +
              +
            • 定义一个代理类,来代理目标对象
            • +
            +
            public class StaticProxy implements Subject {
            +
            +    Private RealSubject realSubject = null;
            +
            +    public StaticProxy() {}
            +
            +    public void sayHello() {
            +        //用到时候才加载,懒加载
            +        if(realSubject == null) {
            +            realSubject = new RealSubject();
            +        }
            +        realSubject.sayHello();
            +    }
            +
            +    //sayGoodbye方法同理
            +    ...
            +}
            +
            +
              +
            • 定义一个客户端
            • +
            +
            public class Client {
            +    public static void main(String [] args) {
            +        StaticProxy sp = new StaticProxy();
            +        sp.sayHello();
            +        sp.sayGoodBye();
            +    }
            +}
            +
            +

            以上就是静态代理的一个简单测试例子。感觉可能没有实际用途。然而并非如此。使用代理我们还可以将目标对象的方法进行改造,比如数据库连接池中创建了一系列连接,为了保证不频繁的打开连接,这些连接是几乎不会关闭的。然而我们编程总有习惯去将打开的 Connectionclose 。 这样我们就可以利用代理模式来重新代理 Connection 接口中的 close 方法,改变为回收到数据库连接池中而不是真正的执行 Connection.close 方法。其他的例子还有很多,具体需要自己体会。

            +

            动态代理

            +

            动态代理是指在运行时动态生成代理类。即,代理类的字节码将在运行时生成并载入当前代理的 ClassLoader。与静态处理类相比,动态类有诸多好处。

            +
              +
            • 不需要为真实主题写一个形式上完全一样的封装类,假如主题接口中的方法很多,为每一个接口写一个代理方法也很麻烦。如果接口有变动,则真实主题和代理类都要修改,不利于系统维护;
            • +
            • 使用一些动态代理的生成方法甚至可以在运行时制定代理类的执行逻辑,从而大大提升系统的灵活性。
            • +
            +

            生成动态代理的方法有很多: JDK中自带动态代理CGlib, javassist等。这些方法各有优缺点。本文主要探究JDK中的动态代理的使用和源码分析。

            +

            下面用一个实例讲解一下JDK中动态代理的用法:

            +
            public class dynamicProxy implements InvocationHandler {
            +
            +    private RealSubject = null;
            +
            +    public Object invoke(Object proxy, Method method, Object[] args){
            +        if(RealSubject == null) {
            +            RealSubject = new RealSubject();
            +        }
            +        method.invoke(RealSubject, args);
            +        return RealSubject;
            +    }
            +
            +}
            +
            +

            客户端代码实例

            +
            public class Client {
            +    public static void main(Strings[] args) {
            +        Subject subject = (Subject)Proxy.newInstance(ClassLoader.getSystemLoader(), RealSubject.class.getInterfaces(), new DynamicProxy());
            +        Subject.sayHello();
            +        Subject.sayGoodBye();
            +    }
            +}
            +
            +

            从上面的代码可以看出,要利用JDK中的动态代理。利用静态方法Proxy.newInstance(ClassLoader, Interfaces[], InvokeHandler)可以创建一个动态代理类。 newInstance方法有三个参数,分别表示类加载器一个希望该代理类实现的接口列表,以及实现InvokeHandler接口的实例。 动态代理将每个方法的执行过程则交给了Invoke方法处理。

            +

            JDK动态代理要求,被代理的必须是个接口,单纯的类则不行。JDK动态代理所生成的代理类都会继承 Proxy 类,同时代理类会实现所有你传入的接口列表。因此可以强制类型转换成接口类型。 下面是 Proxy 的结构图。

            +

            +

            可以看出Proxy全是静态方法,因此如果代理类没有实现任何接口,那么他就是Proxy类型,没有实例方法。

            +

            当然加入你要是非要代理一个没有实现某个接口的类,同时该类的方法与其他接口定义的方法相同,利用反射也是可以轻松实现的。

            +
            public class DynamicProxy implements InvokeHandler {
            +
            +    //你想代理的类
            +    private TargetClass targetClass = null;
            +
            +    //初始化该类
            +    public DynamicProxy(TargetClass targetClass) {
            +        this.targetClass = targetClass;
            +    }
            +
            +    public Object invoke(Object proxy, Method method, Object[] args) {
            +        //利用反射获取你想代理的类的方法
            +        Method myMethod = targetClass.getClass().getDeclaredMethod(method.getName(), method.getParameterTypes());
            +        myMethod.setAccessible(true);
            +        return myMethod.invoke(targetClass, args);
            +    }
            +}
            +
            +

            JDK动态代理源码分析(JDK7)

            +

            看了上面的例子,我们只是简单会用动态代理。但是对于代理类是如何创建出来的,是谁调用Invoke方法等还云里雾里。下面通过分析

            +

            代理对象是如何创建出来的?

            +

            首先看 Proxy.newInstance 方法的源码:

            +
            public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException {
            +
            +    //获取接口信息
            +    final Class<?>[] intfs = interfaces.clone();
            +    final SecurityManager sm = System.getSecurityManager();
            +    if (sm != null) {
            +        checkProxyAccess(Reflection.getCallerClass(), loader, intfs);
            +    }
            +
            +    //生成代理类
            +    Class<?> cl = getProxyClass0(loader, intfs);
            +    // ...OK我们先看前半截
            +}
            +
            +

            从源码看出代理类的生成是依靠getProxyClass0这个方法,接下来看getProxyClass0源码:

            +
            private static Class<?> getProxyClass0(ClassLoader loader, Class<?>... interfaces) {
            +
            +    //接口列表数目不能超过0xFFFF
            +    if (interfaces.length > 65535) {
            +        throw new IllegalArgumentException("interface limit exceeded");
            +    }
            +
            +    //注意这里, 下面详细解释  
            +    return proxyClassCache.get(loader, interfaces);
            +}
            +
            +

            proxyClassCache.get 的解释是: 如果实现接口列表的代理类已经存在,那么直接从cache中拿。如果不存在,则通过ProxyClassFactory生成一个。

            +

            在看 proxyClassCache.get 源码之前,先简单了解一下 proxyClassCache

            +
            private static final WeakCache<ClassLoader, Class<?>[], Class<?>>
            +        proxyClassCache = new WeakCache<>(new KeyFactory(), new ProxyClassFactory());
            +
            +

            proxyClassCache是一个WeakCache类型的缓存,它的构造函数有两个参数,其中一个就是用于生成代理类的ProxyClassFactory,下面是proxyClassCache.get的源码:

            +
            final class WeakCache<K, P, V> {
            +    ...
            +    public V get(K key, P parameter) {}
            +}
            +
            +

            这里K表示key,P表示parameters, V表示value

            +
            public V get(K key, P parameter) {
            +
            +    // java7 NullObject判断方法,如果parameter为空则抛出带有指定消息的异常。 如果不为空则返回。
            +    Objects.requireNonNull(parameter);
            +
            +    // 清理持有弱引用的WeakHashMap这种数据结构,一般用于缓存
            +    expungeStaleEntries();
            +
            +    // 从队列中获取cacheKey
            +    Object cacheKey = CacheKey.valueOf(key, refQueue);
            +
            +    //利用懒加载的方式填充Supplier,Concurrent是一种线程安全的map
            +    ConcurrentMap<Object, Supplier<V>> valuesMap = map.get(cacheKey);
            +    if (valuesMap == null) {
            +        ConcurrentMap<Object, Supplier<V>> oldValuesMap = map.putIfAbsent(cacheKey, valuesMap = new ConcurrentHashMap<>());
            +        if (oldValuesMap != null) {
            +            valuesMap = oldValuesMap;
            +        }
            +    }
            +
            +    // create subKey and retrieve the possible Supplier<V> stored by that
            +    // subKey from valuesMap
            +    Object subKey = Objects.requireNonNull(subKeyFactory.apply(key, parameter));
            +    Supplier<V> supplier = valuesMap.get(subKey);
            +    Factory factory = null;
            +    while (true) {
            +        if (supplier != null) {
            +            // 从supplier中获取Value,这个Value可能是一个工厂或者Cache的实
            +            //下面这三句代码是核心代码,返回实现InvokeHandler的类并包含了所需要的信息。
            +            V value = supplier.get();
            +            if (value != null) {
            +                return value;
            +            }
            +        }
            +
            +        // else no supplier in cache
            +        // or a supplier that returned null (could be a cleared CacheValue
            +        // or a Factory that wasn't successful in installing the CacheValue)
            +        //下面这个过程就是填充supplier的过程
            +        if(factory == null) {
            +            //创建一个factory
            +        }
            +        if(supplier == null) {
            +            //填充supplier
            +        }else {
            +            //填充supplier
            +        }
            +    }
            +}
            +
            +

            while循环的作用就是不停的获取实现InvokeHandler的类,这个类可以是从缓存中拿到,也可是是从proxyFactoryClass生成的。 +Factory是一个实现了Supplier<V>接口的内部类。这个类覆盖了get方法,在get方法中调用了类型为proxyFactoryClass的实例方法apply。这个方法才是真正创建代理类的方法。下面看ProxyFactoryClass.apply方法的源码:

            +
            public Class<?> apply(ClassLoader loader, Class<?>[] interfaces) {
            +    Map<Class<?>, Boolean> interfaceSet = new IdentityHashMap<>(interfaces.length);
            +    for (Class<?> intf : interfaces) {
            +        /*  Verify that the class loader resolves the name of this interface to the same Class object.*/
            +        Class<?> interfaceClass = null;
            +        try {
            +            //加载每一个接口运行时的信息
            +            interfaceClass = Class.forName(intf.getName(), false, loader);
            +        } catch (ClassNotFoundException e) {
            +        }
            +
            +        //如果使用你自己的classload加载的class与你传入的class不相等,抛出异常
            +        if (interfaceClass != intf) {
            +            throw new IllegalArgumentException(
            +            intf + " is not visible from class loader");
            +        }
            +
            +        //如果传入不是一个接口类型
            +        if (!interfaceClass.isInterface()) {
            +            throw new IllegalArgumentException(
            +                interfaceClass.getName() + " is not an interface");
            +        }
            +
            +         //验证接口是否重复
            +        if (interfaceSet.put(interfaceClass, Boolean.TRUE) != null) {
            +            throw new IllegalArgumentException("repeated interface: " + interfaceClass.getName());
            +        }
            +    }
            +
            +    String proxyPkg = null;     // package to define proxy class in
            +    /*  Record the package of a non-public proxy interface so that the proxy class will be defined in the same package.  
            +    * Verify that all non-public proxy interfaces are in the same package.
            +    */
            +    //这一段是看你传入的接口中有没有不是public的接口,如果有,这些接口必须全部在一个包里定义的,否则抛异常 
            +    for (Class<?> intf : interfaces) {
            +        int flags = intf.getModifiers();
            +        if (!Modifier.isPublic(flags)) {
            +            String name = intf.getName();
            +            int n = name.lastIndexOf('.');
            +            String pkg = ((n == -1) ? "" : name.substring(0, n + 1));
            +            if (proxyPkg == null) {
            +                proxyPkg = pkg;
            +            } else if (!pkg.equals(proxyPkg)) {
            +                throw new IllegalArgumentException(
            +                    "non-public interfaces from different packages");
            +            }
            +        }
            +    }
            +    if (proxyPkg == null) {
            +        // if no non-public proxy interfaces, use com.sun.proxy package
            +        proxyPkg = ReflectUtil.PROXY_PACKAGE + ".";
            +    }
            +    /*
            +    * Choose a name for the proxy class to generate.
            +    */
            +    long num = nextUniqueNumber.getAndIncrement();
            +    //生成随机代理类的类名,$Proxy + num
            +    String proxyName = proxyPkg + proxyClassNamePrefix + num;
            +    /*
            +    * 生成代理类的class文件,返回字节流
            +    */
            +    byte[] proxyClassFile = ProxyGenerator.generateProxyClass(proxyName, interfaces);
            +    try {
            +        return defineClass0(loader, proxyName, proxyClassFile, 0, proxyClassFile.length);
            +    } catch (ClassFormatError e) {
            +                //结束
            +                throw new IllegalArgumentException(e.toString());
            +            }
            +        }
            +    }
            +}
            +
            +

            前文提到ProxyFactoryClass.apply是真正生成代理类的方法,这其实是不准确的。源代码读到这里,我们会发现ProxyGenerator.generateProxyClass才是真正生成代理类的方法。 +根据Java class字节码组成来生成相应的Clss文件。具体ProxyGenerator.generateProxyClass源码如下:

            +
            private byte[] generateClassFile() {
            +    /*
            +    * Step 1: Assemble ProxyMethod objects for all methods to
            +    * generate proxy dispatching code for.
            +    */
            +    //addProxyMethod方法,就是将方法都加入到一个列表中,并与对应的class对应起来  
            +    //这里给Object对应了三个方法hashCode,toString和equals  
            +    addProxyMethod(hashCodeMethod, Object.class);
            +    addProxyMethod(equalsMethod, Object.class);
            +    addProxyMethod(toStringMethod, Object.class);
            +    //将接口列表中的接口与接口下的方法对应起来
            +    for (int i = 0; i < interfaces.length; i++) {
            +        Method[] methods = interfaces[i].getMethods();
            +        for (int j = 0; j < methods.length; j++) {
            +            addProxyMethod(methods[j], interfaces[i]);
            +        }
            +    }
            +    /*
            +     * For each set of proxy methods with the same signature,
            +     * verify that the methods' return types are compatible.
            +     */
            +    for (List<ProxyMethod> sigmethods : proxyMethods.values()) {
            +        checkReturnTypes(sigmethods);
            +    }
            +    /*
            +     * Step 2: Assemble FieldInfo and MethodInfo structs for all of
            +     * fields and methods in the class we are generating.
            +     */
            +     //方法中加入构造方法,这个构造方法只有一个,就是一个带有InvocationHandler接口的构造方法 
            +     //这个才是真正给class文件,也就是代理类加入方法了,不过还没真正处理,只是先加进来等待循环,构造方法在class文件中的名称描述是<init>  
            +    try {
            +        methods.add(generateConstructor());
            +        for (List<ProxyMethod> sigmethods : proxyMethods.values()) {
            +            for (ProxyMethod pm : sigmethods) {
            +                //给每一个代理方法加一个Method类型的属性,数字10是class文件的标识符,代表这些属性都是private static的  
            +                fields.add(new FieldInfo(pm.methodFieldName,
            +                "Ljava/lang/reflect/Method;",
            +                ACC_PRIVATE | ACC_STATIC));
            +                //将每一个代理方法都加到代理类的方法中 
            +                methods.add(pm.generateMethod());
            +            }
            +        }
            +        //加入一个静态初始化块,将每一个属性都初始化,这里静态代码块也叫类构造方法,其实就是名称为<clinit>的方法,所以加到方法列表  
            +        methods.add(generateStaticInitializer());
            +    } catch (IOException e) {
            +        throw new InternalError("unexpected I/O Exception");
            +    }
            +    //方法和属性个数都不能超过65535,包括之前的接口个数也是这样,
            +    //这是因为在class文件中,这些个数都是用4位16进制表示的,所以最大值是2的16次方-1  
            +    if (methods.size() > 65535) {
            +        throw new IllegalArgumentException("method limit exceeded");
            +    }
            +    if (fields.size() > 65535) {
            +        throw new IllegalArgumentException("field limit exceeded");
            +    }
            +    //接下来就是写class文件的过程,包括魔数,类名,常量池等一系列字节码的组成,就不一一细说了。需要的可以参考JVM虚拟机字节码的相关知识。
            +    cp.getClass(dotToSlash(className));
            +    cp.getClass(superclassName);
            +    for (int i = 0; i < interfaces.length; i++) {
            +        cp.getClass(dotToSlash(interfaces[i].getName()));
            +    }
            +    cp.setReadOnly();
            +    ByteArrayOutputStream bout = new ByteArrayOutputStream();
            +    DataOutputStream dout = new DataOutputStream(bout);
            +    try {
            +        // u4 magic;
            +        dout.writeInt(0xCAFEBABE);
            +        // u2 minor_version;
            +        dout.writeShort(CLASSFILE_MINOR_VERSION);
            +        // u2 major_version;
            +        dout.writeShort(CLASSFILE_MAJOR_VERSION);
            +        cp.write(dout);             // (write constant pool)
            +        // u2 access_flags;
            +        dout.writeShort(ACC_PUBLIC | ACC_FINAL | ACC_SUPER);
            +        // u2 this_class;
            +        dout.writeShort(cp.getClass(dotToSlash(className)));
            +        // u2 super_class;
            +        dout.writeShort(cp.getClass(superclassName));
            +        // u2 interfaces_count;
            +        dout.writeShort(interfaces.length);
            +
            +        // u2 interfaces[interfaces_count];
            +        for (int i = 0; i < interfaces.length; i++) {
            +            dout.writeShort(cp.getClass(
            +            dotToSlash(interfaces[i].getName())));
            +        }
            +
            +        // u2 fields_count;
            +        dout.writeShort(fields.size());
            +        // field_info fields[fields_count];
            +        for (FieldInfo f : fields) {
            +            f.write(dout);
            +        }
            +
            +        // u2 methods_count;
            +        dout.writeShort(methods.size());
            +        // method_info methods[methods_count];
            +        for (MethodInfo m : methods) {
            +            m.write(dout);
            +        }
            +        // u2 attributes_count;
            +        dout.writeShort(0); // (no ClassFile attributes for proxy classes)
            +    } catch (IOException e) {
            +        throw new InternalError("unexpected I/O Exception");
            +    }
            +    return bout.toByteArray();
            +}
            +
            +

            经过层层调用,一个代理类终于生成了。

            +

            是谁调用了Invoke?

            +

            我们模拟JDK自己生成一个代理类, 类名为TestProxyGen

            +
            public class TestGeneratorProxy {
            +    public static void main(String[] args) throws IOException {
            +        byte[] classFile = ProxyGenerator.generateProxyClass("TestProxyGen",
            +                Subject.class.getInterfaces());
            +        File file = new File("/Users/yadoao/Desktop/TestProxyGen.class");
            +        FileOutputStream fos = new FileOutputStream(file);  
            +        fos.write(classFile);  
            +        fos.flush();  
            +        fos.close();  
            +    }
            +}
            +
            +

            用JD-GUI反编译该class文件,结果如下:

            +
            import java.lang.reflect.InvocationHandler;
            +import java.lang.reflect.Method;
            +import java.lang.reflect.Proxy;
            +import java.lang.reflect.UndeclaredThrowableException;
            +
            +public final class TestProxyGen extends Proxy implements ISubject {
            +
            +    private static Method m3;
            +    private static Method m1;
            +    private static Method m0;
            +    private static Method m4;
            +    private static Method m2;
            +
            +    public TestProxyGen(InvocationHandler paramInvocationHandler) throws {
            +        super(paramInvocationHandler);
            +    }
            +
            +    public final void sayHello() throws {
            +        try {
            +            this.h.invoke(this, m3, null);
            +            return;
            +        } catch (Error|RuntimeException localError) {
            +            throw localError;
            +        } catch (Throwable localThrowable) {
            +            throw new UndeclaredThrowableException(localThrowable);
            +        }
            +    }
            +
            +    public final boolean equals(Object paramObject) throws {
            +        try {
            +            return ((Boolean)this.h.invoke(this, m1, new Object[] { paramObject })).booleanValue();
            +        } catch (Error|RuntimeException localError) {
            +            throw localError;
            +        } catch (Throwable localThrowable) {
            +            throw new UndeclaredThrowableException(localThrowable);
            +        }
            +    }
            +
            +    public final int hashCode() throws {
            +        try {
            +            return ((Integer)this.h.invoke(this, m0, null)).intValue();
            +        } catch (Error|RuntimeException localError) {
            +            throw localError;
            +        } catch (Throwable localThrowable) {
            +            throw new UndeclaredThrowableException(localThrowable);
            +        }
            +    }
            +
            +    public final void sayGoodBye() throws {
            +        try {
            +            this.h.invoke(this, m4, null);
            +            return;
            +        } catch (Error|RuntimeException localError) {
            +            throw localError;
            +        } catch (Throwable localThrowable) {
            +            throw new UndeclaredThrowableException(localThrowable);
            +        }
            +    }
            +
            +    public final String toString() throws {
            +        try {
            +            return (String)this.h.invoke(this, m2, null);
            +        } catch (Error|RuntimeException localError) {
            +            throw localError;
            +        } catch (Throwable localThrowable) {
            +            throw new UndeclaredThrowableException(localThrowable);
            +        }
            +    }
            +
            +    static {
            +        try {
            +            m3 = Class.forName("com.su.dynamicProxy.ISubject").getMethod("sayHello", new Class[0]);
            +            m1 = Class.forName("java.lang.Object").getMethod("equals", new Class[] { Class.forName("java.lang.Object") });
            +            m0 = Class.forName("java.lang.Object").getMethod("hashCode", new Class[0]);
            +            m4 = Class.forName("com.su.dynamicProxy.ISubject").getMethod("sayGoodBye", new Class[0]);
            +            m2 = Class.forName("java.lang.Object").getMethod("toString", new Class[0]);
            +            return;
            +        } catch (NoSuchMethodException localNoSuchMethodException) {
            +            throw new NoSuchMethodError(localNoSuchMethodException.getMessage());
            +        } catch (ClassNotFoundException localClassNotFoundException) {
            +            throw new NoClassDefFoundError(localClassNotFoundException.getMessage());
            +        }
            +    }
            +}
            +
            +
              +
            • 首先注意到生成代理类的构造函数,它传入一个实现InvokeHandler接口的类作为参数,并调用父类Proxy的构造器,即将Proxy中的成员变量protected InvokeHander h进行了初始化。
            • +
            • 再次注意到几个静态的初始化块,这里的静态初始化块就是对代理的接口列表以及hashcode,toString, equals方法进行初始化。
            • +
            • 最后就是这几个方法的调用过程,全都是回调Invoke方法。
            • +
            +

            就此代理模式分析到此结束。

            +

            参考文献

            + + + +
            + +
            +
            +
            + +

            results matching ""

            +
              + +
              +
              + +

              No results matching ""

              + +
              +
              +
              + +
              +
              + +
              + + + + + + + + + + + + + + +
              + + +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/designpatterns/singleton.html b/_book/designpatterns/singleton.html new file mode 100644 index 0000000..a566a51 --- /dev/null +++ b/_book/designpatterns/singleton.html @@ -0,0 +1,1205 @@ + + + + + + + 如何正确地写出单例模式 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              +
              + + + + + + + + +
              + +
              + +
              + + + + + + + + +
              +
              + +
              +
              + +
              + +

              如何正确地写出单例模式

              +

              单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可能会帮助到你。

              +

              懒汉式,线程不安全

              +

              当被问到要实现一个单例模式时,很多人的第一反应是写出如下的代码,包括教科书上也是这样教我们的。

              +
              public class Singleton {
              +    private static Singleton instance;
              +    private Singleton (){}
              +
              +    public static Singleton getInstance() {
              +     if (instance == null) {
              +         instance = new Singleton();
              +     }
              +     return instance;
              +    }
              +}
              +
              +

              这段代码简单明了,而且使用了懒加载模式,但是却存在致命的问题。当有多个线程并行调用 getInstance() 的时候,就会创建多个实例。也就是说在多线程下不能正常工作。

              +

              懒汉式,线程安全

              +

              为了解决上面的问题,最简单的方法是将整个 getInstance() 方法设为同步(synchronized)。

              +
              public static synchronized Singleton getInstance() {
              +    if (instance == null) {
              +        instance = new Singleton();
              +    }
              +    return instance;
              +}
              +
              +

              虽然做到了线程安全,并且解决了多实例的问题,但是它并不高效。因为在任何时候只能有一个线程调用 getInstance() 方法。但是同步操作只需要在第一次调用时才被需要,即第一次创建单例实例对象时。这就引出了双重检验锁。

              +

              双重检验锁

              +

              双重检验锁模式(double checked locking pattern),是一种使用同步块加锁的方法。程序员称其为双重检查锁,因为会有两次检查 instance == null,一次是在同步块外,一次是在同步块内。为什么在同步块内还要再检验一次?因为可能会有多个线程一起进入同步块外的 if,如果在同步块内不进行二次检验的话就会生成多个实例了。

              +
              public static Singleton getSingleton() {
              +    if (instance == null) {                         //Single Checked
              +        synchronized (Singleton.class) {
              +            if (instance == null) {                 //Double Checked
              +                instance = new Singleton();
              +            }
              +        }
              +    }
              +    return instance ;
              +}
              +
              +

              这段代码看起来很完美,很可惜,它是有问题。主要在于instance = new Singleton()这句,这并非是一个原子操作,事实上在 JVM 中这句话大概做了下面 3 件事情。

              +
                +
              1. 给 instance 分配内存
              2. +
              3. 调用 Singleton 的构造函数来初始化成员变量
              4. +
              5. 将instance对象指向分配的内存空间(执行完这步 instance 就为非 null 了)
              6. +
              +

              但是在 JVM 的即时编译器中存在指令重排序的优化。也就是说上面的第二步和第三步的顺序是不能保证的,最终的执行顺序可能是 1-2-3 也可能是 1-3-2。如果是后者,则在 3 执行完毕、2 未执行之前,被线程二抢占了,这时 instance 已经是非 null 了(但却没有初始化),所以线程二会直接返回 instance,然后使用,然后顺理成章地报错。

              +

              我们只需要将 instance 变量声明成 volatile 就可以了。

              +
              public class Singleton {
              +    private volatile static Singleton instance; //声明成 volatile
              +    private Singleton (){}
              +
              +    public static Singleton getSingleton() {
              +        if (instance == null) {                         
              +            synchronized (Singleton.class) {
              +                if (instance == null) {       
              +                    instance = new Singleton();
              +                }
              +            }
              +        }
              +        return instance;
              +    }
              +
              +}
              +
              +

              有些人认为使用 volatile 的原因是可见性,也就是可以保证线程在本地不会存有 instance 的副本,每次都是去主内存中读取。但其实是不对的。使用 volatile 的主要原因是其另一个特性:禁止指令重排序优化。也就是说,在 volatile 变量的赋值操作后面会有一个内存屏障(生成的汇编代码上),读操作不会被重排序到内存屏障之前。比如上面的例子,取操作必须在执行完 1-2-3 之后或者 1-3-2 之后,不存在执行到 1-3 然后取到值的情况。从「先行发生原则」的角度理解的话,就是对于一个 volatile 变量的写操作都先行发生于后面对这个变量的读操作(这里的“后面”是时间上的先后顺序)。

              +

              但是特别注意在 Java 5 以前的版本使用了 volatile 的双检锁还是有问题的。其原因是 Java 5 以前的 JMM (Java 内存模型)是存在缺陷的,即时将变量声明成 volatile 也不能完全避免重排序,主要是 volatile 变量前后的代码仍然存在重排序问题。这个 volatile 屏蔽重排序的问题在 Java 5 中才得以修复,所以在这之后才可以放心使用 volatile。

              +

              相信你不会喜欢这种复杂又隐含问题的方式,当然我们有更好的实现线程安全的单例模式的办法。

              +

              饿汉式 static final field

              +

              这种方法非常简单,因为单例的实例被声明成 static 和 final 变量了,在第一次加载类到内存中时就会初始化,所以创建实例本身是线程安全的。

              +
              public class Singleton{
              +    //类加载时就初始化
              +    private static final Singleton instance = new Singleton();
              +
              +    private Singleton(){}
              +
              +    public static Singleton getInstance(){
              +        return instance;
              +    }
              +}
              +
              +

              这种写法如果完美的话,就没必要在啰嗦那么多双检锁的问题了。缺点是它不是一种懒加载模式(lazy initialization),单例会在加载类后一开始就被初始化,即使客户端没有调用 getInstance()方法。饿汉式的创建方式在一些场景中将无法使用:譬如 Singleton 实例的创建是依赖参数或者配置文件的,在 getInstance() 之前必须调用某个方法设置参数给它,那样这种单例写法就无法使用了。

              +

              静态内部类 static nested class

              +

              我比较倾向于使用静态内部类的方法,这种方法也是《Effective Java》上所推荐的。

              +
              public class Singleton {  
              +    private static class SingletonHolder {  
              +        private static final Singleton INSTANCE = new Singleton();  
              +    }  
              +    private Singleton (){}  
              +    public static final Singleton getInstance() {  
              +        return SingletonHolder.INSTANCE; 
              +    }  
              +}
              +
              +

              这种写法仍然使用JVM本身机制保证了线程安全问题;由于 SingletonHolder 是私有的,除了 getInstance() 之外没有办法访问它,因此它是懒汉式的;同时读取实例的时候不会进行同步,没有性能缺陷;也不依赖 JDK 版本。

              +

              枚举 Enum

              +

              用枚举写单例实在太简单了!这也是它最大的优点。下面这段代码就是声明枚举实例的通常做法。

              +
              public enum EasySingleton{
              +    INSTANCE;
              +}
              +
              +

              我们可以通过EasySingleton.INSTANCE来访问实例,这比调用getInstance()方法简单多了。创建枚举默认就是线程安全的,所以不需要担心double checked locking,而且还能防止反序列化导致重新创建新的对象。但是还是很少看到有人这样写,可能是因为不太熟悉吧。

              +

              总结

              +

              一般来说,单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。上述所说都是线程安全的实现,文章开头给出的第一种方法不算正确的写法。

              +

              就我个人而言,一般情况下直接使用饿汉式就好了,如果明确要求要懒加载(lazy initialization)会倾向于使用静态内部类,如果涉及到反序列化创建对象时会试着使用枚举的方式来实现单例。

              +

              Read More

              + +

              由于作者这篇文章写的非常好,我也就没有重写 原文出处

              + + +
              + +
              +
              +
              + +

              results matching ""

              +
                + +
                +
                + +

                No results matching ""

                + +
                +
                +
                + +
                +
                + +
                + + + + + + + + + + + + + + +
                + + +
                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/designpatterns/strategy.html b/_book/designpatterns/strategy.html new file mode 100644 index 0000000..6997bd2 --- /dev/null +++ b/_book/designpatterns/strategy.html @@ -0,0 +1,1285 @@ + + + + + + + 什么是策略模式 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                +
                + + + + + + + + +
                + +
                + +
                + + + + + + + + +
                +
                + +
                +
                + +
                + +

                什么是策略模式

                + +

                策略模式

                +

                策略模式的定义

                +

                策略模式,顾名思义就是指对象具有某个行为,但是在不同的业务场景下,这个行为应该有不同的表现形式,也就是有了不同的策略。让对象能再不同的场景下对同一行为有不同的实现,这就是策略模式。

                +

                下面是策略模式的类图:

                +

                +
                  +
                1. 首先定义一个策略接口:
                  public interface Strategy {
                  + public void algorithmStartegy() ;
                  +}
                  +
                  +
                2. +
                3. 定义两个具体的策略类:
                  public class ConcentrateStrategy_1 implements Strategy{
                  + @Override
                  + public void algorithmStartegy() {
                  +     System.out.println("I am algorithm strategy 1");
                  + }
                  +}
                  +public class ConcentrateStrategy_2 implements Strategy{
                  + @Override
                  + public void algorithmStartegy() {
                  +     System.out.println("I am algorithm strategy 2");
                  + }
                  +}
                  +
                  +
                4. +
                5. 定义一个算法使用场景
                  public class Situation {
                  + Strategy strategy;
                  + public Situation(Strategy strategy) {
                  +     this.strategy = strategy;
                  + }
                  + public void handleAlgorithm() {
                  +     strategy.algorithmStartegy();
                  + }
                  +}
                  +
                  +
                6. +
                7. 客户端调用
                  Situation situation = new Situation(new ConcentrateStrategy_1());
                  +situation.handleAlgorithm();
                  + ...
                  +
                  +
                8. +
                +

                从策略模式的描述以及类图来看真的是非常简单,总结起来就是策略模式定义了一组算法,它们有一个共同的策略行为接口,并且这些算法之间可以互相替换,使算法可以根据场景的不同而改变。

                +

                策略模式的实际应用

                +

                策略模式的应用有很多, 比如说JDK中FilenameFilter的使用过程, 比如场景java.util.Collections.sort(List<T>list, Comparator<? super T>c)与策略java.util.Comparator的使用等等。 +下面我以一个实际的业务场景来具体实现以下策略模式:

                +
                  +
                1. 背景: 中国银行的便民服务包括中国移动手机充值, 中国联通,中国电信。用户选择某个便民服务时, 服务器后台会向银行发送不同的业务XML报文, 已达到通信目的。
                2. +
                3. 实现

                  +
                    +
                  1. 定义策略接口 : 包含一个生成报文的方法
                    public interface IProduct {
                    +public String generateXML() ;
                    +}
                    +
                    +
                  2. +
                  3. 定义一组具体策略类:
                    @XMLType("Default")
                    +class DefaultHead implements IProduct {
                    +public String generateXML() {
                    + return "Defalut XML";
                    +}
                    +}
                    +@XMLType("ChinaMobile")
                    +class ChinaMobile implements IProduct{
                    +public String generateXML() {
                    + return "China Mobile XML";
                    +}
                    +}
                    +@XMLType("ChinaUnicom")
                    +class ChinaUnicom implements IProduct {
                    +public String generateXML() {
                    + return "Chinal Unicom XML";
                    +}
                    +}
                    +
                    +
                  4. +
                  5. 定义一个场景类用于生成XML报文
                    public class XMLGenerator {
                    +private IProduct product = new DefaultHead();
                    +//根据用户缴费类型,生成不同的通信报文
                    +public String generate(String type) {
                    + //注意此处
                    + product = ProductFactory.getInstance().createProduct(type);
                    +return product.generateXML();
                    +}
                    +}
                    +
                    +
                  6. +
                  7. 创建具体的策略类, 本来是可以用一系列的if else判断, 然后new相应的策略类。这里为了避免if else我们定义一个策略工厂,来生产具体的策略类。 +策略类工厂:这个工厂创建策略类的思路就是,载入一些列策略类,根据不同策略类的自定义注解和用户的传入参数来生成具体的策略类。 +```java +public class ProductFactory { +// singleton +private ProductFactory() {}

                    +

                    public static ProductFactory getInstance() { + return ProductFactoryInstance.instance; +}

                    +

                    private static class ProductFactoryInstance { + static final ProductFactory instance = new ProductFactory(); +}

                    +

                    //创建一个具体的策略类 +public IProduct createProduct(String productType) throws URISyntaxException { + // load all startegys + List> startegyList = loadAllStrategy("com.su.startegy"); + //遍历所有策略类, 根据条件找出需要用到的 + for(Class<? extends IProduct> clazz : startegyList) {

                    +
                     //解析策略类的注解
                    + XMLType xmlType = praseAnnotation(clazz);
                    + if(xmlType.value().equals(productType))
                    +     try {
                    +         return clazz.newInstance();
                    +     } catch (InstantiationException | IllegalAccessException e)  {
                    +         e.printStackTrace();
                    +     }
                    + }
                    +

                    } + //create IProduct Object failed + return null; +}

                    +

                    //载入策略类方法 +private List> loadAllStrategy(String packageName) throws URISyntaxException { + //定义一个策略类的列表 + List> strategyList = new ArrayList>(); + URI filePath = getClass().getClassLoader().getResource(packageName.replace(".", "/")).toURI(); + //获取filepath + File[] files = new File(filePath).listFiles(new FilenameFilter() {

                    +
                     @Override
                    + public boolean accept(File dir, String name) {
                    +     if (name.endsWith(".class"))
                    +         return true;
                    +     return false;
                    + }
                    +

                    }); + // load class + for (File file : files) {

                    +
                     try {
                    +     Class clazz = getClass().getClassLoader().loadClass(packageName + "." + file.getName().replace(".class", ""));
                    +     if (clazz != IProduct.class && IProduct.class.isAssignableFrom(clazz)) {
                    +         strategyList.add(clazz);
                    +     }
                    + } catch (ClassNotFoundException e) {
                    +     e.printStackTrace();
                    + }
                    +

                    } + return strategyList; +}

                    +

                    //解析注解方法 +private XMLType praseAnnotation(Class<? extends IProduct> clazz) { + XMLType xmlType = clazz.getAnnotation(XMLType.class); + if (xmlType == null) {

                    +
                     return null;
                    +

                    } + return xmlType; +}

                    +
                  8. +
                  +
                4. +
                +

                }

                +
                
                +此处我使用**注解**的原因是为了简单, 跟代码的耦合紧一点。
                +
                +**自定义的注解类: **
                +
                +```java
                +@Target(ElementType.TYPE)
                +@Retention(RetentionPolicy.RUNTIME)
                +public @interface XMLType {
                +    public String value() default "defalut";
                +}
                +

                以上就是此处的策略模式的设计过程,如果需要多种策略的叠加, 也就要相应的使用注解的嵌套了, 这里就不在发挥了。

                +

                策略模式中的设计原则

                +

                学习策略模式, 不要记住代码是怎么实现的,更重要的是记住其设计原则。根据原则写代码, 而不是生搬硬套。其实设计模式都是设计原则的体现, 如果理解了设计原则, 那么你写的代码也可以变成一种模式。

                +
                  +
                1. 开闭原则(Open-Closed Principle,缩写为OCP) +一个软件实体应当对扩展(例如对抽象层的扩展)开放,对修改(例如对抽象层的修改)关闭。即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。 +开闭原则的关键,在于抽象。策略模式,是开闭原则的一个极好的应用范例。

                  +
                2. +
                3. 里氏替换原则(Liskov Substitution Principle,缩写为LSP) +一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能察觉到基类对象和子类对象的区别。比如,假设有两个类,一个是Base类,一个是Derived类,并且Derived类是Base类的子类。那么一个方法如果可以接受一个基类对象b的话:method1(Base b),那么它必然可以接受一个子类对象d,也即可以有method1(d)。反之,则不一定成立 +里氏替换原则讲的是基类与子类的关系。只有当这种关系存在时,里氏替换关系才存在,反之则不存在。

                  +
                4. +
                +

                策略模式之所以可行的基础便是里氏替换原则:策略模式要求所有的策略对象都是可以互换的,因此它们都必须是一个抽象策略角色的子类。在客户端则仅知道抽象策略角色类型,虽然变量的真实类型可以是任何一个具体策略角色的实例

                +

                参考文献

                +

                策略模式设计原则

                + + +
                + +
                +
                +
                + +

                results matching ""

                +
                  + +
                  +
                  + +

                  No results matching ""

                  + +
                  +
                  +
                  + +
                  +
                  + +
                  + + + + + + + + + + + + + + +
                  + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/git/guide.html b/_book/git/guide.html new file mode 100644 index 0000000..ac4fed1 --- /dev/null +++ b/_book/git/guide.html @@ -0,0 +1,1205 @@ + + + + + + + git - 简明指南 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + +
                  + +
                  + + + + + + + + +
                  +
                  + +
                  +
                  + +
                  + +

                  git - 简明指南

                  +
                  +

                  助你入门 git 的简明指南,木有高深内容 ;)

                  +
                  +

                  安装

                  + +

                  创建新仓库

                  +

                  创建新文件夹,打开,然后执行

                  +
                  git init
                  +
                  +

                  以创建新的 git 仓库。

                  +

                  检出仓库

                  +

                  执行如下命令以创建一个本地仓库的克隆版本:

                  +
                  git clone /path/to/repository
                  +
                  +

                  如果是远端服务器上的仓库,你的命令会是这个样子:

                  +
                  git clone username@host:/path/to/repository
                  +
                  +

                  工作流

                  +

                  你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。

                  +

                  +

                  添加和提交

                  +

                  你可以提出更改(把它们添加到暂存区),使用如下命令:

                  +
                  git add <filename>
                  +git add *
                  +
                  +

                  这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:

                  +
                  git commit -m "代码提交信息"
                  +
                  +

                  现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。

                  +

                  推送改动

                  +

                  你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:

                  +
                  git push origin master
                  +
                  +

                  可以把 master 换成你想要推送的任何分支。

                  +

                  如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:

                  +
                  git remote add origin <server>
                  +
                  +

                  如此你就能够将你的改动推送到所添加的服务器上去了。

                  +

                  分支

                  +

                  分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。

                  +

                  +

                  创建一个叫做“feature_x”的分支,并切换过去:

                  +
                  git checkout -b feature_x
                  +
                  +

                  切换回主分支:

                  +
                  git checkout master
                  +
                  +

                  再把新建的分支删掉:

                  +
                  git branch -d feature_x
                  +
                  +

                  除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的

                  +
                  git push origin <branch>
                  +
                  +

                  更新与合并

                  +

                  要更新你的本地仓库至最新改动,执行:

                  +
                  git pull
                  +
                  +

                  以在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。 +要合并其他分支到你的当前分支(例如 master),执行:

                  +
                  git merge <branch>
                  +
                  +

                  在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:

                  +
                  git add <filename>
                  +
                  +

                  在合并改动之前,你可以使用如下命令预览差异:

                  +
                  git diff <source_branch> <target_branch>
                  +
                  +

                  标签

                  +

                  为软件发布创建标签是推荐的。这个概念早已存在,在 SVN 中也有。你可以执行如下命令创建一个叫做 1.0.0 的标签:

                  +
                  git tag 1.0.0 1b2e1d63ff
                  +
                  +

                  1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。可以使用下列命令获取提交 ID:

                  +
                  git log
                  +
                  +

                  你也可以使用少一点的提交 ID 前几位,只要它的指向具有唯一性。

                  +

                  替换本地改动

                  +

                  假如你操作失误(当然,这最好永远不要发生),你可以使用如下命令替换掉本地改动:

                  +
                  git checkout -- <filename>
                  +
                  +

                  此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。

                  +

                  假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:

                  +
                  git fetch origin
                  +git reset --hard origin/master
                  +
                  +

                  实用小贴士

                  +

                  内建的图形化 git:

                  +
                  gitk
                  +
                  +

                  彩色的 git 输出:

                  +
                  git config color.ui true
                  +
                  +

                  显示历史记录时,每个提交的信息只显示一行:

                  +
                  git config format.pretty oneline
                  +
                  +

                  交互式添加文件到暂存区:

                  +
                  git add -i
                  +
                  +

                  链接与资源

                  +

                  图形化客户端

                  + +

                  指南和手册

                  + + + +
                  + +
                  +
                  +
                  + +

                  results matching ""

                  +
                    + +
                    +
                    + +

                    No results matching ""

                    + +
                    +
                    +
                    + +
                    +
                    + +
                    + + + + + + + + + + +
                    + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/gitbook/fonts/fontawesome/FontAwesome.otf b/_book/gitbook/fonts/fontawesome/FontAwesome.otf new file mode 100644 index 0000000..d4de13e Binary files /dev/null and b/_book/gitbook/fonts/fontawesome/FontAwesome.otf differ diff --git a/_book/gitbook/fonts/fontawesome/fontawesome-webfont.eot b/_book/gitbook/fonts/fontawesome/fontawesome-webfont.eot new file mode 100644 index 0000000..c7b00d2 Binary files /dev/null and b/_book/gitbook/fonts/fontawesome/fontawesome-webfont.eot differ diff --git a/_book/gitbook/fonts/fontawesome/fontawesome-webfont.svg b/_book/gitbook/fonts/fontawesome/fontawesome-webfont.svg new file mode 100644 index 0000000..8b66187 --- /dev/null +++ b/_book/gitbook/fonts/fontawesome/fontawesome-webfont.svg @@ -0,0 +1,685 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_book/gitbook/fonts/fontawesome/fontawesome-webfont.ttf b/_book/gitbook/fonts/fontawesome/fontawesome-webfont.ttf new file mode 100644 index 0000000..f221e50 Binary files /dev/null and b/_book/gitbook/fonts/fontawesome/fontawesome-webfont.ttf differ diff --git a/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff b/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff new file mode 100644 index 0000000..6e7483c Binary files /dev/null and b/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff differ diff --git a/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 b/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 new file mode 100644 index 0000000..7eb74fd Binary files /dev/null and b/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 differ diff --git a/_book/gitbook/gitbook-plugin-fontsettings/fontsettings.js b/_book/gitbook/gitbook-plugin-fontsettings/fontsettings.js new file mode 100644 index 0000000..ff7be71 --- /dev/null +++ b/_book/gitbook/gitbook-plugin-fontsettings/fontsettings.js @@ -0,0 +1,240 @@ +require(['gitbook', 'jquery'], function(gitbook, $) { + // Configuration + var MAX_SIZE = 4, + MIN_SIZE = 0, + BUTTON_ID; + + // Current fontsettings state + var fontState; + + // Default themes + var THEMES = [ + { + config: 'white', + text: 'White', + id: 0 + }, + { + config: 'sepia', + text: 'Sepia', + id: 1 + }, + { + config: 'night', + text: 'Night', + id: 2 + } + ]; + + // Default font families + var FAMILIES = [ + { + config: 'serif', + text: 'Serif', + id: 0 + }, + { + config: 'sans', + text: 'Sans', + id: 1 + } + ]; + + // Return configured themes + function getThemes() { + return THEMES; + } + + // Modify configured themes + function setThemes(themes) { + THEMES = themes; + updateButtons(); + } + + // Return configured font families + function getFamilies() { + return FAMILIES; + } + + // Modify configured font families + function setFamilies(families) { + FAMILIES = families; + updateButtons(); + } + + // Save current font settings + function saveFontSettings() { + gitbook.storage.set('fontState', fontState); + update(); + } + + // Increase font size + function enlargeFontSize(e) { + e.preventDefault(); + if (fontState.size >= MAX_SIZE) return; + + fontState.size++; + saveFontSettings(); + } + + // Decrease font size + function reduceFontSize(e) { + e.preventDefault(); + if (fontState.size <= MIN_SIZE) return; + + fontState.size--; + saveFontSettings(); + } + + // Change font family + function changeFontFamily(configName, e) { + if (e && e instanceof Event) { + e.preventDefault(); + } + + var familyId = getFontFamilyId(configName); + fontState.family = familyId; + saveFontSettings(); + } + + // Change type of color theme + function changeColorTheme(configName, e) { + if (e && e instanceof Event) { + e.preventDefault(); + } + + var $book = gitbook.state.$book; + + // Remove currently applied color theme + if (fontState.theme !== 0) + $book.removeClass('color-theme-'+fontState.theme); + + // Set new color theme + var themeId = getThemeId(configName); + fontState.theme = themeId; + if (fontState.theme !== 0) + $book.addClass('color-theme-'+fontState.theme); + + saveFontSettings(); + } + + // Return the correct id for a font-family config key + // Default to first font-family + function getFontFamilyId(configName) { + // Search for plugin configured font family + var configFamily = $.grep(FAMILIES, function(family) { + return family.config == configName; + })[0]; + // Fallback to default font family + return (!!configFamily)? configFamily.id : 0; + } + + // Return the correct id for a theme config key + // Default to first theme + function getThemeId(configName) { + // Search for plugin configured theme + var configTheme = $.grep(THEMES, function(theme) { + return theme.config == configName; + })[0]; + // Fallback to default theme + return (!!configTheme)? configTheme.id : 0; + } + + function update() { + var $book = gitbook.state.$book; + + $('.font-settings .font-family-list li').removeClass('active'); + $('.font-settings .font-family-list li:nth-child('+(fontState.family+1)+')').addClass('active'); + + $book[0].className = $book[0].className.replace(/\bfont-\S+/g, ''); + $book.addClass('font-size-'+fontState.size); + $book.addClass('font-family-'+fontState.family); + + if(fontState.theme !== 0) { + $book[0].className = $book[0].className.replace(/\bcolor-theme-\S+/g, ''); + $book.addClass('color-theme-'+fontState.theme); + } + } + + function init(config) { + // Search for plugin configured font family + var configFamily = getFontFamilyId(config.family), + configTheme = getThemeId(config.theme); + + // Instantiate font state object + fontState = gitbook.storage.get('fontState', { + size: config.size || 2, + family: configFamily, + theme: configTheme + }); + + update(); + } + + function updateButtons() { + // Remove existing fontsettings buttons + if (!!BUTTON_ID) { + gitbook.toolbar.removeButton(BUTTON_ID); + } + + // Create buttons in toolbar + BUTTON_ID = gitbook.toolbar.createButton({ + icon: 'fa fa-font', + label: 'Font Settings', + className: 'font-settings', + dropdown: [ + [ + { + text: 'A', + className: 'font-reduce', + onClick: reduceFontSize + }, + { + text: 'A', + className: 'font-enlarge', + onClick: enlargeFontSize + } + ], + $.map(FAMILIES, function(family) { + family.onClick = function(e) { + return changeFontFamily(family.config, e); + }; + + return family; + }), + $.map(THEMES, function(theme) { + theme.onClick = function(e) { + return changeColorTheme(theme.config, e); + }; + + return theme; + }) + ] + }); + } + + // Init configuration at start + gitbook.events.bind('start', function(e, config) { + var opts = config.fontsettings; + + // Generate buttons at start + updateButtons(); + + // Init current settings + init(opts); + }); + + // Expose API + gitbook.fontsettings = { + enlargeFontSize: enlargeFontSize, + reduceFontSize: reduceFontSize, + setTheme: changeColorTheme, + setFamily: changeFontFamily, + getThemes: getThemes, + setThemes: setThemes, + getFamilies: getFamilies, + setFamilies: setFamilies + }; +}); + + diff --git a/_book/gitbook/gitbook-plugin-fontsettings/website.css b/_book/gitbook/gitbook-plugin-fontsettings/website.css new file mode 100644 index 0000000..26591fe --- /dev/null +++ b/_book/gitbook/gitbook-plugin-fontsettings/website.css @@ -0,0 +1,291 @@ +/* + * Theme 1 + */ +.color-theme-1 .dropdown-menu { + background-color: #111111; + border-color: #7e888b; +} +.color-theme-1 .dropdown-menu .dropdown-caret .caret-inner { + border-bottom: 9px solid #111111; +} +.color-theme-1 .dropdown-menu .buttons { + border-color: #7e888b; +} +.color-theme-1 .dropdown-menu .button { + color: #afa790; +} +.color-theme-1 .dropdown-menu .button:hover { + color: #73553c; +} +/* + * Theme 2 + */ +.color-theme-2 .dropdown-menu { + background-color: #2d3143; + border-color: #272a3a; +} +.color-theme-2 .dropdown-menu .dropdown-caret .caret-inner { + border-bottom: 9px solid #2d3143; +} +.color-theme-2 .dropdown-menu .buttons { + border-color: #272a3a; +} +.color-theme-2 .dropdown-menu .button { + color: #62677f; +} +.color-theme-2 .dropdown-menu .button:hover { + color: #f4f4f5; +} +.book .book-header .font-settings .font-enlarge { + line-height: 30px; + font-size: 1.4em; +} +.book .book-header .font-settings .font-reduce { + line-height: 30px; + font-size: 1em; +} +.book.color-theme-1 .book-body { + color: #704214; + background: #f3eacb; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section { + background: #f3eacb; +} +.book.color-theme-2 .book-body { + color: #bdcadb; + background: #1c1f2b; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section { + background: #1c1f2b; +} +.book.font-size-0 .book-body .page-inner section { + font-size: 1.2rem; +} +.book.font-size-1 .book-body .page-inner section { + font-size: 1.4rem; +} +.book.font-size-2 .book-body .page-inner section { + font-size: 1.6rem; +} +.book.font-size-3 .book-body .page-inner section { + font-size: 2.2rem; +} +.book.font-size-4 .book-body .page-inner section { + font-size: 4rem; +} +.book.font-family-0 { + font-family: Georgia, serif; +} +.book.font-family-1 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal { + color: #704214; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal a { + color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h3, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h4, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h5, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 { + color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2 { + border-color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 { + color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal hr { + background-color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal blockquote { + border-color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code { + background: #fdf6e3; + color: #657b83; + border-color: #f8df9c; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal .highlight { + background-color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table th, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table td { + border-color: #f5d06c; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr { + color: inherit; + background-color: #fdf6e3; + border-color: #444444; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) { + background-color: #fbeecb; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal { + color: #bdcadb; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal a { + color: #3eb1d0; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h3, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h4, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h5, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 { + color: #fffffa; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2 { + border-color: #373b4e; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 { + color: #373b4e; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal hr { + background-color: #373b4e; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal blockquote { + border-color: #373b4e; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code { + color: #9dbed8; + background: #2d3143; + border-color: #2d3143; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal .highlight { + background-color: #282a39; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table th, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table td { + border-color: #3b3f54; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr { + color: #b6c2d2; + background-color: #2d3143; + border-color: #3b3f54; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) { + background-color: #35394b; +} +.book.color-theme-1 .book-header { + color: #afa790; + background: transparent; +} +.book.color-theme-1 .book-header .btn { + color: #afa790; +} +.book.color-theme-1 .book-header .btn:hover { + color: #73553c; + background: none; +} +.book.color-theme-1 .book-header h1 { + color: #704214; +} +.book.color-theme-2 .book-header { + color: #7e888b; + background: transparent; +} +.book.color-theme-2 .book-header .btn { + color: #3b3f54; +} +.book.color-theme-2 .book-header .btn:hover { + color: #fffff5; + background: none; +} +.book.color-theme-2 .book-header h1 { + color: #bdcadb; +} +.book.color-theme-1 .book-body .navigation { + color: #afa790; +} +.book.color-theme-1 .book-body .navigation:hover { + color: #73553c; +} +.book.color-theme-2 .book-body .navigation { + color: #383f52; +} +.book.color-theme-2 .book-body .navigation:hover { + color: #fffff5; +} +/* + * Theme 1 + */ +.book.color-theme-1 .book-summary { + color: #afa790; + background: #111111; + border-right: 1px solid rgba(0, 0, 0, 0.07); +} +.book.color-theme-1 .book-summary .book-search { + background: transparent; +} +.book.color-theme-1 .book-summary .book-search input, +.book.color-theme-1 .book-summary .book-search input:focus { + border: 1px solid transparent; +} +.book.color-theme-1 .book-summary ul.summary li.divider { + background: #7e888b; + box-shadow: none; +} +.book.color-theme-1 .book-summary ul.summary li i.fa-check { + color: #33cc33; +} +.book.color-theme-1 .book-summary ul.summary li.done > a { + color: #877f6a; +} +.book.color-theme-1 .book-summary ul.summary li a, +.book.color-theme-1 .book-summary ul.summary li span { + color: #877f6a; + background: transparent; + font-weight: normal; +} +.book.color-theme-1 .book-summary ul.summary li.active > a, +.book.color-theme-1 .book-summary ul.summary li a:hover { + color: #704214; + background: transparent; + font-weight: normal; +} +/* + * Theme 2 + */ +.book.color-theme-2 .book-summary { + color: #bcc1d2; + background: #2d3143; + border-right: none; +} +.book.color-theme-2 .book-summary .book-search { + background: transparent; +} +.book.color-theme-2 .book-summary .book-search input, +.book.color-theme-2 .book-summary .book-search input:focus { + border: 1px solid transparent; +} +.book.color-theme-2 .book-summary ul.summary li.divider { + background: #272a3a; + box-shadow: none; +} +.book.color-theme-2 .book-summary ul.summary li i.fa-check { + color: #33cc33; +} +.book.color-theme-2 .book-summary ul.summary li.done > a { + color: #62687f; +} +.book.color-theme-2 .book-summary ul.summary li a, +.book.color-theme-2 .book-summary ul.summary li span { + color: #c1c6d7; + background: transparent; + font-weight: 600; +} +.book.color-theme-2 .book-summary ul.summary li.active > a, +.book.color-theme-2 .book-summary ul.summary li a:hover { + color: #f4f4f5; + background: #252737; + font-weight: 600; +} diff --git a/_book/gitbook/gitbook-plugin-highlight/ebook.css b/_book/gitbook/gitbook-plugin-highlight/ebook.css new file mode 100644 index 0000000..cecaaab --- /dev/null +++ b/_book/gitbook/gitbook-plugin-highlight/ebook.css @@ -0,0 +1,135 @@ +pre, +code { + /* http://jmblog.github.io/color-themes-for-highlightjs */ + /* Tomorrow Comment */ + /* Tomorrow Red */ + /* Tomorrow Orange */ + /* Tomorrow Yellow */ + /* Tomorrow Green */ + /* Tomorrow Aqua */ + /* Tomorrow Blue */ + /* Tomorrow Purple */ +} +pre .hljs-comment, +code .hljs-comment, +pre .hljs-title, +code .hljs-title { + color: #8e908c; +} +pre .hljs-variable, +code .hljs-variable, +pre .hljs-attribute, +code .hljs-attribute, +pre .hljs-tag, +code .hljs-tag, +pre .hljs-regexp, +code .hljs-regexp, +pre .hljs-deletion, +code .hljs-deletion, +pre .ruby .hljs-constant, +code .ruby .hljs-constant, +pre .xml .hljs-tag .hljs-title, +code .xml .hljs-tag .hljs-title, +pre .xml .hljs-pi, +code .xml .hljs-pi, +pre .xml .hljs-doctype, +code .xml .hljs-doctype, +pre .html .hljs-doctype, +code .html .hljs-doctype, +pre .css .hljs-id, +code .css .hljs-id, +pre .css .hljs-class, +code .css .hljs-class, +pre .css .hljs-pseudo, +code .css .hljs-pseudo { + color: #c82829; +} +pre .hljs-number, +code .hljs-number, +pre .hljs-preprocessor, +code .hljs-preprocessor, +pre .hljs-pragma, +code .hljs-pragma, +pre .hljs-built_in, +code .hljs-built_in, +pre .hljs-literal, +code .hljs-literal, +pre .hljs-params, +code .hljs-params, +pre .hljs-constant, +code .hljs-constant { + color: #f5871f; +} +pre .ruby .hljs-class .hljs-title, +code .ruby .hljs-class .hljs-title, +pre .css .hljs-rules .hljs-attribute, +code .css .hljs-rules .hljs-attribute { + color: #eab700; +} +pre .hljs-string, +code .hljs-string, +pre .hljs-value, +code .hljs-value, +pre .hljs-inheritance, +code .hljs-inheritance, +pre .hljs-header, +code .hljs-header, +pre .hljs-addition, +code .hljs-addition, +pre .ruby .hljs-symbol, +code .ruby .hljs-symbol, +pre .xml .hljs-cdata, +code .xml .hljs-cdata { + color: #718c00; +} +pre .css .hljs-hexcolor, +code .css .hljs-hexcolor { + color: #3e999f; +} +pre .hljs-function, +code .hljs-function, +pre .python .hljs-decorator, +code .python .hljs-decorator, +pre .python .hljs-title, +code .python .hljs-title, +pre .ruby .hljs-function .hljs-title, +code .ruby .hljs-function .hljs-title, +pre .ruby .hljs-title .hljs-keyword, +code .ruby .hljs-title .hljs-keyword, +pre .perl .hljs-sub, +code .perl .hljs-sub, +pre .javascript .hljs-title, +code .javascript .hljs-title, +pre .coffeescript .hljs-title, +code .coffeescript .hljs-title { + color: #4271ae; +} +pre .hljs-keyword, +code .hljs-keyword, +pre .javascript .hljs-function, +code .javascript .hljs-function { + color: #8959a8; +} +pre .hljs, +code .hljs { + display: block; + background: white; + color: #4d4d4c; + padding: 0.5em; +} +pre .coffeescript .javascript, +code .coffeescript .javascript, +pre .javascript .xml, +code .javascript .xml, +pre .tex .hljs-formula, +code .tex .hljs-formula, +pre .xml .javascript, +code .xml .javascript, +pre .xml .vbscript, +code .xml .vbscript, +pre .xml .css, +code .xml .css, +pre .xml .hljs-cdata, +code .xml .hljs-cdata { + opacity: 0.5; +} diff --git a/_book/gitbook/gitbook-plugin-highlight/website.css b/_book/gitbook/gitbook-plugin-highlight/website.css new file mode 100644 index 0000000..6674448 --- /dev/null +++ b/_book/gitbook/gitbook-plugin-highlight/website.css @@ -0,0 +1,434 @@ +.book .book-body .page-wrapper .page-inner section.normal pre, +.book .book-body .page-wrapper .page-inner section.normal code { + /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + /* Tomorrow Comment */ + /* Tomorrow Red */ + /* Tomorrow Orange */ + /* Tomorrow Yellow */ + /* Tomorrow Green */ + /* Tomorrow Aqua */ + /* Tomorrow Blue */ + /* Tomorrow Purple */ +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-comment, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-title { + color: #8e908c; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-variable, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-tag, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-tag, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-deletion, +.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant, +.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi, +.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype, +.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype, +.book .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype, +.book .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype, +.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id, +.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-id, +.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class, +.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-class, +.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, +.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo { + color: #c82829; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-number, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-number, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-literal, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-literal, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-params, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-params, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-constant { + color: #f5871f; +} +.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute, +.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute { + color: #eab700; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-string, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-string, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-value, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-value, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-header, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-header, +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-addition, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-addition, +.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol, +.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, +.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { + color: #718c00; +} +.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor, +.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor { + color: #3e999f; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-function, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-function, +.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator, +.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator, +.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword, +.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword, +.book .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub, +.book .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub, +.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title, +.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title { + color: #4271ae; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, +.book .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, +.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function, +.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function { + color: #8959a8; +} +.book .book-body .page-wrapper .page-inner section.normal pre .hljs, +.book .book-body .page-wrapper .page-inner section.normal code .hljs { + display: block; + background: white; + color: #4d4d4c; + padding: 0.5em; +} +.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript, +.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript, +.book .book-body .page-wrapper .page-inner section.normal pre .javascript .xml, +.book .book-body .page-wrapper .page-inner section.normal code .javascript .xml, +.book .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, +.book .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .javascript, +.book .book-body .page-wrapper .page-inner section.normal code .xml .javascript, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript, +.book .book-body .page-wrapper .page-inner section.normal code .xml .vbscript, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .css, +.book .book-body .page-wrapper .page-inner section.normal code .xml .css, +.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, +.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { + opacity: 0.5; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code { + /* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + /* Solarized Green */ + /* Solarized Cyan */ + /* Solarized Blue */ + /* Solarized Yellow */ + /* Solarized Orange */ + /* Solarized Red */ + /* Solarized Violet */ +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs { + display: block; + padding: 0.5em; + background: #fdf6e3; + color: #657b83; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-comment, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-template_comment, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-template_comment, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .diff .hljs-header, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .diff .hljs-header, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-doctype, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-doctype, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-pi, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-pi, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .lisp .hljs-string, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .lisp .hljs-string, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-javadoc, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-javadoc { + color: #93a1a1; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-winutils, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-winutils, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .method, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .method, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-addition, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-addition, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-tag, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-tag, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-request, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-request, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-status, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-status, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .nginx .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .nginx .hljs-title { + color: #859900; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-number, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-number, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-command, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-command, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-string, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-string, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-tag .hljs-value, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-tag .hljs-value, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-rules .hljs-value, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-rules .hljs-value, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-phpdoc, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-phpdoc, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-hexcolor, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-hexcolor, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_url, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_url { + color: #2aa198; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-localvars, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-localvars, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-chunk, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-chunk, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-decorator, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-decorator, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-identifier, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-identifier, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .vhdl .hljs-literal, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .vhdl .hljs-literal, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-id, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-id, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-function, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-function { + color: #268bd2; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-variable, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .lisp .hljs-body, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .lisp .hljs-body, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .smalltalk .hljs-number, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .smalltalk .hljs-number, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-constant, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-class .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-class .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-parent, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-parent, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .haskell .hljs-type, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .haskell .hljs-type, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_reference, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_reference { + color: #b58900; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor .hljs-keyword, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor .hljs-keyword, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-shebang, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-shebang, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-symbol, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol .hljs-string, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-symbol .hljs-string, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .diff .hljs-change, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .diff .hljs-change, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-special, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-special, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-attr_selector, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-attr_selector, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-subst, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-subst, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-cdata, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-cdata, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .clojure .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .clojure .hljs-title, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-header, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-header { + color: #cb4b16; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-deletion, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-important, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-important { + color: #dc322f; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_label, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_label { + color: #6c71c4; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula { + background: #eee8d5; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code { + /* Tomorrow Night Bright Theme */ + /* Original theme - https://github.com/chriskempson/tomorrow-theme */ + /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + /* Tomorrow Comment */ + /* Tomorrow Red */ + /* Tomorrow Orange */ + /* Tomorrow Yellow */ + /* Tomorrow Green */ + /* Tomorrow Aqua */ + /* Tomorrow Blue */ + /* Tomorrow Purple */ +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-comment, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-title { + color: #969896; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-variable, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-tag, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-tag, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-deletion, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-id, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-class, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo { + color: #d54e53; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-number, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-number, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-literal, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-literal, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-params, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-params, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-constant { + color: #e78c45; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute { + color: #e7c547; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-string, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-string, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-value, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-value, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-header, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-header, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-addition, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-addition, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { + color: #b9ca4a; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor { + color: #70c0b1; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-function, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-function, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .python .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title { + color: #7aa6da; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function { + color: #c397d8; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs { + display: block; + background: black; + color: #eaeaea; + padding: 0.5em; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .xml, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .xml, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .javascript, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .javascript, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .vbscript, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .css, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .css, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { + opacity: 0.5; +} diff --git a/_book/gitbook/gitbook-plugin-livereload/plugin.js b/_book/gitbook/gitbook-plugin-livereload/plugin.js new file mode 100644 index 0000000..923b3ae --- /dev/null +++ b/_book/gitbook/gitbook-plugin-livereload/plugin.js @@ -0,0 +1,11 @@ +(function() { + var newEl = document.createElement('script'), + firstScriptTag = document.getElementsByTagName('script')[0]; + + if (firstScriptTag) { + newEl.async = 1; + newEl.src = '//' + window.location.hostname + ':35729/livereload.js'; + firstScriptTag.parentNode.insertBefore(newEl, firstScriptTag); + } + +})(); diff --git a/_book/gitbook/gitbook-plugin-lunr/lunr.min.js b/_book/gitbook/gitbook-plugin-lunr/lunr.min.js new file mode 100644 index 0000000..6aa6bc7 --- /dev/null +++ b/_book/gitbook/gitbook-plugin-lunr/lunr.min.js @@ -0,0 +1,7 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.5.12 + * Copyright (C) 2015 Oliver Nightingale + * MIT Licensed + * @license + */ +!function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.5.12",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(t){return arguments.length&&null!=t&&void 0!=t?Array.isArray(t)?t.map(function(t){return t.toLowerCase()}):t.toString().trim().toLowerCase().split(/[\s\-]+/):[]},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,o=0;n>o;o++){for(var r=t[o],s=0;i>s&&(r=this._stack[s](r,o,t),void 0!==r);s++);void 0!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;if(en.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t1;){if(r===t)return o;t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o]}return r===t?o:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];i>1;)t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o];return r>t?o:t>r?o+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,o=0,r=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>r-1||o>s-1)break;a[i]!==h[o]?a[i]h[o]&&o++:(n.add(a[i]),i++,o++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;return this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone(),i.add.apply(i,n.toArray()),i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var i={},o=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));i[n.name]=r,t.SortedSet.prototype.add.apply(o,r)},this),this.documentStore.set(r,o),t.SortedSet.prototype.add.apply(this.corpusTokens,o.toArray());for(var s=0;s0&&(i=1+Math.log(this.documentStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),i=new t.Vector,o=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,h=this,l=this.tokenStore.expand(e).reduce(function(n,o){var r=h.corpusTokens.indexOf(o),s=h.idf(o),l=1,u=new t.SortedSet;if(o!==e){var c=Math.max(3,o.length-e.length);l=1/Math.log(c)}return r>-1&&i.insert(r,a*s*l),Object.keys(h.tokenStore.get(o)).forEach(function(t){u.add(t)}),n.union(u)},new t.SortedSet);o.push(l)},this);var a=o.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,o=new t.Vector,r=0;i>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);o.insert(this.corpusTokens.indexOf(s),a*h)}return o},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,a="^("+o+")?"+r+o+"("+r+")?$",h="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,u=new RegExp(s),c=new RegExp(h),f=new RegExp(a),d=new RegExp(l),p=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,v=/^(.+?)eed$/,y=/^(.+?)(ed|ing)$/,g=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+o+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,_=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,O=/^(.+?)e$/,P=/ll$/,N=new RegExp("^"+o+i+"[^aeiouwxy]$"),T=function(n){var i,o,r,s,a,h,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=p,a=m,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=v,a=y,s.test(n)){var T=s.exec(n);s=u,s.test(T[1])&&(s=g,n=n.replace(s,""))}else if(a.test(n)){var T=a.exec(n);i=T[1],a=d,a.test(i)&&(n=i,a=S,h=w,l=x,a.test(n)?n+="e":h.test(n)?(s=g,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=k,s.test(n)){var T=s.exec(n);i=T[1],n=i+"i"}if(s=b,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+t[o])}if(s=E,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+e[o])}if(s=_,a=F,s.test(n)){var T=s.exec(n);i=T[1],s=c,s.test(i)&&(n=i)}else if(a.test(n)){var T=a.exec(n);i=T[1]+T[2],a=c,a.test(i)&&(n=i)}if(s=O,s.test(n)){var T=s.exec(n);i=T[1],s=c,a=f,h=N,(s.test(i)||a.test(i)&&!h.test(i))&&(n=i)}return s=P,a=c,s.test(n)&&a.test(n)&&(s=g,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return T}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.stopWordFilter=function(e){return e&&t.stopWordFilter.stopWords[e]!==e?e:void 0},t.stopWordFilter.stopWords={a:"a",able:"able",about:"about",across:"across",after:"after",all:"all",almost:"almost",also:"also",am:"am",among:"among",an:"an",and:"and",any:"any",are:"are",as:"as",at:"at",be:"be",because:"because",been:"been",but:"but",by:"by",can:"can",cannot:"cannot",could:"could",dear:"dear",did:"did","do":"do",does:"does",either:"either","else":"else",ever:"ever",every:"every","for":"for",from:"from",get:"get",got:"got",had:"had",has:"has",have:"have",he:"he",her:"her",hers:"hers",him:"him",his:"his",how:"how",however:"however",i:"i","if":"if","in":"in",into:"into",is:"is",it:"it",its:"its",just:"just",least:"least",let:"let",like:"like",likely:"likely",may:"may",me:"me",might:"might",most:"most",must:"must",my:"my",neither:"neither",no:"no",nor:"nor",not:"not",of:"of",off:"off",often:"often",on:"on",only:"only",or:"or",other:"other",our:"our",own:"own",rather:"rather",said:"said",say:"say",says:"says",she:"she",should:"should",since:"since",so:"so",some:"some",than:"than",that:"that",the:"the",their:"their",them:"them",then:"then",there:"there",these:"these",they:"they","this":"this",tis:"tis",to:"to",too:"too",twas:"twas",us:"us",wants:"wants",was:"was",we:"we",were:"were",what:"what",when:"when",where:"where",which:"which","while":"while",who:"who",whom:"whom",why:"why",will:"will","with":"with",would:"would",yet:"yet",you:"you",your:"your"},t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){var e=t.replace(/^\W+/,"").replace(/\W+$/,"");return""===e?void 0:e},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,i=t[0],o=t.slice(1);return i in n||(n[i]={docs:{}}),0===o.length?(n[i].docs[e.ref]=e,void(this.length+=1)):this.add(o,e,n[i])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;no;o++){for(var r=t[o],s=0;i>s&&(r=this._stack[s](r,o,t),void 0!==r);s++);void 0!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;if(en.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t1;){if(r===t)return o;t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o]}return r===t?o:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];i>1;)t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o];return r>t?o:t>r?o+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,o=0,r=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>r-1||o>s-1)break;a[i]!==h[o]?a[i]h[o]&&o++:(n.add(a[i]),i++,o++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;return this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone(),i.add.apply(i,n.toArray()),i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var i={},o=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));i[n.name]=r,t.SortedSet.prototype.add.apply(o,r)},this),this.documentStore.set(r,o),t.SortedSet.prototype.add.apply(this.corpusTokens,o.toArray());for(var s=0;s0&&(i=1+Math.log(this.documentStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),i=new t.Vector,o=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,h=this,l=this.tokenStore.expand(e).reduce(function(n,o){var r=h.corpusTokens.indexOf(o),s=h.idf(o),l=1,u=new t.SortedSet;if(o!==e){var c=Math.max(3,o.length-e.length);l=1/Math.log(c)}return r>-1&&i.insert(r,a*s*l),Object.keys(h.tokenStore.get(o)).forEach(function(t){u.add(t)}),n.union(u)},new t.SortedSet);o.push(l)},this);var a=o.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,o=new t.Vector,r=0;i>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);o.insert(this.corpusTokens.indexOf(s),a*h)}return o},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,a="^("+o+")?"+r+o+"("+r+")?$",h="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,u=new RegExp(s),c=new RegExp(h),f=new RegExp(a),d=new RegExp(l),p=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,v=/^(.+?)eed$/,y=/^(.+?)(ed|ing)$/,g=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+o+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,_=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,O=/^(.+?)e$/,P=/ll$/,N=new RegExp("^"+o+i+"[^aeiouwxy]$"),T=function(n){var i,o,r,s,a,h,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=p,a=m,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=v,a=y,s.test(n)){var T=s.exec(n);s=u,s.test(T[1])&&(s=g,n=n.replace(s,""))}else if(a.test(n)){var T=a.exec(n);i=T[1],a=d,a.test(i)&&(n=i,a=S,h=w,l=x,a.test(n)?n+="e":h.test(n)?(s=g,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=k,s.test(n)){var T=s.exec(n);i=T[1],n=i+"i"}if(s=b,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+t[o])}if(s=E,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+e[o])}if(s=_,a=F,s.test(n)){var T=s.exec(n);i=T[1],s=c,s.test(i)&&(n=i)}else if(a.test(n)){var T=a.exec(n);i=T[1]+T[2],a=c,a.test(i)&&(n=i)}if(s=O,s.test(n)){var T=s.exec(n);i=T[1],s=c,a=f,h=N,(s.test(i)||a.test(i)&&!h.test(i))&&(n=i)}return s=P,a=c,s.test(n)&&a.test(n)&&(s=g,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return T}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.stopWordFilter=function(e){return e&&t.stopWordFilter.stopWords[e]!==e?e:void 0},t.stopWordFilter.stopWords={a:"a",able:"able",about:"about",across:"across",after:"after",all:"all",almost:"almost",also:"also",am:"am",among:"among",an:"an",and:"and",any:"any",are:"are",as:"as",at:"at",be:"be",because:"because",been:"been",but:"but",by:"by",can:"can",cannot:"cannot",could:"could",dear:"dear",did:"did","do":"do",does:"does",either:"either","else":"else",ever:"ever",every:"every","for":"for",from:"from",get:"get",got:"got",had:"had",has:"has",have:"have",he:"he",her:"her",hers:"hers",him:"him",his:"his",how:"how",however:"however",i:"i","if":"if","in":"in",into:"into",is:"is",it:"it",its:"its",just:"just",least:"least",let:"let",like:"like",likely:"likely",may:"may",me:"me",might:"might",most:"most",must:"must",my:"my",neither:"neither",no:"no",nor:"nor",not:"not",of:"of",off:"off",often:"often",on:"on",only:"only",or:"or",other:"other",our:"our",own:"own",rather:"rather",said:"said",say:"say",says:"says",she:"she",should:"should",since:"since",so:"so",some:"some",than:"than",that:"that",the:"the",their:"their",them:"them",then:"then",there:"there",these:"these",they:"they","this":"this",tis:"tis",to:"to",too:"too",twas:"twas",us:"us",wants:"wants",was:"was",we:"we",were:"were",what:"what",when:"when",where:"where",which:"which","while":"while",who:"who",whom:"whom",why:"why",will:"will","with":"with",would:"would",yet:"yet",you:"you",your:"your"},t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){var e=t.replace(/^\W+/,"").replace(/\W+$/,"");return""===e?void 0:e},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,i=t[0],o=t.slice(1);return i in n||(n[i]={docs:{}}),0===o.length?(n[i].docs[e.ref]=e,void(this.length+=1)):this.add(o,e,n[i])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;n element for each result + res.results.forEach(function(res) { + var $li = $('
                  • ', { + 'class': 'search-results-item' + }); + + var $title = $('

                    '); + + var $link = $('', { + 'href': gitbook.state.basePath + '/' + res.url, + 'text': res.title + }); + + var content = res.body.trim(); + if (content.length > MAX_DESCRIPTION_SIZE) { + content = content.slice(0, MAX_DESCRIPTION_SIZE).trim()+'...'; + } + var $content = $('

                    ').html(content); + + $link.appendTo($title); + $title.appendTo($li); + $content.appendTo($li); + $li.appendTo($searchList); + }); + } + + function launchSearch(q) { + // Add class for loading + $body.addClass('with-search'); + $body.addClass('search-loading'); + + // Launch search query + throttle(gitbook.search.query(q, 0, MAX_RESULTS) + .then(function(results) { + displayResults(results); + }) + .always(function() { + $body.removeClass('search-loading'); + }), 1000); + } + + function closeSearch() { + $body.removeClass('with-search'); + $bookSearchResults.removeClass('open'); + } + + function launchSearchFromQueryString() { + var q = getParameterByName('q'); + if (q && q.length > 0) { + // Update search input + $searchInput.val(q); + + // Launch search + launchSearch(q); + } + } + + function bindSearch() { + // Bind DOM + $searchInput = $('#book-search-input input'); + $bookSearchResults = $('#book-search-results'); + $searchList = $bookSearchResults.find('.search-results-list'); + $searchTitle = $bookSearchResults.find('.search-results-title'); + $searchResultsCount = $searchTitle.find('.search-results-count'); + $searchQuery = $searchTitle.find('.search-query'); + + // Launch query based on input content + function handleUpdate() { + var q = $searchInput.val(); + + if (q.length == 0) { + closeSearch(); + } + else { + launchSearch(q); + } + } + + // Detect true content change in search input + // Workaround for IE < 9 + var propertyChangeUnbound = false; + $searchInput.on('propertychange', function(e) { + if (e.originalEvent.propertyName == 'value') { + handleUpdate(); + } + }); + + // HTML5 (IE9 & others) + $searchInput.on('input', function(e) { + // Unbind propertychange event for IE9+ + if (!propertyChangeUnbound) { + $(this).unbind('propertychange'); + propertyChangeUnbound = true; + } + + handleUpdate(); + }); + + // Push to history on blur + $searchInput.on('blur', function(e) { + // Update history state + if (usePushState) { + var uri = updateQueryString('q', $(this).val()); + history.pushState({ path: uri }, null, uri); + } + }); + } + + gitbook.events.on('page.change', function() { + bindSearch(); + closeSearch(); + + // Launch search based on query parameter + if (gitbook.search.isInitialized()) { + launchSearchFromQueryString(); + } + }); + + gitbook.events.on('search.ready', function() { + bindSearch(); + + // Launch search from query param at start + launchSearchFromQueryString(); + }); + + function getParameterByName(name) { + var url = window.location.href; + name = name.replace(/[\[\]]/g, '\\$&'); + var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)', 'i'), + results = regex.exec(url); + if (!results) return null; + if (!results[2]) return ''; + return decodeURIComponent(results[2].replace(/\+/g, ' ')); + } + + function updateQueryString(key, value) { + value = encodeURIComponent(value); + + var url = window.location.href; + var re = new RegExp('([?&])' + key + '=.*?(&|#|$)(.*)', 'gi'), + hash; + + if (re.test(url)) { + if (typeof value !== 'undefined' && value !== null) + return url.replace(re, '$1' + key + '=' + value + '$2$3'); + else { + hash = url.split('#'); + url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, ''); + if (typeof hash[1] !== 'undefined' && hash[1] !== null) + url += '#' + hash[1]; + return url; + } + } + else { + if (typeof value !== 'undefined' && value !== null) { + var separator = url.indexOf('?') !== -1 ? '&' : '?'; + hash = url.split('#'); + url = hash[0] + separator + key + '=' + value; + if (typeof hash[1] !== 'undefined' && hash[1] !== null) + url += '#' + hash[1]; + return url; + } + else + return url; + } + } +}); diff --git a/_book/gitbook/gitbook-plugin-sharing/buttons.js b/_book/gitbook/gitbook-plugin-sharing/buttons.js new file mode 100644 index 0000000..709a4e4 --- /dev/null +++ b/_book/gitbook/gitbook-plugin-sharing/buttons.js @@ -0,0 +1,90 @@ +require(['gitbook', 'jquery'], function(gitbook, $) { + var SITES = { + 'facebook': { + 'label': 'Facebook', + 'icon': 'fa fa-facebook', + 'onClick': function(e) { + e.preventDefault(); + window.open('http://www.facebook.com/sharer/sharer.php?s=100&p[url]='+encodeURIComponent(location.href)); + } + }, + 'twitter': { + 'label': 'Twitter', + 'icon': 'fa fa-twitter', + 'onClick': function(e) { + e.preventDefault(); + window.open('http://twitter.com/home?status='+encodeURIComponent(document.title+' '+location.href)); + } + }, + 'google': { + 'label': 'Google+', + 'icon': 'fa fa-google-plus', + 'onClick': function(e) { + e.preventDefault(); + window.open('https://plus.google.com/share?url='+encodeURIComponent(location.href)); + } + }, + 'weibo': { + 'label': 'Weibo', + 'icon': 'fa fa-weibo', + 'onClick': function(e) { + e.preventDefault(); + window.open('http://service.weibo.com/share/share.php?content=utf-8&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)); + } + }, + 'instapaper': { + 'label': 'Instapaper', + 'icon': 'fa fa-instapaper', + 'onClick': function(e) { + e.preventDefault(); + window.open('http://www.instapaper.com/text?u='+encodeURIComponent(location.href)); + } + }, + 'vk': { + 'label': 'VK', + 'icon': 'fa fa-vk', + 'onClick': function(e) { + e.preventDefault(); + window.open('http://vkontakte.ru/share.php?url='+encodeURIComponent(location.href)); + } + } + }; + + + + gitbook.events.bind('start', function(e, config) { + var opts = config.sharing; + + // Create dropdown menu + var menu = $.map(opts.all, function(id) { + var site = SITES[id]; + + return { + text: site.label, + onClick: site.onClick + }; + }); + + // Create main button with dropdown + if (menu.length > 0) { + gitbook.toolbar.createButton({ + icon: 'fa fa-share-alt', + label: 'Share', + position: 'right', + dropdown: [menu] + }); + } + + // Direct actions to share + $.each(SITES, function(sideId, site) { + if (!opts[sideId]) return; + + gitbook.toolbar.createButton({ + icon: site.icon, + label: site.text, + position: 'right', + onClick: site.onClick + }); + }); + }); +}); diff --git a/_book/gitbook/gitbook.js b/_book/gitbook/gitbook.js new file mode 100644 index 0000000..13077b4 --- /dev/null +++ b/_book/gitbook/gitbook.js @@ -0,0 +1,4 @@ +!function e(t,n,r){function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[s]={exports:{}};t[s][0].call(l.exports,function(e){var n=t[s][1][e];return o(n?n:e)},l,l.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s0&&t-1 in e)}function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?de.grep(e,function(e){return e===t!==n}):"string"!=typeof t?de.grep(e,function(e){return se.call(t,e)>-1!==n}):je.test(t)?de.filter(t,e,n):(t=de.filter(t,e),de.grep(e,function(e){return se.call(t,e)>-1!==n&&1===e.nodeType}))}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function s(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]=!0}),t}function a(e){return e}function u(e){throw e}function c(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done(t).fail(n):e&&de.isFunction(r=e.then)?r.call(e,t,n):t.call(void 0,e)}catch(e){n.call(void 0,e)}}function l(){te.removeEventListener("DOMContentLoaded",l),e.removeEventListener("load",l),de.ready()}function f(){this.expando=de.expando+f.uid++}function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Ie.test(e)?JSON.parse(e):e)}function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Pe,"-$&").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n=p(n)}catch(e){}Re.set(e,t,n)}else n=void 0;return n}function d(e,t,n,r){var o,i=1,s=20,a=r?function(){return r.cur()}:function(){return de.css(e,t,"")},u=a(),c=n&&n[3]||(de.cssNumber[t]?"":"px"),l=(de.cssNumber[t]||"px"!==c&&+u)&&$e.exec(de.css(e,t));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do i=i||".5",l/=i,de.style(e,t,l+c);while(i!==(i=a()/u)&&1!==i&&--s)}return n&&(l=+l||+u||0,o=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=o)),o}function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t=n.body.appendChild(n.createElement(r)),o=de.css(t,"display"),t.parentNode.removeChild(t),"none"===o&&(o="block"),Ue[r]=o,o)}function m(e,t){for(var n,r,o=[],i=0,s=e.length;i-1)o&&o.push(i);else if(c=de.contains(i.ownerDocument,i),s=v(f.appendChild(i),"script"),c&&y(s),n)for(l=0;i=s[l++];)Ve.test(i.type||"")&&n.push(i);return f}function b(){return!0}function w(){return!1}function T(){try{return te.activeElement}catch(e){}}function C(e,t,n,r,o,i){var s,a;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(a in t)C(e,a,n,r,t[a],i);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),o===!1)o=w;else if(!o)return e;return 1===i&&(s=o,o=function(e){return de().off(e),s.apply(this,arguments)},o.guid=s.guid||(s.guid=de.guid++)),e.each(function(){de.event.add(this,t,o,r,n)})}function j(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e:e}function k(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function S(e,t){var n,r,o,i,s,a,u,c;if(1===t.nodeType){if(Fe.hasData(e)&&(i=Fe.access(e),s=Fe.set(t,i),c=i.events)){delete s.handle,s.events={};for(o in c)for(n=0,r=c[o].length;n1&&"string"==typeof d&&!pe.checkClone&&nt.test(d))return e.each(function(n){var i=e.eq(n);g&&(t[0]=d.call(this,n,i.html())),A(i,t,r,o)});if(p&&(i=x(t,e[0].ownerDocument,!1,e,o),s=i.firstChild,1===i.childNodes.length&&(i=s),s||o)){for(a=de.map(v(i,"script"),k),u=a.length;f=0&&nC.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[$]=!0,e}function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function i(e,t){for(var n=e.split("|"),r=n.length;r--;)C.attrHandle[n[r]]=t}function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function a(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return function(t){return"form"in t?t.parentNode&&t.disabled===!1?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&je(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var o,i=e([],n.length,t),s=i.length;s--;)n[o=i[s]]&&(n[o]=!(r[o]=n[o]))})})}function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function m(e,n,r){for(var o=0,i=n.length;o-1&&(r[c]=!(s[c]=f))}}else x=v(x===s?x.splice(d,x.length):x),i?i(null,s,x,u):K.apply(s,x)})}function x(e){for(var t,n,r,o=e.length,i=C.relative[e[0].type],s=i||C.relative[" "],a=i?1:0,u=d(function(e){return e===t},s,!0),c=d(function(e){return ee(t,e)>-1},s,!0),l=[function(e,n,r){var o=!i&&(r||n!==A)||((t=n).nodeType?u(e,n,r):c(e,n,r));return t=null,o}];a1&&g(l),a>1&&h(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(ae,"$1"),n,a0,i=e.length>0,s=function(r,s,a,u,c){var l,f,p,h=0,d="0",g=r&&[],m=[],y=A,x=r||i&&C.find.TAG("*",c),b=B+=null==y?1:Math.random()||.1,w=x.length;for(c&&(A=s===L||s||c);d!==w&&null!=(l=x[d]);d++){if(i&&l){for(f=0,s||l.ownerDocument===L||(O(l),a=!F);p=e[f++];)if(p(l,s||L,a)){u.push(l);break}c&&(B=b)}o&&((l=!p&&l)&&h--,r&&g.push(l))}if(h+=d,o&&d!==h){for(f=0;p=n[f++];)p(g,m,s,a);if(r){if(h>0)for(;d--;)g[d]||m[d]||(m[d]=Q.call(u));m=v(m)}K.apply(u,m),c&&!r&&m.length>0&&h+n.length>1&&t.uniqueSort(u)}return c&&(B=b,A=y),g};return o?r(s):s}var w,T,C,j,k,E,S,N,A,q,D,O,L,H,F,R,I,P,M,$="sizzle"+1*new Date,W=e.document,B=0,_=0,U=n(),z=n(),X=n(),V=function(e,t){return e===t&&(D=!0),0},G={}.hasOwnProperty,Y=[],Q=Y.pop,J=Y.push,K=Y.push,Z=Y.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),le=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(ie),pe=new RegExp("^"+re+"$"),he={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ie),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},de=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),be=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},we=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,Te=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},Ce=function(){O()},je=d(function(e){return e.disabled===!0&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{K.apply(Y=Z.call(W.childNodes),W.childNodes),Y[W.childNodes.length].nodeType}catch(e){K={apply:Y.length?function(e,t){J.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}T=t.support={},k=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},O=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:W;return r!==L&&9===r.nodeType&&r.documentElement?(L=r,H=L.documentElement,F=!k(L),W!==L&&(n=L.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Ce,!1):n.attachEvent&&n.attachEvent("onunload",Ce)),T.attributes=o(function(e){return e.className="i",!e.getAttribute("className")}),T.getElementsByTagName=o(function(e){return e.appendChild(L.createComment("")),!e.getElementsByTagName("*").length}),T.getElementsByClassName=me.test(L.getElementsByClassName),T.getById=o(function(e){return H.appendChild(e).id=$,!L.getElementsByName||!L.getElementsByName($).length}),T.getById?(C.filter.ID=function(e){var t=e.replace(xe,be);return function(e){return e.getAttribute("id")===t}},C.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n=t.getElementById(e);return n?[n]:[]}}):(C.filter.ID=function(e){var t=e.replace(xe,be);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},C.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n,r,o,i=t.getElementById(e);if(i){if(n=i.getAttributeNode("id"),n&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if(n=i.getAttributeNode("id"),n&&n.value===e)return[i]}return[]}}),C.find.TAG=T.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):T.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},C.find.CLASS=T.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&F)return t.getElementsByClassName(e)},I=[],R=[],(T.qsa=me.test(L.querySelectorAll))&&(o(function(e){H.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&R.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||R.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||R.push("~="),e.querySelectorAll(":checked").length||R.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||R.push(".#.+[+~]")}),o(function(e){e.innerHTML="";var t=L.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&R.push("name"+ne+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&R.push(":enabled",":disabled"),H.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&R.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),R.push(",.*:")})),(T.matchesSelector=me.test(P=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&o(function(e){T.disconnectedMatch=P.call(e,"*"),P.call(e,"[s!='']:x"),I.push("!=",ie)}),R=R.length&&new RegExp(R.join("|")),I=I.length&&new RegExp(I.join("|")),t=me.test(H.compareDocumentPosition),M=t||me.test(H.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return D=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!T.sortDetached&&t.compareDocumentPosition(e)===n?e===L||e.ownerDocument===W&&M(W,e)?-1:t===L||t.ownerDocument===W&&M(W,t)?1:q?ee(q,e)-ee(q,t):0:4&n?-1:1)}:function(e,t){if(e===t)return D=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===L?-1:t===L?1:o?-1:i?1:q?ee(q,e)-ee(q,t):0;if(o===i)return s(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?s(a[r],u[r]):a[r]===W?-1:u[r]===W?1:0},L):L},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==L&&O(e),n=n.replace(le,"='$1']"),T.matchesSelector&&F&&!X[n+" "]&&(!I||!I.test(n))&&(!R||!R.test(n)))try{var r=P.call(e,n);if(r||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,L,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==L&&O(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==L&&O(e);var n=C.attrHandle[t.toLowerCase()],r=n&&G.call(C.attrHandle,t.toLowerCase())?n(e,t,!F):void 0;return void 0!==r?r:T.attributes||!F?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(we,Te)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,o=0;if(D=!T.detectDuplicates,q=!T.sortStable&&e.slice(0),e.sort(V),D){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return q=null,e},j=t.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=j(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=j(t);return n},C=t.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xe,be),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,be),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=E(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(xe,be).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=U[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&U(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(o){var i=t.attr(o,e);return null==i?"!="===n:!n||(i+="","="===n?i===r:"!="===n?i!==r:"^="===n?r&&0===i.indexOf(r):"*="===n?r&&i.indexOf(r)>-1:"$="===n?r&&i.slice(-r.length)===r:"~="===n?(" "+i.replace(se," ")+" ").indexOf(r)>-1:"|="===n&&(i===r||i.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,o){var i="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,p,h,d,g=i!==s?"nextSibling":"previousSibling",m=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!u&&!a,x=!1;if(m){if(i){for(;g;){for(p=t;p=p[g];)if(a?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&y){for(p=m,f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===B&&c[1],x=h&&c[2],p=h&&m.childNodes[h];p=++h&&p&&p[g]||(x=h=0)||d.pop();)if(1===p.nodeType&&++x&&p===t){l[e]=[B,h,x];break}}else if(y&&(p=t,f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===B&&c[1],x=h),x===!1)for(;(p=++h&&p&&p[g]||(x=h=0)||d.pop())&&((a?p.nodeName.toLowerCase()!==v:1!==p.nodeType)||!++x||(y&&(f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),l[e]=[B,x]),p!==t)););return x-=o,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var o,i=C.pseudos[e]||C.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return i[$]?i(n):i.length>1?(o=[e,e,"",n],C.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,o=i(e,n),s=o.length;s--;)r=ee(e,o[s]),e[r]=!(t[r]=o[s])}):function(e){return i(e,0,o)}):i}},pseudos:{not:r(function(e){var t=[],n=[],o=S(e.replace(ae,"$1"));return o[$]?r(function(e,t,n,r){for(var i,s=o(e,null,r,[]),a=e.length;a--;)(i=s[a])&&(e[a]=!(t[a]=i))}):function(e,r,i){return t[0]=e,o(t,null,i,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){ +return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(xe,be),function(t){return(t.textContent||t.innerText||j(t)).indexOf(e)>-1}}),lang:r(function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,be).toLowerCase(),function(t){var n;do if(n=F?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===L.activeElement&&(!L.hasFocus||L.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:c(!1),disabled:c(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return de.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(s=i[0]).type&&9===t.nodeType&&F&&C.relative[i[1].type]){if(t=(C.find.ID(s.matches[0].replace(xe,be),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=he.needsContext.test(e)?0:i.length;o--&&(s=i[o],!C.relative[a=s.type]);)if((u=C.find[a])&&(r=u(s.matches[0].replace(xe,be),ye.test(i[0].type)&&f(t.parentNode)||t))){if(i.splice(o,1),e=r.length&&h(i),!e)return K.apply(n,r),n;break}}return(c||S(e,l))(r,t,!F,n,!t||ye.test(e)&&f(t.parentNode)||t),n},T.sortStable=$.split("").sort(V).join("")===$,T.detectDuplicates=!!D,O(),T.sortDetached=o(function(e){return 1&e.compareDocumentPosition(L.createElement("fieldset"))}),o(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||i("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),T.attributes&&o(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||i("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),o(function(e){return null==e.getAttribute("disabled")})||i(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);de.find=xe,de.expr=xe.selectors,de.expr[":"]=de.expr.pseudos,de.uniqueSort=de.unique=xe.uniqueSort,de.text=xe.getText,de.isXMLDoc=xe.isXML,de.contains=xe.contains,de.escapeSelector=xe.escape;var be=function(e,t,n){for(var r=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&de(e).is(n))break;r.push(e)}return r},we=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Te=de.expr.match.needsContext,Ce=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,je=/^.[^:#\[\.,]*$/;de.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?de.find.matchesSelector(r,e)?[r]:[]:de.find.matches(e,de.grep(t,function(e){return 1===e.nodeType}))},de.fn.extend({find:function(e){var t,n,r=this.length,o=this;if("string"!=typeof e)return this.pushStack(de(e).filter(function(){for(t=0;t1?de.uniqueSort(n):n},filter:function(e){return this.pushStack(o(this,e||[],!1))},not:function(e){return this.pushStack(o(this,e||[],!0))},is:function(e){return!!o(this,"string"==typeof e&&Te.test(e)?de(e):e||[],!1).length}});var ke,Ee=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Se=de.fn.init=function(e,t,n){var r,o;if(!e)return this;if(n=n||ke,"string"==typeof e){if(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:Ee.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof de?t[0]:t,de.merge(this,de.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:te,!0)),Ce.test(r[1])&&de.isPlainObject(t))for(r in t)de.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return o=te.getElementById(r[2]),o&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):de.isFunction(e)?void 0!==n.ready?n.ready(e):e(de):de.makeArray(e,this)};Se.prototype=de.fn,ke=de(te);var Ne=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};de.fn.extend({has:function(e){var t=de(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&de.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?de.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?se.call(de(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(de.uniqueSort(de.merge(this.get(),de(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),de.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return be(e,"parentNode")},parentsUntil:function(e,t,n){return be(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return be(e,"nextSibling")},prevAll:function(e){return be(e,"previousSibling")},nextUntil:function(e,t,n){return be(e,"nextSibling",n)},prevUntil:function(e,t,n){return be(e,"previousSibling",n)},siblings:function(e){return we((e.parentNode||{}).firstChild,e)},children:function(e){return we(e.firstChild)},contents:function(e){return e.contentDocument||de.merge([],e.childNodes)}},function(e,t){de.fn[e]=function(n,r){var o=de.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(o=de.filter(r,o)),this.length>1&&(Ae[e]||de.uniqueSort(o),Ne.test(e)&&o.reverse()),this.pushStack(o)}});var qe=/[^\x20\t\r\n\f]+/g;de.Callbacks=function(e){e="string"==typeof e?s(e):de.extend({},e);var t,n,r,o,i=[],a=[],u=-1,c=function(){for(o=e.once,r=t=!0;a.length;u=-1)for(n=a.shift();++u-1;)i.splice(n,1),n<=u&&u--}),this},has:function(e){return e?de.inArray(e,i)>-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return o=a=[],i=n="",this},disabled:function(){return!i},lock:function(){return o=a=[],n||t||(i=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||c()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},de.extend({Deferred:function(t){var n=[["notify","progress",de.Callbacks("memory"),de.Callbacks("memory"),2],["resolve","done",de.Callbacks("once memory"),de.Callbacks("once memory"),0,"resolved"],["reject","fail",de.Callbacks("once memory"),de.Callbacks("once memory"),1,"rejected"]],r="pending",o={state:function(){return r},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return o.then(null,e)},pipe:function(){var e=arguments;return de.Deferred(function(t){de.each(n,function(n,r){var o=de.isFunction(e[r[4]])&&e[r[4]];i[r[1]](function(){var e=o&&o.apply(this,arguments);e&&de.isFunction(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,o?[e]:arguments)})}),e=null}).promise()},then:function(t,r,o){function i(t,n,r,o){return function(){var c=this,l=arguments,f=function(){var e,f;if(!(t=s&&(r!==u&&(c=void 0,l=[e]),n.rejectWith(c,l))}};t?p():(de.Deferred.getStackHook&&(p.stackTrace=de.Deferred.getStackHook()),e.setTimeout(p))}}var s=0;return de.Deferred(function(e){n[0][3].add(i(0,e,de.isFunction(o)?o:a,e.notifyWith)),n[1][3].add(i(0,e,de.isFunction(t)?t:a)),n[2][3].add(i(0,e,de.isFunction(r)?r:u))}).promise()},promise:function(e){return null!=e?de.extend(e,o):o}},i={};return de.each(n,function(e,t){var s=t[2],a=t[5];o[t[1]]=s.add,a&&s.add(function(){r=a},n[3-e][2].disable,n[0][2].lock),s.add(t[3].fire),i[t[0]]=function(){return i[t[0]+"With"](this===i?void 0:this,arguments),this},i[t[0]+"With"]=s.fireWith}),o.promise(i),t&&t.call(i,i),i},when:function(e){var t=arguments.length,n=t,r=Array(n),o=re.call(arguments),i=de.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?re.call(arguments):n,--t||i.resolveWith(r,o)}};if(t<=1&&(c(e,i.done(s(n)).resolve,i.reject),"pending"===i.state()||de.isFunction(o[n]&&o[n].then)))return i.then();for(;n--;)c(o[n],s(n),i.reject);return i.promise()}});var De=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;de.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&De.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},de.readyException=function(t){e.setTimeout(function(){throw t})};var Oe=de.Deferred();de.fn.ready=function(e){return Oe.then(e).catch(function(e){de.readyException(e)}),this},de.extend({isReady:!1,readyWait:1,holdReady:function(e){e?de.readyWait++:de.ready(!0)},ready:function(e){(e===!0?--de.readyWait:de.isReady)||(de.isReady=!0,e!==!0&&--de.readyWait>0||Oe.resolveWith(te,[de]))}}),de.ready.then=Oe.then,"complete"===te.readyState||"loading"!==te.readyState&&!te.documentElement.doScroll?e.setTimeout(de.ready):(te.addEventListener("DOMContentLoaded",l),e.addEventListener("load",l));var Le=function(e,t,n,r,o,i,s){var a=0,u=e.length,c=null==n;if("object"===de.type(n)){o=!0;for(a in n)Le(e,t,a,n[a],!0,i,s)}else if(void 0!==r&&(o=!0,de.isFunction(r)||(s=!0),c&&(s?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(de(e),n)})),t))for(;a1,null,!0)},removeData:function(e){return this.each(function(){Re.remove(this,e)})}}),de.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Fe.get(e,t),n&&(!r||de.isArray(n)?r=Fe.access(e,t,de.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=de.queue(e,t),r=n.length,o=n.shift(),i=de._queueHooks(e,t),s=function(){de.dequeue(e,t)};"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===t&&n.unshift("inprogress"),delete i.stop,o.call(e,s,i)),!r&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Fe.get(e,n)||Fe.access(e,n,{empty:de.Callbacks("once memory").add(function(){Fe.remove(e,[t+"queue",n])})})}}),de.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Ve=/^$|\/(?:java|ecma)script/i,Ge={option:[1,""],thead:[1,"","
                    "],col:[2,"","
                    "],tr:[2,"","
                    "],td:[3,"","
                    "],_default:[0,"",""]};Ge.optgroup=Ge.option,Ge.tbody=Ge.tfoot=Ge.colgroup=Ge.caption=Ge.thead,Ge.th=Ge.td;var Ye=/<|&#?\w+;/;!function(){var e=te.createDocumentFragment(),t=e.appendChild(te.createElement("div")),n=te.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),pe.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",pe.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var Qe=te.documentElement,Je=/^key/,Ke=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ze=/^([^.]*)(?:\.(.+)|)/;de.event={global:{},add:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.get(e);if(m)for(n.handler&&(i=n,n=i.handler,o=i.selector),o&&de.find.matchesSelector(Qe,o),n.guid||(n.guid=de.guid++),(u=m.events)||(u=m.events={}),(s=m.handle)||(s=m.handle=function(t){return"undefined"!=typeof de&&de.event.triggered!==t.type?de.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(qe)||[""],c=t.length;c--;)a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h&&(f=de.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=de.event.special[h]||{},l=de.extend({type:h,origType:g,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&de.expr.match.needsContext.test(o),namespace:d.join(".")},i),(p=u[h])||(p=u[h]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,d,s)!==!1||e.addEventListener&&e.addEventListener(h,s)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),o?p.splice(p.delegateCount++,0,l):p.push(l),de.event.global[h]=!0)},remove:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.hasData(e)&&Fe.get(e);if(m&&(u=m.events)){for(t=(t||"").match(qe)||[""],c=t.length;c--;)if(a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){for(f=de.event.special[h]||{},h=(r?f.delegateType:f.bindType)||h,p=u[h]||[],a=a[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=i=p.length;i--;)l=p[i],!o&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(i,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(e,l));s&&!p.length&&(f.teardown&&f.teardown.call(e,d,m.handle)!==!1||de.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)de.event.remove(e,h+t[c],n,r,!0);de.isEmptyObject(u)&&Fe.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,i,s,a=de.event.fix(e),u=new Array(arguments.length),c=(Fe.get(this,"events")||{})[a.type]||[],l=de.event.special[a.type]||{};for(u[0]=a,t=1;t=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==e.type||c.disabled!==!0)){for(i=[],s={},n=0;n-1:de.find(o,this,null,[c]).length),s[o]&&i.push(r);i.length&&a.push({elem:c,handlers:i})}return c=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,tt=/\s*$/g;de.extend({htmlPrefilter:function(e){return e.replace(et,"<$1>")},clone:function(e,t,n){var r,o,i,s,a=e.cloneNode(!0),u=de.contains(e.ownerDocument,e);if(!(pe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||de.isXMLDoc(e)))for(s=v(a),i=v(e),r=0,o=i.length;r0&&y(s,!u&&v(e,"script")),a},cleanData:function(e){for(var t,n,r,o=de.event.special,i=0;void 0!==(n=e[i]);i++)if(He(n)){if(t=n[Fe.expando]){if(t.events)for(r in t.events)o[r]?de.event.remove(n,r):de.removeEvent(n,r,t.handle);n[Fe.expando]=void 0}n[Re.expando]&&(n[Re.expando]=void 0)}}}),de.fn.extend({detach:function(e){return q(this,e,!0)},remove:function(e){return q(this,e)},text:function(e){return Le(this,function(e){return void 0===e?de.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.appendChild(e)}})},prepend:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(de.cleanData(v(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return de.clone(this,e,t)})},html:function(e){return Le(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!tt.test(e)&&!Ge[(Xe.exec(e)||["",""])[1].toLowerCase()]){e=de.htmlPrefilter(e);try{for(;n1)}}),de.Tween=I,I.prototype={constructor:I,init:function(e,t,n,r,o,i){this.elem=e,this.prop=n,this.easing=o||de.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=i||(de.cssNumber[n]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,n=I.propHooks[this.prop];return this.options.duration?this.pos=t=de.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=de.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){de.fx.step[e.prop]?de.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[de.cssProps[e.prop]]&&!de.cssHooks[e.prop]?e.elem[e.prop]=e.now:de.style(e.elem,e.prop,e.now+e.unit)}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},de.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},de.fx=I.prototype.init,de.fx.step={};var ht,dt,gt=/^(?:toggle|show|hide)$/,mt=/queueHooks$/;de.Animation=de.extend(U,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,$e.exec(t),n),n}]},tweener:function(e,t){de.isFunction(e)?(t=e,e=["*"]):e=e.match(qe);for(var n,r=0,o=e.length;r1)},removeAttr:function(e){return this.each(function(){de.removeAttr(this,e)})}}),de.extend({attr:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return"undefined"==typeof e.getAttribute?de.prop(e,t,n):(1===i&&de.isXMLDoc(e)||(o=de.attrHooks[t.toLowerCase()]||(de.expr.match.bool.test(t)?vt:void 0)),void 0!==n?null===n?void de.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(r=o.get(e,t))?r:(r=de.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!pe.radioValue&&"radio"===t&&de.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(qe);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),vt={set:function(e,t,n){return t===!1?de.removeAttr(e,n):e.setAttribute(n,n),n}},de.each(de.expr.match.bool.source.match(/\w+/g),function(e,t){var n=yt[t]||de.find.attr;yt[t]=function(e,t,r){var o,i,s=t.toLowerCase();return r||(i=yt[s],yt[s]=o,o=null!=n(e,t,r)?s:null,yt[s]=i),o}});var xt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;de.fn.extend({prop:function(e,t){return Le(this,de.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[de.propFix[e]||e]})}}),de.extend({prop:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&de.isXMLDoc(e)||(t=de.propFix[t]||t,o=de.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=de.find.attr(e,"tabindex");return t?parseInt(t,10):xt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),pe.optSelected||(de.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),de.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){de.propFix[this.toLowerCase()]=this}),de.fn.extend({addClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).addClass(e.call(this,t,X(this)))});if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)r.indexOf(" "+i+" ")<0&&(r+=i+" ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).removeClass(e.call(this,t,X(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)for(;r.indexOf(" "+i+" ")>-1;)r=r.replace(" "+i+" "," ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):de.isFunction(e)?this.each(function(n){de(this).toggleClass(e.call(this,n,X(this),t),t)}):this.each(function(){var t,r,o,i;if("string"===n)for(r=0,o=de(this),i=e.match(qe)||[];t=i[r++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||(t=X(this),t&&Fe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":Fe.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(X(n))+" ").indexOf(t)>-1)return!0;return!1}});var wt=/\r/g;de.fn.extend({val:function(e){var t,n,r,o=this[0];{if(arguments.length)return r=de.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=r?e.call(this,n,de(this).val()):e,null==o?o="":"number"==typeof o?o+="":de.isArray(o)&&(o=de.map(o,function(e){return null==e?"":e+""})),t=de.valHooks[this.type]||de.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))});if(o)return t=de.valHooks[o.type]||de.valHooks[o.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:(n=o.value,"string"==typeof n?n.replace(wt,""):null==n?"":n)}}}),de.extend({valHooks:{option:{get:function(e){var t=de.find.attr(e,"value");return null!=t?t:z(de.text(e))}},select:{get:function(e){var t,n,r,o=e.options,i=e.selectedIndex,s="select-one"===e.type,a=s?null:[],u=s?i+1:o.length;for(r=i<0?u:s?i:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),de.each(["radio","checkbox"],function(){de.valHooks[this]={set:function(e,t){if(de.isArray(t))return e.checked=de.inArray(de(e).val(),t)>-1}},pe.checkOn||(de.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Tt=/^(?:focusinfocus|focusoutblur)$/;de.extend(de.event,{trigger:function(t,n,r,o){var i,s,a,u,c,l,f,p=[r||te],h=ce.call(t,"type")?t.type:t,d=ce.call(t,"namespace")?t.namespace.split("."):[];if(s=a=r=r||te,3!==r.nodeType&&8!==r.nodeType&&!Tt.test(h+de.event.triggered)&&(h.indexOf(".")>-1&&(d=h.split("."),h=d.shift(),d.sort()),c=h.indexOf(":")<0&&"on"+h,t=t[de.expando]?t:new de.Event(h,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=d.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:de.makeArray(n,[t]),f=de.event.special[h]||{},o||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!o&&!f.noBubble&&!de.isWindow(r)){for(u=f.delegateType||h,Tt.test(u+h)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(r.ownerDocument||te)&&p.push(a.defaultView||a.parentWindow||e)}for(i=0;(s=p[i++])&&!t.isPropagationStopped();)t.type=i>1?u:f.bindType||h,l=(Fe.get(s,"events")||{})[t.type]&&Fe.get(s,"handle"),l&&l.apply(s,n),l=c&&s[c],l&&l.apply&&He(s)&&(t.result=l.apply(s,n),t.result===!1&&t.preventDefault());return t.type=h,o||t.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!He(r)||c&&de.isFunction(r[h])&&!de.isWindow(r)&&(a=r[c],a&&(r[c]=null),de.event.triggered=h,r[h](),de.event.triggered=void 0,a&&(r[c]=a)),t.result}},simulate:function(e,t,n){var r=de.extend(new de.Event,n,{type:e,isSimulated:!0});de.event.trigger(r,null,t)}}),de.fn.extend({trigger:function(e,t){return this.each(function(){de.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return de.event.trigger(e,t,n,!0)}}),de.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){de.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),de.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),pe.focusin="onfocusin"in e,pe.focusin||de.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){de.event.simulate(t,e.target,de.event.fix(e))};de.event.special[t]={setup:function(){var r=this.ownerDocument||this,o=Fe.access(r,t);o||r.addEventListener(e,n,!0),Fe.access(r,t,(o||0)+1)},teardown:function(){var r=this.ownerDocument||this,o=Fe.access(r,t)-1;o?Fe.access(r,t,o):(r.removeEventListener(e,n,!0),Fe.remove(r,t))}}});var Ct=e.location,jt=de.now(),kt=/\?/;de.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||de.error("Invalid XML: "+t),n};var Et=/\[\]$/,St=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;de.param=function(e,t){var n,r=[],o=function(e,t){var n=de.isFunction(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(de.isArray(e)||e.jquery&&!de.isPlainObject(e))de.each(e,function(){o(this.name,this.value)});else for(n in e)V(n,e[n],t,o);return r.join("&")},de.fn.extend({serialize:function(){return de.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=de.prop(this,"elements");return e?de.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!de(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!ze.test(e))}).map(function(e,t){var n=de(this).val();return null==n?null:de.isArray(n)?de.map(n,function(e){return{name:t.name,value:e.replace(St,"\r\n")}}):{name:t.name,value:n.replace(St,"\r\n")}}).get()}});var qt=/%20/g,Dt=/#.*$/,Ot=/([?&])_=[^&]*/,Lt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ft=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Pt={},Mt="*/".concat("*"),$t=te.createElement("a");$t.href=Ct.href,de.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Ht.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Mt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":de.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,de.ajaxSettings),t):Q(de.ajaxSettings,e)},ajaxPrefilter:G(It),ajaxTransport:G(Pt),ajax:function(t,n){function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=void 0,s=a||"",C.readyState=t>0?4:0,c=t>=200&&t<300||304===t,r&&(b=J(d,C,r)),b=K(d,b,C,c),c?(d.ifModified&&(w=C.getResponseHeader("Last-Modified"),w&&(de.lastModified[i]=w),w=C.getResponseHeader("etag"),w&&(de.etag[i]=w)),204===t||"HEAD"===d.type?T="nocontent":304===t?T="notmodified":(T=b.state,p=b.data,h=b.error,c=!h)):(h=T,!t&&T||(T="error",t<0&&(t=0))),C.status=t,C.statusText=(n||T)+"",c?v.resolveWith(g,[p,T,C]):v.rejectWith(g,[C,T,h]),C.statusCode(x),x=void 0,f&&m.trigger(c?"ajaxSuccess":"ajaxError",[C,d,c?p:h]),y.fireWith(g,[C,T]),f&&(m.trigger("ajaxComplete",[C,d]),--de.active||de.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var o,i,s,a,u,c,l,f,p,h,d=de.ajaxSetup({},n),g=d.context||d,m=d.context&&(g.nodeType||g.jquery)?de(g):de.event,v=de.Deferred(),y=de.Callbacks("once memory"),x=d.statusCode||{},b={},w={},T="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Lt.exec(s);)a[t[1].toLowerCase()]=t[2];t=a[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return l?s:null},setRequestHeader:function(e,t){return null==l&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)C.always(e[C.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||T;return o&&o.abort(t),r(0,t),this}};if(v.promise(C),d.url=((t||d.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||"*").toLowerCase().match(qe)||[""],null==d.crossDomain){c=te.createElement("a");try{c.href=d.url,c.href=c.href,d.crossDomain=$t.protocol+"//"+$t.host!=c.protocol+"//"+c.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&"string"!=typeof d.data&&(d.data=de.param(d.data,d.traditional)),Y(It,d,n,C),l)return C;f=de.event&&d.global,f&&0===de.active++&&de.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Ft.test(d.type),i=d.url.replace(Dt,""),d.hasContent?d.data&&d.processData&&0===(d.contentType||"").indexOf("application/x-www-form-urlencoded")&&(d.data=d.data.replace(qt,"+")):(h=d.url.slice(i.length),d.data&&(i+=(kt.test(i)?"&":"?")+d.data,delete d.data),d.cache===!1&&(i=i.replace(Ot,"$1"),h=(kt.test(i)?"&":"?")+"_="+jt++ +h),d.url=i+h),d.ifModified&&(de.lastModified[i]&&C.setRequestHeader("If-Modified-Since",de.lastModified[i]),de.etag[i]&&C.setRequestHeader("If-None-Match",de.etag[i])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",d.contentType),C.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Mt+"; q=0.01":""):d.accepts["*"]);for(p in d.headers)C.setRequestHeader(p,d.headers[p]);if(d.beforeSend&&(d.beforeSend.call(g,C,d)===!1||l))return C.abort();if(T="abort",y.add(d.complete),C.done(d.success),C.fail(d.error),o=Y(Pt,d,n,C)){if(C.readyState=1,f&&m.trigger("ajaxSend",[C,d]),l)return C;d.async&&d.timeout>0&&(u=e.setTimeout(function(){C.abort("timeout")},d.timeout));try{l=!1,o.send(b,r)}catch(e){if(l)throw e;r(-1,e)}}else r(-1,"No Transport");return C},getJSON:function(e,t,n){return de.get(e,t,n,"json")},getScript:function(e,t){return de.get(e,void 0,t,"script")}}),de.each(["get","post"],function(e,t){de[t]=function(e,n,r,o){return de.isFunction(n)&&(o=o||r,r=n,n=void 0),de.ajax(de.extend({url:e,type:t,dataType:o,data:n,success:r},de.isPlainObject(e)&&e))}}),de._evalUrl=function(e){return de.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},de.fn.extend({wrapAll:function(e){var t;return this[0]&&(de.isFunction(e)&&(e=e.call(this[0])),t=de(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return de.isFunction(e)?this.each(function(t){de(this).wrapInner(e.call(this,t))}):this.each(function(){var t=de(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=de.isFunction(e);return this.each(function(n){de(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){de(this).replaceWith(this.childNodes)}),this}}),de.expr.pseudos.hidden=function(e){return!de.expr.pseudos.visible(e)},de.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},de.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Wt={0:200,1223:204},Bt=de.ajaxSettings.xhr();pe.cors=!!Bt&&"withCredentials"in Bt,pe.ajax=Bt=!!Bt,de.ajaxTransport(function(t){var n,r;if(pe.cors||Bt&&!t.crossDomain)return{send:function(o,i){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest");for(s in o)a.setRequestHeader(s,o[s]);n=function(e){return function(){n&&(n=r=a.onload=a.onerror=a.onabort=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?i(0,"error"):i(a.status,a.statusText):i(Wt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=n(),r=a.onerror=n("error"),void 0!==a.onabort?a.onabort=r:a.onreadystatechange=function(){4===a.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{a.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),de.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),de.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return de.globalEval(e),e}}}),de.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),de.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,o){t=de(" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/hexo/hello.html b/_book/hexo/hello.html new file mode 100644 index 0000000..3353f0c --- /dev/null +++ b/_book/hexo/hello.html @@ -0,0 +1,1153 @@ + + + + + + + 分分钟部署一个Hexo环境 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

                    +
                    + + + + + + + + +
                    + +
                    + +
                    + + + + + + + + +
                    +
                    + +
                    +
                    + +
                    + +

                    使用hexo搭建博客系列

                    +

                    1. 分分钟部署一个Hexo环境

                    +

                    2. 了解配置

                    +

                    1. 安装NodeJS

                    +

                    我的系统环境:Win7_x64 +去Nodejs的官网下载:https://nodejs.org/en/download/

                    +

                    这里我下载的是

                    +

                    +

                    然后按照提示一步一步安装即可,我装在了C盘,这个盘装了SSD会快一些。 +NodeJS会自动将bin写入环境变量,来试试是否安装成功 输入node -v命令查看nodejs版本。

                    +

                    +

                    2. 配置淘宝 NPM 镜像

                    +

                    cnpmjs.org是一个非常棒的npm国内镜像。由于其使用量越来越大,加上淘宝内部也有很多项目使用 NodeJS,于是,淘宝正式基于 cnpmjs 推出了镜像服务 +淘宝的 NPM 镜像是一个完整的npmjs.org镜像。你可以用此代替官方版本(只读),同步频率目前为 15分钟 一次以保证尽量与官方服务同步。

                    +

                    +

                    当前 registry.npm.taobao.org 是从 registry.npmjs.org 进行全量同步的. +当前 npm.taobao.org 运行版本是: cnpmjs.org@0.4.1 +系统运行在 Node.js@v0.11.12 上.

                    +

                    使用说明

                    +

                    你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

                    +
                    $ npm install -g cnpm --registry=https://registry.npm.taobao.org
                    +
                    +

                    我使用的就是这个。

                    +

                    +

                    或者你直接通过添加 npm 参数 alias 一个新命令:

                    +
                    alias cnpm="npm --registry=https://registry.npm.taobao.org \
                    +--cache=$HOME/.npm/.cache/cnpm \
                    +--disturl=https://npm.taobao.org/dist \
                    +--userconfig=$HOME/.cnpmrc"
                    +
                    +# Or alias it in .bashrc or .zshrc
                    +$ echo '\n#alias for cnpm\nalias cnpm="npm --registry=https://registry.npm.taobao.org \
                    +  --cache=$HOME/.npm/.cache/cnpm \
                    +  --disturl=https://npm.taobao.org/dist \
                    +  --userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc
                    +
                    +

                    安装模块

                    +

                    registry.npm.taobao.org 安装所有模块. 当安装的时候发现安装的模块还没有同步过来, 淘宝 NPM 会自动在后台进行同步, 并且会让你从官方 NPM registry.npmjs.org 进行安装. 下次你再安装这个模块的时候, 就会直接从 淘宝 NPM 安装了.

                    +
                    $ cnpm install [name]
                    +
                    +

                    同步模块

                    +

                    直接通过 sync 命令马上同步一个模块, 只有 cnpm 命令行才有此功能:

                    +
                    $ cnpm sync connect
                    +
                    +

                    当然, 你可以直接通过 web 方式来同步: /sync/connect

                    +
                    $ open https://npm.taobao.org/sync/connect
                    +
                    +

                    3. 安装hexo

                    +

                    hexo 官网的安装说明是 npm install hexo-cli -g

                    +

                    因为我们安装了淘宝的NPM,所以需要使用 cnpm 命令

                    +

                    +

                    这样就安装成功了!

                    +

                    4. HelloWorld

                    +

                    按照官方教程(注意使用 cnpm 哦):

                    +
                    $ hexo init blog
                    +$ cd blog
                    +$ cnpm install
                    +$ hexo server
                    +
                    +

                    这样就可以运行一个最简单的博客程序了~

                    +

                    下一节:各种配置详解

                    + + +
                    + +
                    +
                    +
                    + +

                    results matching ""

                    +
                      + +
                      +
                      + +

                      No results matching ""

                      + +
                      +
                      +
                      + +
                      +
                      + +
                      + + + + + + + + + + + + + + +
                      + + +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/hexo/writing.html b/_book/hexo/writing.html new file mode 100644 index 0000000..66c520d --- /dev/null +++ b/_book/hexo/writing.html @@ -0,0 +1,1435 @@ + + + + + + + 开始写作吧 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      + + + + + + + + +
                      + +
                      + +
                      + + + + + + + + +
                      +
                      + +
                      +
                      + +
                      + +

                      上一节:各种配置详解

                      +

                      1. 开始写作

                      +

                      使用下面的命令创建一个新文章:

                      +
                      $ hexo new [layout] <title>
                      +
                      +

                      默认的文章布局是post,当然你可用提供自己的布局文件。你可以编辑 _config.yml 修改默认布局。

                      +

                      Layout(布局)

                      +

                      Hexo提供了3个默认布局:postpagedraft。不同布局的文章会被保存到不同的目录,这取决于它的布局类型。 +自定义布局保存到 source/_posts 文件夹。

                      + + + + + + + + + + + + + + + + + + + + + +
                      布局路径
                      postsource/_posts
                      pagesource
                      draftsource/_drafts
                      +
                      +

                      不处理文章!

                      +

                      如果你不希望你的文章被处理,你可以设置 layout:false

                      +
                      +

                      Filename(文件名)

                      +

                      默认情况下,hexo使用文章标题作为文件名。 +你可以编辑 _config.ymlnew_post_name 设置改变默认的文件名。 +例如 :year-:month-:day-:title.md 将前缀的文件名后创建日期。你可以使用以下的占位符:

                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      占位符描述
                      :title文章标题
                      :year创建年份
                      :month月份,如4月为04
                      :i_month月份,单数字,比如4月就是4
                      :day日期
                      :i_day日期
                      +

                      Drafts(草稿)

                      +

                      前面hexo提到一个特殊的布局:draft。 +这种布局的帖子保存到 source/_drafts 文件夹。你可以使用 publish 命令移动草稿到 source/_posts 文件夹。 +这个命令类似于你使用了 new

                      +
                      $ hexo publish [layout] <title>
                      +
                      +

                      草稿默认不显示,你可以添加 --draft 选项或者设置 _config.yml 中的 render_drafts 使hexo显示草稿。

                      +

                      Scaffolds(模版)

                      +

                      当创建一篇文章,Hexo将构建基于 scaffolds 文件夹中的相应文件。例如:

                      +
                      $ hexo new photo "My Gallery"
                      +
                      +

                      当你运行这个命令,要尝试在 scaffolds 文件夹下找到文件名为 photo.md 的模板文件。下面占位符可以使用模板:

                      + + + + + + + + + + + + + + + + + + + + + +
                      占位符描述
                      layout布局
                      title文章标题
                      date发布时间
                      +

                      2. 前置申明

                      +

                      前置申明的意思是写在文章前面的一块内容,为了对文章进行某些设置。它有两种书写方式:

                      +

                      YAML方式,以三短线结束

                      +
                      title: Hello World
                      +date: 2013/7/13 20:46:25
                      +---
                      +
                      +

                      JSON方式,以三分号结束

                      +
                      "title": "Hello World",
                      +"date": "2013/7/13 20:46:25"
                      +;;;
                      +
                      +

                      设置以及默认值

                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      设置描述
                      layout布局
                      title文章标题
                      date发布时间,默认为文件创建时间
                      updated文件修改时间
                      comments是否开启评论,默认为true
                      tags文章标签
                      categories文章所属分类
                      permalink文章永久链接,一般不用写,默认就行
                      +

                      分类 & 标签

                      +

                      分类和标签只支持在文章。分类可能会有多层级别。 +下面是一个例子:

                      +
                      categories:
                      +- Sports
                      +- Baseball
                      +tags:
                      +- Injury
                      +- Fight
                      +- Shocking
                      +
                      +

                      3. 标签插件

                      +

                      这里的标签插件不是文章中的标签,它可以帮助你在文章中插入特定的一些内容。

                      +

                      Block Quote(块引用)

                      +

                      插入引号与作者、来源和文章的标题。 +别名:quote

                      +
                      {% blockquote [author[, source]] [link] [source_link_title] %}
                      +content
                      +{% endblockquote %}
                      +
                      +

                      示例

                      +

                      没有任何参数,纯输出blockquote

                      +
                      {% blockquote %}
                      +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu lorem.
                      +{% endblockquote %}
                      +
                      +
                      +

                      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu lorem.

                      +
                      +

                      引用一本书

                      +
                      {% blockquote David Levithan, Wide Awake %}
                      +Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.
                      +{% endblockquote %}
                      +
                      +
                      +

                      Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy. +David Levithan——Wide Awake

                      +
                      +

                      引用自Twitter

                      +
                      {% blockquote @DevDocs https://twitter.com/devdocs/status/356095192085962752 %}
                      +NEW: DevDocs now comes with syntax highlighting. http://devdocs.io
                      +{% endblockquote %}
                      +
                      +
                      +

                      NEW: DevDocs now comes with syntax highlighting. http://devdocs.io +@DevDocs——twitter.com/devdocs/status/356095192085962752

                      +
                      +

                      引用网络上一篇文章

                      +
                      {% blockquote Seth Godin http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html Welcome to Island Marketing %}
                      +Every interaction is both precious and an opportunity to delight.
                      +{% endblockquote %}
                      +
                      +
                      +

                      Every interaction is both precious and an opportunity to delight.

                      +

                      Seth Godin——Welcome to Island Marketing

                      +
                      +

                      代码块

                      +

                      文章中插入代码块 +别名:code

                      +
                      {% codeblock [title] [lang:language] [url] [link text] %}
                      +code snippet
                      +{% endcodeblock %}
                      +
                      +

                      示例

                      +

                      普通代码块

                      +
                      {% codeblock %}
                      +alert('Hello World!');
                      +{% endcodeblock %}
                      +
                      +
                      alert('Hello World!');
                      +
                      +

                      指定语言

                      +
                      {% codeblock lang:objc %}
                      +[rectangle setX: 10 y: 10 width: 20 height: 20];
                      +{% endcodeblock %}
                      +
                      +
                      [rectangle setX: 10 y: 10 width: 20 height: 20];
                      +
                      +

                      Gist

                      +
                      {% gist gist_id [filename] %}
                      +
                      +

                      iframe

                      +
                      {% iframe url [width] [height] %}
                      +
                      +

                      Image

                      +
                      {% img [class names] /path/to/image [width] [height] [title text [alt text]] %}
                      +
                      +

                      Link

                      +
                      {% link text url [external] [title] %}
                      +
                      +

                      更多...

                      +

                      4. 资源目录x

                      +

                      资源是非文章的文件,在source文件夹中,如图片、css、javascript文件等。 +Hexo提供了一个更加方便的方式来管理资源。你可以修改 post_asset_folder 设置。

                      +
                      post_asset_folder: true
                      +
                      +

                      一旦 post_asset_folder 设置启用,在你创建文章的时候,Hexo会创建一个同名目录, +你可以将该文章关联的资源全部放到该目录下。这样就可以更加方便的使用它们了。

                      +

                      标签插件使用

                      +
                      {% asset_path slug %}
                      +{% asset_img slug [title] %}
                      +{% asset_link slug [title] %}
                      +
                      +

                      5. 数据文件

                      +

                      有时,你可能会使用一些不在post中的模版数据,或者你想复用这些数据, +那么你可以试用一下Hexo3中的『Data files』功能。这个特性加载 source/_data 目录中的YAML或者JSON文件,从而用到你的网站中。

                      +

                      例如在 source/_data 文件夹中添加 menu.yml

                      +
                      Home: /
                      +Gallery: /gallery/
                      +Archives: /archives/
                      +
                      +

                      你可用在模板中使用它们:

                      +
                      {% for link in site.data.menu %}
                      +  <a href="{{ link }}">{{ loop.key }}</a>
                      +{% endfor %}
                      +
                      +

                      6. 服务器

                      +

                      Hexo-server

                      +

                      在Hexo3中,服务器模块从主模块中分开了,你可以通过安装 hexo-server 来使用它。

                      +
                      $ npm install hexo-server --save
                      +
                      +

                      一旦服务器安装,运行以下命令启动服务器。 +默认你的网站将会运行在 http://localhost:4000。 +当服务器正在运行时,Hexo将自动监控文件更改和更新。你不需要重新启动服务器。

                      +
                      $ hexo server
                      +
                      +

                      如果你想修改端口或遇到 EADDRINUSE 错误。您可以添加 -p 选项来设置其他端口。

                      +
                      $ hexo server -p 5000
                      +
                      +

                      Static Mode

                      +

                      在静态模式下,public 文件夹的监控的禁用的。你必须运行 hexo generate 之前启动服务器,通常用于生产环境。

                      +
                      $ hexo server -s
                      +
                      +

                      Custom IP

                      +

                      Hexo运行服务器在默认0.0.0.0。你可以覆盖默认的IP设置

                      +
                      $ hexo server -i 192.168.1.1
                      +
                      +

                      7. 生成器

                      +

                      Hexo生成静态文件非常简单、高效。

                      +
                      $ hexo generate
                      +
                      +

                      监听文件修改

                      +

                      Hexo立即可以看到文件更改并重新生成文件。Hexo将比较SHA1校验和文件和只写文件的改变。

                      +
                      $ hexo generate --watch
                      +
                      +

                      部署后生成

                      +

                      部署生成后,您可以运行以下命令之一,这2个命令使用结果相同。

                      +
                      $ hexo generate --deploy
                      +$ hexo deploy --generate
                      +
                      +

                      8. 部署

                      +

                      Hexo为部署提供了一个快速、简单的方法。你只需要一个命令将网站部署到服务器。

                      +
                      $ hexo deploy
                      +
                      +

                      在我们开始之前,你必须在 _config.yml 修改设置。一个有效的部署设置必须有 type 字段。例如:

                      +
                      deploy:
                      +  type: git
                      +
                      +

                      你可用同时部署到多个type,Hexo将依次执行每个部署。

                      +
                      deploy:
                      +- type: git
                      +  repo:
                      +- type: heroku
                      +  repo:
                      +
                      +

                      Git

                      +

                      安装 hexo-deployer-git

                      +
                      $ npm install hexo-deployer-git --save
                      +
                      +

                      编辑设置:

                      +
                      deploy:
                      +  type: git
                      +  repo: <repository url>
                      +  branch: [branch]
                      +  message: [message]
                      +
                      +
                      | 选项         | 描述|
                      +| ----------- |---------------------------------------------|
                      +| repo       | github仓库地址 |
                      +| branch    | 分支名称 |
                      +| message |定制提交消息(默认为 `Site updated: {{ now("YYYY-MM-DD HH:mm:ss") }}` )|
                      +
                      + +
                      + +
                      +
                      +
                      + +

                      results matching ""

                      +
                        + +
                        +
                        + +

                        No results matching ""

                        + +
                        +
                        +
                        + +
                        +
                        + +
                        + + + + + + + + + + + + + + +
                        + + +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/http/request_message.md b/_book/http/request_message.md new file mode 100644 index 0000000..5bddad6 --- /dev/null +++ b/_book/http/request_message.md @@ -0,0 +1,237 @@ +# HTTP请求报文解剖 + +HTTP请求报文由3部分组成**(请求行+请求头+请求体)**: + +![](http://i.imgur.com/oIPQIoF.png) + +下面是一个实际的请求报文: + +![](http://i.imgur.com/myBqd6H.jpg) + +① 是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST,Spring 3.0提供了一个HiddenHttpMethodFilter,允许你通过“_method”的表单参数指定这些特殊的HTTP方法(实际上还是通过POST提交表单)。服务端配置了HiddenHttpMethodFilter后,Spring会根据_method参数指定的值模拟出相应的HTTP方法,这样,就可以使用这些HTTP方法对处理方法进行映射了。 + +② 为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL,③是协议名称及版本号。 + +④ 是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。 + +⑤ 是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1¶m2=value2”的方式传递请求参数。 + +对照上面的请求报文,我们把它进一步分解,你可以看到一幅更详细的结构图: + +![](http://i.imgur.com/9D9mqxi.png) + +> 1.IE系 +HttpWatch是强大的网页数据分析工具,安装后将集成到Internet Explorer工具栏中。它不用代理服务器或一些复杂的网络监控工具,就能抓取请求及响应的完整信息,包括Cookies、消息头、查询参数、响应报文等,是Web应用开发人员的必备工具。 + 2.Chrome,firefox + 自身的调试器已经很好用了,按F12就可以看到(IE10以上也直接按F12就可以调试了) + +## HTTP请求报文头属性 + +报文头属性是什么东西呢?我们不妨以一个小故事来说明吧。 + +> 快到中午了,张三丰不想去食堂吃饭,于是打电话叫外卖:老板,我要一份[鱼香肉丝],要12:30之前给我送过来哦,我在江湖湖公司研发部,叫张三丰。 + +这里,你要 `[鱼香肉丝]` 相当于HTTP报文体,而 `“12:30之前送过来”`,你叫 `“张三丰”` 等信息就相当于HTTP的报文头。它们是一些附属信息,帮忙你和饭店老板顺利完成这次交易。 + +请求HTTP报文和响应HTTP报文都拥有若干个报文关属性,它们是为协助客户端及服务端交易的一些附属信息。 + +### 常见的HTTP请求报文头属性 + +**Accept ** + +请求报文可通过一个 `Accept` 报文头属性告诉服务端 客户端接受什么类型的响应。 + +如下报文头相当于告诉服务端,俺客户端能够接受的响应类型仅为纯文本数据啊,你丫别发其它什么图片啊,视频啊过来,那样我会歇菜的~~~: + +```sh +Accept:text/plain +``` + +Accept属性的值可以为一个或多个MIME类型的值,关于MIME类型,大家请参考:[http://en.wikipedia.org/wiki/MIME_type](http://en.wikipedia.org/wiki/MIME_type) + +**Cookie** + +这是第一个要说的,客户端的Cookie就是通过这个报文头属性传给服务端的哦!如下所示: + +```sh +Cookie:skin=blue; jsessionid=5F4771183629C9834F8382E23BE13C4C +``` + +注意到后台的那个 `jsessionid=5F4771183629C9834F8382E23BE13C4C` 没有, +服务端是怎么知道客户端的多个请求是属于一个Session的,原来就是通过HTTP请求报文头的Cookie属性的jsessionid的值关联起来的!(当然也可以通过重写URL的方式将会话ID附带在每个URL的后后面哦)。 + +**Referer** + +表示这个请求是从哪个URL过来的,假如你通过google搜索出一个商家的广告页面,你对这个广告页面感兴趣,鼠标一点发送一个请求报文到商家的网站,这个请求报文的Referer报文头属性值就是 http://www.google.com。 + +很多貌似神奇的网页监控软件(如著名的 [我要啦](http://www.51.la/)),只要在你的网页上放上一段JavaScript,就可以帮你监控流量,全国访问客户的分布情况等报表和图表,其原理就是通过这个Referer及其它一些HTTP报文头工作的。 + +**Cache-Control** + +对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的。 + +如以下设置,相当于让服务端将对应请求返回的响应内容不要在客户端缓存(当然响应报文也是通过响应报文头通知浏览器客户端的,这个下面再说): + +```sh +Cache-Control: no-cache +``` + +### 其它报文头属性 + +参见:[http://en.wikipedia.org/wiki/List_of_HTTP_header_fields](http://en.wikipedia.org/wiki/List_of_HTTP_header_fields) + +### 如何访问请求报文头 + +由于请求报文头是客户端发过来的,服务端当然只能读取了,以下是 `HttpServletRequest` 一些用于读取请求报文头的API: + +```java +//获取请求报文中的属性名称 +java.util.Enumeration getHeaderNames(); + +//获取指定名称的报文头属性的值 +java.lang.String getHeader(java.lang.String name) +``` + +由于一些请求报文头属性“太著名”了,因此HttpServletRequest为它们提供了VIP的API: + +```java +//获取报文头中的Cookie(读取Cookie的报文头属性) + Cookie[] getCookies() ; + +//获取客户端本地化信息(读取 Accept-Language 的报文头属性) +java.util.Locale getLocale() + +//获取请求报文体的长度(读取Content-Length的报文头属性) +int getContentLength(); +``` + +HttpServletRequest可以通过 `HttpSession getSession()` + +获取请求所关联的HttpSession,其内部的机理是通过读取请求报文头中Cookie属性的JSESSIONID的值,在服务端的一个会话Map中,根据这个JSESSIONID获取对应的HttpSession的对象。 +(这样,你就不会觉得HttpSession很神秘了吧,你自己也可以做一个类似的会话管理) + +## HTTP响应报文解剖 + +### 响应报文结构 + +HTTP的响应报文也由三部分组成**(响应行+响应头+响应体**): + +![](http://i.imgur.com/qW0r8iY.png) + +以下是一个实际的HTTP响应报文: + +![](http://i.imgur.com/jR36KBb.jpg) + +① 报文协议及版本; +② 状态码及状态描述; +③ 响应报文头,也是由多个属性组成; +④ 响应报文体,即我们真正要的“干货”。 + +### 响应状态码 + +和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果。 + +HTTP的响应状态码由5段组成: + +- 1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急... +- 2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息. +- 3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。 +- 4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。 +- 5xx 处理发生,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。 + +以下是几个常见的状态码: + +**200 OK** + +你最希望看到的,即处理成功! + +**303 See Other** + +我把你redirect到其它的页面,目标的URL通过响应报文头的Location告诉你。 + +> 悟空:师傅给个桃吧,走了一天了 :relieved: +> 唐僧:我哪有桃啊!去王母娘娘那找吧 :unamused: + +**304 Not Modified** + +告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊! + +**404 Not Found** + +你最不希望看到的,即找不到页面。如你在google上找到一个页面,点击这个链接返回404,表示这个页面已经被网站删除了,google那边的记录只是美好的回忆。 + +**500 Internal Server Error** + +看到这个错误,你就应该查查服务端的日志了,肯定抛出了一堆异常,别睡了,起来改BUG去吧! + +有些响应码,Web应用服务器会自动给生成。你可以通过HttpServletResponse的API设置状态码: + +```java + +//设置状态码,状态码在HttpServletResponse中通过一系列的常量预定义了,如SC_ACCEPTED,SC_OK +void setStatus(int sc) +``` + +### 常见的HTTP响应报文头属性 + +**Cache-Control** + +响应输出到客户端后,服务端通过该报文头属告诉客户端如何控制响应内容的缓存。 + +下面,的设置让客户端对响应内容缓存3600秒,也即在3600秒内,如果客户再次访问该资源,直接从客户端的缓存中返回内容给客户,不要再从服务端获取(当然,这个功能是靠客户端实现的,服务端只是通过这个属性提示客户端“应该这么做”,做不做,还是决定于客户端,如果是自己宣称支持HTTP的客户端,则就应该这样实现)。 + +```sh +Cache-Control: max-age=3600 +``` + +**ETag** + +一个代表响应服务端资源(如页面)版本的报文头属性,如果某个服务端资源发生变化了,这个ETag就会相应发生变化。它是Cache-Control的有益补充,可以让客户端“更智能”地处理什么时候要从服务端取资源,什么时候可以直接从缓存中返回响应。 + +关于ETag的说明,你可以参见:[http://en.wikipedia.org/wiki/HTTP_ETag](http://en.wikipedia.org/wiki/HTTP_ETag)。 +Spring 3.0还专门为此提供了一个 `org.springframework.web.filter.ShallowEtagHeaderFilter` (实现原理很简单,对JSP输出的内容MD5,这样内容有变化ETag就相应变化了),用于生成响应的ETag,因为这东东确实可以帮助减少请求和响应的交互。 + +下面是一个ETag: + +```sh +ETag: "737060cd8c284d8af7ad3082f209582d" +``` + +**Location** + +我们在JSP中让页面Redirect到一个某个A页面中,其实是让客户端再发一个请求到A页面,这个需要Redirect的A页面的URL,其实就是通过响应报文头的Location属性告知客户端的,如下的报文头属性,将使客户端redirect到iteye的首页中: + +```sh +Location: https://github.com/biezhi/jb +``` + +**Set-Cookie** + +服务端可以设置客户端的Cookie,其原理就是通过这个响应报文头属性实现的: + +```sh +Set-Cookie: UserID=Jack; Max-Age=3600; Version=1 +``` + +### 其它HTTP请求报文头属性 + +更多其它的HTTP请求头报文,参见:[http://en.wikipedia.org/wiki/List_of_HTTP_header_fields](http://en.wikipedia.org/wiki/List_of_HTTP_header_fields) + +### 如何写HTTP请求报文头 + +在服务端可以通过HttpServletResponse的API写响应报文头的属性: + +```java +//添加一个响应报文头属性 +void setHeader(String name, String value) +``` + +像Cookie,Location这些响应头是有福之人,HttpServletResponse为它们都提供了VIP(非API 哈): + +```java +//添加Cookie报文头属性 +void addCookie(Cookie cookie) + +//不但会设置Location的响应报文头,还会生成303的状态码呢,两者天仙配呢 +void sendRedirect(String location) +``` diff --git a/_book/index.html b/_book/index.html new file mode 100644 index 0000000..2dce7e2 --- /dev/null +++ b/_book/index.html @@ -0,0 +1,1190 @@ + + + + + + + 介绍 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        + + + + + + + + +
                        + +
                        + +
                        + + + + + + + + +
                        +
                        + +
                        +
                        + +
                        + +

                        java-bible

                        +

                        这里记录了一些技术摘要,部分文章来自网络,本项目的目的力求分享精品技术干货,以Java为主。

                        +

                        如果你喜欢,star 便是,持续更新ing,还有Fork项目的同学,貌似没有什么卵用。。。

                        +

                        目录

                        + +

                        开源组件实现

                        +

                        MVC框架实现篇

                        + +

                        IOC容器实现篇

                        + +

                        设计模式系列

                        + +

                        Java8系列

                        + +

                        Hexo搭建博客

                        + +

                        开发者指南

                        + +

                        运维相关

                        + +

                        经典文章

                        + +

                        服务器/域名/SSL证书

                        + +

                        实用工具/API

                        + +

                        联系

                        + +

                        有兴趣分享技术的 可以发邮件给我 :confused:

                        + + +
                        + +
                        +
                        +
                        + +

                        results matching ""

                        +
                          + +
                          +
                          + +

                          No results matching ""

                          + +
                          +
                          +
                          + +
                          +
                          + +
                          + + + + + + + + + + +
                          + + +
                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/ioc/1.concept.html b/_book/ioc/1.concept.html new file mode 100644 index 0000000..540673b --- /dev/null +++ b/_book/ioc/1.concept.html @@ -0,0 +1,1169 @@ + + + + + + + IOC的概念 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                          +
                          + + + + + + + + +
                          + +
                          + +
                          + + + + + + + + +
                          +
                          + +
                          +
                          + +
                          + +

                          IOC的概念

                          +

                          什么是IOC?

                          +

                          IoC(Inversion of Control),意为控制反转,不是什么技术,而是一种设计思想。Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制

                          +

                          如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:

                          +
                            +
                          • 谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。

                            +
                          • +
                          • 为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

                            +
                          • +
                          +

                          下面举个例子说明说明是IOC:

                          +

                          假设我们要设计一个Girl和一个Boy类,其中Girl有kiss方法,即Girl想要Kiss一个Boy。那么,我们的问题是,Girl如何能够认识这个Boy?

                          +

                          在我们中国,常见的MM与GG的认识方式有以下几种:

                          +
                            +
                          1. 青梅竹马
                          2. +
                          3. 亲友介绍
                          4. +
                          5. 父母包办
                          6. +
                          +

                          那么哪一种才是最好呢? +  

                          +
                            +
                          1. 青梅竹马:Girl从小就知道自己的Boy。
                          2. +
                          +
                          public class Girl { 
                          +    void kiss(){ 
                          +    Boy boy = new Boy(); 
                          +  } 
                          +}
                          +
                          +

                          然而从开始就创建的Boy缺点就是无法在更换。并且要负责Boy的整个生命周期。如果我们的Girl想要换一个怎么办?(笔者严重不支持Girl经常更换Boy)

                          +
                            +
                          1. 亲友介绍:由中间人负责提供Boy来见面
                          2. +
                          +
                          public class Girl { 
                          +  void kiss(){ 
                          +    Boy boy = BoyFactory.createBoy();   
                          +  } 
                          +}
                          +
                          +

                          亲友介绍,固然是好。如果不满意,尽管另外换一个好了。但是,亲友BoyFactory经常是以Singleton的形式出现,不然就是,存在于Globals,无处不在,无处不能。实在是太繁琐了一点,不够灵活。我为什么一定要这个亲友掺和进来呢?为什么一定要付给她介绍费呢?万一最好的朋友爱上了我的男朋友呢?

                          +
                            +
                          1. 父母包办:一切交给父母,自己不用费吹灰之力,只需要等着Kiss就好了。
                          2. +
                          +
                          public class Girl { 
                          +   void kiss(Boy boy){ 
                          +    // kiss boy 
                          +   boy.kiss(); 
                          +  } 
                          +}
                          +
                          +

                          Well,这是对Girl最好的方法,只要想办法贿赂了Girl的父母,并把Boy交给他。那么我们就可以轻松的和Girl来Kiss了。看来几千年传统的父母之命还真是有用哦。至少Boy和Girl不用自己瞎忙乎了。

                          +

                          这就是IOC,将对象的创建和获取提取到外部。由外部容器提供需要的组件。

                          +

                          IoC能做什么

                          +

                          IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

                          +

                          其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC容器来创建并注入它所需要的资源了。

                          +

                          IoC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。

                          +

                          IoC和DI

                          +

                          DI—Dependency Injection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。

                          +

                          理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”,那我们来深入分析一下:

                          +
                            +
                          • 谁依赖于谁:当然是应用程序依赖于IoC容器;

                            +
                          • +
                          • 为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;

                            +
                          • +
                          • 谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;

                            +
                          • +
                          • 注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。

                            +
                          • +
                          +

                          IoC和DI由什么关系呢?其实它们是同一个概念的不同角度描述,由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”,相对IoC 而言,“依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。

                          +

                          对于Spring Ioc这个核心概念,我相信每一个学习Spring的人都会有自己的理解。这种概念上的理解没有绝对的标准答案,仁者见仁智者见智。 +理解了IoC和DI的概念后,一切都将变得简单明了,剩下的工作只是在框架中堆积木而已,下一节来看看Spring是怎么用的

                          + + + + +
                          + +
                          +
                          +
                          + +

                          results matching ""

                          +
                            + +
                            +
                            + +

                            No results matching ""

                            + +
                            +
                            +
                            + +
                            +
                            + +
                            + + + + + + + + + + + + + + +
                            + + +
                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/ioc/2.spring.html b/_book/ioc/2.spring.html new file mode 100644 index 0000000..bc1e803 --- /dev/null +++ b/_book/ioc/2.spring.html @@ -0,0 +1,1165 @@ + + + + + + + Spring中怎么用 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                            +
                            + + + + + + + + +
                            + +
                            + +
                            + + + + + + + + +
                            +
                            + +
                            +
                            + +
                            + +

                            Spring中怎么用

                            +

                            我们在Spring中是这样获取对象的:

                            +
                            public static void main(String[] args) {   
                            +    ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");   
                            +    Lol lol = (Lol) context.getBean("lol");   
                            +    lol.gank(); 
                            +}
                            +
                            +

                            一起看看Spring如何让它生效呢,在 applicationContext.xml 配置文件中是酱紫的:

                            +
                            <bean id="lol" class="com.biezhi.test.Lol">
                            +    <property name="name" value="剑圣" />   
                            +</bean>
                            +
                            +

                            Lol 类是这样的:

                            +
                            public class Lol {
                            +
                            +    private String name;
                            +
                            +    public Lol() {
                            +    }
                            +
                            +    public void gank(){
                            +        System.out.println(this.name + "在gank!!");
                            +    }
                            +
                            +    public String getName() {
                            +        return name;
                            +    }
                            +
                            +    public void setName(String name) {
                            +        this.name = name;
                            +    }
                            +}
                            +
                            +

                            上面的代码运行结果自然是 剑圣在gank!!

                            +

                            Spring更高级的用法,在3.0版本之后有了基于Annotation的注入实现,为毛每次都要配置 Xml 看到都蛋疼。。

                            +

                            首先还是要在 xml 中配置启用注解方式

                            +
                            <context:annotation-config/>
                            +
                            +

                            这样就能使用注解驱动依赖注入了,下面是一个使用场景

                            +
                            public class Lol {
                            +
                            +    @Autowired
                            +    private DuangService duangService ;
                            +
                            +    public void buyDuang(String name, int money) {
                            +        duangService.buy(name, money);
                            +    }
                            +}
                            +
                            +
                            @Service("duangService")
                            +public class DuangService {
                            +
                            +    public void buy(String name, int money){
                            +        if(money > 0){
                            +            System.out.println(name + "买了" + money + "毛钱的特效,装逼成功!");
                            +        } else{
                            +            System.out.println(name + "没钱还想装逼,真是匪夷所思");
                            +        }
                            +    }
                            +}
                            +
                            +

                            这只是一个简单的例子,剑圣打野的时候想要买5毛钱的三杀特效,嗯。。虽然不符合逻辑

                            +

                            此时 DuangService 已经注入到 Lol 对象中,运行代码的结果(这里是例子,代码不能运行的)就是:

                            +
                            德玛买了5毛钱的特效,装逼成功!
                            +
                            +

                            好了,深入的不说了,我们不是学spring的,只是知道一下ioc在spring中高大上的形象,接下来步入正轨,开始设计一个IOC容器

                            + + + + +
                            + +
                            +
                            +
                            + +

                            results matching ""

                            +
                              + +
                              +
                              + +

                              No results matching ""

                              + +
                              +
                              +
                              + +
                              +
                              + +
                              + + + + + + + + + + + + + + +
                              + + +
                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/ioc/3.myioc.html b/_book/ioc/3.myioc.html new file mode 100644 index 0000000..5aa7aaa --- /dev/null +++ b/_book/ioc/3.myioc.html @@ -0,0 +1,1448 @@ + + + + + + + 设计一个IOC · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                              +
                              + + + + + + + + +
                              + +
                              + +
                              + + + + + + + + +
                              +
                              + +
                              +
                              + +
                              + +

                              设计一个IOC

                              +

                              我们要自己设计一个IOC,那么目标是什么呢? +我们的IOC容器要可以存储对象,还要有注解注入的功能即可。

                              +

                              Java语言允许通过程序化的方式间接对Class进行操作,Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数、属性和方法等。Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能,这就为使用程序化方式操作Class对象开辟了途径。

                              +

                              我们将从一个简单例子开始探访Java反射机制的征程,下面的Hero类拥有一个构造函数、五个方法以及两个属性,如代码清单所示:

                              +
                              /**
                              + * LOL英雄
                              + */
                              +public class Hero {
                              +
                              +    // 英雄名称
                              +    private String name;
                              +    // 装备名称
                              +    private String outfit;
                              +
                              +    public Hero() {
                              +
                              +    }
                              +
                              +    public String getName() {
                              +        return name;
                              +    }
                              +
                              +    public void setName(String name) {
                              +        this.name = name;
                              +    }
                              +
                              +    public String getOutfit() {
                              +        return outfit;
                              +    }
                              +
                              +    public void setOutfit(String outfit) {
                              +        this.outfit = outfit;
                              +    }
                              +
                              +    public void say(){
                              +        System.out.println(name + "购买了" + outfit);
                              +    }
                              +}
                              +
                              +

                              测试代码:

                              +
                              public class Test {
                              +
                              +    public static void main(String[] args) throws Exception {
                              +        //1. 通过类装载器获取Hero类对象  
                              +        ClassLoader loader = Thread.currentThread().getContextClassLoader();   
                              +        Class<?> clazz = loader.loadClass("com.biezhi.ioc.Hero");   
                              +
                              +        //2. 获取类的默认构造器对象并通过它实例化Hero  
                              +        Constructor<?> cons = clazz.getDeclaredConstructor((Class[])null);   
                              +        Hero hero = (Hero)cons.newInstance();  
                              +
                              +        //3. 通过反射方法设置属性  
                              +        Method setBrand = clazz.getMethod("setName", String.class);
                              +        setBrand.invoke(hero, "小鱼人");
                              +        Method setColor = clazz.getMethod("setOutfit", String.class);
                              +        setColor.invoke(hero, "爆裂魔杖");
                              +
                              +        // 4. 运行方法
                              +        hero.say();
                              +    }
                              +}
                              +
                              +

                              输出了: 小鱼人购买了爆裂魔杖

                              +

                              这说明我们完全可以通过编程方式调用Class的各项功能,这和直接通过构造函数和方法调用类功能的效果是一致的,只不过前者是间接调用,后者是直接调用罢了。

                              +

                              在Test中,使用了几个重要的反射类,分别是ClassLoader、Class、Constructor和Method,通过这些反射类就可以间接调用目标Class的各项功能了。在①处,我们获取当前线程的ClassLoader,然后通过指定的全限定类"com.biezhi.ioc.Hero"装载Hero类对应的反射实例。在②处,我们通过Hero的反射类对象获取Hero的构造函数对象cons,通过构造函数对象的newInstrance()方法实例化Hero对象,其效果等同于new Hero()。在③处,我们又通过Hero的反射类对象的getMethod(String methodName,Class paramClass)获取属性的Setter方法对象,第一个参数是目标Class的方法名;第二个参数是方法入参的对象类型。获取方法反射对象后,即可通过invoke(Object obj,Object param)方法调用目标类的方法,该方法的第一个参数是操作的目标类对象实例;第二个参数是目标方法的入参。

                              +

                              第三步是通过反射方法操控目标类的元信息,如果我们将这些信息以一个配置文件的方式提供,就可以使用Java语言的反射功能编写一段通用的代码对类似于Hero的类进行实例化及功能调用操作了。

                              +

                              简单的例子说完了,我们开始设计一个自己的IOC容器,做出这个东东后再来看那些复杂的原理。

                              +

                              首先设计接口,一个IOC容器中最核心的当属容器接口,来一个Container。

                              +

                              那么容器里应该有什么呢,我想它至少要有存储和移除一个对象的能力,其次可以含括更多的获取和注册对象的方法。

                              +
                              /**
                              + * IOC容器
                              + * @author biezhi
                              + *
                              + */
                              +public interface Container {
                              +
                              +    /**
                              +     * 根据Class获取Bean
                              +     * @param clazz
                              +     * @return
                              +     */
                              +    public <T> T getBean(Class<T> clazz);
                              +
                              +    /**
                              +     * 根据名称获取Bean
                              +     * @param name
                              +     * @return
                              +     */
                              +    public <T> T getBeanByName(String name);
                              +
                              +    /**
                              +     * 注册一个Bean到容器中
                              +     * @param object
                              +     */
                              +    public Object registerBean(Object bean);
                              +
                              +    /**
                              +     * 注册一个Class到容器中
                              +     * @param clazz
                              +     */
                              +    public Object registerBean(Class<?> clazz);
                              +
                              +    /**
                              +     * 注册一个带名称的Bean到容器中
                              +     * @param name
                              +     * @param bean
                              +     */
                              +    public Object registerBean(String name, Object bean);
                              +
                              +    /**
                              +     * 删除一个bean
                              +     * @param clazz
                              +     */
                              +    public void remove(Class<?> clazz);
                              +
                              +    /**
                              +     * 根据名称删除一个bean
                              +     * @param name
                              +     */
                              +    public void removeByName(String name);
                              +
                              +    /**
                              +     * @return    返回所有bean对象名称
                              +     */
                              +    public Set<String> getBeanNames();
                              +
                              +    /**
                              +     * 初始化装配
                              +     */
                              +    public void initWired();
                              +}
                              +
                              +

                              那么我写一个简单的实现代码:

                              +
                              /**
                              + * 容器简单实现
                              + * @author biezhi
                              + */
                              +@SuppressWarnings("unchecked")
                              +public class SampleContainer implements Container {
                              +
                              +    /**
                              +     * 保存所有bean对象,格式为 com.xxx.Person : @52x2xa
                              +     */
                              +    private Map<String, Object> beans;
                              +
                              +    /**
                              +     * 存储bean和name的关系
                              +     */
                              +    private Map<String, String> beanKeys;
                              +
                              +    public SampleContainer() {
                              +        this.beans = new ConcurrentHashMap<String, Object>();
                              +        this.beanKeys = new ConcurrentHashMap<String, String>();
                              +    }
                              +
                              +    @Override
                              +    public <T> T getBean(Class<T> clazz) {
                              +        String name = clazz.getName();
                              +        Object object = beans.get(name);
                              +        if(null != object){
                              +            return (T) object;
                              +        }
                              +        return null;
                              +    }
                              +
                              +    @Override
                              +    public <T> T getBeanByName(String name) {
                              +        String className = beankeys.get(name);
                              +        Object obj = beans.get(className);
                              +        if(null != object){
                              +            return (T) object;
                              +        }
                              +        return null;
                              +    }
                              +
                              +    @Override
                              +    public Object registerBean(Object bean) {
                              +        String name = bean.getClass().getName();
                              +        beanKeys.put(name, name);
                              +        beans.put(name, bean);
                              +        return bean;
                              +    }
                              +
                              +    @Override
                              +    public Object registerBean(Class<?> clazz) {
                              +        String name = clazz.getName();
                              +        beanKeys.put(name, name);
                              +        Object bean = ReflectUtil.newInstance(clazz);
                              +        beans.put(name, bean);
                              +        return bean;
                              +    }
                              +
                              +    @Override
                              +    public Object registerBean(String name, Object bean) {
                              +        String className = bean.getClass().getName();
                              +        beanKeys.put(name, className);
                              +        beans.put(className, bean);
                              +        return bean;
                              +    }
                              +
                              +    @Override
                              +    public Set<String> getBeanNames() {
                              +        return beanKeys.keySet();
                              +    }
                              +
                              +    @Override
                              +    public void remove(Class<?> clazz) {
                              +        String className = clazz.getName();
                              +        if(null != className && !className.equals("")){
                              +            beanKeys.remove(className);
                              +            beans.remove(className);
                              +        }
                              +    }
                              +
                              +    @Override
                              +    public void removeByName(String name) {
                              +        String className = beanKeys.get(name);
                              +        if(null != className && !className.equals("")){
                              +            beanKeys.remove(name);
                              +            beans.remove(className);
                              +        }
                              +    }
                              +
                              +    @Override
                              +    public void initWired() {
                              +        Iterator<Entry<String, Object>> it = beans.entrySet().iterator();
                              +        while (it.hasNext()) {
                              +            Map.Entry<String, Object> entry = (Map.Entry<String, Object>) it.next();
                              +            Object object = entry.getValue();
                              +            injection(object);
                              +        }
                              +    }
                              +
                              +    /**
                              +     * 注入对象
                              +     * @param object
                              +     */
                              +    public void injection(Object object) {
                              +        // 所有字段
                              +        try {
                              +            Field[] fields = object.getClass().getDeclaredFields();
                              +            for (Field field : fields) {
                              +                // 需要注入的字段
                              +                AutoWired autoWired = field.getAnnotation(autoWired.class);
                              +                if (null != autoWired) {
                              +
                              +                    // 要注入的字段
                              +                    Object autoWiredField = null;
                              +
                              +                    String name = autoWired.name();
                              +                    if(!name.equals("")){
                              +                        String className = beanKeys.get(name);
                              +                        if(null != className && !className.equals("")){
                              +                            autoWiredField = beans.get(className);
                              +                        }
                              +                        if (null == autoWiredField) {
                              +                            throw new RuntimeException("Unable to load " + name);
                              +                        }
                              +                    } else {
                              +                        if(autoWired.value() == Class.class){
                              +                            autoWiredField = recursiveAssembly(field.getType());
                              +                        } else {
                              +                            // 指定装配的类
                              +                            autoWiredField = this.getBean(autoWired.value());
                              +                            if (null == autoWiredField) {
                              +                                autoWiredField = recursiveAssembly(autoWired.value());
                              +                            }
                              +                        }
                              +                    }
                              +
                              +                    if (null == autoWiredField) {
                              +                        throw new RuntimeException("Unable to load " + field.getType().getCanonicalName());
                              +                    }
                              +
                              +                    boolean accessible = field.isAccessible();
                              +                    field.setAccessible(true);
                              +                    field.set(object, autoWiredField);
                              +                    field.setAccessible(accessible);
                              +                }
                              +            }
                              +        } catch (SecurityException e) {
                              +            e.printStackTrace();
                              +        } catch (IllegalArgumentException e) {
                              +            e.printStackTrace();
                              +        } catch (IllegalAccessException e) {
                              +            e.printStackTrace();
                              +        }
                              +    }
                              +
                              +    private Object recursiveAssembly(Class<?> clazz){
                              +        if(null != clazz){
                              +            return this.registerBean(clazz);
                              +        }
                              +        return null;
                              +    }
                              +
                              +}
                              +
                              +

                              这里将所有Bean的名称存储在 beanKeys 这个map中,将所有的对象存储在 beans 中,用 beanKeys 维护名称和对象的关系。

                              +

                              在装配的时候步骤如下:

                              +
                                +
                              1. 判断是否使用了自定义命名的对象(是:根据name查找bean)
                              2. +
                              3. 判断是否使用了Class类型Bean(是:根据Class查找Bean,如果查找不到则创建一个无参构造函数的Bean)
                              4. +
                              +

                              下面是一个测试:

                              +
                              public class IocTest {
                              +
                              +    private static Container container = new SampleContainer();
                              +
                              +    public static void baseTest(){
                              +        container.registerBean(Lol.class);
                              +        // 初始化注入
                              +        container.initWired();
                              +
                              +        Lol lol = container.getBean(Lol.class);
                              +        lol.work();
                              +    }
                              +
                              +    public static void iocClassTest(){
                              +        container.registerBean(Lol2.class);
                              +        // 初始化注入
                              +        container.initWired();
                              +
                              +        Lol2 lol = container.getBean(Lol2.class);
                              +        lol.work();
                              +    }
                              +
                              +    public static void iocNameTest(){
                              +        container.registerBean("face", new FaceService2());
                              +        container.registerBean(Lol3.class);
                              +        // 初始化注入
                              +        container.initWired();
                              +
                              +        Lol3 lol = container.getBean(Lol3.class);
                              +        lol.work();
                              +    }
                              +
                              +    public static void main(String[] args) {
                              +        baseTest();
                              +        //iocClassTest();
                              +        //iocNameTest();
                              +    }
                              +
                              +}
                              +
                              +

                              输出结果:

                              +
                              剑圣买了5毛钱特效,装逼成功!
                              +
                              +

                              代码出处

                              + + + + +
                              + +
                              +
                              +
                              + +

                              results matching ""

                              +
                                + +
                                +
                                + +

                                No results matching ""

                                + +
                                +
                                +
                                + +
                                +
                                + +
                                + + + + + + + + + + + + + + +
                                + + +
                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/ioc/4.principle.html b/_book/ioc/4.principle.html new file mode 100644 index 0000000..7f8e5c4 --- /dev/null +++ b/_book/ioc/4.principle.html @@ -0,0 +1,1201 @@ + + + + + + + 原理分析 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                +
                                + + + + + + + + +
                                + +
                                + +
                                + + + + + + + + +
                                +
                                + +
                                +
                                + +
                                + +

                                原理分析

                                +

                                类装载器ClassLoader

                                +

                                类装载器工作机制

                                +

                                类装载器就是寻找类的节码文件并构造出类在JVM内部表示对象的组件。在Java中,类装载器把一个类装入JVM中,要经过以下步骤:

                                +

                                [1.]装载:查找和导入Class文件; +[2.]链接:执行校验、准备和解析步骤,其中解析步骤是可以选择的: + [2.1]校验:检查载入Class文件数据的正确性; + [2.2]准备:给类的静态变量分配存储空间; + [2.3]解析:将符号引用转成直接引用; +[3.]初始化:对类的静态变量、静态代码块执行初始化工作。

                                +

                                类装载工作由ClassLoader及其子类负责,ClassLoader是一个重要的Java运行时系统组件,它负责在运行时查找和装入Class字节码文件。JVM在运行时会产生三个ClassLoader:根装载器、ExtClassLoader(扩展类装载器)和AppClassLoader(系统类装载器)。其中,根装载器不是ClassLoader的子类,它使用C++编写,因此我们在Java中看不到它,根装载器负责装载JRE的核心类库,如JRE目标下的rt.jar、charsets.jar等。ExtClassLoader和AppClassLoader都是ClassLoader的子类。其中ExtClassLoader负责装载JRE扩展目录ext中的JAR类包;AppClassLoader负责装载Classpath路径下的类包。

                                +

                                这三个类装载器之间存在父子层级关系,即根装载器是ExtClassLoader的父装载器,ExtClassLoader是AppClassLoader的父装载器。默认情况下,使用AppClassLoader装载应用程序的类,我们可以做一个实验:

                                +
                                public class ClassLoaderTest {
                                +    public static void main(String[] args) {
                                +        ClassLoader loader = Thread.currentThread().getContextClassLoader();
                                +        System.out.println("current loader:"+loader);
                                +        System.out.println("parent loader:"+loader.getParent());
                                +        System.out.println("grandparent loader:"+loader.getParent(). getParent());
                                +    }
                                +}
                                +
                                +

                                运行以上代码,在控制台上将打出以下信息:

                                +
                                current loader:sun.misc.Launcher$AppClassLoader@131f71a 
                                +parent loader:sun.misc.Launcher$ExtClassLoader@15601ea 
                                +//①根装载器在Java中访问不到,所以返回null 
                                +grandparent loader:null
                                +
                                +

                                通过以上的输出信息,我们知道当前的ClassLoader是AppClassLoader,父ClassLoader是ExtClassLoader,祖父ClassLoader是根类装载器,因为在Java中无法获得它的句柄,所以仅返回null。

                                +

                                JVM装载类时使用“全盘负责委托机制”,“全盘负责”是指当一个ClassLoader装载一个类的时,除非显式地使用另一个ClassLoader,该类所依赖及引用的类也由这个ClassLoader载入;“委托机制”是指先委托父装载器寻找目标类,只有在找不到的情况下才从自己的类路径中查找并装载目标类。这一点是从安全角度考虑的,试想如果有人编写了一个恶意的基础类(如java.lang.String)并装载到JVM中将会引起多么可怕的后果。但是由于有了“全盘负责委托机制”,java.lang.String永远是由根装载器来装载的,这样就避免了上述事件的发生。

                                +

                                ClassLoader重要方法

                                +

                                在Java中,ClassLoader是一个抽象类,位于java.lang包中。下面对该类的一些重要接口方法进行介绍:

                                +
                                  +
                                • Class loadClass(String name) + name参数指定类装载器需要装载类的名字,必须使用全限定类名,如com.baobaotao. beans.Car。该方法有一个重载方法loadClass(String name ,boolean resolve),resolve参数告诉类装载器是否需要解析该类。在初始化类之前,应考虑进行类解析的工作,但并不是所有的类都需要解析,如果JVM只需要知道该类是否存在或找出该类的超类,那么就不需要进行解析。
                                • +
                                • Class defineClass(String name, byte[] b, int off, int len) + 将类文件的字节数组转换成JVM内部的java.lang.Class对象。字节数组可以从本地文件系统、远程网络获取。name为字节数组对应的全限定类名。
                                • +
                                • Class findSystemClass(String name) + 从本地文件系统载入Class文件,如果本地文件系统不存在该Class文件,将抛出ClassNotFoundException异常。该方法是JVM默认使用的装载机制。
                                • +
                                • Class findLoadedClass(String name) +调用该方法来查看ClassLoader是否已装入某个类。如果已装入,那么返回java.lang.Class对象,否则返回null。如果强行装载已存在的类,将会抛出链接错误。
                                • +
                                • ClassLoader getParent() + 获取类装载器的父装载器,除根装载器外,所有的类装载器都有且仅有一个父装载器,ExtClassLoader的父装载器是根装载器,因为根装载器非Java编写,所以无法获得,将返回null。
                                • +
                                +

                                除JVM默认的三个ClassLoader以外,可以编写自己的第三方类装载器,以实现一些特殊的需求。类文件被装载并解析后,在JVM内将拥有一个对应的java.lang.Class类描述对象,该类的实例都拥有指向这个类描述对象的引用,而类描述对象又拥有指向关联ClassLoader的引用,如图所示。

                                +

                                +

                                每一个类在JVM中都拥有一个对应的java.lang.Class对象,它提供了类结构信息的描述。数组、枚举、注解以及基本Java类型(如int、double等),甚至void都拥有对应的Class对象。Class没有public的构造方法。Class对象是在装载类时由JVM通过调用类装载器中的defineClass()方法自动构造的。

                                +

                                Java反射机制

                                +

                                Class反射对象描述类语义结构,可以从Class对象中获取构造函数、成员变量、方法类等类元素的反射对象,并以编程的方式通过这些反射对象对目标类对象进行操作。这些反射对象类在java.reflect包中定义,下面是最主要的三个反射类:

                                +
                                  +
                                • Constructor:类的构造函数反射类,通过Class#getConstructors()方法可以获得类的所有构造函数反射对象数组。在JDK5.0中,还可以通过getConstructor(Class... parameterTypes)获取拥有特定入参的构造函数反射对象。Constructor的一个主要方法是newInstance(Object[] initargs),通过该方法可以创建一个对象类的实例,相当于new关键字。在JDK5.0中该方法演化为更为灵活的形式:newInstance (Object... initargs)。
                                • +
                                • Method:类方法的反射类,通过Class#getDeclaredMethods()方法可以获取类的所有方法反射类对象数组Method[]。在JDK5.0中可以通过getDeclaredMethod(String name, Class... parameterTypes)获取特定签名的方法,name为方法名;Class...为方法入参类型列表。Method最主要的方法是invoke(Object obj, Object[] args),obj表示操作的目标对象;args为方法入参,代码清单3 10③处演示了这个反射类的使用方法。在JDK 5.0中,该方法的形式调整为invoke(Object obj, Object... args)。此外,Method还有很多用于获取类方法更多信息的方法:
                                  1)Class getReturnType():获取方法的返回值类型; 
                                  +2)Class[] getParameterTypes():获取方法的入参类型数组; 
                                  +3)Class[] getExceptionTypes():获取方法的异常类型数组; 
                                  +4)Annotation[][] getParameterAnnotations():获取方法的注解信息,JDK 5.0中的新方法;
                                  +
                                • +
                                • Field:类的成员变量的反射类,通过Class#getDeclaredFields()方法可以获取类的成员变量反射对象数组,通过Class#getDeclaredField(String name)则可获取某个特定名称的成员变量反射对象。Field类最主要的方法是set(Object obj, Object value),obj表示操作的目标对象,通过value为目标对象的成员变量设置值。如果成员变量为基础类型,用户可以使用Field类中提供的带类型名的值设置方法,如setBoolean(Object obj, boolean value)、setInt(Object obj, int value)等。
                                • +
                                +

                                此外,Java还为包提供了Package反射类,在JDK 5.0中还为注解提供了AnnotatedElement反射类。总之,Java的反射体系保证了可以通过程序化的方式访问目标类中所有的元素,对于private或protected的成员变量和方法,只要JVM的安全机制允许,也可以通过反射进行调用,请看下面的例子:

                                +
                                /**
                                + * LOL英雄
                                + */
                                +public class PrivateHero {
                                +
                                +    // 英雄名称
                                +    private String name;
                                +    // 装备名称
                                +    private String outfit;
                                +
                                +    public PrivateHero() {
                                +    }
                                +
                                +    public void say(){
                                +        System.out.println(name + "购买了" + outfit);
                                +    }
                                +}
                                +
                                +
                                public class Test2 {
                                +
                                +    public static void main(String[] args) throws Exception {
                                +
                                +        ClassLoader loader = Thread.currentThread().getContextClassLoader();   
                                +        Class<?> clazz = loader.loadClass("com.biezhi.ioc.PrivateHero");   
                                +
                                +        PrivateHero hero = (PrivateHero) clazz.newInstance();
                                +
                                +        Field name = clazz.getDeclaredField("name");
                                +        // 取消Java语言访问检查以访问private变量
                                +        name.setAccessible(true);
                                +        name.set(hero, "德玛西亚之力");
                                +
                                +        Field outfit = clazz.getDeclaredField("outfit");
                                +        outfit.setAccessible(true);
                                +        outfit.set(hero, "神盾");
                                +
                                +        // 运行方法
                                +        hero.say();
                                +    }
                                +}
                                +
                                +

                                运行该类,打印出以下信息:

                                +
                                德玛西亚之力购买了神盾
                                +
                                +

                                在访问private、protected成员变量和方法时必须通过setAccessible(boolean access)方法取消Java语言检查,否则将抛出IllegalAccessException。 +如果JVM的安全管理器设置了相应的安全机制,调用该方法将抛出SecurityException。

                                + + + + +
                                + +
                                +
                                +
                                + +

                                results matching ""

                                +
                                  + +
                                  +
                                  + +

                                  No results matching ""

                                  + +
                                  +
                                  +
                                  + +
                                  +
                                  + +
                                  + + + + + + + + + + + + + + +
                                  + + +
                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/_book/ioc/IOC\345\256\271\345\231\250\345\256\236\347\216\260\347\257\207" "b/_book/ioc/IOC\345\256\271\345\231\250\345\256\236\347\216\260\347\257\207" new file mode 100644 index 0000000..e85d8a0 --- /dev/null +++ "b/_book/ioc/IOC\345\256\271\345\231\250\345\256\236\347\216\260\347\257\207" @@ -0,0 +1,2 @@ +# IOC容器实现篇 + diff --git "a/_book/ioc/IOC\345\256\271\345\231\250\345\256\236\347\216\260\347\257\207.html" "b/_book/ioc/IOC\345\256\271\345\231\250\345\256\236\347\216\260\347\257\207.html" new file mode 100644 index 0000000..684bac2 --- /dev/null +++ "b/_book/ioc/IOC\345\256\271\345\231\250\345\256\236\347\216\260\347\257\207.html" @@ -0,0 +1,1093 @@ + + + + + + + IOC容器实现篇 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                  +
                                  + + + + + + + + +
                                  + +
                                  + +
                                  + + + + + + + + +
                                  +
                                  + +
                                  +
                                  + +
                                  + +

                                  IOC容器实现篇

                                  + + +
                                  + +
                                  +
                                  +
                                  + +

                                  results matching ""

                                  +
                                    + +
                                    +
                                    + +

                                    No results matching ""

                                    + +
                                    +
                                    +
                                    + +
                                    +
                                    + +
                                    + + + + + + + + + + + + + + +
                                    + + +
                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/ioc/index.md b/_book/ioc/index.md new file mode 100644 index 0000000..a164f9a --- /dev/null +++ b/_book/ioc/index.md @@ -0,0 +1,15 @@ +# 理解并实现一个IOC容器 + +![](http://i.imgur.com/HLyJOSv.png) + +IOC是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱好、qq号、电话号、微信号...(balabala),想办法认识她们,投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的,我们必须自己设计和面对每个环节。传统的程序开发也是如此,在一个对象中,如果要使用另外的对象,就必须得到它(自己new一个,或者从 `JNDI` 中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来。 +下面的章节带你理解并实现一个IOC容器。 + +IOC源码:[https://github.com/junicorn/easy-ioc](https://github.com/junicorn/easy-ioc) + +## 目录 + +* [IOC的概念](1.concept.md) +* [Spring中怎么用](2.spring.md) +* [设计一个IOC](3.myioc.md) +* [原理分析](4.principle.md) diff --git a/_book/java8/foreach.html b/_book/java8/foreach.html new file mode 100644 index 0000000..3777ef7 --- /dev/null +++ b/_book/java8/foreach.html @@ -0,0 +1,1175 @@ + + + + + + + Java8 Foreach · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                    +
                                    + + + + + + + + +
                                    + +
                                    + +
                                    + + + + + + + + +
                                    +
                                    + +
                                    +
                                    + +
                                    + +

                                    java8 foreach

                                    +

                                    在这篇文章中我将向你演示如何使用Java8中的foreach操作ListMap

                                    +

                                    1. Foreach操作Map

                                    +

                                    1.1 正常方式遍历Map

                                    +
                                    Map<String, Integer> items = new HashMap<>();
                                    +items.put("A", 10);
                                    +items.put("B", 20);
                                    +items.put("C", 30);
                                    +items.put("D", 40);
                                    +items.put("E", 50);
                                    +items.put("F", 60);
                                    +
                                    +for (Map.Entry<String, Integer> entry : items.entrySet()) {
                                    +    System.out.println("Item : " + entry.getKey() + " Count : " + entry.getValue());
                                    +}
                                    +
                                    + +

                                    1.2 使用Java8的foreach+lambda表达式遍历Map

                                    +
                                    Map<String, Integer> items = new HashMap<>();
                                    +items.put("A", 10);
                                    +items.put("B", 20);
                                    +items.put("C", 30);
                                    +items.put("D", 40);
                                    +items.put("E", 50);
                                    +items.put("F", 60);
                                    +
                                    +items.forEach((k,v)->System.out.println("Item : " + k + " Count : " + v));
                                    +
                                    +items.forEach((k,v)->{
                                    +    System.out.println("Item : " + k + " Count : " + v);
                                    +    if("E".equals(k)){
                                    +        System.out.println("Hello E");
                                    +    }
                                    +});
                                    +
                                    +

                                    2. Foreach操作List

                                    +

                                    2.1 普通方式循环List

                                    +
                                    List<String> items = new ArrayList<>();
                                    +items.add("A");
                                    +items.add("B");
                                    +items.add("C");
                                    +items.add("D");
                                    +items.add("E");
                                    +
                                    +for(String item : items){
                                    +    System.out.println(item);
                                    +}
                                    +
                                    +

                                    2.2 在Java8中使用foreach+lambda表达式遍历List

                                    +
                                    List<String> items = new ArrayList<>();
                                    +items.add("A");
                                    +items.add("B");
                                    +items.add("C");
                                    +items.add("D");
                                    +items.add("E");
                                    +
                                    +//lambda
                                    +//Output : A,B,C,D,E
                                    +items.forEach(item->System.out.println(item));
                                    +
                                    +//Output : C
                                    +items.forEach(item->{
                                    +    if("C".equals(item)){
                                    +        System.out.println(item);
                                    +    }
                                    +});
                                    +
                                    +//method reference
                                    +//Output : A,B,C,D,E
                                    +items.forEach(System.out::println);
                                    +
                                    +//Steam and filter
                                    +//Output : B
                                    +items.stream()
                                    +    .filter(s->s.contains("B"))
                                    +    .forEach(System.out::println);
                                    +
                                    +

                                    参考资料:

                                    +
                                      +
                                    1. Java 8 Iterable forEach JavaDoc
                                    2. +
                                    3. Java 8 forEach JavaDoc
                                    4. +
                                    +

                                    欢迎star开源web框架Blade:http://github.com/biezhi/blade

                                    + + +
                                    + +
                                    +
                                    +
                                    + +

                                    results matching ""

                                    +
                                      + +
                                      +
                                      + +

                                      No results matching ""

                                      + +
                                      +
                                      +
                                      + +
                                      +
                                      + +
                                      + + + + + + + + + + + + + + +
                                      + + +
                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/java8/java8-guide.html b/_book/java8/java8-guide.html new file mode 100644 index 0000000..72b4bc7 --- /dev/null +++ b/_book/java8/java8-guide.html @@ -0,0 +1,1597 @@ + + + + + + + Java8简明教程 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                      +
                                      + + + + + + + + +
                                      + +
                                      + +
                                      + + + + + + + + +
                                      +
                                      + +
                                      +
                                      + +
                                      + +

                                      Java8简明指南

                                      +
                                      +

                                      欢迎来到Java8简明指南。本教程将一步一步指导你通过所有新语言特性。由短而简单的代码示例,带你了解如何使用默认接口方法,lambda表达式,方法引用和可重复注解。本文的最后你会熟悉最新的API的变化如Stream,Fcuntional,Map API扩展和新的日期API。

                                      +
                                      + +

                                      接口的默认方法

                                      +

                                      在Java8中,利用default关键字使我们能够添加非抽象方法实现的接口。此功能也被称为扩展方法,这里是我们的第一个例子:

                                      +
                                      interface Formula {
                                      +    double calculate(int a);
                                      +
                                      +    default double sqrt(int a) {
                                      +        return Math.sqrt(a);
                                      +    }
                                      +}
                                      +
                                      +

                                      除了接口抽象方法calculate,还定义了默认方法sqrt的返回值。具体类实现抽象方法calculate。默认的方法sqrt可以开箱即用。

                                      +
                                      Formula formula = new Formula() {
                                      +    @Override
                                      +    public double calculate(int a) {
                                      +        return sqrt(a * 100);
                                      +    }
                                      +};
                                      +
                                      +formula.calculate(100);     // 100.0
                                      +formula.sqrt(16);           // 4.0
                                      +
                                      +

                                      该公式被实现为匿名对象。这段代码是相当长的:非常详细的一个计算:6行代码完成这样一个简单的计算。正如我们将在下一节中看到的,Java8有一个更好的方法来实现单方法对象。

                                      +

                                      Lambda表达式

                                      +

                                      让我们以一个简单的例子来开始,在以前的版本中对字符串进行排序:

                                      +
                                      List<String> names = Arrays.asList("peter", "anna", "mike", "xenia");
                                      +
                                      +Collections.sort(names, new Comparator<String>() {
                                      +    @Override
                                      +    public int compare(String a, String b) {
                                      +        return b.compareTo(a);
                                      +    }
                                      +});
                                      +
                                      +

                                      静态的集合类方法Collections.sort,为比较器的给定列表中的元素排序。你会发现自己经常创建匿名比较器并将它们传递给方法。 +Java8支持更短的语法而不总是创建匿名对象, +Lambda表达式:

                                      +
                                      Collections.sort(names, (String a, String b) -> {
                                      +    return b.compareTo(a);
                                      +});
                                      +
                                      +

                                      正如你可以看到的代码更容易阅读。但它甚至更短:

                                      +
                                      Collections.sort(names, (String a, String b) -> b.compareTo(a));
                                      +
                                      +

                                      一行方法的方法体可以跳过{}和参数类型,使它变得更短:

                                      +
                                      Collections.sort(names, (a, b) -> b.compareTo(a));
                                      +
                                      +

                                      Java编译器知道参数类型,所以你可以跳过它们,接下来让我们深入了解lambda表达式。

                                      +

                                      函数式接口(Functional Interfaces)

                                      +

                                      如何适应Java lambda表达式类型系统?每个lambda由一个指定的接口对应于一个给定的类型。所谓的函数式接口必须包含一个确切的一个抽象方法声明。该类型将匹配这个抽象方法每个lambda表达式。因为默认的方法是不抽象的,你可以自由添加默认的方法到你的函数式接口。

                                      +

                                      我们可以使用任意的接口为lambda表达式,只要接口只包含一个抽象方法。确保你的接口满足要求,你应该添加@FunctionalInterface注解。当你尝试在接口上添加第二个抽象方法声明时,编译器会注意到这个注释并抛出一个编译器错误。

                                      +

                                      举例:

                                      +
                                      @FunctionalInterface
                                      +interface Converter<F, T> {
                                      +    T convert(F from);
                                      +}
                                      +
                                      +
                                      Converter<String, Integer> converter = (from) -> Integer.valueOf(from);
                                      +Integer converted = converter.convert("123");
                                      +System.out.println(converted);    // 123
                                      +
                                      +

                                      记住,有@FunctionalInterface注解的也是有效的代码。

                                      +

                                      方法和构造函数引用

                                      +

                                      上面的例子代码可以进一步简化,利用静态方法引用:

                                      +
                                      Converter<String, Integer> converter = Integer::valueOf;
                                      +Integer converted = converter.convert("123");
                                      +System.out.println(converted);   // 123
                                      +
                                      +

                                      Java使您可以通过::关键字调用引用的方法或构造函数。上面的示例演示了如何引用静态方法。但我们也可以参考对象方法:

                                      +
                                      class Something {
                                      +    String startsWith(String s) {
                                      +        return String.valueOf(s.charAt(0));
                                      +    }
                                      +}
                                      +
                                      +
                                      Something something = new Something();
                                      +Converter<String, String> converter = something::startsWith;
                                      +String converted = converter.convert("Java");
                                      +System.out.println(converted);    // "J"
                                      +
                                      +

                                      让我们来看看如何使用::关键字调用构造函数。首先,我们定义一个Person类并且提供不同的构造函数:

                                      +
                                      class Person {
                                      +    String firstName;
                                      +    String lastName;
                                      +
                                      +    Person() {}
                                      +
                                      +    Person(String firstName, String lastName) {
                                      +        this.firstName = firstName;
                                      +        this.lastName = lastName;
                                      +    }
                                      +}
                                      +
                                      +

                                      接下来,我们指定一个Person的工厂接口,用于创建Person

                                      +
                                      interface PersonFactory<P extends Person> {
                                      +    P create(String firstName, String lastName);
                                      +}
                                      +
                                      +

                                      然后我们通过构造函数引用来把所有东西拼到一起,而不是手动实现工厂:

                                      +
                                      PersonFactory<Person> personFactory = Person::new;
                                      +Person person = personFactory.create("Peter", "Parker");
                                      +
                                      +

                                      我们通过Person::new创建一个人的引用,Java编译器会自动选择正确的构造函数匹配PersonFactory.create的返回。

                                      +

                                      Lambda作用域

                                      +

                                      从lambda表达式访问外部变量的作用域是匿名对象非常相似。您可以从本地外部范围以及实例字段和静态变量中访问final变量。

                                      +

                                      访问局部变量

                                      +

                                      我们可以从lambda表达式的外部范围读取final变量:

                                      +
                                      final int num = 1;
                                      +Converter<Integer, String> stringConverter = (from) -> String.valueOf(from + num);
                                      +stringConverter.convert(2);     // 3
                                      +
                                      +

                                      但不同的匿名对象变量num没有被声明为final,下面的代码也有效:

                                      +
                                      int num = 1;
                                      +Converter<Integer, String> stringConverter = (from) -> String.valueOf(from + num);
                                      +stringConverter.convert(2);     // 3
                                      +
                                      +

                                      然而num必须是隐含的final常量。以下代码不编译:

                                      +
                                      int num = 1;
                                      +Converter<Integer, String> stringConverter = (from) -> String.valueOf(from + num);
                                      +num = 3;
                                      +
                                      +

                                      在lambda表达式里修改num也是不允许的。

                                      +

                                      访问字段和静态变量

                                      +

                                      与局部变量不同,我们在lambda表达式的内部能获取到对成员变量或静态变量的读写权。这种访问行为在匿名对象里是非常典型的。

                                      +
                                      class Lambda4 {
                                      +    static int outerStaticNum;
                                      +    int outerNum;
                                      +
                                      +    void testScopes() {
                                      +        Converter<Integer, String> stringConverter1 = (from) -> {
                                      +            outerNum = 23;
                                      +            return String.valueOf(from);
                                      +        };
                                      +
                                      +        Converter<Integer, String> stringConverter2 = (from) -> {
                                      +            outerStaticNum = 72;
                                      +            return String.valueOf(from);
                                      +        };
                                      +    }
                                      +}
                                      +
                                      +

                                      访问默认接口方法

                                      +

                                      记得第一节的formula例子吗?接口Formula定义了一个默认的方法可以从每个公式实例访问包括匿名对象, +这并没有Lambda表达式的工作。 +默认方法不能在lambda表达式访问。以下代码不编译:

                                      +
                                      Formula formula = (a) -> sqrt( a * 100);
                                      +
                                      +

                                      内置函数式接口(Built-in Functional Interfaces)

                                      +

                                      JDK1.8的API包含许多内置的函数式接口。其中有些是众所周知的,从旧版本中而来,如Comparator或者Runnable。使现有的接口通过@FunctionalInterface注解支持Lambda。

                                      +

                                      但是Java8 API也添加了新功能接口,使你的开发更简单。其中一些接口是众所周知的Google Guava库。即使你熟悉这个库也应该密切关注这些接口是如何延长一些有用的扩展方法。

                                      +

                                      Predicates(谓词)

                                      +

                                      Predicates是一个返回布尔类型的函数。这就是谓词函数,输入一个对象,返回true或者false。 +在Google Guava中,定义了Predicate接口,该接口包含一个带有泛型参数的方法:

                                      +
                                      apply(T input): boolean
                                      +
                                      +
                                      Predicate<String> predicate = (s) -> s.length() > 0;
                                      +
                                      +predicate.test("foo");              // true
                                      +predicate.negate().test("foo");     // false
                                      +
                                      +Predicate<Boolean> nonNull = Objects::nonNull;
                                      +Predicate<Boolean> isNull = Objects::isNull;
                                      +
                                      +Predicate<String> isEmpty = String::isEmpty;
                                      +Predicate<String> isNotEmpty = isEmpty.negate();
                                      +
                                      +

                                      Functions(函数)

                                      +

                                      Functions接受一个参数,并产生一个结果。默认方法可以将多个函数串在一起(compse, andThen)

                                      +
                                      Function<String, Integer> toInteger = Integer::valueOf;
                                      +Function<String, String> backToString = toInteger.andThen(String::valueOf);
                                      +
                                      +backToString.apply("123");     // "123"
                                      +
                                      +

                                      Suppliers(生产者)

                                      +

                                      Suppliers产生一个给定的泛型类型的结果。与Functional不同的是Suppliers不接受输入参数。

                                      +
                                      Supplier<Person> personSupplier = Person::new;
                                      +personSupplier.get();   // new Person
                                      +
                                      +

                                      Consumers(消费者)

                                      +

                                      Consumers代表在一个单一的输入参数上执行操作。

                                      +
                                      Consumer<Person> greeter = (p) -> System.out.println("Hello, " + p.firstName);
                                      +greeter.accept(new Person("Luke", "Skywalker"));
                                      +
                                      +

                                      Comparators(比较器)

                                      +

                                      Comparators在旧版本Java中是众所周知的。Java8增加了各种默认方法的接口。

                                      +
                                      Comparator<Person> comparator = (p1, p2) -> p1.firstName.compareTo(p2.firstName);
                                      +
                                      +Person p1 = new Person("John", "Doe");
                                      +Person p2 = new Person("Alice", "Wonderland");
                                      +
                                      +comparator.compare(p1, p2);             // > 0
                                      +comparator.reversed().compare(p1, p2);  // < 0
                                      +
                                      +

                                      Optionals(可选项)

                                      +

                                      Optionals是没有函数的接口,取而代之的是防止NullPointerException异常。这是下一节的一个重要概念,所以让我们看看如何结合Optionals工作。

                                      +

                                      Optional is a simple container for a value which may be null or non-null. Think of a method which may return a non-null result but sometimes return nothing. Instead of returning null you return an Optional in Java 8.

                                      +

                                      Optional是一个简单的容器,这个值可能是空的或者非空的。考虑到一个方法可能会返回一个non-null的值,也可能返回一个空值。为了不直接返回null,我们在Java 8中就返回一个Optional。

                                      +
                                      Optional<String> optional = Optional.of("bam");
                                      +
                                      +optional.isPresent();           // true
                                      +optional.get();                 // "bam"
                                      +optional.orElse("fallback");    // "bam"
                                      +
                                      +optional.ifPresent((s) -> System.out.println(s.charAt(0)));     // "b"
                                      +
                                      +

                                      Streams(管道)

                                      +

                                      一个java.util.Stream代表一个序列的元素在其中的一个或多个可以执行的操作。流操作是中间或终端。当终端操作返回某一类型的结果时,中间操作返回流,这样就可以将多个方法调用在一行中。流是一个源产生的,例如java.util.Collection像列表或设置(不支持map)。流操作可以被执行的顺序或并行。

                                      +

                                      让我们先看一下数据流如何工作。首先,我们创建一个字符串列表的数据:

                                      +
                                      List<String> stringCollection = new ArrayList<>();
                                      +stringCollection.add("ddd2");
                                      +stringCollection.add("aaa2");
                                      +stringCollection.add("bbb1");
                                      +stringCollection.add("aaa1");
                                      +stringCollection.add("bbb3");
                                      +stringCollection.add("ccc");
                                      +stringCollection.add("bbb2");
                                      +stringCollection.add("ddd1");
                                      +
                                      +

                                      在Java8中Collections类的功能已经有所增强,你可用调用Collection.stream()Collection.parallelStream()。 +下面的章节解释最常见的流操作。

                                      +

                                      Filter

                                      +

                                      Filter接受一个predicate来过滤流的所有元素。这个中间操作能够调用另一个流的操作(Foreach)的结果。ForEach接受一个消费者为每个元素执行过滤流。它是void,所以我们不能称之为另一个流操作。

                                      +
                                      stringCollection
                                      +    .stream()
                                      +    .filter((s) -> s.startsWith("a"))
                                      +    .forEach(System.out::println);
                                      +
                                      +// "aaa2", "aaa1"
                                      +
                                      +

                                      Sorted

                                      +

                                      Sorted是一个中间操作,能够返回一个排过序的流对象的视图。这些元素按自然顺序排序,除非你经过一个自定义比较器(实现Comparator接口)。

                                      +
                                      stringCollection
                                      +    .stream()
                                      +    .sorted()
                                      +    .filter((s) -> s.startsWith("a"))
                                      +    .forEach(System.out::println);
                                      +
                                      +// "aaa1", "aaa2"
                                      +
                                      +

                                      要记住,排序只会创建一个流的排序视图,而不处理支持集合的排序。原来string集合中的元素顺序是没有改变的。

                                      +
                                      System.out.println(stringCollection);
                                      +// ddd2, aaa2, bbb1, aaa1, bbb3, ccc, bbb2, ddd1
                                      +
                                      +

                                      Map

                                      +

                                      map是一个对于流对象的中间操作,通过给定的方法,它能够把流对象中的每一个元素对应到另外一个对象上。下面的例子将每个字符串转换成一个大写字符串,但也可以使用map将每个对象转换为另一种类型。所得到的流的泛型类型取决于您传递给map方法的泛型类型。

                                      +
                                      stringCollection
                                      +    .stream()
                                      +    .map(String::toUpperCase)
                                      +    .sorted((a, b) -> b.compareTo(a))
                                      +    .forEach(System.out::println);
                                      +
                                      +// "DDD2", "DDD1", "CCC", "BBB3", "BBB2", "AAA2", "AAA1"
                                      +
                                      +

                                      Match

                                      +

                                      可以使用各种匹配操作来检查某个谓词是否匹配流。所有这些操作都是终止操作,返回一个布尔结果。

                                      +
                                      boolean anyStartsWithA =
                                      +    stringCollection
                                      +        .stream()
                                      +        .anyMatch((s) -> s.startsWith("a"));
                                      +
                                      +System.out.println(anyStartsWithA);      // true
                                      +
                                      +boolean allStartsWithA =
                                      +    stringCollection
                                      +        .stream()
                                      +        .allMatch((s) -> s.startsWith("a"));
                                      +
                                      +System.out.println(allStartsWithA);      // false
                                      +
                                      +boolean noneStartsWithZ =
                                      +    stringCollection
                                      +        .stream()
                                      +        .noneMatch((s) -> s.startsWith("z"));
                                      +
                                      +System.out.println(noneStartsWithZ);      // true
                                      +
                                      +

                                      Count

                                      +

                                      Count是一个终止操作返回流中的元素的数目,返回long类型。

                                      +
                                      long startsWithB =
                                      +    stringCollection
                                      +        .stream()
                                      +        .filter((s) -> s.startsWith("b"))
                                      +        .count();
                                      +
                                      +System.out.println(startsWithB);    // 3
                                      +
                                      +

                                      Reduce

                                      +

                                      该终止操作能够通过某一个方法,对元素进行削减操作。该操作的结果会放在一个Optional变量里返回。

                                      +
                                      Optional<String> reduced =
                                      +    stringCollection
                                      +        .stream()
                                      +        .sorted()
                                      +        .reduce((s1, s2) -> s1 + "#" + s2);
                                      +
                                      +reduced.ifPresent(System.out::println);
                                      +// "aaa1#aaa2#bbb1#bbb2#bbb3#ccc#ddd1#ddd2"
                                      +
                                      +

                                      Parallel Streams

                                      +

                                      如上所述的数据流可以是连续的或平行的。在一个单独的线程上进行操作,同时在多个线程上执行并行操作。

                                      +

                                      下面的例子演示了如何使用并行流很容易的提高性能。

                                      +

                                      首先,我们创建一个大的元素列表:

                                      +
                                      int max = 1000000;
                                      +List<String> values = new ArrayList<>(max);
                                      +for (int i = 0; i < max; i++) {
                                      +    UUID uuid = UUID.randomUUID();
                                      +    values.add(uuid.toString());
                                      +}
                                      +
                                      +

                                      现在我们测量一下流对这个集合进行排序消耗的时间。

                                      +

                                      Sequential Sort

                                      +
                                      long t0 = System.nanoTime();
                                      +
                                      +long count = values.stream().sorted().count();
                                      +System.out.println(count);
                                      +
                                      +long t1 = System.nanoTime();
                                      +
                                      +long millis = TimeUnit.NANOSECONDS.toMillis(t1 - t0);
                                      +System.out.println(String.format("sequential sort took: %d ms", millis));
                                      +
                                      +// sequential sort took: 899 ms
                                      +
                                      +

                                      Parallel Sort

                                      +
                                      long t0 = System.nanoTime();
                                      +
                                      +long count = values.parallelStream().sorted().count();
                                      +System.out.println(count);
                                      +
                                      +long t1 = System.nanoTime();
                                      +
                                      +long millis = TimeUnit.NANOSECONDS.toMillis(t1 - t0);
                                      +System.out.println(String.format("parallel sort took: %d ms", millis));
                                      +
                                      +// parallel sort took: 472 ms
                                      +
                                      +

                                      你可以看到这两段代码片段几乎是相同的,但并行排序大致是50%的差距。唯一的不同就是把stream()改成了parallelStream()

                                      +

                                      Map

                                      +

                                      正如前面所说的Map不支持流操作,现在的Map支持各种新的实用的方法和常见的任务。

                                      +
                                      Map<Integer, String> map = new HashMap<>();
                                      +
                                      +for (int i = 0; i < 10; i++) {
                                      +    map.putIfAbsent(i, "val" + i);
                                      +}
                                      +
                                      +map.forEach((id, val) -> System.out.println(val));
                                      +
                                      +

                                      上面的代码应该是不解自明的:putIfAbsent避免我们将null写入;forEach接受一个消费者对象,从而将操作实施到每一个map中的值上。

                                      +

                                      这个例子演示了如何利用函数判断或获取Map中的数据:

                                      +
                                      map.computeIfPresent(3, (num, val) -> val + num);
                                      +map.get(3);             // val33
                                      +
                                      +map.computeIfPresent(9, (num, val) -> null);
                                      +map.containsKey(9);     // false
                                      +
                                      +map.computeIfAbsent(23, num -> "val" + num);
                                      +map.containsKey(23);    // true
                                      +
                                      +map.computeIfAbsent(3, num -> "bam");
                                      +map.get(3);             // val33
                                      +
                                      +

                                      接下来,我们将学习如何删除一一个给定的键的条目,只有当它当前映射到给定值:

                                      +
                                      map.remove(3, "val3");
                                      +map.get(3);             // val33
                                      +
                                      +map.remove(3, "val33");
                                      +map.get(3);             // null
                                      +
                                      +

                                      另一种实用的方法:

                                      +
                                      map.getOrDefault(42, "not found");  // not found
                                      +
                                      +

                                      Map合并条目是非常容易的:

                                      +
                                      map.merge(9, "val9", (value, newValue) -> value.concat(newValue));
                                      +map.get(9);             // val9
                                      +
                                      +map.merge(9, "concat", (value, newValue) -> value.concat(newValue));
                                      +map.get(9);             // val9concat
                                      +
                                      +

                                      合并操作先看map中是否没有特定的key/value存在,如果是,则把key/value存入map,否则merging函数就会被调用,对现有的数值进行修改。

                                      +

                                      Date API

                                      +

                                      Java8 包含一个新的日期和时间API,在java.time包下。新的日期API与Joda Time库可以媲美,但它们是不一样的。下面的例子涵盖了这个新的API最重要的部分。

                                      +

                                      Clock

                                      +

                                      Clock提供访问当前日期和时间。Clock是对当前时区敏感的,可以用来代替System.currentTimeMillis()来获取当前的毫秒值。当前时间线上的时刻可以用Instance类来表示。Instance可以用来创建java.util.Date格式的对象。

                                      +
                                      Clock clock = Clock.systemDefaultZone();
                                      +long millis = clock.millis();
                                      +
                                      +Instant instant = clock.instant();
                                      +Date legacyDate = Date.from(instant);   // legacy java.util.Date
                                      +
                                      +

                                      Timezones

                                      +

                                      时区是由ZoneId表示,通过静态工厂方法可以很容易地访问。时区还定义了一个偏移量,用来转换当前时刻与目标时刻。

                                      +
                                      System.out.println(ZoneId.getAvailableZoneIds());
                                      +// prints all available timezone ids
                                      +
                                      +ZoneId zone1 = ZoneId.of("Europe/Berlin");
                                      +ZoneId zone2 = ZoneId.of("Brazil/East");
                                      +System.out.println(zone1.getRules());
                                      +System.out.println(zone2.getRules());
                                      +
                                      +// ZoneRules[currentStandardOffset=+01:00]
                                      +// ZoneRules[currentStandardOffset=-03:00]
                                      +
                                      +

                                      LocalTime

                                      +

                                      LocalTime代表没有时区的时间,例如晚上10点或17:30:15。下面的例子会用上面的例子定义的时区创建两个本地时间对象。然后我们比较两个时间并计算小时和分钟的差异。

                                      +
                                      LocalTime now1 = LocalTime.now(zone1);
                                      +LocalTime now2 = LocalTime.now(zone2);
                                      +
                                      +System.out.println(now1.isBefore(now2));  // false
                                      +
                                      +long hoursBetween = ChronoUnit.HOURS.between(now1, now2);
                                      +long minutesBetween = ChronoUnit.MINUTES.between(now1, now2);
                                      +
                                      +System.out.println(hoursBetween);       // -3
                                      +System.out.println(minutesBetween);     // -239
                                      +
                                      +

                                      LocalDate

                                      +

                                      LocalDate代表一个唯一的日期,如2014-03-11。它是不可变的,完全模拟本地时间工作。此示例演示如何通过添加或减去天数,月数,年来计算新的日期。记住每一个操作都会返回一个新的实例。

                                      +
                                      LocalDate today = LocalDate.now();
                                      +LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS);
                                      +LocalDate yesterday = tomorrow.minusDays(2);
                                      +
                                      +LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4);
                                      +DayOfWeek dayOfWeek = independenceDay.getDayOfWeek();
                                      +System.out.println(dayOfWeek);    // FRIDAY
                                      +
                                      +

                                      将字符串解析为LocalDate:

                                      +
                                      DateTimeFormatter germanFormatter =
                                      +    DateTimeFormatter
                                      +        .ofLocalizedDate(FormatStyle.MEDIUM)
                                      +        .withLocale(Locale.GERMAN);
                                      +
                                      +LocalDate xmas = LocalDate.parse("24.12.2014", germanFormatter);
                                      +System.out.println(xmas);   // 2014-12-24
                                      +
                                      +

                                      LocalDateTime

                                      +

                                      LocalDateTime代表日期时间。它结合了日期和时间见上面的部分为一个实例。LocalDateTime是不可变的,类似于本地时间和LocalDate工作。我们可以从一个日期时间获取某些字段的方法:

                                      +
                                      LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59);
                                      +
                                      +DayOfWeek dayOfWeek = sylvester.getDayOfWeek();
                                      +System.out.println(dayOfWeek);      // WEDNESDAY
                                      +
                                      +Month month = sylvester.getMonth();
                                      +System.out.println(month);          // DECEMBER
                                      +
                                      +long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY);
                                      +System.out.println(minuteOfDay);    // 1439
                                      +
                                      +

                                      随着一个时区可以转换为一个即时的附加信息。Instance可以被转换为日期型转化为指定格式的java.util.Date

                                      +
                                      Instant instant = sylvester
                                      +        .atZone(ZoneId.systemDefault())
                                      +        .toInstant();
                                      +
                                      +Date legacyDate = Date.from(instant);
                                      +System.out.println(legacyDate);     // Wed Dec 31 23:59:59 CET 2014
                                      +
                                      +

                                      格式日期时间对象就像格式化日期对象或者格式化时间对象,除了使用预定义的格式以外,我们还可以创建自定义的格式化对象,然后匹配我们自定义的格式。

                                      +
                                      DateTimeFormatter formatter =
                                      +    DateTimeFormatter
                                      +        .ofPattern("MMM dd, yyyy - HH:mm");
                                      +
                                      +LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter);
                                      +String string = formatter.format(parsed);
                                      +System.out.println(string);     // Nov 03, 2014 - 07:13
                                      +
                                      +

                                      不像java.text.NumberFormat,新的DateTimeFormatter是不可变的,线程安全的。

                                      +

                                      Annotations(注解)

                                      +

                                      在Java8中注解是可以重复的,让我们深入到一个示例中。

                                      +

                                      首先,我们定义了一个包装的注解,它拥有一个返回值为数组类型的方法Hint:

                                      +
                                      @interface Hints {
                                      +    Hint[] value();
                                      +}
                                      +
                                      +@Repeatable(Hints.class)
                                      +@interface Hint {
                                      +    String value();
                                      +}
                                      +
                                      +

                                      Java8使我们能够使用相同类型的多个注解,通过@Repeatable声明注解。

                                      +
                                      变体1:使用注解容器(老方法)
                                      +
                                      @Hints({@Hint("hint1"), @Hint("hint2")})
                                      +class Person {}
                                      +
                                      +
                                      变体2:使用可重复注解(新方法)
                                      +
                                      @Hint("hint1")
                                      +@Hint("hint2")
                                      +class Person {}
                                      +
                                      +

                                      使用变体2隐式编译器隐式地设置了@Hints注解。这对于通过反射来读取注解信息是非常重要的。

                                      +
                                      Hint hint = Person.class.getAnnotation(Hint.class);
                                      +System.out.println(hint);                   // null
                                      +
                                      +Hints hints1 = Person.class.getAnnotation(Hints.class);
                                      +System.out.println(hints1.value().length);  // 2
                                      +
                                      +Hint[] hints2 = Person.class.getAnnotationsByType(Hint.class);
                                      +System.out.println(hints2.length);          // 2
                                      +
                                      +

                                      虽然在Person中从未定义@Hints注解,它仍然可读通过getAnnotation(Hints.class)读取。并且,getAnnotationsByType方法会更方便,因为它赋予了所有@Hints注解标注的方法直接的访问权限。

                                      +
                                      @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE})
                                      +@interface MyAnnotation {}
                                      +
                                      +

                                      欢迎Star我的开源Web框架Blade:http://github.com/biezhi/blade

                                      + + +
                                      + +
                                      +
                                      +
                                      + +

                                      results matching ""

                                      +
                                        + +
                                        +
                                        + +

                                        No results matching ""

                                        + +
                                        +
                                        +
                                        + +
                                        +
                                        + +
                                        + + + + + + + + + + + + + + +
                                        + + +
                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/learn_server/config-nginx-proxy.md b/_book/learn_server/config-nginx-proxy.md new file mode 100644 index 0000000..3888d2f --- /dev/null +++ b/_book/learn_server/config-nginx-proxy.md @@ -0,0 +1,61 @@ +# 配置tomcat+nginx反向代理 + +一般我们服务器对外只暴力22, 443, 80端口,其他的尽量都在内网访问,那么tomcat的8080端口是不应该对外访问的, +nginx作为一个性能卓越的web服务器提供了反向代理的功能,可以做到转发。 + +假设我们现在有一个域名绑定在服务器的80端口上,使用tomcat搭建的程序,但是我又不想修改tomcat端口,该怎么办呢? + +nginx默认监听了80端口,配置文件在 `/usr/local/nginx/conf`文件夹下的 `nginx.conf`。 + +## 取消默认站点 + +```bash +[root@localhost]# cd /usr/local/nginx/conf +[root@localhost conf]# vim nginx.conf +``` + +将 `server` 块注释即可。然后我们在 `conf` 文件夹下创建一个 `vhost` 目录存储虚拟主机配置文件。 + +```bash +[root@localhost conf]# mkdir vhost +``` + +创建一个tomcat的虚拟主机配置文件。 + +```bash +[root@localhost conf]# vim vhost/tomcat8.conf +``` + +加入以下配置 + +```bash +server { + listen 80; + server_name localhost; + + location / { + proxy_pass http://127.0.0.1:8080; + } +} +``` + +在 `nginx.conf` 中将 `vhost` 文件夹下的配置文件引入,只需在 `http` 块中加入一行 `include vhost/*.conf` 保存即可。 + +重启nginx + +```bash +[root@localhost conf]# service nginx restart +Stopping Nginx: [ OK ] +Starting Nginx: [ OK ] +``` + +查看tomcat是否已经启动,如果关闭将它开启,然后访问 [http://192.168.100.128/](http://192.168.100.128/) + +![](https://ooo.0o0.ooo/2016/09/09/57d260a9a1004.png) + +这样tomcat的8080端口就被nginx转发了,我们此时用域名直接绑定到80端口即可! + +## links + * [目录]() + * 上一节: [配置tomcat为服务]() + * 下一节: [使用jemeter测试tomcat性能]() \ No newline at end of file diff --git a/_book/learn_server/config-tomcat-service.md b/_book/learn_server/config-tomcat-service.md new file mode 100644 index 0000000..1dc68ed --- /dev/null +++ b/_book/learn_server/config-tomcat-service.md @@ -0,0 +1,227 @@ +# 配置tomcat为服务 + +```bash +[root@localhost ~]# vim /etc/init.d/tomcat8 +``` + +_tomcat服务脚本_ + +```bash +#!/bin/bash +# +# description: Apache Tomcat init script +# processname: tomcat +# chkconfig: 234 20 80 +# +# +# Copyright (C) 2014 Miglen Evlogiev +# +# This program is free software: you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program. If not, see . +# +# Initially forked from: gist.github.com/valotas/1000094 +# Source: gist.github.com/miglen/5590986 + + +#Location of JAVA_HOME (bin files) +export JAVA_HOME=/usr/local/java/jdk1.8.0_102 +export JRE_HOME=/usr/local/java/jdk1.8.0_102/jre + +#Add Java binary files to PATH +export PATH=$JAVA_HOME/bin:$PATH + +#CATALINA_HOME is the location of the bin files of Tomcat +export CATALINA_HOME=/usr/local/tomcat8 + +#CATALINA_BASE is the location of the configuration files of this instance of Tomcat +export CATALINA_BASE=/usr/local/tomcat8 + + +#TOMCAT_USAGE is the message if this script is called without any options +TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;31mkill\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}" + +#SHUTDOWN_WAIT is wait time in seconds for java proccess to stop +SHUTDOWN_WAIT=20 + +tomcat_pid() { + echo `ps -fe | grep $CATALINA_BASE | grep -v grep | tr -s " "|cut -d" " -f2` +} + +start() { + pid=$(tomcat_pid) + if [ -n "$pid" ] + then + echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m" + else + # Start tomcat + echo -e "\e[00;32mStarting tomcat\e[00m" + #ulimit -n 100000 + #umask 007 + #/bin/su -p -s /bin/sh $TOMCAT_USER + if [ `user_exists $TOMCAT_USER` = "1" ] + then + /bin/su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh + else + echo -e "\e[00;31mTomcat user $TOMCAT_USER does not exists. Starting with $(id)\e[00m" + sh $CATALINA_HOME/bin/startup.sh + fi + status + fi + return 0 +} + +status(){ + pid=$(tomcat_pid) + if [ -n "$pid" ] + then echo -e "\e[00;32mTomcat is running with pid: $pid\e[00m" + else + echo -e "\e[00;31mTomcat is not running\e[00m" + return 3 + fi +} + +terminate() { + echo -e "\e[00;31mTerminating Tomcat\e[00m" + kill -9 $(tomcat_pid) +} + +stop() { + pid=$(tomcat_pid) + if [ -n "$pid" ] + then + echo -e "\e[00;31mStoping Tomcat\e[00m" + #/bin/su -p -s /bin/sh $TOMCAT_USER + sh $CATALINA_HOME/bin/shutdown.sh + + let kwait=$SHUTDOWN_WAIT + count=0; + until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ] + do + echo -n -e "\n\e[00;31mwaiting for processes to exit\e[00m"; + sleep 1 + let count=$count+1; + done + + if [ $count -gt $kwait ]; then + echo -n -e "\n\e[00;31mkilling processes didn't stop after $SHUTDOWN_WAIT seconds\e[00m" + terminate + fi + else + echo -e "\e[00;31mTomcat is not running\e[00m" + fi + + return 0 +} + +user_exists(){ + if id -u $1 >/dev/null 2>&1; then + echo "1" + else + echo "0" + fi +} + +case $1 in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + status) + status + exit $? + ;; + kill) + terminate + ;; + *) + echo -e $TOMCAT_USAGE + ;; +esac +exit 0 +``` + +这个脚本中需要注意你的jdk,jre位置和tomcat所在位置, 修改正确后保存。 + +## 给服务授权 + +```bash +[root@localhost ~]# chmod +x /etc/init.d/tomcat8 +``` + +## 使用服务 + +```bash +[root@localhost ~]# service tomcat8 status +Tomcat is not running + +[root@localhost ~]# service tomcat8 start +Starting tomcat +Using CATALINA_BASE: /usr/local/tomcat8 +Using CATALINA_HOME: /usr/local/tomcat8 +Using CATALINA_TMPDIR: /usr/local/tomcat8/temp +Using JRE_HOME: /usr/local/java/jdk1.8.0_102/jre +Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar +Tomcat started. +Tomcat is running with pid: 15282 + +[root@localhost ~]# service tomcat8 stop +Stoping Tomcat +Using CATALINA_BASE: /usr/local/tomcat8 +Using CATALINA_HOME: /usr/local/tomcat8 +Using CATALINA_TMPDIR: /usr/local/tomcat8/temp +Using JRE_HOME: /usr/local/java/jdk1.8.0_102/jre +Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar + +waiting for processes to exit +``` + +## 设置开机启动 + +```bash +[root@localhost ~]# chkconfig --add tomcat8 +[root@localhost ~]# chkconfig +auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off +blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off +crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off +ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off +iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off +iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off +iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off +lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off +mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off +multipathd 0:off 1:off 2:off 3:off 4:off 5:off 6:off +mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off +netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off +netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off +network 0:off 1:off 2:on 3:on 4:on 5:on 6:off +nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off +postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off +rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off +redis_6379 0:off 1:off 2:on 3:on 4:on 5:on 6:off +restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off +rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off +saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off +sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off +tomcat8 0:off 1:off 2:on 3:on 4:on 5:off 6:off +udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off +``` + +## links + * [目录]() + * 上一节: [安装redis3]() + * 下一节: [配置tomcat+nginx反向代理]() \ No newline at end of file diff --git a/_book/learn_server/index.html b/_book/learn_server/index.html new file mode 100644 index 0000000..c790070 --- /dev/null +++ b/_book/learn_server/index.html @@ -0,0 +1,1110 @@ + + + + + + + 写给java开发的运维笔记 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                        +
                                        + + + + + + + + +
                                        + +
                                        + +
                                        + + + + + + + + +
                                        +
                                        + +
                                        +
                                        + +
                                        + +

                                        写给java开发的运维笔记

                                        +

                                        对于Java开发人员,掌握基本的运维技能是必须的,如果你还不熟悉Linux环境,可以看这个教程。如果你觉得这个笔记还不错记得给这个项目一个 star 😊

                                        +

                                        初级篇

                                        +
                                          +
                                        1. 在虚拟机里安装centos6
                                        2. +
                                        3. 初始化操作系统
                                        4. +
                                        5. 安装jdk环境
                                        6. +
                                        7. 安装tomcat
                                        8. +
                                        9. 安装mysql及配置
                                        10. +
                                        11. 安装nginx
                                        12. +
                                        13. 安装redis3
                                        14. +
                                        15. 安装svn服务
                                        16. +
                                        +

                                        中级篇

                                        +
                                          +
                                        1. 配置tomcat为服务
                                        2. +
                                        3. 配置tomcat+nginx反向代理
                                        4. +
                                        5. 使用jemeter测试tomcat性能
                                        6. +
                                        7. 优化tomcat8
                                        8. +
                                        9. 配置多个tomcat
                                        10. +
                                        11. 优化nginx配置
                                        12. +
                                        13. 优化mysql配置
                                        14. +
                                        15. nginx+startssl配置https
                                        16. +
                                        + + +
                                        + +
                                        +
                                        +
                                        + +

                                        results matching ""

                                        +
                                          + +
                                          +
                                          + +

                                          No results matching ""

                                          + +
                                          +
                                          +
                                          + +
                                          +
                                          + +
                                          + + + + + + + + + + +
                                          + + +
                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/learn_server/init-os.md b/_book/learn_server/init-os.md new file mode 100644 index 0000000..fbfe2e9 --- /dev/null +++ b/_book/learn_server/init-os.md @@ -0,0 +1,122 @@ +# 初始化操作系统 + +Ok,我们安装好了CentOS系统,可以使用SSH工具连接上去进行尝试了,我推荐使用 [XShell] 这款工具,支持中文,还有一些主题使用。 + +现在我们还不知道CentOS的IP是无法连接的,所以先在虚拟机中启动CentOS。 + +![](https://ooo.0o0.ooo/2016/09/09/57d225f429a16.png) + +这里账户输入 `root` 密码是你在安装的时候设置的。 + +## 网络配置 + +这时候我们键入 `ifconfig` 查看ip + +```bash +[root@localhost ~]# ifconfig + +lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + inet6 addr: ::1/128 Scope:Host + UP LOOPBACK RUNNING MTU:65536 Metric:1 + RX packets:0 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) +``` + +发现还没有,我们需要设置一下网卡配置。 + +```bash +[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 +``` + +使用 `vi` 命令编辑第一块网卡的配置 + +```bash +DEVICE=eth0 +HWADDR=00:0C:29:50:58:BE +TYPE=Ethernet +UUID=58f93b51-314d-49bb-9db2-036bf91161fb +ONBOOT=no +NM_CONTROLLED=yes +BOOTPROTO=dhcp +``` + +只需要将 `ONBOOT` 修改为 `yes` ,然后保存。 + +```bash +[root@localhost ~]# service network restart +Shutting down interface eth0: [ OK ] +Shutting down loopback interface: [ OK ] +Bringing up loopback interface: [ OK ] +Bringing up interface eth0: +Determining IP information for eth0... done. + [ OK ] +``` + +这时候我们再查看一下ip + +```bash +[root@localhost ~]# ifconfig +eth0 Link encap:Ethernet HWaddr 00:0C:29:50:58:BE + inet addr:192.168.100.128 Bcast:192.168.100.255 Mask:255.255.255.0 + inet6 addr: fe80::20c:29ff:fe50:58be/64 Scope:Link + UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 + RX packets:302 errors:0 dropped:0 overruns:0 frame:0 + TX packets:189 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:33591 (32.8 KiB) TX bytes:29591 (28.8 KiB) + +lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + inet6 addr: ::1/128 Scope:Host + UP LOOPBACK RUNNING MTU:65536 Metric:1 + RX packets:0 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) +``` + +网卡的配置已经被应用到了,我们CentOS的IP是 `192.168.100.128` 你的可能和我不一样,那这个192.168.100开头的网段是在哪里设置的呢? + +![](https://ooo.0o0.ooo/2016/09/09/57d2293d28fe5.png) + +点击虚拟网络编辑器 + +![](https://ooo.0o0.ooo/2016/09/09/57d229a2311f4.png) + +如果你在执行 `service network restart` 的时候失败可以在这里修改一个网段试试。 + +此时你已经可以使用SSH工具连接到你的CenOS主机了。 + +关于更详细的网络设置大家可以参考这2篇文章: + +- [虚拟机下CentOS 6.5配置IP地址的三种方法](http://www.centoscn.com/CentOS/config/2014/1112/4112.html) +- [Vmware安装Centos NAT方式设置静态IP](http://www.centoscn.com/CentosBug/osbug/2015/1224/6568.html) + + +## yum源设置 + +先安装 `wget` 工具,我们安装的操作系统mini版的,默认没有wget命令,执行以下命令: + +```bash +yum install -y wget +``` + +然后设置yum源,我选择的是网易的源,你也可以设置阿里的或者其他。 + +```bash +cd /etc/yum.repos.d +mv CentOS-Base.repo bak-CentOS-Base.repo +wget http://mirrors.163.com/.help/CentOS6-Base-163.repo +yum clean all +yum makecache +``` + +安全性的配置在这里先不讲解,我们先用 `root`账户来操作。 + +## links + * [目录]() + * 上一节: [在虚拟机里安装centos6]() + * 下一节: [安装jdk环境]() \ No newline at end of file diff --git a/_book/learn_server/install-jdk.md b/_book/learn_server/install-jdk.md new file mode 100644 index 0000000..9cc96d1 --- /dev/null +++ b/_book/learn_server/install-jdk.md @@ -0,0 +1,67 @@ +# 安装jdk环境 + +服务器上如果不需要编码实际应该不安装JDK只安装JRE,我们考虑到以后可能安装其他软件就直接装JDK了。 + +## 下载JDK + +[下载jdk](http://stackoverflow.com/questions/10268583/downloading-java-jdk-on-linux-via-wget-is-shown-license-page-instead) + +上面的连接是stackoverflow有开发者写的不使用cookie下载jdk和jre的命令。 + +```bash +[root@localhost ~]# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz +--2016-09-09 19:57:01-- http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz +Resolving download.oracle.com... 23.4.240.57, 23.4.240.59 +Connecting to download.oracle.com|23.4.240.57|:80... connected. +HTTP request sent, awaiting response... 302 Found +Location: http://120.52.72.24:80/download.oracle.com/c3pr90ntc0td/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz [following] +--2016-09-09 19:57:01-- http://120.52.72.24/download.oracle.com/c3pr90ntc0td/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz +Connecting to 120.52.72.24:80... connected. +HTTP request sent, awaiting response... 200 OK +Length: 181435897 (173M) [application/x-gzip] +Saving to: “jdk-8u102-linux-x64.tar.gz” + +100%[==================================================================================================================================>] 181,435,897 2.07M/s in 85s + +2016-09-09 19:58:26 (2.04 MB/s) - “jdk-8u102-linux-x64.tar.gz” saved [181435897/181435897] +``` + +## 解压 + +```bash +[root@localhost ~]# tar -zxvf jdk-8u102-linux-x64.tar.gz +[root@localhost ~]# mkdir /usr/local/java +[root@localhost ~]# mv jdk1.8.0_102/ /usr/local/java/ +``` + +## 配置环境变量 + +```bash +[root@localhost ~]# vim /etc/profile +``` + +在最后一行添加 + +```bash +# java +export JAVA_HOME=/usr/local/java/jdk1.8.0_102 +export JRE_HOME=/usr/local/java/jdk1.8.0_102/jre +export CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar +export PATH=$JRE_HOME/bin:$JRE_HOME/bin:$PATH +``` + +## 生效 + +```bash +[root@localhost ~]# source /etc/profile +[root@localhost ~]# java -version +java version "1.8.0_102" +Java(TM) SE Runtime Environment (build 1.8.0_102-b14) +Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) +``` +这里我安装的是最新版的JDK。 + +## links + * [目录]() + * 上一节: [初始化操作系统]() + * 下一节: [安装tomcat]() \ No newline at end of file diff --git a/_book/learn_server/install-mysql.md b/_book/learn_server/install-mysql.md new file mode 100644 index 0000000..32e422e --- /dev/null +++ b/_book/learn_server/install-mysql.md @@ -0,0 +1,179 @@ +# 安装mysql及配置 + +## 卸载旧版本 + +查找本机是否已经安装mysql + +```bash +[root@localhost ~]# rpm -qa | grep mysql +mysql-libs-5.1.73-7.el6.x86_64 +``` + +卸载 + +```bash +[root@localhost ~]# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64 +``` + +## 安装MySQL + +这里我们使用yum方式进行安装,编译安装比较慢也很繁琐,查看系统里面有没有mysql的repo + +```bash +[root@localhost ~]# yum repolist all | grep mysql +Repository base is listed more than once in the configuration +Repository updates is listed more than once in the configuration +Repository extras is listed more than once in the configuration +Repository centosplus is listed more than once in the configuration +Repository contrib is listed more than once in the configuration +``` + +先执行如下语句,安装相关依赖 + +```bash +[root@localhost ~]# yum install gcc-c++ jemalloc-devel openssl-devel openssl -y +``` + +安装mysql的yum源 + +```bash +[root@localhost ~]# wget http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm +``` + +然后更新 + +```bash +[root@localhost ~]# sudo rpm -Uvh mysql57-community-release-el6-8.noarch.rpm +warning: mysql57-community-release-el6-8.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY +Preparing... ########################################### [100%] + 1:mysql57-community-relea########################################### [100%] +``` + +更新源,将mysql56的 `enable` 置为1,其余置为0 + +```bash +[root@localhost ~]# vim /etc/yum.repos.d/mysql-community.repo +``` + +修改后是这样 + +```bash +[root@localhost ~]# cat /etc/yum.repos.d/mysql-community.repo +[mysql-connectors-community] +name=MySQL Connectors Community +baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/6/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql + +[mysql-tools-community] +name=MySQL Tools Community +baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/6/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql + +# Enable to use MySQL 5.5 +[mysql55-community] +name=MySQL 5.5 Community Server +baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/6/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql + +# Enable to use MySQL 5.6 +[mysql56-community] +name=MySQL 5.6 Community Server +baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql + +[mysql57-community] +name=MySQL 5.7 Community Server +baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql + +[mysql-tools-preview] +name=MySQL Tools Preview +baseurl=http://repo.mysql.com/yum/mysql-tools-preview/el/6/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql +``` + +执行安装 + +```bash +[root@localhost ~]# yum install -y mysql-community-server +``` + +## 启动Mysql + +ok,安装完成了,我们启动mysql + +```bash +[root@localhost ~]# service mysqld start +``` + +## 配置MySQL + +yum安装的时候会把mysql的配置文件存放在 `/etc/my.cnf` 这个位置,在第一次启动的时候可以看到。 + +### 设置mysql root密码 + +有两种方式可以设置mysql的root密码 + +```bash +[root@localhost ~]# /usr/bin/mysqladmin -u root password 'new-password' +``` + +或者通过该命令给root账号设置密码 + +```bash +[root@localhost ~]# mysqladmin -u root password 'new-password' +``` + +此时我们就可以使用刚才设置的密码进行登录了 + +```bash +[root@localhost ~]# mysql -uroot -p +Enter password: +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 4 +Server version: 5.6.33 MySQL Community Server (GPL) + +Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> +``` + +### 设置开机启动 + +我们可以 通过 `chkconfig mysqld on` 命令来设置mysql开机启动 + +```bash +[root@localhost ~]# chkconfig mysqld on +``` + +看一下 + +```bash +[root@localhost ~]# chkconfig --list | grep mysqld +mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off +``` + +在这一步Mysql的安装就已经完成了,我们先步入下一个软件的安装,在之后的章节中还会继续讲解Mysql的配置。 + +## links + * [目录]() + * 上一节: [安装tomcat]() + * 下一节: [安装nginx]() \ No newline at end of file diff --git a/_book/learn_server/install-nginx.md b/_book/learn_server/install-nginx.md new file mode 100644 index 0000000..9af1f1b --- /dev/null +++ b/_book/learn_server/install-nginx.md @@ -0,0 +1,230 @@ +# 安装nginx + +在安装nginx前,需要确保系统安装了g++、gcc、openssl-devel、pcre-devel和zlib-devel软件。 + +```bash +[root@localhost ~]# yum -y install gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel +``` + +## 下载nginx + +```bash +[root@localhost ~]# wget http://nginx.org/download/nginx-1.10.1.tar.gz +``` + +```bash +[root@localhost ~]# tar -zxvf nginx-1.10.1.tar.gz +[root@localhost ~]# cd nginx-1.10.1 +[root@localhost nginx-1.10.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module +``` + +上面 `--prefix` 配置nginx所在目录,`--with-http_ssl_module`配置nginx支持ssl,配置https会用到。 + +## 编译安装 + +```bash +[root@localhost nginx-1.10.1]# make && make install +``` + +来看看 + +```bash +[root@localhost nginx-1.10.1]# ll /usr/local/nginx/ +total 16 +drwxr-xr-x. 2 root root 4096 Sep 9 22:07 conf +drwxr-xr-x. 2 root root 4096 Sep 9 22:07 html +drwxr-xr-x. 2 root root 4096 Sep 9 22:07 logs +drwxr-xr-x. 2 root root 4096 Sep 9 22:07 sbin +``` + +## 启动nginx + +```bash +[root@localhost nginx-1.10.1]# cd /usr/local/nginx/sbin/ +[root@localhost sbin]# ./nginx +``` + +这样就启动nginx,nginx默认监听在80端口,但是我们不要忘了把80端口对外开放。 + +在 `/etc/sysconfig/iptables` 中添加80端口 + +```bash +-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT +``` + +保存后重启一下防火墙 + +```bash +[root@localhost sbin]# service iptables restart +iptables: Setting chains to policy ACCEPT: filter [ OK ] +iptables: Flushing firewall rules: [ OK ] +iptables: Unloading modules: [ OK ] +iptables: Applying firewall rules: [ OK ] +``` + +访问 [http://192.168.100.128/](http://192.168.100.128/) 你将看到 + +![](https://ooo.0o0.ooo/2016/09/09/57d253381cff7.png) + +## 关闭nginx + +```bash +#查询nginx主进程号 +[root@localhost sbin]# ps -ef | grep nginx +#停止进程 +[root@localhost sbin]# kill -QUIT 主进程号 +#快速停止 +[root@localhost sbin]# kill -TERM 主进程号 +#强制停止 +[root@localhost sbin]# pkill -9 nginx +``` + +## 重启nginx + +```bash +[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload +``` + +## 配置nginx为服务 + +```bash +[root@localhost ~]# vim /etc/init.d/nginx +``` + +将服务脚本粘贴进去 + +_服务脚本_ + +```bash +#!/bin/sh +# chkconfig: 2345 85 15 +# description:Nginx Server + +NGINX_HOME=/usr/local/nginx +NGINX_SBIN=$NGINX_HOME/sbin/nginx +NGINX_CONF=$NGINX_HOME/conf/nginx.conf +NGINX_PID=$NGINX_HOME/logs/nginx.pid + +NGINX_NAME="Nginx" + +. /etc/rc.d/init.d/functions + +if [ ! -f $NGINX_SBIN ] +then + echo "$NGINX_NAME startup: $NGINX_SBIN not exists! " + exit +fi + +start() { + $NGINX_SBIN -c $NGINX_CONF + ret=$? + if [ $ret -eq 0 ]; then + action $"Starting $NGINX_NAME: " /bin/true + else + action $"Starting $NGINX_NAME: " /bin/false + fi +} + +stop() { + kill `cat $NGINX_PID` + ret=$? + if [ $ret -eq 0 ]; then + action $"Stopping $NGINX_NAME: " /bin/true + else + action $"Stopping $NGINX_NAME: " /bin/false + fi +} + +restart() { + stop + start +} + +check() { + $NGINX_SBIN -c $NGINX_CONF -t +} + + +reload() { + kill -HUP `cat $NGINX_PID` && echo "reload success!" +} + +relog() { + kill -USR1 `cat $NGINX_PID` && echo "relog success!" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + check|chk) + check + ;; + status) + status -p $NGINX_PID + ;; + reload) + reload + ;; + relog) + relog + ;; + *) + echo $"Usage: $0 {start|stop|restart|reload|status|check|relog}" + exit 1 +esac +``` + +给脚本可执行权限 + +```bash +[root@localhost ~]# chmod +x /etc/init.d/nginx +``` + +然后你就可以使用 `service nginx start` 的方式启动nginx了 + +```bash +[root@localhost ~]# service nginx +Usage: /etc/init.d/nginx {start|stop|restart|reload|status|check|relog} +``` + +## 添加到开机项 + +```bash +[root@localhost ~]# chkconfig --add nginx +[root@localhost ~]# chkconfig +auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off +blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off +crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off +ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off +iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off +iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off +iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off +lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off +mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off +multipathd 0:off 1:off 2:off 3:off 4:off 5:off 6:off +mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off +netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off +netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off +network 0:off 1:off 2:on 3:on 4:on 5:on 6:off +nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off +postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off +rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off +restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off +rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off +saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off +sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off +udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off +``` +我们可以看到nginx已经被添加到开机启动了。 + +## links + * [目录]() + * 上一节: [安装mysql及配置]() + * 下一节: [安装redis3]() \ No newline at end of file diff --git a/_book/learn_server/install-redis.md b/_book/learn_server/install-redis.md new file mode 100644 index 0000000..68ee65e --- /dev/null +++ b/_book/learn_server/install-redis.md @@ -0,0 +1,102 @@ +# 安装redis3 + +## 安装依赖软件 + +```bash +yum install -y gcc* +yum install -y tcl +``` + +## 安装redis + +```bash +[root@localhost ~]# wget http://download.redis.io/releases/redis-3.2.3.tar.gz +[root@localhost ~]# tar -zxvf redis-3.2.3.tar.gz +[root@localhost ~]# cd redis-3.2.3 +[root@localhost redis-3.2.3]# make +[root@localhost redis-3.2.3]# make test +[root@localhost redis-3.2.3]# make install +[root@localhost redis-3.2.3]# cd utils +[root@localhost redis-3.2.3]# chmod +x install_server.sh +[root@localhost redis-3.2.3]# ./install_server.sh +``` + +在install的时候提示选项,全部选择默认即可,你看到如下画面表示安装成功 + +```bash +Please select the redis port for this instance: [6379] +Selecting default: 6379 +Please select the redis config file name [/etc/redis/6379.conf] +Selected default - /etc/redis/6379.conf +Please select the redis log file name [/var/log/redis_6379.log] +Selected default - /var/log/redis_6379.log +Please select the data directory for this instance [/var/lib/redis/6379] +Selected default - /var/lib/redis/6379 +Please select the redis executable path [/usr/local/bin/redis-server] +Selected config: +Port : 6379 +Config file : /etc/redis/6379.conf +Log file : /var/log/redis_6379.log +Data dir : /var/lib/redis/6379 +Executable : /usr/local/bin/redis-server +Cli Executable : /usr/local/bin/redis-cli +Is this ok? Then press ENTER to go on or Ctrl-C to abort. +Copied /tmp/6379.conf => /etc/init.d/redis_6379 +Installing service... +Successfully added to chkconfig! +Successfully added to runlevels 345! +Starting Redis server... +Installation successful! +``` + +## 测试一下 + +```bash +[root@localhost ~]# redis-cli +127.0.0.1:6379> set name jack +OK +127.0.0.1:6379> get name +"jack" +``` + +## 查看redis状态 + +```bash +[root@localhost ~]# service redis_6379 status +Redis is running (14927) +``` + +## 启动/关闭redis + +```bash +[root@localhost ~]# service redis_6379 stop +Stopping ... +Waiting for Redis to shutdown ... +Redis stopped +[root@localhost ~]# service redis_6379 start +Starting Redis server... +``` + +## 设置redis认证密码 + +```bash +[root@localhost ~]# vim /etc/redis/6379.conf +``` + +找到 `# requirepass foobared` 将 `#` 去掉,设置一个密码。 + +然后重启redis + +```bash +[root@localhost ~]# service redis_6379 restart +Stopping ... +Redis stopped +Starting Redis server... +``` + +wow,你已经完成初级篇的所有任务了,接下里我们会玩点有趣的 :) + +## links + * [目录]() + * 上一节: [安装nginx]() + * 下一节: [配置tomcat为服务]() \ No newline at end of file diff --git a/_book/learn_server/install-svn.md b/_book/learn_server/install-svn.md new file mode 100644 index 0000000..26d01e9 --- /dev/null +++ b/_book/learn_server/install-svn.md @@ -0,0 +1,174 @@ +# 安装svn服务 + +Subversion是一个自由,开源的版本控制系统。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节。Subversion是Apache基金会下的一个项目,官网 [https://subversion.apache.org](https://subversion.apache.org) + +## 安装依赖 + +```bash +[root@localhost ~]# yum install sqlite sqlite-devel apr-util apr-util-devel -y +``` + +## 安装subversion + +```bash +[root@localhost ~]# wget http://mirrors.cnnic.cn/apache/subversion/subversion-1.8.16.tar.gz +[root@localhost ~]# tar -zxvf subversion-1.8.16.tar.gz +[root@localhost ~]# cd subversion-1.8.16 +[root@localhost subversion-1.8.16]# ./configure --prefix=/usr/local/subversion +[root@localhost subversion-1.8.16]# make && make install +``` + +## 配置环境 + +```bash +[root@localhost ~]# vim /etc/profile +``` + +加入 `PATH=$PATH:/usr/local/subversion/bin` + +## 查看版本 + +```bash +[root@localhost ~]# svn --version +svn, version 1.8.16 (r1740329) + compiled Sep 26 2016, 06:42:53 on x86_64-unknown-linux-gnu + +Copyright (C) 2016 The Apache Software Foundation. +This software consists of contributions made by many people; +see the NOTICE file for more information. +Subversion is open source software, see http://subversion.apache.org/ + +The following repository access (RA) modules are available: + +* ra_svn : Module for accessing a repository using the svn network protocol. + - with Cyrus SASL authentication + - handles 'svn' scheme +* ra_local : Module for accessing a repository on local disk. + - handles 'file' scheme +``` + +## 开始配置 + +### 建立仓库目录 + +```bash +[root@localhost ~]# mkdir -p /data/svn/repos +``` + +### 创建版本 + +```bash +[root@localhost ~]# svnadmin create /data/svn/repos/ +``` + +### 修改配置 + +```bash +[root@localhost ~]# vim /data/svn/repos/conf/svnserve.conf +``` + +```bash +[general] +anon-access = none +auth-access = write +password-db = passwd #用户密码文件 +authz-db = authz #授权登录文件 +realm = repos +``` + +修改`/data/svn/repos/conf/passwd`文件,添加用户及密码: + +```bash +[root@localhost ~]# vim /data/svn/repos/conf/passwd + +[users] +username=password #用户名=密码   一行一个 +``` + +修改`/data/svn/repos/conf/authz`文件,控制用户权限 + +```bash +[root@localhost ~]# vim /data/svn/repos/conf/authz +``` + +> 注意: + +* 权限配置文件中出现的用户名必须已在用户配置文件中定义。 +* 对权限配置文件的修改立即生效,不必重启svn。 + +用户组格式: + +```bash +[groups] += , +``` + +其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。 +版本库目录格式: + +```bash +[<版本库>:/项目/目录] +@<用户组名> = <权限> +<用户名> = <权限> +``` + +其中,方框号内部分可以有多种写法: + +- [/],表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/home/svndata,[/]就是表示对全部版本库设置权限。 +- [repos:/] 表示对版本库repos设置权限; +- [repos:/abc] 表示对版本库repos中的abc项目设置权限; +- [repos:/abc/aaa] 表示对版本库repos中的abc项目的aaa目录设置权限; +- +权限主体可以是`用户组`、`用户`或`*`,用户组在前面加`@`,`*`表示全部用户。 +权限可以是`w`、`r`、`wr`和空,空表示没有任何权限。 + +## 启动SVN + +```bash +[root@localhost ~]# svnserve -d --listen-port 10901 -r /data/svn +``` + +- -d :表示以daemon方式(后台运行)运行; +- --listen-port 10901 :表示使用10901端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限; +- -r /data/svn :指定根目录是/data/svn。 + +## 将svn作为服务 + +```bash +#!/bin/bash +# build this file in /etc/init.d/svn +# chmod 755 /etc/init.d/svn +# centos下可以用如下命令管理svn: service svn start(restart/stop) +SVN_HOME=/home/svn +if [ ! -f "/usr/local/subversion/bin/svnserve" ] +then + echo "svnserver startup: cannot start" + exit +fi +case "$1" in + start) + echo "Starting svnserve..." + /usr/local/subversion/bin/svnserve -d --listen-port 10901 -r $SVN_HOME + echo "Finished!" + ;; + stop) + echo "Stoping svnserve..." + killall svnserve + echo "Finished!" + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: svn { start | stop | restart } " + exit 1 +esac +``` + +wow,你已经完成初级篇的所有任务了,接下里我们会玩点有趣的 :) + +## links + * [目录]() + * 上一节: [安装nginx]() + * 下一节: [配置tomcat为服务]() diff --git a/_book/learn_server/install-tomcat.md b/_book/learn_server/install-tomcat.md new file mode 100644 index 0000000..aa693c3 --- /dev/null +++ b/_book/learn_server/install-tomcat.md @@ -0,0 +1,97 @@ +# 安装tomcat + +上一章节我们安装了JDK的环境,Tomcat运行的前提是要有JDK环境。 + +## 下载Tomcat + +```bash +[root@localhost ~]# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz +[root@localhost ~]# tar -zxvf apache-tomcat-8.5.5.tar.gz +[root@localhost ~]# mv apache-tomcat-8.5.5 /usr/local/tomcat8 +``` + +## 启动tomcat + +```bash +[root@localhost ~]# cd /usr/local/tomcat8/bin/ +[root@localhost bin]# ./startup.sh +Using CATALINA_BASE: /usr/local/tomcat8 +Using CATALINA_HOME: /usr/local/tomcat8 +Using CATALINA_TMPDIR: /usr/local/tomcat8/temp +Using JRE_HOME: /usr/local/java/jdk1.8.0_102/jre +Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar +Tomcat started. +``` + +现在打开 [http://192.168.100.128:8080](http://192.168.100.128:8080) 应该就可以看到Tomcat的汤姆猫页面。 +而事实是你看到这个: + +![](https://ooo.0o0.ooo/2016/09/09/57d23ea8c353e.png) + +哦草。。。为什么,机智的同学已经想到了,防火墙啊。对我们没有对防火墙进行任何配置,实际上8080端口是不对外开放的, +那么如何解决呢? + +- 关闭防火墙 +- 开放8080端口 + +## 配置防火墙 + +在CentOS上关闭防火墙是非常简单的 + +```bash +[root@localhost bin]# service iptables stop +iptables: Setting chains to policy ACCEPT: filter [ OK ] +iptables: Flushing firewall rules: [ OK ] +iptables: Unloading modules: [ OK ] +``` + +这时候你再访问 [http://192.168.100.128:8080](http://192.168.100.128:8080) 就可以看到 + +![](https://ooo.0o0.ooo/2016/09/09/57d23f752bfce.png) + +当然这种方式是简单粗暴的,我们在真实服务器上不可能这么做,怎么做呢? + +```bash +[root@localhost bin]# vim /etc/sysconfig/iptables +``` + +我们看到 `iptables` 的默认配置是这样的: + +```bash +# Firewall configuration written by system-config-firewall +# Manual customization of this file is not recommended. +*filter +:INPUT ACCEPT [0:0] +:FORWARD ACCEPT [0:0] +:OUTPUT ACCEPT [0:0] +-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +-A INPUT -p icmp -j ACCEPT +-A INPUT -i lo -j ACCEPT +-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT +-A INPUT -j REJECT --reject-with icmp-host-prohibited +-A FORWARD -j REJECT --reject-with icmp-host-prohibited +COMMIT +``` + +只需要添加一行和 `22` 端口一样的配置: + +```bash +-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT +``` + +这样既把8080的TCP端口对外开放了,然后重启防火墙 + +```bash +[root@localhost bin]# service iptables restart +iptables: Setting chains to policy ACCEPT: filter [ OK ] +iptables: Flushing firewall rules: [ OK ] +iptables: Unloading modules: [ OK ] +iptables: Applying firewall rules: [ OK ] +``` + +可以达到同样的效果。 + +## links + * [目录]() + * 上一节: [安装jdk环境]() + * 下一节: [安装mysql及配置]() \ No newline at end of file diff --git a/_book/learn_server/optimization-nginx.md b/_book/learn_server/optimization-nginx.md new file mode 100644 index 0000000..b08a00f --- /dev/null +++ b/_book/learn_server/optimization-nginx.md @@ -0,0 +1 @@ +# 优化nginx配置 \ No newline at end of file diff --git a/_book/learn_server/optimization-tomcat8.md b/_book/learn_server/optimization-tomcat8.md new file mode 100644 index 0000000..0816a23 --- /dev/null +++ b/_book/learn_server/optimization-tomcat8.md @@ -0,0 +1,156 @@ +# 优化tomcat8 + +我们优化tomcat的目的是提高并发性,即在多线程环境下能够快速响应,提高吞吐量。 + +首先在tomcat的bin目录下新建一个名为 `setenv.sh` 的文件,tomcat启动时会自动加载该文件。 + +```bash +[root@localhost bin]# vim setenv.sh +``` + +加入tomcat基础配置 + +```bash +#!/usr/bin + +export CATALINA_HOME=/usr/local/tomcat8 +export CATALINA_BASE=/usr/local/tomcat8 +``` + +## JAVA_OPTS + +加入如下配置,我们服务器的内存是1G。这里我设置最大占用768 + +```bash +export JAVA_OPTS="$JAVA_OPTS\ + -server\ + -Xms768m\ + -Xmx768m\ + -Xss512k\ + -Djava.awt.headless=true\ + -Dfile.encoding=utf-8\ + -Djava.net.preferIPv4Stack=true\ + -Djava.security.egd=file:/dev/./urandom" +``` + +- -server:表示这是应用于服务器的配置,JVM 内部会有特殊处理的 +- -Xms768m:设置JVM最大可用内存为768MB +- -Xmx768m:设置JVM最小内存为768MB。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 +- -Dfile.encoding:默认文件编码 +- -Djava.net.preferIPv4Stack:使用IPV4 +- -Djava.security.egd:[详细解释](http://fengbin2005.iteye.com/blog/2313845) + +## 优化`server.xml` + +```xml + +``` + +**maxThreads 连接数限制** + +maxThreads 是 Tomcat 所能接受最大连接数。一般设置不要超过8000以上,如果你的网站访问量非常大可能使用运行多个Tomcat实例的方法。 + +## 安装apr + +安装依赖 + +```bash +[root@localhost ~]# yum install -y openssl-devel +``` + +下载apr相关包 + +```bash +[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.gz +[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.gz +[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-iconv-1.2.1.tar.gz + +# 安装apr +[root@localhost ~]# tar -zxvf apr-1.5.2.tar.gz + +[root@localhost ~]# cd apr-1.5.2 +[root@localhost apr-1.5.2]# ./configure && make && make install + +# 安装apr-util +[root@localhost ~]# tar -zxvf apr-util-1.5.4.tar.gz +[root@localhost ~]# cd apr-util-1.5.4 +[root@localhost apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr && make && make install + +# 安装apr-iconv +[root@localhost ~]# cd apr-iconv-1.2.1 +[root@localhost apr-iconv-1.2.1]# ./configure --with-apr=/usr/local/apr && make && make install +``` + +配置tomcat + +```bash +[root@localhost apr-iconv-1.2.1]# cd /usr/local/tomcat8/bin/ +[root@localhost bin]# tar -zxf tomcat-native.tar.gz +[root@localhost bin]# cd tomcat-native-1.2.8-src/native/ +[root@localhost native]# ./configure --with-apr=/usr/local/apr && make && make install +``` + +这是提示我 + +```bash +configure: error: Your version of OpenSSL is not compatible with this version of tcnative +``` + +由于centos 当前的yum 库只有1.0.1 的OpenSSL,所以我们需要手工安装1.0.2 + +```bash +[root@localhost ~]# wget https://www.openssl.org/source/openssl-1.0.2-latest.tar.gz +[root@localhost ~]# tar -zxf openssl-1.0.2-latest.tar.gz +[root@localhost ~]# cd openssl-1.0.2h +[root@localhost openssl-1.0.2h]# ./config --prefix=/usr/local/openssl -fPIC +``` + +> 注意这里需要加入 -fPIC参数,否则后面在安装tomcat native 组件会出错 +> 注意:不要按照提示去运行 make depend + +```bash +[root@localhost openssl-1.0.2h]# make +[root@localhost openssl-1.0.2h]# make install +[root@localhost openssl-1.0.2h]# mv /usr/bin/openssl ~ +[root@localhost openssl-1.0.2h]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl +[root@localhost openssl-1.0.2h]# openssl version +OpenSSL 1.0.2h 3 May 2016 +``` + +重新安装 tomcat-native组件 + +```bash +[root@localhost openssl-1.0.2h]# cd /usr/local/tomcat8/bin/tomcat-native-1.2.8-src/native/ +[root@localhost native]# ./configure --with-apr=/usr/local/apr --with-ssl=/usr/local/openssl +[root@localhost native]# make && make install +``` + +在 `setenv.sh` 文件中添加 + +```bash +LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib +export LD_LIBRARY_PATH +``` + +在 `server.xml` 中加 + +```xml + +``` + +启动tomcat,打开控制台日志可以看到如图所示的日志 + +![](https://ooo.0o0.ooo/2016/09/09/57d281093d907.png) + +## 性能测试 \ No newline at end of file diff --git a/_book/learn_server/use-jemeter-test-tomcat.md b/_book/learn_server/use-jemeter-test-tomcat.md new file mode 100644 index 0000000..31dc705 --- /dev/null +++ b/_book/learn_server/use-jemeter-test-tomcat.md @@ -0,0 +1,74 @@ +# 使用jemeter测试tomcat性能 + +JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 + +下载地址:[http://jmeter.apache.org/download_jmeter.cgi](http://jmeter.apache.org/download_jmeter.cgi) + +安装启动即可。 + +![](https://ooo.0o0.ooo/2016/09/09/57d26181a3bbc.png) + +## 服务器环境 + +- CPU:Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz +- 内存:1G +- 操作系统:CentOS6.8_x64 +- JDK:1.8.0_102 +- Tomcat:8.5.5 + +下面所有测试都是基于1000个请求做的,且都是访问Tomcat默认的ROOT首页 + +## 创建测试计划 + +![](https://ooo.0o0.ooo/2016/09/09/57d262594f2ec.png) +![](https://ooo.0o0.ooo/2016/09/09/57d262640c284.png) +![](https://ooo.0o0.ooo/2016/09/09/57d2626eddf57.png) + +配置参数,这里我们进行多次测试. + +![](https://ooo.0o0.ooo/2016/09/09/57d262af81eaf.png) +![](https://ooo.0o0.ooo/2016/09/09/57d262b9a7fe3.png) + +| 并发用户数 | 吞吐量/每秒 | 请求等待时间/毫秒 | 错误请求数/百分比 | +| :----: | :----: | :----: | :----: | +| 10 | 1999 | 8 | 0.00 | +| 20 | 2667 | 11 | 0.00 | +| 30 | 2746 | 13 | 0.00 | +| 40 | 2730 | 16 | 0.00 | +| 50 | 2682 | 20 | 0.00 | +| 60 | 2756 | 23 | 0.00 | +| 70 | 2764 | 27 | 0.00 | +| 80 | 2714 | 32 | 0.00 | +| 90 | 2131 | 35 | 0.00 | +| 100 | 2739 | 38 | 0.00 | +| 200 | 1404 | 43 | 0.34% | +| 300 | 1066 | 50 | 0.77% | +| 400 | 995 | 52 | 1.23% | +| 500 | 1086 | 46 | 1.42% | +| 1000 | 1163 | 59 | 2.83% | + +![](https://ooo.0o0.ooo/2016/09/09/57d276759cccc.png) + +![](https://ooo.0o0.ooo/2016/09/09/57d2768276105.png) + +从上面的测试结果来看,在90-100个并发的时候出现不稳定,其他都比较平缓,请求时间一直在上涨。CPU负载均在60%左右。 + +在聚合报告中,会显示一行数据,共有10个字段,含义分别如下。 + +- Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值 +- #Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100 +- Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间 +- Median:中位数,也就是 50% 用户的响应时间 +- 90% Line:90% 用户的响应时间 +- Min:最小响应时间 +- Max:最大响应时间 +- Error%:本次测试中出现错误的请求的数量/请求的总数 +- Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second) +- KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec + +在下一章节我们介绍对tomcat8的优化。 + +## links + * [目录]() + * 上一节: [配置tomcat+nginx反向代理]() + * 下一节: [优化tomcat8]() \ No newline at end of file diff --git a/_book/learn_server/virtual-machine-install-centos6.md b/_book/learn_server/virtual-machine-install-centos6.md new file mode 100644 index 0000000..9fc444b --- /dev/null +++ b/_book/learn_server/virtual-machine-install-centos6.md @@ -0,0 +1,112 @@ +# 在虚拟机里安装centos6 + +## 基础环境 + + - 操作系统:Win7操作系统 + - 虚拟机:VMware® Workstation 12 Pro + - Linux系统:CentOS 64位 + +接下里我们创建一个Linux虚拟机。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21ba70219e.png) + +这里选择自定义配置 + +![](https://ooo.0o0.ooo/2016/09/09/57d21bcabe68c.png) + +我们选择了Workstation 8x, 为了兼容低版本的vmvware + +![](https://ooo.0o0.ooo/2016/09/09/57d21bd500c46.png) + +稍后安装操作系统 + +![](https://ooo.0o0.ooo/2016/09/09/57d21bdd67f7f.png) + +选择Linux -> centos64位 + +![](https://ooo.0o0.ooo/2016/09/09/57d21be618ba3.png) + +保存虚拟机到本地文件夹 + +![](https://ooo.0o0.ooo/2016/09/09/57d21bf02cb1f.png) + +选择处理器数量和核心数,这里我选择默认的,根据你的机器情况可适当调整。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21bf903216.png) + +设置Centos内存,我设置1G + +![](https://ooo.0o0.ooo/2016/09/09/57d21c048caba.png) + +如果你在局域网环境并且希望其他人可以访问到你的centos,可以选择桥接模式, +这里我只有宿主机访问虚拟机,就设置了NAT模式,桥接的时候会和宿主机处于同一IP段。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21c5b16bc8.png) +![](https://ooo.0o0.ooo/2016/09/09/57d21c63c49fa.png) + +这里选择默认即可。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21c70a4f1e.png) +![](https://ooo.0o0.ooo/2016/09/09/57d21c7a64405.png) + +磁盘大小设置20G,用到更多可以累加上去,然后将虚拟磁盘存储为单文件,防止磁盘碎片。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21ccc2db15.png) + +点击完成。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21cd385b5a.png) + +选择你的IOS镜像文件,如果没有可以在 [这里](http://isoredirect.centos.org/centos/6/isos/x86_64/) 下载 + +![](https://ooo.0o0.ooo/2016/09/09/57d21cd94a75e.png) + +![](https://ooo.0o0.ooo/2016/09/09/57d21ce210877.png) + +安装操作系统 + +![](https://ooo.0o0.ooo/2016/09/09/57d21cf139606.png) + +这里要检查硬件,可以直接跳过。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21cf8bbfb7.png) + +选择语言环境,我选择英文,避免在以后的操作中遇到未知的错误。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21de293453.png) +![](https://ooo.0o0.ooo/2016/09/09/57d21de9279bf.png) + +确定将配置写入到磁盘 + +![](https://ooo.0o0.ooo/2016/09/09/57d21def353cf.png) + +这里就默认把,暂时用不到 + +![](https://ooo.0o0.ooo/2016/09/09/57d21dfa1624b.png) + +选择时区,我们选择Asia/shanghai + +![](https://ooo.0o0.ooo/2016/09/09/57d21dffbd0ac.png) + +设置你的ROOT用户密码,请牢记以后会经常用到。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21e06b65c4.png) + +使用全部空间,就不分区了。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21e0c94266.png) + +将修改写入到磁盘。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21e21e909f.png) + +等待CentOS为你安装基础软件环境。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21e687d0de.png) + +看到这个界面你的CentOS就安装完成了,点击REBOOT即重启机器。 +可以进行下一关了,上车! + +## links + * [目录]() + * 下一节: [初始化操作系统]() \ No newline at end of file diff --git a/_book/mvc/1.plan.html b/_book/mvc/1.plan.html new file mode 100644 index 0000000..ffd6ab1 --- /dev/null +++ b/_book/mvc/1.plan.html @@ -0,0 +1,1171 @@ + + + + + + + 项目规划 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                          +
                                          + + + + + + + + +
                                          + +
                                          + +
                                          + + + + + + + + +
                                          +
                                          + +
                                          +
                                          + +
                                          + +

                                          项目规划

                                          +

                                          做任何事情都需要做好规划,那么我们在开发博客系统之前,同样需要做好项目的规划,如何设置目录结构,如何理解整个项目的流程图,当我们理解了应用的执行过程,那么接下来的设计编码就会变得相对容易了

                                          +

                                          创建一个maven项目

                                          +

                                          约定一下框架基础信息

                                          +
                                            +
                                          • 假设我们的web框架名称是 mario
                                          • +
                                          • 包名是 com.junicorn.mario
                                          • +
                                          +

                                          命令行创建

                                          +
                                          mvn archetype:create -DgroupId=com.junicorn -DartifactId=mario -DpackageName=com.junicorn.mario
                                          +
                                          +

                                          Eclipse创建

                                          +

                                          +

                                          +

                                          创建好的基本结构是这样的

                                          +

                                          +

                                          初始化一下 pom.xml

                                          +
                                          <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                          +    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
                                          +    <modelVersion>4.0.0</modelVersion>
                                          +
                                          +    <groupId>com.junicorn</groupId>
                                          +    <artifactId>mario</artifactId>
                                          +    <version>0.0.1-SNAPSHOT</version>
                                          +    <packaging>jar</packaging>
                                          +
                                          +    <name>mario</name>
                                          +    <url>https://github.com/junicorn/mario</url>
                                          +
                                          +    <properties>
                                          +        <maven.compiler.source>1.6</maven.compiler.source>
                                          +        <maven.compiler.target>1.6</maven.compiler.target>
                                          +        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                                          +        <servlet.version>3.0.1</servlet.version>
                                          +    </properties>
                                          +
                                          +    <dependencies>
                                          +        <dependency>
                                          +            <groupId>javax.servlet</groupId>
                                          +            <artifactId>javax.servlet-api</artifactId>
                                          +            <version>3.1.0</version>
                                          +            <scope>provided</scope>
                                          +        </dependency>
                                          +    </dependencies>
                                          +
                                          +    <build>
                                          +        <plugins>
                                          +            <plugin>
                                          +                <groupId>org.apache.maven.plugins</groupId>
                                          +                <artifactId>maven-compiler-plugin</artifactId>
                                          +                <version>3.1</version>
                                          +                <configuration>
                                          +                    <source>1.6</source>
                                          +                    <target>1.6</target>
                                          +                    <encoding>UTF-8</encoding>
                                          +                </configuration>
                                          +            </plugin>
                                          +        </plugins>
                                          +    </build>
                                          +</project>
                                          +
                                          +

                                          OK,项目创建好了,这个将是我们的框架。

                                          +

                                          框架流程

                                          +

                                          web程序是基于 M(模型)V(视图)C(控制器) 设计的。MVC是一种将应用程序的逻辑层和表现层进行分离的结构方式。在实践中,由于表现层从 Java 中分离了出来,所以它允许你的网页中只包含很少的脚本。

                                          +
                                            +
                                          • 模型 (Model) 代表数据结构。通常来说,模型类将包含取出、插入、更新数据库资料等这些功能。
                                          • +
                                          • 视图 (View) 是展示给用户的信息的结构及样式。一个视图通常是一个网页,但是在Java中,一个视图也可以是一个页面片段,如页头、页尾。它还可以是一个 RSS 页面,或其它类型的“页面”,Jsp已经很好的实现了View层中的部分功能。
                                          • +
                                          • 控制器 (Controller) 是模型、视图以及其他任何处理HTTP请求所必须的资源之间的中介,并生成网页。
                                          • +
                                          +

                                          设计思路

                                          +

                                          mario 是基于servlet实现的mvc,用一个全局的Filter来做核心控制器,使用sql2o框架作为数据库基础访问。 +使用一个接口 Bootstrap 作为初始化启动,实现它并遵循Filter参数约定即可。

                                          +

                                          建立路由、数据库、视图相关的包和类,下面是结构:

                                          +

                                          + + + + +
                                          + +
                                          +
                                          +
                                          + +

                                          results matching ""

                                          +
                                            + +
                                            +
                                            + +

                                            No results matching ""

                                            + +
                                            +
                                            +
                                            + +
                                            +
                                            + +
                                            + + + + + + + + + + + + + + +
                                            + + +
                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/mvc/2.route.html b/_book/mvc/2.route.html new file mode 100644 index 0000000..1b4e16c --- /dev/null +++ b/_book/mvc/2.route.html @@ -0,0 +1,1272 @@ + + + + + + + 路由设计 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                            +
                                            + + + + + + + + +
                                            + +
                                            + +
                                            + + + + + + + + +
                                            +
                                            + +
                                            +
                                            + +
                                            + +

                                            路由设计

                                            +

                                            现代 Web 应用的 URL 十分优雅,易于人们辨识记忆。 路由的表现形式如下:

                                            +
                                            /resources/:resource/actions/:action
                                            +http://bladejava.com
                                            +http://bladejava.com/docs/modules/route
                                            +

                                            那么我们在java语言中将他定义一个 Route 类, 用于封装一个请求的最小单元, +在Mario中我们设计一个路由的对象如下:

                                            +
                                            /**
                                            + * 路由
                                            + * @author biezhi
                                            + */
                                            +public class Route {
                                            +
                                            +    /**
                                            +     * 路由path
                                            +     */
                                            +    private String path;
                                            +
                                            +    /**
                                            +     * 执行路由的方法
                                            +     */
                                            +    private Method action;
                                            +
                                            +    /**
                                            +     * 路由所在的控制器
                                            +     */
                                            +    private Object controller;
                                            +
                                            +    public Route() {
                                            +    }
                                            +
                                            +    public String getPath() {
                                            +        return path;
                                            +    }
                                            +
                                            +    public void setPath(String path) {
                                            +        this.path = path;
                                            +    }
                                            +
                                            +    public Method getAction() {
                                            +        return action;
                                            +    }
                                            +
                                            +    public void setAction(Method action) {
                                            +        this.action = action;
                                            +    }
                                            +
                                            +    public Object getController() {
                                            +        return controller;
                                            +    }
                                            +
                                            +    public void setController(Object controller) {
                                            +        this.controller = controller;
                                            +    }
                                            +
                                            +}
                                            +
                                            +

                                            所有的请求在程序中是一个路由,匹配在 path 上,执行靠 action,处于 controller 中。

                                            +

                                            Mario使用一个Filter接收所有请求,因为从Filter过来的请求有无数,如何知道哪一个请求对应哪一个路由呢? +这时候需要设计一个路由匹配器去查找路由处理我们配置的请求, +有了路由匹配器还不够,这么多的路由我们如何管理呢?再来一个路由管理器吧,下面就创建路由匹配器和管理器2个类:

                                            +
                                            /**
                                            + * 路由管理器,存放所有路由的
                                            + * @author biezhi
                                            + */
                                            +public class Routers {
                                            +
                                            +    private static final Logger LOGGER = Logger.getLogger(Routers.class.getName());
                                            +
                                            +    private List<Route> routes = new ArrayList<Route>();
                                            +
                                            +    public Routers() {
                                            +    }
                                            +
                                            +    public void addRoute(List<Route> routes){
                                            +        routes.addAll(routes);
                                            +    }
                                            +
                                            +    public void addRoute(Route route){
                                            +        routes.add(route);
                                            +    }
                                            +
                                            +    public void removeRoute(Route route){
                                            +        routes.remove(route);
                                            +    }
                                            +
                                            +    public void addRoute(String path, Method action, Object controller){
                                            +        Route route = new Route();
                                            +        route.setPath(path);
                                            +        route.setAction(action);
                                            +        route.setController(controller);
                                            +
                                            +        routes.add(route);
                                            +        LOGGER.info("Add Route:[" + path + "]");
                                            +    }
                                            +
                                            +    public List<Route> getRoutes() {
                                            +        return routes;
                                            +    }
                                            +
                                            +    public void setRoutes(List<Route> routes) {
                                            +        this.routes = routes;
                                            +    }
                                            +
                                            +}
                                            +
                                            +

                                            这里的代码很简单,这个管理器里用List存储所有路由,公有的 addRoute 方法是给外部调用的。

                                            +
                                            /**
                                            + * 路由匹配器,用于匹配路由
                                            + * @author biezhi
                                            + */
                                            +public class RouteMatcher {
                                            +
                                            +    private List<Route> routes;
                                            +
                                            +    public RouteMatcher(List<Route> routes) {
                                            +        this.routes = routes;
                                            +    }
                                            +
                                            +    public void setRoutes(List<Route> routes) {
                                            +        this.routes = routes;
                                            +    }
                                            +
                                            +    /**
                                            +     * 根据path查找路由
                                            +     * @param path    请求地址
                                            +     * @return        返回查询到的路由
                                            +     */
                                            +    public Route findRoute(String path) {
                                            +        String cleanPath = parsePath(path);
                                            +        List<Route> matchRoutes = new ArrayList<Route>();
                                            +        for (Route route : this.routes) {
                                            +            if (matchesPath(route.getPath(), cleanPath)) {
                                            +                matchRoutes.add(route);
                                            +            }
                                            +        }
                                            +        // 优先匹配原则
                                            +        giveMatch(path, matchRoutes);
                                            +
                                            +        return matchRoutes.size() > 0 ? matchRoutes.get(0) : null;
                                            +    }
                                            +
                                            +    private void giveMatch(final String uri, List<Route> routes) {
                                            +        Collections.sort(routes, new Comparator<Route>() {
                                            +            @Override
                                            +            public int compare(Route o1, Route o2) {
                                            +                if (o2.getPath().equals(uri)) {
                                            +                    return o2.getPath().indexOf(uri);
                                            +                }
                                            +                return -1;
                                            +            }
                                            +        });
                                            +    }
                                            +
                                            +    private boolean matchesPath(String routePath, String pathToMatch) {
                                            +        routePath = routePath.replaceAll(PathUtil.VAR_REGEXP, PathUtil.VAR_REPLACE);
                                            +        return pathToMatch.matches("(?i)" + routePath);
                                            +    }
                                            +
                                            +    private String parsePath(String path) {
                                            +        path = PathUtil.fixPath(path);
                                            +        try {
                                            +            URI uri = new URI(path);
                                            +            return uri.getPath();
                                            +        } catch (URISyntaxException e) {
                                            +            return null;
                                            +        }
                                            +    }
                                            +
                                            +}
                                            +
                                            +

                                            路由匹配器使用了正则去遍历路由列表,匹配合适的路由。当然我不认为这是最好的方法, +因为路由的量很大之后遍历的效率会降低,但这样是可以实现的,如果你有更好的方法可以告诉我 :)

                                            +

                                            在下一章节我们需要对请求处理做设计了~

                                            + + + + +
                                            + +
                                            +
                                            +
                                            + +

                                            results matching ""

                                            +
                                              + +
                                              +
                                              + +

                                              No results matching ""

                                              + +
                                              +
                                              +
                                              + +
                                              +
                                              + +
                                              + + + + + + + + + + + + + + +
                                              + + +
                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/mvc/3.controller.html b/_book/mvc/3.controller.html new file mode 100644 index 0000000..04432d7 --- /dev/null +++ b/_book/mvc/3.controller.html @@ -0,0 +1,1236 @@ + + + + + + + 控制器设计 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                              +
                                              + + + + + + + + +
                                              + +
                                              + +
                                              + + + + + + + + +
                                              +
                                              + +
                                              +
                                              + +
                                              + +

                                              控制器设计

                                              +

                                              一个MVC框架里 C 是核心的一块,也就是控制器,每个请求的接收,都是由控制器去处理的。 +在Mario中我们把控制器放在路由对象的controller字段上,实际上一个请求过来之后最终是落在某个方法去处理的。

                                              +

                                              简单的方法我们可以使用反射实现动态调用方法执行,当然这对性能并不友好,你可以用缓存Method或者更高明的技术去做。 +在这里我们不提及太麻烦的东西,因为初步目标是实现MVC框架,所以给大家提醒一下有些了解即可。

                                              +

                                              控制器的处理部分放在了核心Filter中,代码如下:

                                              +
                                              /**
                                              + * Mario MVC核心处理器
                                              + * @author biezhi
                                              + *
                                              + */
                                              +public class MarioFilter implements Filter {
                                              +
                                              +    private static final Logger LOGGER = Logger.getLogger(MarioFilter.class.getName());
                                              +
                                              +    private RouteMatcher routeMatcher = new RouteMatcher(new ArrayList<Route>());
                                              +
                                              +    private ServletContext servletContext;
                                              +
                                              +    @Override
                                              +    public void init(FilterConfig filterConfig) throws ServletException {
                                              +        Mario mario = Mario.me();
                                              +        if(!mario.isInit()){
                                              +
                                              +            String className = filterConfig.getInitParameter("bootstrap");
                                              +            Bootstrap bootstrap = this.getBootstrap(className);
                                              +            bootstrap.init(mario);
                                              +
                                              +            Routers routers = mario.getRouters();
                                              +            if(null != routers){
                                              +                routeMatcher.setRoutes(routers.getRoutes());
                                              +            }
                                              +            servletContext = filterConfig.getServletContext();
                                              +
                                              +            mario.setInit(true);
                                              +        }
                                              +    }
                                              +
                                              +    private Bootstrap getBootstrap(String className) {
                                              +        if(null != className){
                                              +            try {
                                              +                Class<?> clazz = Class.forName(className);
                                              +                Bootstrap bootstrap = (Bootstrap) clazz.newInstance();
                                              +                return bootstrap;
                                              +            } catch (ClassNotFoundException e) {
                                              +                throw new RuntimeException(e);
                                              +            } catch (InstantiationException e) {
                                              +                e.printStackTrace();
                                              +            } catch (IllegalAccessException e) {
                                              +                e.printStackTrace();
                                              +            }
                                              +        }
                                              +        throw new RuntimeException("init bootstrap class error!");
                                              +    }
                                              +
                                              +    @Override
                                              +    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
                                              +        HttpServletRequest request = (HttpServletRequest) servletRequest;
                                              +        HttpServletResponse response = (HttpServletResponse) servletResponse;
                                              +
                                              +        // 请求的uri
                                              +        String uri = PathUtil.getRelativePath(request);
                                              +
                                              +        LOGGER.info("Request URI:" + uri);
                                              +
                                              +        Route route = routeMatcher.findRoute(uri);
                                              +
                                              +        // 如果找到
                                              +        if (route != null) {
                                              +            // 实际执行方法
                                              +            handle(request, response, route);
                                              +        } else{
                                              +            chain.doFilter(request, response);
                                              +        }
                                              +    }
                                              +
                                              +    private void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Route route){
                                              +
                                              +        // 初始化上下文
                                              +        Request request = new Request(httpServletRequest);
                                              +        Response response = new Response(httpServletResponse);
                                              +        MarioContext.initContext(servletContext, request, response);
                                              +
                                              +        Object controller = route.getController();
                                              +        // 要执行的路由方法
                                              +        Method actionMethod = route.getAction();
                                              +        // 执行route方法
                                              +        executeMethod(controller, actionMethod, request, response);
                                              +    }
                                              +
                                              +    /**
                                              +     * 获取方法内的参数
                                              +     */
                                              +    private Object[] getArgs(Request request, Response response, Class<?>[] params){
                                              +
                                              +        int len = params.length;
                                              +        Object[] args = new Object[len];
                                              +
                                              +        for(int i=0; i<len; i++){
                                              +            Class<?> paramTypeClazz = params[i];
                                              +            if(paramTypeClazz.getName().equals(Request.class.getName())){
                                              +                args[i] = request;
                                              +            }
                                              +            if(paramTypeClazz.getName().equals(Response.class.getName())){
                                              +                args[i] = response;
                                              +            }
                                              +        }
                                              +
                                              +        return args;
                                              +    }
                                              +
                                              +    /**
                                              +     * 执行路由方法
                                              +     */
                                              +    private Object executeMethod(Object object, Method method, Request request, Response response){
                                              +        int len = method.getParameterTypes().length;
                                              +        method.setAccessible(true);
                                              +        if(len > 0){
                                              +            Object[] args = getArgs(request, response, method.getParameterTypes());
                                              +            return ReflectUtil.invokeMehod(object, method, args);
                                              +        } else {
                                              +            return ReflectUtil.invokeMehod(object, method);
                                              +        }
                                              +    }
                                              +
                                              +}
                                              +
                                              +

                                              这里执行的流程是酱紫的:

                                              +
                                                +
                                              1. 接收用户请求
                                              2. +
                                              3. 查找路由
                                              4. +
                                              5. 找到即执行配置的方法
                                              6. +
                                              7. 找不到你看到的应该是404
                                              8. +
                                              +

                                              看到这里也许很多同学会有点疑问,我们在说路由、控制器、匹配器,可是我怎么让它运行起来呢? +您可说到点儿上了,几乎在任何框架中都必须有配置这项,所谓的零配置都是扯淡。不管硬编码还是配置文件方式, +没有配置,框架的易用性和快速开发靠什么完成,又一行一行编写代码吗? 如果你说机器学习,至少现在好像没人用吧。

                                              +

                                              扯淡完毕,下一节来进入全局配置设计 ->

                                              + + + + +
                                              + +
                                              +
                                              +
                                              + +

                                              results matching ""

                                              +
                                                + +
                                                +
                                                + +

                                                No results matching ""

                                                + +
                                                +
                                                +
                                                + +
                                                +
                                                + +
                                                + + + + + + + + + + + + + + +
                                                + + +
                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/mvc/4.config.html b/_book/mvc/4.config.html new file mode 100644 index 0000000..a8d9894 --- /dev/null +++ b/_book/mvc/4.config.html @@ -0,0 +1,1200 @@ + + + + + + + 配置设计 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                +
                                                + + + + + + + + +
                                                + +
                                                + +
                                                + + + + + + + + +
                                                +
                                                + +
                                                +
                                                + +
                                                + +

                                                配置设计

                                                +

                                                Mario中所有的配置都可以在 Mario 全局唯一对象完成,将它设计为单例。

                                                +

                                                要运行起来整个框架,Mario对象是核心,看看里面都需要什么吧!

                                                +
                                                  +
                                                • 添加路由
                                                • +
                                                • 读取资源文件
                                                • +
                                                • 读取配置
                                                • +
                                                • 等等
                                                • +
                                                +

                                                由此我们简单的设计一个Mario全局对象:

                                                +
                                                /**
                                                + * Mario
                                                + * @author biezhi
                                                + *
                                                + */
                                                +public final class Mario {
                                                +
                                                +    /**
                                                +     * 存放所有路由
                                                +     */
                                                +    private Routers routers;
                                                +
                                                +    /**
                                                +     * 配置加载器
                                                +     */
                                                +    private ConfigLoader configLoader;
                                                +
                                                +    /**
                                                +     * 框架是否已经初始化
                                                +     */
                                                +    private boolean init = false;
                                                +
                                                +    private Mario() {
                                                +        routers = new Routers();
                                                +        configLoader = new ConfigLoader();
                                                +    }
                                                +
                                                +    public boolean isInit() {
                                                +        return init;
                                                +    }
                                                +
                                                +    public void setInit(boolean init) {
                                                +        this.init = init;
                                                +    }
                                                +
                                                +    private static class MarioHolder {
                                                +        private static Mario ME = new Mario();
                                                +    }
                                                +
                                                +    public static Mario me(){
                                                +        return MarioHolder.ME;
                                                +    }
                                                +
                                                +    public Mario addConf(String conf){
                                                +        configLoader.load(conf);
                                                +        return this;
                                                +    }
                                                +
                                                +    public String getConf(String name){
                                                +        return configLoader.getConf(name);
                                                +    }
                                                +
                                                +    public Mario addRoutes(Routers routers){
                                                +        this.routers.addRoute(routers.getRoutes());
                                                +        return this;
                                                +    }
                                                +
                                                +    public Routers getRouters() {
                                                +        return routers;
                                                +    }
                                                +
                                                +    /**
                                                +     * 添加路由
                                                +     * @param path            映射的PATH
                                                +     * @param methodName    方法名称
                                                +     * @param controller    控制器对象
                                                +     * @return                返回Mario
                                                +     */
                                                +    public Mario addRoute(String path, String methodName, Object controller){
                                                +        try {
                                                +            Method method = controller.getClass().getMethod(methodName, Request.class, Response.class);
                                                +            this.routers.addRoute(path, method, controller);
                                                +        } catch (NoSuchMethodException e) {
                                                +            e.printStackTrace();
                                                +        } catch (SecurityException e) {
                                                +            e.printStackTrace();
                                                +        }
                                                +        return this;
                                                +    }
                                                +
                                                +}
                                                +
                                                +

                                                这样在系统中永远保持一个Mario实例,我们用它来操作所有配置即可。

                                                +

                                                Boostrapinit方法中使用

                                                +
                                                @Override
                                                +public void init(Mario mario) {
                                                +    Index index = new Index();
                                                +    mario.addRoute("/", "index", index);
                                                +    mario.addRoute("/html", "html", index);
                                                +}
                                                +
                                                +

                                                这样,一个简单的MVC后端已经形成了!接下来我们要将结果展现在JSP文件中,要做视图的渲染设计 LET'S GO!

                                                + + + + +
                                                + +
                                                +
                                                +
                                                + +

                                                results matching ""

                                                +
                                                  + +
                                                  +
                                                  + +

                                                  No results matching ""

                                                  + +
                                                  +
                                                  +
                                                  + +
                                                  +
                                                  + +
                                                  + + + + + + + + + + + + + + +
                                                  + + +
                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/mvc/5.view.html b/_book/mvc/5.view.html new file mode 100644 index 0000000..ae99e62 --- /dev/null +++ b/_book/mvc/5.view.html @@ -0,0 +1,1169 @@ + + + + + + + 视图设计 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                  +
                                                  + + + + + + + + +
                                                  + +
                                                  + +
                                                  + + + + + + + + +
                                                  +
                                                  + +
                                                  +
                                                  + +
                                                  + +

                                                  视图设计

                                                  +

                                                  我们已经完成了MVC中的C层,还有M和V没有做呢。这一小节来对视图进行设计,从后台到前台的渲染是这样的 +后台给定一个视图位置,输出到前端JSP或者其他模板引擎上,做一个非常简单的接口:

                                                  +
                                                  /**
                                                  + * 视图渲染接口
                                                  + * @author biezhi
                                                  + *
                                                  + */
                                                  +public interface Render {
                                                  +
                                                  +    /**
                                                  +     * 渲染到视图
                                                  +     * @param view        视图名称
                                                  +     * @param writer    写入对象
                                                  +     */
                                                  +    public void render(String view, Writer writer);
                                                  +
                                                  +}
                                                  +
                                                  +

                                                  具体的实现我们先写一个JSP的,当你在使用Servlet进行开发的时候已经习惯了这句语法:

                                                  +
                                                  servletRequest.getRequestDispatcher(viewPath).forward(servletRequest, servletResponse);
                                                  +
                                                  +

                                                  那么一个JSP的渲染实现就很简单了

                                                  +
                                                  /**
                                                  + * JSP渲染实现
                                                  + * @author biezhi
                                                  + *
                                                  + */
                                                  +public class JspRender implements Render {
                                                  +
                                                  +    @Override
                                                  +    public void render(String view, Writer writer) {
                                                  +
                                                  +        String viewPath = this.getViewPath(view);
                                                  +
                                                  +        HttpServletRequest servletRequest = MarioContext.me().getRequest().getRaw();
                                                  +        HttpServletResponse servletResponse = MarioContext.me().getResponse().getRaw();
                                                  +        try {
                                                  +            servletRequest.getRequestDispatcher(viewPath).forward(servletRequest, servletResponse);
                                                  +        } catch (ServletException e) {
                                                  +            e.printStackTrace();
                                                  +        } catch (IOException e) {
                                                  +            e.printStackTrace();
                                                  +        }
                                                  +
                                                  +    }
                                                  +
                                                  +    private String getViewPath(String view){
                                                  +        Mario mario = Mario.me();
                                                  +        String viewPrfix = mario.getConf(Const.VIEW_PREFIX_FIELD);
                                                  +        String viewSuffix = mario.getConf(Const.VIEW_SUFFIX_FIELD);
                                                  +
                                                  +        if (null == viewSuffix || viewSuffix.equals("")) {
                                                  +            viewSuffix = Const.VIEW_SUFFIX;
                                                  +        }
                                                  +        if (null == viewPrfix || viewPrfix.equals("")) {
                                                  +            viewPrfix = Const.VIEW_PREFIX;
                                                  +        }
                                                  +        String viewPath = viewPrfix + "/" + view;
                                                  +        if (!view.endsWith(viewSuffix)) {
                                                  +            viewPath += viewSuffix;
                                                  +        }
                                                  +        return viewPath.replaceAll("[/]+", "/");
                                                  +    }
                                                  +
                                                  +}
                                                  +
                                                  +

                                                  配置 JSP 视图的位置和后缀可以在配置文件或者硬编码中进行,当然这看你的习惯, +默认设置了 JSP 在 /WEB-INF/ 下,后缀是 .jsp 你懂的!

                                                  +

                                                  怎么用可以参考 mario-sample 这个项目,因为真的很简单 相信你自己。

                                                  +

                                                  在下一节中我们就要和数据库打交道了,尝试新的旅程吧 :)

                                                  + + + + +
                                                  + +
                                                  +
                                                  +
                                                  + +

                                                  results matching ""

                                                  +
                                                    + +
                                                    +
                                                    + +

                                                    No results matching ""

                                                    + +
                                                    +
                                                    +
                                                    + +
                                                    +
                                                    + +
                                                    + + + + + + + + + + + + + + +
                                                    + + +
                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/mvc/6.dbutil.html b/_book/mvc/6.dbutil.html new file mode 100644 index 0000000..7f82b72 --- /dev/null +++ b/_book/mvc/6.dbutil.html @@ -0,0 +1,1278 @@ + + + + + + + 数据库操作 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                    +
                                                    + + + + + + + + +
                                                    + +
                                                    + +
                                                    + + + + + + + + +
                                                    +
                                                    + +
                                                    +
                                                    + +
                                                    + +

                                                    数据库操作

                                                    +

                                                    这一小节是对数据库操作做一个简单的封装,不涉及复杂的事务操作等。

                                                    +

                                                    我选用了Sql2o作为底层数据库框架作为支持,它的简洁易用性让我刮目相看,后面我们也会写如何实现一个ORM框架。

                                                    +
                                                    /**
                                                    + * 数据库支持
                                                    + * @author biezhi
                                                    + *
                                                    + */
                                                    +public final class MarioDb {
                                                    +
                                                    +    private static Sql2o sql2o = null;
                                                    +
                                                    +    private MarioDb() {
                                                    +    }
                                                    +
                                                    +    /**
                                                    +     * 初始化数据库配置
                                                    +     * @param url
                                                    +     * @param user
                                                    +     * @param pass
                                                    +     */
                                                    +    public static void init(String url, String user, String pass){
                                                    +        sql2o = new Sql2o(url, user, pass);
                                                    +    }
                                                    +
                                                    +    /**
                                                    +     * 初始化数据库配置
                                                    +     * @param dataSource
                                                    +     */
                                                    +    public static void init(DataSource dataSource){
                                                    +        sql2o = new Sql2o(dataSource);
                                                    +    }
                                                    +
                                                    +    /**
                                                    +     * 查询一个对象
                                                    +     * @param sql
                                                    +     * @param clazz
                                                    +     * @return
                                                    +     */
                                                    +    public static <T> T get(String sql, Class<T> clazz){
                                                    +        return get(sql, clazz, null);
                                                    +    }
                                                    +
                                                    +    /**
                                                    +     * 查询一个列表
                                                    +     * @param sql
                                                    +     * @param clazz
                                                    +     * @return
                                                    +     */
                                                    +    public static <T> List<T> getList(String sql, Class<T> clazz){
                                                    +        return getList(sql, clazz, null);
                                                    +    }
                                                    +
                                                    +    /**
                                                    +     * 查询一个对象返回为map类型
                                                    +     * @param sql
                                                    +     * @return
                                                    +     */
                                                    +    public static Map<String, Object> getMap(String sql){
                                                    +        return getMap(sql, null);
                                                    +    }
                                                    +
                                                    +    /**
                                                    +     * 查询一个列表并返回为list<map>类型
                                                    +     * @param sql
                                                    +     * @return
                                                    +     */
                                                    +    public static List<Map<String, Object>> getMapList(String sql){
                                                    +        return getMapList(sql, null);
                                                    +    }
                                                    +
                                                    +    /**
                                                    +     * 插入一条记录
                                                    +     * @param sql
                                                    +     * @param params
                                                    +     * @return
                                                    +     */
                                                    +    public static int insert(String sql, Object ... params){
                                                    +        StringBuffer sqlBuf = new StringBuffer(sql);
                                                    +        sqlBuf.append(" values (");
                                                    +
                                                    +        int start = sql.indexOf("(") + 1;
                                                    +        int end = sql.indexOf(")");
                                                    +        String a = sql.substring(start, end);
                                                    +        String[] fields = a.split(",");
                                                    +
                                                    +        Map<String, Object> map = new HashMap<String, Object>();
                                                    +
                                                    +        int i=0;
                                                    +        for(String name : fields){
                                                    +            sqlBuf.append(":" + name.trim() + " ,");
                                                    +            map.put(name.trim(), params[i]);
                                                    +            i++;
                                                    +        }
                                                    +
                                                    +        String newSql = sqlBuf.substring(0, sqlBuf.length() - 1) + ")";
                                                    +
                                                    +        Connection con = sql2o.open();
                                                    +        Query query = con.createQuery(newSql);
                                                    +
                                                    +        executeQuery(query, map);
                                                    +
                                                    +        int res = query.executeUpdate().getResult();
                                                    +
                                                    +        con.close();
                                                    +
                                                    +        return res;
                                                    +    }
                                                    +    /**
                                                    +     * 更新
                                                    +     * @param sql
                                                    +     * @return
                                                    +     */
                                                    +    public static int update(String sql){
                                                    +        return update(sql, null);
                                                    +    }
                                                    +
                                                    +    /**
                                                    +     * 带参数更新
                                                    +     * @param sql
                                                    +     * @param params
                                                    +     * @return
                                                    +     */
                                                    +    public static int update(String sql, Map<String, Object> params){
                                                    +        Connection con = sql2o.open();
                                                    +        Query query = con.createQuery(sql);
                                                    +        executeQuery(query, params);
                                                    +        int res = query.executeUpdate().getResult();
                                                    +        con.close();
                                                    +        return res;
                                                    +    }
                                                    +
                                                    +    public static <T> T get(String sql, Class<T> clazz, Map<String, Object> params){
                                                    +        Connection con = sql2o.open();
                                                    +        Query query = con.createQuery(sql);
                                                    +        executeQuery(query, params);
                                                    +        T t = query.executeAndFetchFirst(clazz);
                                                    +        con.close();
                                                    +        return t;
                                                    +    }
                                                    +
                                                    +    @SuppressWarnings("unchecked")
                                                    +    public static Map<String, Object> getMap(String sql, Map<String, Object> params){
                                                    +        Connection con = sql2o.open();
                                                    +        Query query = con.createQuery(sql);
                                                    +        executeQuery(query, params);
                                                    +        Map<String, Object> t = (Map<String, Object>) query.executeScalar();
                                                    +        con.close();
                                                    +        return t;
                                                    +    }
                                                    +
                                                    +    public static List<Map<String, Object>> getMapList(String sql, Map<String, Object> params){
                                                    +        Connection con = sql2o.open();
                                                    +        Query query = con.createQuery(sql);
                                                    +        executeQuery(query, params);
                                                    +        List<Map<String, Object>> t = query.executeAndFetchTable().asList();
                                                    +        con.close();
                                                    +        return t;
                                                    +    }
                                                    +
                                                    +    public static <T> List<T> getList(String sql, Class<T> clazz, Map<String, Object> params){
                                                    +        Connection con = sql2o.open();
                                                    +        Query query = con.createQuery(sql);
                                                    +        executeQuery(query, params);
                                                    +        List<T> list = query.executeAndFetch(clazz);
                                                    +        con.close();
                                                    +        return list;
                                                    +    }
                                                    +
                                                    +    private static void executeQuery(Query query, Map<String, Object> params){
                                                    +        if (null != params && params.size() > 0) {
                                                    +            Set<String> keys = params.keySet();
                                                    +            for(String key : keys){
                                                    +                query.addParameter(key, params.get(key));
                                                    +            }
                                                    +        }
                                                    +    }
                                                    +}
                                                    +
                                                    +

                                                    设计MVC框架部分已经完成,下一节是一个增删改查的例子

                                                    + + + + +
                                                    + +
                                                    +
                                                    +
                                                    + +

                                                    results matching ""

                                                    +
                                                      + +
                                                      +
                                                      + +

                                                      No results matching ""

                                                      + +
                                                      +
                                                      +
                                                      + +
                                                      +
                                                      + +
                                                      + + + + + + + + + + + + + + +
                                                      + + +
                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/mvc/7.crud.html b/_book/mvc/7.crud.html new file mode 100644 index 0000000..1502342 --- /dev/null +++ b/_book/mvc/7.crud.html @@ -0,0 +1,1225 @@ + + + + + + + 增删改查 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                      +
                                                      + + + + + + + + +
                                                      + +
                                                      + +
                                                      + + + + + + + + +
                                                      +
                                                      + +
                                                      +
                                                      + +
                                                      + +

                                                      增删改查

                                                      +
                                                      /**
                                                      + * 用户控制器
                                                      + */
                                                      +public class UserController {
                                                      +
                                                      +    /**
                                                      +     * 用户列表
                                                      +     * @param request
                                                      +     * @param response
                                                      +     */
                                                      +    public void users(Request request, Response response){
                                                      +        List<User> users = MarioDb.getList("select * from t_user", User.class);
                                                      +        request.attr("users", users);
                                                      +        response.render("users");
                                                      +    }
                                                      +
                                                      +    /**
                                                      +     * 添加用户界面
                                                      +     * @param request
                                                      +     * @param response
                                                      +     */
                                                      +    public void show_add(Request request, Response response){
                                                      +        response.render("user_add");
                                                      +    }
                                                      +
                                                      +    /**
                                                      +     * 保存方法
                                                      +     * @param request
                                                      +     * @param response
                                                      +     * @throws ParseException
                                                      +     */
                                                      +    public void save(Request request, Response response) throws ParseException{
                                                      +        String name = request.query("name");
                                                      +        Integer age = request.queryAsInt("age");
                                                      +        String date = request.query("birthday");
                                                      +
                                                      +        if(null == name || null == age || null == date){
                                                      +            request.attr("res", "error");
                                                      +            response.render("user_add");
                                                      +            return;
                                                      +        }
                                                      +
                                                      +        Date bir = new SimpleDateFormat("yyyy-MM-dd").parse(date);
                                                      +
                                                      +        int res = MarioDb.insert("insert into t_user(name, age, birthday)", name, age, bir);
                                                      +        if(res > 0){
                                                      +            String ctx = MarioContext.me().getContext().getContextPath();
                                                      +            String location = ctx + "/users";
                                                      +            response.redirect(location.replaceAll("[/]+", "/"));
                                                      +        } else {
                                                      +            request.attr("res", "error");
                                                      +            response.render("user_add");
                                                      +        }
                                                      +    }
                                                      +
                                                      +    /**
                                                      +     * 编辑页面
                                                      +     * @param request
                                                      +     * @param response
                                                      +     */
                                                      +    public void edit(Request request, Response response){
                                                      +        Integer id = request.queryAsInt("id");
                                                      +        if(null != id){
                                                      +            Map<String, Object> map = new HashMap<String, Object>();
                                                      +            map.put("id", id);
                                                      +            User user = MarioDb.get("select * from t_user where id = :id", User.class, map);
                                                      +            request.attr("user", user);
                                                      +            response.render("user_edit");
                                                      +        }
                                                      +    }
                                                      +
                                                      +    /**
                                                      +     * 修改信息
                                                      +     * @param request
                                                      +     * @param response
                                                      +     */
                                                      +    public void update(Request request, Response response){
                                                      +        Integer id = request.queryAsInt("id");
                                                      +        String name = request.query("name");
                                                      +        Integer age = request.queryAsInt("age");
                                                      +
                                                      +        if(null == id || null == name || null == age ){
                                                      +            request.attr("res", "error");
                                                      +            response.render("user_edit");
                                                      +            return;
                                                      +        }
                                                      +
                                                      +        Map<String, Object> map = new HashMap<String, Object>();
                                                      +        map.put("id", id);
                                                      +        map.put("name", name);
                                                      +        map.put("age", age);
                                                      +
                                                      +        int res = MarioDb.update("update t_user set name = :name, age = :age where id = :id", map);
                                                      +        if(res > 0){
                                                      +            String ctx = MarioContext.me().getContext().getContextPath();
                                                      +            String location = ctx + "/users";
                                                      +            response.redirect(location.replaceAll("[/]+", "/"));
                                                      +        } else {
                                                      +            request.attr("res", "error");
                                                      +            response.render("user_edit");
                                                      +        }
                                                      +    }
                                                      +
                                                      +    /**
                                                      +     * 删除
                                                      +     * @param request
                                                      +     * @param response
                                                      +     */
                                                      +    public void delete(Request request, Response response){
                                                      +        Integer id = request.queryAsInt("id");
                                                      +        if(null != id){
                                                      +            Map<String, Object> map = new HashMap<String, Object>();
                                                      +            map.put("id", id);
                                                      +            MarioDb.update("delete from t_user where id = :id", map);
                                                      +        }
                                                      +
                                                      +        String ctx = MarioContext.me().getContext().getContextPath();
                                                      +        String location = ctx + "/users";
                                                      +        response.redirect(location.replaceAll("[/]+", "/"));
                                                      +    }
                                                      +}
                                                      +
                                                      +

                                                      + + + + + +
                                                      + +
                                                      +
                                                      +
                                                      + +

                                                      results matching ""

                                                      +
                                                        + +
                                                        +
                                                        + +

                                                        No results matching ""

                                                        + +
                                                        +
                                                        +
                                                        + +
                                                        +
                                                        + +
                                                        + + + + + + + + + + + + + + +
                                                        + + +
                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/_book/mvc/MVC\346\241\206\346\236\266\345\256\236\347\216\260\347\257\207.html" "b/_book/mvc/MVC\346\241\206\346\236\266\345\256\236\347\216\260\347\257\207.html" new file mode 100644 index 0000000..55189e4 --- /dev/null +++ "b/_book/mvc/MVC\346\241\206\346\236\266\345\256\236\347\216\260\347\257\207.html" @@ -0,0 +1,1093 @@ + + + + + + + MVC框架实现篇 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                        +
                                                        + + + + + + + + +
                                                        + +
                                                        + +
                                                        + + + + + + + + +
                                                        +
                                                        + +
                                                        +
                                                        + +
                                                        + +

                                                        MVC框架实现篇

                                                        + + +
                                                        + +
                                                        +
                                                        +
                                                        + +

                                                        results matching ""

                                                        +
                                                          + +
                                                          +
                                                          + +

                                                          No results matching ""

                                                          + +
                                                          +
                                                          +
                                                          + +
                                                          +
                                                          + +
                                                          + + + + + + + + + + + + + + +
                                                          + + +
                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/mvc/index.html b/_book/mvc/index.html new file mode 100644 index 0000000..b2bd4ce --- /dev/null +++ b/_book/mvc/index.html @@ -0,0 +1,1112 @@ + + + + + + + MVC框架实现篇 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                          +
                                                          + + + + + + + + +
                                                          + +
                                                          + +
                                                          + + + + + + + + +
                                                          +
                                                          + +
                                                          +
                                                          + +
                                                          + +

                                                          如何设计一个JavaWeb MVC框架

                                                          +

                                                          通过使用Java语言实现一个完整的框架设计,这个框架中主要内容有第一小节介绍的Web框架的结构规划,例如采用MVC模式来进行开发,程序的执行流程设计等内容;第二小节介绍框架的第一个功能:路由,如何让访问的URL映射到相应的处理逻辑;第三小节介绍处理逻辑,如何设计一个公共的 调度器,对象继承之后处理函数中如何处理response和request;第四小节至第六小节介绍如何框架的一些辅助功能,例如配置信息,数据库操作等;最后介绍如何基于Web框架实现一个简单的增删改查,包括User的添加、修改、删除、显示列表等操作。

                                                          +

                                                          通过这么一个完整的项目例子,我期望能够让读者了解如何开发Web应用,如何搭建自己的目录结构,如何实现路由,如何实现MVC模式等各方面的开发内容。在框架盛行的今天,MVC也不再是神话。经常听到很多程序员讨论哪个框架好,哪个框架不好, 其实框架只是工具,没有好与不好,只有适合与不适合,适合自己的就是最好的,所以教会大家自己动手写框架,那么不同的需求都可以用自己的思路去实现。

                                                          +

                                                          + +

                                                          欢迎Star我写的一个简洁优雅的MVC框架 Blade :wink:

                                                          +

                                                          目录

                                                          + +

                                                          接下来开始我们的 框架之旅 吧~

                                                          + + +
                                                          + +
                                                          +
                                                          +
                                                          + +

                                                          results matching ""

                                                          +
                                                            + +
                                                            +
                                                            + +

                                                            No results matching ""

                                                            + +
                                                            +
                                                            +
                                                            + +
                                                            +
                                                            + +
                                                            + + + + + + + + + + + + + + +
                                                            + + +
                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/search_index.json b/_book/search_index.json new file mode 100644 index 0000000..0738088 --- /dev/null +++ b/_book/search_index.json @@ -0,0 +1 @@ +{"index":{"version":"0.5.12","fields":[{"name":"title","boost":10},{"name":"keywords","boost":15},{"name":"body","boost":1}],"ref":"url","documentStore":{"store":{"./":["1小时免费vpn","2.x用户指南","3.1",":confused:","apach","bibl","blog:https://biezhi.m","boot参考指南","css压缩","encrypt","foreach","git","googl","hexo搭建博客","http请求报文解剖","ioc容器实现篇","ioc的概念","java","java8","java8简明教程","java8系列","java编程风格指南","jersey","let'","linux","linux安装jdk、tomcat脚本","mail:biezhi.me@gmail.com","mvc框架实现篇","mybatis中文指南","netty4","png图片无损压缩","rest","servlet","shiro","spring","spring中怎么用","ssl.do","vp","vultr","web性能测试工具","|","什么是策略模式","介绍","代理模式剖析","优惠域名","便是,持续更新ing,还有fork项目的同学,貌似没有什么卵用。。。","免费ss","免费vpn/ssh服务","免费虚拟主机","写给java开发的运维笔记","分分钟部署一个hexo环境","原理分析","可以发邮件给我","可用域名","各种配置详解","在线工具","在线给图片加水印","增删改查","如何正确地写出单例模式","如果你喜欢,star","实战","实用工具/api","开发者指南","开始写作吧","开源组件实现","微博一键清理工具","控制器设计","数据库操作","有兴趣分享技术的","服务器/域名/ssl证书","用户指南","电商网站架构案例","目录","秋玉米","程序员眼中的","简明指南","经典文章","联系","规范","视图设计","设计一个ioc","设计模式系列","路由设计","软件架构模式","运维相关","这里记录了一些技术摘要,部分文章来自网络,本项目的目的力求分享精品技术干货,以java为主。","配置设计","随机头像生成","随机密码生成","非主流域名","项目规划"],"开源组件实现.html":["开源组件实现"],"mvc/MVC框架实现篇.html":["mvc框架实现篇"],"mvc/":[":wink:","blade","mvc框架","mvc框架实现篇","sampl","其实框架只是工具,没有好与不好,只有适合与不适合,适合自己的就是最好的,所以教会大家自己动手写框架,那么不同的需求都可以用自己的思路去实现。","吧~","增删改查","如何设计一个javaweb","接下来开始我们的","控制器设计","数据库操作","框架之旅","欢迎star我写的一个简洁优雅的mvc框架","目录","示例代码:https://github.com/junicorn/mario","视图设计","调度器,对象继承之后处理函数中如何处理response和request;第四小节至第六小节介绍如何框架的一些辅助功能,例如配置信息,数据库操作等;最后介绍如何基于web框架实现一个简单的增删改查,包括user的添加、修改、删除、显示列表等操作。","路由设计","通过使用java语言实现一个完整的框架设计,这个框架中主要内容有第一小节介绍的web框架的结构规划,例如采用mvc模式来进行开发,程序的执行流程设计等内容;第二小节介绍框架的第一个功能:路由,如何让访问的url映射到相应的处理逻辑;第三小节介绍处理逻辑,如何设计一个公共的","通过这么一个完整的项目例子,我期望能够让读者了解如何开发web应用,如何搭建自己的目录结构,如何实现路由,如何实现mvc模式等各方面的开发内容。在框架盛行的今天,mvc也不再是神话。经常听到很多程序员讨论哪个框架好,哪个框架不好,","配置设计","项目源码:https://github.com/junicorn/mario","项目规划"],"mvc/1.plan.html":["(controller)","(model)","(view)","0.0.1","1.6","3.0.1","3.1","3.1.0","4.0.0","8","api","archetype:cr","bootstrap","com.junicorn","com.junicorn.mario","compil","dartifactid=mario","dgroupid=com.junicorn","dpackagename=com.junicorn.mario","eclipse创建","https://github.com/junicorn/mario","jar","java","javax.servlet","link","m(模型)v(视图)c(控制器)","mario","maven","mvn","ok,项目创建好了,这个将是我们的框架。","org.apache.maven.plugin","plugin","pom.xml","provid","rss","snapshot","utf","web程序是基于","下一节:","中分离了出来,所以它允许你的网页中只包含很少的脚本。","代表数据结构。通常来说,模型类将包含取出、插入、更新数据库资料等这些功能。","作为初始化启动,实现它并遵循filter参数约定即可。","使用一个接口","假设我们的web框架名称是","做任何事情都需要做好规划,那么我们在开发博客系统之前,同样需要做好项目的规划,如何设置目录结构,如何理解整个项目的流程图,当我们理解了应用的执行过程,那么接下来的设计编码就会变得相对容易了","创建一个maven项目","创建好的基本结构是这样的","初始化一下","包名是","命令行创建","建立路由、数据库、视图相关的包和类,下面是结构:","控制器","是基于servlet实现的mvc,用一个全局的filter来做核心控制器,使用sql2o框架作为数据库基础访问。","是展示给用户的信息的结构及样式。一个视图通常是一个网页,但是在java中,一个视图也可以是一个页面片段,如页头、页尾。它还可以是一个","是模型、视图以及其他任何处理http请求所必须的资源之间的中介,并生成网页。","框架流程","模型","目录","约定一下框架基础信息","视图","设计思路","设计的。mvc是一种将应用程序的逻辑层和表现层进行分离的结构方式。在实践中,由于表现层从","路由设计","页面,或其它类型的“页面”,jsp已经很好的实现了view层中的部分功能。","项目规划"],"mvc/2.route.html":["\"]\");","(matchespath(route.getpath(),","(o2.getpath().equals(uri))","(rout","(urisyntaxexcept","*","*/","+","/**","//","/resources/:resource/actions/:act","0","1;",":",":)","=",">","?","@author","@overrid","@param","@return","action)","action,","action;","action,处于","addrout","addroute(list","addroute(rout","addroute(str","arraylist();","biezhi","boolean","catch","class","cleanpath","cleanpath))","collections.sort(routes,","comparator()","compare(rout","control","controller)","controller){","controller;","e)","final","findroute(str","getaction()","getcontroller()","getpath()","getroutes()","givematch(fin","givematch(path,","http://bladejava.com","http://bladejava.com/docs/modules/rout","int","link","list","logger","logger.getlogger(routers.class.getname());","logger.info(\"add","mario使用一个filter接收所有请求,因为从filter过来的请求有无数,如何知道哪一个请求对应哪一个路由呢?","matchespath(str","matchrout","matchroutes);","matchroutes.add(route);","matchroutes.get(0)","matchroutes.size()","method","new","null;","o1,","o2)","o2.getpath().indexof(uri);","object","parsepath(path);","parsepath(str","path","path)","path,","path;","pathtomatch)","pathtomatch.matches(\"(?i)\"","pathutil.fixpath(path);","pathutil.var_replace);","privat","public","removeroute(rout","return","rout","route()","route();","route){","route.setaction(action);","route.setcontroller(controller);","route.setpath(path);","routematch","routematcher(list","routepath","routepath);","routepath,","routepath.replaceall(pathutil.var_regexp,","router","routers()","routes)","routes){","routes.add(route);","routes.addall(routes);","routes.remove(route);","routes;","route:[\"","setaction(method","setcontroller(object","setpath(str","setroutes(list","static","string","this.act","this.control","this.path","this.rout","this.routes)","tri","uri","uri(path);","uri,","uri.getpath();","url","void","web","{","}","});","上一节:","上,执行靠","下一节:","中。","优先匹配原则","十分优雅,易于人们辨识记忆。","因为路由的量很大之后遍历的效率会降低,但这样是可以实现的,如果你有更好的方法可以告诉我","在mario中我们设计一个路由的对象如下:","在下一章节我们需要对请求处理做设计了~","应用的","所有的请求在程序中是一个路由,匹配在","执行路由的方法","控制器设计","方法是给外部调用的。","有了路由匹配器还不够,这么多的路由我们如何管理呢?再来一个路由管理器吧,下面就创建路由匹配器和管理器2个类:","根据path查找路由","现代","用于封装一个请求的最小单元,","目录","类,","请求地址","路由","路由path","路由匹配器使用了正则去遍历路由列表,匹配合适的路由。当然我不认为这是最好的方法,","路由匹配器,用于匹配路由","路由所在的控制器","路由的表现形式如下:","路由管理器,存放所有路由的","路由设计","返回查询到的路由","这时候需要设计一个路由匹配器去查找路由处理我们配置的请求,","这里的代码很简单,这个管理器里用list存储所有路由,公有的","那么我们在java语言中将他定义一个","项目规划"],"mvc/3.controller.html":["!=","(bootstrap)","(classnotfoundexcept","(httpservletrequest)","(httpservletresponse)","(illegalaccessexcept","(instantiationexcept","(rout","*","*/","+","/**","//","0){","=",">","@author","@overrid","actionmethod","actionmethod,","arg","args);","args;","args[i]","arraylist());","biezhi","bootstrap","bootstrap.init(mario);","bootstrap;","c","catch","chain)","chain.dofilter(request,","class","class.forname(classname);","class[]","classnam","classname)","classname){","clazz","clazz.newinstance();","control","dofilter(servletrequest","e)","e.printstacktrace();","else{","error!\");","executemethod(controller,","executemethod(object","filter","filterchain","filterconfig)","filterconfig.getinitparameter(\"bootstrap\");","filterconfig.getservletcontext();","final","for(int","getargs(request","getargs(request,","getbootstrap(str","handle(httpservletrequest","handle(request,","httpservletrequest","httpservletrequest,","httpservletrespons","httpservletresponse,","i=0;","if(!mario.isinit()){","if(len","if(nul","if(paramtypeclazz.getname().equals(request.class.getname())){","if(paramtypeclazz.getname().equals(response.class.getname())){","implement","init(filterconfig","int","ioexception,","len","link","logger","logger.getlogger(mariofilter.class.getname());","logger.info(\"request","mario","mario.getrouters();","mario.me();","mario.setinit(true);","mariocontext.initcontext(servletcontext,","mariofilt","method","method);","method,","method.getparametertypes());","method.getparametertypes().length;","method.setaccessible(true);","mvc核心处理器","new","null)","object","object,","object[]","object[len];","params){","params.length;","params[i];","paramtypeclazz","pathutil.getrelativepath(request);","privat","public","reflectutil.invokemehod(object,","request","request(httpservletrequest);","request,","request;","respons","response(httpservletresponse);","response);","response){","response,","response;","return","rout","route);","route){","route.getaction();","route.getcontroller();","routematch","routematcher(new","routematcher.findroute(uri);","routematcher.setroutes(routers.getroutes());","router","routers){","runtimeexception(\"init","runtimeexception(e);","servletcontext","servletcontext;","servletexcept","servletrequest,","servletrequest;","servletrespons","servletresponse,","servletresponse;","static","string","this.getbootstrap(classname);","throw","tri","uri","uri);","uri:\"","void","{","}","一个mvc框架里","上一节:","下一节:","初始化上下文","在mario中我们把控制器放在路由对象的controller字段上,实际上一个请求过来之后最终是落在某个方法去处理的。","在这里我们不提及太麻烦的东西,因为初步目标是实现mvc框架,所以给大家提醒一下有些了解即可。","如果你说机器学习,至少现在好像没人用吧。","如果找到","实际执行方法","您可说到点儿上了,几乎在任何框架中都必须有配置这项,所谓的零配置都是扯淡。不管硬编码还是配置文件方式,","执行route方法","执行路由方法","扯淡完毕,下一节来进入全局配置设计","找不到你看到的应该是404","找到即执行配置的方法","接收用户请求","控制器的处理部分放在了核心filter中,代码如下:","控制器设计","是核心的一块,也就是控制器,每个请求的接收,都是由控制器去处理的。","查找路由","没有配置,框架的易用性和快速开发靠什么完成,又一行一行编写代码吗?","目录","看到这里也许很多同学会有点疑问,我们在说路由、控制器、匹配器,可是我怎么让它运行起来呢?","简单的方法我们可以使用反射实现动态调用方法执行,当然这对性能并不友好,你可以用缓存method或者更高明的技术去做。","获取方法内的参数","要执行的路由方法","请求的uri","路由设计","这里执行的流程是酱紫的:","配置设计"],"mvc/4.config.html":["\"html\",","\"index\",","(nosuchmethodexcept","(securityexcept","*","*/","/**","=","@author","@overrid","@param","@return","addconf(str","addroute(str","addroutes(rout","biezhi","boolean","catch","class","conf){","configload","configloader();","configloader.getconf(name);","configloader.load(conf);","configloader;","control","controller);","controller){","controller.getclass().getmethod(methodname,","e)","e.printstacktrace();","false;","final","getconf(str","getrouters()","go!","index","index();","index);","init","init(mario","init)","init;","isinit()","let'","link","mario","mario()","mario();","mario)","mario.addroute(\"/\",","mario.addroute(\"/html\",","mariohold","marioholder.me;","mario中所有的配置都可以在","me(){","method","method,","methodnam","methodname,","name){","new","object","path","path,","privat","public","request.class,","response.class);","return","router","routers();","routers){","routers;","setinit(boolean","static","string","this.init","this.routers.addroute(path,","this.routers.addroute(routers.getroutes());","this;","tri","void","{","}","上一节:","下一节:","全局唯一对象完成,将它设计为单例。","在boostrap的init方法中使用","存放所有路由","控制器对象","控制器设计","方法名称","映射的path","框架是否已经初始化","添加路由","由此我们简单的设计一个mario全局对象:","目录","等等","要运行起来整个框架,mario对象是核心,看看里面都需要什么吧!","视图设计","读取资源文件","读取配置","返回mario","这样在系统中永远保持一个mario实例,我们用它来操作所有配置即可。","这样,一个简单的mvc后端已经形成了!接下来我们要将结果展现在jsp文件中,要做视图的渲染设计","配置加载器","配置设计"],"mvc/5.view.html":["\"/\"","\"/\");","(!view.endswith(viewsuffix))","(ioexcept","(null","(servletexcept","*","*/","+","+=",".jsp","/**","/web",":)","=","==","@author","@overrid","@param","biezhi","catch","class","const.view_prefix;","const.view_suffix;","e)","e.printstacktrace();","getviewpath(str","httpservletrequest","httpservletrespons","implement","inf/","interfac","jsp","jsprender","jsp渲染实现","link","mario","mario.getconf(const.view_prefix_field);","mario.getconf(const.view_suffix_field);","mario.me();","mariocontext.me().getrequest().getraw();","mariocontext.me().getresponse().getraw();","privat","public","render","render(str","return","sampl","servletrequest","servletrequest.getrequestdispatcher(viewpath).forward(servletrequest,","servletrespons","servletresponse);","string","this.getviewpath(view);","tri","view","view){","view,","view;","viewpath","viewpath.replaceall(\"[/]+\",","viewprfix","viewprfix.equals(\"\"))","viewsuffix","viewsuffix.equals(\"\"))","viewsuffix;","void","writer","writer)","writer);","{","||","}","上一节:","下一节:","下,后缀是","你懂的!","具体的实现我们先写一个jsp的,当你在使用servlet进行开发的时候已经习惯了这句语法:","写入对象","后台给定一个视图位置,输出到前端jsp或者其他模板引擎上,做一个非常简单的接口:","在","在下一节中我们就要和数据库打交道了,尝试新的旅程吧","怎么用可以参考","我们已经完成了mvc中的c层,还有m和v没有做呢。这一小节来对视图进行设计,从后台到前台的渲染是这样的","数据库操作","渲染到视图","目录","相信你自己。","视图名称","视图渲染接口","视图的位置和后缀可以在配置文件或者硬编码中进行,当然这看你的习惯,","视图设计","这个项目,因为真的很简单","那么一个jsp的渲染实现就很简单了","配置","配置设计","默认设置了"],"mvc/6.dbutil.html":["!=","\"","\")\";","&&","(\");","(map)","(null","*","*/","+",",\");","...","/**","0)","1)","1;",":","=",">","@author","@param","@return","@suppresswarnings(\"unchecked\")","a.split(\",\");","biezhi","class","clazz","clazz){","clazz,","con","con.close();","con.createquery(newsql);","con.createquery(sql);","connect","datasourc","datasource){","end","end);","executequery(queri","executequery(query,","field","fields){","final","for(str","get(sql,","get(str","getlist(sql,","getlist(str","getmap(sql,","getmap(str","getmaplist(sql,","getmaplist(str","hashmap();","i++;","i=0;","init(datasourc","init(str","insert(str","int","key","keys){","link","list","list;","list>","map","map);","map.put(name.trim(),","mariodb","mariodb()","name","name.trim()","new","newsql","null);","null;","object","param","params);","params){","params.get(key));","params.keyset();","params.size()","params[i]);","pass","pass);","pass){","privat","public","queri","query,","query.addparameter(key,","query.executeandfetch(clazz);","query.executeandfetchfirst(clazz);","query.executeandfetchtable().aslist();","query.executescalar();","query.executeupdate().getresult();","re","res;","return","set","sql","sql){","sql,","sql.indexof(\"(\")","sql.indexof(\")\");","sql.substring(start,","sql2o","sql2o(datasource);","sql2o(url,","sql2o.open();","sqlbuf","sqlbuf.append(\"","sqlbuf.append(\":\"","sqlbuf.length()","sqlbuf.substring(0,","start","static","string","string[]","stringbuff","stringbuffer(sql);","t","t;","update(sql,","update(str","url","url,","user","user,","valu","void","{","}","上一节:","下一节:","初始化数据库配置","增删改查","带参数更新","我选用了sql2o作为底层数据库框架作为支持,它的简洁易用性让我刮目相看,后面我们也会写如何实现一个orm框架。","插入一条记录","数据库操作","数据库支持","更新","查询一个列表","查询一个列表并返回为list类型","查询一个对象","查询一个对象返回为map类型","目录","视图设计","设计mvc框架部分已经完成,下一节是一个增删改查的例子","这一小节是对数据库操作做一个简单的封装,不涉及复杂的事务操作等。"],"mvc/7.crud.html":["!=","\"/\"));","\"/users\";","\"error\");","){","*","*/","+","/**","0){",":age",":id\",",":name,","=","==",">","@param","@throw","ag","age);","age,","bir","bir);","birthday)\",","blade框架","class","ctx","date","date){","dd\").parse(date);","delete(request","edit(request","hashmap();","id","id);","id){","if(nul","if(r","int","integ","link","list","locat","map","map);","map.put(\"age\",","map.put(\"id\",","map.put(\"name\",","mariocontext.me().getcontext().getcontextpath();","mariodb.get(\"select","mariodb.getlist(\"select","mariodb.insert(\"insert","mariodb.update(\"delet","mariodb.update(\"upd","mm","name","name);","name,","new","null","parseexcept","parseexception{","public","re","request","request,","request.attr(\"res\",","request.attr(\"user\",","request.attr(\"users\",","request.query(\"birthday\");","request.query(\"name\");","request.queryasint(\"age\");","request.queryasint(\"id\");","respons","response)","response){","response.redirect(location.replaceall(\"[/]+\",","response.render(\"user_add\");","response.render(\"user_edit\");","response.render(\"users\");","return;","save(request","set","show_add(request","simpledateformat(\"yyyi","string","t_user","t_user\",","t_user(name,","throw","update(request","user","user);","user.class);","user.class,","usercontrol","users(request","users);","void","{","||","}","上一节:","保存方法","修改信息","删除","增删改查","数据库操作","添加用户界面","演示程序代码","用户列表","用户控制器","目录","编辑页面"],"ioc/IOC容器实现篇.html":["ioc容器实现篇"],"ioc/1.concept.html":["//","=","boy","boy();","boy){","boy.kiss();","boyfactory.createboy();","class","control),意为控制反转,不是什么技术,而是一种设计思想。ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。","di—depend","fowler又给出了一个新的名字:“依赖注入”,相对ioc","girl","injection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。","ioc","ioc(invers","ioc和di","ioc和di由什么关系呢?其实它们是同一个概念的不同角度描述,由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物martin","ioc很好的体现了面向对象设计法则之一——","ioc的概念","ioc能做什么","ioc这个核心概念,我相信每一个学习spring的人都会有自己的理解。这种概念上的理解没有绝对的标准答案,仁者见仁智者见智。","kiss","kiss(){","kiss(boy","link","new","public","se程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而ioc是有专门一个容器来创建这些对象,即由ioc容器来控制对","spring中怎么用","void","well,这是对girl最好的方法,只要想办法贿赂了girl的父母,并把boy交给他。那么我们就可以轻松的和girl来kiss了。看来几千年传统的父母之命还真是有用哦。至少boy和girl不用自己瞎忙乎了。","{","}","下一节:","下面举个例子说明说明是ioc:","不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了ioc容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是","为什么需要依赖:应用程序需要ioc容器来提供对象需要的外部资源;","为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。","亲友介绍","亲友介绍,固然是好。如果不满意,尽管另外换一个好了。但是,亲友boyfactory经常是以singleton的形式出现,不然就是,存在于globals,无处不在,无处不能。实在是太繁琐了一点,不够灵活。我为什么一定要这个亲友掺和进来呢?为什么一定要付给她介绍费呢?万一最好的朋友爱上了我的男朋友呢?","亲友介绍:由中间人负责提供boy来见面","什么是ioc?","假设我们要设计一个girl和一个boy类,其中girl有kiss方法,即girl想要kiss一个boy。那么,我们的问题是,girl如何能够认识这个boy?","其实ioc对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在ioc/di思想中,应用程序就变成被动的了,被动的等待ioc容器来创建并注入它所需要的资源了。","在我们中国,常见的mm与gg的认识方式有以下几种:","好莱坞法则:“别找我们,我们找你”;即由ioc容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。","如何理解好ioc呢?理解好ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:","容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。","对于spring","松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。","注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。","然而从开始就创建的boy缺点就是无法在更换。并且要负责boy的整个生命周期。如果我们的girl想要换一个怎么办?(笔者严重不支持girl经常更换boy)","父母包办","父母包办:一切交给父母,自己不用费吹灰之力,只需要等着kiss就好了。","理解di的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”,那我们来深入分析一下:","理解了ioc和di的概念后,一切都将变得简单明了,剩下的工作只是在框架中堆积木而已,下一节来看看spring是怎么用的","目录","而言,“依赖注入”明确描述了“被注入对象依赖ioc容器配置依赖对象”。","谁依赖于谁:当然是应用程序依赖于ioc容器;","谁控制谁,控制什么:传统java","谁注入谁:很明显是ioc容器注入应用程序某个对象,应用程序依赖的对象;","象的创建;谁控制谁?当然是ioc","这就是ioc,将对象的创建和获取提取到外部。由外部容器提供需要的组件。","那么哪一种才是最好呢?","青梅竹马","青梅竹马:girl从小就知道自己的boy。"],"ioc/2.spring.html":["\"买了\"","\"在gank!!\");","\"毛钱的特效,装逼成功!\");","\"没钱还想装逼,真是匪夷所思\");","(lol)","+","0){",";","=",">","@autowir","@service(\"duangservice\")","applicationcontext","applicationcontext.xml","args)","buy(str","buyduang(str","class","context","context.getbean(\"lol\");","duangservic","duangservice.buy(name,","else{","filesystemxmlapplicationcontext(\"applicationcontext.xml\");","gank(){","getname()","if(money","int","ioc的概念","link","lol","lol()","lol.gank();","main(string[]","money","money)","money);","money){","name)","name,","name;","new","privat","public","return","setname(str","spring中怎么用","spring更高级的用法,在3.0版本之后有了基于annotation的注入实现,为毛每次都要配置","static","string","system.out.println(nam","system.out.println(this.nam","this.nam","void","xml","{","}","一起看看spring如何让它生效呢,在","上一节:","上面的代码运行结果自然是","下一节:","中配置启用注解方式","剑圣在gank!!。","好了,深入的不说了,我们不是学spring的,只是知道一下ioc在spring中高大上的形象,接下来步入正轨,开始设计一个ioc容器","对象中,运行代码的结果(这里是例子,代码不能运行的)就是:","已经注入到","德玛买了5毛钱的特效,装逼成功!","我们在spring中是这样获取对象的:","此时","目录","看到都蛋疼。。","类是这样的:","设计一个ioc","这只是一个简单的例子,剑圣打野的时候想要买5毛钱的三杀特效,嗯。。虽然不符合逻辑","这样就能使用注解驱动依赖注入了,下面是一个使用场景","配置文件中是酱紫的:","首先还是要在"],"ioc/3.myioc.html":["!=","!classname.equals(\"\")){","\"","\"小鱼人\");","\"爆裂魔杖\");","\"购买了\"","&&","(field","(hero)cons.newinstance();","(illegalaccessexcept","(illegalargumentexcept","(it.hasnext())","(map.entry)","(null","(securityexcept","(t)","*","*/","+","/**","//","//1.","//2.","//3.","//iocclasstest();","//iocnametest();","4.",":","=","==","@52x2xa","@author","@overrid","@param","@return","@suppresswarnings(\"unchecked\")","access","args)","autowir","autowired)","autowired.name();","autowiredfield","autowiredfield)","autowiredfield);","basetest();","basetest(){","bean","bean)","bean);","bean.getclass().getname();","bean;","beankey","beankeys.get(name);","beankeys.keyset();","beankeys.put(name,","beankeys.remove(classname);","beankeys.remove(name);","beankeys;","beans.entryset().iterator();","beans.get(classname);","beans.get(name);","beans.put(classname,","beans.put(name,","beans.remove(classname);","beans;","biezhi","boolean","catch","class","class.class){","classload","classnam","classname);","clazz","clazz)","clazz);","clazz){","clazz.getdeclaredconstructor((class[])null);","clazz.getmethod(\"setname\",","clazz.getmethod(\"setoutfit\",","clazz.getname();","com.xxx.person","con","concurrenthashmap();","constructor","contain","container.getbean(lol.class);","container.getbean(lol2.class);","container.getbean(lol3.class);","container.initwired();","container.registerbean(\"face\",","container.registerbean(lol.class);","container.registerbean(lol2.class);","container.registerbean(lol3.class);","e)","e.printstacktrace();","entri","entry.getvalue();","except","faceservice2());","field","field.getannotation(autowired.class);","field.gettype().getcanonicalname());","field.isaccessible();","field.set(object,","field.setaccessible(accessible);","field.setaccessible(true);","field[]","fields)","getbean(class","getbeanbyname(str","getbeannames()","getbeannames();","getname()","getoutfit()","hero","hero()","hero()。在③处,我们又通过hero的反射类对象的getmethod(str","hero.say();","if(!name.equals(\"\")){","if(autowired.value()","if(nul","implement","initwired()","initwired();","injection(object","injection(object);","interfac","iocclasstest(){","iocnametest(){","ioctest","ioc容器","it.next();","iterator>","java语言允许通过程序化的方式间接对class进行操作,class文件由类装载器装载后,在jvm中将形成一份描述class结构的元信息对象,通过该元信息对象可以获知class的结构信息:如构造函数、属性和方法等。java允许用户借由这个class相关的元信息对象间接调用class对象的功能,这就为使用程序化方式操作class对象开辟了途径。","link","load","loader","loader.loadclass(\"com.biezhi.ioc.hero\");","lol","lol.work();","lol2","lol3","lol英雄","main(string[]","map","map.entri","method","methodname,class","name","name)","name);","name,","name;","new","null;","obj","obj,object","object","object)","object){","object.getclass().getdeclaredfields();","object;","outfit)","outfit);","outfit;","paramclass)获取属性的setter方法对象,第一个参数是目标class的方法名;第二个参数是方法入参的对象类型。获取方法反射对象后,即可通过invoke(object","param)方法调用目标类的方法,该方法的第一个参数是操作的目标类对象实例;第二个参数是目标方法的入参。","privat","public","recursiveassembly(autowired.value());","recursiveassembly(class","recursiveassembly(field.gettype());","reflectutil.newinstance(clazz);","registerbean(class","registerbean(object","registerbean(str","remove(class","removebyname(str","return","runtimeexception(\"un","samplecontain","samplecontainer()","samplecontainer();","say(){","set","setbrand","setbrand.invoke(hero,","setcolor","setcolor.invoke(hero,","setname(str","setoutfit(str","spring中怎么用","static","string","string.class);","system.out.println(nam","t","test","this.bean","this.beankey","this.getbean(autowired.value());","this.nam","this.outfit","this.registerbean(clazz);","thread.currentthread().getcontextclassloader();","throw","tri","void","{","}","上一节:","下一节:原理分析","下面是一个测试:","中,用","代码出处","保存所有bean对象,格式为","初始化注入","初始化装配","删除一个bean","判断是否使用了class类型bean(是:根据class查找bean,如果查找不到则创建一个无参构造函数的bean)","判断是否使用了自定义命名的对象(是:根据name查找bean)","剑圣买了5毛钱特效,装逼成功!","在test中,使用了几个重要的反射类,分别是classloader、class、constructor和method,通过这些反射类就可以间接调用目标class的各项功能了。在①处,我们获取当前线程的classloader,然后通过指定的全限定类\"com.biezhi.ioc.hero\"装载hero类对应的反射实例。在②处,我们通过hero的反射类对象获取hero的构造函数对象cons,通过构造函数对象的newinstrance()方法实例化hero对象,其效果等同于new","在装配的时候步骤如下:","存储bean和name的关系","容器简单实现","小鱼人购买了爆裂魔杖","我们将从一个简单例子开始探访java反射机制的征程,下面的hero类拥有一个构造函数、五个方法以及两个属性,如代码清单所示:","我们的ioc容器要可以存储对象,还要有注解注入的功能即可。","我们要自己设计一个ioc,那么目标是什么呢?","所有字段","指定装配的类","根据class获取bean","根据名称删除一个bean","根据名称获取bean","注入对象","注册一个bean到容器中","注册一个class到容器中","注册一个带名称的bean到容器中","测试代码:","目录","第三步是通过反射方法操控目标类的元信息,如果我们将这些信息以一个配置文件的方式提供,就可以使用java语言的反射功能编写一段通用的代码对类似于hero的类进行实例化及功能调用操作了。","简单的例子说完了,我们开始设计一个自己的ioc容器,做出这个东东后再来看那些复杂的原理。","维护名称和对象的关系。","英雄名称","获取类的默认构造器对象并通过它实例化hero","装备名称","要注入的字段","设计一个ioc","输出了:","输出结果:","运行方法","返回所有bean对象名称","这个map中,将所有的对象存储在","这说明我们完全可以通过编程方式调用class的各项功能,这和直接通过构造函数和方法调用类功能的效果是一致的,只不过前者是间接调用,后者是直接调用罢了。","这里将所有bean的名称存储在","通过反射方法设置属性","通过类装载器获取hero类对象","那么容器里应该有什么呢,我想它至少要有存储和移除一个对象的能力,其次可以含括更多的获取和注册对象的方法。","那么我写一个简单的实现代码:","需要注入的字段","首先设计接口,一个ioc容器中最核心的当属容器接口,来一个container。"],"ioc/4.principle.html":["\"德玛西亚之力\");","\"神盾\");","\"购买了\"","(object...","(privatehero)","*","*/","+",",boolean","/**","//","//①根装载器在java中访问不到,所以返回nul","10③处演示了这个反射类的使用方法。在jdk","2)class[]","3)class[]","4)annotation[][]","5.0中的新方法;","5.0中还为注解提供了annotatedelement反射类。总之,java的反射体系保证了可以通过程序化的方式访问目标类中所有的元素,对于private或protected的成员变量和方法,只要jvm的安全机制允许,也可以通过反射进行调用,请看下面的例子:","5.0中,该方法的形式调整为invoke(object","=","[1.]装载:查找和导入class文件;","[2.1]校验:检查载入class文件数据的正确性;","[2.2]准备:给类的静态变量分配存储空间;","[2.3]解析:将符号引用转成直接引用;","[2.]链接:执行校验、准备和解析步骤,其中解析步骤是可以选择的:","[3.]初始化:对类的静态变量、静态代码块执行初始化工作。","access)方法取消java语言检查,否则将抛出illegalaccessexception。","args)","args)。此外,method还有很多用于获取类方法更多信息的方法:1)class","args),obj表示操作的目标对象;args为方法入参,代码清单3","b,","beans.car。该方法有一个重载方法loadclass(str","boolean","byte[]","class","class...","classload","classloadertest","classloader重要方法","class反射对象描述类语义结构,可以从class对象中获取构造函数、成员变量、方法类等类元素的反射对象,并以编程的方式通过这些反射对象对目标类对象进行操作。这些反射对象类在java.reflect包中定义,下面是最主要的三个反射类:","clazz","clazz.getdeclaredfield(\"name\");","clazz.getdeclaredfield(\"outfit\");","clazz.newinstance();","constructor:类的构造函数反射类,通过class#getconstructors()方法可以获得类的所有构造函数反射对象数组。在jdk5.0中,还可以通过getconstructor(class...","current","defineclass(str","except","field","field:类的成员变量的反射类,通过class#getdeclaredfields()方法可以获取类的成员变量反射对象数组,通过class#getdeclaredfield(str","findloadedclass(str","findsystemclass(str","getexceptiontypes():获取方法的异常类型数组;","getparameterannotations():获取方法的注解信息,jdk","getparametertypes():获取方法的入参类型数组;","getparent()","getparent());","getreturntype():获取方法的返回值类型;","grandpar","hero","hero.say();","initargs)。","initargs),通过该方法可以创建一个对象类的实例,相当于new关键字。在jdk5.0中该方法演化为更为灵活的形式:newinst","int","java反射机制","jvm装载类时使用“全盘负责委托机制”,“全盘负责”是指当一个classloader装载一个类的时,除非显式地使用另一个classloader,该类所依赖及引用的类也由这个classloader载入;“委托机制”是指先委托父装载器寻找目标类,只有在找不到的情况下才从自己的类路径中查找并装载目标类。这一点是从安全角度考虑的,试想如果有人编写了一个恶意的基础类(如java.lang.string)并装载到jvm中将会引起多么可怕的后果。但是由于有了“全盘负责委托机制”,java.lang.string永远是由根装载器来装载的,这样就避免了上述事件的发生。","len)","link","loadclass(str","loader","loader.loadclass(\"com.biezhi.ioc.privatehero\");","loader:\"+loader);","loader:\"+loader.getparent());","loader:\"+loader.getparent().","loader:nul","loader:sun.misc.launcher$appclassloader@131f71a","loader:sun.misc.launcher$extclassloader@15601ea","lol英雄","main(string[]","method:类方法的反射类,通过class#getdeclaredmethods()方法可以获取类的所有方法反射类对象数组method[]。在jdk5.0中可以通过getdeclaredmethod(str","name","name)","name)则可获取某个特定名称的成员变量反射对象。field类最主要的方法是set(object","name,","name.set(hero,","name.setaccessible(true);","name;","name参数指定类装载器需要装载类的名字,必须使用全限定类名,如com.baobaotao.","obj,","object","object...","object[]","off,","outfit","outfit);","outfit.set(hero,","outfit.setaccessible(true);","outfit;","parametertypes)获取拥有特定入参的构造函数反射对象。constructor的一个主要方法是newinstance(object[]","parametertypes)获取特定签名的方法,name为方法名;class...为方法入参类型列表。method最主要的方法是invoke(object","parent","privat","privatehero","privatehero()","public","resolve),resolve参数告诉类装载器是否需要解析该类。在初始化类之前,应考虑进行类解析的工作,但并不是所有的类都需要解析,如果jvm只需要知道该类是否存在或找出该类的超类,那么就不需要进行解析。","say(){","static","string","system.out.println(\"curr","system.out.println(\"grandpar","system.out.println(\"par","system.out.println(nam","test2","thread.currentthread().getcontextclassloader();","throw","value)、setint(object","value)等。","value),obj表示操作的目标对象,通过value为目标对象的成员变量设置值。如果成员变量为基础类型,用户可以使用field类中提供的带类型名的值设置方法,如setboolean(object","void","{","}","上一节:","从本地文件系统载入class文件,如果本地文件系统不存在该class文件,将抛出classnotfoundexception异常。该方法是jvm默认使用的装载机制。","原理分析","取消java语言访问检查以访问private变量","在java中,classloader是一个抽象类,位于java.lang包中。下面对该类的一些重要接口方法进行介绍:","在访问private、protected成员变量和方法时必须通过setaccessible(boolean","如果jvm的安全管理器设置了相应的安全机制,调用该方法将抛出securityexception。","将类文件的字节数组转换成jvm内部的java.lang.class对象。字节数组可以从本地文件系统、远程网络获取。name为字节数组对应的全限定类名。","德玛西亚之力购买了神盾","此外,java还为包提供了package反射类,在jdk","每一个类在jvm中都拥有一个对应的java.lang.class对象,它提供了类结构信息的描述。数组、枚举、注解以及基本java类型(如int、double等),甚至void都拥有对应的class对象。class没有public的构造方法。class对象是在装载类时由jvm通过调用类装载器中的defineclass()方法自动构造的。","目录","类装载器classload","类装载器就是寻找类的节码文件并构造出类在jvm内部表示对象的组件。在java中,类装载器把一个类装入jvm中,要经过以下步骤:","类装载器工作机制","类装载工作由classloader及其子类负责,classloader是一个重要的java运行时系统组件,它负责在运行时查找和装入class字节码文件。jvm在运行时会产生三个classloader:根装载器、extclassloader(扩展类装载器)和appclassloader(系统类装载器)。其中,根装载器不是classloader的子类,它使用c++编写,因此我们在java中看不到它,根装载器负责装载jre的核心类库,如jre目标下的rt.jar、charsets.jar等。extclassloader和appclassloader都是classloader的子类。其中extclassloader负责装载jre扩展目录ext中的jar类包;appclassloader负责装载classpath路径下的类包。","英雄名称","获取类装载器的父装载器,除根装载器外,所有的类装载器都有且仅有一个父装载器,extclassloader的父装载器是根装载器,因为根装载器非java编写,所以无法获得,将返回null。","装备名称","设计一个ioc","调用该方法来查看classloader是否已装入某个类。如果已装入,那么返回java.lang.class对象,否则返回null。如果强行装载已存在的类,将会抛出链接错误。","运行以上代码,在控制台上将打出以下信息:","运行方法","运行该类,打印出以下信息:","这三个类装载器之间存在父子层级关系,即根装载器是extclassloader的父装载器,extclassloader是appclassloader的父装载器。默认情况下,使用appclassloader装载应用程序的类,我们可以做一个实验:","通过以上的输出信息,我们知道当前的classloader是appclassloader,父classloader是extclassloader,祖父classloader是根类装载器,因为在java中无法获得它的句柄,所以仅返回null。","除jvm默认的三个classloader以外,可以编写自己的第三方类装载器,以实现一些特殊的需求。类文件被装载并解析后,在jvm内将拥有一个对应的java.lang.class类描述对象,该类的实例都拥有指向这个类描述对象的引用,而类描述对象又拥有指向关联classloader的引用,如图所示。"],"设计模式系列.html":["设计模式系列"],"designpatterns/singleton.html":["(){}","(instanc","(singleton.class)","//doubl","//singl","//声明成","//类加载时就初始化","1","10","2","2。如果是后者,则在","3","5",";","=","==","better","check","class","creat","doubl","easysingleton{","enum","field","final","getinstance()","getinstance(){","getinstance()方法。饿汉式的创建方式在一些场景中将无法使用:譬如","getsingleton()","http://javarevisited.blogspot.sg/2012/07/whi","if,如果在同步块内不进行二次检验的话就会生成多个实例了。","initialization)会倾向于使用静态内部类,如果涉及到反序列化创建对象时会试着使用枚举的方式来实现单例。","initialization),单例会在加载类后一开始就被初始化,即使客户端没有调用","instanc","instance;","instance,然后使用,然后顺理成章地报错。","interview","java","java.html","java》上所推荐的。","jdk","jmm","jvm","lock","locking,而且还能防止反序列化导致重新创建新的对象。但是还是很少看到有人这样写,可能是因为不太熟悉吧。","more","nest","new","null","null)","null,一次是在同步块外,一次是在同步块内。为什么在同步块内还要再检验一次?因为可能会有多个线程一起进入同步块外的","pattern","pattern),是一种使用同步块加锁的方法。程序员称其为双重检查锁,因为会有两次检查","privat","public","question","read","return","safe","singleton","singleton();","singleton(){}","singleton()这句,这并非是一个原子操作,事实上在","singletonhold","singletonholder.instance;","singleton{","static","synchron","thread","volatil","volatile。","{","}","一般来说,单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。上述所说都是线程安全的实现,文章开头给出的第一种方法不算正确的写法。","中才得以修复,所以在这之后才可以放心使用","中这句话大概做了下面","为了解决上面的问题,最简单的方法是将整个","之前必须调用某个方法设置参数给它,那样这种单例写法就无法使用了。","之后或者","之后,不存在执行到","之外没有办法访问它,因此它是懒汉式的;同时读取实例的时候不会进行同步,没有性能缺陷;也不依赖","也不能完全避免重排序,主要是","也可能是","了(但却没有初始化),所以线程二会直接返回","了)","以前的","以前的版本使用了","件事情。","但是在","但是特别注意在","内存模型)是存在缺陷的,即时将变量声明成","分配内存","单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可能会帮助到你。","原文出处","双重检验锁","双重检验锁模式(doubl","变量了,在第一次加载类到内存中时就会初始化,所以创建实例本身是线程安全的。","变量前后的代码仍然存在重排序问题。这个","变量声明成","变量的写操作都先行发生于后面对这个变量的读操作(这里的“后面”是时间上的先后顺序)。","变量的赋值操作后面会有一个内存屏障(生成的汇编代码上),读操作不会被重排序到内存屏障之前。比如上面的例子,取操作必须在执行完","和","如何正确地写出单例模式","实例的创建是依赖参数或者配置文件的,在","将instance对象指向分配的内存空间(执行完这步","就为非","就可以了。","就我个人而言,一般情况下直接使用饿汉式就好了,如果明确要求要懒加载(lazi","屏蔽重排序的问题在","已经是非","当被问到要实现一个单例模式时,很多人的第一反应是写出如下的代码,包括教科书上也是这样教我们的。","总结","懒汉式,线程不安全","懒汉式,线程安全","我们只需要将","我们可以通过easysingleton.instance来访问实例,这比调用getinstance()方法简单多了。创建枚举默认就是线程安全的,所以不需要担心doubl","我比较倾向于使用静态内部类的方法,这种方法也是《effect","执行完毕、2","方法。但是同步操作只需要在第一次调用时才被需要,即第一次创建单例实例对象时。这就引出了双重检验锁。","方法设为同步(synchronized)。","是私有的,除了","有些人认为使用","未执行之前,被线程二抢占了,这时","枚举","然后取到值的情况。从「先行发生原则」的角度理解的话,就是对于一个","版本。","用枚举写单例实在太简单了!这也是它最大的优点。下面这段代码就是声明枚举实例的通常做法。","由于作者这篇文章写的非常好,我也就没有重写","的主要原因是其另一个特性:禁止指令重排序优化。也就是说,在","的副本,每次都是去主内存中读取。但其实是不对的。使用","的即时编译器中存在指令重排序的优化。也就是说上面的第二步和第三步的顺序是不能保证的,最终的执行顺序可能是","的原因是可见性,也就是可以保证线程在本地不会存有","的双检锁还是有问题的。其原因是","的时候,就会创建多个实例。也就是说在多线程下不能正常工作。","的构造函数来初始化成员变量","相信你不会喜欢这种复杂又隐含问题的方式,当然我们有更好的实现线程安全的单例模式的办法。","给","虽然做到了线程安全,并且解决了多实例的问题,但是它并不高效。因为在任何时候只能有一个线程调用","调用","这段代码看起来很完美,很可惜,它是有问题。主要在于instanc","这段代码简单明了,而且使用了懒加载模式,但是却存在致命的问题。当有多个线程并行调用","这种写法仍然使用jvm本身机制保证了线程安全问题;由于","这种写法如果完美的话,就没必要在啰嗦那么多双检锁的问题了。缺点是它不是一种懒加载模式(lazi","这种方法非常简单,因为单例的实例被声明成","静态内部类","饿汉式","(java"],"designpatterns/proxy.html":["!=","\"","\"\"","\".\";","\"ljava/lang/reflect/method;\",","\"non","(!interfaceclass.isinterface())","(!modifier.ispublic(flags))","(!pkg.equals(proxypkg))","((boolean)this.h.invoke(this,","((integer)this.h.invoke(this,","((n","(class","(classformaterror","(classnotfoundexcept","(could","(error|runtimeexcept","(fields.size()","(int","(interfaceclass","(interfaces.length","(interfaceset.put(interfaceclass,","(ioexcept","(list","(methods.size()","(nosuchmethodexcept","(oldvaluesmap","(proxymethod","(proxypkg","(sm","(string)this.h.invoke(this,","(subject)proxy.newinstance(classloader.getsystemloader(),","(supplier","(throwabl","(true)","(valu","(valuesmap","*","*/","+","...","...ok我们先看前半截","/*","//","//addproxymethod方法,就是将方法都加入到一个列表中,并与对应的class对应起来","//saygoodbye方法同理","//下面这三句代码是核心代码,返回实现invokehandler的类并包含了所需要的信息。","//下面这个过程就是填充supplier的过程","//你想代理的类","//创建一个factori","//初始化该类","//利用反射获取你想代理的类的方法","//利用懒加载的方式填充supplier,concurrent是一种线程安全的map","//加入一个静态初始化块,将每一个属性都初始化,这里静态代码块也叫类构造方法,其实就是名称为的方法,所以加到方法列表","//加载每一个接口运行时的信息","//填充supplier","//如果传入不是一个接口类型","//如果使用你自己的classload加载的class与你传入的class不相等,抛出异常","//将接口列表中的接口与接口下的方法对应起来","//将每一个代理方法都加到代理类的方法中","//接下来就是写class文件的过程,包括魔数,类名,常量池等一系列字节码的组成,就不一一细说了。需要的可以参考jvm虚拟机字节码的相关知识。","//接口列表数目不能超过0xffff","//方法中加入构造方法,这个构造方法只有一个,就是一个带有invocationhandler接口的构造方法","//方法和属性个数都不能超过65535,包括之前的接口个数也是这样,","//注意这里,","//生成代理类","//生成随机代理类的类名,$proxi","//用到时候才加载,懒加载","//结束","//给每一个代理方法加一个method类型的属性,数字10是class文件的标识符,代表这些属性都是priv","//获取接口信息","//这一段是看你传入的接口中有没有不是public的接口,如果有,这些接口必须全部在一个包里定义的,否则抛异常","//这个才是真正给class文件,也就是代理类加入方法了,不过还没真正处理,只是先加进来等待循环,构造方法在class文件中的名称描述是","//这是因为在class文件中,这些个数都是用4位16进制表示的,所以最大值是2的16次方","//这里给object对应了三个方法hashcode,tostring和equ","//验证接口是否重复","0,","0;","1","1)","1));","1:","2:","65535)",":","=","==",">","?","[]","acc_priv","acc_static));","addproxymethod(equalsmethod,","addproxymethod(hashcodemethod,","addproxymethod(tostringmethod,","apply(classload","args)","args);","args){","assembl","boolean","boolean.true)","boolean>","byte[]","cach","cachekey","cachekey.valueof(key,","cachevalu","cachevalue)","catch","checkproxyaccess(reflection.getcallerclass(),","checkreturntypes(sigmethods);","choos","cl","class","class...","class.forname(\"com.su.dynamicproxy.isubject\").getmethod(\"saygoodbye\",","class.forname(\"com.su.dynamicproxy.isubject\").getmethod(\"sayhello\",","class.forname(\"java.lang.object\")","class.forname(\"java.lang.object\").getmethod(\"equals\",","class.forname(\"java.lang.object\").getmethod(\"hashcode\",","class.forname(\"java.lang.object\").getmethod(\"tostring\",","class.forname(intf.getname(),","class>","class[0]);","class[]","classfil","classloader。与静态处理类相比,动态类有诸多好处。","class字节码组成来生成相应的clss文件。具体proxygenerator.generateproxyclass源码如下:","clear","client","close","code","com.sun.proxi","concurrenthashmap<>());","concurrentmap>","connect","connection.clos","counting):","cp.getclass(dottoslash(classname));","cp.getclass(superclassname);","creat","defin","defineclass0(loader,","differ","dispatch","dynamicproxi","dynamicproxy());","dynamicproxy(targetclass","e)","equals(object","equals方法进行初始化。","exceeded\");","exception\");","expungestaleentries();","extend","factori","factory是一个实现了supplier接口的内部类。这个类覆盖了get方法,在get方法中调用了类型为proxyfactoryclass的实例方法apply。这个方法才是真正创建代理类的方法。下面看proxyfactoryclass.apply方法的源码:","false,","field","fieldinfo","fieldinfo(pm.methodfieldname,","fields.add(new","file","file(\"/users/yadoao/desktop/testproxygen.class\");","fileoutputstream","fileoutputstream(file);","final","flag","fo","for.","fos.close();","fos.flush();","fos.write(classfile);","gener","generate.","generateclassfile()","generating.","get(k","getproxyclass0(classload","getproxyclass0(loader,","gui反编译该class文件,结果如下:","h)","hashcode()","h进行了初始化。","i/o","identityhashmap<>(interfaces.length);","if(factori","if(realsubject","if(suppli","illegalargumentexcept","illegalargumentexception(","illegalargumentexception(\"field","illegalargumentexception(\"interfac","illegalargumentexception(\"method","illegalargumentexception(\"rep","illegalargumentexception(e.tostring());","implement","import","instal","int","interfac","interface\");","interface:","interfaceclass","interfaceclass.getname()","interfaceclass.getname());","interfaces)","interfaces);","interfaces,","interfaces.clone();","interfaces[],","interfaceset","internalerror(\"unexpect","intf","intf)","intf.getmodifiers();","intf.getname();","intfs);","invocationhandl","invoke(object","invokehand","invokehandl","invokehandler)可以创建一个动态代理类。","ioexcept","isubject","java.lang.reflect.invocationhandler;","java.lang.reflect.method;","java.lang.reflect.proxy;","java.lang.reflect.undeclaredthrowableexception;","java7","javassist等。这些方法各有优缺点。本文主要探究jdk中的动态代理的使用和源码分析。","jdk中自带动态代理,cglib,","jdk动态代理源码分析(jdk7)","jdk动态代理要求,被代理的必须是个接口,单纯的类则不行。jdk动态代理所生成的代理类都会继承","key,","keyfactory(),","limit","loader","loader\");","loader);","loader,","localclassnotfoundexception)","localerror)","localerror;","localnosuchmethodexception)","localthrowable)","long","m0","m0,","m0;","m1","m1,","m1;","m2","m2,","m2;","m3","m3,","m3;","m4","m4,","m4;","main(str","main(string[]","main(strings[]","map,","map.get(cachekey);","map.putifabsent(cachekey,","method","method,","method.getparametertypes());","method.invoke(realsubject,","methodinfo","methods.add(generateconstructor());","methods.add(generatestaticinitializer());","methods.add(pm.generatemethod());","mymethod","mymethod.invoke(targetclass,","mymethod.setaccessible(true);","n","name","name.lastindexof('.');","name.substring(0,","new","newinstance方法有三个参数,分别表示类加载器,一个希望该代理类实现的接口列表,以及实现invokehandler接口的实例。","newproxyinstance(classload","nextuniquenumber.getandincrement();","noclassdeffounderror(localclassnotfoundexception.getmessage());","non","nosuchmethoderror(localnosuchmethodexception.getmessage());","null","null)","null)).intvalue();","null);","null;","nullobject判断方法,如果parameter为空则抛出带有指定消息的异常。","num","num;","object","object.*/","object.class);","object[]","objects.requirenonnull(parameter);","objects.requirenonnull(subkeyfactory.apply(key,","oldvaluesmap","oldvaluesmap;","p","packag","package.","packages\");","parameter)","parameter));","paraminvocationhandler)","paramobject","paramobject)","pkg","pkg;","pm","possibl","privat","proxi","proxy,","proxy.newinst","proxyclasscach","proxyclasscache.get","proxyclasscache.get(loader,","proxyclasscache是一个weakcache类型的缓存,它的构造函数有两个参数,其中一个就是用于生成代理类的proxyclassfactory,下面是proxyclasscache.get的源码:","proxyclasscache:","proxyclassfactory());","proxyclassfil","proxyclassfile,","proxyclassfile.length);","proxyclassnameprefix","proxygenerator.generateproxyclass(\"testproxygen\",","proxygenerator.generateproxyclass(proxyname,","proxymethod","proxymethods.values())","proxynam","proxyname,","proxypkg","public","realsubject","realsubject();","realsubject.class.getinterfaces(),","realsubject.sayhello();","realsubject;","record","reflectutil.proxy_packag","refqueue);","resolv","retriev","return","return;","same","saygoodbye()","saygoodbye();","sayhello()","sayhello();","securitymanag","sigmethod","sigmethods)","sm","sp","sp.saygoodbye();","sp.sayhello();","static","staticproxi","staticproxy()","staticproxy();","static的","step","store","string","struct","subject","subject.class.getinterfaces());","subject.saygoodbye();","subject.sayhello();","subkey","success","super(paraminvocationhandler);","supplier","supplier.get();","system.getsecuritymanager();","system.out.println(\"goodby","system.out.println(\"hello","targetclass","targetclass)","targetclass.getclass().getdeclaredmethod(method.getname(),","targetclass;","testgeneratorproxi","testproxygen","testproxygen(invocationhandl","this.h.invoke(this,","this.targetclass","throw","tostring()","tri","undeclaredthrowableexception(localthrowable);","us","v","valu","value;","valuesmap","valuesmap.get(subkey);","verifi","visibl","void","v表示valu","wasn't","weakcach","weakcache<>(new","weakcache[],","while循环的作用就是不停的获取实现invokehandler的类,这个类可以是从缓存中拿到,也可是是从proxyfactoryclass生成的。","world\");","{","{}","|","}","})).booleanvalue();","});","}els","。","下面以一个延迟加载的例子来说明一下静态代理。我们在启动某个服务系统时,加载某一个类时可能会耗费很长时间。为了获取更好的性能,在启动系统的时候,我们往往不去初始化这个复杂的类,取而代之的是去初始化其代理类。这样将耗费资源多的方法使用代理进行分离,可以加快系统的启动速度,减少用户等待的时间。","下面是","下面是代理模式的类图结构:","下面用一个实例讲解一下jdk中动态代理的用法:","下面详细解释","不需要为真实主题写一个形式上完全一样的封装类,假如主题接口中的方法很多,为每一个接口写一个代理方法也很麻烦。如果接口有变动,则真实主题和代理类都要修改,不利于系统维护;","主题接口:","也就是被代理的对象。","从supplier中获取value,这个value可能是一个工厂或者cache的实","从上面的代码可以看出,要利用jdk中的动态代理。利用静态方法proxy.newinstance(classloader,","从源码看出代理类的生成是依靠getproxyclass0这个方法,接下来看getproxyclass0源码:","从队列中获取cachekey","代理对象和目标对象均实现同一个行为接口。","代理对象是如何创建出来的?","代理对象:","代理模式剖析","代理模式原理及实例讲解","代理模式学习","代理模式定义","代理模式的参与者","代理模式的实现思路","代理模式的角色分四种:","代理类和目标类分别具体实现接口逻辑。","以上就是静态代理的一个简单测试例子。感觉可能没有实际用途。然而并非如此。使用代理我们还可以将目标对象的方法进行改造,比如数据库连接池中创建了一系列连接,为了保证不频繁的打开连接,这些连接是几乎不会关闭的。然而我们编程总有习惯去将打开的","使用一些动态代理的生成方法甚至可以在运行时制定代理类的执行逻辑,从而大大提升系统的灵活性。","例如网络连接,存储器中的大对象,文件或者其他无法复制的资源。","再次注意到几个静态的初始化块,这里的静态初始化块就是对代理的接口列表以及hashcode,tostring,","前文提到proxyfactoryclass.apply是真正生成代理类的方法,这其实是不准确的。源代码读到这里,我们会发现proxygenerator.generateproxyclass才是真正生成代理类的方法。","动态代理","动态代理将每个方法的执行过程则交给了invoke方法处理。","动态代理是指在运行时动态生成代理类。即,代理类的字节码将在运行时生成并载入当前代理的","即代理类的所实现的行为接口。","去","参考文献","可以看出proxy全是静态方法,因此如果代理类没有实现任何接口,那么他就是proxy类型,没有实例方法。","在代理类中调用目标对象的行为接口。","在代理类的构造函数中实例化一个目标对象。","在看","如果不为空则返回。","如果实现接口列表的代理类已经存在,那么直接从cache中拿。如果不存在,则通过proxyclassfactory生成一个。","定义一个主题接口","定义一个代理类,来代理目标对象","定义一个客户端","定义一个目标类,","客户端","客户端代码实例","客户端想要调用目标对象的行为接口,只能通过代理类来操作。","对","就此代理模式分析到此结束。","并实现主题接口","当然加入你要是非要代理一个没有实现某个接口的类,同时该类的方法与其他接口定义的方法相同,利用反射也是可以轻松实现的。","当需要一个复杂对象的多份副本时,代理模式可以结合享元模式以减少存储器的用量。典型做法是创建一个复杂对象以及多个代理者,每个代理者会引用到原本的对象。而作用在代理者的运算会转送到原本对象。一旦所有的代理者都不存在时,复杂对象会被移除。","我们模拟jdk自己生成一个代理类,","所谓静态代理,就是在编译阶段就生成代理类来完成对代理对象的一系列操作。下面是代理模式的结构类图:","接口中的","方法。其他的例子还有很多,具体需要自己体会。","方法的源码:","方法,改变为回收到数据库连接池中而不是真正的执行","是谁调用了invoke?","最后就是这几个方法的调用过程,全都是回调invoke方法。","根据java","清理持有弱引用的weakhashmap这种数据结构,一般用于缓存","源码之前,先简单了解一下","生成代理类的class文件,返回字节流","生成动态代理的方法有很多:","用jd","用来封装真是主题类的代理类","的结构图。","的解释是:","目标对象:","看了上面的例子,我们只是简单会用动态代理。但是对于代理类是如何创建出来的,是谁调用invoke方法等还云里雾里。下面通过分析","类名为testproxygen:","类,同时代理类会实现所有你传入的接口列表。因此可以强制类型转换成接口类型。","经过层层调用,一个代理类终于生成了。","维基百科上是这样描述代理模式的:所谓代理者是指一个类可以作为其他东西的接口。代理者可以作任何东西的接口,","著名的代理模式的例子就是引用计数(refer","这样我们就可以利用代理模式来重新代理","这里k表示key,p表示parameters,","静态代理","静态代理的实例","首先注意到生成代理类的构造函数,它传入一个实现invokehandler接口的类作为参数,并调用父类proxy的构造器,即将proxy中的成员变量protect","首先看"],"designpatterns/strategy.html":["!=","\"\"));","\".\"","\"/\")).touri();","\"china","\"chinal","\"defalut","\"defalut\";","&&","(classnotfoundexcept","(clazz","(file","(instantiationexcept","(name.endswith(\".class\"))","(xmltype","**","**自定义的注解类:","+","...","//","//creat","//创建一个具体的策略类","//定义一个策略类的列表","//根据用户缴费类型,生成不同的通信报文","//注意此处","//获取filepath","//解析注解方法","//解析策略类的注解","//载入策略类方法","//遍历所有策略类,","1\");","2\");",":",";","=","==","@interfac","@overrid","@retention(retentionpolicy.runtime)","@target(elementtype.type)","@xmltype(\"chinamobile\")","@xmltype(\"chinaunicom\")","```java","accept(fil","algorithm","algorithmstartegy()","arraylist>();","b),那么它必然可以接受一个子类对象d,也即可以有method1(d)。反之,则不一定成立","boolean","catch","chinamobil","chinaunicom","class","clazz","clazz)","clazz.getannotation(xmltype.class);","clazz.newinstance();","close","comparatorc)与策略java.util.comparator的使用等等。","concentratestrategy_1","concentratestrategy_1());","concentratestrategy_2","createproduct(str","default","defaulthead","defaulthead();","dir,","e)","e.printstacktrace();","else判断,","else我们定义一个策略工厂,来生产具体的策略类。","fail","false;","file","file(filepath).listfiles(new","file.getname().replace(\".class\",","file[]","filenamefilter()","filepath","files)","final","for(class","generate(str","generatexml()","getclass().getclassloader().getresource(packagename.replace(\".\",","getclass().getclassloader().loadclass(packagenam","getinstance()","handlealgorithm()","if(xmltype.value().equals(producttype))","illegalaccessexcept","implement","instanc","interfac","iproduct","iproduct.class","iproduct.class.isassignablefrom(clazz))","iproduct{","list>","load","loadallstrategy(\"com.su.startegy\");","loadallstrategy(str","mobil","name)","new","null)","null;","object","packagename)","praseannotation(class","praseannotation(clazz);","principle,缩写为lsp)","principle,缩写为ocp)","privat","product","product.generatexml();","productfactori","productfactory()","productfactory();","productfactory.getinstance().createproduct(type);","productfactoryinst","productfactoryinstance.instance;","producttype)","public","return","singleton","situat","situation(new","situation(strategi","situation.handlealgorithm();","startegi","startegylist","startegylist)","static","strategi","strategy)","strategy.algorithmstartegy();","strategy;","strategylist","strategylist.add(clazz);","strategylist;","strategy{","string","substitut","system.out.println(\"i","this.strategi","throw","tri","true;","type)","unicom","uri","urisyntaxexcept","value()","void","xml\";","xmlgener","xmltype","xmltype;","{","{}","|","}","});","一、策略模式的定义","一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能察觉到基类对象和子类对象的区别。比如,假设有两个类,一个是base类,一个是derived类,并且derived类是base类的子类。那么一个方法如果可以接受一个基类对象b的话:method1(bas","一个软件实体应当对扩展(例如对抽象层的扩展)开放,对修改(例如对抽象层的修改)关闭。即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。","三、策略模式中的设计原则","下面我以一个实际的业务场景来具体实现以下策略模式:","下面是策略模式的类图:","不要记住代码是怎么实现的,更重要的是记住其设计原则。根据原则写代码,","中国联通,中国电信。用户选择某个便民服务时,","中国银行的便民服务包括中国移动手机充值,","也就要相应的使用注解的嵌套了,","二、策略模式的实际应用","什么是策略模式","从策略模式的描述以及类图来看真的是非常简单,总结起来就是策略模式定义了一组算法,它们有一个共同的策略行为接口,并且这些算法之间可以互相替换,使算法可以根据场景的不同而改变。","以上就是此处的策略模式的设计过程,如果需要多种策略的叠加,","创建具体的策略类,","包含一个生成报文的方法public","参考文献","如果理解了设计原则,","学习策略模式,","定义一个场景类用于生成xml报文public","定义一个算法使用场景public","定义一组具体策略类:@xmltype(\"default\")","定义两个具体的策略类:public","定义策略接口","实现","客户端调用situat","已达到通信目的。","开闭原则的关键,在于抽象。策略模式,是开闭原则的一个极好的应用范例。","开闭原则(open","服务器后台会向银行发送不同的业务xml报文,","本来是可以用一系列的if","根据条件找出需要用到的","此处我使用**注解**的原因是为了简单,","比如场景java.util.collections.sort(listlist,","比如说jdk中filenamefilter的使用过程,","然后new相应的策略类。这里为了避免if","策略模式","策略模式中的设计原则","策略模式之所以可行的基础便是里氏替换原则:策略模式要求所有的策略对象都是可以互换的,因此它们都必须是一个抽象策略角色的子类。在客户端则仅知道抽象策略角色类型,虽然变量的真实类型可以是任何一个具体策略角色的实例","策略模式的定义","策略模式的实际应用","策略模式的应用有很多,","策略模式设计原则","策略模式,顾名思义就是指对象具有某个行为,但是在不同的业务场景下,这个行为应该有不同的表现形式,也就是有了不同的策略。让对象能再不同的场景下对同一行为有不同的实现,这就是策略模式。","策略类工厂:这个工厂创建策略类的思路就是,载入一些列策略类,根据不同策略类的自定义注解和用户的传入参数来生成具体的策略类。","而不是生搬硬套。其实设计模式都是设计原则的体现,","背景:","跟代码的耦合紧一点。","这里就不在发挥了。","那么你写的代码也可以变成一种模式。","里氏替换原则讲的是基类与子类的关系。只有当这种关系存在时,里氏替换关系才存在,反之则不存在。","里氏替换原则(liskov","首先定义一个策略接口:public"],"Java8系列.html":["java8系列"],"java8/java8-guide.html":["\"","\"#\"","\"123\"","\"aaa1\"","\"aaa1\",","\"aaa1#aaa2#bbb1#bbb2#bbb3#ccc#ddd1#ddd2\"","\"aaa2\"","\"aaa2\",","\"anna\",","\"b\"","\"bam\"","\"bam\");","\"bbb2\",","\"bbb3\",","\"ccc\",","\"concat\",","\"ddd1\",","\"ddd2\",","\"doe\");","\"j\"","\"mike\",","\"not","\"parker\");","\"skywalker\"));","\"val\"","\"val3\");","\"val33\");","\"val9\",","\"wonderland\");","\"xenia\");","%d","(a)","(a,","(from)","(int","(num,","(p)","(p1,","(s)","(string","(value,","*","+",".allmatch((s)",".anymatch((s)",".atzone(zoneid.systemdefault())",".count();",".filter((s)",".foreach(system.out::println);",".map(string::touppercase)",".nonematch((s)",".oflocalizeddate(formatstyle.medium)",".ofpattern(\"mmm",".reduce((s1,",".sorted((a,",".sorted()",".stream()",".toinstant();",".withlocale(locale.german);","//","0","03","03,","03:00]","07:13","07:13\",","0;","100);","100.0","1000000;","11。它是不可变的,完全模拟本地时间工作。此示例演示如何通过添加或减去天数,月数,年来计算新的日期。记住每一个操作都会返回一个新的实例。","12","123","1439","1;","2","2014","23,","239","23:59:59","23;","24","3","31","31,","3;","4);","4.0","472","59);","59,","72;","8.","899","8中就返回一个optional。","=",">","@functionalinterfac","@hint(\"hint1\")","@hint(\"hint2\")","@hint(\"hint2\")})","@hints({@hint(\"hint1\"),","@interfac","@overrid","@repeatable(hints.class)","@target({elementtype.type_parameter,","a)","a);","a,","aaa1,","aaa2,","allstartswitha","andthen)","annotations(注解)","anystartswitha","api","api也添加了新功能接口,使你的开发更简单。其中一些接口是众所周知的googl","api扩展和新的日期api。","apply(t","arraylist<>();","arraylist<>(max);","arrays.aslist(\"peter\",","avail","b)","b.compareto(a))","b.compareto(a));","b.compareto(a);","backtostr","backtostring.apply(\"123\");","bbb1,","bbb2,","bbb3,","boolean","calculate(int","ccc,","cet","chronounit.days);","chronounit.hours.between(now1,","chronounit.minutes.between(now1,","class","clock","clock.instant();","clock.millis();","clock.systemdefaultzone();","clock提供访问当前日期和时间。clock是对当前时区敏感的,可以用来代替system.currenttimemillis()来获取当前的毫秒值。当前时间线上的时刻可以用instance类来表示。instance可以用来创建java.util.date格式的对象。","collections.sort(names,","compar","comparator()","comparator.compare(p1,","comparator.reversed().compare(p1,","comparators(比较器)","comparators在旧版本java中是众所周知的。java8增加了各种默认方法的接口。","compare(str","consum","consumers(消费者)","consumers代表在一个单一的输入参数上执行操作。","contain","convert","convert(f","converter.convert(\"123\");","converter.convert(\"java\");","count","count是一个终止操作返回流中的元素的数目,返回long类型。","create(str","date","date.from(instant);","datetimeformatt","dayofweek","dd,","ddd1","ddd2,","dec","decemb","default","doubl","elementtype.type_use})","fals","filter","filter接受一个predicate来过滤流的所有元素。这个中间操作能够调用另一个流的操作(foreach)的结果。foreach接受一个消费者为每个元素执行过滤流。它是void,所以我们不能称之为另一个流操作。","final","firstname,","firstname;","formatt","formatter);","formatter.format(parsed);","formula","formula()","formula.calculate(100);","formula.sqrt(16);","found","found\");","friday","from);","function","functions(函数)","functions接受一个参数,并产生一个结果。默认方法可以将多个函数串在一起(compse,","germanformatt","germanformatter);","greeter","greeter.accept(new","guava中,定义了predicate接口,该接口包含一个带有泛型参数的方法:","guava库。即使你熟悉这个库也应该密切关注这些接口是如何延长一些有用的扩展方法。","hashmap<>();","hh:mm\");","hint","hint[]","hints1","hints2","hoursbetween","id","independenceday","independenceday.getdayofweek();","input):","instant","instead","int","integ","integer.valueof(from);","integer::valueof;","interfac","interfaces)","isempti","isempty.negate();","isnotempti","isnul","java","java.util.d","java8","java8使我们能够使用相同类型的多个注解,通过@repeatable声明注解。","java8支持更短的语法而不总是创建匿名对象,","java8简明指南","java8简明教程","java使您可以通过::关键字调用引用的方法或构造函数。上面的示例演示了如何引用静态方法。但我们也可以参考对象方法:","java编译器知道参数类型,所以你可以跳过它们,接下来让我们深入了解lambda表达式。","jdk1.8的api包含许多内置的函数式接口。其中有些是众所周知的,从旧版本中而来,如comparator或者runnable。使现有的接口通过@functionalinterface注解支持lambda。","lambda4","lambda作用域","lambda表达式","lambda表达式类型系统?每个lambda由一个指定的接口对应于一个给定的类型。所谓的函数式接口必须包含一个确切的一个抽象方法声明。该类型将匹配这个抽象方法每个lambda表达式。因为默认的方法是不抽象的,你可以自由添加默认的方法到你的函数式接口。","lambda表达式:","lastname)","lastname);","lastname;","legaci","legacyd","list","locald","localdate.now();","localdate.of(2014,","localdate.parse(\"24.12.2014\",","localdatetim","localdatetime.of(2014,","localdatetime.parse(\"nov","localdatetime代表日期时间。它结合了日期和时间见上面的部分为一个实例。localdatetime是不可变的,类似于本地时间和localdate工作。我们可以从一个日期时间获取某些字段的方法:","localdate代表一个唯一的日期,如2014","localtim","localtime.now(zone1);","localtime.now(zone2);","localtime代表没有时区的时间,例如晚上10点或17:30:15。下面的例子会用上面的例子定义的时区创建两个本地时间对象。然后我们比较两个时间并计算小时和分钟的差异。","long","map","map.computeifabsent(23,","map.computeifabsent(3,","map.computeifpresent(3,","map.computeifpresent(9,","map.containskey(23);","map.containskey(9);","map.get(3);","map.get(9);","map.getordefault(42,","map.merge(9,","map.remove(3,","map合并条目是非常容易的:","map是一个对于流对象的中间操作,通过给定的方法,它能够把流对象中的每一个元素对应到另外一个对象上。下面的例子将每个字符串转换成一个大写字符串,但也可以使用map将每个对象转换为另一种类型。所得到的流的泛型类型取决于您传递给map方法的泛型类型。","match","math.sqrt(a);","max","method","milli","millis));","minuteofday","minutesbetween","month","month.december,","month.july,","ms","ms\",","myannot","name","new","newvalue)","non","nonestartswithz","nonnul","nothing.","nov","now1","now2","now2);","null","null);","null.","null的值,也可能返回一个空值。为了不直接返回null,我们在java","num","num);","objects::isnull;","objects::nonnull;","option","optional.get();","optional.ifpresent((s)","optional.ispresent();","optional.of(\"bam\");","optional.orelse(\"fallback\");","optionals(可选项)","optionals是没有函数的接口,取而代之的是防止nullpointerexception异常。这是下一节的一个重要概念,所以让我们看看如何结合optionals工作。","optional是一个简单的容器,这个值可能是空的或者非空的。考虑到一个方法可能会返回一个non","outernum","outernum;","outerstaticnum","outerstaticnum;","p","p.firstname);","p1","p1.firstname.compareto(p2.firstname);","p2","p2)","p2);","parallel","pars","person","person(\"alice\",","person(\"john\",","person(\"luke\",","person()","person(str","person.class.getannotation(hint.class);","person.class.getannotation(hints.class);","person.class.getannotationsbytype(hint.class);","person::new;","personfactori","personfactory.create(\"peter\",","personsuppli","personsupplier.get();","predic","predicate.negate().test(\"foo\");","predicate.test(\"foo\");","predicates(谓词)","predicates是一个返回布尔类型的函数。这就是谓词函数,输入一个对象,返回true或者false。","print","public","reduc","reduced.ifpresent(system.out::println);","result","return","s)","s.length()","s.startswith(\"a\"))","s.startswith(\"a\"));","s.startswith(\"b\"))","s.startswith(\"z\"));","s1","s2)","s2);","sequenti","simpl","someth","something();","something::startswith;","sometim","sort","sorted是一个中间操作,能够返回一个排过序的流对象的视图。这些元素按自然顺序排序,除非你经过一个自定义比较器(实现comparator接口)。","sqrt(","sqrt(a","sqrt(int","startswith(str","startswithb","static","stream","streams(管道)","string","string.valueof(from","string.valueof(from);","string.valueof(s.charat(0));","string::isempty;","stringcollect","stringcollection.add(\"aaa1\");","stringcollection.add(\"aaa2\");","stringcollection.add(\"bbb1\");","stringcollection.add(\"bbb2\");","stringcollection.add(\"bbb3\");","stringcollection.add(\"ccc\");","stringcollection.add(\"ddd1\");","stringcollection.add(\"ddd2\");","stringconvert","stringconverter.convert(2);","stringconverter1","stringconverter2","supplier","suppliers(生产者)","suppliers产生一个给定的泛型类型的结果。与functional不同的是suppliers不接受输入参数。","sylvest","sylvester.getdayofweek();","sylvester.getlong(chronofield.minute_of_day);","sylvester.getmonth();","system.nanotime();","system.out.println(\"hello,","system.out.println(allstartswitha);","system.out.println(anystartswitha);","system.out.println(converted);","system.out.println(count);","system.out.println(dayofweek);","system.out.println(hint);","system.out.println(hints1.value().length);","system.out.println(hints2.length);","system.out.println(hoursbetween);","system.out.println(legacydate);","system.out.println(minuteofday);","system.out.println(minutesbetween);","system.out.println(month);","system.out.println(nonestartswithz);","system.out.println(now1.isbefore(now2));","system.out.println(s.charat(0)));","system.out.println(startswithb);","system.out.println(string);","system.out.println(string.format(\"parallel","system.out.println(string.format(\"sequenti","system.out.println(stringcollection);","system.out.println(val));","system.out.println(xmas);","system.out.println(zone1.getrules());","system.out.println(zone2.getrules());","system.out.println(zoneid.getavailablezoneids());","t","t0","t0);","t1","testscopes()","think","this.firstnam","this.lastnam","timeunit.nanoseconds.tomillis(t1","timezon","time库可以媲美,但它们是不一样的。下面的例子涵盖了这个新的api最重要的部分。","today","today.plus(1,","tointeg","tointeger.andthen(string::valueof);","tomorrow","tomorrow.minusdays(2);","took:","true","val","val)","val33","val9","val9concat","valu","value();","value.concat(newvalue));","values.parallelstream().sorted().count();","values.stream().sorted().count();","void","wed","wednesday","xma","yesterday","yyyi","zone1","zone2","zoneid","zoneid.of(\"brazil/east\");","zoneid.of(\"europe/berlin\");","zonerules[currentstandardoffset=","zonerules[currentstandardoffset=+01:00]","{","{}","}","});","};","一个java.util.stream代表一个序列的元素在其中的一个或多个可以执行的操作。流操作是中间或终端。当终端操作返回某一类型的结果时,中间操作返回流,这样就可以将多个方法调用在一行中。流是一个源产生的,例如java.util.collection像列表或设置(不支持map)。流操作可以被执行的顺序或并行。","一行方法的方法体可以跳过{}和参数类型,使它变得更短:","上面的代码应该是不解自明的:putifabsent避免我们将null写入;foreach接受一个消费者对象,从而将操作实施到每一个map中的值上。","上面的例子代码可以进一步简化,利用静态方法引用:","下面的例子演示了如何使用并行流很容易的提高性能。","下面的章节解释最常见的流操作。","不像java.text.numberformat,新的datetimeformatter是不可变的,线程安全的。","与局部变量不同,我们在lambda表达式的内部能获取到对成员变量或静态变量的读写权。这种访问行为在匿名对象里是非常典型的。","举例:","从lambda表达式访问外部变量的作用域是匿名对象非常相似。您可以从本地外部范围以及实例字段和静态变量中访问final变量。","但不同的匿名对象变量num没有被声明为final,下面的代码也有效:","但是java8","你可以看到这两段代码片段几乎是相同的,但并行排序大致是50%的差距。唯一的不同就是把stream()改成了parallelstream()。","使用变体2隐式编译器隐式地设置了@hints注解。这对于通过反射来读取注解信息是非常重要的。","内置函数式接口(built","函数式接口(function","包含一个新的日期和时间api,在java.time包下。新的日期api与joda","变体1:使用注解容器(老方法)","变体2:使用可重复注解(新方法)","另一种实用的方法:","可以使用各种匹配操作来检查某个谓词是否匹配流。所有这些操作都是终止操作,返回一个布尔结果。","合并操作先看map中是否没有特定的key/value存在,如果是,则把key/value存入map,否则merging函数就会被调用,对现有的数值进行修改。","在googl","在java8中collections类的功能已经有所增强,你可用调用collection.stream()或collection.parallelstream()。","在java8中注解是可以重复的,让我们深入到一个示例中。","在java8中,利用default关键字使我们能够添加非抽象方法实现的接口。此功能也被称为扩展方法,这里是我们的第一个例子:","在lambda表达式里修改num也是不允许的。","如上所述的数据流可以是连续的或平行的。在一个单独的线程上进行操作,同时在多个线程上执行并行操作。","如何适应java","将字符串解析为localdate:","我们可以从lambda表达式的外部范围读取final变量:","我们可以使用任意的接口为lambda表达式,只要接口只包含一个抽象方法。确保你的接口满足要求,你应该添加@functionalinterface注解。当你尝试在接口上添加第二个抽象方法声明时,编译器会注意到这个注释并抛出一个编译器错误。","我们通过person::new创建一个人的引用,java编译器会自动选择正确的构造函数匹配personfactory.create的返回。","接下来,我们将学习如何删除一一个给定的键的条目,只有当它当前映射到给定值:","接下来,我们指定一个person的工厂接口,用于创建person:","接口的默认方法","方法和构造函数引用","时区是由zoneid表示,通过静态工厂方法可以很容易地访问。时区还定义了一个偏移量,用来转换当前时刻与目标时刻。","格式日期时间对象就像格式化日期对象或者格式化时间对象,除了使用预定义的格式以外,我们还可以创建自定义的格式化对象,然后匹配我们自定义的格式。","欢迎star我的开源web框架blade:http://github.com/biezhi/blad","欢迎来到java8简明指南。本教程将一步一步指导你通过所有新语言特性。由短而简单的代码示例,带你了解如何使用默认接口方法,lambda表达式,方法引用和可重复注解。本文的最后你会熟悉最新的api的变化如stream,fcuntional,map","正如你可以看到的代码更容易阅读。但它甚至更短:","正如前面所说的map不支持流操作,现在的map支持各种新的实用的方法和常见的任务。","然后我们通过构造函数引用来把所有东西拼到一起,而不是手动实现工厂:","然而num必须是隐含的final常量。以下代码不编译:","现在我们测量一下流对这个集合进行排序消耗的时间。","虽然在person中从未定义@hints注解,它仍然可读通过getannotation(hints.class)读取。并且,getannotationsbytype方法会更方便,因为它赋予了所有@hints注解标注的方法直接的访问权限。","要记住,排序只会创建一个流的排序视图,而不处理支持集合的排序。原来string集合中的元素顺序是没有改变的。","让我们以一个简单的例子来开始,在以前的版本中对字符串进行排序:","让我们先看一下数据流如何工作。首先,我们创建一个字符串列表的数据:","让我们来看看如何使用::关键字调用构造函数。首先,我们定义一个person类并且提供不同的构造函数:","记住,有@functionalinterface注解的也是有效的代码。","记得第一节的formula例子吗?接口formula定义了一个默认的方法可以从每个公式实例访问包括匿名对象,","访问字段和静态变量","访问局部变量","访问默认接口方法","该公式被实现为匿名对象。这段代码是相当长的:非常详细的一个计算:6行代码完成这样一个简单的计算。正如我们将在下一节中看到的,java8有一个更好的方法来实现单方法对象。","该终止操作能够通过某一个方法,对元素进行削减操作。该操作的结果会放在一个optional变量里返回。","这个例子演示了如何利用函数判断或获取map中的数据:","这并没有lambda表达式的工作。","除了接口抽象方法calculate,还定义了默认方法sqrt的返回值。具体类实现抽象方法calculate。默认的方法sqrt可以开箱即用。","随着一个时区可以转换为一个即时的附加信息。instance可以被转换为日期型转化为指定格式的java.util.date。","静态的集合类方法collections.sort,为比较器的给定列表中的元素排序。你会发现自己经常创建匿名比较器并将它们传递给方法。","首先,我们创建一个大的元素列表:","首先,我们定义了一个包装的注解,它拥有一个返回值为数组类型的方法hint:","默认方法不能在lambda表达式访问。以下代码不编译:"],"java8/foreach.html":["\"","(map.entri","+",".filter(",".foreach(system.out::println);","//lambda","//method","//output","//steam","1.","1.1","1.2","10);","2.","2.1","2.2","20);","30);","40);","50);","60);","8",":","=",">s.contains(\"b\"))",">system.out.println(\"item",">system.out.println(item));",">{","a,b,c,d,","arraylist<>();","b","c","count","e\");","entri","entry.getkey()","entry.getvalue());","filter","for(str","foreach","foreach操作list","foreach操作map","hashmap<>();","if(\"c\".equals(item)){","if(\"e\".equals(k)){","item","items){","items.add(\"a\");","items.add(\"b\");","items.add(\"c\");","items.add(\"d\");","items.add(\"e\");","items.entryset())","items.foreach((k,v)","items.foreach(item","items.foreach(system.out::println);","items.put(\"a\",","items.put(\"b\",","items.put(\"c\",","items.put(\"d\",","items.put(\"e\",","items.put(\"f\",","items.stream()","iter","java","java8","javadoc","k","list","map","new","refer","system.out.println(\"hello","system.out.println(\"item","system.out.println(item);","v));","v);","{","}","});","使用java8的foreach+lambda表达式遍历map","参考资料:","在java8中使用foreach+lambda表达式遍历list","在这篇文章中我将向你演示如何使用java8中的foreach操作list和map","普通方式循环list","欢迎star开源web框架blade:http://github.com/biezhi/blad","正常方式遍历map"],"Hexo搭建博客.html":["hexo搭建博客"],"hexo/hello.html":["#","$","&&","'\\n#alia","(gzip",".bashrc",".zshrc","/sync/connect","1.","15分钟","2.","3.","4.",">>","[name]","\\","alia","blog","cache=$home/.npm/.cache/cnpm","cd","cli","cnpm","cnpm=\"npm","cnpm\\nalia","cnpmj","cnpmjs.org@0.4.1","cnpmjs.org是一个非常棒的npm国内镜像。由于其使用量越来越大,加上淘宝内部也有很多项目使用","connect","disturl=https://npm.taobao.org/dist","echo","g","helloworld","hexo","https://npm.taobao.org/sync/connect","init","instal","node.js@v0.11.12","nodejs会自动将bin写入环境变量,来试试是否安装成功","nodejs,于是,淘宝正式基于","npm","npm.taobao.org","npm:","open","registry.npm.taobao.org","registry.npmjs.org","registry=https://registry.npm.taobao.org","server","sourc","sync","userconfig=$home/.cnpmrc\"","userconfig=$home/.cnpmrc\"'","v命令查看nodejs版本。","web","~/.zshrc","一个新命令:","一次以保证尽量与官方服务同步。","上.","下一节:各种配置详解","下次你再安装这个模块的时候,","了解配置","从","会自动在后台进行同步,","你可以使用淘宝定制的","你可以直接通过","使用hexo搭建博客系列","使用说明","分分钟部署一个hexo环境","压缩支持)","去nodejs的官网下载:https://nodejs.org/en/download/","参数","只有","同步模块","命令","命令行工具代替默认的","命令行才有此功能:","命令马上同步一个模块,","哦):","因为我们安装了淘宝的npm,所以需要使用","安装hexo","安装nodej","安装了.","安装所有模块.","安装模块","官网的安装说明是","就会直接从","并且会让你从官方","当前","当安装的时候发现安装的模块还没有同步过来,","当然,","我使用的就是这个。","我的系统环境:win7_x64","或者你直接通过添加","按照官方教程(注意使用","推出了镜像服务","方式来同步:","是从","淘宝","淘宝的","然后按照提示一步一步安装即可,我装在了c盘,这个盘装了ssd会快一些。","直接通过","系统运行在","输入node","运行版本是:","这样就可以运行一个最简单的博客程序了~","这样就安装成功了!","这里我下载的是","进行全量同步的.","进行安装.","配置淘宝","镜像","镜像是一个完整的npmjs.org镜像。你可以用此代替官方版本(只读),同步频率目前为"],"hexo/config.html":["\"\"","\"0.0.0\",","\"^0.1.0\",","\"^0.1.2\"","\"^0.2.0\",","\"^0.2.4\",","\"^3.0.0\",","\"dependencies\":","\"hello","\"hexo","\"hexo\":","\"name\":","\"private\":","\"version\":","$","&",".","...","/path/to/cwd","10",":title.md,比如你执行命令hexo","[file2]","[folder]","[layout]","_config.yml","_config.yml站点配置文件,很多全局配置都在这个文件中。","_config.yml配置文件","_draft","_post","archive\":","archive_dir","archive目录","author","category\":","category_dir","category_map","cd","clean","cnpm","code_dir","config","custom","custom.yml","cwd","d","d,","date_format","dd的格式,其他格式模版可以查看moment.js|","debug","default_categori","default_layout","deploy","descript","display","draft","ejs\":","ejs,stylu","external_link","file","filename_cas","folder,后面有讲解","folder,默认为false,至于什么是asset","futur","g,","gener","g后也没有反应,就可以执行一下这个命令。","hello,就会默认在_post目录下创建一个hello.md的文件","hexo","hexo使用的moment.js来处理时间的。","highlight","http://localhost:4000/","i18n_dir","i18n目录","index\":","init","instal","l,","languag","list","log","markdown","marked\":","migrat","mm","mode","new","new_post_nam","o,","option","output","p,","package.json","package.json文件","pagination_dir","path","per_pag","permalink","permalink_default","port","post_asset_fold","public_dir","public目录,静态网站生成的地方,默认值为publ","publish","relative_link","render","render_draft","root","s,","safe","scaffold","script","server","server\":","silent","site\",","skip_rend","sourc","source_dir","source目录,默认值为sourc","static","stylus\":","subtitl","tag\":","tag_dir","tag_map","tag目录","theme","time_format","timezon","titl","titlecas","true,","url","version","w,","watch","world\"创建一篇叫hello","world的文章。","yyyy,一般我们喜欢使用yyyi","{","|","|日期格式,默认为mmm","|时间格式,默认为h:mm:ss|","}","},","└──","├──","一旦初始化,你的项目文件夹是这个样子:","一旦安装了hexo,运行以下命令初始化hexo在目录","一页显示多少篇文章,0","上一节:分分钟部署一个hexo环境","下一节:开始写作吧","下面依次介绍上面各个文件或者目录的用途:","不想被渲染的路径","为不分页,默认值为","主题文件夹。","主题配置,此处填上主题名就ok了,当然在themes目录下一定要有你配置的主题文件夹","仅服务静态文件","代码块设置","代码目录","作者名称","使用一个自定义配置文件替换默认_config.yml","使链接相对于根文件夹,默认fals","写作设置","准备启程","分类","分类目录","分类缩略名","分页","分页目录,默认值为page","列出所有路由","创建一篇文章,如果不指定layout,那么就使用_config.yml中default_layout的值,标题中如果有空格,将整个title放到引号中。","初始化一个网站。如果没有提供folder,hexo会在当前目录设置网站。","删除缓存文件db.json以及生成的public目录,当你修改了某些样式或者配置时,如果发现hexo","发布为草稿","各种配置详解","启动一个本地服务,默认情况下访问","命令","和","在新标签中打开一个外部链接,默认为true","如果网址是次级目录,比如:http://example.com/blog,那么就要设置url为http://example.com/blog,并且root要设置为/blog/。","安全模式,使所有插件和脚本不生效","就是放js文件的地方","应用数据。从它可以看出hexo版本信息,以及它所默认或者说依赖的一些组件。","应用数据,默认安装了","开启日志","扩展","指定端口","描述","描述|","放脚本的文件夹,","文章的永久网址链接,默认是:year/:month/:day/:title/,指的什么意思?比如我一篇叫『love』的文章是在2012年1月1日写的,那么它对应的链接就是http://yoururl/2012/01/01/love/","新建文章默认文件名,默认值为","日志详细信息输出到终端。","日期格式化","是否启用asset","是否显示未来日期文章,默认为true","是否渲染_drafts目录下的文章,默认为fals","显示hexo的版本信息到控制台","显示草稿文章(位于source/_drafts目录下)","来渲染。如果你不需要可以卸载它们。","标签","标签缩略名","模版文件。当你创建一篇新的文章时,hexo会依据模版文件进行创建,主要用在你想在每篇文章都添加一些共性的内容的情况下。","比如,hexo","渲染文件","生成完后直接部署","生成静态文件:","监控文件的改变","目录设置","站点副标题,会显示在首页上,可以不填","站点名字,也就是html的title,会显示在浏览器标签上","站点描述,可以不填","站点时区,默认是电脑时间","站点根目录","站点网址","站点配置文件,你可以在这里进行大多数配置。","网站设置","脚手架文件夹。当你创建一个新文章,hexo基于scaffolds文件夹里的类型来创建。","脚本文件夹。扩展hexo最简单的方法,它会自动执行这个文件夹下的javascript文件。","自定义当前工作目录路径,假如你没在工作目录下,可以使用这个命令指定一下工作目录路径","表示在部署前先重新生成一下站点","语言","转换文件名,1代表小写;2代表大写;默认为0,意思就是创建文章的时候,是否自动帮你转换文件名,默认就行,意义不大","输出到指定文件,我没用过","迁移到其他模块的命令。","这个文件夹就是放文章的地方了,除了文章还有一些主要的资源,比如文章里的图片,文件等等东西。这个文件夹最好定期做一个备份,丢了它,整个站点就废了。","选项","部署你的站点","部署配置,将本地public目录也就是网站部署到服务器上的配置","配置","链接设置","静默模式,不在终端上显示任何信息","默认分类,默认为无分类,当然你可以设置一个默认分类。","默认布局"],"hexo/writing.html":["\"2013/7/13","\"date\":","\"hello","\"mi","\"title\":","$","%}","&",")|","/","/archives/","/gallery/","/path/to/imag","1.","10","192.168.1.1","2.","20","2013/7/13","20:46:25","20:46:25\"","20];","3.","4.","5.","5000","6.","7.","8.",":day",":i_day",":i_month",":month",":titl",":title.md",":year",";;;","@devdoc","@devdocs——twitter.com/devdocs/status/356095192085962752","[alt","[author[,","[branch]","[class","[external]","[filename]","[height]","[lang:language]","[layout]","[link","[link]","[message]","[rectangl","[source_link_title]","[titl","[title]","[url]","[width]","_config.yml","`site","adipisc","alert('hello","aliquam","all.","amet,","archives:","asset_img","asset_link","asset_path","awak","basebal","block","blockquot","both","branch","branch:","categori","categories:","code","codeblock","come","comment","consectetur","content","curabitur","custom","date","date:","david","dd","delight.","deploy","deploy:","devdoc","diam","dolor","draft","drafts(草稿)","draft。不同布局的文章会被保存到不同的目录,这取决于它的布局类型。","eaddrinus","eget","elit,","elit.","endblockquot","endcodeblock","endfor","eu","fermentum","feugiat.","fight","filename(文件名)","files』功能。这个特性加载","gallery\"","gallery:","gener","gist","gist_id","git","github仓库地址","godin","godin——welcom","happi","height:","hello","hendrerit","heroku","hexo","hexo为部署提供了一个快速、简单的方法。你只需要一个命令将网站部署到服务器。","hexo提供了3个默认布局:post、pag","hexo提供了一个更加方便的方式来管理资源。你可以修改","hexo生成静态文件非常简单、高效。","hexo立即可以看到文件更改并重新生成文件。hexo将比较sha1校验和文件和只写文件的改变。","hexo运行服务器在默认0.0.0.0。你可以覆盖默认的ip设置","hh:mm:ss\")","highlighting.","home:","http://devdocs.io","http://localhost:4000。","http://sethgodin.typepad.com/seths_blog/2009/07/welcom","https://twitter.com/devdocs/status/356095192085962752","iaculi","ifram","imag","img","injuri","instal","interact","ip","ipsum","island","json方式,以三分号结束","kindness.","lacu","lang:objc","layout","layout:false。","layout(布局)","levithan,","levithan——wid","link","loop.key","lorem","lorem.","market","marketing.html","menu.yml","mercy.","messag","message:","mm","mode","names]","nec","neque.","new","new:","new_post_nam","new。","now","now(\"yyyi","npm","opportun","p","page","pellentesqu","permalink","photo","photo.md","post","post_asset_fold","post_asset_folder:","preciou","publish","puru","qui","quote(块引用)","render_draft","repo","repo:","s","save","scaffold","scaffolds(模版)","sed","seek","semper","server","seth","setx:","shock","sit","site.data.menu","slug","snippet","sourc","source/_data","source/_draft","source/_post","source]]","sport","static","syntax","tag","tags:","tempor","text","text]","text]]","through","titl","title:","true","type","type:","updat","updated:","url","ut","watch","welcom","wide","width:","world","world!');","world\",","y:","yaml方式,以三短线结束","yourself.","{%","{{","|","|定制提交消息(默认为","}}","}}`","一旦","一旦服务器安装,运行以下命令启动服务器。","上一节:各种配置详解","下面是一个例子:","不处理文章!","中的","之前启动服务器,通常用于生产环境。","代码块","你可以将该文章关联的资源全部放到该目录下。这样就可以更加方便的使用它们了。","你可以编辑","你可用同时部署到多个type,hexo将依次执行每个部署。","你可用在模板中使用它们:","使hexo显示草稿。","使用下面的命令创建一个新文章:","例如","例如在","修改设置。一个有效的部署设置必须有","修改默认布局。","分支名称","分类","分类和标签只支持在文章。分类可能会有多层级别。","创建年份","别名:code","别名:quot","前置申明","前置申明的意思是写在文章前面的一块内容,为了对文章进行某些设置。它有两种书写方式:","前面hexo提到一个特殊的布局:draft。","占位符","发布时间","发布时间,默认为文件创建时间","命令移动草稿到","和","在hexo3中,服务器模块从主模块中分开了,你可以通过安装","在我们开始之前,你必须在","在静态模式下,public","如果你不希望你的文章被处理,你可以设置","如果你想修改端口或遇到","字段。例如:","安装","将前缀的文件名后创建日期。你可以使用以下的占位符:","布局","开始写作","开始写作吧","引用一本书","引用网络上一篇文章","引用自twitter","当你运行这个命令,要尝试在","当创建一篇文章,hexo将构建基于","当服务器正在运行时,hexo将自动监控文件更改和更新。你不需要重新启动服务器。","指定语言","描述","描述|","插入引号与作者、来源和文章的标题。","数据文件","文件修改时间","文件夹。","文件夹。你可以使用","文件夹下找到文件名为","文件夹中添加","文件夹中的相应文件。例如:","文件夹的监控的禁用的。你必须运行","文章中插入代码块","文章所属分类","文章标签","文章标题","文章永久链接,一般不用写,默认就行","日期","是否开启评论,默认为true","普通代码块","更多...","月份,单数字,比如4月就是4","月份,如4月为04","有时,你可能会使用一些不在post中的模版数据,或者你想复用这些数据,","服务器","来使用它。","标签","标签插件","标签插件使用","没有任何参数,纯输出blockquot","生成器","的","的模板文件。下面占位符可以使用模板:","监听文件修改","目录中的yaml或者json文件,从而用到你的网站中。","示例","编辑设置:","自定义布局保存到","草稿默认不显示,你可以添加","设置","设置。","设置以及默认值","设置启用,在你创建文章的时候,hexo会创建一个同名目录,","设置改变默认的文件名。","资源是非文章的文件,在source文件夹中,如图片、css、javascript文件等。","资源目录x","路径","这个命令类似于你使用了","这种布局的帖子保存到","这里的标签插件不是文章中的标签,它可以帮助你在文章中插入特定的一些内容。","选项","选项或者设置","选项来设置其他端口。","那么你可以试用一下hexo3中的『data","部署","部署后生成","部署生成后,您可以运行以下命令之一,这2个命令使用结果相同。","错误。您可以添加","默认你的网站将会运行在","默认情况下,hexo使用文章标题作为文件名。","默认的文章布局是post,当然你可用提供自己的布局文件。你可以编辑"],"开发者指南.html":["开发者指南"],"git/guide.html":["\"代码提交信息\"","(l)","(osx)","(osx,","*","/path/to/repositori","1.0.0","10","1b2e1d63ff",";)","add","app","b","branch","checkout","clone","color.ui","commit","config","d","diff","feature_x","fetch","format.pretti","git","gitbox","github","gitk","gitx","git:","hard","head","head,但是还没到你的远端仓库。","head,它指向你最后一次提交的结果。","id","id:","init","linux","log","m","mac","master","master),执行:","merg","onelin","origin","origin/mast","osx","pull","push","remot","reset","sourc","store)","svn","tag","tower","tree","true","username@host:/path/to/repositori","window","下载","不为他人所见的:","专业","中也有。你可以执行如下命令创建一个叫做","中了。执行如下命令以将这些改动提交到远端仓库:","中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。","为软件发布创建标签是推荐的。这个概念早已存在,在","交互式添加文件到暂存区:","仓库。","以创建新的","以在你的工作目录中","位字符。可以使用下列命令获取提交","你也可以使用少一点的提交","你可以提出更改(把它们添加到暂存区),使用如下命令:","你的改动现在已经在本地仓库的","你的本地仓库由","假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:","假如你操作失误(当然,这最好永远不要发生),你可以使用如下命令替换掉本地改动:","像","免费)","内建的图形化","再把新建的分支删掉:","分支","分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master","切换回主分支:","创建一个叫做“feature_x”的分支,并切换过去:","创建新仓库","创建新文件夹,打开,然后执行","前几位,只要它的指向具有唯一性。","助你入门","可以把","合并(merge)","图形化客户端","图解","在合并改动之前,你可以使用如下命令预览差异:","在这两种情况下,git","基本工作流程的第一步;使用如下命令以实际提交改动:","如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:","如果是远端服务器上的仓库,你的命令会是这个样子:","如此你就能够将你的改动推送到所添加的服务器上去了。","安装","实用小贴士","工作流","工作目录,它持有实际文件;第二个是","帮助","并","开源软件)","彩色的","执行如下命令以创建一个本地仓库的克隆版本:","指南和手册","换成你想要推送的任何分支。","推送改动","是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。","是你想要标记的提交","显示历史记录时,每个提交的信息只显示一行:","暂存区(index),它像个缓存区域,临时保存你的改动;最后是","更新与合并","替换本地改动","标签","检出仓库","此命令会使用","添加和提交","版","现在,你的改动已经提交到了","的前","的标签:","的简明指南,木有高深内容","社区参考书","简明指南","维护的三棵“树”组成。第一个是你的","获取(fetch)","要合并其他分支到你的当前分支(例如","要更新你的本地仓库至最新改动,执行:","输出:","这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:","这是","远端的改动。","那样思考","都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。","链接与资源","除非你将分支推送到远端仓库,不然该分支就是"],"user_guide/google-java8-guide.html":["\"\\u03bcs\";","\"ann\");","\"can\",","\"change\"};","\"inner","\"new","\"non","\"s\"","\"support","\"xml","\"youtub","\"μs\"","\"μs\";","&","&","'\\ufeff'","(condition())","(egyptian","(fooexcept","(input)","(nosuchelementexcept","(numberformatexcept","(problemexcept","*","*/","*/。","*/注释,后续行必须从*开始,","*/风格,也可以是//","*/,这是不正确的。它应该写成/**","+","...","...;","...风格。对于多行的/*","/*","/**","//","0,","1,","1.1","1.2","1:","2,","2.1","2.2","2.3","2.3.1","2.3.2","2.3.3","2:","3","3.1","3.2","3.3","3.3.1","3.3.2","3.3.3","3.4","3.4.1","3.4.2","3.4.2.1","3:","3}","4.1","4.1.1","4.1.2","4.1.3","4.2","4.3","4.4","4.5","4.5.1","4.5.2","4.6","4.6.1","4.6.2","4.6.3","4.7","4.8","4.8.1","4.8.1节给出了enum类的一些例外。","4.8.2","4.8.2.1","4.8.2.2","4.8.3","4.8.3.1","4.8.3.2","4.8.4","4.8.4.1","4.8.4.2","4.8.4.3","4.8.5","4.8.6","4.8.6.1","4.8.7","5,","5.1","5.2","5.2.1","5.2.2","5.2.3","5.2.4","5.2.5","5.2.6","5.2.7","5.2.8","5.3","5;","6","6.1","6.2","6.3","6.4","6}和new","7.1","7.1.1","7.1.2","7.1.3","7.2","7.3","7.3.1","7.3.2","7.3.3","8","8。",":",";及右括号())后","=","@deprecated,","@mock","@nullabl","@overrid","@override:能用则用","@partial","@return","@return,","@someannotation({a,","@throws,","\\f,","\\n,","\\r,","\\t,","\\‘及$$,我们使用它的转义序列,而不是相应的八进制(比如12)或unicode(比如\\u000a)转义。","\\“,","a,","a...或thi","abstract","afoo","afoo.astaticmethod();","algorithm”。","algorithm”将变成”muel","args[]。","args,","b;。","bad","bar>)。","barexcept","bit","brackets):","break;","byte","b})(不使用空格)。","case","catch","catch)。","catch块中的管道符号(catch","catch等)。","clubs,","color","color;","com,","com.googl","comma_join","comments),我们不使用“document","comments”一词,而是用javadoc。","constant","construct)指的是一个类,方法或构造函数的主体。需要注意的是,数组初始化中的初始值可被选择性地视为块状结构(4.8.3.1节)。","content;","continu","continue,","correct","custom","dataload","default:","default的情况要写出来","diamond","do,","donothing()","e)","e)。","edit","else,","empty_array","emptystack.pop();","empty”都是正确的,因此方法名checknonempty和checknonempty也都是正确的。","enum","enum_const","especi","even","expected)","extend","fail();","fall","final","final\";","finalizers:","finalizers”,然后不要使用它。","fine","fine,","foo","foo.astaticmethod();","foo:或default:),后面跟着一条或多条语句。","foo;(大括号间没有空格,见下面的note)。","foobart)。","foo”,确实也没有什么值得写了。","for,","foreach语句中的分号。","form","form)开始:","futur","getnameifpresent()","good","good,对于非打印字符,使用转义,并在必要时写上注释","googl","greek","handlelargenumber(input);","handlenumericresponse(i);","handleonetwoorthree();","handletextresponse(response);","hashcode()","hashset<string>();","hearts,","here,","http","id","id\"","id.","immut","immutablelist<string>","immutablelist.of(\"ed\",","immutableset<somemutabletype>","immutableset.of(mutable);","import","importer\"","imports(仅当这个源文件是在com.google包下)","import不要使用通配符","import语句","import语句不换行,列限制(4.4节)并不适用于import语句。(每个import语句独立成行)","import语句可分为以下几组,按照这个顺序,每组由一个空行分隔:","incorrect","info.java,该文件中可没有packag","info类。","innerstopwatch","int","int[]","integer.parseint(response);","ios?\"","ipv6","it'","java","java.util.*;","javadoc","javadoc.","javadoc块的基本格式如下所示:","javadoc标记","javax","java编程风格指南","java编程风格规范的完整定义。当且仅当一个java源文件符合此文档中的规则,","joiner","joiner.on(',');","junit,","leav","letter","line","list。","loader;","logger","logger.getlogger(myclass.getname());","mark","method","method()","method(str","mname,","modifi","mu,","multipl","mutablecollect","mutableel","myclass()","name","name指的是什么。","nativ","new","newcustomerid","nonemptyarray","nonfin","nonstat","normally...","note:在英语中,某些带有连字符的单词形式不唯一。例如:”nonempty”和”non","note:这个规则并不要求或禁止一行的开关或结尾需要额外的空格,只对内部空格做要求。","number","numeric;","ok)","okay.","order","org,","p1)","package和import语句(见3.2节和3.3节)。","package语句","package语句不换行,列限制(4.4节)并不适用于package语句。(即package语句写在一行里)","permitted,","prepareoneortwo();","privat","prose","protect","public","r","record...。然而,由于开头大写及被加了标点,它看起来就像是个完整的句子。","recover();","request\"","return","returns...开头,","return或抛出异常来终止,要么通过一条注释来说明程序将继续执行到下一个语句组,","s_name和kname,在java编程风格中都不再使用。","set<string>","short","someenum","somemutabletype[]","something();","somethingthatyieldsafoo().astaticmethod();","spades,","static","static\";","stopwatch\"","strictfp","string","string[]","string[][]","suit","sun","supportsipv6onio","switch","switch语句","synchron","t,","t2)。","text","that'","this.","through","through)。这个特殊的注释并不需要在最后一个语句组(一般是default)中出现。示例:","through:注释","tip:","tip:一个常见的错误是把简单的javadoc写成/**","tip:不要使用finalize。如果你非要使用它,请先仔细阅读和理解effect","tip:在写多行注释时,如果你希望在必要时能重新换行(即注释像段落风格一样),那么使用/*","tip:如果有一些相关信息是需要读者了解的,那么以上的例外不应作为忽视这些信息的理由。例如,对于方法名getcanonicalname,","tip:对齐可增加代码可读性,但它为日后的维护带来问题。考虑未来某个时候,我们需要修改一堆对齐的代码中的一行。","transient","tri","try/catch/finally)","unalign","unitabbrev","veri","void","volatil","while语句一起使用,即使只有一条语句(或是空),也应该把大括号写上。","words”)。","wrap","wrapping)。","written","x","x,","x;","xmlhttprequest","youtubeimport","youtubeimporter*","{","{\"these\",","{0,","{5,","{@codefoo}","{}","{};","|","}","};","}都是可以的。","一个源文件包含(按顺序地):","一个空的块状结构里什么也不包含,大括号可以简洁地写成{},不需要换行。例外:如果它是一个多块语句的一部分(if/els","一个顶级类(只有一个)","一个项目可以选择一行80个字符或100个字符的列限制,除了下述例外,任何一行如果超过这个字符数限制,必须自动换行。","一般形式","一行一个语句","下划线可能出现在junit测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test<methodundertest>_<state>,例如testpop_emptystack。","不可能满足列限制的行(例如,javadoc中的一个长url,或是一个长的jsni方法参考)。","不要使用组合声明,比如int","不要在一个代码块的开头把局部变量一次性都声明了(这是c语言的做法),而是在第一次需要使用它时才声明。","不要换行","与其它块状结构一致,switch块中的内容缩进为2个空格。","与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题,","中括号是类型的一部分:string[]","从哪里断开","以上每个部分之间用一个空行隔开。","以下情况需要使用一个空行:","以下示例先展示未对齐的代码,然后是对齐的代码:","以类命名方式(5.2.2节),后面加个大写的t(如:requestt,","任何能表达这个意思的注释都是ok的(典型的是用//","你就会去fix这些问题的了。(言下之意就是大胆去用非ascii字符,如果真的有需要的话)","使用大括号(即使是可选的)","使用类名调用静态的类成员,而不是具体某个对象或表达式。","例外:","例外:packag","例外:不言自明的方法","例外:两个连续字段之间的空行是可选的,用于字段的空行主要用来对字段进行逻辑分组。","例外:单个的注解可以和签名的第一行出现在同一行。例如:","例外:在测试中,如果一个捕获的异常被命名为expected,则它可以被不加注释地忽略。下面是一种非常常见的情形,用以确保所测试的方法会抛出一个期望中的异常,","例外:重载","例如:","允许,但没有理由要这样做","允许,但这样做显得笨拙还容易出错","其他的术语说明会偶尔在后面的文档出现。","具体结构","分隔任何保留字与其前面的右大括号(})(如else,","分隔任何保留字与紧随其后的左括号(()(如if,","列限制:80或100","制表符不用于缩进。","前言","前面这4种标记如果出现,描述都不能为空。","加星号处表示可以,但不推荐。","包名","包名全部小写,连续的单词只是简单地连接起来,不使用下划线。","单个的大写字母,后面可以跟一个数字(如:e,","单元测试类中的测试方法可能是不言自明的最常见例子了,我们通常可以从这些方法的描述性命名中知道它是干什么的,因此不需要额外的文档说明。","即使局部变量是final和不可改变的,也不应该把它示为常量,自然也不能用常量的规则去命名它。","即,不要出现类似这样的import语句:import","参数名","参数名以lowercamelcase风格编写。","参数和局部变量注解没有特定规则。","参数应该避免用单个字符命名。","变量声明","只是永远不打算改变对象一般是不够的,它要真的一直不变才能将它示为常量。","只有一个顶级类声明","只要是合法的,就把@override注解给用上。","可选的javadoc","右大括号前换行","同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则,","名字从散文形式(prose","否则不换行。例如,如果右大括号后面是else或逗号,则不换行。","命名约定","哪里需要使用javadoc","因此在这里就没有必要加注释。","在,","在google其它编程语言风格中使用的特殊前缀或后缀,如name_,","在一个switch块内,每个语句组要么通过break,","在任何二元或三元运算符的两侧。这也适用于以下“类运算符”符号:","在任何左大括号前({),两个例外:","在使用unicode转义符或是一些实际的unicode字符时,建议做些注释给出解释,这有助于别人阅读和理解。","在函数体内,语句的逻辑分组间使用空行。","在本文档中,除非另有说明:","块注释与其周围的代码在同一缩进级别。它们可以是/*","块注释风格","块缩进:2个空格","垂直空白","基本格式总是ok的。当整个javadoc块能容纳于一行时(且没有javadoc标记@xxx),可以使用单行形式。","多个连续的空行是允许的,但没有必要这样做(我们也不鼓励这样做)。","大括号","大括号与if,","如果一个文件包含许可证或版权信息,那么它应当被放在文件最前面。","如果一个方法重载了超类中的方法,那么javadoc并非必需的。","如果右大括号是一个语句、函数体或类的终止,则右大括号后换行;","如果在一条语句后做注释,则双斜杠(//)两边都要空格。这里可以允许多个空格,但没有必要。","如果在赋值运算符处断开,通常的做法是在该符号后断开(比如=,它与前面的内容留在同一行)。这条规则也适用于foreach语句中的分号。","如果在非赋值运算符处断开,那么在该符号前断开(比如+,它将位于下一行)。注意:这一点与google其它语言的编程风格不同(如c++和javascript)。","如果它确实是不需要在catch块中做任何响应,需要做注释加以说明(如下面的例子)。","它也不会是一个完整的祈使句,如save","对于具有特殊转义序列的任何字符(\\b,","对于剩余的非ascii字符,是使用实际的unicode字符(比如∞),还是使用等价的unicode转义符(比如\\u221e),取决于哪个能让代码更易于阅读和理解。","对于包外不可见的类和方法,如有需要,也是要使用javadoc的。如果一个注释是用来定义一个类,方法,字段的整体目的或行为,","对于简单明显的方法如getfoo,javadoc是可选的(即,是可以不写的)。这种情况下除了写“return","对于那些不是明确强制要求的,我们尽量避免提供意见。","对于非空块和块状结构,大括号遵循kernighan和ritchie风格","对所有标识符都通用的规则","就不应该忽视文档说明,因为读者很可能不知道词语canon","局部变量名","局部变量名以lowercamelcase风格编写,比起其它类型的名称,局部变量名可以有更为宽松的缩写。","局部变量在声明时最好就进行初始化,或者声明后尽快进行初始化。","左大括号前不换行","左大括号后换行","常量名","常量名命名模式为constant_case,全部字母大写,用下划线分隔单词。那,到底什么算是一个常量?","并不存在唯一正确的方式来命名测试方法。","并且与前一行的*对齐。以下示例注释都是ok的。","应用于字段的注解紧随文档块出现,应用于字段的多个注解允许与字段出现在同一行。例如:","当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数/方法。","当存在连续自动换行时,缩进可能会多缩进不只4个空格(语法元素存在多级时)。一般而言,两个连续行使用相同的缩进当且仅当它们开始于同级语法元素。","当描述无法在一行中容纳,连续行需要至少再缩进4个空格。","很糟,读者根本看不出这是什么","我们并没有全面,确定性的准则来决定在每一种情况下如何自动换行。很多时候,对于同一段代码会有好几种有效的自动换行方式。","我们才认为它符合google的java编程风格。","我们没有理由假设读者能记住整个java运算符优先级表。","或","或者是以下单行形式:","所有其它字符串中的空白字符都要进行转义。","所有的静态导入独立成组","把短语转换为纯ascii码,并且移除任何单引号。例如:”müller’","把这个结果切分成单词,在空格或其它标点符号(通常是连字符)处分割开。","指南说明","捕获的异常:不能忽视","推荐:如果某个单词已经有了常用的驼峰表示形式,按它的组成将它分割开(如”adwords”将分割成”ad","提取方法或局部变量可以在不换行的情况下解决代码过长的问题(是合理缩短命名长度吧)","摘要片段","数组","数组初始化中,大括号内的空格是可选的,即new","数组初始化可以写成块状结构,比如,下面的写法都是ok的:","数组初始化:可写成块状结构","文件名","文件编码:utf","新的方法不能总是习惯性地添加到类的结尾,因为这样就是按时间顺序而非某种逻辑来排序的。","方法名","方法名或构造函数名与左括号留在同一行。","方法名通常是动词或动词短语。","方法名都以lowercamelcase风格编写。","最后将所有的单词连接起来得到一个标识符。","最重要的一点,每个类应该以某种逻辑去排序它的成员,维护者应该要能解释这种排序逻辑。比如,","有时,我们有不只一种合理的方式将一个英语词组转换成驼峰形式,如缩略语或不寻常的结构(例如”ipv6″或”ios”)。google指定了以下的转换方案。","本文档中的示例代码并不作为规范。也就是说,虽然示例代码是遵循google编程风格,但并不意味着这是展现这些代码的唯一方式。","术语class可表示一个普通类,枚举类,接口或是annotation类型(@interface)","术语comment只用来指代实现的注释(implement","术语说明","术语说明:switch块的大括号内是一个或多个语句组。每个语句组包含一个或多个switch标签(cas","术语说明:一般情况下,一行长代码为了避免超出列限制(80或100个字符)而被分为多行,我们称之为自动换行(line","术语说明:块状结构(block","术语说明:水平对齐指的是通过增加可变数量的空格来使某一行的字符与上一行的相应字符对齐。","极少会去重载object.finalize。","枚举常量间用逗号隔开,换行可选。","枚举类","标准的javadoc标记按以下顺序出现:@param,","标识符只能使用ascii字母和数字,因此每个有效的标识符名称都能匹配正则表达式\\w+。","标识符类型的规则","格式","段落","每个switch标签后新起一行,再缩进2个空格,写下一条或多条语句。","每个switch语句都包含一个default语句组,即使它什么代码也不包含。","每个单词的第一个字母都大写,来得到大驼峰式命名。","每个常量都是一个静态final字段,但不是所有静态final字段都是常量。在决定一个字段是否是一个常量时,","每个类或成员的javadoc以一个简短的摘要片段开始。这个片段是非常重要的,在某些情况下,它是唯一出现的文本,比如在类和方法索引中。","每个语句后要换行。","每个顶级类都在一个与它同名的源文件中(当然,还包含.java后缀)。","每当开始一个新的块,缩进增加2个空格,当块结束时,缩进返回先前的缩进级别。缩进级别适用于代码和注释。(见4.1.2节中的代码示例)","每次只声明一个变量","水平对齐:不做要求","水平空白","永远不要由于害怕某些程序可能无法正确处理非ascii字符而让你的代码可读性变差。当程序无法正确处理非ascii字符时,它自然无法正确运行,","没有方法和文档的枚举类可写成数组初始化的格式:","注解(annotations)","注解紧跟在文档块后面,应用于类、方法和构造函数,一个注解独占一行。这些换行不属于自动换行(第4.5节,自动换行),因此缩进级别不变。例如:","注释","注释不要封闭在由星号或其它字符绘制的框架里。","注释中那些可能被剪切并粘贴到shell中的命令行。","测试类的命名以它要测试的类的名称开始,以test结束。例如,hashtest或hashintegrationtest。","源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java。","源文件基础","源文件结构","源文件编码格式为utf","特殊字符","特殊转义序列","现在将所有字母都小写(包括缩写),然后将单词的第一个字母大写:","用小括号来限定组:推荐","由于枚举类也是一个类,因此所有适用于其它类的格式规则也适用于枚举类。","示例中的格式选择不应该被强制定为规则。","示例:","禁用","空块:可以用简洁版本","空白","空白字符","空行(即,只包含最左侧星号的行)会出现在段落之间和javadoc标记(@xxx)之前(如果有的话)。","第4.6.3水平对齐一节中指出,不鼓励使用可变数目的空格来对齐前面行的符号。","第7条款:“avoid","第三方的包。每个顶级包为一组,字典序。例如:android,","类内的第一个成员前或最后一个成员后的空行是可选的(既不鼓励也不反对这样做,视个人喜好而定)。","类内连续的成员之间:字段,构造函数,方法,嵌套类,静态初始化块,实例初始化块。","类名","类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。现在还没有特定的规则或行之有效的约定来命名注解类型。","类名都以uppercamelcase风格编写。","类和成员的modifiers如果存在,则按java语言规范中推荐的顺序出现。","类型变量可用以下两种风格之一进行命名:","类型变量名","类型和变量之间:list","类型界限中的&(<t","类声明","类成员顺序","类的成员顺序对易学性有很大的影响,但这也不存在唯一的通用法则。不同的类对成员的排序可能是不同的。","组内不空行,按字典序排列。","编程实践","缩进","考虑它是否真的感觉像是一个常量。例如,如果任何一个该实例的观测状态是可变的,则它几乎肯定不会是一个常量。","而非string","自动换行","自动换行时缩进至少+4个空格","自动换行时,第一行后的每一行至少比第一行多缩进4个空格(注意:制表符不用于缩进。见2.3.1节)。","自动换行的基本准则是:更倾向于在更高的语法级别处断开。","至少在每个public类及它的每个public和protected成员处使用javadoc,以下是一些例外:","虽然缩写更宽松,但还是要避免用单字符进行命名,除了临时变量和循环变量。","要满足本文档中其他节的空行要求(比如3.3节:import语句)","许可证或版权信息","许可证或版权信息(如有需要)","赞,即使没有注释也非常清晰","这些名字通常是名词或名词短语。","这份文档是googl","这只是一个小片段,可以是一个名词短语或动词短语,但不是一个完整的句子。它不会以a","这可能导致原本很漂亮的对齐代码变得错位。很可能它会提示你调整周围代码的空白来使这一堆代码重新水平对齐(比如程序员想保持这种水平对齐的风格),","这就会让你做许多的无用功,增加了reviewer的工作并且可能导致更多的合并冲突。","这是允许的(而且在不少地方可以看到这样的代码),但google编程风格对此不做要求。即使对于已经使用水平对齐的代码,我们也不需要去保持这种风格。","这条规则也适用于以下“类运算符”符号:点分隔符(.),类型界限中的&(),catch块中的管道符号(catch","逗号(,)与其前面的内容留在同一行。","那么这个注释应该写成javadoc,这样更统一更友好。","重载:永不分离","除了下面的例子,对捕获的异常不做响应是极少正确的。(典型的响应方式是打印日志,或者如果它被认为是不可能的,则把它当作一个assertionerror重新抛出。)","除了第一个单词,每个单词的第一个字母都大写,来得到小驼峰式命名。","除了第一个段落,每个段落第一个单词前都有标签<p>,并且它和第一个单词间没有空格。","除了行结束符序列,ascii水平空格字符(0×20,即空格)是源文件中唯一允许出现的空白字符,这意味着:","除了语言需求和其它规则,并且除了文字,注释和javadoc用到单个空格,单个ascii空格也出现在以下几个地方:","除非作者和reviewer都认为去掉小括号也不会使代码被误解,或是去掉小括号能让代码更易于阅读,否则我们不应该去掉小括号。","需要时才声明,并尽快进行初始化","需要注意的是”ios”并不是一个真正的驼峰表示形式,因此该推荐对它并不适用。","静态成员:使用类进行调用","非ascii字符","非c风格的数组声明","非常量字段名","非常量字段名以lowercamelcase风格编写。","非空块:k","顺序和间距","风格","驼峰式命名法(camelcase)","驼峰式命名法分大驼峰式命名法(uppercamelcase)和小驼峰式命名法(lowercamelcase)。",",即使大括号内没内容,右大括号也要换行。"],"运维相关.html":["运维相关"],"web/test_tool.html":["%","&&","./ab","./configur","//55.00","//共数据传输1.15","//均每秒完成","//失败处理次数","//完成550次处理","//实际最高并发数","//平均每秒传送数据","//总共用时","//成功处理次数","//显示网络连接的速度","//每次传输所花最短时间","//每次传输所花最长时间","0.04","0.42","1.15","1.5","1.5.tar.gz","10","100","1000","10212.4","1191.01","127","12mar2006","12mar2006.tar.gz","130","13055.6","1319.57","15.50","166","17.56","200","209.994","220.78","294","3.04","3.83835e+06","30","300","31.32","312.009","4.89979","433","450","5","502","53.44","55.00","550","60","60.0026","63969.7","ab","ab是apache自带的一款功能强大的测试工具。","availability:","bytes,","bytes/connect","bytes/sec","c","cd","code","codes:","concurrency:","c是并发量,","data","elaps","f","fail","fetch","fetches,","fetches/sec,","fetches/sec、msecs/connect","hit","http","http://www.baidu.com","http://www.baidu.com/index.php","http://www.domain.com/","http://www.domain.com/article/1.html","http://www.domain.com/article/2.html","http://www.domain.com/article/3.html","http://www.domain.com/article/4.html","http://www.domain.com/article/5.html","http://www.domain.com/article/6.html","http://www.domain.com/article/7.html","http://www.domain.com/blog/","http://www.domain.com/signin/","http://www.domain.com/signup/","http://www.qixing.info/","http://www.qixing318.com/","http://www.zendsns.com/","http_load","http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。","instal","latest.tar.gz","latest/","longest","make","max","max,","mb","mb/sec","mean","mean,","min","msec","msecs/connect:","msecs/first","msecs,最大的响应时间1319.57","msecs,最小的响应时间209.994","n","p","parallel","parallel,","qpt","r","rate","rate:","respons","response:","r是重复次数。","s","sec","second","shortest","sieg","siege下载:http://www.joedog.org/pub/siege/sieg","siege使用:","siege官方:http://www.joedog.org/","siege解压并安装:","site.url","site.url内容:","success","t","tar","throughput:","time:","time,每连接响应用户时间。","trans/sec","transact","transaction:","transactions:","transferred:","url","urllist.txt","url文件就是一个文本,每行都是一个url,它会从里面随机访问的。","webbench","webbench是linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力。","web性能测试工具","web服务器性能压力测试工具","zxvf","一款开源的压力测试工具,可以根据配置对一个web站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。","下载地址可以到google搜,我这里给出一个","下载地址:http://soft.vpser.net/test/webbench/webbench","下载地址:http_load","也是可以的。","会在当前目录生成webbench可执行文件,直接可以使用了","但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。","例如:","准备url文件:urllist.txt,文件格式是每行一个url,url最好超过50-100个测试效果比较好。","参数了解了,我们来看运行一条命令来看看它的返回结果如下:","参数众多,一般我们用到的是","参数其实可以自由组合,参数之间的选择并没有什么限制。","和","基本用法:","如果403的类型过多,那可能要注意是否系统遇到了瓶颈。","安装了apache一般就自带了。","安装很简单","安装非常简单","并发数","并发访问进程数","当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的cpu、men进行分析,才能得出结论。","成功率","我们把参数给大家简单说明一下。","文件格式如下:","次处理:表示服务器后","每秒响应用户数和respons","比如你写成","测试的结果主要也是看这两个值。","测试结果:","测试结果中主要的指标是","特殊说明:","用法可以查看它的说明","用法:webbench","用这个指标来衡量性能。似乎比apache的ab准确率要高一些,也更有说服力一些。","目录","程序非常小,解压后也不到100k","简写","结果分析:","结果说明:","访问时间","说明在上面的测试中运行了294个请求,最大的并发进程数是30,总计传输的数据是3.83835e+06bytes,运行的时间是60.0026秒","说明打开响应页面的类型","说明每一连接平均传输的数据量3.83835e+06/294=13055.6","说明每秒的响应请求为4.89979,每秒传递的数据为63969.7","说明每连接的平均响应时间是312.009","运行测试时间","还可以测试https类的网站请求。","这个程序更小,解压后不到50k,呵呵","这个表示同时处理1000个请求并运行130次index.php文件。","这个选项,即服务器每秒能够响应的查询次数。","需要访问的url文件",":含义是并发的用户进程数。",":含义是总计的访问时间",":含义是总计的访问次数",":含义是每秒的访问频率"],"learn_server/":["nginx+startssl配置http","star","中级篇","优化mysql配置","优化nginx配置","优化tomcat8","使用jemeter测试tomcat性能","写给java开发的运维笔记","初始化操作系统","初级篇","在虚拟机里安装centos6","安装jdk环境","安装mysql及配置","安装nginx","安装redis3","安装svn服务","安装tomcat","对于java开发人员,掌握基本的运维技能是必须的,如果你还不熟悉linux环境,可以看这个教程。如果你觉得这个笔记还不错记得给这个项目一个","配置tomcat+nginx反向代理","配置tomcat为服务","配置多个tomcat","😊"],"经典文章.html":["经典文章"],"articles/request_message.html":["\"737060cd8c284d8af7ad3082f209582d\"","//不但会设置location的响应报文头,还会生成303的状态码呢,两者天仙配呢","//添加cookie报文头属性","//添加一个响应报文头属性","//获取客户端本地化信息(读取","//获取报文头中的cookie(读取cookie的报文头属性)","//获取指定名称的报文头属性的值","//获取请求报文中的属性名称","//获取请求报文体的长度(读取content","//设置状态码,状态码在httpservletresponse中通过一系列的常量预定义了,如sc_accepted,sc_ok","1.ie系","1xx","2.chrome,firefox","200","2xx","3.0提供了一个hiddenhttpmethodfilter,允许你通过“_method”的表单参数指定这些特殊的http方法(实际上还是通过post提交表单)。服务端配置了hiddenhttpmethodfilter后,spring会根据_method参数指定的值模拟出相应的http方法,这样,就可以使用这些http方法对处理方法进行映射了。","3.0还专门为此提供了一个","303","304","3xx","404","4xx","500","5xx",":relieved:",":unamused:",";","[鱼香肉丝]","accept","accept:text/plain","accept属性的值可以为一个或多个mime类型的值,关于mime类型,大家请参考:http://en.wikipedia.org/wiki/mime_typ","addcookie(cooki","age=3600","age=3600;","cach","control","control:","control的有益补充,可以让客户端“更智能”地处理什么时候要从服务端取资源,什么时候可以直接从缓存中返回响应。","cooki","cookie)","cookie:","cookie:skin=blue;","cookie[]","error","etag","etag:","explorer工具栏中。它不用代理服务器或一些复杂的网络监控工具,就能抓取请求及响应的完整信息,包括cookies、消息头、查询参数、响应报文等,是web应用开发人员的必备工具。","found","getcontentlength();","getcookies()","getheader(java.lang.str","getheadernames();","getlocale()","getsession()","http://www.google.com。","https://github.com/biezhi/jb","httpservletrequest","httpservletrequest可以通过","httpsession","httpwatch是强大的网页数据分析工具,安装后将集成到internet","http响应报文解剖","http的响应报文也由三部分组成(响应行+响应头+响应体):","http的响应状态码由5段组成:","http请求报文头属性","http请求报文由3部分组成(请求行+请求头+请求体):","http请求报文解剖","int","intern","java.lang.str","java.util.enumer","java.util.local","jsessionid=5f4771183629c9834f8382e23be13c4c","languag","length的报文头属性)","locat","location)","location:","max","modifi","name)","name,","ok","org.springframework.web.filter.shallowetagheaderfilt","param1=value1¶m2=value2”的方式传递请求参数。","refer","sc)","see","sendredirect(str","server","set","setheader(str","setstatus(int","spring","string","userid=jack;","value)","version=1","void","“12:30之前送过来”,你叫","“张三丰”","①","②","③","④","⑤","一个代表响应服务端资源(如页面)版本的报文头属性,如果某个服务端资源发生变化了,这个etag就会相应发生变化。它是cach","一些用于读取请求报文头的api:","下面是一个etag:","下面是一个实际的请求报文:","下面,的设置让客户端对响应内容缓存3600秒,也即在3600秒内,如果客户再次访问该资源,直接从客户端的缓存中返回内容给客户,不要再从服务端获取(当然,这个功能是靠客户端实现的,服务端只是通过这个属性提示客户端“应该这么做”,做不做,还是决定于客户端,如果是自己宣称支持http的客户端,则就应该这样实现)。","为请求对应的url地址,它和报文头的host属性组成完整的请求url,③是协议名称及版本号。","以下是一个实际的http响应报文:","以下是几个常见的状态码:","你最不希望看到的,即找不到页面。如你在google上找到一个页面,点击这个链接返回404,表示这个页面已经被网站删除了,google那边的记录只是美好的回忆。","你最希望看到的,即处理成功!","像cookie,location这些响应头是有福之人,httpservletresponse为它们都提供了vip(非api","关于etag的说明,你可以参见:http://en.wikipedia.org/wiki/http_etag。","其它http请求报文头属性","其它报文头属性","参见:http://en.wikipedia.org/wiki/list_of_http_header_field","告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊!","和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果。","哈):","响应报文体,即我们真正要的“干货”。","响应报文头,也是由多个属性组成;","响应报文结构","响应状态码","响应输出到客户端后,服务端通过该报文头属告诉客户端如何控制响应内容的缓存。","唐僧:我哪有桃啊!去王母娘娘那找吧","在服务端可以通过httpservletresponse的api写响应报文头的属性:","处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。","处理发生,责任在服务端,如服务端抛出异常,路由出错,http版本不支持等。","处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.","如下报文头相当于告诉服务端,俺客户端能够接受的响应类型仅为纯文本数据啊,你丫别发其它什么图片啊,视频啊过来,那样我会歇菜的~~~:","如以下设置,相当于让服务端将对应请求返回的响应内容不要在客户端缓存(当然响应报文也是通过响应报文头通知浏览器客户端的,这个下面再说):","如何写http请求报文头","如何访问请求报文头","客户端接受什么类型的响应。","对照上面的请求报文,我们把它进一步分解,你可以看到一幅更详细的结构图:","对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的。","常见的http响应报文头属性","常见的http请求报文头属性","很多貌似神奇的网页监控软件(如著名的","快到中午了,张三丰不想去食堂吃饭,于是打电话叫外卖:老板,我要一份[鱼香肉丝],要12:30之前给我送过来哦,我在江湖湖公司研发部,叫张三丰。","悟空:师傅给个桃吧,走了一天了","我们在jsp中让页面redirect到一个某个a页面中,其实是让客户端再发一个请求到a页面,这个需要redirect的a页面的url,其实就是通过响应报文头的location属性告知客户端的,如下的报文头属性,将使客户端redirect到iteye的首页中:","我把你redirect到其它的页面,目标的url通过响应报文头的location告诉你。","我要啦),只要在你的网页上放上一段javascript,就可以帮你监控流量,全国访问客户的分布情况等报表和图表,其原理就是通过这个referer及其它一些http报文头工作的。","报文协议及版本;","报文头属性告诉服务端","报文头属性是什么东西呢?我们不妨以一个小故事来说明吧。","是http的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。","是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求url也可以通过类似于“/chapter15/user.html?","是请求方法,get和post是最常见的http方法,除此以外还包括delete、head、options、put、trace。不过,当前的大多数浏览器只支持get和post,spr","更多其它的http请求头报文,参见:http://en.wikipedia.org/wiki/list_of_http_header_field","有些响应码,web应用服务器会自动给生成。你可以通过httpservletresponse的api设置状态码:","服务端可以设置客户端的cookie,其原理就是通过这个响应报文头属性实现的:","服务端是怎么知道客户端的多个请求是属于一个session的,原来就是通过http请求报文头的cookie属性的jsessionid的值关联起来的!(当然也可以通过重写url的方式将会话id附带在每个url的后后面哦)。","没有,","注意到后台的那个","消息,一般是告诉客户端,请求已经收到了,正在处理,别急...","状态码及状态描述;","由于一些请求报文头属性“太著名”了,因此httpservletrequest为它们提供了vip的api:","由于请求报文头是客户端发过来的,服务端当然只能读取了,以下是","的报文头属性)","相当于http报文体,而","看到这个错误,你就应该查查服务端的日志了,肯定抛出了一堆异常,别睡了,起来改bug去吧!","等信息就相当于http的报文头。它们是一些附属信息,帮忙你和饭店老板顺利完成这次交易。","自身的调试器已经很好用了,按f12就可以看到(ie10以上也直接按f12就可以调试了)","获取请求所关联的httpsession,其内部的机理是通过读取请求报文头中cookie属性的jsessionid的值,在服务端的一个会话map中,根据这个jsessionid获取对应的httpsession的对象。","表示这个请求是从哪个url过来的,假如你通过google搜索出一个商家的广告页面,你对这个广告页面感兴趣,鼠标一点发送一个请求报文到商家的网站,这个请求报文的referer报文头属性值就是","请求http报文和响应http报文都拥有若干个报文关属性,它们是为协助客户端及服务端交易的一些附属信息。","请求报文可通过一个","这是第一个要说的,客户端的cookie就是通过这个报文头属性传给服务端的哦!如下所示:","这里,你要","重定向到其它地方。它让客户端再发起一个请求以完成整个处理。","(实现原理很简单,对jsp输出的内容md5,这样内容有变化etag就相应变化了),用于生成响应的etag,因为这东东确实可以帮助减少请求和响应的交互。","(这样,你就不会觉得httpsession很神秘了吧,你自己也可以做一个类似的会话管理)"],"articles/software_architecture_patterns.html":["(jsf)","(separ",",用",".net","1,有时候,业务层和持久层会合并成单独的一个业务层,尤其是持久层的逻辑绑定在业务层","20原则可以帮助你确定架构是","2中每一层都是封闭的。这是分层架构中非常重要的特点。这意味request必须一层一层的传递。举","3所示,服务层现在是开放的了。请求可以绕过这一层,直接访问这层下面的层。既然服务层","4,用户发出了个请求要获得客户的信息。黑色的箭头是从数据库中获得用户数据的请求流,红色箭头显示用户数据的返回流的方向。在这个例子中,用户信","anti","bean","bean或者远程的ejb3","concerns)。一个层中的组件只会处理本层的逻","custom","dao","dao来得到订单信息。这些模块会执行sql语句,然后返回相应的数据给业务层。当","delegate)模","delegate,然后传递这些数据到","delegate。用本地的spr","ee应用的实际标准,因此很多","face","java","law\"。你可以google⼀一下查查这个有趣的联系。","objects),或者可以用mybatis,还可以用jdbc或者hibernate查询。microsoft平台上,custom","object。上例中的数据访问可以用简单的pojp's(plain","object收到数据以后,它就会聚合这些数据然后传递给","object聚合了业务","old","pattern)。","screen","screen能","server","sinkhol","⼼心要展示在屏幕上的用户数据格式,也不关⼼心这些用户数据从哪里来。它只需要从持久层得到数据,执行与","下⾯面的的表⾥里分析了分层架构的各个⽅方⾯面。","个例子,从展示层传递来的请求⾸首先会传递到业务层,然后传递到持久层,最后才传递到数据层。","个请求传递给了业务层,业务层也只是传递了这个请求到持久层,持久层对数据库做简单的sql查询获得用户的数据。这个数据按照原理返回,不会有任何的二次处理,返回到界面上。","为了演示分层架构是如何工作的,想象一个场景,如表1","些层。如表1","从另外一个方面来说,分层隔离使得层与层之间都是相互独立的,架构中的每一层的互相了解都很少。为了","从技术的角度来说,有很多的方式能够实现这些模块。比如说在java平台中,custom","以把各个层分成单独的物理模块或者干脆把整个程序分成多个节点来扩展分层架构,但是总体的关系过于紧","会影响到整个程序的发布(或者程序的⼤大部分)。发布必须是按照计划,在⾮非⼯工作时间或者周末进⾏行发布。因此,分层模式导致应⽤用发布⼀一点也不流畅,在发布上降低了灵活性。","伸缩性","作。然而,如果这个比例反过来,大部分的请求都是仅仅穿过层,不做逻辑操作。那么开放一些架构层会比较好。不过由于缺少了层次隔离,项目会变得难以控制。","作为个架构师,你必须证明你的架构模式的决策是正确的,特别是当需要选择一个特定的体系结构模式或方法","保持一致,业务层不会受到重构的影响,它和展示层所使用的界面架构完全独立。","公司在开发项⺫⽬目的都是通过层来区分技术的,这种模式对于⼤大多数的商业项目开发来说都很合适。公司的组织架构和他们软件架构之间的联系被戏称为\"conway'","关键概念","分层架构","分层架构中的每一层都着特定的角色和职能。举个例子,展示层负责处理所有的界面展示以及交互逻辑,业","分层架构是一个很可靠的架构模式。它适合大多数的应用。如果你不确定在项目中使用什么架构,分层架构","分层架构是一种很常⻅见的架构模式,它也叫n层架构。这种架构是大多数jave","分层架构模式里的组件被分成几个平行的层次,每一层都代表了应用的一个功能(展示逻辑或者业务逻辑)。","分层架构的一个突出特性是组件间关注点分离","分析:因为组件都处于各⾃自的层次中,可以模拟其他的层,或者说直接去掉层,所以分层模式很容易测试。开发者可以单独模拟⼀一个展⽰示组件,对业务组件进⾏行隔绝测试。还可以模拟业务层来测试某个展⽰示功能。","分析:在开发难度上⾯面,分层架构得到了⽐比较⾼高的分数。因为这种架构对⼤大家来说很熟悉,不难实现。⼤大部分","分析:尽管某些分层架构的性能表现的确不错,但是这个模式的特点导致它⽆无法带来⾼高性能。因为⼀一次业务请求要穿越所有的架构层,做了很多不必要的⼯工作。","分析:总体灵活性是响应环境变化的能⼒力。尽管分层模式中的变化可以隔绝起来,想在这种架构中做⼀一些也改","分析:由于这种模式以紧密耦合的趋势在发展,规模也⽐比较⼤大,⽤用分层架构构建的程序都⽐比较难以扩展。你可","分析:这取决于你怎么发布这种模式,发布程序可能⽐比较⿇麻烦,尤其是很⼤大的项目。⼀一个组件的⼩小⼩小改动可能","务层负责处理请求对应的业务。架构里的层次是具体工作的高度抽象,它们都是为了实现某种特定的业务请","变也是并且费时费⼒力的。分层模式的笨重以及经常出现的组件之间的紧耦合是导致灵活性降低的原因。","可测试性","否处于反污水模式。大概有百分之二十的请求仅仅是做简单的穿越,百分之八十的请求会做一些业务逻辑操","围着着这个主架构还有一些外围的产品。比如监控和审计。","在这个例子中,新的服务层是处于业务层之下的,展示层不能直接访问这个服务层中的组件。但是现在业务","在这个模式中,请求流只是简单的","块。这个模块能找到业务层里对应的模块处理对应数据(约束关系)。业务层里的custom","好伸缩性的方向发展,⽽而其他架构模式会让程序朝着高度灵活的方向发展。知道了这些特点,了解架构模式","密,这样很难扩展。","对应的是","对程序员来说很常见一种情况是在没有合理的程序架构时就开始编程,没有一个清晰的和定义好的架构的时候,大多数开发者和架构师通常会使用标准式的传统分层架构模式(也被称为多层架构)—通过将源码模块分割为几个不同的层到不同的包中。不幸的是,这种编码方式会导致一系列没有组织性的代码模块,这些模块缺乏明确的规则、职责和同其他模块之间的关联。这通常被称为架构大泥球。","尽管分层架构没有规定自⾝身要分成几层几种,大多数的结构都分成四个层次:展示层,业务层,持久层,和数","层。","层还要通过服务层才能访问到持久层,这一点也不合理。这是分层架构中的老问题了,解决的办法是开放某","层隔离就是说架构中的某一层的改变不会影响到其他层:这些变化的影响范围限于当前层次。如果展示层能够","展示在用户面前。","库的asp模块来访问业务层中的c#模块,用ado来实现用户和订单数据的访问模块。","应用程序缺乏合理的架构一般会导致程序过度耦合、容易被破坏、难以应对变化,同时很难有个清晰的版本或者方向性。这样的结果是,如果你没有充分理解程序系统里每个组件和模块,就很难定义这个程序的结构特征。有关于程序的部署和维护的基本问题都难以回答,比如:程序架构是什么规模?应用程序有什么性能特点?应用程序有多容易应对变化?应用程序的部署特点是什么?架构是如何反应的?","开放和封闭层的概念确定了架构层和请求流之间的关系,并且给设计师和开发人员提供了必要的信息理解架","性能","息由客户数据和订单数组组成(客户下的订单)。","息,调用order","我们更容易构造有效的角色和强⼒力的模型。这样应用变的更好开发,测试,管理和维护。","我们看一下淘宝前几年的架构的例子。","据库层。如表1","数据有关的相应业务逻辑,然后把这些信息传递给展示层。","整体灵活性","易于部署","易开发性","是再好不过的了。然后,从架构的角度上来说,选择这个模式还要考虑很多的东⻄西。","是开放的,业务层可以绕过服务层,直接访问数据持久层。这样就非常合理。","普通服务组件的架构中添加个分享服务层。在这个例子里,新建一个服务层通常是个好主意,因为从架构上来说,它限制了分享服务访问业务层(也不允许访问展示层)。如果没有隔离层,就没有任何架构来限制展示层访问普通服务,难以进行权限管理。","未完待续","来实现业务层中的custom","来得到客户信","构里各种层之间的访问限制。如果随意的开放或者封闭架构里的层,整个项目可能都是紧耦合,一团糟的。以后也难以测试,维护和部署。","架构模式帮助你定义应用程序的基本特征和行为。例如,些架构模式会让程序自己自然⽽而然地朝着具有良","模式分析","每个分层架构或多或少都可能遇到这种场景。关键在于这样的请求有多少。80","求。比如说展示层并不需要关⼼心怎样得到用户数据,它只需在屏幕上以特定的格式展示信息。业务层并不关","污水池反模式(architectur","注意事项","注意表1","然⽽而封闭的架构层次也有不便之处,有时候也应该开放某一层。如果想往包含了一些由业务层的组件调用的","然的成为大多数应用的架构模式。","用","用户界面只管接受请求以及显示客户信息。它不管怎么得到数据的,或者说得到这些数据要用到哪些数据","的优点和缺点是非常必要的,它帮助我们选择个适合自己特定的业务需求和目标的的程序。","的时候。这本迷你书的目的就是给你⾜足够的信息让你去做出正确的架构决策。","的架构师,设计师,还有程序员都知道它。许多传统it公司的组织架构和分层模式十分的相似。所以它很自","的组件当中。因此,有一些小的应用可能只有3层,一些有着更复杂的业务的大应用可能有5层或者更多的分","目录","直接访问持久层了,假如持久层中的sql变化了,这对业务层和展示层都有一定的影响。这只会让应用变得","示例","穿过层次,不留一点云彩,或者说只留下一阵⻘青烟。比如说界面层响应了一个获得数据的请求。响应层把这","第一个要注意的就是","第一章","简介","紧耦合,组件之间互相依赖。这种架构会非常的难以维护。","组件来实现","表。如果用户界面接到了一个查询客户信息的请求,它就会转发这个请求给用户委托(custom","评级:低","评级:容易","评级:高","说明这个概念的⽜牛逼之处,想象一个超级重构,把展示层从jsp换成jsf。假设展示层和业务层的之间的联系","请求需要的所有信息(在这个例子里获取客户信息)。这个模块调用持久层中的","软件架构模式","辑。比如说,展示层的组件只会处理展示逻辑,业务层中的组件只会去处理业务逻辑。多亏了组件分离,让","这是一个标准的分层的架构。每一层中又可以详细的分成更细的层,比如服务层。","那么为什么不允许展示层直接访问数据层呢。如果只是获得以及读取数据,展示层直接访问数据层,比穿过一层一层来得到数据来的快多了。这涉及到一个概念:层隔离。"],"articles/electrical-business-architecture.html":["(1)","(2)","1毫秒=1.3次访问;","3~5年用户数达到1000万","6.1业务拆分","6.2应用集群部署(分布式,集群,负载均衡)","6.3","6.4单点登录(分布式session)","6.5数据库集群(读写分离,分库分表)","6.6服务化","6.7消息队列","6.8其他架构(技术)","mq,rabbit","mq,zero","mq。","mq等,需要根据具体的业务场景进行选择。建议可以研究下rabbit","mq,m","pv量:200*30=6000万;","一、电商案例的原因","一级缓存,缓存数据字典,和常用热点数据等基本不可变/有规则变化的信息,二级缓存缓存需要的所有缓存。当一级缓存过期或不可用时,访问二级缓存的数据。如果二级缓存也没有,则访问数据库。","一般网站,刚开始的做法,是三台服务器,一台部署应用,一台部署数据库,一台部署nfs文件系统。","一般采用cache中间件实现,建议使用redis,因此它有持久化功能,方便分布式session宕机后,可以从持久化存储中加载会话信息;","七、架构总结","三、网站初级架构","业务拆分","业务拆分作用:提升为子系统可由专门的团队和部门负责,专业的人做专业的事,解决模块之间耦合以及扩展性问题;每个子系统单独部署,避免集中部署导致一个应用挂了,全部应用不可用的问题。","业务拆分后:每个子系统需要单独的库;","举办双11,双12,三八男人节等活动","二、电商网站需求","五、网站架构分析","以上是对电商网站需求的简单举例,目的是说明(1)需求分析的时候,要全面,大型分布式系统重点考虑非功能需求;(2)描述一个简单的电商需求场景,使大家对下一步的分析设计有个依据。","以上是本次分享的架构总结,其中细节可参考前面分享的内容。其中还有很多可以优化和细化的地方,因为是案例分享,主要针对重要部分做了介绍,工作中需要大家根据具体的业务场景进行架构设计。","以上是电商网站架构案例的分享一共有三篇,从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。","以上预估仅供参考,因为服务器配置,业务逻辑复杂度等都有影响。在此cpu,硬盘,网络等不再进行评估。","会员管理,购物车,结算功能","但是,目前主流的网站架构已经发生了翻天覆地的变化。一般都会采用集群的方式,进行高可用设计。至少是下面这个样子。","使用数据库主备模式,实现数据备份和高可用;","使用集群对应用服务器进行冗余,实现高可用;(负载均衡设备可与应用一块部署)","假设:高峰期为平常值的三倍,则每秒的并发数可以达到8340次。","全品类的电子商务网站","六、网站架构优化","其他技术","其他的功能参考京东或国美在线等网站。","其他的略~","再进一步可以根据分布式session,建立完善的单点登录或账户管理系统。","分布式大型网站,目前看主要有几类1.大型门户,比如网易,新浪等;2.sns网站,比如校内,开心网等;3.电商网站:比如阿里巴巴,京东商城,国美在线,汽车之家等。大型门户一般是新闻类信息,可以使用cdn,静态化等方式优化,开心网等交互性比较多,可能会引入更多的nosql,分布式缓存,使用高性能的通信框架等。电商网站具备以上两类的特点,比如产品详情可以采用cdn,静态化,交互性高的需要采用nosql等技术。因此,我们采用电商网站作为案例,进行分析。","分布式部署:将业务拆分后的应用单独部署,应用直接通过rpc进行远程通信;","分库分表后序列的问题,join,事务的问题,会在分库分表主题分享中,介绍。","分库后,如果表中有数据量很大的,则进行分表,一般可以按照id,时间等进行分表;(高级的用法是一致性hash)","分类管理,商品管理","功能需求","单点登录(分布式session)","参考京东或国美在线","参考条件","参考部署方案2","可以在线与客服沟通","可靠性:即时通讯","商品打分评价","商品评论","四、系统容量预估","图片存储的要求(海量小图片)","在分库,分表的基础上,进行读写分离;","在线客服功能","在线支付或货到付款","多种在线支付方式","多级缓存","大型网站一般需要做以下架构优化(优化是架构设计时,就要考虑的,一般从架构/代码级别解决,调优主要是简单参数的调整,比如jvm调优;如果调优涉及大量代码改造,就不是调优了,属于重构):","大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。","大型网站架构系列:电商网站架构案例","大型网站需要存储海量的数据,为达到海量数据存储,高可用,高性能一般采用冗余的方式进行系统设计。一般有两种方式读写分离和分库分表。","大量应用存在冗余代码","如上图每个应用单独部署","如下图:","如果单独的库太大,可以根据业务特性,进行再次分库,比如商品分类库,产品库;","存入会话时,可以设置会话保持的时间,比如15分钟,超过后自动超时;","定期举办双11,双12,三八男人节等活动;","客户就是客户,不会告诉你具体要什么,只会告诉你他想要什么,我们很多时候要引导,挖掘客户的需求。好在提供了明确的参考网站。因此,下一步要进行大量的分析,结合行业,以及参考网站,给客户提供方案。","客户需求:","客户需求:3~5年用户数达到1000万注册用户;","容量预估:70/90原则","对接进销存","将多个子系统公用的功能/模块,进行抽取,作为公用服务使用。比如本案例的会员子系统就可以抽取为公用的服务。","属于约束条件伸缩性,可扩展性","属于约束条件对接时要考虑数据一致性,鲁棒性","峰值预估:平常量的2~3倍;","希望能够支持3~5年,业务的发展;","库存子系统:读取消息队列信息,完成减库存;","应用集群部署(分布式部署,集群部署和负载均衡)","建立一个全品类的电子商务网站(b2c),用户可以在线购买商品,可以在线支付,也可以货到付款;","所有的应用部署在同一台服务器,应用之间耦合严重。需要进行垂直切分和水平切分。","拆分后的架构图:","按一台web服务器,支持每秒300个并发计算。平常需要10台服务器(约等于);[tomcat默认配置是150]","支付过程要安全,数据加密(安全性)多种支付接口灵活切换(灵活性,扩展性)","支持3~5年,业务的发展","数据库集群(读写分离,分库分表)","数据需要频繁访问数据库,数据库访问压力巨大。","方便进行多品类管理(灵活性)网站访问速度要快(高性能)","日均uv量","服务化","服务器session同步耗费大量内存和网络带宽","服务器预估:(以tomcat服务器举例)","本案例在业务拆分的基础上,结合分库分表和读写分离。如下图:","本次分享大纲","本电商网站的需求矩阵如下:","架构总结","核心系统和非核心系统组合部署","根据业务子系统进行等级定义,可分为核心系统和非核心系统。核心系统:产品子系统,购物子系统,支付子系统;非核心:评论子系统,客服子系统,接口子系统。","根据业务属性进行垂直切分,划分为产品子系统,购物子系统,支付子系统,评论子系统,客服子系统,接口子系统(对接如进销存,短信等外部系统)。","根据业务特性可使用以下缓存过期策略:","根据以上预估,有几个问题:","根据实际需要,进行改造,扩展,支持千万pv,是没问题的。","根据并发量(并发,事务数),存储容量计算系统容量。","此处不详细介绍,大家可以问度娘/google,有机会的话也可以分享给大家。","每分并发量:4.8*60=288分钟,每分钟访问4800/288=16.7万(约等于);","每天的uv为200万(二八原则);","每天的并发量;","每日每天点击浏览30次;","每日的pv量","每秒并发数预估:","每秒并发量:16.7万/60=2780(约等于);","没好好学数学后悔了吧?!(不知道以上算是否有错误,呵呵~~)","注册用户数","活动管理,秒杀","流程说明","消息队列","消息队列可以解决子系统/模块之间的耦合,实现异步,高可用,高性能的系统。是分布式系统的标准配置。本案例中,消息队列主要应用在购物,配送环节。","用户下单后,写入消息队列,后直接返回客户端;","用户再次登录时,获取分布式session,是否有会话信息,如果没有则调到登录页;","用户可以在线购买商品","用户收到商品后,可以给商品打分,评价;","用户第一次登录时,将会话信息(用户id和用户信息),比如以用户id为key,写入分布式session;","用户购买时可以在线与客服沟通;","电商案例的原因","电商网站架构案例","电商网站案例,一共有三篇本篇主要说明网站的需求,网站初始架构,系统容量估算方法。","电商网站需求","目前使用较多的mq有activ","目前有成熟的进销存系统","目前有成熟的进销存系统;需要与网站对接;","相关中间件可参考cobar(阿里,目前已不在维护),tddl(阿里),atlas(奇虎360),mycat(在cobar基础上,国内很多牛人,号称国内第一开源项目)。","突增访问流量(可伸缩)实时性要求(高性能)","等级定义作用:用于流量突发时,对关键应用进行保护,实现优雅降级;保护关键应用不受到影响。","系统cpu一般维持在70%左右的水平,高峰期达到90%的水平,是不浪费资源,并比较稳定的。内存,io类似。","系统分割为多个子系统,独立部署后,不可避免的会遇到会话管理的问题。一般可采用session同步,cookies,分布式session方式。电商网站一般采用分布式session实现。","系统容量估算","约束条件","结合cache中间件,实现的分布式session,可以很好的模拟session会话。","缓存按照存放的位置一般可分为两类本地缓存和分布式缓存。本案例采用二级缓存的方式,进行缓存的设计。一级缓存为本地缓存,二级缓存为分布式缓存。(还有页面缓存,片段缓存等,那是更细粒度的划分)","缓存的比例,一般1:4,即可考虑使用缓存。(理论上是1:2即可)。","缓存自动过期;","缓存触发过期;","网站初级架构","网站架构优化","网站架构分析","网站需求","良好购物体验(可用性,性能)","读写分离:一般解决读比例远大于写比例的场景,可采用一主一备,一主多备或多主多备方式。","负载均衡:是高可用系统必须的,一般应用通过负载均衡实现高可用,分布式服务通过内置的负载均衡实现高可用,关系型数据库通过主备方式实现高可用。","这是前几年比较传统的做法,之前见到一个网站10万多会员,垂直服装设计门户,n多图片。使用了一台服务器部署了应用,数据库以及图片存储。出现了很多性能问题。","配送子系统:读取消息队列信息,进行配送;","除了以上介绍的业务拆分,应用集群,多级缓存,单点登录,数据库集群,服务化,消息队列外。还有cdn,反向代理,分布式文件系统,大数据处理等系统。","集中访问量:240.2=4.8小时会有6000万0.8=4800万(二八原则);","集群部署后架构图:","集群部署:电商网站的高可用要求,每个应用至少部署两台服务器进行集群部署;","需求功能矩阵","需求管理传统的做法,会使用用例图或模块图(需求列表)进行需求的描述。这样做常常忽视掉一个很重要的需求(非功能需求),因此推荐大家使用需求功能矩阵,进行需求描述。","需要部署大量的服务器,高峰期计算,可能要部署30台web服务器。并且这三十台服务器,只有秒杀,活动时才会用到,存在大量的浪费。","非功能需求","预估步骤:","预计3~5年用户数达到1000万;","高峰期:需要30台服务器;"],"服务器相关.html":["服务器/域名/ssl证书"],"实用工具.html":["实用工具/api"]},"length":39},"tokenStore":{"root":{"0":{"3":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}},":":{"0":{"0":{"docs":{},"]":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}},"docs":{}}},"7":{"docs":{},":":{"1":{"3":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"docs":{}},"docs":{}}},"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},".":{"0":{"4":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{},".":{"1":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}},"docs":{}}},"4":{"2":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}},")":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}},"{":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0058997050147492625},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0036144578313253013}}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}}}},"1":{"0":{"0":{"0":{"0":{"0":{"0":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}},"docs":{}},"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}},"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}},".":{"0":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"docs":{}}},"2":{"1":{"2":{"docs":{},".":{"4":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.006535947712418301},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"③":{"docs":{},"处":{"docs":{},"演":{"docs":{},"示":{"docs":{},"了":{"docs":{},"这":{"docs":{},"个":{"docs":{},"反":{"docs":{},"射":{"docs":{},"类":{"docs":{},"的":{"docs":{},"使":{"docs":{},"用":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{},"在":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}},"1":{"9":{"1":{"docs":{},".":{"0":{"1":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{},"。":{"docs":{},"它":{"docs":{},"是":{"docs":{},"不":{"docs":{},"可":{"docs":{},"变":{"docs":{},"的":{"docs":{},",":{"docs":{},"完":{"docs":{},"全":{"docs":{},"模":{"docs":{},"拟":{"docs":{},"本":{"docs":{},"地":{"docs":{},"时":{"docs":{},"间":{"docs":{},"工":{"docs":{},"作":{"docs":{},"。":{"docs":{},"此":{"docs":{},"示":{"docs":{},"例":{"docs":{},"演":{"docs":{},"示":{"docs":{},"如":{"docs":{},"何":{"docs":{},"通":{"docs":{},"过":{"docs":{},"添":{"docs":{},"加":{"docs":{},"或":{"docs":{},"减":{"docs":{},"去":{"docs":{},"天":{"docs":{},"数":{"docs":{},",":{"docs":{},"月":{"docs":{},"数":{"docs":{},",":{"docs":{},"年":{"docs":{},"来":{"docs":{},"计":{"docs":{},"算":{"docs":{},"新":{"docs":{},"的":{"docs":{},"日":{"docs":{},"期":{"docs":{},"。":{"docs":{},"记":{"docs":{},"住":{"docs":{},"每":{"docs":{},"一":{"docs":{},"个":{"docs":{},"操":{"docs":{},"作":{"docs":{},"都":{"docs":{},"会":{"docs":{},"返":{"docs":{},"回":{"docs":{},"一":{"docs":{},"个":{"docs":{},"新":{"docs":{},"的":{"docs":{},"实":{"docs":{},"例":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"2":{"3":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}},"7":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"m":{"docs":{},"a":{"docs":{},"r":{"2":{"0":{"0":{"6":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"z":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}},"3":{"0":{"5":{"5":{"docs":{},".":{"6":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}}},"docs":{}},"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}},"1":{"9":{"docs":{},".":{"5":{"7":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"4":{"3":{"9":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"docs":{}},"docs":{}},"5":{"docs":{},"分":{"docs":{},"钟":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}},".":{"5":{"0":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}}},"6":{"6":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"7":{"docs":{},".":{"5":{"6":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}},"docs":{}},"docs":{}}},"9":{"2":{"docs":{},".":{"1":{"6":{"8":{"docs":{},".":{"1":{"docs":{},".":{"1":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"docs":{}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.014204545454545454},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"小":{"docs":{},"时":{"docs":{},"免":{"docs":{},"费":{"docs":{},"v":{"docs":{},"p":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}},".":{"0":{"docs":{},".":{"0":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.009708737864077669}}},"docs":{}}},"1":{"5":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"5":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"z":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}}}}}}}}},"6":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.05405405405405406}}},"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169},"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"i":{"docs":{},"e":{"docs":{},"系":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}}},")":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}},"b":{"2":{"docs":{},"e":{"1":{"docs":{},"d":{"6":{"3":{"docs":{},"f":{"docs":{},"f":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.009708737864077669}}}}},"docs":{}},"docs":{}}},"docs":{}}},"docs":{}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.004819277108433735}}},"x":{"docs":{},"x":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}},",":{"docs":{},"有":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"和":{"docs":{},"持":{"docs":{},"久":{"docs":{},"层":{"docs":{},"会":{"docs":{},"合":{"docs":{},"并":{"docs":{},"成":{"docs":{},"单":{"docs":{},"独":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},",":{"docs":{},"尤":{"docs":{},"其":{"docs":{},"是":{"docs":{},"持":{"docs":{},"久":{"docs":{},"层":{"docs":{},"的":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"绑":{"docs":{},"定":{"docs":{},"在":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"毫":{"docs":{},"秒":{"docs":{},"=":{"1":{"docs":{},".":{"3":{"docs":{},"次":{"docs":{},"访":{"docs":{},"问":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}},"docs":{}}},"docs":{}}}}},"2":{"0":{"0":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}},"1":{"3":{"docs":{},"/":{"7":{"docs":{},"/":{"1":{"3":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"docs":{}},"docs":{}}},"docs":{}}},"4":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464}}},"docs":{}},"9":{"docs":{},".":{"9":{"9":{"4":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}},":":{"4":{"6":{"docs":{},":":{"2":{"5":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"\"":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"]":{"docs":{},";":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}},"原":{"docs":{},"则":{"docs":{},"可":{"docs":{},"以":{"docs":{},"帮":{"docs":{},"助":{"docs":{},"你":{"docs":{},"确":{"docs":{},"定":{"docs":{},"架":{"docs":{},"构":{"docs":{},"是":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}},"2":{"0":{"docs":{},".":{"7":{"8":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}}},"docs":{}},"3":{"9":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},":":{"5":{"9":{"docs":{},":":{"5":{"9":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"4":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"9":{"4":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.008522727272727272},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},".":{"1":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169},"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"x":{"docs":{},"用":{"docs":{},"户":{"docs":{},"指":{"docs":{},"南":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}},"c":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"o":{"docs":{},"x":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}},")":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"[":{"docs":{},"]":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"是":{"docs":{},"后":{"docs":{},"者":{"docs":{},",":{"docs":{},"则":{"docs":{},"在":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.004819277108433735}}},"x":{"docs":{},"x":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}},"中":{"docs":{},"每":{"docs":{},"一":{"docs":{},"层":{"docs":{},"都":{"docs":{},"是":{"docs":{},"封":{"docs":{},"闭":{"docs":{},"的":{"docs":{},"。":{"docs":{},"这":{"docs":{},"是":{"docs":{},"分":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},"中":{"docs":{},"非":{"docs":{},"常":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"特":{"docs":{},"点":{"docs":{},"。":{"docs":{},"这":{"docs":{},"意":{"docs":{},"味":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"必":{"docs":{},"须":{"docs":{},"一":{"docs":{},"层":{"docs":{},"一":{"docs":{},"层":{"docs":{},"的":{"docs":{},"传":{"docs":{},"递":{"docs":{},"。":{"docs":{},"举":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"3":{"0":{"0":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"3":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}},"4":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}},"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}},"1":{"2":{"docs":{},".":{"0":{"0":{"9":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},".":{"3":{"2":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}}},"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.019886363636363636},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0036144578313253013}},".":{"0":{"4":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{},".":{"1":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}},"docs":{}},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"h":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{},"允":{"docs":{},"许":{"docs":{},"你":{"docs":{},"通":{"docs":{},"过":{"docs":{},"“":{"docs":{},"_":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"”":{"docs":{},"的":{"docs":{},"表":{"docs":{},"单":{"docs":{},"参":{"docs":{},"数":{"docs":{},"指":{"docs":{},"定":{"docs":{},"这":{"docs":{},"些":{"docs":{},"特":{"docs":{},"殊":{"docs":{},"的":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"方":{"docs":{},"法":{"docs":{},"(":{"docs":{},"实":{"docs":{},"际":{"docs":{},"上":{"docs":{},"还":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"提":{"docs":{},"交":{"docs":{},"表":{"docs":{},"单":{"docs":{},")":{"docs":{},"。":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"配":{"docs":{},"置":{"docs":{},"了":{"docs":{},"h":{"docs":{},"i":{"docs":{},"d":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"后":{"docs":{},",":{"docs":{},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"会":{"docs":{},"根":{"docs":{},"据":{"docs":{},"_":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"参":{"docs":{},"数":{"docs":{},"指":{"docs":{},"定":{"docs":{},"的":{"docs":{},"值":{"docs":{},"模":{"docs":{},"拟":{"docs":{},"出":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"这":{"docs":{},"样":{"docs":{},",":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"这":{"docs":{},"些":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"方":{"docs":{},"法":{"docs":{},"对":{"docs":{},"处":{"docs":{},"理":{"docs":{},"方":{"docs":{},"法":{"docs":{},"进":{"docs":{},"行":{"docs":{},"映":{"docs":{},"射":{"docs":{},"了":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"还":{"docs":{},"专":{"docs":{},"门":{"docs":{},"为":{"docs":{},"此":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"1":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"0":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}},"docs":{}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"4":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"docs":{}}},"8":{"3":{"8":{"3":{"5":{"docs":{},"e":{"docs":{},"+":{"0":{"6":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},")":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"[":{"docs":{},"]":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"}":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"x":{"docs":{},"x":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}},"所":{"docs":{},"示":{"docs":{},",":{"docs":{},"服":{"docs":{},"务":{"docs":{},"层":{"docs":{},"现":{"docs":{},"在":{"docs":{},"是":{"docs":{},"开":{"docs":{},"放":{"docs":{},"的":{"docs":{},"了":{"docs":{},"。":{"docs":{},"请":{"docs":{},"求":{"docs":{},"可":{"docs":{},"以":{"docs":{},"绕":{"docs":{},"过":{"docs":{},"这":{"docs":{},"一":{"docs":{},"层":{"docs":{},",":{"docs":{},"直":{"docs":{},"接":{"docs":{},"访":{"docs":{},"问":{"docs":{},"这":{"docs":{},"层":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"层":{"docs":{},"。":{"docs":{},"既":{"docs":{},"然":{"docs":{},"服":{"docs":{},"务":{"docs":{},"层":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"~":{"5":{"docs":{},"年":{"docs":{},"用":{"docs":{},"户":{"docs":{},"数":{"docs":{},"达":{"docs":{},"到":{"1":{"0":{"0":{"0":{"docs":{},"万":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}},"docs":{}}},"4":{"0":{"4":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}},"docs":{},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}},"3":{"3":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"5":{"0":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"7":{"2":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"docs":{}},"docs":{},".":{"0":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},".":{"0":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}},"docs":{}}},"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"4":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"5":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"6":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"7":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"8":{"9":{"9":{"7":{"9":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}},"docs":{}},"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"节":{"docs":{},"给":{"docs":{},"出":{"docs":{},"了":{"docs":{},"e":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{},"类":{"docs":{},"的":{"docs":{},"一":{"docs":{},"些":{"docs":{},"例":{"docs":{},"外":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"4":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"5":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"6":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"7":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},")":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"[":{"docs":{},"]":{"docs":{},"[":{"docs":{},"]":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"x":{"docs":{},"x":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}},",":{"docs":{},"用":{"docs":{},"户":{"docs":{},"发":{"docs":{},"出":{"docs":{},"了":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"要":{"docs":{},"获":{"docs":{},"得":{"docs":{},"客":{"docs":{},"户":{"docs":{},"的":{"docs":{},"信":{"docs":{},"息":{"docs":{},"。":{"docs":{},"黑":{"docs":{},"色":{"docs":{},"的":{"docs":{},"箭":{"docs":{},"头":{"docs":{},"是":{"docs":{},"从":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"中":{"docs":{},"获":{"docs":{},"得":{"docs":{},"用":{"docs":{},"户":{"docs":{},"数":{"docs":{},"据":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"流":{"docs":{},",":{"docs":{},"红":{"docs":{},"色":{"docs":{},"箭":{"docs":{},"头":{"docs":{},"显":{"docs":{},"示":{"docs":{},"用":{"docs":{},"户":{"docs":{},"数":{"docs":{},"据":{"docs":{},"的":{"docs":{},"返":{"docs":{},"回":{"docs":{},"流":{"docs":{},"的":{"docs":{},"方":{"docs":{},"向":{"docs":{},"。":{"docs":{},"在":{"docs":{},"这":{"docs":{},"个":{"docs":{},"例":{"docs":{},"子":{"docs":{},"中":{"docs":{},",":{"docs":{},"用":{"docs":{},"户":{"docs":{},"信":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"5":{"0":{"0":{"0":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}},"2":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}},"3":{"docs":{},".":{"4":{"4":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}}},"5":{"0":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{},".":{"0":{"0":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}}},"9":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.008522727272727272},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},".":{"0":{"docs":{},"中":{"docs":{},"的":{"docs":{},"新":{"docs":{},"方":{"docs":{},"法":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}},"还":{"docs":{},"为":{"docs":{},"注":{"docs":{},"解":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"反":{"docs":{},"射":{"docs":{},"类":{"docs":{},"。":{"docs":{},"总":{"docs":{},"之":{"docs":{},",":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"的":{"docs":{},"反":{"docs":{},"射":{"docs":{},"体":{"docs":{},"系":{"docs":{},"保":{"docs":{},"证":{"docs":{},"了":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"程":{"docs":{},"序":{"docs":{},"化":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"访":{"docs":{},"问":{"docs":{},"目":{"docs":{},"标":{"docs":{},"类":{"docs":{},"中":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"元":{"docs":{},"素":{"docs":{},",":{"docs":{},"对":{"docs":{},"于":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"或":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"的":{"docs":{},"成":{"docs":{},"员":{"docs":{},"变":{"docs":{},"量":{"docs":{},"和":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"只":{"docs":{},"要":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"的":{"docs":{},"安":{"docs":{},"全":{"docs":{},"机":{"docs":{},"制":{"docs":{},"允":{"docs":{},"许":{"docs":{},",":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"反":{"docs":{},"射":{"docs":{},"进":{"docs":{},"行":{"docs":{},"调":{"docs":{},"用":{"docs":{},",":{"docs":{},"请":{"docs":{},"看":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},":":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"该":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"形":{"docs":{},"式":{"docs":{},"调":{"docs":{},"整":{"docs":{},"为":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}},"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"4":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"5":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"6":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"7":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"8":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"x":{"docs":{},"x":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}},"6":{"0":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}},".":{"0":{"0":{"2":{"6":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"3":{"9":{"6":{"9":{"docs":{},".":{"7":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"5":{"5":{"3":{"5":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"业":{"docs":{},"务":{"docs":{},"拆":{"docs":{},"分":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"应":{"docs":{},"用":{"docs":{},"集":{"docs":{},"群":{"docs":{},"部":{"docs":{},"署":{"docs":{},"(":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},",":{"docs":{},"集":{"docs":{},"群":{"docs":{},",":{"docs":{},"负":{"docs":{},"载":{"docs":{},"均":{"docs":{},"衡":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338},"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}},"4":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"单":{"docs":{},"点":{"docs":{},"登":{"docs":{},"录":{"docs":{},"(":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}},"5":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"集":{"docs":{},"群":{"docs":{},"(":{"docs":{},"读":{"docs":{},"写":{"docs":{},"分":{"docs":{},"离":{"docs":{},",":{"docs":{},"分":{"docs":{},"库":{"docs":{},"分":{"docs":{},"表":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}},"6":{"docs":{},"服":{"docs":{},"务":{"docs":{},"化":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"7":{"docs":{},"消":{"docs":{},"息":{"docs":{},"队":{"docs":{},"列":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}},"8":{"docs":{},"其":{"docs":{},"他":{"docs":{},"架":{"docs":{},"构":{"docs":{},"(":{"docs":{},"技":{"docs":{},"术":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}},"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"}":{"docs":{},"和":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"7":{"2":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"1":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"2":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"3":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"8":{"9":{"9":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"docs":{}},"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.02702702702702703},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"中":{"docs":{},"就":{"docs":{},"返":{"docs":{},"回":{"docs":{},"一":{"docs":{},"个":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"docs":{},":":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0055248618784530384},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.005203816131830009},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.007481296758104738},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.07228915662650602},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}}}},"w":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{},":":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}}}}}}},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}}}}},"_":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"h":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"l":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"e":{"docs":{},".":{"docs":{},"m":{"docs":{},"d":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"你":{"docs":{},"执":{"docs":{},"行":{"docs":{},"命":{"docs":{},"令":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"h":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}},"y":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}},"r":{"docs":{},"e":{"docs":{},"l":{"docs":{},"i":{"docs":{},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}},"a":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}},"i":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"也":{"docs":{},"添":{"docs":{},"加":{"docs":{},"了":{"docs":{},"新":{"docs":{},"功":{"docs":{},"能":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"使":{"docs":{},"你":{"docs":{},"的":{"docs":{},"开":{"docs":{},"发":{"docs":{},"更":{"docs":{},"简":{"docs":{},"单":{"docs":{},"。":{"docs":{},"其":{"docs":{},"中":{"docs":{},"一":{"docs":{},"些":{"docs":{},"接":{"docs":{},"口":{"docs":{},"是":{"docs":{},"众":{"docs":{},"所":{"docs":{},"周":{"docs":{},"知":{"docs":{},"的":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"扩":{"docs":{},"展":{"docs":{},"和":{"docs":{},"新":{"docs":{},"的":{"docs":{},"日":{"docs":{},"期":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"p":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}},".":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},":":{"docs":{},"c":{"docs":{},"r":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"_":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"目":{"docs":{},"录":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"s":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"r":{"docs":{},"a":{"docs":{},"y":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0055248618784530384}}},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}},">":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}},"<":{"docs":{},">":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}},"m":{"docs":{},"a":{"docs":{},"x":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"s":{"docs":{},".":{"docs":{},"a":{"docs":{},"s":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"p":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629}},"s":{"docs":{},")":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.00975609756097561},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.003469210754553339}},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}},"。":{"docs":{},"此":{"docs":{},"外":{"docs":{},",":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"还":{"docs":{},"有":{"docs":{},"很":{"docs":{},"多":{"docs":{},"用":{"docs":{},"于":{"docs":{},"获":{"docs":{},"取":{"docs":{},"类":{"docs":{},"方":{"docs":{},"法":{"docs":{},"更":{"docs":{},"多":{"docs":{},"信":{"docs":{},"息":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},":":{"1":{"docs":{},")":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"表":{"docs":{},"示":{"docs":{},"操":{"docs":{},"作":{"docs":{},"的":{"docs":{},"目":{"docs":{},"标":{"docs":{},"对":{"docs":{},"象":{"docs":{},";":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"s":{"docs":{},"为":{"docs":{},"方":{"docs":{},"法":{"docs":{},"入":{"docs":{},"参":{"docs":{},",":{"docs":{},"代":{"docs":{},"码":{"docs":{},"清":{"docs":{},"单":{"3":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"{":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},"[":{"docs":{},"i":{"docs":{},"]":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629}}}},"]":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.008287292817679558}}},",":{"docs":{},"处":{"docs":{},"于":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},")":{"docs":{},"方":{"docs":{},"法":{"docs":{},"取":{"docs":{},"消":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"语":{"docs":{},"言":{"docs":{},"检":{"docs":{},"查":{"docs":{},",":{"docs":{},"否":{"docs":{},"则":{"docs":{},"将":{"docs":{},"抛":{"docs":{},"出":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"g":{"docs":{},"a":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"t":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.015306122448979591}},"(":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}},":":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"/":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"属":{"docs":{},"性":{"docs":{},"的":{"docs":{},"值":{"docs":{},"可":{"docs":{},"以":{"docs":{},"为":{"docs":{},"一":{"docs":{},"个":{"docs":{},"或":{"docs":{},"多":{"docs":{},"个":{"docs":{},"m":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"值":{"docs":{},",":{"docs":{},"关":{"docs":{},"于":{"docs":{},"m":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"类":{"docs":{},"型":{"docs":{},",":{"docs":{},"大":{"docs":{},"家":{"docs":{},"请":{"docs":{},"参":{"docs":{},"考":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"e":{"docs":{},"n":{"docs":{},".":{"docs":{},"w":{"docs":{},"i":{"docs":{},"k":{"docs":{},"i":{"docs":{},"p":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"a":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"w":{"docs":{},"i":{"docs":{},"k":{"docs":{},"i":{"docs":{},"/":{"docs":{},"m":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"_":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}},"d":{"docs":{},"d":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.024271844660194174}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}},"e":{"docs":{},"(":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}},"s":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{},"e":{"docs":{},"(":{"docs":{},"c":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"p":{"docs":{},"i":{"docs":{},"s":{"docs":{},"c":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}},".":{"docs":{},"s":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},",":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}},".":{"docs":{},".":{"docs":{},"或":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"g":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.014749262536873156}},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0058997050147492625}}},"=":{"3":{"6":{"0":{"0":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},";":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{},"w":{"docs":{},"i":{"docs":{},"r":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}},".":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.007082152974504249}},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"m":{"docs":{},"b":{"docs":{},"l":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}},"t":{"docs":{},"_":{"docs":{},"i":{"docs":{},"m":{"docs":{},"g":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},"l":{"docs":{},"g":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"m":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.007481296758104738}}}}}}}}}}}},"”":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"将":{"docs":{},"变":{"docs":{},"成":{"docs":{},"”":{"docs":{},"m":{"docs":{},"u":{"docs":{},"e":{"docs":{},"l":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}},"l":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"a":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}},".":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}},"i":{"docs":{},"a":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.018633540372670808}}},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"m":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"(":{"docs":{},"'":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}}}}}}},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"b":{"docs":{},",":{"docs":{},"c":{"docs":{},",":{"docs":{},"d":{"docs":{},",":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}}}}}},"a":{"docs":{},"a":{"1":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"2":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}}},"n":{"docs":{},"d":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},"注":{"docs":{},"解":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"a":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"t":{"docs":{},"i":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}},"v":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"a":{"docs":{},"b":{"docs":{},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},",":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}},"w":{"docs":{},"a":{"docs":{},"k":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}},"b":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"是":{"docs":{},"a":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"自":{"docs":{},"带":{"docs":{},"的":{"docs":{},"一":{"docs":{},"款":{"docs":{},"功":{"docs":{},"能":{"docs":{},"强":{"docs":{},"大":{"docs":{},"的":{"docs":{},"测":{"docs":{},"试":{"docs":{},"工":{"docs":{},"具":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"o":{"docs":{},"o":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}},"e":{"docs":{},"z":{"docs":{},"h":{"docs":{},"i":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.008287292817679558},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}},"r":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}},"t":{"docs":{},"h":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{},")":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204}},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"e":{"docs":{},"z":{"docs":{},"h":{"docs":{},"i":{"docs":{},".":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"k":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"q":{"docs":{},"u":{"docs":{},"o":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.008169934640522876}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}},"框":{"docs":{},"架":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"参":{"docs":{},"考":{"docs":{},"指":{"docs":{},"南":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.018867924528301886}},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"(":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464}},".":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},">":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"y":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.05747126436781609}},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}},")":{"docs":{},"{":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}},".":{"docs":{},"k":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},".":{"docs":{},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}},"u":{"docs":{},"y":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}},"d":{"docs":{},"u":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}},"{":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}},"b":{"docs":{},"a":{"docs":{},"l":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}},"c":{"docs":{},"k":{"docs":{},"t":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"y":{"docs":{},"(":{"docs":{},"\"":{"1":{"2":{"3":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}},"d":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}},"r":{"docs":{},"&":{"docs":{},"g":{"docs":{},"t":{"docs":{},";":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255},"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.013986013986013986}},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.007082152974504249}}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}}}}}}}}}}}}}}}}}}}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255}}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}},"s":{"docs":{},".":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"y":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"a":{"docs":{},"r":{"docs":{},"。":{"docs":{},"该":{"docs":{},"方":{"docs":{},"法":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"重":{"docs":{},"载":{"docs":{},"方":{"docs":{},"法":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}},"或":{"docs":{},"者":{"docs":{},"远":{"docs":{},"程":{"docs":{},"的":{"docs":{},"e":{"docs":{},"j":{"docs":{},"b":{"3":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}},"docs":{}}}}}}}}}}},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}},",":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}},"y":{"docs":{},"t":{"docs":{},"e":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"[":{"docs":{},"]":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}}}},"s":{"docs":{},",":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}}}}}}}}},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.004807692307692308}},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"它":{"docs":{},"必":{"docs":{},"然":{"docs":{},"可":{"docs":{},"以":{"docs":{},"接":{"docs":{},"受":{"docs":{},"一":{"docs":{},"个":{"docs":{},"子":{"docs":{},"类":{"docs":{},"对":{"docs":{},"象":{"docs":{},"d":{"docs":{},",":{"docs":{},"也":{"docs":{},"即":{"docs":{},"可":{"docs":{},"以":{"docs":{},"有":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"1":{"docs":{},"(":{"docs":{},"d":{"docs":{},")":{"docs":{},"。":{"docs":{},"反":{"docs":{},"之":{"docs":{},",":{"docs":{},"则":{"docs":{},"不":{"docs":{},"一":{"docs":{},"定":{"docs":{},"成":{"docs":{},"立":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"(":{"docs":{},"a":{"docs":{},")":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}}}}}}}}}},"b":{"docs":{},"b":{"1":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"2":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"3":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}}},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"c":{"docs":{},"k":{"docs":{},"e":{"docs":{},"t":{"docs":{},"s":{"docs":{},")":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"k":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},";":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"}":{"docs":{},")":{"docs":{},"(":{"docs":{},"不":{"docs":{},"使":{"docs":{},"用":{"docs":{},"空":{"docs":{},"格":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}},"c":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.017921146953405017}},"s":{"docs":{},"s":{"docs":{},"压":{"docs":{},"缩":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"j":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"n":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}},".":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},".":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"i":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"p":{"docs":{},"i":{"docs":{},"l":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}},"a":{"docs":{},"r":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"c":{"docs":{},")":{"docs":{},"与":{"docs":{},"策":{"docs":{},"略":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"的":{"docs":{},"使":{"docs":{},"用":{"docs":{},"等":{"docs":{},"等":{"docs":{},"。":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"(":{"docs":{},"p":{"1":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"(":{"docs":{},"p":{"1":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"(":{"docs":{},"比":{"docs":{},"较":{"docs":{},"器":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"在":{"docs":{},"旧":{"docs":{},"版":{"docs":{},"本":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"中":{"docs":{},"是":{"docs":{},"众":{"docs":{},"所":{"docs":{},"周":{"docs":{},"知":{"docs":{},"的":{"docs":{},"。":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"8":{"docs":{},"增":{"docs":{},"加":{"docs":{},"了":{"docs":{},"各":{"docs":{},"种":{"docs":{},"默":{"docs":{},"认":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}},"e":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"s":{"docs":{},")":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"不":{"docs":{},"使":{"docs":{},"用":{"docs":{},"“":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}},"”":{"docs":{},"一":{"docs":{},"词":{"docs":{},",":{"docs":{},"而":{"docs":{},"是":{"docs":{},"用":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}},"a":{"docs":{},"_":{"docs":{},"j":{"docs":{},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},".":{"docs":{},"u":{"docs":{},"i":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}}}}},"n":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.013452914798206279},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.01020408163265306}},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}},"{":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.008287292817679558}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{},",":{"docs":{},"意":{"docs":{},"为":{"docs":{},"控":{"docs":{},"制":{"docs":{},"反":{"docs":{},"转":{"docs":{},",":{"docs":{},"不":{"docs":{},"是":{"docs":{},"什":{"docs":{},"么":{"docs":{},"技":{"docs":{},"术":{"docs":{},",":{"docs":{},"而":{"docs":{},"是":{"docs":{},"一":{"docs":{},"种":{"docs":{},"设":{"docs":{},"计":{"docs":{},"思":{"docs":{},"想":{"docs":{},"。":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"意":{"docs":{},"味":{"docs":{},"着":{"docs":{},"将":{"docs":{},"你":{"docs":{},"设":{"docs":{},"计":{"docs":{},"好":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"交":{"docs":{},"给":{"docs":{},"容":{"docs":{},"器":{"docs":{},"控":{"docs":{},"制":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"传":{"docs":{},"统":{"docs":{},"的":{"docs":{},"在":{"docs":{},"你":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"内":{"docs":{},"部":{"docs":{},"直":{"docs":{},"接":{"docs":{},"控":{"docs":{},"制":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.01020408163265306}}},"的":{"docs":{},"有":{"docs":{},"益":{"docs":{},"补":{"docs":{},"充":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"让":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"“":{"docs":{},"更":{"docs":{},"智":{"docs":{},"能":{"docs":{},"”":{"docs":{},"地":{"docs":{},"处":{"docs":{},"理":{"docs":{},"什":{"docs":{},"么":{"docs":{},"时":{"docs":{},"候":{"docs":{},"要":{"docs":{},"从":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"取":{"docs":{},"资":{"docs":{},"源":{"docs":{},",":{"docs":{},"什":{"docs":{},"么":{"docs":{},"时":{"docs":{},"候":{"docs":{},"可":{"docs":{},"以":{"docs":{},"直":{"docs":{},"接":{"docs":{},"从":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"中":{"docs":{},"返":{"docs":{},"回":{"docs":{},"响":{"docs":{},"应":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"l":{"docs":{},"o":{"docs":{},"l":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0056657223796034},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"(":{"docs":{},"l":{"docs":{},"o":{"docs":{},"l":{"2":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}},"3":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}},"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"w":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"l":{"2":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}},"3":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}},"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"e":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"f":{"docs":{},")":{"docs":{},"{":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}},"i":{"docs":{},"g":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521},"git/guide.html":{"ref":"git/guide.html","tf":0.009708737864077669}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227}},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"(":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}}},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"_":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{},";":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"f":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{},";":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},":":{"docs":{},"类":{"docs":{},"的":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"反":{"docs":{},"射":{"docs":{},"类":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"#":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},"方":{"docs":{},"法":{"docs":{},"可":{"docs":{},"以":{"docs":{},"获":{"docs":{},"得":{"docs":{},"类":{"docs":{},"的":{"docs":{},"所":{"docs":{},"有":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"反":{"docs":{},"射":{"docs":{},"对":{"docs":{},"象":{"docs":{},"数":{"docs":{},"组":{"docs":{},"。":{"docs":{},"在":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"5":{"docs":{},".":{"0":{"docs":{},"中":{"docs":{},",":{"docs":{},"还":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},".":{"docs":{},".":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{},"指":{"docs":{},"的":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"类":{"docs":{},",":{"docs":{},"方":{"docs":{},"法":{"docs":{},"或":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"的":{"docs":{},"主":{"docs":{},"体":{"docs":{},"。":{"docs":{},"需":{"docs":{},"要":{"docs":{},"注":{"docs":{},"意":{"docs":{},"的":{"docs":{},"是":{"docs":{},",":{"docs":{},"数":{"docs":{},"组":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"中":{"docs":{},"的":{"docs":{},"初":{"docs":{},"始":{"docs":{},"值":{"docs":{},"可":{"docs":{},"被":{"docs":{},"选":{"docs":{},"择":{"docs":{},"性":{"docs":{},"地":{"docs":{},"视":{"docs":{},"为":{"docs":{},"块":{"docs":{},"状":{"docs":{},"结":{"docs":{},"构":{"docs":{},"(":{"4":{"docs":{},".":{"8":{"docs":{},".":{"3":{"docs":{},".":{"1":{"docs":{},"节":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"docs":{}}},"docs":{}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}}}}},"u":{"docs":{},"m":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"(":{"docs":{},"消":{"docs":{},"费":{"docs":{},"者":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"代":{"docs":{},"表":{"docs":{},"在":{"docs":{},"一":{"docs":{},"个":{"docs":{},"单":{"docs":{},"一":{"docs":{},"的":{"docs":{},"输":{"docs":{},"入":{"docs":{},"参":{"docs":{},"数":{"docs":{},"上":{"docs":{},"执":{"docs":{},"行":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}}}},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.013452914798206279}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"(":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.011210762331838564}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.013452914798206279},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695},"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"s":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}},"<":{"docs":{},">":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},">":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}}},"c":{"docs":{},"y":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"_":{"1":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}},"2":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}},"docs":{}}}}}}}}}}}}}}}},"r":{"docs":{},"n":{"docs":{},"s":{"docs":{},")":{"docs":{},"。":{"docs":{},"一":{"docs":{},"个":{"docs":{},"层":{"docs":{},"中":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"只":{"docs":{},"会":{"docs":{},"处":{"docs":{},"理":{"docs":{},"本":{"docs":{},"层":{"docs":{},"的":{"docs":{},"逻":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.014423076923076924}},"(":{"docs":{},"f":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"1":{"2":{"3":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}},"docs":{}},"docs":{}},"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"e":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}},"_":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.004901960784313725}}}}}}},"s":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.018072289156626505}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},")":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"终":{"docs":{},"止":{"docs":{},"操":{"docs":{},"作":{"docs":{},"返":{"docs":{},"回":{"docs":{},"流":{"docs":{},"中":{"docs":{},"的":{"docs":{},"元":{"docs":{},"素":{"docs":{},"的":{"docs":{},"数":{"docs":{},"目":{"docs":{},",":{"docs":{},"返":{"docs":{},"回":{"docs":{},"l":{"docs":{},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"类":{"docs":{},"型":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.01020408163265306}},"e":{"docs":{},")":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},"s":{"docs":{},"k":{"docs":{},"i":{"docs":{},"n":{"docs":{},"=":{"docs":{},"b":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},";":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"[":{"docs":{},"]":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.013009540329575022},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0036144578313253013}},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"块":{"docs":{},"中":{"docs":{},"的":{"docs":{},"管":{"docs":{},"道":{"docs":{},"符":{"docs":{},"号":{"docs":{},"(":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}},"等":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"e":{"docs":{},"g":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"_":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}},"i":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"e":{"docs":{},"s":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},"c":{"docs":{},"h":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.025510204081632654}},"e":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"o":{"docs":{},"f":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"e":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"=":{"docs":{},"$":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},".":{"docs":{},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{},"/":{"docs":{},".":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"/":{"docs":{},"c":{"docs":{},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"c":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0036144578313253013}}}}},"l":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.008287292817679558},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.011210762331838564},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.034482758620689655},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.022727272727272728},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.007082152974504249},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.03902439024390244},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.019886363636363636},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.017346053772766695},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.02743142144638404},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.004807692307692308}},".":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}},"\"":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"s":{"docs":{},"u":{"docs":{},".":{"docs":{},"d":{"docs":{},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"i":{"docs":{},"c":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},".":{"docs":{},"i":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"\"":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"s":{"docs":{},"a":{"docs":{},"y":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{},"b":{"docs":{},"y":{"docs":{},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"\"":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"\"":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"\"":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"\"":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"f":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},"{":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}},".":{"docs":{},".":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"[":{"0":{"docs":{},"]":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.003469210754553339}}}}}},"docs":{},"]":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.003469210754553339}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0113314447592068}},"e":{"docs":{},")":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}},"{":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.014634146341463415}},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}},"重":{"docs":{},"要":{"docs":{},"方":{"docs":{},"法":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}},"。":{"docs":{},"与":{"docs":{},"静":{"docs":{},"态":{"docs":{},"处":{"docs":{},"理":{"docs":{},"类":{"docs":{},"相":{"docs":{},"比":{"docs":{},",":{"docs":{},"动":{"docs":{},"态":{"docs":{},"类":{"docs":{},"有":{"docs":{},"诸":{"docs":{},"多":{"docs":{},"好":{"docs":{},"处":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}},"反":{"docs":{},"射":{"docs":{},"对":{"docs":{},"象":{"docs":{},"描":{"docs":{},"述":{"docs":{},"类":{"docs":{},"语":{"docs":{},"义":{"docs":{},"结":{"docs":{},"构":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"从":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"对":{"docs":{},"象":{"docs":{},"中":{"docs":{},"获":{"docs":{},"取":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"、":{"docs":{},"成":{"docs":{},"员":{"docs":{},"变":{"docs":{},"量":{"docs":{},"、":{"docs":{},"方":{"docs":{},"法":{"docs":{},"类":{"docs":{},"等":{"docs":{},"类":{"docs":{},"元":{"docs":{},"素":{"docs":{},"的":{"docs":{},"反":{"docs":{},"射":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"并":{"docs":{},"以":{"docs":{},"编":{"docs":{},"程":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"通":{"docs":{},"过":{"docs":{},"这":{"docs":{},"些":{"docs":{},"反":{"docs":{},"射":{"docs":{},"对":{"docs":{},"象":{"docs":{},"对":{"docs":{},"目":{"docs":{},"标":{"docs":{},"类":{"docs":{},"对":{"docs":{},"象":{"docs":{},"进":{"docs":{},"行":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{},"这":{"docs":{},"些":{"docs":{},"反":{"docs":{},"射":{"docs":{},"对":{"docs":{},"象":{"docs":{},"类":{"docs":{},"在":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"包":{"docs":{},"中":{"docs":{},"定":{"docs":{},"义":{"docs":{},",":{"docs":{},"下":{"docs":{},"面":{"docs":{},"是":{"docs":{},"最":{"docs":{},"主":{"docs":{},"要":{"docs":{},"的":{"docs":{},"三":{"docs":{},"个":{"docs":{},"反":{"docs":{},"射":{"docs":{},"类":{"docs":{},":":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},">":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"字":{"docs":{},"节":{"docs":{},"码":{"docs":{},"组":{"docs":{},"成":{"docs":{},"来":{"docs":{},"生":{"docs":{},"成":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"c":{"docs":{},"l":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{},"具":{"docs":{},"体":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"源":{"docs":{},"码":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"z":{"docs":{},"z":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0056657223796034},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}},".":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"(":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"[":{"docs":{},"]":{"docs":{},")":{"docs":{},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"f":{"docs":{},"i":{"docs":{},"t":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"f":{"docs":{},"i":{"docs":{},"t":{"docs":{},"\"":{"docs":{},",":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255}}}}}}}}},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},"{":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255}}}},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.008968609865470852}}}}}},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}},")":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}},"r":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"i":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}},"c":{"docs":{},"k":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"z":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}},"提":{"docs":{},"供":{"docs":{},"访":{"docs":{},"问":{"docs":{},"当":{"docs":{},"前":{"docs":{},"日":{"docs":{},"期":{"docs":{},"和":{"docs":{},"时":{"docs":{},"间":{"docs":{},"。":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"是":{"docs":{},"对":{"docs":{},"当":{"docs":{},"前":{"docs":{},"时":{"docs":{},"区":{"docs":{},"敏":{"docs":{},"感":{"docs":{},"的":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"用":{"docs":{},"来":{"docs":{},"代":{"docs":{},"替":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},".":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},"来":{"docs":{},"获":{"docs":{},"取":{"docs":{},"当":{"docs":{},"前":{"docs":{},"的":{"docs":{},"毫":{"docs":{},"秒":{"docs":{},"值":{"docs":{},"。":{"docs":{},"当":{"docs":{},"前":{"docs":{},"时":{"docs":{},"间":{"docs":{},"线":{"docs":{},"上":{"docs":{},"的":{"docs":{},"时":{"docs":{},"刻":{"docs":{},"可":{"docs":{},"以":{"docs":{},"用":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"类":{"docs":{},"来":{"docs":{},"表":{"docs":{},"示":{"docs":{},"。":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"可":{"docs":{},"以":{"docs":{},"用":{"docs":{},"来":{"docs":{},"创":{"docs":{},"建":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"格":{"docs":{},"式":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"e":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.009708737864077669}}}}},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"h":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},")":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},".":{"docs":{},"d":{"docs":{},"o":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.014204545454545454}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},"s":{"docs":{},"i":{"docs":{},"g":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.014563106796116505}}}}}}}},"o":{"docs":{},"o":{"docs":{},"s":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"o":{"docs":{},"b":{"docs":{},"i":{"docs":{},"l":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"h":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{},"b":{"docs":{},"e":{"docs":{},"t":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{},"(":{"docs":{},"n":{"docs":{},"o":{"docs":{},"w":{"1":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}}}}}}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{},"b":{"docs":{},"e":{"docs":{},"t":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{},"(":{"docs":{},"n":{"docs":{},"o":{"docs":{},"w":{"1":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"x":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.017699115044247787}}}},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}},"a":{"docs":{},"b":{"docs":{},"i":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0036144578313253013},"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.03496503496503497}},".":{"docs":{},"y":{"docs":{},"m":{"docs":{},"l":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}},"p":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},"d":{"docs":{},"o":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{},"s":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"c":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"e":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"d":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.010752688172043012}}},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.049689440993788817},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}},"=":{"docs":{},"\"":{"docs":{},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204}}}}}}},"\\":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"a":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}},"j":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}},"s":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"@":{"0":{"docs":{},".":{"4":{"docs":{},".":{"1":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}},"docs":{}}},"docs":{}}},"docs":{}},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"非":{"docs":{},"常":{"docs":{},"棒":{"docs":{},"的":{"docs":{},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{},"国":{"docs":{},"内":{"docs":{},"镜":{"docs":{},"像":{"docs":{},"。":{"docs":{},"由":{"docs":{},"于":{"docs":{},"其":{"docs":{},"使":{"docs":{},"用":{"docs":{},"量":{"docs":{},"越":{"docs":{},"来":{"docs":{},"越":{"docs":{},"大":{"docs":{},",":{"docs":{},"加":{"docs":{},"上":{"docs":{},"淘":{"docs":{},"宝":{"docs":{},"内":{"docs":{},"部":{"docs":{},"也":{"docs":{},"有":{"docs":{},"很":{"docs":{},"多":{"docs":{},"项":{"docs":{},"目":{"docs":{},"使":{"docs":{},"用":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"d":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521}}}},"是":{"docs":{},"并":{"docs":{},"发":{"docs":{},"量":{"docs":{},",":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"r":{"docs":{},"y":{"docs":{},"p":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}},"d":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"q":{"docs":{},"u":{"docs":{},"o":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.008169934640522876}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.004901960784313725}}}}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}},"y":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"(":{"docs":{},")":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}}},"u":{"docs":{},"m":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.008522727272727272},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"i":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"创":{"docs":{},"建":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}},"h":{"docs":{},"o":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},"{":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}},"判":{"docs":{},"断":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}},"我":{"docs":{},"们":{"docs":{},"定":{"docs":{},"义":{"docs":{},"一":{"docs":{},"个":{"docs":{},"策":{"docs":{},"略":{"docs":{},"工":{"docs":{},"厂":{"docs":{},",":{"docs":{},"来":{"docs":{},"生":{"docs":{},"产":{"docs":{},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},"。":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"_":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"}":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{},",":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}},".":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},"!":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"(":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}},"y":{"docs":{},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.013452914798206279}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}},"e":{"docs":{},"d":{"docs":{},"e":{"docs":{},"d":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}}}}}}}}}}},"p":{"docs":{},"u":{"docs":{},"n":{"docs":{},"g":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"l":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"r":{"docs":{},"工":{"docs":{},"具":{"docs":{},"栏":{"docs":{},"中":{"docs":{},"。":{"docs":{},"它":{"docs":{},"不":{"docs":{},"用":{"docs":{},"代":{"docs":{},"理":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"或":{"docs":{},"一":{"docs":{},"些":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"的":{"docs":{},"网":{"docs":{},"络":{"docs":{},"监":{"docs":{},"控":{"docs":{},"工":{"docs":{},"具":{"docs":{},",":{"docs":{},"就":{"docs":{},"能":{"docs":{},"抓":{"docs":{},"取":{"docs":{},"请":{"docs":{},"求":{"docs":{},"及":{"docs":{},"响":{"docs":{},"应":{"docs":{},"的":{"docs":{},"完":{"docs":{},"整":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"包":{"docs":{},"括":{"docs":{},"c":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},"、":{"docs":{},"消":{"docs":{},"息":{"docs":{},"头":{"docs":{},"、":{"docs":{},"查":{"docs":{},"询":{"docs":{},"参":{"docs":{},"数":{"docs":{},"、":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"等":{"docs":{},",":{"docs":{},"是":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"应":{"docs":{},"用":{"docs":{},"开":{"docs":{},"发":{"docs":{},"人":{"docs":{},"员":{"docs":{},"的":{"docs":{},"必":{"docs":{},"备":{"docs":{},"工":{"docs":{},"具":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"r":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"_":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}}},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{},"{":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"s":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"方":{"docs":{},"法":{"docs":{},"进":{"docs":{},"行":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}},"j":{"docs":{},"s":{"docs":{},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},",":{"docs":{},"s":{"docs":{},"t":{"docs":{},"y":{"docs":{},"l":{"docs":{},"u":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}},"u":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{},"y":{"docs":{},"_":{"docs":{},"a":{"docs":{},"r":{"docs":{},"r":{"docs":{},"a":{"docs":{},"y":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},".":{"docs":{},"p":{"docs":{},"o":{"docs":{},"p":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}},"”":{"docs":{},"都":{"docs":{},"是":{"docs":{},"正":{"docs":{},"确":{"docs":{},"的":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"方":{"docs":{},"法":{"docs":{},"名":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{},"y":{"docs":{},"和":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{},"y":{"docs":{},"也":{"docs":{},"都":{"docs":{},"是":{"docs":{},"正":{"docs":{},"确":{"docs":{},"的":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}},"e":{"docs":{},"应":{"docs":{},"用":{"docs":{},"的":{"docs":{},"实":{"docs":{},"际":{"docs":{},"标":{"docs":{},"准":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"很":{"docs":{},"多":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}},"f":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}},"o":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"java8/foreach.html":{"ref":"java8/foreach.html","tf":5.018072289156627}},"操":{"docs":{},"作":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}},"语":{"docs":{},"句":{"docs":{},"中":{"docs":{},"的":{"docs":{},"分":{"docs":{},"号":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}},".":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"m":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"e":{"docs":{},"r":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},".":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"(":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"t":{"docs":{},"i":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.004807692307692308}},"(":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},".":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"c":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"1":{"0":{"0":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}},"s":{"docs":{},"q":{"docs":{},"r":{"docs":{},"t":{"docs":{},"(":{"1":{"6":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"docs":{}},"docs":{}}}}}}}}}},")":{"docs":{},"开":{"docs":{},"始":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"w":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"又":{"docs":{},"给":{"docs":{},"出":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"新":{"docs":{},"的":{"docs":{},"名":{"docs":{},"字":{"docs":{},":":{"docs":{},"“":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"注":{"docs":{},"入":{"docs":{},"”":{"docs":{},",":{"docs":{},"相":{"docs":{},"对":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}},"f":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"h":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"l":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{},"后":{"docs":{},"面":{"docs":{},"有":{"docs":{},"讲":{"docs":{},"解":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}},"默":{"docs":{},"认":{"docs":{},"为":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},",":{"docs":{},"至":{"docs":{},"于":{"docs":{},"什":{"docs":{},"么":{"docs":{},"是":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},".":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}},":":{"docs":{},"或":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},":":{"docs":{},")":{"docs":{},",":{"docs":{},"后":{"docs":{},"面":{"docs":{},"跟":{"docs":{},"着":{"docs":{},"一":{"docs":{},"条":{"docs":{},"或":{"docs":{},"多":{"docs":{},"条":{"docs":{},"语":{"docs":{},"句":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}},";":{"docs":{},"(":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"间":{"docs":{},"没":{"docs":{},"有":{"docs":{},"空":{"docs":{},"格":{"docs":{},",":{"docs":{},"见":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"”":{"docs":{},",":{"docs":{},"确":{"docs":{},"实":{"docs":{},"也":{"docs":{},"没":{"docs":{},"有":{"docs":{},"什":{"docs":{},"么":{"docs":{},"值":{"docs":{},"得":{"docs":{},"写":{"docs":{},"了":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.014204545454545454},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.008673026886383347},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.012048192771084338}},"\"":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"”":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"不":{"docs":{},"要":{"docs":{},"使":{"docs":{},"用":{"docs":{},"它":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"d":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}},"e":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},")":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"接":{"docs":{},"受":{"docs":{},"一":{"docs":{},"个":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"来":{"docs":{},"过":{"docs":{},"滤":{"docs":{},"流":{"docs":{},"的":{"docs":{},"所":{"docs":{},"有":{"docs":{},"元":{"docs":{},"素":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"中":{"docs":{},"间":{"docs":{},"操":{"docs":{},"作":{"docs":{},"能":{"docs":{},"够":{"docs":{},"调":{"docs":{},"用":{"docs":{},"另":{"docs":{},"一":{"docs":{},"个":{"docs":{},"流":{"docs":{},"的":{"docs":{},"操":{"docs":{},"作":{"docs":{},"(":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},")":{"docs":{},"的":{"docs":{},"结":{"docs":{},"果":{"docs":{},"。":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"接":{"docs":{},"受":{"docs":{},"一":{"docs":{},"个":{"docs":{},"消":{"docs":{},"费":{"docs":{},"者":{"docs":{},"为":{"docs":{},"每":{"docs":{},"个":{"docs":{},"元":{"docs":{},"素":{"docs":{},"执":{"docs":{},"行":{"docs":{},"过":{"docs":{},"滤":{"docs":{},"流":{"docs":{},"。":{"docs":{},"它":{"docs":{},"是":{"docs":{},"v":{"docs":{},"o":{"docs":{},"i":{"docs":{},"d":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"我":{"docs":{},"们":{"docs":{},"不":{"docs":{},"能":{"docs":{},"称":{"docs":{},"之":{"docs":{},"为":{"docs":{},"另":{"docs":{},"一":{"docs":{},"个":{"docs":{},"流":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},".":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}},"』":{"docs":{},"功":{"docs":{},"能":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"特":{"docs":{},"性":{"docs":{},"加":{"docs":{},"载":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}},"(":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"/":{"docs":{},"y":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"a":{"docs":{},"o":{"docs":{},"/":{"docs":{},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},"k":{"docs":{},"t":{"docs":{},"o":{"docs":{},"p":{"docs":{},"/":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},".":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"(":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"\"":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"\"":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"[":{"docs":{},"]":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}},"_":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"(":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},")":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.00975609756097561},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"s":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},"{":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"(":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{},"w":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"a":{"docs":{},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},",":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}},"[":{"docs":{},"]":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}},":":{"docs":{},"类":{"docs":{},"的":{"docs":{},"成":{"docs":{},"员":{"docs":{},"变":{"docs":{},"量":{"docs":{},"的":{"docs":{},"反":{"docs":{},"射":{"docs":{},"类":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"#":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},"方":{"docs":{},"法":{"docs":{},"可":{"docs":{},"以":{"docs":{},"获":{"docs":{},"取":{"docs":{},"类":{"docs":{},"的":{"docs":{},"成":{"docs":{},"员":{"docs":{},"变":{"docs":{},"量":{"docs":{},"反":{"docs":{},"射":{"docs":{},"对":{"docs":{},"象":{"docs":{},"数":{"docs":{},"组":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"#":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"(":{"docs":{},"p":{"docs":{},"m":{"docs":{},".":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}}}},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464}},"e":{"docs":{},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"l":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0036144578313253013}}}},"c":{"docs":{},"e":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"2":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}},"docs":{}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}}},"y":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"实":{"docs":{},"现":{"docs":{},"了":{"docs":{},"s":{"docs":{},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{},"接":{"docs":{},"口":{"docs":{},"的":{"docs":{},"内":{"docs":{},"部":{"docs":{},"类":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"类":{"docs":{},"覆":{"docs":{},"盖":{"docs":{},"了":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"在":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"方":{"docs":{},"法":{"docs":{},"中":{"docs":{},"调":{"docs":{},"用":{"docs":{},"了":{"docs":{},"类":{"docs":{},"型":{"docs":{},"为":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"的":{"docs":{},"实":{"docs":{},"例":{"docs":{},"方":{"docs":{},"法":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"y":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"方":{"docs":{},"法":{"docs":{},"才":{"docs":{},"是":{"docs":{},"真":{"docs":{},"正":{"docs":{},"创":{"docs":{},"建":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"看":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"y":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"源":{"docs":{},"码":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"l":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"(":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"l":{"docs":{},"a":{"docs":{},"g":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"r":{"docs":{},"i":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"o":{"docs":{},"m":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}},"s":{"docs":{},"(":{"docs":{},"函":{"docs":{},"数":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"接":{"docs":{},"受":{"docs":{},"一":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"并":{"docs":{},"产":{"docs":{},"生":{"docs":{},"一":{"docs":{},"个":{"docs":{},"结":{"docs":{},"果":{"docs":{},"。":{"docs":{},"默":{"docs":{},"认":{"docs":{},"方":{"docs":{},"法":{"docs":{},"可":{"docs":{},"以":{"docs":{},"将":{"docs":{},"多":{"docs":{},"个":{"docs":{},"函":{"docs":{},"数":{"docs":{},"串":{"docs":{},"在":{"docs":{},"一":{"docs":{},"起":{"docs":{},"(":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"u":{"docs":{},"m":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}}},"u":{"docs":{},"g":{"docs":{},"i":{"docs":{},"a":{"docs":{},"t":{"docs":{},".":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"_":{"docs":{},"x":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.009708737864077669}}}}}}}}},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{},",":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"、":{"docs":{},"m":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{},"s":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204}},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.00980392156862745},"git/guide.html":{"ref":"git/guide.html","tf":5.179611650485437}},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.009708737864077669}},"仓":{"docs":{},"库":{"docs":{},"地":{"docs":{},"址":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"b":{"docs":{},"o":{"docs":{},"x":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}},"k":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}},"x":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}},"v":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"(":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}},"r":{"docs":{},"l":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.034482758620689655}}}},"s":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"_":{"docs":{},"i":{"docs":{},"d":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":5}}}},"d":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},",":{"docs":{},"对":{"docs":{},"于":{"docs":{},"非":{"docs":{},"打":{"docs":{},"印":{"docs":{},"字":{"docs":{},"符":{"docs":{},",":{"docs":{},"使":{"docs":{},"用":{"docs":{},"转":{"docs":{},"义":{"docs":{},",":{"docs":{},"并":{"docs":{},"在":{"docs":{},"必":{"docs":{},"要":{"docs":{},"时":{"docs":{},"写":{"docs":{},"上":{"docs":{},"注":{"docs":{},"释":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}},"!":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"—":{"docs":{},"—":{"docs":{},"w":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}},"r":{"docs":{},"g":{"docs":{},"s":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}},"f":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"\"":{"docs":{},".":{"docs":{},"\"":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},":":{"docs":{},"获":{"docs":{},"取":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"注":{"docs":{},"解":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},":":{"docs":{},"获":{"docs":{},"取":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"入":{"docs":{},"参":{"docs":{},"类":{"docs":{},"型":{"docs":{},"数":{"docs":{},"组":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}},")":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"0":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},"docs":{}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}},"r":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},":":{"docs":{},"获":{"docs":{},"取":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"返":{"docs":{},"回":{"docs":{},"值":{"docs":{},"类":{"docs":{},"型":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}}}},"b":{"docs":{},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}},"(":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}},"t":{"docs":{},"r":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426}}}}},"k":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}},"t":{"docs":{},"r":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426}}}}}}}}},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"(":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}},"t":{"docs":{},"r":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426}}}}}},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}},"t":{"docs":{},"r":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}},"i":{"docs":{},"f":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"f":{"docs":{},"i":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},":":{"docs":{},"获":{"docs":{},"取":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"异":{"docs":{},"常":{"docs":{},"类":{"docs":{},"型":{"docs":{},"数":{"docs":{},"组":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.022727272727272728},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},"{":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{},"饿":{"docs":{},"汉":{"docs":{},"式":{"docs":{},"的":{"docs":{},"创":{"docs":{},"建":{"docs":{},"方":{"docs":{},"式":{"docs":{},"在":{"docs":{},"一":{"docs":{},"些":{"docs":{},"场":{"docs":{},"景":{"docs":{},"中":{"docs":{},"将":{"docs":{},"无":{"docs":{},"法":{"docs":{},"使":{"docs":{},"用":{"docs":{},":":{"docs":{},"譬":{"docs":{},"如":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.005681818181818182}}}}}}}}}}}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},")":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"hexo/config.html":{"ref":"hexo/config.html","tf":0.019178082191780823},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.008169934640522876}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},".":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.00997506234413965}}}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"e":{"docs":{},"r":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"(":{"docs":{},")":{"docs":{},"{":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"\"":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}},"e":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},".":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"(":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}},"k":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"u":{"docs":{},"i":{"docs":{},"反":{"docs":{},"编":{"docs":{},"译":{"docs":{},"该":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"结":{"docs":{},"果":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"中":{"docs":{},",":{"docs":{},"定":{"docs":{},"义":{"docs":{},"了":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"该":{"docs":{},"接":{"docs":{},"口":{"docs":{},"包":{"docs":{},"含":{"docs":{},"一":{"docs":{},"个":{"docs":{},"带":{"docs":{},"有":{"docs":{},"泛":{"docs":{},"型":{"docs":{},"参":{"docs":{},"数":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"库":{"docs":{},"。":{"docs":{},"即":{"docs":{},"使":{"docs":{},"你":{"docs":{},"熟":{"docs":{},"悉":{"docs":{},"这":{"docs":{},"个":{"docs":{},"库":{"docs":{},"也":{"docs":{},"应":{"docs":{},"该":{"docs":{},"密":{"docs":{},"切":{"docs":{},"关":{"docs":{},"注":{"docs":{},"这":{"docs":{},"些":{"docs":{},"接":{"docs":{},"口":{"docs":{},"是":{"docs":{},"如":{"docs":{},"何":{"docs":{},"延":{"docs":{},"长":{"docs":{},"一":{"docs":{},"些":{"docs":{},"有":{"docs":{},"用":{"docs":{},"的":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}},"后":{"docs":{},"也":{"docs":{},"没":{"docs":{},"有":{"docs":{},"反":{"docs":{},"应":{"docs":{},",":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"执":{"docs":{},"行":{"docs":{},"一":{"docs":{},"下":{"docs":{},"这":{"docs":{},"个":{"docs":{},"命":{"docs":{},"令":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.024844720496894408},"hexo/config.html":{"ref":"hexo/config.html","tf":0.049315068493150684},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.029411764705882353}},"搭":{"docs":{},"建":{"docs":{},"博":{"docs":{},"客":{"docs":{"./":{"ref":"./","tf":0.018867924528301886},"Hexo搭建博客.html":{"ref":"Hexo搭建博客.html","tf":11}}}}}},"使":{"docs":{},"用":{"docs":{},"的":{"docs":{},"m":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"来":{"docs":{},"处":{"docs":{},"理":{"docs":{},"时":{"docs":{},"间":{"docs":{},"的":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}},"为":{"docs":{},"部":{"docs":{},"署":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"快":{"docs":{},"速":{"docs":{},"、":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{},"你":{"docs":{},"只":{"docs":{},"需":{"docs":{},"要":{"docs":{},"一":{"docs":{},"个":{"docs":{},"命":{"docs":{},"令":{"docs":{},"将":{"docs":{},"网":{"docs":{},"站":{"docs":{},"部":{"docs":{},"署":{"docs":{},"到":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"提":{"docs":{},"供":{"docs":{},"了":{"3":{"docs":{},"个":{"docs":{},"默":{"docs":{},"认":{"docs":{},"布":{"docs":{},"局":{"docs":{},":":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"、":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}},"docs":{},"一":{"docs":{},"个":{"docs":{},"更":{"docs":{},"加":{"docs":{},"方":{"docs":{},"便":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"来":{"docs":{},"管":{"docs":{},"理":{"docs":{},"资":{"docs":{},"源":{"docs":{},"。":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"修":{"docs":{},"改":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}},"生":{"docs":{},"成":{"docs":{},"静":{"docs":{},"态":{"docs":{},"文":{"docs":{},"件":{"docs":{},"非":{"docs":{},"常":{"docs":{},"简":{"docs":{},"单":{"docs":{},"、":{"docs":{},"高":{"docs":{},"效":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}},"立":{"docs":{},"即":{"docs":{},"可":{"docs":{},"以":{"docs":{},"看":{"docs":{},"到":{"docs":{},"文":{"docs":{},"件":{"docs":{},"更":{"docs":{},"改":{"docs":{},"并":{"docs":{},"重":{"docs":{},"新":{"docs":{},"生":{"docs":{},"成":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"将":{"docs":{},"比":{"docs":{},"较":{"docs":{},"s":{"docs":{},"h":{"docs":{},"a":{"1":{"docs":{},"校":{"docs":{},"验":{"docs":{},"和":{"docs":{},"文":{"docs":{},"件":{"docs":{},"和":{"docs":{},"只":{"docs":{},"写":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"改":{"docs":{},"变":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"运":{"docs":{},"行":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"在":{"docs":{},"默":{"docs":{},"认":{"0":{"docs":{},".":{"0":{"docs":{},".":{"0":{"docs":{},".":{"0":{"docs":{},"。":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"覆":{"docs":{},"盖":{"docs":{},"默":{"docs":{},"认":{"docs":{},"的":{"docs":{},"i":{"docs":{},"p":{"docs":{},"设":{"docs":{},"置":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}},"docs":{}}},"docs":{}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}},"(":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},"。":{"docs":{},"在":{"docs":{},"③":{"docs":{},"处":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"又":{"docs":{},"通":{"docs":{},"过":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"的":{"docs":{},"反":{"docs":{},"射":{"docs":{},"类":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"s":{"docs":{},"a":{"docs":{},"y":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}},"k":{"docs":{},"u":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"e":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"l":{"docs":{},"d":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}},",":{"docs":{},"就":{"docs":{},"会":{"docs":{},"默":{"docs":{},"认":{"docs":{},"在":{"docs":{},"_":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"目":{"docs":{},"录":{"docs":{},"下":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},".":{"docs":{},"m":{"docs":{},"d":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}},"n":{"docs":{},"d":{"docs":{},"r":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}}},"a":{"docs":{},"d":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.009708737864077669}},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"还":{"docs":{},"没":{"docs":{},"到":{"docs":{},"你":{"docs":{},"的":{"docs":{},"远":{"docs":{},"端":{"docs":{},"仓":{"docs":{},"库":{"docs":{},"。":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}},"它":{"docs":{},"指":{"docs":{},"向":{"docs":{},"你":{"docs":{},"最":{"docs":{},"后":{"docs":{},"一":{"docs":{},"次":{"docs":{},"提":{"docs":{},"交":{"docs":{},"的":{"docs":{},"结":{"docs":{},"果":{"docs":{},"。":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"解":{"docs":{},"剖":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"articles/request_message.html":{"ref":"articles/request_message.html","tf":10.005102040816327}}}},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}},"由":{"3":{"docs":{},"部":{"docs":{},"分":{"docs":{},"组":{"docs":{},"成":{"docs":{},"(":{"docs":{},"请":{"docs":{},"求":{"docs":{},"行":{"docs":{},"+":{"docs":{},"请":{"docs":{},"求":{"docs":{},"头":{"docs":{},"+":{"docs":{},"请":{"docs":{},"求":{"docs":{},"体":{"docs":{},")":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"j":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"n":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}},"b":{"docs":{},"i":{"docs":{},"e":{"docs":{},"z":{"docs":{},"h":{"docs":{},"i":{"docs":{},"/":{"docs":{},"j":{"docs":{},"b":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"o":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"s":{"docs":{},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"d":{"docs":{},"e":{"docs":{},"v":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"s":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"/":{"3":{"5":{"6":{"0":{"9":{"5":{"1":{"9":{"2":{"0":{"8":{"5":{"9":{"6":{"2":{"7":{"5":{"2":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}},"e":{"docs":{},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"s":{"docs":{},"/":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"v":{"docs":{},"i":{"docs":{},"s":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"t":{"docs":{},".":{"docs":{},"s":{"docs":{},"g":{"docs":{},"/":{"2":{"0":{"1":{"2":{"docs":{},"/":{"0":{"7":{"docs":{},"/":{"docs":{},"w":{"docs":{},"h":{"docs":{},"i":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},":":{"4":{"0":{"0":{"0":{"docs":{},"/":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"v":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"s":{"docs":{},".":{"docs":{},"i":{"docs":{},"o":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"g":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{},".":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"d":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"s":{"docs":{},"_":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"/":{"2":{"0":{"0":{"9":{"docs":{},"/":{"0":{"7":{"docs":{},"/":{"docs":{},"w":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"w":{"docs":{},"w":{"docs":{},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"i":{"docs":{},"d":{"docs":{},"u":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"/":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},".":{"docs":{},"p":{"docs":{},"h":{"docs":{},"p":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"o":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"l":{"docs":{},"e":{"docs":{},"/":{"1":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"2":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"3":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"4":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"5":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"6":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"7":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"docs":{}}}}}}}}},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"/":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}},"s":{"docs":{},"i":{"docs":{},"g":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"/":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}},"u":{"docs":{},"p":{"docs":{},"/":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}},"q":{"docs":{},"i":{"docs":{},"x":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"3":{"1":{"8":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"docs":{}},"docs":{}},"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},"/":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}},"z":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"s":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.025089605734767026}},"以":{"docs":{},"并":{"docs":{},"行":{"docs":{},"复":{"docs":{},"用":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"运":{"docs":{},"行":{"docs":{},",":{"docs":{},"用":{"docs":{},"以":{"docs":{},"测":{"docs":{},"试":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"的":{"docs":{},"吞":{"docs":{},"吐":{"docs":{},"量":{"docs":{},"与":{"docs":{},"负":{"docs":{},"载":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"是":{"docs":{},"强":{"docs":{},"大":{"docs":{},"的":{"docs":{},"网":{"docs":{},"页":{"docs":{},"数":{"docs":{},"据":{"docs":{},"分":{"docs":{},"析":{"docs":{},"工":{"docs":{},"具":{"docs":{},",":{"docs":{},"安":{"docs":{},"装":{"docs":{},"后":{"docs":{},"将":{"docs":{},"集":{"docs":{},"成":{"docs":{},"到":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"解":{"docs":{},"剖":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}},"的":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"也":{"docs":{},"由":{"docs":{},"三":{"docs":{},"部":{"docs":{},"分":{"docs":{},"组":{"docs":{},"成":{"docs":{},"(":{"docs":{},"响":{"docs":{},"应":{"docs":{},"行":{"docs":{},"+":{"docs":{},"响":{"docs":{},"应":{"docs":{},"头":{"docs":{},"+":{"docs":{},"响":{"docs":{},"应":{"docs":{},"体":{"docs":{},")":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}},"状":{"docs":{},"态":{"docs":{},"码":{"docs":{},"由":{"5":{"docs":{},"段":{"docs":{},"组":{"docs":{},"成":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}},"docs":{}}}}}}}}}}},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}},"a":{"docs":{},"l":{"docs":{},"g":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"m":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"(":{"docs":{},"i":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{},"w":{"docs":{},"o":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"h":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}}}}},"<":{"docs":{},">":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"&":{"docs":{},"l":{"docs":{},"t":{"docs":{},";":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"&":{"docs":{},"g":{"docs":{},"t":{"docs":{},";":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"p":{"docs":{},"i":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.006535947712418301}}}}},"r":{"docs":{},"d":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"进":{"docs":{},"行":{"docs":{},"了":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"h":{"docs":{},":":{"docs":{},"m":{"docs":{},"m":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},":":{"docs":{},"s":{"docs":{},"s":{"docs":{},"\"":{"docs":{},")":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.004807692307692308}},"[":{"docs":{},"]":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}},"s":{"1":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"2":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"docs":{}}}},"g":{"docs":{},"h":{"docs":{},"l":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}}}}}}},"t":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"s":{"docs":{},"b":{"docs":{},"e":{"docs":{},"t":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}},"i":{"1":{"8":{"docs":{},"n":{"docs":{},"_":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"目":{"docs":{},"录":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"docs":{}},"docs":{},"o":{"docs":{},"c":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}},"容":{"docs":{},"器":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},"实":{"docs":{},"现":{"docs":{},"篇":{"docs":{"./":{"ref":"./","tf":0.018867924528301886},"ioc/IOC容器实现篇.html":{"ref":"ioc/IOC容器实现篇.html","tf":11}}}}}}},"的":{"docs":{},"概":{"docs":{},"念":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":10.011494252873563},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}},"和":{"docs":{},"d":{"docs":{},"i":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}},"由":{"docs":{},"什":{"docs":{},"么":{"docs":{},"关":{"docs":{},"系":{"docs":{},"呢":{"docs":{},"?":{"docs":{},"其":{"docs":{},"实":{"docs":{},"它":{"docs":{},"们":{"docs":{},"是":{"docs":{},"同":{"docs":{},"一":{"docs":{},"个":{"docs":{},"概":{"docs":{},"念":{"docs":{},"的":{"docs":{},"不":{"docs":{},"同":{"docs":{},"角":{"docs":{},"度":{"docs":{},"描":{"docs":{},"述":{"docs":{},",":{"docs":{},"由":{"docs":{},"于":{"docs":{},"控":{"docs":{},"制":{"docs":{},"反":{"docs":{},"转":{"docs":{},"概":{"docs":{},"念":{"docs":{},"比":{"docs":{},"较":{"docs":{},"含":{"docs":{},"糊":{"docs":{},"(":{"docs":{},"可":{"docs":{},"能":{"docs":{},"只":{"docs":{},"是":{"docs":{},"理":{"docs":{},"解":{"docs":{},"为":{"docs":{},"容":{"docs":{},"器":{"docs":{},"控":{"docs":{},"制":{"docs":{},"对":{"docs":{},"象":{"docs":{},"这":{"docs":{},"一":{"docs":{},"个":{"docs":{},"层":{"docs":{},"面":{"docs":{},",":{"docs":{},"很":{"docs":{},"难":{"docs":{},"让":{"docs":{},"人":{"docs":{},"想":{"docs":{},"到":{"docs":{},"谁":{"docs":{},"来":{"docs":{},"维":{"docs":{},"护":{"docs":{},"对":{"docs":{},"象":{"docs":{},"关":{"docs":{},"系":{"docs":{},")":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"2":{"0":{"0":{"4":{"docs":{},"年":{"docs":{},"大":{"docs":{},"师":{"docs":{},"级":{"docs":{},"人":{"docs":{},"物":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"很":{"docs":{},"好":{"docs":{},"的":{"docs":{},"体":{"docs":{},"现":{"docs":{},"了":{"docs":{},"面":{"docs":{},"向":{"docs":{},"对":{"docs":{},"象":{"docs":{},"设":{"docs":{},"计":{"docs":{},"法":{"docs":{},"则":{"docs":{},"之":{"docs":{},"一":{"docs":{},"—":{"docs":{},"—":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}},"能":{"docs":{},"做":{"docs":{},"什":{"docs":{},"么":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}},"这":{"docs":{},"个":{"docs":{},"核":{"docs":{},"心":{"docs":{},"概":{"docs":{},"念":{"docs":{},",":{"docs":{},"我":{"docs":{},"相":{"docs":{},"信":{"docs":{},"每":{"docs":{},"一":{"docs":{},"个":{"docs":{},"学":{"docs":{},"习":{"docs":{},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"的":{"docs":{},"人":{"docs":{},"都":{"docs":{},"会":{"docs":{},"有":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"理":{"docs":{},"解":{"docs":{},"。":{"docs":{},"这":{"docs":{},"种":{"docs":{},"概":{"docs":{},"念":{"docs":{},"上":{"docs":{},"的":{"docs":{},"理":{"docs":{},"解":{"docs":{},"没":{"docs":{},"有":{"docs":{},"绝":{"docs":{},"对":{"docs":{},"的":{"docs":{},"标":{"docs":{},"准":{"docs":{},"答":{"docs":{},"案":{"docs":{},",":{"docs":{},"仁":{"docs":{},"者":{"docs":{},"见":{"docs":{},"仁":{"docs":{},"智":{"docs":{},"者":{"docs":{},"见":{"docs":{},"智":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},"{":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},"{":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}},"s":{"docs":{},"?":{"docs":{},"\"":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"n":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.017937219730941704},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0058997050147492625},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.015151515151515152},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.014634146341463415},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.006730769230769231},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.007228915662650603},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.004336513443191674},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}},"e":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}},"s":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.003469210754553339},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},"[":{"docs":{},"]":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"e":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}},"n":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},"a":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"u":{"docs":{},"n":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}},"g":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.014749262536873156},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"o":{"docs":{},"f":{"docs":{},"(":{"docs":{},"f":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},":":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"o":{"docs":{},"f":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}}}}}}}}}},"f":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.003469210754553339}},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}},"s":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}},"[":{"docs":{},"]":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.007228915662650603}}}}},"i":{"docs":{},"t":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602},"hexo/config.html":{"ref":"hexo/config.html","tf":0.00821917808219178},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"(":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}},")":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227}}},"w":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"s":{"docs":{},")":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"该":{"docs":{},"方":{"docs":{},"法":{"docs":{},"可":{"docs":{},"以":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"对":{"docs":{},"象":{"docs":{},"类":{"docs":{},"的":{"docs":{},"实":{"docs":{},"例":{"docs":{},",":{"docs":{},"相":{"docs":{},"当":{"docs":{},"于":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"关":{"docs":{},"键":{"docs":{},"字":{"docs":{},"。":{"docs":{},"在":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"5":{"docs":{},".":{"0":{"docs":{},"中":{"docs":{},"该":{"docs":{},"方":{"docs":{},"法":{"docs":{},"演":{"docs":{},"化":{"docs":{},"为":{"docs":{},"更":{"docs":{},"为":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"的":{"docs":{},"形":{"docs":{},"式":{"docs":{},":":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"z":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{},"会":{"docs":{},"倾":{"docs":{},"向":{"docs":{},"于":{"docs":{},"使":{"docs":{},"用":{"docs":{},"静":{"docs":{},"态":{"docs":{},"内":{"docs":{},"部":{"docs":{},"类":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"涉":{"docs":{},"及":{"docs":{},"到":{"docs":{},"反":{"docs":{},"序":{"docs":{},"列":{"docs":{},"化":{"docs":{},"创":{"docs":{},"建":{"docs":{},"对":{"docs":{},"象":{"docs":{},"时":{"docs":{},"会":{"docs":{},"试":{"docs":{},"着":{"docs":{},"使":{"docs":{},"用":{"docs":{},"枚":{"docs":{},"举":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"来":{"docs":{},"实":{"docs":{},"现":{"docs":{},"单":{"docs":{},"例":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"单":{"docs":{},"例":{"docs":{},"会":{"docs":{},"在":{"docs":{},"加":{"docs":{},"载":{"docs":{},"类":{"docs":{},"后":{"docs":{},"一":{"docs":{},"开":{"docs":{},"始":{"docs":{},"就":{"docs":{},"被":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},",":{"docs":{},"即":{"docs":{},"使":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"没":{"docs":{},"有":{"docs":{},"调":{"docs":{},"用":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227}},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}},")":{"docs":{},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227}}}},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{},"o":{"docs":{},"f":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"k":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"/":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}},"o":{"docs":{},".":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},",":{"docs":{},"该":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},"可":{"docs":{},"没":{"docs":{},"有":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}},"类":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.036931818181818184},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},"e":{"docs":{},";":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.019886363636363636}}},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"使":{"docs":{},"用":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"顺":{"docs":{},"理":{"docs":{},"成":{"docs":{},"章":{"docs":{},"地":{"docs":{},"报":{"docs":{},"错":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464}}}},"l":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.024844720496894408},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.010752688172043012}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{},"即":{"docs":{},"“":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"注":{"docs":{},"入":{"docs":{},"”":{"docs":{},":":{"docs":{},"组":{"docs":{},"件":{"docs":{},"之":{"docs":{},"间":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"关":{"docs":{},"系":{"docs":{},"由":{"docs":{},"容":{"docs":{},"器":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"期":{"docs":{},"决":{"docs":{},"定":{"docs":{},",":{"docs":{},"形":{"docs":{},"象":{"docs":{},"的":{"docs":{},"说":{"docs":{},",":{"docs":{},"即":{"docs":{},"由":{"docs":{},"容":{"docs":{},"器":{"docs":{},"动":{"docs":{},"态":{"docs":{},"的":{"docs":{},"将":{"docs":{},"某":{"docs":{},"个":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"关":{"docs":{},"系":{"docs":{},"注":{"docs":{},"入":{"docs":{},"到":{"docs":{},"组":{"docs":{},"件":{"docs":{},"之":{"docs":{},"中":{"docs":{},"。":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"注":{"docs":{},"入":{"docs":{},"的":{"docs":{},"目":{"docs":{},"的":{"docs":{},"并":{"docs":{},"非":{"docs":{},"为":{"docs":{},"软":{"docs":{},"件":{"docs":{},"系":{"docs":{},"统":{"docs":{},"带":{"docs":{},"来":{"docs":{},"更":{"docs":{},"多":{"docs":{},"功":{"docs":{},"能":{"docs":{},",":{"docs":{},"而":{"docs":{},"是":{"docs":{},"为":{"docs":{},"了":{"docs":{},"提":{"docs":{},"升":{"docs":{},"组":{"docs":{},"件":{"docs":{},"重":{"docs":{},"用":{"docs":{},"的":{"docs":{},"频":{"docs":{},"率":{"docs":{},",":{"docs":{},"并":{"docs":{},"为":{"docs":{},"系":{"docs":{},"统":{"docs":{},"搭":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"、":{"docs":{},"可":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"的":{"docs":{},"平":{"docs":{},"台":{"docs":{},"。":{"docs":{},"通":{"docs":{},"过":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"注":{"docs":{},"入":{"docs":{},"机":{"docs":{},"制":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"只":{"docs":{},"需":{"docs":{},"要":{"docs":{},"通":{"docs":{},"过":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"配":{"docs":{},"置":{"docs":{},",":{"docs":{},"而":{"docs":{},"无":{"docs":{},"需":{"docs":{},"任":{"docs":{},"何":{"docs":{},"代":{"docs":{},"码":{"docs":{},"就":{"docs":{},"可":{"docs":{},"指":{"docs":{},"定":{"docs":{},"目":{"docs":{},"标":{"docs":{},"需":{"docs":{},"要":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},",":{"docs":{},"完":{"docs":{},"成":{"docs":{},"自":{"docs":{},"身":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"需":{"docs":{},"要":{"docs":{},"关":{"docs":{},"心":{"docs":{},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},"来":{"docs":{},"自":{"docs":{},"何":{"docs":{},"处":{"docs":{},",":{"docs":{},"由":{"docs":{},"谁":{"docs":{},"实":{"docs":{},"现":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"v":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"l":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"e":{"docs":{},"r":{"docs":{},")":{"docs":{},"可":{"docs":{},"以":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"动":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},")":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"p":{"docs":{},"w":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}}}}}}}}}}}}}},"=":{"0":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}},"docs":{}},"f":{"docs":{},"(":{"docs":{},"!":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{},".":{"docs":{},"i":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},"{":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},".":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{},"{":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.011799410029498525},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0084985835694051}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"z":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},"{":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},"{":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0058997050147492625}},"e":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"y":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{},"w":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"(":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},")":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"\"":{"docs":{},"c":{"docs":{},"\"":{"docs":{},".":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"(":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},")":{"docs":{},")":{"docs":{},"{":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"\"":{"docs":{},".":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"(":{"docs":{},"k":{"docs":{},")":{"docs":{},")":{"docs":{},"{":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}}}}}}},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"在":{"docs":{},"同":{"docs":{},"步":{"docs":{},"块":{"docs":{},"内":{"docs":{},"不":{"docs":{},"进":{"docs":{},"行":{"docs":{},"二":{"docs":{},"次":{"docs":{},"检":{"docs":{},"验":{"docs":{},"的":{"docs":{},"话":{"docs":{},"就":{"docs":{},"会":{"docs":{},"生":{"docs":{},"成":{"docs":{},"多":{"docs":{},"个":{"docs":{},"实":{"docs":{},"例":{"docs":{},"了":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.004336513443191674},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.012468827930174564}}}}}}}},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.003469210754553339},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},"e":{"docs":{},"r":{"docs":{},"\"":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"s":{"docs":{},"(":{"docs":{},"仅":{"docs":{},"当":{"docs":{},"这":{"docs":{},"个":{"docs":{},"源":{"docs":{},"文":{"docs":{},"件":{"docs":{},"是":{"docs":{},"在":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"包":{"docs":{},"下":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}},"不":{"docs":{},"要":{"docs":{},"使":{"docs":{},"用":{"docs":{},"通":{"docs":{},"配":{"docs":{},"符":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"语":{"docs":{},"句":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},"不":{"docs":{},"换":{"docs":{},"行":{"docs":{},",":{"docs":{},"列":{"docs":{},"限":{"docs":{},"制":{"docs":{},"(":{"4":{"docs":{},".":{"4":{"docs":{},"节":{"docs":{},")":{"docs":{},"并":{"docs":{},"不":{"docs":{},"适":{"docs":{},"用":{"docs":{},"于":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"语":{"docs":{},"句":{"docs":{},"。":{"docs":{},"(":{"docs":{},"每":{"docs":{},"个":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"语":{"docs":{},"句":{"docs":{},"独":{"docs":{},"立":{"docs":{},"成":{"docs":{},"行":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}}}}}}}},"可":{"docs":{},"分":{"docs":{},"为":{"docs":{},"以":{"docs":{},"下":{"docs":{},"几":{"docs":{},"组":{"docs":{},",":{"docs":{},"按":{"docs":{},"照":{"docs":{},"这":{"docs":{},"个":{"docs":{},"顺":{"docs":{},"序":{"docs":{},",":{"docs":{},"每":{"docs":{},"组":{"docs":{},"由":{"docs":{},"一":{"docs":{},"个":{"docs":{},"空":{"docs":{},"行":{"docs":{},"分":{"docs":{},"隔":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"g":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"g":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"m":{"docs":{},"u":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"&":{"docs":{},"l":{"docs":{},"t":{"docs":{},";":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"&":{"docs":{},"g":{"docs":{},"t":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}},".":{"docs":{},"o":{"docs":{},"f":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"e":{"docs":{},"d":{"docs":{},"\"":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"&":{"docs":{},"l":{"docs":{},"t":{"docs":{},";":{"docs":{},"s":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"m":{"docs":{},"u":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"&":{"docs":{},"g":{"docs":{},"t":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"o":{"docs":{},"f":{"docs":{},"(":{"docs":{},"m":{"docs":{},"u":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}},"u":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"y":{"docs":{},".":{"docs":{},"n":{"docs":{},"e":{"docs":{},"g":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}},"u":{"docs":{},"l":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.004901960784313725}}}}}}},"+":{"docs":{},"+":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}},"d":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.02064896755162242},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"git/guide.html":{"ref":"git/guide.html","tf":0.009708737864077669},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}}},"{":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0058997050147492625}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"<":{"docs":{},">":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}},"\"":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},".":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"t":{"docs":{},".":{"docs":{},"n":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}},"e":{"docs":{},"r":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},">":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}},"m":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.030120481927710843}},"s":{"docs":{},")":{"docs":{},"{":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"a":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}}},"b":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}}},"c":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}}},"d":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}}},"e":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}}}}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"y":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"(":{"docs":{},"(":{"docs":{},"k":{"docs":{},",":{"docs":{},"v":{"docs":{},")":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}}}},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}}},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},".":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},":":{"docs":{},":":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"n":{"docs":{},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"a":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}},"b":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}},"c":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}},"d":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}},"f":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{},"(":{"docs":{},")":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}}},"'":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"/":{"docs":{},"o":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"g":{"docs":{},"a":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}},"\"":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"e":{"docs":{},".":{"docs":{},"t":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}},"p":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.014962593516209476}},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},".":{"docs":{},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"g":{"docs":{},"n":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"f":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"z":{"docs":{},")":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"{":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"m":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}},"v":{"6":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}}},"a":{"docs":{},"c":{"docs":{},"u":{"docs":{},"l":{"docs":{},"i":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"7":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"8":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"java8/foreach.html":{"ref":"java8/foreach.html","tf":5.006024096385542}},"简":{"docs":{},"明":{"docs":{},"教":{"docs":{},"程":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":10}}}},"指":{"docs":{},"南":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"系":{"docs":{},"列":{"docs":{"./":{"ref":"./","tf":0.018867924528301886},"Java8系列.html":{"ref":"Java8系列.html","tf":11}}}},"使":{"docs":{},"我":{"docs":{},"们":{"docs":{},"能":{"docs":{},"够":{"docs":{},"使":{"docs":{},"用":{"docs":{},"相":{"docs":{},"同":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"多":{"docs":{},"个":{"docs":{},"注":{"docs":{},"解":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"@":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"声":{"docs":{},"明":{"docs":{},"注":{"docs":{},"解":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"支":{"docs":{},"持":{"docs":{},"更":{"docs":{},"短":{"docs":{},"的":{"docs":{},"语":{"docs":{},"法":{"docs":{},"而":{"docs":{},"不":{"docs":{},"总":{"docs":{},"是":{"docs":{},"创":{"docs":{},"建":{"docs":{},"匿":{"docs":{},"名":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}},"docs":{"./":{"ref":"./","tf":0.02830188679245283},"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.017045454545454544},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677},"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.013986013986013986}},"编":{"docs":{},"程":{"docs":{},"风":{"docs":{},"格":{"docs":{},"指":{"docs":{},"南":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":5}}}},"规":{"docs":{},"范":{"docs":{},"的":{"docs":{},"完":{"docs":{},"整":{"docs":{},"定":{"docs":{},"义":{"docs":{},"。":{"docs":{},"当":{"docs":{},"且":{"docs":{},"仅":{"docs":{},"当":{"docs":{},"一":{"docs":{},"个":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"源":{"docs":{},"文":{"docs":{},"件":{"docs":{},"符":{"docs":{},"合":{"docs":{},"此":{"docs":{},"文":{"docs":{},"档":{"docs":{},"中":{"docs":{},"的":{"docs":{},"规":{"docs":{},"则":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"译":{"docs":{},"器":{"docs":{},"知":{"docs":{},"道":{"docs":{},"参":{"docs":{},"数":{"docs":{},"类":{"docs":{},"型":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"跳":{"docs":{},"过":{"docs":{},"它":{"docs":{},"们":{"docs":{},",":{"docs":{},"接":{"docs":{},"下":{"docs":{},"来":{"docs":{},"让":{"docs":{},"我":{"docs":{},"们":{"docs":{},"深":{"docs":{},"入":{"docs":{},"了":{"docs":{},"解":{"docs":{},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"x":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.02702702702702703}}}}}}}}}}},"语":{"docs":{},"言":{"docs":{},"允":{"docs":{},"许":{"docs":{},"通":{"docs":{},"过":{"docs":{},"程":{"docs":{},"序":{"docs":{},"化":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"间":{"docs":{},"接":{"docs":{},"对":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"进":{"docs":{},"行":{"docs":{},"操":{"docs":{},"作":{"docs":{},",":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},"由":{"docs":{},"类":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"装":{"docs":{},"载":{"docs":{},"后":{"docs":{},",":{"docs":{},"在":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"中":{"docs":{},"将":{"docs":{},"形":{"docs":{},"成":{"docs":{},"一":{"docs":{},"份":{"docs":{},"描":{"docs":{},"述":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"结":{"docs":{},"构":{"docs":{},"的":{"docs":{},"元":{"docs":{},"信":{"docs":{},"息":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"该":{"docs":{},"元":{"docs":{},"信":{"docs":{},"息":{"docs":{},"对":{"docs":{},"象":{"docs":{},"可":{"docs":{},"以":{"docs":{},"获":{"docs":{},"知":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"的":{"docs":{},"结":{"docs":{},"构":{"docs":{},"信":{"docs":{},"息":{"docs":{},":":{"docs":{},"如":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"、":{"docs":{},"属":{"docs":{},"性":{"docs":{},"和":{"docs":{},"方":{"docs":{},"法":{"docs":{},"等":{"docs":{},"。":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"允":{"docs":{},"许":{"docs":{},"用":{"docs":{},"户":{"docs":{},"借":{"docs":{},"由":{"docs":{},"这":{"docs":{},"个":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"相":{"docs":{},"关":{"docs":{},"的":{"docs":{},"元":{"docs":{},"信":{"docs":{},"息":{"docs":{},"对":{"docs":{},"象":{"docs":{},"间":{"docs":{},"接":{"docs":{},"调":{"docs":{},"用":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"功":{"docs":{},"能":{"docs":{},",":{"docs":{},"这":{"docs":{},"就":{"docs":{},"为":{"docs":{},"使":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"化":{"docs":{},"方":{"docs":{},"式":{"docs":{},"操":{"docs":{},"作":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"对":{"docs":{},"象":{"docs":{},"开":{"docs":{},"辟":{"docs":{},"了":{"docs":{},"途":{"docs":{},"径":{"docs":{},"。":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"反":{"docs":{},"射":{"docs":{},"机":{"docs":{},"制":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"d":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"*":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"e":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"r":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"》":{"docs":{},"上":{"docs":{},"所":{"docs":{},"推":{"docs":{},"荐":{"docs":{},"的":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"等":{"docs":{},"。":{"docs":{},"这":{"docs":{},"些":{"docs":{},"方":{"docs":{},"法":{"docs":{},"各":{"docs":{},"有":{"docs":{},"优":{"docs":{},"缺":{"docs":{},"点":{"docs":{},"。":{"docs":{},"本":{"docs":{},"文":{"docs":{},"主":{"docs":{},"要":{"docs":{},"探":{"docs":{},"究":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"docs":{},"中":{"docs":{},"的":{"docs":{},"动":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{},"使":{"docs":{},"用":{"docs":{},"和":{"docs":{},"源":{"docs":{},"码":{"docs":{},"分":{"docs":{},"析":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"您":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},":":{"docs":{},":":{"docs":{},"关":{"docs":{},"键":{"docs":{},"字":{"docs":{},"调":{"docs":{},"用":{"docs":{},"引":{"docs":{},"用":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"或":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"。":{"docs":{},"上":{"docs":{},"面":{"docs":{},"的":{"docs":{},"示":{"docs":{},"例":{"docs":{},"演":{"docs":{},"示":{"docs":{},"了":{"docs":{},"如":{"docs":{},"何":{"docs":{},"引":{"docs":{},"用":{"docs":{},"静":{"docs":{},"态":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{},"但":{"docs":{},"我":{"docs":{},"们":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"参":{"docs":{},"考":{"docs":{},"对":{"docs":{},"象":{"docs":{},"方":{"docs":{},"法":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},".":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"块":{"docs":{},"的":{"docs":{},"基":{"docs":{},"本":{"docs":{},"格":{"docs":{},"式":{"docs":{},"如":{"docs":{},"下":{"docs":{},"所":{"docs":{},"示":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}},"标":{"docs":{},"记":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"r":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"y":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}},"s":{"docs":{},"p":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219}},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}},"渲":{"docs":{},"染":{"docs":{},"实":{"docs":{},"现":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}},"o":{"docs":{},"n":{"docs":{},"方":{"docs":{},"式":{"docs":{},",":{"docs":{},"以":{"docs":{},"三":{"docs":{},"分":{"docs":{},"号":{"docs":{},"结":{"docs":{},"束":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"d":{"docs":{},"=":{"5":{"docs":{},"f":{"4":{"7":{"7":{"1":{"1":{"8":{"3":{"6":{"2":{"9":{"docs":{},"c":{"9":{"8":{"3":{"4":{"docs":{},"f":{"8":{"3":{"8":{"2":{"docs":{},"e":{"2":{"3":{"docs":{},"b":{"docs":{},"e":{"1":{"3":{"docs":{},"c":{"4":{"docs":{},"c":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.01020408163265306}}}},"docs":{}}},"docs":{}},"docs":{}}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}}}}}}}}}},"v":{"docs":{},"m":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.005681818181818182}},"装":{"docs":{},"载":{"docs":{},"类":{"docs":{},"时":{"docs":{},"使":{"docs":{},"用":{"docs":{},"“":{"docs":{},"全":{"docs":{},"盘":{"docs":{},"负":{"docs":{},"责":{"docs":{},"委":{"docs":{},"托":{"docs":{},"机":{"docs":{},"制":{"docs":{},"”":{"docs":{},",":{"docs":{},"“":{"docs":{},"全":{"docs":{},"盘":{"docs":{},"负":{"docs":{},"责":{"docs":{},"”":{"docs":{},"是":{"docs":{},"指":{"docs":{},"当":{"docs":{},"一":{"docs":{},"个":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"装":{"docs":{},"载":{"docs":{},"一":{"docs":{},"个":{"docs":{},"类":{"docs":{},"的":{"docs":{},"时":{"docs":{},",":{"docs":{},"除":{"docs":{},"非":{"docs":{},"显":{"docs":{},"式":{"docs":{},"地":{"docs":{},"使":{"docs":{},"用":{"docs":{},"另":{"docs":{},"一":{"docs":{},"个":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{},"该":{"docs":{},"类":{"docs":{},"所":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"及":{"docs":{},"引":{"docs":{},"用":{"docs":{},"的":{"docs":{},"类":{"docs":{},"也":{"docs":{},"由":{"docs":{},"这":{"docs":{},"个":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"载":{"docs":{},"入":{"docs":{},";":{"docs":{},"“":{"docs":{},"委":{"docs":{},"托":{"docs":{},"机":{"docs":{},"制":{"docs":{},"”":{"docs":{},"是":{"docs":{},"指":{"docs":{},"先":{"docs":{},"委":{"docs":{},"托":{"docs":{},"父":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"寻":{"docs":{},"找":{"docs":{},"目":{"docs":{},"标":{"docs":{},"类":{"docs":{},",":{"docs":{},"只":{"docs":{},"有":{"docs":{},"在":{"docs":{},"找":{"docs":{},"不":{"docs":{},"到":{"docs":{},"的":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},"才":{"docs":{},"从":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"类":{"docs":{},"路":{"docs":{},"径":{"docs":{},"中":{"docs":{},"查":{"docs":{},"找":{"docs":{},"并":{"docs":{},"装":{"docs":{},"载":{"docs":{},"目":{"docs":{},"标":{"docs":{},"类":{"docs":{},"。":{"docs":{},"这":{"docs":{},"一":{"docs":{},"点":{"docs":{},"是":{"docs":{},"从":{"docs":{},"安":{"docs":{},"全":{"docs":{},"角":{"docs":{},"度":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"的":{"docs":{},",":{"docs":{},"试":{"docs":{},"想":{"docs":{},"如":{"docs":{},"果":{"docs":{},"有":{"docs":{},"人":{"docs":{},"编":{"docs":{},"写":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"恶":{"docs":{},"意":{"docs":{},"的":{"docs":{},"基":{"docs":{},"础":{"docs":{},"类":{"docs":{},"(":{"docs":{},"如":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},")":{"docs":{},"并":{"docs":{},"装":{"docs":{},"载":{"docs":{},"到":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"中":{"docs":{},"将":{"docs":{},"会":{"docs":{},"引":{"docs":{},"起":{"docs":{},"多":{"docs":{},"么":{"docs":{},"可":{"docs":{},"怕":{"docs":{},"的":{"docs":{},"后":{"docs":{},"果":{"docs":{},"。":{"docs":{},"但":{"docs":{},"是":{"docs":{},"由":{"docs":{},"于":{"docs":{},"有":{"docs":{},"了":{"docs":{},"“":{"docs":{},"全":{"docs":{},"盘":{"docs":{},"负":{"docs":{},"责":{"docs":{},"委":{"docs":{},"托":{"docs":{},"机":{"docs":{},"制":{"docs":{},"”":{"docs":{},",":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"永":{"docs":{},"远":{"docs":{},"是":{"docs":{},"由":{"docs":{},"根":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"来":{"docs":{},"装":{"docs":{},"载":{"docs":{},"的":{"docs":{},",":{"docs":{},"这":{"docs":{},"样":{"docs":{},"就":{"docs":{},"避":{"docs":{},"免":{"docs":{},"了":{"docs":{},"上":{"docs":{},"述":{"docs":{},"事":{"docs":{},"件":{"docs":{},"的":{"docs":{},"发":{"docs":{},"生":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"k":{"1":{"docs":{},".":{"8":{"docs":{},"的":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"包":{"docs":{},"含":{"docs":{},"许":{"docs":{},"多":{"docs":{},"内":{"docs":{},"置":{"docs":{},"的":{"docs":{},"函":{"docs":{},"数":{"docs":{},"式":{"docs":{},"接":{"docs":{},"口":{"docs":{},"。":{"docs":{},"其":{"docs":{},"中":{"docs":{},"有":{"docs":{},"些":{"docs":{},"是":{"docs":{},"众":{"docs":{},"所":{"docs":{},"周":{"docs":{},"知":{"docs":{},"的":{"docs":{},",":{"docs":{},"从":{"docs":{},"旧":{"docs":{},"版":{"docs":{},"本":{"docs":{},"中":{"docs":{},"而":{"docs":{},"来":{"docs":{},",":{"docs":{},"如":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"或":{"docs":{},"者":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"n":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"。":{"docs":{},"使":{"docs":{},"现":{"docs":{},"有":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"通":{"docs":{},"过":{"docs":{},"@":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"注":{"docs":{},"解":{"docs":{},"支":{"docs":{},"持":{"docs":{},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}},"中":{"docs":{},"自":{"docs":{},"带":{"docs":{},"动":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},",":{"docs":{},"c":{"docs":{},"g":{"docs":{},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}},"动":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},"源":{"docs":{},"码":{"docs":{},"分":{"docs":{},"析":{"docs":{},"(":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"7":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}},"docs":{}}}}}}}}},"要":{"docs":{},"求":{"docs":{},",":{"docs":{},"被":{"docs":{},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{},"必":{"docs":{},"须":{"docs":{},"是":{"docs":{},"个":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"单":{"docs":{},"纯":{"docs":{},"的":{"docs":{},"类":{"docs":{},"则":{"docs":{},"不":{"docs":{},"行":{"docs":{},"。":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"docs":{},"动":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},"所":{"docs":{},"生":{"docs":{},"成":{"docs":{},"的":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"都":{"docs":{},"会":{"docs":{},"继":{"docs":{},"承":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"m":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},".":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"'":{"docs":{},",":{"docs":{},"'":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"'":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"n":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629}},")":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{},"的":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{},")":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"g":{"docs":{},"a":{"docs":{},"c":{"docs":{},"i":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"y":{"docs":{},"d":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}},"v":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},",":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"—":{"docs":{},"—":{"docs":{},"w":{"docs":{},"i":{"docs":{},"d":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}},"a":{"docs":{},"v":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"x":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"安":{"docs":{},"装":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"docs":{},"、":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"脚":{"docs":{},"本":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}}}}}}}}}}},"k":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514},"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.004901960784313725}}},"e":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"s":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.013812154696132596},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.008968609865470852},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338},"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521}},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}},">":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.006726457399103139},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.007481296758104738}}},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}}}}}},"o":{"docs":{},"g":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0055248618784530384},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}},"l":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"f":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.004336513443191674}}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.004336513443191674}}}}}}}},"n":{"docs":{},"o":{"docs":{},"s":{"docs":{},"u":{"docs":{},"c":{"docs":{},"h":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.004336513443191674}}}}}}}}}}},"i":{"docs":{},"m":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}},"e":{"docs":{},".":{"docs":{},"n":{"docs":{},"o":{"docs":{},"w":{"docs":{},"(":{"docs":{},"z":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"1":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"2":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"docs":{}}}}}}}}}},"代":{"docs":{},"表":{"docs":{},"没":{"docs":{},"有":{"docs":{},"时":{"docs":{},"区":{"docs":{},"的":{"docs":{},"时":{"docs":{},"间":{"docs":{},",":{"docs":{},"例":{"docs":{},"如":{"docs":{},"晚":{"docs":{},"上":{"1":{"0":{"docs":{},"点":{"docs":{},"或":{"1":{"7":{"docs":{},":":{"3":{"0":{"docs":{},":":{"1":{"5":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},"会":{"docs":{},"用":{"docs":{},"上":{"docs":{},"面":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"时":{"docs":{},"区":{"docs":{},"创":{"docs":{},"建":{"docs":{},"两":{"docs":{},"个":{"docs":{},"本":{"docs":{},"地":{"docs":{},"时":{"docs":{},"间":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{},"然":{"docs":{},"后":{"docs":{},"我":{"docs":{},"们":{"docs":{},"比":{"docs":{},"较":{"docs":{},"两":{"docs":{},"个":{"docs":{},"时":{"docs":{},"间":{"docs":{},"并":{"docs":{},"计":{"docs":{},"算":{"docs":{},"小":{"docs":{},"时":{"docs":{},"和":{"docs":{},"分":{"docs":{},"钟":{"docs":{},"的":{"docs":{},"差":{"docs":{},"异":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}},"d":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0057692307692307696}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},".":{"docs":{},"n":{"docs":{},"o":{"docs":{},"w":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"o":{"docs":{},"f":{"docs":{},"(":{"2":{"0":{"1":{"4":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"(":{"docs":{},"\"":{"2":{"4":{"docs":{},".":{"1":{"2":{"docs":{},".":{"2":{"0":{"1":{"4":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}},"e":{"docs":{},".":{"docs":{},"o":{"docs":{},"f":{"docs":{},"(":{"2":{"0":{"1":{"4":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"n":{"docs":{},"o":{"docs":{},"v":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}},"代":{"docs":{},"表":{"docs":{},"日":{"docs":{},"期":{"docs":{},"时":{"docs":{},"间":{"docs":{},"。":{"docs":{},"它":{"docs":{},"结":{"docs":{},"合":{"docs":{},"了":{"docs":{},"日":{"docs":{},"期":{"docs":{},"和":{"docs":{},"时":{"docs":{},"间":{"docs":{},"见":{"docs":{},"上":{"docs":{},"面":{"docs":{},"的":{"docs":{},"部":{"docs":{},"分":{"docs":{},"为":{"docs":{},"一":{"docs":{},"个":{"docs":{},"实":{"docs":{},"例":{"docs":{},"。":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"是":{"docs":{},"不":{"docs":{},"可":{"docs":{},"变":{"docs":{},"的":{"docs":{},",":{"docs":{},"类":{"docs":{},"似":{"docs":{},"于":{"docs":{},"本":{"docs":{},"地":{"docs":{},"时":{"docs":{},"间":{"docs":{},"和":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"工":{"docs":{},"作":{"docs":{},"。":{"docs":{},"我":{"docs":{},"们":{"docs":{},"可":{"docs":{},"以":{"docs":{},"从":{"docs":{},"一":{"docs":{},"个":{"docs":{},"日":{"docs":{},"期":{"docs":{},"时":{"docs":{},"间":{"docs":{},"获":{"docs":{},"取":{"docs":{},"某":{"docs":{},"些":{"docs":{},"字":{"docs":{},"段":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"代":{"docs":{},"表":{"docs":{},"一":{"docs":{},"个":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"的":{"docs":{},"日":{"docs":{},"期":{"docs":{},",":{"docs":{},"如":{"2":{"0":{"1":{"4":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}},"k":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.005681818181818182}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{},"而":{"docs":{},"且":{"docs":{},"还":{"docs":{},"能":{"docs":{},"防":{"docs":{},"止":{"docs":{},"反":{"docs":{},"序":{"docs":{},"列":{"docs":{},"化":{"docs":{},"导":{"docs":{},"致":{"docs":{},"重":{"docs":{},"新":{"docs":{},"创":{"docs":{},"建":{"docs":{},"新":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{},"但":{"docs":{},"是":{"docs":{},"还":{"docs":{},"是":{"docs":{},"很":{"docs":{},"少":{"docs":{},"看":{"docs":{},"到":{"docs":{},"有":{"docs":{},"人":{"docs":{},"这":{"docs":{},"样":{"docs":{},"写":{"docs":{},",":{"docs":{},"可":{"docs":{},"能":{"docs":{},"是":{"docs":{},"因":{"docs":{},"为":{"docs":{},"不":{"docs":{},"太":{"docs":{},"熟":{"docs":{},"悉":{"docs":{},"吧":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"2":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}},"3":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}},"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.045454545454545456},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0056657223796034}},"(":{"docs":{},")":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}},".":{"docs":{},"g":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255}}}}}}}}}},"英":{"docs":{},"雄":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}},"a":{"docs":{},"d":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}},"e":{"docs":{},"r":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.00975609756097561},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},".":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"b":{"docs":{},"i":{"docs":{},"e":{"docs":{},"z":{"docs":{},"h":{"docs":{},"i":{"docs":{},".":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},".":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},"\"":{"docs":{},"+":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}},".":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}},"s":{"docs":{},"u":{"docs":{},"n":{"docs":{},".":{"docs":{},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"c":{"docs":{},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"$":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"@":{"1":{"3":{"1":{"docs":{},"f":{"7":{"1":{"docs":{},"a":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"@":{"1":{"5":{"6":{"0":{"1":{"docs":{},"e":{"docs":{},"a":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.003469210754553339}}},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"s":{"docs":{},"u":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0125}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}},"o":{"docs":{},"p":{"docs":{},".":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},".":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"4":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"docs":{},"作":{"docs":{},"用":{"docs":{},"域":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"类":{"docs":{},"型":{"docs":{},"系":{"docs":{},"统":{"docs":{},"?":{"docs":{},"每":{"docs":{},"个":{"docs":{},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"由":{"docs":{},"一":{"docs":{},"个":{"docs":{},"指":{"docs":{},"定":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"对":{"docs":{},"应":{"docs":{},"于":{"docs":{},"一":{"docs":{},"个":{"docs":{},"给":{"docs":{},"定":{"docs":{},"的":{"docs":{},"类":{"docs":{},"型":{"docs":{},"。":{"docs":{},"所":{"docs":{},"谓":{"docs":{},"的":{"docs":{},"函":{"docs":{},"数":{"docs":{},"式":{"docs":{},"接":{"docs":{},"口":{"docs":{},"必":{"docs":{},"须":{"docs":{},"包":{"docs":{},"含":{"docs":{},"一":{"docs":{},"个":{"docs":{},"确":{"docs":{},"切":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"方":{"docs":{},"法":{"docs":{},"声":{"docs":{},"明":{"docs":{},"。":{"docs":{},"该":{"docs":{},"类":{"docs":{},"型":{"docs":{},"将":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"这":{"docs":{},"个":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"方":{"docs":{},"法":{"docs":{},"每":{"docs":{},"个":{"docs":{},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"。":{"docs":{},"因":{"docs":{},"为":{"docs":{},"默":{"docs":{},"认":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"是":{"docs":{},"不":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"的":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"自":{"docs":{},"由":{"docs":{},"添":{"docs":{},"加":{"docs":{},"默":{"docs":{},"认":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"到":{"docs":{},"你":{"docs":{},"的":{"docs":{},"函":{"docs":{},"数":{"docs":{},"式":{"docs":{},"接":{"docs":{},"口":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"u":{"docs":{},"a":{"docs":{},"g":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}},":":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"c":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"c":{"docs":{},"u":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}},"y":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},":":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"(":{"docs":{},"布":{"docs":{},"局":{"docs":{},")":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"z":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}}}}}}}},"/":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}},"w":{"docs":{},"\"":{"docs":{},"。":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"⼀":{"docs":{},"一":{"docs":{},"下":{"docs":{},"查":{"docs":{},"查":{"docs":{},"这":{"docs":{},"个":{"docs":{},"有":{"docs":{},"趣":{"docs":{},"的":{"docs":{},"联":{"docs":{},"系":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"m":{"0":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"1":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"2":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"3":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"4":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},":":{"docs":{},"b":{"docs":{},"i":{"docs":{},"e":{"docs":{},"z":{"docs":{},"h":{"docs":{},"i":{"docs":{},".":{"docs":{},"m":{"docs":{},"e":{"docs":{},"@":{"docs":{},"g":{"docs":{},"m":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"[":{"docs":{},"]":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.00975609756097561},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"s":{"docs":{},"[":{"docs":{},"]":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.05405405405405406},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.03864734299516908},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.01775147928994083}},"使":{"docs":{},"用":{"docs":{},"一":{"docs":{},"个":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"接":{"docs":{},"收":{"docs":{},"所":{"docs":{},"有":{"docs":{},"请":{"docs":{},"求":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"从":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"过":{"docs":{},"来":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"有":{"docs":{},"无":{"docs":{},"数":{"docs":{},",":{"docs":{},"如":{"docs":{},"何":{"docs":{},"知":{"docs":{},"道":{"docs":{},"哪":{"docs":{},"一":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"对":{"docs":{},"应":{"docs":{},"哪":{"docs":{},"一":{"docs":{},"个":{"docs":{},"路":{"docs":{},"由":{"docs":{},"呢":{"docs":{},"?":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"(":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"_":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{},"_":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"f":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{},"_":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"(":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"/":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"(":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"w":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"w":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}},"(":{"docs":{},")":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}},")":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}},"h":{"docs":{},"o":{"docs":{},"l":{"docs":{},"d":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"m":{"docs":{},"e":{"docs":{},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}},"中":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"配":{"docs":{},"置":{"docs":{},"都":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}},"d":{"docs":{},"b":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}},"(":{"docs":{},")":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}}}}}},"u":{"docs":{},"p":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}},"u":{"docs":{},"p":{"docs":{},"d":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}}}}}}}},"k":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"e":{"docs":{},"d":{"docs":{},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}},"e":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"0":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}},"docs":{}}}}},"s":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}},"h":{"docs":{},".":{"docs":{},"s":{"docs":{},"q":{"docs":{},"r":{"docs":{},"t":{"docs":{},"(":{"docs":{},"a":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}},"p":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.02466367713004484},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.017699115044247787},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}}}},".":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"m":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}},"\"":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}},"i":{"docs":{},"f":{"docs":{},"a":{"docs":{},"b":{"docs":{},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"3":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464}}}}},"9":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}},"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"(":{"4":{"2":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}},"docs":{}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"i":{"docs":{},"f":{"docs":{},"a":{"docs":{},"b":{"docs":{},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"2":{"3":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}},"3":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}}}}}}}},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"3":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"9":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}}}}}}}}}}}}}}}},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"(":{"2":{"3":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"docs":{}},"9":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"docs":{}}}}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"(":{"9":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}},"docs":{}}}}}}},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"(":{"3":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}},"docs":{}}}}}}}}},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"合":{"docs":{},"并":{"docs":{},"条":{"docs":{},"目":{"docs":{},"是":{"docs":{},"非":{"docs":{},"常":{"docs":{},"容":{"docs":{},"易":{"docs":{},"的":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"对":{"docs":{},"于":{"docs":{},"流":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"中":{"docs":{},"间":{"docs":{},"操":{"docs":{},"作":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"给":{"docs":{},"定":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"它":{"docs":{},"能":{"docs":{},"够":{"docs":{},"把":{"docs":{},"流":{"docs":{},"对":{"docs":{},"象":{"docs":{},"中":{"docs":{},"的":{"docs":{},"每":{"docs":{},"一":{"docs":{},"个":{"docs":{},"元":{"docs":{},"素":{"docs":{},"对":{"docs":{},"应":{"docs":{},"到":{"docs":{},"另":{"docs":{},"外":{"docs":{},"一":{"docs":{},"个":{"docs":{},"对":{"docs":{},"象":{"docs":{},"上":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},"将":{"docs":{},"每":{"docs":{},"个":{"docs":{},"字":{"docs":{},"符":{"docs":{},"串":{"docs":{},"转":{"docs":{},"换":{"docs":{},"成":{"docs":{},"一":{"docs":{},"个":{"docs":{},"大":{"docs":{},"写":{"docs":{},"字":{"docs":{},"符":{"docs":{},"串":{"docs":{},",":{"docs":{},"但":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"将":{"docs":{},"每":{"docs":{},"个":{"docs":{},"对":{"docs":{},"象":{"docs":{},"转":{"docs":{},"换":{"docs":{},"为":{"docs":{},"另":{"docs":{},"一":{"docs":{},"种":{"docs":{},"类":{"docs":{},"型":{"docs":{},"。":{"docs":{},"所":{"docs":{},"得":{"docs":{},"到":{"docs":{},"的":{"docs":{},"流":{"docs":{},"的":{"docs":{},"泛":{"docs":{},"型":{"docs":{},"类":{"docs":{},"型":{"docs":{},"取":{"docs":{},"决":{"docs":{},"于":{"docs":{},"您":{"docs":{},"传":{"docs":{},"递":{"docs":{},"给":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"泛":{"docs":{},"型":{"docs":{},"类":{"docs":{},"型":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"x":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.01020408163265306}},",":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}}},"c":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.014563106796116505}},")":{"docs":{},",":{"docs":{},"执":{"docs":{},"行":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.021505376344086023}}}}},"v":{"docs":{},"c":{"docs":{},"框":{"docs":{},"架":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}},"实":{"docs":{},"现":{"docs":{},"篇":{"docs":{"./":{"ref":"./","tf":0.018867924528301886},"mvc/MVC框架实现篇.html":{"ref":"mvc/MVC框架实现篇.html","tf":11},"mvc/":{"ref":"mvc/","tf":10}}}}}}},"核":{"docs":{},"心":{"docs":{},"处":{"docs":{},"理":{"docs":{},"器":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}},"n":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}},"y":{"docs":{},"b":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"s":{"docs":{},"中":{"docs":{},"文":{"docs":{},"指":{"docs":{},"南":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"(":{"docs":{},"模":{"docs":{},"型":{"docs":{},")":{"docs":{},"v":{"docs":{},"(":{"docs":{},"视":{"docs":{},"图":{"docs":{},")":{"docs":{},"c":{"docs":{},"(":{"docs":{},"控":{"docs":{},"制":{"docs":{},"器":{"docs":{},")":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.008287292817679558},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.008673026886383347},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},".":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}},"e":{"docs":{},",":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}},":":{"docs":{},"类":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"反":{"docs":{},"射":{"docs":{},"类":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"#":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},"方":{"docs":{},"法":{"docs":{},"可":{"docs":{},"以":{"docs":{},"获":{"docs":{},"取":{"docs":{},"类":{"docs":{},"的":{"docs":{},"所":{"docs":{},"有":{"docs":{},"方":{"docs":{},"法":{"docs":{},"反":{"docs":{},"射":{"docs":{},"类":{"docs":{},"对":{"docs":{},"象":{"docs":{},"数":{"docs":{},"组":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"[":{"docs":{},"]":{"docs":{},"。":{"docs":{},"在":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"5":{"docs":{},".":{"0":{"docs":{},"中":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"f":{"docs":{},"o":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"s":{"docs":{},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"(":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"m":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"(":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"(":{"docs":{},")":{"docs":{},"{":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}},"n":{"docs":{},"u":{"docs":{},".":{"docs":{},"y":{"docs":{},"m":{"docs":{},"l":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}},"r":{"docs":{},"c":{"docs":{},"y":{"docs":{},".":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}},"g":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}},"s":{"docs":{},"s":{"docs":{},"a":{"docs":{},"g":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"e":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}},"a":{"docs":{},"n":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},",":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}}}}},"m":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"y":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}},")":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}},";":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}},"{":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}},"t":{"docs":{},"h":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},".":{"docs":{},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"e":{"docs":{},"m":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}},"j":{"docs":{},"u":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}},"b":{"docs":{},"i":{"docs":{},"l":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}},"d":{"docs":{},"e":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.00821917808219178},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}},"s":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}}},"n":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"o":{"docs":{},"f":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"s":{"docs":{},"b":{"docs":{},"e":{"docs":{},"t":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521}}}}}}},"s":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}},"e":{"docs":{},"c":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"s":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},",":{"docs":{},"最":{"docs":{},"大":{"docs":{},"的":{"docs":{},"响":{"docs":{},"应":{"docs":{},"时":{"docs":{},"间":{"1":{"3":{"1":{"9":{"docs":{},".":{"5":{"7":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}},"小":{"docs":{},"的":{"docs":{},"响":{"docs":{},"应":{"docs":{},"时":{"docs":{},"间":{"2":{"0":{"9":{"docs":{},".":{"9":{"9":{"4":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"u":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"l":{"docs":{},"t":{"docs":{},"i":{"docs":{},"p":{"docs":{},"l":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"e":{"docs":{},"l":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"b":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}},"q":{"docs":{},",":{"docs":{},"r":{"docs":{},"a":{"docs":{},"b":{"docs":{},"b":{"docs":{},"i":{"docs":{},"t":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}},"z":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}},"等":{"docs":{},",":{"docs":{},"需":{"docs":{},"要":{"docs":{},"根":{"docs":{},"据":{"docs":{},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"场":{"docs":{},"景":{"docs":{},"进":{"docs":{},"行":{"docs":{},"选":{"docs":{},"择":{"docs":{},"。":{"docs":{},"建":{"docs":{},"议":{"docs":{},"可":{"docs":{},"以":{"docs":{},"研":{"docs":{},"究":{"docs":{},"下":{"docs":{},"r":{"docs":{},"a":{"docs":{},"b":{"docs":{},"b":{"docs":{},"i":{"docs":{},"t":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"m":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"n":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"e":{"docs":{},"t":{"docs":{},"t":{"docs":{},"y":{"4":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}},"docs":{}}}},"w":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.013812154696132596},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.018867924528301886},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.01932367149758454},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.008968609865470852},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.011799410029498525},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0084985835694051},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.019886363636363636},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.027753686036426712},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.012468827930174564},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.008653846153846154},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.024096385542168676},"hexo/config.html":{"ref":"hexo/config.html","tf":0.010958904109589041},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.007228915662650603}},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"方":{"docs":{},"法":{"docs":{},"有":{"docs":{},"三":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"分":{"docs":{},"别":{"docs":{},"表":{"docs":{},"示":{"docs":{},"类":{"docs":{},"加":{"docs":{},"载":{"docs":{},"器":{"docs":{},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"希":{"docs":{},"望":{"docs":{},"该":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"列":{"docs":{},"表":{"docs":{},",":{"docs":{},"以":{"docs":{},"及":{"docs":{},"实":{"docs":{},"现":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"接":{"docs":{},"口":{"docs":{},"的":{"docs":{},"实":{"docs":{},"例":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}},"_":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"_":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"c":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"d":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}},"x":{"docs":{},"t":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},".":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.011799410029498525},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.005681818181818182},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.004807692307692308}},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0055248618784530384},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0056657223796034},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.005203816131830009},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}}},")":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.017045454545454544},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.010407632263660017},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.011210762331838564},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},")":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}},",":{"docs":{},"一":{"docs":{},"次":{"docs":{},"是":{"docs":{},"在":{"docs":{},"同":{"docs":{},"步":{"docs":{},"块":{"docs":{},"外":{"docs":{},",":{"docs":{},"一":{"docs":{},"次":{"docs":{},"是":{"docs":{},"在":{"docs":{},"同":{"docs":{},"步":{"docs":{},"块":{"docs":{},"内":{"docs":{},"。":{"docs":{},"为":{"docs":{},"什":{"docs":{},"么":{"docs":{},"在":{"docs":{},"同":{"docs":{},"步":{"docs":{},"块":{"docs":{},"内":{"docs":{},"还":{"docs":{},"要":{"docs":{},"再":{"docs":{},"检":{"docs":{},"验":{"docs":{},"一":{"docs":{},"次":{"docs":{},"?":{"docs":{},"因":{"docs":{},"为":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"有":{"docs":{},"多":{"docs":{},"个":{"docs":{},"线":{"docs":{},"程":{"docs":{},"一":{"docs":{},"起":{"docs":{},"进":{"docs":{},"入":{"docs":{},"同":{"docs":{},"步":{"docs":{},"块":{"docs":{},"外":{"docs":{},"的":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"判":{"docs":{},"断":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"为":{"docs":{},"空":{"docs":{},"则":{"docs":{},"抛":{"docs":{},"出":{"docs":{},"带":{"docs":{},"有":{"docs":{},"指":{"docs":{},"定":{"docs":{},"消":{"docs":{},"息":{"docs":{},"的":{"docs":{},"异":{"docs":{},"常":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"的":{"docs":{},"值":{"docs":{},",":{"docs":{},"也":{"docs":{},"可":{"docs":{},"能":{"docs":{},"返":{"docs":{},"回":{"docs":{},"一":{"docs":{},"个":{"docs":{},"空":{"docs":{},"值":{"docs":{},"。":{"docs":{},"为":{"docs":{},"了":{"docs":{},"不":{"docs":{},"直":{"docs":{},"接":{"docs":{},"返":{"docs":{},"回":{"docs":{},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"在":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0057692307692307696}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.004807692307692308}}}},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"c":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.014749262536873156},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.009915014164305949},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.00975609756097561},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},")":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.014634146341463415},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},"{":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.007082152974504249}}},"则":{"docs":{},"可":{"docs":{},"获":{"docs":{},"取":{"docs":{},"某":{"docs":{},"个":{"docs":{},"特":{"docs":{},"定":{"docs":{},"名":{"docs":{},"称":{"docs":{},"的":{"docs":{},"成":{"docs":{},"员":{"docs":{},"变":{"docs":{},"量":{"docs":{},"反":{"docs":{},"射":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{},"类":{"docs":{},"最":{"docs":{},"主":{"docs":{},"要":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"是":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"m":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},",":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"(":{"0":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"docs":{}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"f":{"docs":{},"(":{"docs":{},"'":{"docs":{},".":{"docs":{},"'":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.015151515151515152},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.00975609756097561},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}},";":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.022727272727272728},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}},"参":{"docs":{},"数":{"docs":{},"指":{"docs":{},"定":{"docs":{},"类":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"需":{"docs":{},"要":{"docs":{},"装":{"docs":{},"载":{"docs":{},"类":{"docs":{},"的":{"docs":{},"名":{"docs":{},"字":{"docs":{},",":{"docs":{},"必":{"docs":{},"须":{"docs":{},"使":{"docs":{},"用":{"docs":{},"全":{"docs":{},"限":{"docs":{},"定":{"docs":{},"类":{"docs":{},"名":{"docs":{},",":{"docs":{},"如":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"b":{"docs":{},"a":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"o":{"docs":{},".":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"指":{"docs":{},"的":{"docs":{},"是":{"docs":{},"什":{"docs":{},"么":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"o":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"f":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},"(":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"f":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"z":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{},"y":{"docs":{},"a":{"docs":{},"r":{"docs":{},"r":{"docs":{},"a":{"docs":{},"y":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"s":{"docs":{},"u":{"docs":{},"c":{"docs":{},"h":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},"(":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"n":{"docs":{},"o":{"docs":{},"s":{"docs":{},"u":{"docs":{},"c":{"docs":{},"h":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"e":{"docs":{},":":{"docs":{},"在":{"docs":{},"英":{"docs":{},"语":{"docs":{},"中":{"docs":{},",":{"docs":{},"某":{"docs":{},"些":{"docs":{},"带":{"docs":{},"有":{"docs":{},"连":{"docs":{},"字":{"docs":{},"符":{"docs":{},"的":{"docs":{},"单":{"docs":{},"词":{"docs":{},"形":{"docs":{},"式":{"docs":{},"不":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},":":{"docs":{},"”":{"docs":{},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{},"y":{"docs":{},"”":{"docs":{},"和":{"docs":{},"”":{"docs":{},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"这":{"docs":{},"个":{"docs":{},"规":{"docs":{},"则":{"docs":{},"并":{"docs":{},"不":{"docs":{},"要":{"docs":{},"求":{"docs":{},"或":{"docs":{},"禁":{"docs":{},"止":{"docs":{},"一":{"docs":{},"行":{"docs":{},"的":{"docs":{},"开":{"docs":{},"关":{"docs":{},"或":{"docs":{},"结":{"docs":{},"尾":{"docs":{},"需":{"docs":{},"要":{"docs":{},"额":{"docs":{},"外":{"docs":{},"的":{"docs":{},"空":{"docs":{},"格":{"docs":{},",":{"docs":{},"只":{"docs":{},"对":{"docs":{},"内":{"docs":{},"部":{"docs":{},"空":{"docs":{},"格":{"docs":{},"做":{"docs":{},"要":{"docs":{},"求":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"w":{"1":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"2":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}},"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"(":{"docs":{},"\"":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"i":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"d":{"docs":{},"e":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"@":{"docs":{},"v":{"0":{"docs":{},".":{"1":{"1":{"docs":{},".":{"1":{"2":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}},"docs":{}}}}}},"j":{"docs":{},"s":{"docs":{},"会":{"docs":{},"自":{"docs":{},"动":{"docs":{},"将":{"docs":{},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{},"写":{"docs":{},"入":{"docs":{},"环":{"docs":{},"境":{"docs":{},"变":{"docs":{},"量":{"docs":{},",":{"docs":{},"来":{"docs":{},"试":{"docs":{},"试":{"docs":{},"是":{"docs":{},"否":{"docs":{},"安":{"docs":{},"装":{"docs":{},"成":{"docs":{},"功":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"于":{"docs":{},"是":{"docs":{},",":{"docs":{},"淘":{"docs":{},"宝":{"docs":{},"正":{"docs":{},"式":{"docs":{},"基":{"docs":{},"于":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},".":{"docs":{},".":{"docs":{},".":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}},"p":{"docs":{},"m":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.049689440993788817},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"o":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}},":":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"+":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"配":{"docs":{},"置":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}}}}}}}}}}}}}}}}},"p":{"1":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},".":{"docs":{},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"(":{"docs":{},"p":{"2":{"docs":{},".":{"docs":{},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"2":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}},"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.014336917562724014}},"n":{"docs":{},"g":{"docs":{},"图":{"docs":{},"片":{"docs":{},"无":{"docs":{},"损":{"docs":{},"压":{"docs":{},"缩":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}}},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"_":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"_":{"docs":{},"f":{"docs":{},"o":{"docs":{},"l":{"docs":{},"d":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"e":{"docs":{},"r":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}},"r":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"r":{"docs":{},"o":{"docs":{},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}},"x":{"docs":{},"i":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.008673026886383347}}},"y":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}},".":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"e":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}},"(":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"w":{"docs":{},"e":{"docs":{},"a":{"docs":{},"k":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"缓":{"docs":{},"存":{"docs":{},",":{"docs":{},"它":{"docs":{},"的":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"有":{"docs":{},"两":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"其":{"docs":{},"中":{"docs":{},"一":{"docs":{},"个":{"docs":{},"就":{"docs":{},"是":{"docs":{},"用":{"docs":{},"于":{"docs":{},"生":{"docs":{},"成":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"的":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},",":{"docs":{},"下":{"docs":{},"面":{"docs":{},"是":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"的":{"docs":{},"源":{"docs":{},"码":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}},"i":{"docs":{},"l":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"e":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},".":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"\"":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"s":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"e":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}},"p":{"docs":{},"k":{"docs":{},"g":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.003469210754553339}}}}}}},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.007481296758104738}}},"y":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"(":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"i":{"docs":{},"v":{"docs":{},"a":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.024861878453038673},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0220125786163522},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.028985507246376812},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.006726457399103139},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.015151515151515152},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0084985835694051},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.00975609756097561},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.02556818181818182},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.009540329575021683},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.012468827930174564},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.007228915662650603}},"e":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.00975609756097561}},"(":{"docs":{},")":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}},"n":{"docs":{},"c":{"docs":{},"i":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},",":{"docs":{},"缩":{"docs":{},"写":{"docs":{},"为":{"docs":{},"l":{"docs":{},"s":{"docs":{},"p":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}},"o":{"docs":{},"c":{"docs":{},"p":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}},"z":{"docs":{},"z":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"c":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0057692307692307696}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},".":{"docs":{},"n":{"docs":{},"e":{"docs":{},"g":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"f":{"docs":{},"o":{"docs":{},"o":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"f":{"docs":{},"o":{"docs":{},"o":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}},"s":{"docs":{},"(":{"docs":{},"谓":{"docs":{},"词":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"返":{"docs":{},"回":{"docs":{},"布":{"docs":{},"尔":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"函":{"docs":{},"数":{"docs":{},"。":{"docs":{},"这":{"docs":{},"就":{"docs":{},"是":{"docs":{},"谓":{"docs":{},"词":{"docs":{},"函":{"docs":{},"数":{"docs":{},",":{"docs":{},"输":{"docs":{},"入":{"docs":{},"一":{"docs":{},"个":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"返":{"docs":{},"回":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{},"或":{"docs":{},"者":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"i":{"docs":{},"o":{"docs":{},"u":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"w":{"docs":{},"o":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"r":{"docs":{},"s":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"{":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}}}},"a":{"docs":{},"m":{"1":{"docs":{},"=":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"1":{"docs":{},"&":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"2":{"docs":{},"=":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"2":{"docs":{},"”":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"传":{"docs":{},"递":{"docs":{},"请":{"docs":{},"求":{"docs":{},"参":{"docs":{},"数":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}},"docs":{}}}}}}}},"docs":{}}}}}}}},"docs":{}}}}}}}},"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.006726457399103139}},"s":{"docs":{},")":{"docs":{},"{":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.01569506726457399}}},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.011210762331838564}}}},".":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}},"s":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}},"[":{"docs":{},"i":{"docs":{},"]":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"z":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},"获":{"docs":{},"取":{"docs":{},"属":{"docs":{},"性":{"docs":{},"的":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"方":{"docs":{},"法":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},"是":{"docs":{},"目":{"docs":{},"标":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"名":{"docs":{},";":{"docs":{},"第":{"docs":{},"二":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},"是":{"docs":{},"方":{"docs":{},"法":{"docs":{},"入":{"docs":{},"参":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"类":{"docs":{},"型":{"docs":{},"。":{"docs":{},"获":{"docs":{},"取":{"docs":{},"方":{"docs":{},"法":{"docs":{},"反":{"docs":{},"射":{"docs":{},"对":{"docs":{},"象":{"docs":{},"后":{"docs":{},",":{"docs":{},"即":{"docs":{},"可":{"docs":{},"通":{"docs":{},"过":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{},"方":{"docs":{},"法":{"docs":{},"调":{"docs":{},"用":{"docs":{},"目":{"docs":{},"标":{"docs":{},"类":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"该":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},"是":{"docs":{},"操":{"docs":{},"作":{"docs":{},"的":{"docs":{},"目":{"docs":{},"标":{"docs":{},"类":{"docs":{},"对":{"docs":{},"象":{"docs":{},"实":{"docs":{},"例":{"docs":{},";":{"docs":{},"第":{"docs":{},"二":{"docs":{},"个":{"docs":{},"参":{"docs":{},"数":{"docs":{},"是":{"docs":{},"目":{"docs":{},"标":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"入":{"docs":{},"参":{"docs":{},"。":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"s":{"docs":{},")":{"docs":{},"获":{"docs":{},"取":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"特":{"docs":{},"定":{"docs":{},"入":{"docs":{},"参":{"docs":{},"的":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"反":{"docs":{},"射":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"主":{"docs":{},"要":{"docs":{},"方":{"docs":{},"法":{"docs":{},"是":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"[":{"docs":{},"]":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"特":{"docs":{},"定":{"docs":{},"签":{"docs":{},"名":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"为":{"docs":{},"方":{"docs":{},"法":{"docs":{},"名":{"docs":{},";":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},".":{"docs":{},".":{"docs":{},"为":{"docs":{},"方":{"docs":{},"法":{"docs":{},"入":{"docs":{},"参":{"docs":{},"类":{"docs":{},"型":{"docs":{},"列":{"docs":{},"表":{"docs":{},"。":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"最":{"docs":{},"主":{"docs":{},"要":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"是":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"l":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}},",":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}},"t":{"docs":{},"h":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.011049723756906077},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.008287292817679558}}},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.008287292817679558}}},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}},".":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"(":{"docs":{},"?":{"docs":{},"i":{"docs":{},")":{"docs":{},"\"":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"r":{"docs":{},"_":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}},")":{"docs":{},",":{"docs":{},"是":{"docs":{},"一":{"docs":{},"种":{"docs":{},"使":{"docs":{},"用":{"docs":{},"同":{"docs":{},"步":{"docs":{},"块":{"docs":{},"加":{"docs":{},"锁":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{},"程":{"docs":{},"序":{"docs":{},"员":{"docs":{},"称":{"docs":{},"其":{"docs":{},"为":{"docs":{},"双":{"docs":{},"重":{"docs":{},"检":{"docs":{},"查":{"docs":{},"锁":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"会":{"docs":{},"有":{"docs":{},"两":{"docs":{},"次":{"docs":{},"检":{"docs":{},"查":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}},"s":{"docs":{},"s":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}},"{":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}},"e":{"docs":{},".":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.00821917808219178}},"文":{"docs":{},"件":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}},"s":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}},"和":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"语":{"docs":{},"句":{"docs":{},"(":{"docs":{},"见":{"3":{"docs":{},".":{"2":{"docs":{},"节":{"docs":{},"和":{"3":{"docs":{},".":{"3":{"docs":{},"节":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"docs":{}}},"docs":{}}}},"docs":{}}},"docs":{}}}}}}}}}}}},"语":{"docs":{},"句":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},"不":{"docs":{},"换":{"docs":{},"行":{"docs":{},",":{"docs":{},"列":{"docs":{},"限":{"docs":{},"制":{"docs":{},"(":{"4":{"docs":{},".":{"4":{"docs":{},"节":{"docs":{},")":{"docs":{},"并":{"docs":{},"不":{"docs":{},"适":{"docs":{},"用":{"docs":{},"于":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"语":{"docs":{},"句":{"docs":{},"。":{"docs":{},"(":{"docs":{},"即":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"语":{"docs":{},"句":{"docs":{},"写":{"docs":{},"在":{"docs":{},"一":{"docs":{},"行":{"docs":{},"里":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"_":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}},"e":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.058011049723756904},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.04830917874396135},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.023668639053254437},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.03139013452914798},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.02064896755162242},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.034482758620689655},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.07575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.05099150141643059},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.03414634146341464},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.03125},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.030355594102341718},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.04239401496259352},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.006024096385542169}},"_":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"目":{"docs":{},"录":{"docs":{},",":{"docs":{},"静":{"docs":{},"态":{"docs":{},"网":{"docs":{},"站":{"docs":{},"生":{"docs":{},"成":{"docs":{},"的":{"docs":{},"地":{"docs":{},"方":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"值":{"docs":{},"为":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"h":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}},"r":{"docs":{},"u":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}},"l":{"docs":{},"l":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}},"s":{"docs":{},"h":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.009708737864077669}}}}},"k":{"docs":{},"g":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"m":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},".":{"docs":{},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.007692307692307693}},"(":{"docs":{},"\"":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}},"j":{"docs":{},"o":{"docs":{},"h":{"docs":{},"n":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"l":{"docs":{},"u":{"docs":{},"k":{"docs":{},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}},"s":{"docs":{},"b":{"docs":{},"y":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"(":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},":":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}}},"y":{"docs":{},".":{"docs":{},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"p":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"_":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"q":{"docs":{},"u":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}}}}}},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{},"o":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},".":{"docs":{},"m":{"docs":{},"d":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"v":{"docs":{},"量":{"docs":{},":":{"2":{"0":{"0":{"docs":{},"*":{"3":{"0":{"docs":{},"=":{"6":{"0":{"0":{"0":{"docs":{},"万":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}}}},"r":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"e":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0058997050147492625}},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.015723270440251572},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.035398230088495575},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}},"e":{"docs":{},"(":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943}}},"{":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.014749262536873156}}}},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943}}},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"(":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"[":{"docs":{},"/":{"docs":{},"]":{"docs":{},"+":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}}}}}}}},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}}}}}}}}}},"s":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}}}}}}}}},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426}}},"o":{"docs":{},"l":{"docs":{},"v":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"e":{"docs":{},")":{"docs":{},",":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"l":{"docs":{},"v":{"docs":{},"e":{"docs":{},"参":{"docs":{},"数":{"docs":{},"告":{"docs":{},"诉":{"docs":{},"类":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"是":{"docs":{},"否":{"docs":{},"需":{"docs":{},"要":{"docs":{},"解":{"docs":{},"析":{"docs":{},"该":{"docs":{},"类":{"docs":{},"。":{"docs":{},"在":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"类":{"docs":{},"之":{"docs":{},"前":{"docs":{},",":{"docs":{},"应":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"进":{"docs":{},"行":{"docs":{},"类":{"docs":{},"解":{"docs":{},"析":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},",":{"docs":{},"但":{"docs":{},"并":{"docs":{},"不":{"docs":{},"是":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"类":{"docs":{},"都":{"docs":{},"需":{"docs":{},"要":{"docs":{},"解":{"docs":{},"析":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"只":{"docs":{},"需":{"docs":{},"要":{"docs":{},"知":{"docs":{},"道":{"docs":{},"该":{"docs":{},"类":{"docs":{},"是":{"docs":{},"否":{"docs":{},"存":{"docs":{},"在":{"docs":{},"或":{"docs":{},"找":{"docs":{},"出":{"docs":{},"该":{"docs":{},"类":{"docs":{},"的":{"docs":{},"超":{"docs":{},"类":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"就":{"docs":{},"不":{"docs":{},"需":{"docs":{},"要":{"docs":{},"进":{"docs":{},"行":{"docs":{},"解":{"docs":{},"析":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"e":{"docs":{},"t":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}}}},"b":{"docs":{},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}}}}}}}}}},"t":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.012578616352201259},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.033816425120772944},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.02466367713004484},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0169971671388102},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.017045454545454544},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.007805724197745013},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.029925187032418952},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.010576923076923078},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.006024096385542169}},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0058997050147492625},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}}},"s":{"docs":{},".":{"docs":{},".":{"docs":{},".":{"docs":{},"开":{"docs":{},"头":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"或":{"docs":{},"抛":{"docs":{},"出":{"docs":{},"异":{"docs":{},"常":{"docs":{},"来":{"docs":{},"终":{"docs":{},"止":{"docs":{},",":{"docs":{},"要":{"docs":{},"么":{"docs":{},"通":{"docs":{},"过":{"docs":{},"一":{"docs":{},"条":{"docs":{},"注":{"docs":{},"释":{"docs":{},"来":{"docs":{},"说":{"docs":{},"明":{"docs":{},"程":{"docs":{},"序":{"docs":{},"将":{"docs":{},"继":{"docs":{},"续":{"docs":{},"执":{"docs":{},"行":{"docs":{},"到":{"docs":{},"下":{"docs":{},"一":{"docs":{},"个":{"docs":{},"语":{"docs":{},"句":{"docs":{},"组":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"e":{"docs":{},"v":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}},"f":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"z":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"_":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"u":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"e":{"docs":{},"r":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.012578616352201259},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.017699115044247787}},"(":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.012578616352201259},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.017699115044247787}}},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},",":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{},"r":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.011799410029498525}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}},"s":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"b":{"docs":{},"i":{"docs":{},"r":{"docs":{},"t":{"docs":{},"h":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0058997050147492625}}}}}}}}}}},"a":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0058997050147492625}}}}}}}},"i":{"docs":{},"d":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}}}}}}}}}}}}}}}}}}}},"\"":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0136986301369863}},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219}}}}}},"_":{"docs":{},"d":{"docs":{},"r":{"docs":{},"a":{"docs":{},"f":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"m":{"docs":{},"b":{"docs":{},"l":{"docs":{},"y":{"docs":{},"(":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{},"w":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},".":{"docs":{},".":{"docs":{},".":{"docs":{},"。":{"docs":{},"然":{"docs":{},"而":{"docs":{},",":{"docs":{},"由":{"docs":{},"于":{"docs":{},"开":{"docs":{},"头":{"docs":{},"大":{"docs":{},"写":{"docs":{},"及":{"docs":{},"被":{"docs":{},"加":{"docs":{},"了":{"docs":{},"标":{"docs":{},"点":{"docs":{},",":{"docs":{},"它":{"docs":{},"看":{"docs":{},"起":{"docs":{},"来":{"docs":{},"就":{"docs":{},"像":{"docs":{},"是":{"docs":{},"个":{"docs":{},"完":{"docs":{},"整":{"docs":{},"的":{"docs":{},"句":{"docs":{},"子":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"g":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}}}}}}}},"r":{"docs":{},"y":{"docs":{},".":{"docs":{},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"o":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204}}}}}}}}}}}}},"j":{"docs":{},"s":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204}}}}}}}}}}}},"=":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"y":{"docs":{},".":{"docs":{},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"o":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.018633540372670808}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"d":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}},"l":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.005203816131830009}},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"y":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"i":{"docs":{},"f":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},".":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},":":{"docs":{},":":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"n":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"_":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}},"p":{"docs":{},"o":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.004901960784313725}}}}}},"s":{"docs":{},"s":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.022099447513812154},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943}},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}},")":{"docs":{},"{":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0055248618784530384},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629}},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}},".":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"(":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"r":{"docs":{},"_":{"docs":{},"r":{"docs":{},"e":{"docs":{},"g":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.014492753623188406}},"s":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}},")":{"docs":{},"{":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227}}}}},"s":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.011049723756906077}},"{":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0055248618784530384}}}}}}}}}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.013812154696132596}}}},":":{"docs":{},"[":{"docs":{},"\"":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}},"o":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}},"u":{"docs":{},"n":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}},"是":{"docs":{},"重":{"docs":{},"复":{"docs":{},"次":{"docs":{},"数":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}},"s":{"1":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"2":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.010752688172043012}},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629}},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629}}}}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},".":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{},"(":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},",":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}},"e":{"docs":{},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},")":{"docs":{},";":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219}}}}}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602},"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.011437908496732025},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653},"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}},"t":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.01020408163265306}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"r":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"(":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},",":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0055248618784530384}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"(":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}},"b":{"docs":{},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"(":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},",":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"f":{"docs":{},"i":{"docs":{},"t":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}},"h":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}},"x":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}},"&":{"docs":{},"l":{"docs":{},"t":{"docs":{},";":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"&":{"docs":{},"g":{"docs":{},"t":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"程":{"docs":{},"序":{"docs":{},"设":{"docs":{},"计":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"直":{"docs":{},"接":{"docs":{},"在":{"docs":{},"对":{"docs":{},"象":{"docs":{},"内":{"docs":{},"部":{"docs":{},"通":{"docs":{},"过":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"进":{"docs":{},"行":{"docs":{},"创":{"docs":{},"建":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"是":{"docs":{},"程":{"docs":{},"序":{"docs":{},"主":{"docs":{},"动":{"docs":{},"去":{"docs":{},"创":{"docs":{},"建":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"对":{"docs":{},"象":{"docs":{},";":{"docs":{},"而":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"是":{"docs":{},"有":{"docs":{},"专":{"docs":{},"门":{"docs":{},"一":{"docs":{},"个":{"docs":{},"容":{"docs":{},"器":{"docs":{},"来":{"docs":{},"创":{"docs":{},"建":{"docs":{},"这":{"docs":{},"些":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"即":{"docs":{},"由":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"容":{"docs":{},"器":{"docs":{},"来":{"docs":{},"控":{"docs":{},"制":{"docs":{},"对":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"g":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.010752688172043012}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}},"d":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.006535947712418301}}},"e":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},"k":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.006535947712418301}}}},"m":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}},"n":{"docs":{},"d":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}},"h":{"docs":{},"i":{"docs":{},"r":{"docs":{},"o":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}},"o":{"docs":{},"w":{"docs":{},"_":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}}}}},"c":{"docs":{},"k":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"r":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}},"p":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},"中":{"docs":{},"怎":{"docs":{},"么":{"docs":{},"用":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":10.007575757575758},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}},"更":{"docs":{},"高":{"docs":{},"级":{"docs":{},"的":{"docs":{},"用":{"docs":{},"法":{"docs":{},",":{"docs":{},"在":{"3":{"docs":{},".":{"0":{"docs":{},"版":{"docs":{},"本":{"docs":{},"之":{"docs":{},"后":{"docs":{},"有":{"docs":{},"了":{"docs":{},"基":{"docs":{},"于":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"的":{"docs":{},"注":{"docs":{},"入":{"docs":{},"实":{"docs":{},"现":{"docs":{},",":{"docs":{},"为":{"docs":{},"毛":{"docs":{},"每":{"docs":{},"次":{"docs":{},"都":{"docs":{},"要":{"docs":{},"配":{"docs":{},"置":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}}},".":{"docs":{},"s":{"docs":{},"a":{"docs":{},"y":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{},"b":{"docs":{},"y":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"s":{"docs":{},"l":{"docs":{},".":{"docs":{},"d":{"docs":{},"o":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}},"a":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}},"e":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}}}},"v":{"docs":{},"e":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}},"y":{"docs":{},"(":{"docs":{},")":{"docs":{},"{":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{},"b":{"docs":{},"y":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},"f":{"docs":{},"e":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091},"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521}}}}},"n":{"docs":{},"a":{"docs":{},"p":{"docs":{},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"t":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}},"i":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.014492753623188406},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.033632286995515695},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0084985835694051},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.00975609756097561},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.03977272727272727},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.010407632263660017},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.007481296758104738},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.012048192771084338}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"i":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}},"y":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}},"的":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"\"":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"r":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}},"t":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}},"y":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"b":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.016574585635359115},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.029585798816568046},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.008968609865470852},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.02654867256637168},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.015151515151515152},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.018413597733711047},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.00975609756097561},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.004336513443191674},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.017456359102244388},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.011538461538461539},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.008433734939759036},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},"[":{"docs":{},"]":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"[":{"docs":{},"]":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"b":{"docs":{},"u":{"docs":{},"f":{"docs":{},"f":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"o":{"docs":{},"f":{"docs":{},"(":{"docs":{},"f":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"(":{"0":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"docs":{}}}}}}}}}}}}}}}}}}},":":{"docs":{},":":{"docs":{},"i":{"docs":{},"s":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{},"y":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.008653846153846154}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"a":{"docs":{},"a":{"docs":{},"a":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"2":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"docs":{}}}},"b":{"docs":{},"b":{"docs":{},"b":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"2":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"3":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"docs":{}}}},"c":{"docs":{},"c":{"docs":{},"c":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"d":{"docs":{},"d":{"docs":{},"d":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"2":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"docs":{}}}}}}}}}}}}}}}}}},"n":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}},"e":{"docs":{},"r":{"1":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"2":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"(":{"2":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"t":{"docs":{},"f":{"docs":{},"p":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.00997506234413965}}},"y":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}},".":{"docs":{},"a":{"docs":{},"l":{"docs":{},"g":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"m":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"y":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}}},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"z":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}},"{":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}}}}}}}},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"s":{"docs":{},"(":{"docs":{},"管":{"docs":{},"道":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}},"e":{"docs":{},"p":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},")":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}},"p":{"docs":{},"w":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"\"":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"y":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}},"q":{"docs":{},"l":{"2":{"docs":{},"o":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.008968609865470852}},"(":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}},".":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.013452914798206279}}}}}}}}}}}},"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.01569506726457399}},")":{"docs":{},"{":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.006726457399103139}}}},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.017937219730941704}}},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"f":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"(":{"docs":{},"\"":{"docs":{},")":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}},")":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"u":{"docs":{},"f":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}},".":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"(":{"docs":{},"\"":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}},":":{"docs":{},"\"":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},")":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"(":{"0":{"docs":{},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}},"docs":{}}}}}}}}}}}}}}}},"r":{"docs":{},"t":{"docs":{},"(":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"a":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"e":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"i":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.0625},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.017045454545454544}}},"{":{"docs":{},"}":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}},"这":{"docs":{},"句":{"docs":{},",":{"docs":{},"这":{"docs":{},"并":{"docs":{},"非":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"原":{"docs":{},"子":{"docs":{},"操":{"docs":{},"作":{"docs":{},",":{"docs":{},"事":{"docs":{},"实":{"docs":{},"上":{"docs":{},"在":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"o":{"docs":{},"l":{"docs":{},"d":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.005681818181818182}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},";":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}},"{":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}},"k":{"docs":{},"h":{"docs":{},"o":{"docs":{},"l":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}},"g":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}},"s":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"u":{"docs":{},"a":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}},".":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"l":{"docs":{},"g":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"m":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},".":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},".":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"u":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"内":{"docs":{},"容":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521}}}}}},"e":{"docs":{},"g":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.017921146953405017}},"e":{"docs":{},"下":{"docs":{},"载":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"w":{"docs":{},"w":{"docs":{},"w":{"docs":{},".":{"docs":{},"j":{"docs":{},"o":{"docs":{},"e":{"docs":{},"d":{"docs":{},"o":{"docs":{},"g":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"/":{"docs":{},"s":{"docs":{},"i":{"docs":{},"e":{"docs":{},"g":{"docs":{},"e":{"docs":{},"/":{"docs":{},"s":{"docs":{},"i":{"docs":{},"e":{"docs":{},"g":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}},"官":{"docs":{},"方":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"w":{"docs":{},"w":{"docs":{},"w":{"docs":{},".":{"docs":{},"j":{"docs":{},"o":{"docs":{},"e":{"docs":{},"d":{"docs":{},"o":{"docs":{},"g":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}},"解":{"docs":{},"压":{"docs":{},"并":{"docs":{},"安":{"docs":{},"装":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},".":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"n":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.015151515151515152},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"z":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}},"w":{"1":{"docs":{},".":{"docs":{},"i":{"docs":{},"s":{"docs":{},"b":{"docs":{},"e":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"(":{"docs":{},"n":{"docs":{},"o":{"docs":{},"w":{"2":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"docs":{}}}}}}}}}}}}}}},"docs":{}}}},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}},"\"":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{},"b":{"docs":{},"y":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"i":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}}}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"a":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}},"n":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"a":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{},"o":{"docs":{},"f":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"k":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}}}}}}},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"s":{"1":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}},"2":{"docs":{},".":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}},"docs":{}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"s":{"docs":{},"b":{"docs":{},"e":{"docs":{},"t":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{},"g":{"docs":{},"a":{"docs":{},"c":{"docs":{},"y":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"o":{"docs":{},"f":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}},"s":{"docs":{},"b":{"docs":{},"e":{"docs":{},"t":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"(":{"0":{"docs":{},")":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"docs":{}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"b":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},".":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"l":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"x":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"z":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"1":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}},"2":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}},"docs":{},"i":{"docs":{},"d":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"z":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464}}}}}}}}}}}}}}}}}},"n":{"docs":{},"c":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204}},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.008522727272727272},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}},"l":{"docs":{},"v":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{},"o":{"docs":{},"f":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"k":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{},"(":{"docs":{},"c":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"o":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{},".":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"_":{"docs":{},"o":{"docs":{},"f":{"docs":{},"_":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"u":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.004336513443191674}},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"a":{"docs":{},"y":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{},"b":{"docs":{},"y":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}}}}},"s":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"u":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"l":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.004336513443191674},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"s":{"docs":{},"(":{"docs":{},"生":{"docs":{},"产":{"docs":{},"者":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"产":{"docs":{},"生":{"docs":{},"一":{"docs":{},"个":{"docs":{},"给":{"docs":{},"定":{"docs":{},"的":{"docs":{},"泛":{"docs":{},"型":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"结":{"docs":{},"果":{"docs":{},"。":{"docs":{},"与":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"是":{"docs":{},"s":{"docs":{},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"不":{"docs":{},"接":{"docs":{},"受":{"docs":{},"输":{"docs":{},"入":{"docs":{},"参":{"docs":{},"数":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},"i":{"docs":{},"p":{"docs":{},"v":{"6":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"o":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}}}}}},"docs":{}}}}}}}}}},"i":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"n":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},".":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"a":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}},"b":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"z":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},":":{"docs":{},":":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{},"a":{"docs":{},"t":{"docs":{},"y":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{},"s":{"docs":{},"a":{"docs":{},"f":{"docs":{},"o":{"docs":{},"o":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"m":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"e":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"m":{"docs":{},"u":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"[":{"docs":{},"]":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}},"r":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.006730769230769231}},"e":{"docs":{},"d":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"中":{"docs":{},"间":{"docs":{},"操":{"docs":{},"作":{"docs":{},",":{"docs":{},"能":{"docs":{},"够":{"docs":{},"返":{"docs":{},"回":{"docs":{},"一":{"docs":{},"个":{"docs":{},"排":{"docs":{},"过":{"docs":{},"序":{"docs":{},"的":{"docs":{},"流":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"视":{"docs":{},"图":{"docs":{},"。":{"docs":{},"这":{"docs":{},"些":{"docs":{},"元":{"docs":{},"素":{"docs":{},"按":{"docs":{},"自":{"docs":{},"然":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"排":{"docs":{},"序":{"docs":{},",":{"docs":{},"除":{"docs":{},"非":{"docs":{},"你":{"docs":{},"经":{"docs":{},"过":{"docs":{},"一":{"docs":{},"个":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"比":{"docs":{},"较":{"docs":{},"器":{"docs":{},"(":{"docs":{},"实":{"docs":{},"现":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"接":{"docs":{},"口":{"docs":{},")":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602},"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"e":{"docs":{},"_":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"目":{"docs":{},"录":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"值":{"docs":{},"为":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}},"/":{"docs":{},"_":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}},"r":{"docs":{},"a":{"docs":{},"f":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.004901960784313725}}}}}}}},"]":{"docs":{},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}},"c":{"docs":{},"a":{"docs":{},"f":{"docs":{},"f":{"docs":{},"o":{"docs":{},"l":{"docs":{},"d":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.00821917808219178},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"s":{"docs":{},"(":{"docs":{},"模":{"docs":{},"版":{"docs":{},")":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.00821917808219178}}}}},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.013986013986013986}},"能":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}},")":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}},"k":{"docs":{},"i":{"docs":{},"p":{"docs":{},"_":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.004901960784313725}}}}},"v":{"docs":{},"n":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}},"_":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"和":{"docs":{},"k":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{},"在":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"编":{"docs":{},"程":{"docs":{},"风":{"docs":{},"格":{"docs":{},"中":{"docs":{},"都":{"docs":{},"不":{"docs":{},"再":{"docs":{},"使":{"docs":{},"用":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"语":{"docs":{},"句":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"v":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}},"p":{"docs":{"./":{"ref":"./","tf":0.018867924528301886}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}},"o":{"docs":{},"i":{"docs":{},"d":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.006726457399103139},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.017699115044247787},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.034482758620689655},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.03787878787878788},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.021246458923512748},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.014634146341463415},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.008673026886383347},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.00997506234413965},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.02040816326530612}}}},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.03125},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"e":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}},")":{"docs":{},"{":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}},",":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219}}},";":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.01775147928994083}},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"[":{"docs":{},"/":{"docs":{},"]":{"docs":{},"+":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.023668639053254437}},".":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"f":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.01775147928994083}},".":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}},";":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}},"a":{"docs":{},"l":{"3":{"3":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}}},"docs":{}},"9":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}},"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"u":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},"e":{"docs":{},")":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},"、":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}},"等":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}},",":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"表":{"docs":{},"示":{"docs":{},"操":{"docs":{},"作":{"docs":{},"的":{"docs":{},"目":{"docs":{},"标":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"为":{"docs":{},"目":{"docs":{},"标":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"成":{"docs":{},"员":{"docs":{},"变":{"docs":{},"量":{"docs":{},"设":{"docs":{},"置":{"docs":{},"值":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"成":{"docs":{},"员":{"docs":{},"变":{"docs":{},"量":{"docs":{},"为":{"docs":{},"基":{"docs":{},"础":{"docs":{},"类":{"docs":{},"型":{"docs":{},",":{"docs":{},"用":{"docs":{},"户":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{},"类":{"docs":{},"中":{"docs":{},"提":{"docs":{},"供":{"docs":{},"的":{"docs":{},"带":{"docs":{},"类":{"docs":{},"型":{"docs":{},"名":{"docs":{},"的":{"docs":{},"值":{"docs":{},"设":{"docs":{},"置":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"如":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"(":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"s":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.003469210754553339}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"s":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"s":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"(":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"(":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"f":{"docs":{},"i":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521}},"=":{"1":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}},"docs":{}}}}}}}},"表":{"docs":{},"示":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}},"命":{"docs":{},"令":{"docs":{},"查":{"docs":{},"看":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"j":{"docs":{},"s":{"docs":{},"版":{"docs":{},"本":{"docs":{},"。":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}},"性":{"docs":{},"能":{"docs":{},"测":{"docs":{},"试":{"docs":{},"工":{"docs":{},"具":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"web/test_tool.html":{"ref":"web/test_tool.html","tf":10}}}}}}}},"程":{"docs":{},"序":{"docs":{},"是":{"docs":{},"基":{"docs":{},"于":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.021505376344086023}},"是":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"x":{"docs":{},"下":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"网":{"docs":{},"站":{"docs":{},"压":{"docs":{},"力":{"docs":{},"测":{"docs":{},"试":{"docs":{},"工":{"docs":{},"具":{"docs":{},",":{"docs":{},"最":{"docs":{},"多":{"docs":{},"可":{"docs":{},"以":{"docs":{},"模":{"docs":{},"拟":{"3":{"docs":{},"万":{"docs":{},"个":{"docs":{},"并":{"docs":{},"发":{"docs":{},"连":{"docs":{},"接":{"docs":{},"去":{"docs":{},"测":{"docs":{},"试":{"docs":{},"网":{"docs":{},"站":{"docs":{},"的":{"docs":{},"负":{"docs":{},"载":{"docs":{},"能":{"docs":{},"力":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"性":{"docs":{},"能":{"docs":{},"压":{"docs":{},"力":{"docs":{},"测":{"docs":{},"试":{"docs":{},"工":{"docs":{},"具":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}},"l":{"docs":{},"l":{"docs":{},",":{"docs":{},"这":{"docs":{},"是":{"docs":{},"对":{"docs":{},"g":{"docs":{},"i":{"docs":{},"r":{"docs":{},"l":{"docs":{},"最":{"docs":{},"好":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"只":{"docs":{},"要":{"docs":{},"想":{"docs":{},"办":{"docs":{},"法":{"docs":{},"贿":{"docs":{},"赂":{"docs":{},"了":{"docs":{},"g":{"docs":{},"i":{"docs":{},"r":{"docs":{},"l":{"docs":{},"的":{"docs":{},"父":{"docs":{},"母":{"docs":{},",":{"docs":{},"并":{"docs":{},"把":{"docs":{},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{},"交":{"docs":{},"给":{"docs":{},"他":{"docs":{},"。":{"docs":{},"那":{"docs":{},"么":{"docs":{},"我":{"docs":{},"们":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"轻":{"docs":{},"松":{"docs":{},"的":{"docs":{},"和":{"docs":{},"g":{"docs":{},"i":{"docs":{},"r":{"docs":{},"l":{"docs":{},"来":{"docs":{},"k":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"了":{"docs":{},"。":{"docs":{},"看":{"docs":{},"来":{"docs":{},"几":{"docs":{},"千":{"docs":{},"年":{"docs":{},"传":{"docs":{},"统":{"docs":{},"的":{"docs":{},"父":{"docs":{},"母":{"docs":{},"之":{"docs":{},"命":{"docs":{},"还":{"docs":{},"真":{"docs":{},"是":{"docs":{},"有":{"docs":{},"用":{"docs":{},"哦":{"docs":{},"。":{"docs":{},"至":{"docs":{},"少":{"docs":{},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{},"和":{"docs":{},"g":{"docs":{},"i":{"docs":{},"r":{"docs":{},"l":{"docs":{},"不":{"docs":{},"用":{"docs":{},"自":{"docs":{},"己":{"docs":{},"瞎":{"docs":{},"忙":{"docs":{},"乎":{"docs":{},"了":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"a":{"docs":{},"k":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"e":{"docs":{},"<":{"docs":{},">":{"docs":{},"(":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"[":{"docs":{},"]":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}},"d":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"n":{"docs":{},"e":{"docs":{},"s":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.01775147928994083}},")":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}},";":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"a":{"docs":{},"p":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}},"a":{"docs":{},"s":{"docs":{},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"循":{"docs":{},"环":{"docs":{},"的":{"docs":{},"作":{"docs":{},"用":{"docs":{},"就":{"docs":{},"是":{"docs":{},"不":{"docs":{},"停":{"docs":{},"的":{"docs":{},"获":{"docs":{},"取":{"docs":{},"实":{"docs":{},"现":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"类":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"类":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"从":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"中":{"docs":{},"拿":{"docs":{},"到":{"docs":{},",":{"docs":{},"也":{"docs":{},"可":{"docs":{},"是":{"docs":{},"是":{"docs":{},"从":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"生":{"docs":{},"成":{"docs":{},"的":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"语":{"docs":{},"句":{"docs":{},"一":{"docs":{},"起":{"docs":{},"使":{"docs":{},"用":{"docs":{},",":{"docs":{},"即":{"docs":{},"使":{"docs":{},"只":{"docs":{},"有":{"docs":{},"一":{"docs":{},"条":{"docs":{},"语":{"docs":{},"句":{"docs":{},"(":{"docs":{},"或":{"docs":{},"是":{"docs":{},"空":{"docs":{},")":{"docs":{},",":{"docs":{},"也":{"docs":{},"应":{"docs":{},"该":{"docs":{},"把":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"写":{"docs":{},"上":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"l":{"docs":{},"d":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"篇":{"docs":{},"叫":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}},",":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"的":{"docs":{},"文":{"docs":{},"章":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"!":{"docs":{},"'":{"docs":{},")":{"docs":{},";":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}},"d":{"docs":{},"s":{"docs":{},"”":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"t":{"docs":{},"h":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}},"n":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}},"|":{"docs":{"./":{"ref":"./","tf":0.03773584905660377},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127},"hexo/config.html":{"ref":"hexo/config.html","tf":0.024657534246575342},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0196078431372549},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.008433734939759036}},"|":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.011799410029498525}}},"日":{"docs":{},"期":{"docs":{},"格":{"docs":{},"式":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"为":{"docs":{},"m":{"docs":{},"m":{"docs":{},"m":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}},"时":{"docs":{},"间":{"docs":{},"格":{"docs":{},"式":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"为":{"docs":{},"h":{"docs":{},":":{"docs":{},"m":{"docs":{},"m":{"docs":{},":":{"docs":{},"s":{"docs":{},"s":{"docs":{},"|":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}},"定":{"docs":{},"制":{"docs":{},"提":{"docs":{},"交":{"docs":{},"消":{"docs":{},"息":{"docs":{},"(":{"docs":{},"默":{"docs":{},"认":{"docs":{},"为":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}},"什":{"docs":{},"么":{"docs":{},"是":{"docs":{},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":10.002493765586035}}}}}},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"?":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}},"介":{"docs":{},"绍":{"docs":{"./":{"ref":"./","tf":10}}}},"代":{"docs":{},"理":{"docs":{},"模":{"docs":{},"式":{"docs":{},"剖":{"docs":{},"析":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":10.000867302688638}}}},"原":{"docs":{},"理":{"docs":{},"及":{"docs":{},"实":{"docs":{},"例":{"docs":{},"讲":{"docs":{},"解":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"学":{"docs":{},"习":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"定":{"docs":{},"义":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}},"的":{"docs":{},"参":{"docs":{},"与":{"docs":{},"者":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}},"实":{"docs":{},"现":{"docs":{},"思":{"docs":{},"路":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}},"角":{"docs":{},"色":{"docs":{},"分":{"docs":{},"四":{"docs":{},"种":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},"对":{"docs":{},"象":{"docs":{},"和":{"docs":{},"目":{"docs":{},"标":{"docs":{},"对":{"docs":{},"象":{"docs":{},"均":{"docs":{},"实":{"docs":{},"现":{"docs":{},"同":{"docs":{},"一":{"docs":{},"个":{"docs":{},"行":{"docs":{},"为":{"docs":{},"接":{"docs":{},"口":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}},"是":{"docs":{},"如":{"docs":{},"何":{"docs":{},"创":{"docs":{},"建":{"docs":{},"出":{"docs":{},"来":{"docs":{},"的":{"docs":{},"?":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}}}}}}},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"类":{"docs":{},"和":{"docs":{},"目":{"docs":{},"标":{"docs":{},"类":{"docs":{},"分":{"docs":{},"别":{"docs":{},"具":{"docs":{},"体":{"docs":{},"实":{"docs":{},"现":{"docs":{},"接":{"docs":{},"口":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}},"表":{"docs":{},"数":{"docs":{},"据":{"docs":{},"结":{"docs":{},"构":{"docs":{},"。":{"docs":{},"通":{"docs":{},"常":{"docs":{},"来":{"docs":{},"说":{"docs":{},",":{"docs":{},"模":{"docs":{},"型":{"docs":{},"类":{"docs":{},"将":{"docs":{},"包":{"docs":{},"含":{"docs":{},"取":{"docs":{},"出":{"docs":{},"、":{"docs":{},"插":{"docs":{},"入":{"docs":{},"、":{"docs":{},"更":{"docs":{},"新":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"资":{"docs":{},"料":{"docs":{},"等":{"docs":{},"这":{"docs":{},"些":{"docs":{},"功":{"docs":{},"能":{"docs":{},"。":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"码":{"docs":{},"出":{"docs":{},"处":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}},"块":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"设":{"docs":{},"置":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"目":{"docs":{},"录":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"优":{"docs":{},"惠":{"docs":{},"域":{"docs":{},"名":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}},"先":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"原":{"docs":{},"则":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}},"化":{"docs":{},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"配":{"docs":{},"置":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"配":{"docs":{},"置":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"8":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}},"docs":{}}}}}}}}},"便":{"docs":{},"是":{"docs":{},",":{"docs":{},"持":{"docs":{},"续":{"docs":{},"更":{"docs":{},"新":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{},"还":{"docs":{},"有":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},"项":{"docs":{},"目":{"docs":{},"的":{"docs":{},"同":{"docs":{},"学":{"docs":{},",":{"docs":{},"貌":{"docs":{},"似":{"docs":{},"没":{"docs":{},"有":{"docs":{},"什":{"docs":{},"么":{"docs":{},"卵":{"docs":{},"用":{"docs":{},"。":{"docs":{},"。":{"docs":{},"。":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"免":{"docs":{},"费":{"docs":{},"s":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}},"v":{"docs":{},"p":{"docs":{},"n":{"docs":{},"/":{"docs":{},"s":{"docs":{},"s":{"docs":{},"h":{"docs":{},"服":{"docs":{},"务":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}}}},"虚":{"docs":{},"拟":{"docs":{},"主":{"docs":{},"机":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}},")":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.009708737864077669}}}}},"写":{"docs":{},"给":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"开":{"docs":{},"发":{"docs":{},"的":{"docs":{},"运":{"docs":{},"维":{"docs":{},"笔":{"docs":{},"记":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"learn_server/":{"ref":"learn_server/","tf":10.045454545454545}}}}}}}}}}}}}},"入":{"docs":{},"对":{"docs":{},"象":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}},"作":{"docs":{},"设":{"docs":{},"置":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"分":{"docs":{},"分":{"docs":{},"钟":{"docs":{},"部":{"docs":{},"署":{"docs":{},"一":{"docs":{},"个":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"环":{"docs":{},"境":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"hexo/hello.html":{"ref":"hexo/hello.html","tf":10.006211180124224}}}}}}}}}}}}}},"配":{"docs":{},"内":{"docs":{},"存":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}},"类":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"目":{"docs":{},"录":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"缩":{"docs":{},"略":{"docs":{},"名":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"和":{"docs":{},"标":{"docs":{},"签":{"docs":{},"只":{"docs":{},"支":{"docs":{},"持":{"docs":{},"在":{"docs":{},"文":{"docs":{},"章":{"docs":{},"。":{"docs":{},"分":{"docs":{},"类":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"有":{"docs":{},"多":{"docs":{},"层":{"docs":{},"级":{"docs":{},"别":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}},"管":{"docs":{},"理":{"docs":{},",":{"docs":{},"商":{"docs":{},"品":{"docs":{},"管":{"docs":{},"理":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"页":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}},"目":{"docs":{},"录":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"值":{"docs":{},"为":{"docs":{},"p":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}},"支":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"名":{"docs":{},"称":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"是":{"docs":{},"用":{"docs":{},"来":{"docs":{},"将":{"docs":{},"特":{"docs":{},"性":{"docs":{},"开":{"docs":{},"发":{"docs":{},"绝":{"docs":{},"缘":{"docs":{},"开":{"docs":{},"来":{"docs":{},"的":{"docs":{},"。":{"docs":{},"在":{"docs":{},"你":{"docs":{},"创":{"docs":{},"建":{"docs":{},"仓":{"docs":{},"库":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"隔":{"docs":{},"任":{"docs":{},"何":{"docs":{},"保":{"docs":{},"留":{"docs":{},"字":{"docs":{},"与":{"docs":{},"其":{"docs":{},"前":{"docs":{},"面":{"docs":{},"的":{"docs":{},"右":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"(":{"docs":{},"}":{"docs":{},")":{"docs":{},"(":{"docs":{},"如":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}},"紧":{"docs":{},"随":{"docs":{},"其":{"docs":{},"后":{"docs":{},"的":{"docs":{},"左":{"docs":{},"括":{"docs":{},"号":{"docs":{},"(":{"docs":{},"(":{"docs":{},")":{"docs":{},"(":{"docs":{},"如":{"docs":{},"i":{"docs":{},"f":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}},"中":{"docs":{},"的":{"docs":{},"每":{"docs":{},"一":{"docs":{},"层":{"docs":{},"都":{"docs":{},"着":{"docs":{},"特":{"docs":{},"定":{"docs":{},"的":{"docs":{},"角":{"docs":{},"色":{"docs":{},"和":{"docs":{},"职":{"docs":{},"能":{"docs":{},"。":{"docs":{},"举":{"docs":{},"个":{"docs":{},"例":{"docs":{},"子":{"docs":{},",":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"负":{"docs":{},"责":{"docs":{},"处":{"docs":{},"理":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"界":{"docs":{},"面":{"docs":{},"展":{"docs":{},"示":{"docs":{},"以":{"docs":{},"及":{"docs":{},"交":{"docs":{},"互":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},",":{"docs":{},"业":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"很":{"docs":{},"可":{"docs":{},"靠":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{},"。":{"docs":{},"它":{"docs":{},"适":{"docs":{},"合":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"的":{"docs":{},"应":{"docs":{},"用":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"你":{"docs":{},"不":{"docs":{},"确":{"docs":{},"定":{"docs":{},"在":{"docs":{},"项":{"docs":{},"目":{"docs":{},"中":{"docs":{},"使":{"docs":{},"用":{"docs":{},"什":{"docs":{},"么":{"docs":{},"架":{"docs":{},"构":{"docs":{},",":{"docs":{},"分":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"种":{"docs":{},"很":{"docs":{},"常":{"docs":{},"⻅":{"docs":{},"见":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{},",":{"docs":{},"它":{"docs":{},"也":{"docs":{},"叫":{"docs":{},"n":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},"。":{"docs":{},"这":{"docs":{},"种":{"docs":{},"架":{"docs":{},"构":{"docs":{},"是":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"模":{"docs":{},"式":{"docs":{},"里":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"被":{"docs":{},"分":{"docs":{},"成":{"docs":{},"几":{"docs":{},"个":{"docs":{},"平":{"docs":{},"行":{"docs":{},"的":{"docs":{},"层":{"docs":{},"次":{"docs":{},",":{"docs":{},"每":{"docs":{},"一":{"docs":{},"层":{"docs":{},"都":{"docs":{},"代":{"docs":{},"表":{"docs":{},"了":{"docs":{},"应":{"docs":{},"用":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"功":{"docs":{},"能":{"docs":{},"(":{"docs":{},"展":{"docs":{},"示":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"或":{"docs":{},"者":{"docs":{},"业":{"docs":{},"务":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},")":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"突":{"docs":{},"出":{"docs":{},"特":{"docs":{},"性":{"docs":{},"是":{"docs":{},"组":{"docs":{},"件":{"docs":{},"间":{"docs":{},"关":{"docs":{},"注":{"docs":{},"点":{"docs":{},"分":{"docs":{},"离":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}},"析":{"docs":{},":":{"docs":{},"因":{"docs":{},"为":{"docs":{},"组":{"docs":{},"件":{"docs":{},"都":{"docs":{},"处":{"docs":{},"于":{"docs":{},"各":{"docs":{},"⾃":{"docs":{},"自":{"docs":{},"的":{"docs":{},"层":{"docs":{},"次":{"docs":{},"中":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"模":{"docs":{},"拟":{"docs":{},"其":{"docs":{},"他":{"docs":{},"的":{"docs":{},"层":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"说":{"docs":{},"直":{"docs":{},"接":{"docs":{},"去":{"docs":{},"掉":{"docs":{},"层":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"分":{"docs":{},"层":{"docs":{},"模":{"docs":{},"式":{"docs":{},"很":{"docs":{},"容":{"docs":{},"易":{"docs":{},"测":{"docs":{},"试":{"docs":{},"。":{"docs":{},"开":{"docs":{},"发":{"docs":{},"者":{"docs":{},"可":{"docs":{},"以":{"docs":{},"单":{"docs":{},"独":{"docs":{},"模":{"docs":{},"拟":{"docs":{},"⼀":{"docs":{},"一":{"docs":{},"个":{"docs":{},"展":{"docs":{},"⽰":{"docs":{},"示":{"docs":{},"组":{"docs":{},"件":{"docs":{},",":{"docs":{},"对":{"docs":{},"业":{"docs":{},"务":{"docs":{},"组":{"docs":{},"件":{"docs":{},"进":{"docs":{},"⾏":{"docs":{},"行":{"docs":{},"隔":{"docs":{},"绝":{"docs":{},"测":{"docs":{},"试":{"docs":{},"。":{"docs":{},"还":{"docs":{},"可":{"docs":{},"以":{"docs":{},"模":{"docs":{},"拟":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"来":{"docs":{},"测":{"docs":{},"试":{"docs":{},"某":{"docs":{},"个":{"docs":{},"展":{"docs":{},"⽰":{"docs":{},"示":{"docs":{},"功":{"docs":{},"能":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"在":{"docs":{},"开":{"docs":{},"发":{"docs":{},"难":{"docs":{},"度":{"docs":{},"上":{"docs":{},"⾯":{"docs":{},"面":{"docs":{},",":{"docs":{},"分":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},"得":{"docs":{},"到":{"docs":{},"了":{"docs":{},"⽐":{"docs":{},"比":{"docs":{},"较":{"docs":{},"⾼":{"docs":{},"高":{"docs":{},"的":{"docs":{},"分":{"docs":{},"数":{"docs":{},"。":{"docs":{},"因":{"docs":{},"为":{"docs":{},"这":{"docs":{},"种":{"docs":{},"架":{"docs":{},"构":{"docs":{},"对":{"docs":{},"⼤":{"docs":{},"大":{"docs":{},"家":{"docs":{},"来":{"docs":{},"说":{"docs":{},"很":{"docs":{},"熟":{"docs":{},"悉":{"docs":{},",":{"docs":{},"不":{"docs":{},"难":{"docs":{},"实":{"docs":{},"现":{"docs":{},"。":{"docs":{},"⼤":{"docs":{},"大":{"docs":{},"部":{"docs":{},"分":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"尽":{"docs":{},"管":{"docs":{},"某":{"docs":{},"些":{"docs":{},"分":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},"的":{"docs":{},"性":{"docs":{},"能":{"docs":{},"表":{"docs":{},"现":{"docs":{},"的":{"docs":{},"确":{"docs":{},"不":{"docs":{},"错":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"这":{"docs":{},"个":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},"特":{"docs":{},"点":{"docs":{},"导":{"docs":{},"致":{"docs":{},"它":{"docs":{},"⽆":{"docs":{},"无":{"docs":{},"法":{"docs":{},"带":{"docs":{},"来":{"docs":{},"⾼":{"docs":{},"高":{"docs":{},"性":{"docs":{},"能":{"docs":{},"。":{"docs":{},"因":{"docs":{},"为":{"docs":{},"⼀":{"docs":{},"一":{"docs":{},"次":{"docs":{},"业":{"docs":{},"务":{"docs":{},"请":{"docs":{},"求":{"docs":{},"要":{"docs":{},"穿":{"docs":{},"越":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"层":{"docs":{},",":{"docs":{},"做":{"docs":{},"了":{"docs":{},"很":{"docs":{},"多":{"docs":{},"不":{"docs":{},"必":{"docs":{},"要":{"docs":{},"的":{"docs":{},"⼯":{"docs":{},"工":{"docs":{},"作":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"总":{"docs":{},"体":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"性":{"docs":{},"是":{"docs":{},"响":{"docs":{},"应":{"docs":{},"环":{"docs":{},"境":{"docs":{},"变":{"docs":{},"化":{"docs":{},"的":{"docs":{},"能":{"docs":{},"⼒":{"docs":{},"力":{"docs":{},"。":{"docs":{},"尽":{"docs":{},"管":{"docs":{},"分":{"docs":{},"层":{"docs":{},"模":{"docs":{},"式":{"docs":{},"中":{"docs":{},"的":{"docs":{},"变":{"docs":{},"化":{"docs":{},"可":{"docs":{},"以":{"docs":{},"隔":{"docs":{},"绝":{"docs":{},"起":{"docs":{},"来":{"docs":{},",":{"docs":{},"想":{"docs":{},"在":{"docs":{},"这":{"docs":{},"种":{"docs":{},"架":{"docs":{},"构":{"docs":{},"中":{"docs":{},"做":{"docs":{},"⼀":{"docs":{},"一":{"docs":{},"些":{"docs":{},"也":{"docs":{},"改":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"由":{"docs":{},"于":{"docs":{},"这":{"docs":{},"种":{"docs":{},"模":{"docs":{},"式":{"docs":{},"以":{"docs":{},"紧":{"docs":{},"密":{"docs":{},"耦":{"docs":{},"合":{"docs":{},"的":{"docs":{},"趋":{"docs":{},"势":{"docs":{},"在":{"docs":{},"发":{"docs":{},"展":{"docs":{},",":{"docs":{},"规":{"docs":{},"模":{"docs":{},"也":{"docs":{},"⽐":{"docs":{},"比":{"docs":{},"较":{"docs":{},"⼤":{"docs":{},"大":{"docs":{},",":{"docs":{},"⽤":{"docs":{},"用":{"docs":{},"分":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},"构":{"docs":{},"建":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},"都":{"docs":{},"⽐":{"docs":{},"比":{"docs":{},"较":{"docs":{},"难":{"docs":{},"以":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"。":{"docs":{},"你":{"docs":{},"可":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"这":{"docs":{},"取":{"docs":{},"决":{"docs":{},"于":{"docs":{},"你":{"docs":{},"怎":{"docs":{},"么":{"docs":{},"发":{"docs":{},"布":{"docs":{},"这":{"docs":{},"种":{"docs":{},"模":{"docs":{},"式":{"docs":{},",":{"docs":{},"发":{"docs":{},"布":{"docs":{},"程":{"docs":{},"序":{"docs":{},"可":{"docs":{},"能":{"docs":{},"⽐":{"docs":{},"比":{"docs":{},"较":{"docs":{},"⿇":{"docs":{},"麻":{"docs":{},"烦":{"docs":{},",":{"docs":{},"尤":{"docs":{},"其":{"docs":{},"是":{"docs":{},"很":{"docs":{},"⼤":{"docs":{},"大":{"docs":{},"的":{"docs":{},"项":{"docs":{},"目":{"docs":{},"。":{"docs":{},"⼀":{"docs":{},"一":{"docs":{},"个":{"docs":{},"组":{"docs":{},"件":{"docs":{},"的":{"docs":{},"⼩":{"docs":{},"小":{"docs":{},"⼩":{"docs":{},"小":{"docs":{},"改":{"docs":{},"动":{"docs":{},"可":{"docs":{},"能":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"布":{"docs":{},"式":{"docs":{},"大":{"docs":{},"型":{"docs":{},"网":{"docs":{},"站":{"docs":{},",":{"docs":{},"目":{"docs":{},"前":{"docs":{},"看":{"docs":{},"主":{"docs":{},"要":{"docs":{},"有":{"docs":{},"几":{"docs":{},"类":{"1":{"docs":{},".":{"docs":{},"大":{"docs":{},"型":{"docs":{},"门":{"docs":{},"户":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"网":{"docs":{},"易":{"docs":{},",":{"docs":{},"新":{"docs":{},"浪":{"docs":{},"等":{"docs":{},";":{"2":{"docs":{},".":{"docs":{},"s":{"docs":{},"n":{"docs":{},"s":{"docs":{},"网":{"docs":{},"站":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"校":{"docs":{},"内":{"docs":{},",":{"docs":{},"开":{"docs":{},"心":{"docs":{},"网":{"docs":{},"等":{"docs":{},";":{"3":{"docs":{},".":{"docs":{},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},":":{"docs":{},"比":{"docs":{},"如":{"docs":{},"阿":{"docs":{},"里":{"docs":{},"巴":{"docs":{},"巴":{"docs":{},",":{"docs":{},"京":{"docs":{},"东":{"docs":{},"商":{"docs":{},"城":{"docs":{},",":{"docs":{},"国":{"docs":{},"美":{"docs":{},"在":{"docs":{},"线":{"docs":{},",":{"docs":{},"汽":{"docs":{},"车":{"docs":{},"之":{"docs":{},"家":{"docs":{},"等":{"docs":{},"。":{"docs":{},"大":{"docs":{},"型":{"docs":{},"门":{"docs":{},"户":{"docs":{},"一":{"docs":{},"般":{"docs":{},"是":{"docs":{},"新":{"docs":{},"闻":{"docs":{},"类":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"c":{"docs":{},"d":{"docs":{},"n":{"docs":{},",":{"docs":{},"静":{"docs":{},"态":{"docs":{},"化":{"docs":{},"等":{"docs":{},"方":{"docs":{},"式":{"docs":{},"优":{"docs":{},"化":{"docs":{},",":{"docs":{},"开":{"docs":{},"心":{"docs":{},"网":{"docs":{},"等":{"docs":{},"交":{"docs":{},"互":{"docs":{},"性":{"docs":{},"比":{"docs":{},"较":{"docs":{},"多":{"docs":{},",":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"引":{"docs":{},"入":{"docs":{},"更":{"docs":{},"多":{"docs":{},"的":{"docs":{},"n":{"docs":{},"o":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},",":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"缓":{"docs":{},"存":{"docs":{},",":{"docs":{},"使":{"docs":{},"用":{"docs":{},"高":{"docs":{},"性":{"docs":{},"能":{"docs":{},"的":{"docs":{},"通":{"docs":{},"信":{"docs":{},"框":{"docs":{},"架":{"docs":{},"等":{"docs":{},"。":{"docs":{},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"具":{"docs":{},"备":{"docs":{},"以":{"docs":{},"上":{"docs":{},"两":{"docs":{},"类":{"docs":{},"的":{"docs":{},"特":{"docs":{},"点":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"产":{"docs":{},"品":{"docs":{},"详":{"docs":{},"情":{"docs":{},"可":{"docs":{},"以":{"docs":{},"采":{"docs":{},"用":{"docs":{},"c":{"docs":{},"d":{"docs":{},"n":{"docs":{},",":{"docs":{},"静":{"docs":{},"态":{"docs":{},"化":{"docs":{},",":{"docs":{},"交":{"docs":{},"互":{"docs":{},"性":{"docs":{},"高":{"docs":{},"的":{"docs":{},"需":{"docs":{},"要":{"docs":{},"采":{"docs":{},"用":{"docs":{},"n":{"docs":{},"o":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"等":{"docs":{},"技":{"docs":{},"术":{"docs":{},"。":{"docs":{},"因":{"docs":{},"此":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"采":{"docs":{},"用":{"docs":{},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"作":{"docs":{},"为":{"docs":{},"案":{"docs":{},"例":{"docs":{},",":{"docs":{},"进":{"docs":{},"行":{"docs":{},"分":{"docs":{},"析":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}},"部":{"docs":{},"署":{"docs":{},":":{"docs":{},"将":{"docs":{},"业":{"docs":{},"务":{"docs":{},"拆":{"docs":{},"分":{"docs":{},"后":{"docs":{},"的":{"docs":{},"应":{"docs":{},"用":{"docs":{},"单":{"docs":{},"独":{"docs":{},"部":{"docs":{},"署":{"docs":{},",":{"docs":{},"应":{"docs":{},"用":{"docs":{},"直":{"docs":{},"接":{"docs":{},"通":{"docs":{},"过":{"docs":{},"r":{"docs":{},"p":{"docs":{},"c":{"docs":{},"进":{"docs":{},"行":{"docs":{},"远":{"docs":{},"程":{"docs":{},"通":{"docs":{},"信":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"库":{"docs":{},"分":{"docs":{},"表":{"docs":{},"后":{"docs":{},"序":{"docs":{},"列":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},",":{"docs":{},"j":{"docs":{},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{},",":{"docs":{},"事":{"docs":{},"务":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},",":{"docs":{},"会":{"docs":{},"在":{"docs":{},"分":{"docs":{},"库":{"docs":{},"分":{"docs":{},"表":{"docs":{},"主":{"docs":{},"题":{"docs":{},"分":{"docs":{},"享":{"docs":{},"中":{"docs":{},",":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"后":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"表":{"docs":{},"中":{"docs":{},"有":{"docs":{},"数":{"docs":{},"据":{"docs":{},"量":{"docs":{},"很":{"docs":{},"大":{"docs":{},"的":{"docs":{},",":{"docs":{},"则":{"docs":{},"进":{"docs":{},"行":{"docs":{},"分":{"docs":{},"表":{"docs":{},",":{"docs":{},"一":{"docs":{},"般":{"docs":{},"可":{"docs":{},"以":{"docs":{},"按":{"docs":{},"照":{"docs":{},"i":{"docs":{},"d":{"docs":{},",":{"docs":{},"时":{"docs":{},"间":{"docs":{},"等":{"docs":{},"进":{"docs":{},"行":{"docs":{},"分":{"docs":{},"表":{"docs":{},";":{"docs":{},"(":{"docs":{},"高":{"docs":{},"级":{"docs":{},"的":{"docs":{},"用":{"docs":{},"法":{"docs":{},"是":{"docs":{},"一":{"docs":{},"致":{"docs":{},"性":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"原":{"docs":{},"理":{"docs":{},"分":{"docs":{},"析":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":10.004878048780487}}}}},"文":{"docs":{},"出":{"docs":{},"处":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}},"可":{"docs":{},"以":{"docs":{},"发":{"docs":{},"邮":{"docs":{},"件":{"docs":{},"给":{"docs":{},"我":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}},"看":{"docs":{},"出":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"全":{"docs":{},"是":{"docs":{},"静":{"docs":{},"态":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"如":{"docs":{},"果":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"没":{"docs":{},"有":{"docs":{},"实":{"docs":{},"现":{"docs":{},"任":{"docs":{},"何":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"他":{"docs":{},"就":{"docs":{},"是":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"类":{"docs":{},"型":{"docs":{},",":{"docs":{},"没":{"docs":{},"有":{"docs":{},"实":{"docs":{},"例":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"各":{"docs":{},"种":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"操":{"docs":{},"作":{"docs":{},"来":{"docs":{},"检":{"docs":{},"查":{"docs":{},"某":{"docs":{},"个":{"docs":{},"谓":{"docs":{},"词":{"docs":{},"是":{"docs":{},"否":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"流":{"docs":{},"。":{"docs":{},"所":{"docs":{},"有":{"docs":{},"这":{"docs":{},"些":{"docs":{},"操":{"docs":{},"作":{"docs":{},"都":{"docs":{},"是":{"docs":{},"终":{"docs":{},"止":{"docs":{},"操":{"docs":{},"作":{"docs":{},",":{"docs":{},"返":{"docs":{},"回":{"docs":{},"一":{"docs":{},"个":{"docs":{},"布":{"docs":{},"尔":{"docs":{},"结":{"docs":{},"果":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"把":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}},"在":{"docs":{},"线":{"docs":{},"与":{"docs":{},"客":{"docs":{},"服":{"docs":{},"沟":{"docs":{},"通":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"用":{"docs":{},"域":{"docs":{},"名":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}},"选":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}},"测":{"docs":{},"试":{"docs":{},"性":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}},"靠":{"docs":{},"性":{"docs":{},":":{"docs":{},"即":{"docs":{},"时":{"docs":{},"通":{"docs":{},"讯":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"各":{"docs":{},"种":{"docs":{},"配":{"docs":{},"置":{"docs":{},"详":{"docs":{},"解":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"hexo/config.html":{"ref":"hexo/config.html","tf":10}}}}}}}},"在":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}},"线":{"docs":{},"工":{"docs":{},"具":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}},"给":{"docs":{},"图":{"docs":{},"片":{"docs":{},"加":{"docs":{},"水":{"docs":{},"印":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}},"客":{"docs":{},"服":{"docs":{},"功":{"docs":{},"能":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"支":{"docs":{},"付":{"docs":{},"或":{"docs":{},"货":{"docs":{},"到":{"docs":{},"付":{"docs":{},"款":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{},"中":{"docs":{},"我":{"docs":{},"们":{"docs":{},"设":{"docs":{},"计":{"docs":{},"一":{"docs":{},"个":{"docs":{},"路":{"docs":{},"由":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}},"把":{"docs":{},"控":{"docs":{},"制":{"docs":{},"器":{"docs":{},"放":{"docs":{},"在":{"docs":{},"路":{"docs":{},"由":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"字":{"docs":{},"段":{"docs":{},"上":{"docs":{},",":{"docs":{},"实":{"docs":{},"际":{"docs":{},"上":{"docs":{},"一":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"过":{"docs":{},"来":{"docs":{},"之":{"docs":{},"后":{"docs":{},"最":{"docs":{},"终":{"docs":{},"是":{"docs":{},"落":{"docs":{},"在":{"docs":{},"某":{"docs":{},"个":{"docs":{},"方":{"docs":{},"法":{"docs":{},"去":{"docs":{},"处":{"docs":{},"理":{"docs":{},"的":{"docs":{},"。":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"下":{"docs":{},"一":{"docs":{},"章":{"docs":{},"节":{"docs":{},"我":{"docs":{},"们":{"docs":{},"需":{"docs":{},"要":{"docs":{},"对":{"docs":{},"请":{"docs":{},"求":{"docs":{},"处":{"docs":{},"理":{"docs":{},"做":{"docs":{},"设":{"docs":{},"计":{"docs":{},"了":{"docs":{},"~":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}},"节":{"docs":{},"中":{"docs":{},"我":{"docs":{},"们":{"docs":{},"就":{"docs":{},"要":{"docs":{},"和":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"打":{"docs":{},"交":{"docs":{},"道":{"docs":{},"了":{"docs":{},",":{"docs":{},"尝":{"docs":{},"试":{"docs":{},"新":{"docs":{},"的":{"docs":{},"旅":{"docs":{},"程":{"docs":{},"吧":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}}}}}}}}}},"这":{"docs":{},"里":{"docs":{},"我":{"docs":{},"们":{"docs":{},"不":{"docs":{},"提":{"docs":{},"及":{"docs":{},"太":{"docs":{},"麻":{"docs":{},"烦":{"docs":{},"的":{"docs":{},"东":{"docs":{},"西":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"初":{"docs":{},"步":{"docs":{},"目":{"docs":{},"标":{"docs":{},"是":{"docs":{},"实":{"docs":{},"现":{"docs":{},"m":{"docs":{},"v":{"docs":{},"c":{"docs":{},"框":{"docs":{},"架":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"给":{"docs":{},"大":{"docs":{},"家":{"docs":{},"提":{"docs":{},"醒":{"docs":{},"一":{"docs":{},"下":{"docs":{},"有":{"docs":{},"些":{"docs":{},"了":{"docs":{},"解":{"docs":{},"即":{"docs":{},"可":{"docs":{},"。":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"篇":{"docs":{},"文":{"docs":{},"章":{"docs":{},"中":{"docs":{},"我":{"docs":{},"将":{"docs":{},"向":{"docs":{},"你":{"docs":{},"演":{"docs":{},"示":{"docs":{},"如":{"docs":{},"何":{"docs":{},"使":{"docs":{},"用":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"8":{"docs":{},"中":{"docs":{},"的":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"操":{"docs":{},"作":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"和":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}},"两":{"docs":{},"种":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},",":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}},"个":{"docs":{},"例":{"docs":{},"子":{"docs":{},"中":{"docs":{},",":{"docs":{},"新":{"docs":{},"的":{"docs":{},"服":{"docs":{},"务":{"docs":{},"层":{"docs":{},"是":{"docs":{},"处":{"docs":{},"于":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"之":{"docs":{},"下":{"docs":{},"的":{"docs":{},",":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"不":{"docs":{},"能":{"docs":{},"直":{"docs":{},"接":{"docs":{},"访":{"docs":{},"问":{"docs":{},"这":{"docs":{},"个":{"docs":{},"服":{"docs":{},"务":{"docs":{},"层":{"docs":{},"中":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"。":{"docs":{},"但":{"docs":{},"是":{"docs":{},"现":{"docs":{},"在":{"docs":{},"业":{"docs":{},"务":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"模":{"docs":{},"式":{"docs":{},"中":{"docs":{},",":{"docs":{},"请":{"docs":{},"求":{"docs":{},"流":{"docs":{},"只":{"docs":{},"是":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"的":{"docs":{},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"方":{"docs":{},"法":{"docs":{},"中":{"docs":{},"使":{"docs":{},"用":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}}}}}}}}},"我":{"docs":{},"们":{"docs":{},"中":{"docs":{},"国":{"docs":{},",":{"docs":{},"常":{"docs":{},"见":{"docs":{},"的":{"docs":{},"m":{"docs":{},"m":{"docs":{},"与":{"docs":{},"g":{"docs":{},"g":{"docs":{},"的":{"docs":{},"认":{"docs":{},"识":{"docs":{},"方":{"docs":{},"式":{"docs":{},"有":{"docs":{},"以":{"docs":{},"下":{"docs":{},"几":{"docs":{},"种":{"docs":{},":":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}},"开":{"docs":{},"始":{"docs":{},"之":{"docs":{},"前":{"docs":{},",":{"docs":{},"你":{"docs":{},"必":{"docs":{},"须":{"docs":{},"在":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"中":{"docs":{},",":{"docs":{},"使":{"docs":{},"用":{"docs":{},"了":{"docs":{},"几":{"docs":{},"个":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"反":{"docs":{},"射":{"docs":{},"类":{"docs":{},",":{"docs":{},"分":{"docs":{},"别":{"docs":{},"是":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"、":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"、":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"和":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"这":{"docs":{},"些":{"docs":{},"反":{"docs":{},"射":{"docs":{},"类":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"间":{"docs":{},"接":{"docs":{},"调":{"docs":{},"用":{"docs":{},"目":{"docs":{},"标":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"的":{"docs":{},"各":{"docs":{},"项":{"docs":{},"功":{"docs":{},"能":{"docs":{},"了":{"docs":{},"。":{"docs":{},"在":{"docs":{},"①":{"docs":{},"处":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"获":{"docs":{},"取":{"docs":{},"当":{"docs":{},"前":{"docs":{},"线":{"docs":{},"程":{"docs":{},"的":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"通":{"docs":{},"过":{"docs":{},"指":{"docs":{},"定":{"docs":{},"的":{"docs":{},"全":{"docs":{},"限":{"docs":{},"定":{"docs":{},"类":{"docs":{},"\"":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"b":{"docs":{},"i":{"docs":{},"e":{"docs":{},"z":{"docs":{},"h":{"docs":{},"i":{"docs":{},".":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},".":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"\"":{"docs":{},"装":{"docs":{},"载":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"类":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"反":{"docs":{},"射":{"docs":{},"实":{"docs":{},"例":{"docs":{},"。":{"docs":{},"在":{"docs":{},"②":{"docs":{},"处":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"通":{"docs":{},"过":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"的":{"docs":{},"反":{"docs":{},"射":{"docs":{},"类":{"docs":{},"对":{"docs":{},"象":{"docs":{},"获":{"docs":{},"取":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"的":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"对":{"docs":{},"象":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},"方":{"docs":{},"法":{"docs":{},"实":{"docs":{},"例":{"docs":{},"化":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"其":{"docs":{},"效":{"docs":{},"果":{"docs":{},"等":{"docs":{},"同":{"docs":{},"于":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"装":{"docs":{},"配":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},"步":{"docs":{},"骤":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"8":{"docs":{},"中":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"类":{"docs":{},"的":{"docs":{},"功":{"docs":{},"能":{"docs":{},"已":{"docs":{},"经":{"docs":{},"有":{"docs":{},"所":{"docs":{},"增":{"docs":{},"强":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"用":{"docs":{},"调":{"docs":{},"用":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{},"(":{"docs":{},")":{"docs":{},"或":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{},"(":{"docs":{},")":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"注":{"docs":{},"解":{"docs":{},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"重":{"docs":{},"复":{"docs":{},"的":{"docs":{},",":{"docs":{},"让":{"docs":{},"我":{"docs":{},"们":{"docs":{},"深":{"docs":{},"入":{"docs":{},"到":{"docs":{},"一":{"docs":{},"个":{"docs":{},"示":{"docs":{},"例":{"docs":{},"中":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"利":{"docs":{},"用":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"关":{"docs":{},"键":{"docs":{},"字":{"docs":{},"使":{"docs":{},"我":{"docs":{},"们":{"docs":{},"能":{"docs":{},"够":{"docs":{},"添":{"docs":{},"加":{"docs":{},"非":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"方":{"docs":{},"法":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"。":{"docs":{},"此":{"docs":{},"功":{"docs":{},"能":{"docs":{},"也":{"docs":{},"被":{"docs":{},"称":{"docs":{},"为":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"这":{"docs":{},"里":{"docs":{},"是":{"docs":{},"我":{"docs":{},"们":{"docs":{},"的":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"例":{"docs":{},"子":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"+":{"docs":{},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"遍":{"docs":{},"历":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{},"中":{"docs":{},",":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"类":{"docs":{},",":{"docs":{},"位":{"docs":{},"于":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"包":{"docs":{},"中":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"对":{"docs":{},"该":{"docs":{},"类":{"docs":{},"的":{"docs":{},"一":{"docs":{},"些":{"docs":{},"重":{"docs":{},"要":{"docs":{},"接":{"docs":{},"口":{"docs":{},"方":{"docs":{},"法":{"docs":{},"进":{"docs":{},"行":{"docs":{},"介":{"docs":{},"绍":{"docs":{},":":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"访":{"docs":{},"问":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"、":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"成":{"docs":{},"员":{"docs":{},"变":{"docs":{},"量":{"docs":{},"和":{"docs":{},"方":{"docs":{},"法":{"docs":{},"时":{"docs":{},"必":{"docs":{},"须":{"docs":{},"通":{"docs":{},"过":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"中":{"docs":{},"调":{"docs":{},"用":{"docs":{},"目":{"docs":{},"标":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"行":{"docs":{},"为":{"docs":{},"接":{"docs":{},"口":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}},"的":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"中":{"docs":{},"实":{"docs":{},"例":{"docs":{},"化":{"docs":{},"一":{"docs":{},"个":{"docs":{},"目":{"docs":{},"标":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}},"看":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"e":{"docs":{},"其":{"docs":{},"它":{"docs":{},"编":{"docs":{},"程":{"docs":{},"语":{"docs":{},"言":{"docs":{},"风":{"docs":{},"格":{"docs":{},"中":{"docs":{},"使":{"docs":{},"用":{"docs":{},"的":{"docs":{},"特":{"docs":{},"殊":{"docs":{},"前":{"docs":{},"缀":{"docs":{},"或":{"docs":{},"后":{"docs":{},"缀":{"docs":{},",":{"docs":{},"如":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"_":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"里":{"docs":{},"修":{"docs":{},"改":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{},"也":{"docs":{},"是":{"docs":{},"不":{"docs":{},"允":{"docs":{},"许":{"docs":{},"的":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}},"新":{"docs":{},"标":{"docs":{},"签":{"docs":{},"中":{"docs":{},"打":{"docs":{},"开":{"docs":{},"一":{"docs":{},"个":{"docs":{},"外":{"docs":{},"部":{"docs":{},"链":{"docs":{},"接":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"为":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"3":{"docs":{},"中":{"docs":{},",":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"模":{"docs":{},"块":{"docs":{},"从":{"docs":{},"主":{"docs":{},"模":{"docs":{},"块":{"docs":{},"中":{"docs":{},"分":{"docs":{},"开":{"docs":{},"了":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"安":{"docs":{},"装":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}},"静":{"docs":{},"态":{"docs":{},"模":{"docs":{},"式":{"docs":{},"下":{"docs":{},",":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}},"合":{"docs":{},"并":{"docs":{},"改":{"docs":{},"动":{"docs":{},"之":{"docs":{},"前":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"如":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{},"预":{"docs":{},"览":{"docs":{},"差":{"docs":{},"异":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"一":{"docs":{},"个":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"块":{"docs":{},"内":{"docs":{},",":{"docs":{},"每":{"docs":{},"个":{"docs":{},"语":{"docs":{},"句":{"docs":{},"组":{"docs":{},"要":{"docs":{},"么":{"docs":{},"通":{"docs":{},"过":{"docs":{},"b":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"k":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}},"任":{"docs":{},"何":{"docs":{},"二":{"docs":{},"元":{"docs":{},"或":{"docs":{},"三":{"docs":{},"元":{"docs":{},"运":{"docs":{},"算":{"docs":{},"符":{"docs":{},"的":{"docs":{},"两":{"docs":{},"侧":{"docs":{},"。":{"docs":{},"这":{"docs":{},"也":{"docs":{},"适":{"docs":{},"用":{"docs":{},"于":{"docs":{},"以":{"docs":{},"下":{"docs":{},"“":{"docs":{},"类":{"docs":{},"运":{"docs":{},"算":{"docs":{},"符":{"docs":{},"”":{"docs":{},"符":{"docs":{},"号":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"左":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"前":{"docs":{},"(":{"docs":{},"{":{"docs":{},")":{"docs":{},",":{"docs":{},"两":{"docs":{},"个":{"docs":{},"例":{"docs":{},"外":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"转":{"docs":{},"义":{"docs":{},"符":{"docs":{},"或":{"docs":{},"是":{"docs":{},"一":{"docs":{},"些":{"docs":{},"实":{"docs":{},"际":{"docs":{},"的":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"字":{"docs":{},"符":{"docs":{},"时":{"docs":{},",":{"docs":{},"建":{"docs":{},"议":{"docs":{},"做":{"docs":{},"些":{"docs":{},"注":{"docs":{},"释":{"docs":{},"给":{"docs":{},"出":{"docs":{},"解":{"docs":{},"释":{"docs":{},",":{"docs":{},"这":{"docs":{},"有":{"docs":{},"助":{"docs":{},"于":{"docs":{},"别":{"docs":{},"人":{"docs":{},"阅":{"docs":{},"读":{"docs":{},"和":{"docs":{},"理":{"docs":{},"解":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"函":{"docs":{},"数":{"docs":{},"体":{"docs":{},"内":{"docs":{},",":{"docs":{},"语":{"docs":{},"句":{"docs":{},"的":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"分":{"docs":{},"组":{"docs":{},"间":{"docs":{},"使":{"docs":{},"用":{"docs":{},"空":{"docs":{},"行":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}},"本":{"docs":{},"文":{"docs":{},"档":{"docs":{},"中":{"docs":{},",":{"docs":{},"除":{"docs":{},"非":{"docs":{},"另":{"docs":{},"有":{"docs":{},"说":{"docs":{},"明":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}},"虚":{"docs":{},"拟":{"docs":{},"机":{"docs":{},"里":{"docs":{},"安":{"docs":{},"装":{"docs":{},"c":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"o":{"docs":{},"s":{"6":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}},"docs":{}}}}}}}}}}}}},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"的":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"写":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"的":{"docs":{},"属":{"docs":{},"性":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"分":{"docs":{},"库":{"docs":{},",":{"docs":{},"分":{"docs":{},"表":{"docs":{},"的":{"docs":{},"基":{"docs":{},"础":{"docs":{},"上":{"docs":{},",":{"docs":{},"进":{"docs":{},"行":{"docs":{},"读":{"docs":{},"写":{"docs":{},"分":{"docs":{},"离":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}},"增":{"docs":{},"删":{"docs":{},"改":{"docs":{},"查":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"mvc/":{"ref":"mvc/","tf":0.043478260869565216},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":10.002949852507374}}}}}},"如":{"docs":{},"何":{"docs":{},"正":{"docs":{},"确":{"docs":{},"地":{"docs":{},"写":{"docs":{},"出":{"docs":{},"单":{"docs":{},"例":{"docs":{},"模":{"docs":{},"式":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":10.002840909090908}}}}}}}}}}},"设":{"docs":{},"计":{"docs":{},"一":{"docs":{},"个":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}}}}}}}}}}}}},"理":{"docs":{},"解":{"docs":{},"好":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"呢":{"docs":{},"?":{"docs":{},"理":{"docs":{},"解":{"docs":{},"好":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"的":{"docs":{},"关":{"docs":{},"键":{"docs":{},"是":{"docs":{},"要":{"docs":{},"明":{"docs":{},"确":{"docs":{},"“":{"docs":{},"谁":{"docs":{},"控":{"docs":{},"制":{"docs":{},"谁":{"docs":{},",":{"docs":{},"控":{"docs":{},"制":{"docs":{},"什":{"docs":{},"么":{"docs":{},",":{"docs":{},"为":{"docs":{},"何":{"docs":{},"是":{"docs":{},"反":{"docs":{},"转":{"docs":{},"(":{"docs":{},"有":{"docs":{},"反":{"docs":{},"转":{"docs":{},"就":{"docs":{},"应":{"docs":{},"该":{"docs":{},"有":{"docs":{},"正":{"docs":{},"转":{"docs":{},"了":{"docs":{},")":{"docs":{},",":{"docs":{},"哪":{"docs":{},"些":{"docs":{},"方":{"docs":{},"面":{"docs":{},"反":{"docs":{},"转":{"docs":{},"了":{"docs":{},"”":{"docs":{},",":{"docs":{},"那":{"docs":{},"我":{"docs":{},"们":{"docs":{},"来":{"docs":{},"深":{"docs":{},"入":{"docs":{},"分":{"docs":{},"析":{"docs":{},"一":{"docs":{},"下":{"docs":{},":":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"适":{"docs":{},"应":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"写":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}},"访":{"docs":{},"问":{"docs":{},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}},"果":{"4":{"0":{"3":{"docs":{},"的":{"docs":{},"类":{"docs":{},"型":{"docs":{},"过":{"docs":{},"多":{"docs":{},",":{"docs":{},"那":{"docs":{},"可":{"docs":{},"能":{"docs":{},"要":{"docs":{},"注":{"docs":{},"意":{"docs":{},"是":{"docs":{},"否":{"docs":{},"系":{"docs":{},"统":{"docs":{},"遇":{"docs":{},"到":{"docs":{},"了":{"docs":{},"瓶":{"docs":{},"颈":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{},"你":{"docs":{},"喜":{"docs":{},"欢":{"docs":{},",":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}},"说":{"docs":{},"机":{"docs":{},"器":{"docs":{},"学":{"docs":{},"习":{"docs":{},",":{"docs":{},"至":{"docs":{},"少":{"docs":{},"现":{"docs":{},"在":{"docs":{},"好":{"docs":{},"像":{"docs":{},"没":{"docs":{},"人":{"docs":{},"用":{"docs":{},"吧":{"docs":{},"。":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}},"不":{"docs":{},"希":{"docs":{},"望":{"docs":{},"你":{"docs":{},"的":{"docs":{},"文":{"docs":{},"章":{"docs":{},"被":{"docs":{},"处":{"docs":{},"理":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"设":{"docs":{},"置":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}},"想":{"docs":{},"修":{"docs":{},"改":{"docs":{},"端":{"docs":{},"口":{"docs":{},"或":{"docs":{},"遇":{"docs":{},"到":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}},"还":{"docs":{},"没":{"docs":{},"有":{"docs":{},"克":{"docs":{},"隆":{"docs":{},"现":{"docs":{},"有":{"docs":{},"仓":{"docs":{},"库":{"docs":{},",":{"docs":{},"并":{"docs":{},"欲":{"docs":{},"将":{"docs":{},"你":{"docs":{},"的":{"docs":{},"仓":{"docs":{},"库":{"docs":{},"连":{"docs":{},"接":{"docs":{},"到":{"docs":{},"某":{"docs":{},"个":{"docs":{},"远":{"docs":{},"程":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"如":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{},"添":{"docs":{},"加":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"找":{"docs":{},"到":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"的":{"docs":{},"安":{"docs":{},"全":{"docs":{},"管":{"docs":{},"理":{"docs":{},"器":{"docs":{},"设":{"docs":{},"置":{"docs":{},"了":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"安":{"docs":{},"全":{"docs":{},"机":{"docs":{},"制":{"docs":{},",":{"docs":{},"调":{"docs":{},"用":{"docs":{},"该":{"docs":{},"方":{"docs":{},"法":{"docs":{},"将":{"docs":{},"抛":{"docs":{},"出":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"不":{"docs":{},"为":{"docs":{},"空":{"docs":{},"则":{"docs":{},"返":{"docs":{},"回":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"实":{"docs":{},"现":{"docs":{},"接":{"docs":{},"口":{"docs":{},"列":{"docs":{},"表":{"docs":{},"的":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"已":{"docs":{},"经":{"docs":{},"存":{"docs":{},"在":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"直":{"docs":{},"接":{"docs":{},"从":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"中":{"docs":{},"拿":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},",":{"docs":{},"则":{"docs":{},"通":{"docs":{},"过":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"生":{"docs":{},"成":{"docs":{},"一":{"docs":{},"个":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"理":{"docs":{},"解":{"docs":{},"了":{"docs":{},"设":{"docs":{},"计":{"docs":{},"原":{"docs":{},"则":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}},"网":{"docs":{},"址":{"docs":{},"是":{"docs":{},"次":{"docs":{},"级":{"docs":{},"目":{"docs":{},"录":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"a":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"就":{"docs":{},"要":{"docs":{},"设":{"docs":{},"置":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"为":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"e":{"docs":{},"x":{"docs":{},"a":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"r":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"要":{"docs":{},"设":{"docs":{},"置":{"docs":{},"为":{"docs":{},"/":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"/":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"是":{"docs":{},"远":{"docs":{},"端":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"上":{"docs":{},"的":{"docs":{},"仓":{"docs":{},"库":{"docs":{},",":{"docs":{},"你":{"docs":{},"的":{"docs":{},"命":{"docs":{},"令":{"docs":{},"会":{"docs":{},"是":{"docs":{},"这":{"docs":{},"个":{"docs":{},"样":{"docs":{},"子":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}},"一":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"包":{"docs":{},"含":{"docs":{},"许":{"docs":{},"可":{"docs":{},"证":{"docs":{},"或":{"docs":{},"版":{"docs":{},"权":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"它":{"docs":{},"应":{"docs":{},"当":{"docs":{},"被":{"docs":{},"放":{"docs":{},"在":{"docs":{},"文":{"docs":{},"件":{"docs":{},"最":{"docs":{},"前":{"docs":{},"面":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"方":{"docs":{},"法":{"docs":{},"重":{"docs":{},"载":{"docs":{},"了":{"docs":{},"超":{"docs":{},"类":{"docs":{},"中":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"并":{"docs":{},"非":{"docs":{},"必":{"docs":{},"需":{"docs":{},"的":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"右":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"语":{"docs":{},"句":{"docs":{},"、":{"docs":{},"函":{"docs":{},"数":{"docs":{},"体":{"docs":{},"或":{"docs":{},"类":{"docs":{},"的":{"docs":{},"终":{"docs":{},"止":{"docs":{},",":{"docs":{},"则":{"docs":{},"右":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"后":{"docs":{},"换":{"docs":{},"行":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"在":{"docs":{},"一":{"docs":{},"条":{"docs":{},"语":{"docs":{},"句":{"docs":{},"后":{"docs":{},"做":{"docs":{},"注":{"docs":{},"释":{"docs":{},",":{"docs":{},"则":{"docs":{},"双":{"docs":{},"斜":{"docs":{},"杠":{"docs":{},"(":{"docs":{},"/":{"docs":{},"/":{"docs":{},")":{"docs":{},"两":{"docs":{},"边":{"docs":{},"都":{"docs":{},"要":{"docs":{},"空":{"docs":{},"格":{"docs":{},"。":{"docs":{},"这":{"docs":{},"里":{"docs":{},"可":{"docs":{},"以":{"docs":{},"允":{"docs":{},"许":{"docs":{},"多":{"docs":{},"个":{"docs":{},"空":{"docs":{},"格":{"docs":{},",":{"docs":{},"但":{"docs":{},"没":{"docs":{},"有":{"docs":{},"必":{"docs":{},"要":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"赋":{"docs":{},"值":{"docs":{},"运":{"docs":{},"算":{"docs":{},"符":{"docs":{},"处":{"docs":{},"断":{"docs":{},"开":{"docs":{},",":{"docs":{},"通":{"docs":{},"常":{"docs":{},"的":{"docs":{},"做":{"docs":{},"法":{"docs":{},"是":{"docs":{},"在":{"docs":{},"该":{"docs":{},"符":{"docs":{},"号":{"docs":{},"后":{"docs":{},"断":{"docs":{},"开":{"docs":{},"(":{"docs":{},"比":{"docs":{},"如":{"docs":{},"=":{"docs":{},",":{"docs":{},"它":{"docs":{},"与":{"docs":{},"前":{"docs":{},"面":{"docs":{},"的":{"docs":{},"内":{"docs":{},"容":{"docs":{},"留":{"docs":{},"在":{"docs":{},"同":{"docs":{},"一":{"docs":{},"行":{"docs":{},")":{"docs":{},"。":{"docs":{},"这":{"docs":{},"条":{"docs":{},"规":{"docs":{},"则":{"docs":{},"也":{"docs":{},"适":{"docs":{},"用":{"docs":{},"于":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"语":{"docs":{},"句":{"docs":{},"中":{"docs":{},"的":{"docs":{},"分":{"docs":{},"号":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"非":{"docs":{},"赋":{"docs":{},"值":{"docs":{},"运":{"docs":{},"算":{"docs":{},"符":{"docs":{},"处":{"docs":{},"断":{"docs":{},"开":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"在":{"docs":{},"该":{"docs":{},"符":{"docs":{},"号":{"docs":{},"前":{"docs":{},"断":{"docs":{},"开":{"docs":{},"(":{"docs":{},"比":{"docs":{},"如":{"docs":{},"+":{"docs":{},",":{"docs":{},"它":{"docs":{},"将":{"docs":{},"位":{"docs":{},"于":{"docs":{},"下":{"docs":{},"一":{"docs":{},"行":{"docs":{},")":{"docs":{},"。":{"docs":{},"注":{"docs":{},"意":{"docs":{},":":{"docs":{},"这":{"docs":{},"一":{"docs":{},"点":{"docs":{},"与":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"其":{"docs":{},"它":{"docs":{},"语":{"docs":{},"言":{"docs":{},"的":{"docs":{},"编":{"docs":{},"程":{"docs":{},"风":{"docs":{},"格":{"docs":{},"不":{"docs":{},"同":{"docs":{},"(":{"docs":{},"如":{"docs":{},"c":{"docs":{},"+":{"docs":{},"+":{"docs":{},"和":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"它":{"docs":{},"确":{"docs":{},"实":{"docs":{},"是":{"docs":{},"不":{"docs":{},"需":{"docs":{},"要":{"docs":{},"在":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"块":{"docs":{},"中":{"docs":{},"做":{"docs":{},"任":{"docs":{},"何":{"docs":{},"响":{"docs":{},"应":{"docs":{},",":{"docs":{},"需":{"docs":{},"要":{"docs":{},"做":{"docs":{},"注":{"docs":{},"释":{"docs":{},"加":{"docs":{},"以":{"docs":{},"说":{"docs":{},"明":{"docs":{},"(":{"docs":{},"如":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"单":{"docs":{},"独":{"docs":{},"的":{"docs":{},"库":{"docs":{},"太":{"docs":{},"大":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"根":{"docs":{},"据":{"docs":{},"业":{"docs":{},"务":{"docs":{},"特":{"docs":{},"性":{"docs":{},",":{"docs":{},"进":{"docs":{},"行":{"docs":{},"再":{"docs":{},"次":{"docs":{},"分":{"docs":{},"库":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"商":{"docs":{},"品":{"docs":{},"分":{"docs":{},"类":{"docs":{},"库":{"docs":{},",":{"docs":{},"产":{"docs":{},"品":{"docs":{},"库":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"上":{"docs":{},"所":{"docs":{},"述":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"流":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"连":{"docs":{},"续":{"docs":{},"的":{"docs":{},"或":{"docs":{},"平":{"docs":{},"行":{"docs":{},"的":{"docs":{},"。":{"docs":{},"在":{"docs":{},"一":{"docs":{},"个":{"docs":{},"单":{"docs":{},"独":{"docs":{},"的":{"docs":{},"线":{"docs":{},"程":{"docs":{},"上":{"docs":{},"进":{"docs":{},"行":{"docs":{},"操":{"docs":{},"作":{"docs":{},",":{"docs":{},"同":{"docs":{},"时":{"docs":{},"在":{"docs":{},"多":{"docs":{},"个":{"docs":{},"线":{"docs":{},"程":{"docs":{},"上":{"docs":{},"执":{"docs":{},"行":{"docs":{},"并":{"docs":{},"行":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"图":{"docs":{},"每":{"docs":{},"个":{"docs":{},"应":{"docs":{},"用":{"docs":{},"单":{"docs":{},"独":{"docs":{},"部":{"docs":{},"署":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}},"此":{"docs":{},"你":{"docs":{},"就":{"docs":{},"能":{"docs":{},"够":{"docs":{},"将":{"docs":{},"你":{"docs":{},"的":{"docs":{},"改":{"docs":{},"动":{"docs":{},"推":{"docs":{},"送":{"docs":{},"到":{"docs":{},"所":{"docs":{},"添":{"docs":{},"加":{"docs":{},"的":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"上":{"docs":{},"去":{"docs":{},"了":{"docs":{},"。":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}},"下":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"相":{"docs":{},"当":{"docs":{},"于":{"docs":{},"告":{"docs":{},"诉":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},",":{"docs":{},"俺":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"能":{"docs":{},"够":{"docs":{},"接":{"docs":{},"受":{"docs":{},"的":{"docs":{},"响":{"docs":{},"应":{"docs":{},"类":{"docs":{},"型":{"docs":{},"仅":{"docs":{},"为":{"docs":{},"纯":{"docs":{},"文":{"docs":{},"本":{"docs":{},"数":{"docs":{},"据":{"docs":{},"啊":{"docs":{},",":{"docs":{},"你":{"docs":{},"丫":{"docs":{},"别":{"docs":{},"发":{"docs":{},"其":{"docs":{},"它":{"docs":{},"什":{"docs":{},"么":{"docs":{},"图":{"docs":{},"片":{"docs":{},"啊":{"docs":{},",":{"docs":{},"视":{"docs":{},"频":{"docs":{},"啊":{"docs":{},"过":{"docs":{},"来":{"docs":{},",":{"docs":{},"那":{"docs":{},"样":{"docs":{},"我":{"docs":{},"会":{"docs":{},"歇":{"docs":{},"菜":{"docs":{},"的":{"docs":{},"~":{"docs":{},"~":{"docs":{},"~":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"图":{"docs":{},":":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}},"以":{"docs":{},"下":{"docs":{},"设":{"docs":{},"置":{"docs":{},",":{"docs":{},"相":{"docs":{},"当":{"docs":{},"于":{"docs":{},"让":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"将":{"docs":{},"对":{"docs":{},"应":{"docs":{},"请":{"docs":{},"求":{"docs":{},"返":{"docs":{},"回":{"docs":{},"的":{"docs":{},"响":{"docs":{},"应":{"docs":{},"内":{"docs":{},"容":{"docs":{},"不":{"docs":{},"要":{"docs":{},"在":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"(":{"docs":{},"当":{"docs":{},"然":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"也":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"通":{"docs":{},"知":{"docs":{},"浏":{"docs":{},"览":{"docs":{},"器":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"的":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"下":{"docs":{},"面":{"docs":{},"再":{"docs":{},"说":{"docs":{},")":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"实":{"docs":{},"战":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}},"用":{"docs":{},"工":{"docs":{},"具":{"docs":{},"/":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"实用工具.html":{"ref":"实用工具.html","tf":11}}}}}}}},"小":{"docs":{},"贴":{"docs":{},"士":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}},"际":{"docs":{},"执":{"docs":{},"行":{"docs":{},"方":{"docs":{},"法":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}},"例":{"docs":{},"的":{"docs":{},"创":{"docs":{},"建":{"docs":{},"是":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"参":{"docs":{},"数":{"docs":{},"或":{"docs":{},"者":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},",":{"docs":{},"在":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}},"现":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}},"开":{"docs":{},"发":{"docs":{},"者":{"docs":{},"指":{"docs":{},"南":{"docs":{"./":{"ref":"./","tf":0.018867924528301886},"开发者指南.html":{"ref":"开发者指南.html","tf":11}}}}}},"始":{"docs":{},"写":{"docs":{},"作":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"吧":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"hexo/writing.html":{"ref":"hexo/writing.html","tf":10}}}}}},"源":{"docs":{},"组":{"docs":{},"件":{"docs":{},"实":{"docs":{},"现":{"docs":{"./":{"ref":"./","tf":0.018867924528301886},"开源组件实现.html":{"ref":"开源组件实现.html","tf":11}}}}}},"软":{"docs":{},"件":{"docs":{},")":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}},"闭":{"docs":{},"原":{"docs":{},"则":{"docs":{},"的":{"docs":{},"关":{"docs":{},"键":{"docs":{},",":{"docs":{},"在":{"docs":{},"于":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"。":{"docs":{},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{},",":{"docs":{},"是":{"docs":{},"开":{"docs":{},"闭":{"docs":{},"原":{"docs":{},"则":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"极":{"docs":{},"好":{"docs":{},"的":{"docs":{},"应":{"docs":{},"用":{"docs":{},"范":{"docs":{},"例":{"docs":{},"。":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"(":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}},"启":{"docs":{},"日":{"docs":{},"志":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"放":{"docs":{},"和":{"docs":{},"封":{"docs":{},"闭":{"docs":{},"层":{"docs":{},"的":{"docs":{},"概":{"docs":{},"念":{"docs":{},"确":{"docs":{},"定":{"docs":{},"了":{"docs":{},"架":{"docs":{},"构":{"docs":{},"层":{"docs":{},"和":{"docs":{},"请":{"docs":{},"求":{"docs":{},"流":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"关":{"docs":{},"系":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"给":{"docs":{},"设":{"docs":{},"计":{"docs":{},"师":{"docs":{},"和":{"docs":{},"开":{"docs":{},"发":{"docs":{},"人":{"docs":{},"员":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"必":{"docs":{},"要":{"docs":{},"的":{"docs":{},"信":{"docs":{},"息":{"docs":{},"理":{"docs":{},"解":{"docs":{},"架":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"微":{"docs":{},"博":{"docs":{},"一":{"docs":{},"键":{"docs":{},"清":{"docs":{},"理":{"docs":{},"工":{"docs":{},"具":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}}},"控":{"docs":{},"制":{"docs":{},"器":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}},"设":{"docs":{},"计":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"mvc/":{"ref":"mvc/","tf":0.043478260869565216},"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":10.00314465408805},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}},"的":{"docs":{},"处":{"docs":{},"理":{"docs":{},"部":{"docs":{},"分":{"docs":{},"放":{"docs":{},"在":{"docs":{},"了":{"docs":{},"核":{"docs":{},"心":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"中":{"docs":{},",":{"docs":{},"代":{"docs":{},"码":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}},"对":{"docs":{},"象":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"操":{"docs":{},"作":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"mvc/":{"ref":"mvc/","tf":0.043478260869565216},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":10.002242152466367},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}},"支":{"docs":{},"持":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}},"集":{"docs":{},"群":{"docs":{},"(":{"docs":{},"读":{"docs":{},"写":{"docs":{},"分":{"docs":{},"离":{"docs":{},",":{"docs":{},"分":{"docs":{},"库":{"docs":{},"分":{"docs":{},"表":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}},"文":{"docs":{},"件":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"有":{"docs":{},"关":{"docs":{},"的":{"docs":{},"相":{"docs":{},"应":{"docs":{},"业":{"docs":{},"务":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"把":{"docs":{},"这":{"docs":{},"些":{"docs":{},"信":{"docs":{},"息":{"docs":{},"传":{"docs":{},"递":{"docs":{},"给":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}},"需":{"docs":{},"要":{"docs":{},"频":{"docs":{},"繁":{"docs":{},"访":{"docs":{},"问":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},",":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"访":{"docs":{},"问":{"docs":{},"压":{"docs":{},"力":{"docs":{},"巨":{"docs":{},"大":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}},"组":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"中":{"docs":{},",":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"内":{"docs":{},"的":{"docs":{},"空":{"docs":{},"格":{"docs":{},"是":{"docs":{},"可":{"docs":{},"选":{"docs":{},"的":{"docs":{},",":{"docs":{},"即":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}},"可":{"docs":{},"以":{"docs":{},"写":{"docs":{},"成":{"docs":{},"块":{"docs":{},"状":{"docs":{},"结":{"docs":{},"构":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},",":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"写":{"docs":{},"法":{"docs":{},"都":{"docs":{},"是":{"docs":{},"o":{"docs":{},"k":{"docs":{},"的":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},"可":{"docs":{},"写":{"docs":{},"成":{"docs":{},"块":{"docs":{},"状":{"docs":{},"结":{"docs":{},"构":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}},"有":{"docs":{},"兴":{"docs":{},"趣":{"docs":{},"分":{"docs":{},"享":{"docs":{},"技":{"docs":{},"术":{"docs":{},"的":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}},"了":{"docs":{},"路":{"docs":{},"由":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"器":{"docs":{},"还":{"docs":{},"不":{"docs":{},"够":{"docs":{},",":{"docs":{},"这":{"docs":{},"么":{"docs":{},"多":{"docs":{},"的":{"docs":{},"路":{"docs":{},"由":{"docs":{},"我":{"docs":{},"们":{"docs":{},"如":{"docs":{},"何":{"docs":{},"管":{"docs":{},"理":{"docs":{},"呢":{"docs":{},"?":{"docs":{},"再":{"docs":{},"来":{"docs":{},"一":{"docs":{},"个":{"docs":{},"路":{"docs":{},"由":{"docs":{},"管":{"docs":{},"理":{"docs":{},"器":{"docs":{},"吧":{"docs":{},",":{"docs":{},"下":{"docs":{},"面":{"docs":{},"就":{"docs":{},"创":{"docs":{},"建":{"docs":{},"路":{"docs":{},"由":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"器":{"docs":{},"和":{"docs":{},"管":{"docs":{},"理":{"docs":{},"器":{"2":{"docs":{},"个":{"docs":{},"类":{"docs":{},":":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"些":{"docs":{},"人":{"docs":{},"认":{"docs":{},"为":{"docs":{},"使":{"docs":{},"用":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}},"响":{"docs":{},"应":{"docs":{},"码":{"docs":{},",":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"应":{"docs":{},"用":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"会":{"docs":{},"自":{"docs":{},"动":{"docs":{},"给":{"docs":{},"生":{"docs":{},"成":{"docs":{},"。":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"的":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"设":{"docs":{},"置":{"docs":{},"状":{"docs":{},"态":{"docs":{},"码":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"时":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"使":{"docs":{},"用":{"docs":{},"一":{"docs":{},"些":{"docs":{},"不":{"docs":{},"在":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"中":{"docs":{},"的":{"docs":{},"模":{"docs":{},"版":{"docs":{},"数":{"docs":{},"据":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"你":{"docs":{},"想":{"docs":{},"复":{"docs":{},"用":{"docs":{},"这":{"docs":{},"些":{"docs":{},"数":{"docs":{},"据":{"docs":{},",":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"我":{"docs":{},"们":{"docs":{},"有":{"docs":{},"不":{"docs":{},"只":{"docs":{},"一":{"docs":{},"种":{"docs":{},"合":{"docs":{},"理":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"将":{"docs":{},"一":{"docs":{},"个":{"docs":{},"英":{"docs":{},"语":{"docs":{},"词":{"docs":{},"组":{"docs":{},"转":{"docs":{},"换":{"docs":{},"成":{"docs":{},"驼":{"docs":{},"峰":{"docs":{},"形":{"docs":{},"式":{"docs":{},",":{"docs":{},"如":{"docs":{},"缩":{"docs":{},"略":{"docs":{},"语":{"docs":{},"或":{"docs":{},"不":{"docs":{},"寻":{"docs":{},"常":{"docs":{},"的":{"docs":{},"结":{"docs":{},"构":{"docs":{},"(":{"docs":{},"例":{"docs":{},"如":{"docs":{},"”":{"docs":{},"i":{"docs":{},"p":{"docs":{},"v":{"6":{"docs":{},"″":{"docs":{},"或":{"docs":{},"”":{"docs":{},"i":{"docs":{},"o":{"docs":{},"s":{"docs":{},"”":{"docs":{},")":{"docs":{},"。":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"指":{"docs":{},"定":{"docs":{},"了":{"docs":{},"以":{"docs":{},"下":{"docs":{},"的":{"docs":{},"转":{"docs":{},"换":{"docs":{},"方":{"docs":{},"案":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"/":{"docs":{},"域":{"docs":{},"名":{"docs":{},"/":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"证":{"docs":{},"书":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"服务器相关.html":{"ref":"服务器相关.html","tf":11}}}}}}}}}}},"后":{"docs":{},"台":{"docs":{},"会":{"docs":{},"向":{"docs":{},"银":{"docs":{},"行":{"docs":{},"发":{"docs":{},"送":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{},"报":{"docs":{},"文":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"同":{"docs":{},"步":{"docs":{},"耗":{"docs":{},"费":{"docs":{},"大":{"docs":{},"量":{"docs":{},"内":{"docs":{},"存":{"docs":{},"和":{"docs":{},"网":{"docs":{},"络":{"docs":{},"带":{"docs":{},"宽":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}},"预":{"docs":{},"估":{"docs":{},":":{"docs":{},"(":{"docs":{},"以":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"举":{"docs":{},"例":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}},"端":{"docs":{},"可":{"docs":{},"以":{"docs":{},"设":{"docs":{},"置":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"的":{"docs":{},"c":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{},"e":{"docs":{},",":{"docs":{},"其":{"docs":{},"原":{"docs":{},"理":{"docs":{},"就":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"这":{"docs":{},"个":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"是":{"docs":{},"怎":{"docs":{},"么":{"docs":{},"知":{"docs":{},"道":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"的":{"docs":{},"多":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"是":{"docs":{},"属":{"docs":{},"于":{"docs":{},"一":{"docs":{},"个":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"的":{"docs":{},",":{"docs":{},"原":{"docs":{},"来":{"docs":{},"就":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"的":{"docs":{},"c":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{},"e":{"docs":{},"属":{"docs":{},"性":{"docs":{},"的":{"docs":{},"j":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"d":{"docs":{},"的":{"docs":{},"值":{"docs":{},"关":{"docs":{},"联":{"docs":{},"起":{"docs":{},"来":{"docs":{},"的":{"docs":{},"!":{"docs":{},"(":{"docs":{},"当":{"docs":{},"然":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"重":{"docs":{},"写":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"将":{"docs":{},"会":{"docs":{},"话":{"docs":{},"i":{"docs":{},"d":{"docs":{},"附":{"docs":{},"带":{"docs":{},"在":{"docs":{},"每":{"docs":{},"个":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"的":{"docs":{},"后":{"docs":{},"后":{"docs":{},"面":{"docs":{},"哦":{"docs":{},")":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"化":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}},"用":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}},"户":{"docs":{},"指":{"docs":{},"南":{"docs":{"./":{"ref":"./","tf":0.018867924528301886}}}},"列":{"docs":{},"表":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}},"控":{"docs":{},"制":{"docs":{},"器":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}},"界":{"docs":{},"面":{"docs":{},"只":{"docs":{},"管":{"docs":{},"接":{"docs":{},"受":{"docs":{},"请":{"docs":{},"求":{"docs":{},"以":{"docs":{},"及":{"docs":{},"显":{"docs":{},"示":{"docs":{},"客":{"docs":{},"户":{"docs":{},"信":{"docs":{},"息":{"docs":{},"。":{"docs":{},"它":{"docs":{},"不":{"docs":{},"管":{"docs":{},"怎":{"docs":{},"么":{"docs":{},"得":{"docs":{},"到":{"docs":{},"数":{"docs":{},"据":{"docs":{},"的":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"说":{"docs":{},"得":{"docs":{},"到":{"docs":{},"这":{"docs":{},"些":{"docs":{},"数":{"docs":{},"据":{"docs":{},"要":{"docs":{},"用":{"docs":{},"到":{"docs":{},"哪":{"docs":{},"些":{"docs":{},"数":{"docs":{},"据":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"下":{"docs":{},"单":{"docs":{},"后":{"docs":{},",":{"docs":{},"写":{"docs":{},"入":{"docs":{},"消":{"docs":{},"息":{"docs":{},"队":{"docs":{},"列":{"docs":{},",":{"docs":{},"后":{"docs":{},"直":{"docs":{},"接":{"docs":{},"返":{"docs":{},"回":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}},"再":{"docs":{},"次":{"docs":{},"登":{"docs":{},"录":{"docs":{},"时":{"docs":{},",":{"docs":{},"获":{"docs":{},"取":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{},"是":{"docs":{},"否":{"docs":{},"有":{"docs":{},"会":{"docs":{},"话":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"没":{"docs":{},"有":{"docs":{},"则":{"docs":{},"调":{"docs":{},"到":{"docs":{},"登":{"docs":{},"录":{"docs":{},"页":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"线":{"docs":{},"购":{"docs":{},"买":{"docs":{},"商":{"docs":{},"品":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"收":{"docs":{},"到":{"docs":{},"商":{"docs":{},"品":{"docs":{},"后":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"给":{"docs":{},"商":{"docs":{},"品":{"docs":{},"打":{"docs":{},"分":{"docs":{},",":{"docs":{},"评":{"docs":{},"价":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}},"第":{"docs":{},"一":{"docs":{},"次":{"docs":{},"登":{"docs":{},"录":{"docs":{},"时":{"docs":{},",":{"docs":{},"将":{"docs":{},"会":{"docs":{},"话":{"docs":{},"信":{"docs":{},"息":{"docs":{},"(":{"docs":{},"用":{"docs":{},"户":{"docs":{},"i":{"docs":{},"d":{"docs":{},"和":{"docs":{},"用":{"docs":{},"户":{"docs":{},"信":{"docs":{},"息":{"docs":{},")":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"以":{"docs":{},"用":{"docs":{},"户":{"docs":{},"i":{"docs":{},"d":{"docs":{},"为":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},",":{"docs":{},"写":{"docs":{},"入":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"购":{"docs":{},"买":{"docs":{},"时":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"线":{"docs":{},"与":{"docs":{},"客":{"docs":{},"服":{"docs":{},"沟":{"docs":{},"通":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}},"于":{"docs":{},"封":{"docs":{},"装":{"docs":{},"一":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"的":{"docs":{},"最":{"docs":{},"小":{"docs":{},"单":{"docs":{},"元":{"docs":{},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}},"枚":{"docs":{},"举":{"docs":{},"写":{"docs":{},"单":{"docs":{},"例":{"docs":{},"实":{"docs":{},"在":{"docs":{},"太":{"docs":{},"简":{"docs":{},"单":{"docs":{},"了":{"docs":{},"!":{"docs":{},"这":{"docs":{},"也":{"docs":{},"是":{"docs":{},"它":{"docs":{},"最":{"docs":{},"大":{"docs":{},"的":{"docs":{},"优":{"docs":{},"点":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"这":{"docs":{},"段":{"docs":{},"代":{"docs":{},"码":{"docs":{},"就":{"docs":{},"是":{"docs":{},"声":{"docs":{},"明":{"docs":{},"枚":{"docs":{},"举":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"通":{"docs":{},"常":{"docs":{},"做":{"docs":{},"法":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"j":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"来":{"docs":{},"封":{"docs":{},"装":{"docs":{},"真":{"docs":{},"是":{"docs":{},"主":{"docs":{},"题":{"docs":{},"类":{"docs":{},"的":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}},"小":{"docs":{},"括":{"docs":{},"号":{"docs":{},"来":{"docs":{},"限":{"docs":{},"定":{"docs":{},"组":{"docs":{},":":{"docs":{},"推":{"docs":{},"荐":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}},"法":{"docs":{},"可":{"docs":{},"以":{"docs":{},"查":{"docs":{},"看":{"docs":{},"它":{"docs":{},"的":{"docs":{},"说":{"docs":{},"明":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}},":":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}},"这":{"docs":{},"个":{"docs":{},"指":{"docs":{},"标":{"docs":{},"来":{"docs":{},"衡":{"docs":{},"量":{"docs":{},"性":{"docs":{},"能":{"docs":{},"。":{"docs":{},"似":{"docs":{},"乎":{"docs":{},"比":{"docs":{},"a":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"的":{"docs":{},"a":{"docs":{},"b":{"docs":{},"准":{"docs":{},"确":{"docs":{},"率":{"docs":{},"要":{"docs":{},"高":{"docs":{},"一":{"docs":{},"些":{"docs":{},",":{"docs":{},"也":{"docs":{},"更":{"docs":{},"有":{"docs":{},"说":{"docs":{},"服":{"docs":{},"力":{"docs":{},"一":{"docs":{},"些":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"架":{"docs":{},"构":{"docs":{},"案":{"docs":{},"例":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":10}}}}}},"案":{"docs":{},"例":{"docs":{},",":{"docs":{},"一":{"docs":{},"共":{"docs":{},"有":{"docs":{},"三":{"docs":{},"篇":{"docs":{},"本":{"docs":{},"篇":{"docs":{},"主":{"docs":{},"要":{"docs":{},"说":{"docs":{},"明":{"docs":{},"网":{"docs":{},"站":{"docs":{},"的":{"docs":{},"需":{"docs":{},"求":{"docs":{},",":{"docs":{},"网":{"docs":{},"站":{"docs":{},"初":{"docs":{},"始":{"docs":{},"架":{"docs":{},"构":{"docs":{},",":{"docs":{},"系":{"docs":{},"统":{"docs":{},"容":{"docs":{},"量":{"docs":{},"估":{"docs":{},"算":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"需":{"docs":{},"求":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"案":{"docs":{},"例":{"docs":{},"的":{"docs":{},"原":{"docs":{},"因":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}},"目":{"docs":{},"录":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"mvc/":{"ref":"mvc/","tf":0.043478260869565216},"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514},"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036},"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}},"设":{"docs":{},"置":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"中":{"docs":{},"的":{"docs":{},"y":{"docs":{},"a":{"docs":{},"m":{"docs":{},"l":{"docs":{},"或":{"docs":{},"者":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"从":{"docs":{},"而":{"docs":{},"用":{"docs":{},"到":{"docs":{},"你":{"docs":{},"的":{"docs":{},"网":{"docs":{},"站":{"docs":{},"中":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}}}},"标":{"docs":{},"对":{"docs":{},"象":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"前":{"docs":{},"使":{"docs":{},"用":{"docs":{},"较":{"docs":{},"多":{"docs":{},"的":{"docs":{},"m":{"docs":{},"q":{"docs":{},"有":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}},"有":{"docs":{},"成":{"docs":{},"熟":{"docs":{},"的":{"docs":{},"进":{"docs":{},"销":{"docs":{},"存":{"docs":{},"系":{"docs":{},"统":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}},";":{"docs":{},"需":{"docs":{},"要":{"docs":{},"与":{"docs":{},"网":{"docs":{},"站":{"docs":{},"对":{"docs":{},"接":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}},"秋":{"docs":{},"玉":{"docs":{},"米":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}},"程":{"docs":{},"序":{"docs":{},"员":{"docs":{},"眼":{"docs":{},"中":{"docs":{},"的":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}},"非":{"docs":{},"常":{"docs":{},"小":{"docs":{},",":{"docs":{},"解":{"docs":{},"压":{"docs":{},"后":{"docs":{},"也":{"docs":{},"不":{"docs":{},"到":{"1":{"0":{"0":{"docs":{},"k":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}},"简":{"docs":{},"明":{"docs":{},"指":{"docs":{},"南":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"git/guide.html":{"ref":"git/guide.html","tf":5.004854368932039}}}}},"单":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"我":{"docs":{},"们":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"反":{"docs":{},"射":{"docs":{},"实":{"docs":{},"现":{"docs":{},"动":{"docs":{},"态":{"docs":{},"调":{"docs":{},"用":{"docs":{},"方":{"docs":{},"法":{"docs":{},"执":{"docs":{},"行":{"docs":{},",":{"docs":{},"当":{"docs":{},"然":{"docs":{},"这":{"docs":{},"对":{"docs":{},"性":{"docs":{},"能":{"docs":{},"并":{"docs":{},"不":{"docs":{},"友":{"docs":{},"好":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"用":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"或":{"docs":{},"者":{"docs":{},"更":{"docs":{},"高":{"docs":{},"明":{"docs":{},"的":{"docs":{},"技":{"docs":{},"术":{"docs":{},"去":{"docs":{},"做":{"docs":{},"。":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"例":{"docs":{},"子":{"docs":{},"说":{"docs":{},"完":{"docs":{},"了":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"开":{"docs":{},"始":{"docs":{},"设":{"docs":{},"计":{"docs":{},"一":{"docs":{},"个":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"容":{"docs":{},"器":{"docs":{},",":{"docs":{},"做":{"docs":{},"出":{"docs":{},"这":{"docs":{},"个":{"docs":{},"东":{"docs":{},"东":{"docs":{},"后":{"docs":{},"再":{"docs":{},"来":{"docs":{},"看":{"docs":{},"那":{"docs":{},"些":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"的":{"docs":{},"原":{"docs":{},"理":{"docs":{},"。":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"写":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.014336917562724014}}},"介":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}},"经":{"docs":{},"典":{"docs":{},"文":{"docs":{},"章":{"docs":{"./":{"ref":"./","tf":0.018867924528301886},"经典文章.html":{"ref":"经典文章.html","tf":11}}}}},"过":{"docs":{},"层":{"docs":{},"层":{"docs":{},"调":{"docs":{},"用":{"docs":{},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"终":{"docs":{},"于":{"docs":{},"生":{"docs":{},"成":{"docs":{},"了":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}},"联":{"docs":{},"系":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}},"规":{"docs":{},"范":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}},"视":{"docs":{},"图":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}},"设":{"docs":{},"计":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"mvc/":{"ref":"mvc/","tf":0.043478260869565216},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":10.005917159763314},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}},"名":{"docs":{},"称":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}},"渲":{"docs":{},"染":{"docs":{},"接":{"docs":{},"口":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}},"的":{"docs":{},"位":{"docs":{},"置":{"docs":{},"和":{"docs":{},"后":{"docs":{},"缀":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"或":{"docs":{},"者":{"docs":{},"硬":{"docs":{},"编":{"docs":{},"码":{"docs":{},"中":{"docs":{},"进":{"docs":{},"行":{"docs":{},",":{"docs":{},"当":{"docs":{},"然":{"docs":{},"这":{"docs":{},"看":{"docs":{},"你":{"docs":{},"的":{"docs":{},"习":{"docs":{},"惯":{"docs":{},",":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"设":{"docs":{},"计":{"docs":{},"一":{"docs":{},"个":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":10.001416430594901},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}},"模":{"docs":{},"式":{"docs":{},"系":{"docs":{},"列":{"docs":{"./":{"ref":"./","tf":0.018867924528301886},"设计模式系列.html":{"ref":"设计模式系列.html","tf":11}}}}}},"思":{"docs":{},"路":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}},"的":{"docs":{},"。":{"docs":{},"m":{"docs":{},"v":{"docs":{},"c":{"docs":{},"是":{"docs":{},"一":{"docs":{},"种":{"docs":{},"将":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"层":{"docs":{},"和":{"docs":{},"表":{"docs":{},"现":{"docs":{},"层":{"docs":{},"进":{"docs":{},"行":{"docs":{},"分":{"docs":{},"离":{"docs":{},"的":{"docs":{},"结":{"docs":{},"构":{"docs":{},"方":{"docs":{},"式":{"docs":{},"。":{"docs":{},"在":{"docs":{},"实":{"docs":{},"践":{"docs":{},"中":{"docs":{},",":{"docs":{},"由":{"docs":{},"于":{"docs":{},"表":{"docs":{},"现":{"docs":{},"层":{"docs":{},"从":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"v":{"docs":{},"c":{"docs":{},"框":{"docs":{},"架":{"docs":{},"部":{"docs":{},"分":{"docs":{},"已":{"docs":{},"经":{"docs":{},"完":{"docs":{},"成":{"docs":{},",":{"docs":{},"下":{"docs":{},"一":{"docs":{},"节":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"增":{"docs":{},"删":{"docs":{},"改":{"docs":{},"查":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}}}}}}}}}}}}}}}},"置":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"以":{"docs":{},"及":{"docs":{},"默":{"docs":{},"认":{"docs":{},"值":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}},"启":{"docs":{},"用":{"docs":{},",":{"docs":{},"在":{"docs":{},"你":{"docs":{},"创":{"docs":{},"建":{"docs":{},"文":{"docs":{},"章":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"会":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"同":{"docs":{},"名":{"docs":{},"目":{"docs":{},"录":{"docs":{},",":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"改":{"docs":{},"变":{"docs":{},"默":{"docs":{},"认":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}},"路":{"docs":{},"由":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}},"设":{"docs":{},"计":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"mvc/":{"ref":"mvc/","tf":0.043478260869565216},"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514},"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":10.002762430939226},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}},"匹":{"docs":{},"配":{"docs":{},"器":{"docs":{},"使":{"docs":{},"用":{"docs":{},"了":{"docs":{},"正":{"docs":{},"则":{"docs":{},"去":{"docs":{},"遍":{"docs":{},"历":{"docs":{},"路":{"docs":{},"由":{"docs":{},"列":{"docs":{},"表":{"docs":{},",":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"合":{"docs":{},"适":{"docs":{},"的":{"docs":{},"路":{"docs":{},"由":{"docs":{},"。":{"docs":{},"当":{"docs":{},"然":{"docs":{},"我":{"docs":{},"不":{"docs":{},"认":{"docs":{},"为":{"docs":{},"这":{"docs":{},"是":{"docs":{},"最":{"docs":{},"好":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"用":{"docs":{},"于":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"路":{"docs":{},"由":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}},"所":{"docs":{},"在":{"docs":{},"的":{"docs":{},"控":{"docs":{},"制":{"docs":{},"器":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}},"的":{"docs":{},"表":{"docs":{},"现":{"docs":{},"形":{"docs":{},"式":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}},"管":{"docs":{},"理":{"docs":{},"器":{"docs":{},",":{"docs":{},"存":{"docs":{},"放":{"docs":{},"所":{"docs":{},"有":{"docs":{},"路":{"docs":{},"由":{"docs":{},"的":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}},"径":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"软":{"docs":{},"件":{"docs":{},"架":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":10.006993006993007}}}}}}}},"运":{"docs":{},"维":{"docs":{},"相":{"docs":{},"关":{"docs":{"./":{"ref":"./","tf":0.018867924528301886},"运维相关.html":{"ref":"运维相关.html","tf":11}}}}},"行":{"docs":{},"方":{"docs":{},"法":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}},"以":{"docs":{},"上":{"docs":{},"代":{"docs":{},"码":{"docs":{},",":{"docs":{},"在":{"docs":{},"控":{"docs":{},"制":{"docs":{},"台":{"docs":{},"上":{"docs":{},"将":{"docs":{},"打":{"docs":{},"出":{"docs":{},"以":{"docs":{},"下":{"docs":{},"信":{"docs":{},"息":{"docs":{},":":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}},"该":{"docs":{},"类":{"docs":{},",":{"docs":{},"打":{"docs":{},"印":{"docs":{},"出":{"docs":{},"以":{"docs":{},"下":{"docs":{},"信":{"docs":{},"息":{"docs":{},":":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}},"版":{"docs":{},"本":{"docs":{},"是":{"docs":{},":":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}},"测":{"docs":{},"试":{"docs":{},"时":{"docs":{},"间":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"这":{"docs":{},"里":{"docs":{},"记":{"docs":{},"录":{"docs":{},"了":{"docs":{},"一":{"docs":{},"些":{"docs":{},"技":{"docs":{},"术":{"docs":{},"摘":{"docs":{},"要":{"docs":{},",":{"docs":{},"部":{"docs":{},"分":{"docs":{},"文":{"docs":{},"章":{"docs":{},"来":{"docs":{},"自":{"docs":{},"网":{"docs":{},"络":{"docs":{},",":{"docs":{},"本":{"docs":{},"项":{"docs":{},"目":{"docs":{},"的":{"docs":{},"目":{"docs":{},"的":{"docs":{},"力":{"docs":{},"求":{"docs":{},"分":{"docs":{},"享":{"docs":{},"精":{"docs":{},"品":{"docs":{},"技":{"docs":{},"术":{"docs":{},"干":{"docs":{},"货":{"docs":{},",":{"docs":{},"以":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"为":{"docs":{},"主":{"docs":{},"。":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"很":{"docs":{},"简":{"docs":{},"单":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"管":{"docs":{},"理":{"docs":{},"器":{"docs":{},"里":{"docs":{},"用":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"存":{"docs":{},"储":{"docs":{},"所":{"docs":{},"有":{"docs":{},"路":{"docs":{},"由":{"docs":{},",":{"docs":{},"公":{"docs":{},"有":{"docs":{},"的":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"标":{"docs":{},"签":{"docs":{},"插":{"docs":{},"件":{"docs":{},"不":{"docs":{},"是":{"docs":{},"文":{"docs":{},"章":{"docs":{},"中":{"docs":{},"的":{"docs":{},"标":{"docs":{},"签":{"docs":{},",":{"docs":{},"它":{"docs":{},"可":{"docs":{},"以":{"docs":{},"帮":{"docs":{},"助":{"docs":{},"你":{"docs":{},"在":{"docs":{},"文":{"docs":{},"章":{"docs":{},"中":{"docs":{},"插":{"docs":{},"入":{"docs":{},"特":{"docs":{},"定":{"docs":{},"的":{"docs":{},"一":{"docs":{},"些":{"docs":{},"内":{"docs":{},"容":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"执":{"docs":{},"行":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"是":{"docs":{},"酱":{"docs":{},"紫":{"docs":{},"的":{"docs":{},":":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}},"将":{"docs":{},"所":{"docs":{},"有":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"的":{"docs":{},"名":{"docs":{},"称":{"docs":{},"存":{"docs":{},"储":{"docs":{},"在":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}},"k":{"docs":{},"表":{"docs":{},"示":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},",":{"docs":{},"p":{"docs":{},"表":{"docs":{},"示":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}},"就":{"docs":{},"不":{"docs":{},"在":{"docs":{},"发":{"docs":{},"挥":{"docs":{},"了":{"docs":{},"。":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}},"我":{"docs":{},"下":{"docs":{},"载":{"docs":{},"的":{"docs":{},"是":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}},",":{"docs":{},"你":{"docs":{},"要":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}},"时":{"docs":{},"候":{"docs":{},"需":{"docs":{},"要":{"docs":{},"设":{"docs":{},"计":{"docs":{},"一":{"docs":{},"个":{"docs":{},"路":{"docs":{},"由":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"器":{"docs":{},"去":{"docs":{},"查":{"docs":{},"找":{"docs":{},"路":{"docs":{},"由":{"docs":{},"处":{"docs":{},"理":{"docs":{},"我":{"docs":{},"们":{"docs":{},"配":{"docs":{},"置":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}}},"就":{"docs":{},"需":{"docs":{},"要":{"docs":{},"你":{"docs":{},"修":{"docs":{},"改":{"docs":{},"这":{"docs":{},"些":{"docs":{},"文":{"docs":{},"件":{"docs":{},"来":{"docs":{},"手":{"docs":{},"动":{"docs":{},"合":{"docs":{},"并":{"docs":{},"这":{"docs":{},"些":{"docs":{},"冲":{"docs":{},"突":{"docs":{},"(":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{},"s":{"docs":{},")":{"docs":{},"。":{"docs":{},"改":{"docs":{},"完":{"docs":{},"之":{"docs":{},"后":{"docs":{},",":{"docs":{},"你":{"docs":{},"需":{"docs":{},"要":{"docs":{},"执":{"docs":{},"行":{"docs":{},"如":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{},"以":{"docs":{},"将":{"docs":{},"它":{"docs":{},"们":{"docs":{},"标":{"docs":{},"记":{"docs":{},"为":{"docs":{},"合":{"docs":{},"并":{"docs":{},"成":{"docs":{},"功":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"样":{"docs":{},"在":{"docs":{},"系":{"docs":{},"统":{"docs":{},"中":{"docs":{},"永":{"docs":{},"远":{"docs":{},"保":{"docs":{},"持":{"docs":{},"一":{"docs":{},"个":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{},"实":{"docs":{},"例":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"用":{"docs":{},"它":{"docs":{},"来":{"docs":{},"操":{"docs":{},"作":{"docs":{},"所":{"docs":{},"有":{"docs":{},"配":{"docs":{},"置":{"docs":{},"即":{"docs":{},"可":{"docs":{},"。":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"m":{"docs":{},"v":{"docs":{},"c":{"docs":{},"后":{"docs":{},"端":{"docs":{},"已":{"docs":{},"经":{"docs":{},"形":{"docs":{},"成":{"docs":{},"了":{"docs":{},"!":{"docs":{},"接":{"docs":{},"下":{"docs":{},"来":{"docs":{},"我":{"docs":{},"们":{"docs":{},"要":{"docs":{},"将":{"docs":{},"结":{"docs":{},"果":{"docs":{},"展":{"docs":{},"现":{"docs":{},"在":{"docs":{},"j":{"docs":{},"s":{"docs":{},"p":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},",":{"docs":{},"要":{"docs":{},"做":{"docs":{},"视":{"docs":{},"图":{"docs":{},"的":{"docs":{},"渲":{"docs":{},"染":{"docs":{},"设":{"docs":{},"计":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"就":{"docs":{},"能":{"docs":{},"使":{"docs":{},"用":{"docs":{},"注":{"docs":{},"解":{"docs":{},"驱":{"docs":{},"动":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"注":{"docs":{},"入":{"docs":{},"了":{"docs":{},",":{"docs":{},"下":{"docs":{},"面":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"使":{"docs":{},"用":{"docs":{},"场":{"docs":{},"景":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}}}}}}}},"可":{"docs":{},"以":{"docs":{},"运":{"docs":{},"行":{"docs":{},"一":{"docs":{},"个":{"docs":{},"最":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"博":{"docs":{},"客":{"docs":{},"程":{"docs":{},"序":{"docs":{},"了":{"docs":{},"~":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}}}},"安":{"docs":{},"装":{"docs":{},"成":{"docs":{},"功":{"docs":{},"了":{"docs":{},"!":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}},"我":{"docs":{},"们":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"利":{"docs":{},"用":{"docs":{},"代":{"docs":{},"理":{"docs":{},"模":{"docs":{},"式":{"docs":{},"来":{"docs":{},"重":{"docs":{},"新":{"docs":{},"代":{"docs":{},"理":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}},"个":{"docs":{},"项":{"docs":{},"目":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"真":{"docs":{},"的":{"docs":{},"很":{"docs":{},"简":{"docs":{},"单":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"中":{"docs":{},",":{"docs":{},"将":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"存":{"docs":{},"储":{"docs":{},"在":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}},"例":{"docs":{},"子":{"docs":{},"演":{"docs":{},"示":{"docs":{},"了":{"docs":{},"如":{"docs":{},"何":{"docs":{},"利":{"docs":{},"用":{"docs":{},"函":{"docs":{},"数":{"docs":{},"判":{"docs":{},"断":{"docs":{},"或":{"docs":{},"获":{"docs":{},"取":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"中":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"就":{"docs":{},"是":{"docs":{},"放":{"docs":{},"文":{"docs":{},"章":{"docs":{},"的":{"docs":{},"地":{"docs":{},"方":{"docs":{},"了":{"docs":{},",":{"docs":{},"除":{"docs":{},"了":{"docs":{},"文":{"docs":{},"章":{"docs":{},"还":{"docs":{},"有":{"docs":{},"一":{"docs":{},"些":{"docs":{},"主":{"docs":{},"要":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"文":{"docs":{},"章":{"docs":{},"里":{"docs":{},"的":{"docs":{},"图":{"docs":{},"片":{"docs":{},",":{"docs":{},"文":{"docs":{},"件":{"docs":{},"等":{"docs":{},"等":{"docs":{},"东":{"docs":{},"西":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"最":{"docs":{},"好":{"docs":{},"定":{"docs":{},"期":{"docs":{},"做":{"docs":{},"一":{"docs":{},"个":{"docs":{},"备":{"docs":{},"份":{"docs":{},",":{"docs":{},"丢":{"docs":{},"了":{"docs":{},"它":{"docs":{},",":{"docs":{},"整":{"docs":{},"个":{"docs":{},"站":{"docs":{},"点":{"docs":{},"就":{"docs":{},"废":{"docs":{},"了":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"命":{"docs":{},"令":{"docs":{},"类":{"docs":{},"似":{"docs":{},"于":{"docs":{},"你":{"docs":{},"使":{"docs":{},"用":{"docs":{},"了":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},"程":{"docs":{},"序":{"docs":{},"更":{"docs":{},"小":{"docs":{},",":{"docs":{},"解":{"docs":{},"压":{"docs":{},"后":{"docs":{},"不":{"docs":{},"到":{"5":{"0":{"docs":{},"k":{"docs":{},",":{"docs":{},"呵":{"docs":{},"呵":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}},"docs":{}},"docs":{}}}}}}}}}}},"表":{"docs":{},"示":{"docs":{},"同":{"docs":{},"时":{"docs":{},"处":{"docs":{},"理":{"1":{"0":{"0":{"0":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"并":{"docs":{},"运":{"docs":{},"行":{"1":{"3":{"0":{"docs":{},"次":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},".":{"docs":{},"p":{"docs":{},"h":{"docs":{},"p":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}},"选":{"docs":{},"项":{"docs":{},",":{"docs":{},"即":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"每":{"docs":{},"秒":{"docs":{},"能":{"docs":{},"够":{"docs":{},"响":{"docs":{},"应":{"docs":{},"的":{"docs":{},"查":{"docs":{},"询":{"docs":{},"次":{"docs":{},"数":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}},"一":{"docs":{},"小":{"docs":{},"节":{"docs":{},"是":{"docs":{},"对":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"操":{"docs":{},"作":{"docs":{},"做":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"封":{"docs":{},"装":{"docs":{},",":{"docs":{},"不":{"docs":{},"涉":{"docs":{},"及":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"的":{"docs":{},"事":{"docs":{},"务":{"docs":{},"操":{"docs":{},"作":{"docs":{},"等":{"docs":{},"。":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"就":{"docs":{},"是":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},",":{"docs":{},"将":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"创":{"docs":{},"建":{"docs":{},"和":{"docs":{},"获":{"docs":{},"取":{"docs":{},"提":{"docs":{},"取":{"docs":{},"到":{"docs":{},"外":{"docs":{},"部":{"docs":{},"。":{"docs":{},"由":{"docs":{},"外":{"docs":{},"部":{"docs":{},"容":{"docs":{},"器":{"docs":{},"提":{"docs":{},"供":{"docs":{},"需":{"docs":{},"要":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"会":{"docs":{},"让":{"docs":{},"你":{"docs":{},"做":{"docs":{},"许":{"docs":{},"多":{"docs":{},"的":{"docs":{},"无":{"docs":{},"用":{"docs":{},"功":{"docs":{},",":{"docs":{},"增":{"docs":{},"加":{"docs":{},"了":{"docs":{},"r":{"docs":{},"e":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},"并":{"docs":{},"且":{"docs":{},"可":{"docs":{},"能":{"docs":{},"导":{"docs":{},"致":{"docs":{},"更":{"docs":{},"多":{"docs":{},"的":{"docs":{},"合":{"docs":{},"并":{"docs":{},"冲":{"docs":{},"突":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"只":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},",":{"docs":{},"剑":{"docs":{},"圣":{"docs":{},"打":{"docs":{},"野":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},"想":{"docs":{},"要":{"docs":{},"买":{"5":{"docs":{},"毛":{"docs":{},"钱":{"docs":{},"的":{"docs":{},"三":{"docs":{},"杀":{"docs":{},"特":{"docs":{},"效":{"docs":{},",":{"docs":{},"嗯":{"docs":{},"。":{"docs":{},"。":{"docs":{},"虽":{"docs":{},"然":{"docs":{},"不":{"docs":{},"符":{"docs":{},"合":{"docs":{},"逻":{"docs":{},"辑":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}},"小":{"docs":{},"片":{"docs":{},"段":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"名":{"docs":{},"词":{"docs":{},"短":{"docs":{},"语":{"docs":{},"或":{"docs":{},"动":{"docs":{},"词":{"docs":{},"短":{"docs":{},"语":{"docs":{},",":{"docs":{},"但":{"docs":{},"不":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"完":{"docs":{},"整":{"docs":{},"的":{"docs":{},"句":{"docs":{},"子":{"docs":{},"。":{"docs":{},"它":{"docs":{},"不":{"docs":{},"会":{"docs":{},"以":{"docs":{},"a":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"说":{"docs":{},"明":{"docs":{},"我":{"docs":{},"们":{"docs":{},"完":{"docs":{},"全":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"编":{"docs":{},"程":{"docs":{},"方":{"docs":{},"式":{"docs":{},"调":{"docs":{},"用":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"的":{"docs":{},"各":{"docs":{},"项":{"docs":{},"功":{"docs":{},"能":{"docs":{},",":{"docs":{},"这":{"docs":{},"和":{"docs":{},"直":{"docs":{},"接":{"docs":{},"通":{"docs":{},"过":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"和":{"docs":{},"方":{"docs":{},"法":{"docs":{},"调":{"docs":{},"用":{"docs":{},"类":{"docs":{},"功":{"docs":{},"能":{"docs":{},"的":{"docs":{},"效":{"docs":{},"果":{"docs":{},"是":{"docs":{},"一":{"docs":{},"致":{"docs":{},"的":{"docs":{},",":{"docs":{},"只":{"docs":{},"不":{"docs":{},"过":{"docs":{},"前":{"docs":{},"者":{"docs":{},"是":{"docs":{},"间":{"docs":{},"接":{"docs":{},"调":{"docs":{},"用":{"docs":{},",":{"docs":{},"后":{"docs":{},"者":{"docs":{},"是":{"docs":{},"直":{"docs":{},"接":{"docs":{},"调":{"docs":{},"用":{"docs":{},"罢":{"docs":{},"了":{"docs":{},"。":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"三":{"docs":{},"个":{"docs":{},"类":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"之":{"docs":{},"间":{"docs":{},"存":{"docs":{},"在":{"docs":{},"父":{"docs":{},"子":{"docs":{},"层":{"docs":{},"级":{"docs":{},"关":{"docs":{},"系":{"docs":{},",":{"docs":{},"即":{"docs":{},"根":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"是":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"父":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},",":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"是":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"父":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"。":{"docs":{},"默":{"docs":{},"认":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},",":{"docs":{},"使":{"docs":{},"用":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"装":{"docs":{},"载":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"类":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"可":{"docs":{},"以":{"docs":{},"做":{"docs":{},"一":{"docs":{},"个":{"docs":{},"实":{"docs":{},"验":{"docs":{},":":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"段":{"docs":{},"代":{"docs":{},"码":{"docs":{},"看":{"docs":{},"起":{"docs":{},"来":{"docs":{},"很":{"docs":{},"完":{"docs":{},"美":{"docs":{},",":{"docs":{},"很":{"docs":{},"可":{"docs":{},"惜":{"docs":{},",":{"docs":{},"它":{"docs":{},"是":{"docs":{},"有":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{},"主":{"docs":{},"要":{"docs":{},"在":{"docs":{},"于":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"简":{"docs":{},"单":{"docs":{},"明":{"docs":{},"了":{"docs":{},",":{"docs":{},"而":{"docs":{},"且":{"docs":{},"使":{"docs":{},"用":{"docs":{},"了":{"docs":{},"懒":{"docs":{},"加":{"docs":{},"载":{"docs":{},"模":{"docs":{},"式":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"却":{"docs":{},"存":{"docs":{},"在":{"docs":{},"致":{"docs":{},"命":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{},"当":{"docs":{},"有":{"docs":{},"多":{"docs":{},"个":{"docs":{},"线":{"docs":{},"程":{"docs":{},"并":{"docs":{},"行":{"docs":{},"调":{"docs":{},"用":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"种":{"docs":{},"写":{"docs":{},"法":{"docs":{},"仍":{"docs":{},"然":{"docs":{},"使":{"docs":{},"用":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"本":{"docs":{},"身":{"docs":{},"机":{"docs":{},"制":{"docs":{},"保":{"docs":{},"证":{"docs":{},"了":{"docs":{},"线":{"docs":{},"程":{"docs":{},"安":{"docs":{},"全":{"docs":{},"问":{"docs":{},"题":{"docs":{},";":{"docs":{},"由":{"docs":{},"于":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}},"如":{"docs":{},"果":{"docs":{},"完":{"docs":{},"美":{"docs":{},"的":{"docs":{},"话":{"docs":{},",":{"docs":{},"就":{"docs":{},"没":{"docs":{},"必":{"docs":{},"要":{"docs":{},"在":{"docs":{},"啰":{"docs":{},"嗦":{"docs":{},"那":{"docs":{},"么":{"docs":{},"多":{"docs":{},"双":{"docs":{},"检":{"docs":{},"锁":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},"了":{"docs":{},"。":{"docs":{},"缺":{"docs":{},"点":{"docs":{},"是":{"docs":{},"它":{"docs":{},"不":{"docs":{},"是":{"docs":{},"一":{"docs":{},"种":{"docs":{},"懒":{"docs":{},"加":{"docs":{},"载":{"docs":{},"模":{"docs":{},"式":{"docs":{},"(":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"i":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"方":{"docs":{},"法":{"docs":{},"非":{"docs":{},"常":{"docs":{},"简":{"docs":{},"单":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"单":{"docs":{},"例":{"docs":{},"的":{"docs":{},"实":{"docs":{},"例":{"docs":{},"被":{"docs":{},"声":{"docs":{},"明":{"docs":{},"成":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}},"布":{"docs":{},"局":{"docs":{},"的":{"docs":{},"帖":{"docs":{},"子":{"docs":{},"保":{"docs":{},"存":{"docs":{},"到":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},"并":{"docs":{},"没":{"docs":{},"有":{"docs":{},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}},"是":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"允":{"docs":{},"许":{"docs":{},"的":{"docs":{},"(":{"docs":{},"而":{"docs":{},"且":{"docs":{},"在":{"docs":{},"不":{"docs":{},"少":{"docs":{},"地":{"docs":{},"方":{"docs":{},"可":{"docs":{},"以":{"docs":{},"看":{"docs":{},"到":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},")":{"docs":{},",":{"docs":{},"但":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"编":{"docs":{},"程":{"docs":{},"风":{"docs":{},"格":{"docs":{},"对":{"docs":{},"此":{"docs":{},"不":{"docs":{},"做":{"docs":{},"要":{"docs":{},"求":{"docs":{},"。":{"docs":{},"即":{"docs":{},"使":{"docs":{},"对":{"docs":{},"于":{"docs":{},"已":{"docs":{},"经":{"docs":{},"使":{"docs":{},"用":{"docs":{},"水":{"docs":{},"平":{"docs":{},"对":{"docs":{},"齐":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"也":{"docs":{},"不":{"docs":{},"需":{"docs":{},"要":{"docs":{},"去":{"docs":{},"保":{"docs":{},"持":{"docs":{},"这":{"docs":{},"种":{"docs":{},"风":{"docs":{},"格":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"要":{"docs":{},"说":{"docs":{},"的":{"docs":{},",":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"的":{"docs":{},"c":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{},"e":{"docs":{},"就":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"这":{"docs":{},"个":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{},"传":{"docs":{},"给":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"的":{"docs":{},"哦":{"docs":{},"!":{"docs":{},"如":{"docs":{},"下":{"docs":{},"所":{"docs":{},"示":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"一":{"docs":{},"个":{"docs":{},"标":{"docs":{},"准":{"docs":{},"的":{"docs":{},"分":{"docs":{},"层":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"。":{"docs":{},"每":{"docs":{},"一":{"docs":{},"层":{"docs":{},"中":{"docs":{},"又":{"docs":{},"可":{"docs":{},"以":{"docs":{},"详":{"docs":{},"细":{"docs":{},"的":{"docs":{},"分":{"docs":{},"成":{"docs":{},"更":{"docs":{},"细":{"docs":{},"的":{"docs":{},"层":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"服":{"docs":{},"务":{"docs":{},"层":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"前":{"docs":{},"几":{"docs":{},"年":{"docs":{},"比":{"docs":{},"较":{"docs":{},"传":{"docs":{},"统":{"docs":{},"的":{"docs":{},"做":{"docs":{},"法":{"docs":{},",":{"docs":{},"之":{"docs":{},"前":{"docs":{},"见":{"docs":{},"到":{"docs":{},"一":{"docs":{},"个":{"docs":{},"网":{"docs":{},"站":{"1":{"0":{"docs":{},"万":{"docs":{},"多":{"docs":{},"会":{"docs":{},"员":{"docs":{},",":{"docs":{},"垂":{"docs":{},"直":{"docs":{},"服":{"docs":{},"装":{"docs":{},"设":{"docs":{},"计":{"docs":{},"门":{"docs":{},"户":{"docs":{},",":{"docs":{},"n":{"docs":{},"多":{"docs":{},"图":{"docs":{},"片":{"docs":{},"。":{"docs":{},"使":{"docs":{},"用":{"docs":{},"了":{"docs":{},"一":{"docs":{},"台":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"部":{"docs":{},"署":{"docs":{},"了":{"docs":{},"应":{"docs":{},"用":{"docs":{},",":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"以":{"docs":{},"及":{"docs":{},"图":{"docs":{},"片":{"docs":{},"存":{"docs":{},"储":{"docs":{},"。":{"docs":{},"出":{"docs":{},"现":{"docs":{},"了":{"docs":{},"很":{"docs":{},"多":{"docs":{},"性":{"docs":{},"能":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}},"些":{"docs":{},"名":{"docs":{},"字":{"docs":{},"通":{"docs":{},"常":{"docs":{},"是":{"docs":{},"名":{"docs":{},"词":{"docs":{},"或":{"docs":{},"名":{"docs":{},"词":{"docs":{},"短":{"docs":{},"语":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}}}}}}}}}}}}}}},"份":{"docs":{},"文":{"docs":{},"档":{"docs":{},"是":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}},"可":{"docs":{},"能":{"docs":{},"导":{"docs":{},"致":{"docs":{},"原":{"docs":{},"本":{"docs":{},"很":{"docs":{},"漂":{"docs":{},"亮":{"docs":{},"的":{"docs":{},"对":{"docs":{},"齐":{"docs":{},"代":{"docs":{},"码":{"docs":{},"变":{"docs":{},"得":{"docs":{},"错":{"docs":{},"位":{"docs":{},"。":{"docs":{},"很":{"docs":{},"可":{"docs":{},"能":{"docs":{},"它":{"docs":{},"会":{"docs":{},"提":{"docs":{},"示":{"docs":{},"你":{"docs":{},"调":{"docs":{},"整":{"docs":{},"周":{"docs":{},"围":{"docs":{},"代":{"docs":{},"码":{"docs":{},"的":{"docs":{},"空":{"docs":{},"白":{"docs":{},"来":{"docs":{},"使":{"docs":{},"这":{"docs":{},"一":{"docs":{},"堆":{"docs":{},"代":{"docs":{},"码":{"docs":{},"重":{"docs":{},"新":{"docs":{},"水":{"docs":{},"平":{"docs":{},"对":{"docs":{},"齐":{"docs":{},"(":{"docs":{},"比":{"docs":{},"如":{"docs":{},"程":{"docs":{},"序":{"docs":{},"员":{"docs":{},"想":{"docs":{},"保":{"docs":{},"持":{"docs":{},"这":{"docs":{},"种":{"docs":{},"水":{"docs":{},"平":{"docs":{},"对":{"docs":{},"齐":{"docs":{},"的":{"docs":{},"风":{"docs":{},"格":{"docs":{},")":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"条":{"docs":{},"规":{"docs":{},"则":{"docs":{},"也":{"docs":{},"适":{"docs":{},"用":{"docs":{},"于":{"docs":{},"以":{"docs":{},"下":{"docs":{},"“":{"docs":{},"类":{"docs":{},"运":{"docs":{},"算":{"docs":{},"符":{"docs":{},"”":{"docs":{},"符":{"docs":{},"号":{"docs":{},":":{"docs":{},"点":{"docs":{},"分":{"docs":{},"隔":{"docs":{},"符":{"docs":{},"(":{"docs":{},".":{"docs":{},")":{"docs":{},",":{"docs":{},"类":{"docs":{},"型":{"docs":{},"界":{"docs":{},"限":{"docs":{},"中":{"docs":{},"的":{"docs":{},"&":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"块":{"docs":{},"中":{"docs":{},"的":{"docs":{},"管":{"docs":{},"道":{"docs":{},"符":{"docs":{},"号":{"docs":{},"(":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"配":{"docs":{},"置":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"hexo/config.html":{"ref":"hexo/config.html","tf":0.024657534246575342}},"设":{"docs":{},"计":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"mvc/":{"ref":"mvc/","tf":0.043478260869565216},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":10.004830917874395},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}},"加":{"docs":{},"载":{"docs":{},"器":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},"是":{"docs":{},"酱":{"docs":{},"紫":{"docs":{},"的":{"docs":{},":":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}},"淘":{"docs":{},"宝":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"+":{"docs":{},"n":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{},"反":{"docs":{},"向":{"docs":{},"代":{"docs":{},"理":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}}}}}}},"为":{"docs":{},"服":{"docs":{},"务":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}}}}}},"多":{"docs":{},"个":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}}}}}},"送":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},":":{"docs":{},"读":{"docs":{},"取":{"docs":{},"消":{"docs":{},"息":{"docs":{},"队":{"docs":{},"列":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"进":{"docs":{},"行":{"docs":{},"配":{"docs":{},"送":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}},"随":{"docs":{},"机":{"docs":{},"头":{"docs":{},"像":{"docs":{},"生":{"docs":{},"成":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}},"密":{"docs":{},"码":{"docs":{},"生":{"docs":{},"成":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}}},"着":{"docs":{},"一":{"docs":{},"个":{"docs":{},"时":{"docs":{},"区":{"docs":{},"可":{"docs":{},"以":{"docs":{},"转":{"docs":{},"换":{"docs":{},"为":{"docs":{},"一":{"docs":{},"个":{"docs":{},"即":{"docs":{},"时":{"docs":{},"的":{"docs":{},"附":{"docs":{},"加":{"docs":{},"信":{"docs":{},"息":{"docs":{},"。":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"可":{"docs":{},"以":{"docs":{},"被":{"docs":{},"转":{"docs":{},"换":{"docs":{},"为":{"docs":{},"日":{"docs":{},"期":{"docs":{},"型":{"docs":{},"转":{"docs":{},"化":{"docs":{},"为":{"docs":{},"指":{"docs":{},"定":{"docs":{},"格":{"docs":{},"式":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"非":{"docs":{},"主":{"docs":{},"流":{"docs":{},"域":{"docs":{},"名":{"docs":{"./":{"ref":"./","tf":0.009433962264150943}}}}}},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"i":{"docs":{},"i":{"docs":{},"字":{"docs":{},"符":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"c":{"docs":{},"风":{"docs":{},"格":{"docs":{},"的":{"docs":{},"数":{"docs":{},"组":{"docs":{},"声":{"docs":{},"明":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"常":{"docs":{},"量":{"docs":{},"字":{"docs":{},"段":{"docs":{},"名":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"以":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"风":{"docs":{},"格":{"docs":{},"编":{"docs":{},"写":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}},"空":{"docs":{},"块":{"docs":{},":":{"docs":{},"k":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"功":{"docs":{},"能":{"docs":{},"需":{"docs":{},"求":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}},"项":{"docs":{},"目":{"docs":{},"规":{"docs":{},"划":{"docs":{"./":{"ref":"./","tf":0.009433962264150943},"mvc/":{"ref":"mvc/","tf":0.043478260869565216},"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":10.013513513513514},"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}},"源":{"docs":{},"码":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"j":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"n":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"其":{"docs":{},"实":{"docs":{},"框":{"docs":{},"架":{"docs":{},"只":{"docs":{},"是":{"docs":{},"工":{"docs":{},"具":{"docs":{},",":{"docs":{},"没":{"docs":{},"有":{"docs":{},"好":{"docs":{},"与":{"docs":{},"不":{"docs":{},"好":{"docs":{},",":{"docs":{},"只":{"docs":{},"有":{"docs":{},"适":{"docs":{},"合":{"docs":{},"与":{"docs":{},"不":{"docs":{},"适":{"docs":{},"合":{"docs":{},",":{"docs":{},"适":{"docs":{},"合":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"就":{"docs":{},"是":{"docs":{},"最":{"docs":{},"好":{"docs":{},"的":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"教":{"docs":{},"会":{"docs":{},"大":{"docs":{},"家":{"docs":{},"自":{"docs":{},"己":{"docs":{},"动":{"docs":{},"手":{"docs":{},"写":{"docs":{},"框":{"docs":{},"架":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"需":{"docs":{},"求":{"docs":{},"都":{"docs":{},"可":{"docs":{},"以":{"docs":{},"用":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"思":{"docs":{},"路":{"docs":{},"去":{"docs":{},"实":{"docs":{},"现":{"docs":{},"。":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"对":{"docs":{},"编":{"docs":{},"程":{"docs":{},"带":{"docs":{},"来":{"docs":{},"的":{"docs":{},"最":{"docs":{},"大":{"docs":{},"改":{"docs":{},"变":{"docs":{},"不":{"docs":{},"是":{"docs":{},"从":{"docs":{},"代":{"docs":{},"码":{"docs":{},"上":{"docs":{},",":{"docs":{},"而":{"docs":{},"是":{"docs":{},"从":{"docs":{},"思":{"docs":{},"想":{"docs":{},"上":{"docs":{},",":{"docs":{},"发":{"docs":{},"生":{"docs":{},"了":{"docs":{},"“":{"docs":{},"主":{"docs":{},"从":{"docs":{},"换":{"docs":{},"位":{"docs":{},"”":{"docs":{},"的":{"docs":{},"变":{"docs":{},"化":{"docs":{},"。":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"原":{"docs":{},"本":{"docs":{},"是":{"docs":{},"老":{"docs":{},"大":{"docs":{},",":{"docs":{},"要":{"docs":{},"获":{"docs":{},"取":{"docs":{},"什":{"docs":{},"么":{"docs":{},"资":{"docs":{},"源":{"docs":{},"都":{"docs":{},"是":{"docs":{},"主":{"docs":{},"动":{"docs":{},"出":{"docs":{},"击":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"在":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"/":{"docs":{},"d":{"docs":{},"i":{"docs":{},"思":{"docs":{},"想":{"docs":{},"中":{"docs":{},",":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"就":{"docs":{},"变":{"docs":{},"成":{"docs":{},"被":{"docs":{},"动":{"docs":{},"的":{"docs":{},"了":{"docs":{},",":{"docs":{},"被":{"docs":{},"动":{"docs":{},"的":{"docs":{},"等":{"docs":{},"待":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"容":{"docs":{},"器":{"docs":{},"来":{"docs":{},"创":{"docs":{},"建":{"docs":{},"并":{"docs":{},"注":{"docs":{},"入":{"docs":{},"它":{"docs":{},"所":{"docs":{},"需":{"docs":{},"要":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},"了":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"他":{"docs":{},"的":{"docs":{},"术":{"docs":{},"语":{"docs":{},"说":{"docs":{},"明":{"docs":{},"会":{"docs":{},"偶":{"docs":{},"尔":{"docs":{},"在":{"docs":{},"后":{"docs":{},"面":{"docs":{},"的":{"docs":{},"文":{"docs":{},"档":{"docs":{},"出":{"docs":{},"现":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}},"功":{"docs":{},"能":{"docs":{},"参":{"docs":{},"考":{"docs":{},"京":{"docs":{},"东":{"docs":{},"或":{"docs":{},"国":{"docs":{},"美":{"docs":{},"在":{"docs":{},"线":{"docs":{},"等":{"docs":{},"网":{"docs":{},"站":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}},"略":{"docs":{},"~":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}},"技":{"docs":{},"术":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}},"它":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}},"吧":{"docs":{},"~":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}}}},"接":{"docs":{},"下":{"docs":{},"来":{"docs":{},"开":{"docs":{},"始":{"docs":{},"我":{"docs":{},"们":{"docs":{},"的":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}}}}}}},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"将":{"docs":{},"学":{"docs":{},"习":{"docs":{},"如":{"docs":{},"何":{"docs":{},"删":{"docs":{},"除":{"docs":{},"一":{"docs":{},"一":{"docs":{},"个":{"docs":{},"给":{"docs":{},"定":{"docs":{},"的":{"docs":{},"键":{"docs":{},"的":{"docs":{},"条":{"docs":{},"目":{"docs":{},",":{"docs":{},"只":{"docs":{},"有":{"docs":{},"当":{"docs":{},"它":{"docs":{},"当":{"docs":{},"前":{"docs":{},"映":{"docs":{},"射":{"docs":{},"到":{"docs":{},"给":{"docs":{},"定":{"docs":{},"值":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"指":{"docs":{},"定":{"docs":{},"一":{"docs":{},"个":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"的":{"docs":{},"工":{"docs":{},"厂":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"用":{"docs":{},"于":{"docs":{},"创":{"docs":{},"建":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"收":{"docs":{},"用":{"docs":{},"户":{"docs":{},"请":{"docs":{},"求":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}},"口":{"docs":{},"中":{"docs":{},"的":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"的":{"docs":{},"默":{"docs":{},"认":{"docs":{},"方":{"docs":{},"法":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}},"框":{"docs":{},"架":{"docs":{},"之":{"docs":{},"旅":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}}}},"流":{"docs":{},"程":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}},"是":{"docs":{},"否":{"docs":{},"已":{"docs":{},"经":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}},"欢":{"docs":{},"迎":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"我":{"docs":{},"写":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"洁":{"docs":{},"优":{"docs":{},"雅":{"docs":{},"的":{"docs":{},"m":{"docs":{},"v":{"docs":{},"c":{"docs":{},"框":{"docs":{},"架":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}}}}}}}}}}}}}}}},"的":{"docs":{},"开":{"docs":{},"源":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"框":{"docs":{},"架":{"docs":{},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"e":{"docs":{},"z":{"docs":{},"h":{"docs":{},"i":{"docs":{},"/":{"docs":{},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"d":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"开":{"docs":{},"源":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"框":{"docs":{},"架":{"docs":{},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"b":{"docs":{},"i":{"docs":{},"e":{"docs":{},"z":{"docs":{},"h":{"docs":{},"i":{"docs":{},"/":{"docs":{},"b":{"docs":{},"l":{"docs":{},"a":{"docs":{},"d":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"来":{"docs":{},"到":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"8":{"docs":{},"简":{"docs":{},"明":{"docs":{},"指":{"docs":{},"南":{"docs":{},"。":{"docs":{},"本":{"docs":{},"教":{"docs":{},"程":{"docs":{},"将":{"docs":{},"一":{"docs":{},"步":{"docs":{},"一":{"docs":{},"步":{"docs":{},"指":{"docs":{},"导":{"docs":{},"你":{"docs":{},"通":{"docs":{},"过":{"docs":{},"所":{"docs":{},"有":{"docs":{},"新":{"docs":{},"语":{"docs":{},"言":{"docs":{},"特":{"docs":{},"性":{"docs":{},"。":{"docs":{},"由":{"docs":{},"短":{"docs":{},"而":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"示":{"docs":{},"例":{"docs":{},",":{"docs":{},"带":{"docs":{},"你":{"docs":{},"了":{"docs":{},"解":{"docs":{},"如":{"docs":{},"何":{"docs":{},"使":{"docs":{},"用":{"docs":{},"默":{"docs":{},"认":{"docs":{},"接":{"docs":{},"口":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},",":{"docs":{},"方":{"docs":{},"法":{"docs":{},"引":{"docs":{},"用":{"docs":{},"和":{"docs":{},"可":{"docs":{},"重":{"docs":{},"复":{"docs":{},"注":{"docs":{},"解":{"docs":{},"。":{"docs":{},"本":{"docs":{},"文":{"docs":{},"的":{"docs":{},"最":{"docs":{},"后":{"docs":{},"你":{"docs":{},"会":{"docs":{},"熟":{"docs":{},"悉":{"docs":{},"最":{"docs":{},"新":{"docs":{},"的":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"的":{"docs":{},"变":{"docs":{},"化":{"docs":{},"如":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{},",":{"docs":{},"f":{"docs":{},"c":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},",":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}},"示":{"docs":{},"例":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504},"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}},"代":{"docs":{},"码":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"j":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"n":{"docs":{},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"中":{"docs":{},"的":{"docs":{},"格":{"docs":{},"式":{"docs":{},"选":{"docs":{},"择":{"docs":{},"不":{"docs":{},"应":{"docs":{},"该":{"docs":{},"被":{"docs":{},"强":{"docs":{},"制":{"docs":{},"定":{"docs":{},"为":{"docs":{},"规":{"docs":{},"则":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0036144578313253013}}}}},"调":{"docs":{},"度":{"docs":{},"器":{"docs":{},",":{"docs":{},"对":{"docs":{},"象":{"docs":{},"继":{"docs":{},"承":{"docs":{},"之":{"docs":{},"后":{"docs":{},"处":{"docs":{},"理":{"docs":{},"函":{"docs":{},"数":{"docs":{},"中":{"docs":{},"如":{"docs":{},"何":{"docs":{},"处":{"docs":{},"理":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"和":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},";":{"docs":{},"第":{"docs":{},"四":{"docs":{},"小":{"docs":{},"节":{"docs":{},"至":{"docs":{},"第":{"docs":{},"六":{"docs":{},"小":{"docs":{},"节":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"如":{"docs":{},"何":{"docs":{},"框":{"docs":{},"架":{"docs":{},"的":{"docs":{},"一":{"docs":{},"些":{"docs":{},"辅":{"docs":{},"助":{"docs":{},"功":{"docs":{},"能":{"docs":{},",":{"docs":{},"例":{"docs":{},"如":{"docs":{},"配":{"docs":{},"置":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"操":{"docs":{},"作":{"docs":{},"等":{"docs":{},";":{"docs":{},"最":{"docs":{},"后":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"如":{"docs":{},"何":{"docs":{},"基":{"docs":{},"于":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"框":{"docs":{},"架":{"docs":{},"实":{"docs":{},"现":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"增":{"docs":{},"删":{"docs":{},"改":{"docs":{},"查":{"docs":{},",":{"docs":{},"包":{"docs":{},"括":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"添":{"docs":{},"加":{"docs":{},"、":{"docs":{},"修":{"docs":{},"改":{"docs":{},"、":{"docs":{},"删":{"docs":{},"除":{"docs":{},"、":{"docs":{},"显":{"docs":{},"示":{"docs":{},"列":{"docs":{},"表":{"docs":{},"等":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"用":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}},"该":{"docs":{},"方":{"docs":{},"法":{"docs":{},"来":{"docs":{},"查":{"docs":{},"看":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"是":{"docs":{},"否":{"docs":{},"已":{"docs":{},"装":{"docs":{},"入":{"docs":{},"某":{"docs":{},"个":{"docs":{},"类":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"已":{"docs":{},"装":{"docs":{},"入":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"返":{"docs":{},"回":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"否":{"docs":{},"则":{"docs":{},"返":{"docs":{},"回":{"docs":{},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"强":{"docs":{},"行":{"docs":{},"装":{"docs":{},"载":{"docs":{},"已":{"docs":{},"存":{"docs":{},"在":{"docs":{},"的":{"docs":{},"类":{"docs":{},",":{"docs":{},"将":{"docs":{},"会":{"docs":{},"抛":{"docs":{},"出":{"docs":{},"链":{"docs":{},"接":{"docs":{},"错":{"docs":{},"误":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"通":{"docs":{},"过":{"docs":{},"使":{"docs":{},"用":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"语":{"docs":{},"言":{"docs":{},"实":{"docs":{},"现":{"docs":{},"一":{"docs":{},"个":{"docs":{},"完":{"docs":{},"整":{"docs":{},"的":{"docs":{},"框":{"docs":{},"架":{"docs":{},"设":{"docs":{},"计":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"框":{"docs":{},"架":{"docs":{},"中":{"docs":{},"主":{"docs":{},"要":{"docs":{},"内":{"docs":{},"容":{"docs":{},"有":{"docs":{},"第":{"docs":{},"一":{"docs":{},"小":{"docs":{},"节":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"的":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"框":{"docs":{},"架":{"docs":{},"的":{"docs":{},"结":{"docs":{},"构":{"docs":{},"规":{"docs":{},"划":{"docs":{},",":{"docs":{},"例":{"docs":{},"如":{"docs":{},"采":{"docs":{},"用":{"docs":{},"m":{"docs":{},"v":{"docs":{},"c":{"docs":{},"模":{"docs":{},"式":{"docs":{},"来":{"docs":{},"进":{"docs":{},"行":{"docs":{},"开":{"docs":{},"发":{"docs":{},",":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"执":{"docs":{},"行":{"docs":{},"流":{"docs":{},"程":{"docs":{},"设":{"docs":{},"计":{"docs":{},"等":{"docs":{},"内":{"docs":{},"容":{"docs":{},";":{"docs":{},"第":{"docs":{},"二":{"docs":{},"小":{"docs":{},"节":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"框":{"docs":{},"架":{"docs":{},"的":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"功":{"docs":{},"能":{"docs":{},":":{"docs":{},"路":{"docs":{},"由":{"docs":{},",":{"docs":{},"如":{"docs":{},"何":{"docs":{},"让":{"docs":{},"访":{"docs":{},"问":{"docs":{},"的":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"映":{"docs":{},"射":{"docs":{},"到":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"处":{"docs":{},"理":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},";":{"docs":{},"第":{"docs":{},"三":{"docs":{},"小":{"docs":{},"节":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"处":{"docs":{},"理":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},",":{"docs":{},"如":{"docs":{},"何":{"docs":{},"设":{"docs":{},"计":{"docs":{},"一":{"docs":{},"个":{"docs":{},"公":{"docs":{},"共":{"docs":{},"的":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"这":{"docs":{},"么":{"docs":{},"一":{"docs":{},"个":{"docs":{},"完":{"docs":{},"整":{"docs":{},"的":{"docs":{},"项":{"docs":{},"目":{"docs":{},"例":{"docs":{},"子":{"docs":{},",":{"docs":{},"我":{"docs":{},"期":{"docs":{},"望":{"docs":{},"能":{"docs":{},"够":{"docs":{},"让":{"docs":{},"读":{"docs":{},"者":{"docs":{},"了":{"docs":{},"解":{"docs":{},"如":{"docs":{},"何":{"docs":{},"开":{"docs":{},"发":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"应":{"docs":{},"用":{"docs":{},",":{"docs":{},"如":{"docs":{},"何":{"docs":{},"搭":{"docs":{},"建":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"目":{"docs":{},"录":{"docs":{},"结":{"docs":{},"构":{"docs":{},",":{"docs":{},"如":{"docs":{},"何":{"docs":{},"实":{"docs":{},"现":{"docs":{},"路":{"docs":{},"由":{"docs":{},",":{"docs":{},"如":{"docs":{},"何":{"docs":{},"实":{"docs":{},"现":{"docs":{},"m":{"docs":{},"v":{"docs":{},"c":{"docs":{},"模":{"docs":{},"式":{"docs":{},"等":{"docs":{},"各":{"docs":{},"方":{"docs":{},"面":{"docs":{},"的":{"docs":{},"开":{"docs":{},"发":{"docs":{},"内":{"docs":{},"容":{"docs":{},"。":{"docs":{},"在":{"docs":{},"框":{"docs":{},"架":{"docs":{},"盛":{"docs":{},"行":{"docs":{},"的":{"docs":{},"今":{"docs":{},"天":{"docs":{},",":{"docs":{},"m":{"docs":{},"v":{"docs":{},"c":{"docs":{},"也":{"docs":{},"不":{"docs":{},"再":{"docs":{},"是":{"docs":{},"神":{"docs":{},"话":{"docs":{},"。":{"docs":{},"经":{"docs":{},"常":{"docs":{},"听":{"docs":{},"到":{"docs":{},"很":{"docs":{},"多":{"docs":{},"程":{"docs":{},"序":{"docs":{},"员":{"docs":{},"讨":{"docs":{},"论":{"docs":{},"哪":{"docs":{},"个":{"docs":{},"框":{"docs":{},"架":{"docs":{},"好":{"docs":{},",":{"docs":{},"哪":{"docs":{},"个":{"docs":{},"框":{"docs":{},"架":{"docs":{},"不":{"docs":{},"好":{"docs":{},",":{"docs":{"mvc/":{"ref":"mvc/","tf":0.043478260869565216}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"反":{"docs":{},"射":{"docs":{},"方":{"docs":{},"法":{"docs":{},"设":{"docs":{},"置":{"docs":{},"属":{"docs":{},"性":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}},"类":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"获":{"docs":{},"取":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"类":{"docs":{},"对":{"docs":{},"象":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}},"以":{"docs":{},"上":{"docs":{},"的":{"docs":{},"输":{"docs":{},"出":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"知":{"docs":{},"道":{"docs":{},"当":{"docs":{},"前":{"docs":{},"的":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"是":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{},"父":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"是":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{},"祖":{"docs":{},"父":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"是":{"docs":{},"根":{"docs":{},"类":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"在":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"中":{"docs":{},"无":{"docs":{},"法":{"docs":{},"获":{"docs":{},"得":{"docs":{},"它":{"docs":{},"的":{"docs":{},"句":{"docs":{},"柄":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"仅":{"docs":{},"返":{"docs":{},"回":{"docs":{},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"(":{"1":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}},"2":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}},"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}},"u":{"docs":{},"l":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"f":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}},"z":{"docs":{},"z":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},")":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},")":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}},".":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"y":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}},"i":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},")":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"e":{"docs":{},"s":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}},"o":{"2":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"(":{"docs":{},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{},")":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},".":{"docs":{},".":{"docs":{},".":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}},"l":{"docs":{},"d":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}},"s":{"docs":{},"x":{"docs":{},")":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}},",":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.019417475728155338}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"y":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},")":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},")":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},")":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"g":{"docs":{},"a":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}},"r":{"docs":{},"g":{"docs":{},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}},"c":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.017045454545454544}}}}}}},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}},"s":{"docs":{},".":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"g":{"docs":{},"t":{"docs":{},"h":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"e":{"docs":{},"t":{"docs":{},".":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"o":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"t":{"docs":{},".":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"n":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"s":{"docs":{},"u":{"docs":{},"c":{"docs":{},"h":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0056657223796034}}}},"m":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},".":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"\"":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"y":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.005681818181818182}}}}}}}}}}}}}}}}},"m":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},")":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"h":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},")":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},".":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"!":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},".":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"s":{"docs":{},"u":{"docs":{},"f":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{},")":{"docs":{},")":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"i":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"i":{"docs":{},"s":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"(":{"docs":{},"f":{"docs":{},"l":{"docs":{},"a":{"docs":{},"g":{"docs":{},"s":{"docs":{},")":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"k":{"docs":{},"g":{"docs":{},".":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"(":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"p":{"docs":{},"k":{"docs":{},"g":{"docs":{},")":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}},"l":{"docs":{},"o":{"docs":{},"l":{"docs":{},")":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},")":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}},"l":{"docs":{},"e":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0057692307692307696}}}}}},"o":{"docs":{},"o":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}}}}}}}}}},"t":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.004336513443191674}}}}}}}}},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}},"p":{"1":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},")":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"p":{"docs":{},"k":{"docs":{},"g":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}}},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},")":{"docs":{},"{":{"docs":{},"}":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.008522727272727272}}}}},"(":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},")":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"h":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{},"h":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},"|":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.004336513443191674}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"y":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"n":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}},"a":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"g":{"docs":{},"z":{"docs":{},"i":{"docs":{},"p":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}},"j":{"docs":{},"s":{"docs":{},"f":{"docs":{},")":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}},"d":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"d":{"docs":{},"=":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}},"e":{"docs":{},")":{"docs":{},"{":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"e":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0058997050147492625},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},")":{"docs":{},"{":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}},".":{"docs":{},"f":{"docs":{},"r":{"docs":{},"o":{"docs":{},"m":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}}}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464}}}}}}}}}}}}},"_":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"y":{"docs":{},"o":{"docs":{},"f":{"docs":{},"w":{"docs":{},"e":{"docs":{},"e":{"docs":{},"k":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464}}}}}}}}},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}},"o":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}},"来":{"docs":{},"得":{"docs":{},"到":{"docs":{},"订":{"docs":{},"单":{"docs":{},"信":{"docs":{},"息":{"docs":{},"。":{"docs":{},"这":{"docs":{},"些":{"docs":{},"模":{"docs":{},"块":{"docs":{},"会":{"docs":{},"执":{"docs":{},"行":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"语":{"docs":{},"句":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"返":{"docs":{},"回":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"给":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"。":{"docs":{},"当":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"p":{"docs":{},"i":{"docs":{},"d":{"docs":{},"=":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"j":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"n":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"=":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"j":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"r":{"docs":{},"n":{"docs":{},".":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}}}}},"l":{"docs":{},"o":{"docs":{},"r":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.006535947712418301}}}}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"(":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}},"d":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"\"":{"docs":{},")":{"docs":{},".":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"(":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}}}}}}},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"d":{"1":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"2":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}},"的":{"docs":{},"格":{"docs":{},"式":{"docs":{},",":{"docs":{},"其":{"docs":{},"他":{"docs":{},"格":{"docs":{},"式":{"docs":{},"模":{"docs":{},"版":{"docs":{},"可":{"docs":{},"以":{"docs":{},"查":{"docs":{},"看":{"docs":{},"m":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"|":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}},"g":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},")":{"docs":{},"模":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"传":{"docs":{},"递":{"docs":{},"这":{"docs":{},"些":{"docs":{},"数":{"docs":{},"据":{"docs":{},"到":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}},"。":{"docs":{},"用":{"docs":{},"本":{"docs":{},"地":{"docs":{},"的":{"docs":{},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{},".":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"0":{"docs":{},"(":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}},"_":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"y":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"的":{"docs":{},"情":{"docs":{},"况":{"docs":{},"要":{"docs":{},"写":{"docs":{},"出":{"docs":{},"来":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}},"c":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"e":{"docs":{},"m":{"docs":{},"b":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"b":{"docs":{},"u":{"docs":{},"g":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521}}}}},"p":{"docs":{},"l":{"docs":{},"o":{"docs":{},"y":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.010958904109589041},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.008169934640522876}},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.004901960784313725}}}}}}},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}},"v":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}},"i":{"docs":{},"—":{"docs":{},"d":{"docs":{},"e":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}},"f":{"docs":{},"f":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"e":{"docs":{},"r":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"l":{"docs":{},"a":{"docs":{},"y":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"=":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{},".":{"docs":{},"t":{"docs":{},"a":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"o":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}},"a":{"docs":{},"m":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"u":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.030303030303030304}},"e":{"docs":{},".":{"docs":{},"b":{"docs":{},"u":{"docs":{},"y":{"docs":{},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}}}}}}},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"i":{"docs":{},"c":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"i":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}},"y":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}},"r":{"docs":{},"a":{"docs":{},"f":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"s":{"docs":{},"(":{"docs":{},"草":{"docs":{},"稿":{"docs":{},")":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}},"。":{"docs":{},"不":{"docs":{},"同":{"docs":{},"布":{"docs":{},"局":{"docs":{},"的":{"docs":{},"文":{"docs":{},"章":{"docs":{},"会":{"docs":{},"被":{"docs":{},"保":{"docs":{},"存":{"docs":{},"到":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"目":{"docs":{},"录":{"docs":{},",":{"docs":{},"这":{"docs":{},"取":{"docs":{},"决":{"docs":{},"于":{"docs":{},"它":{"docs":{},"的":{"docs":{},"布":{"docs":{},"局":{"docs":{},"类":{"docs":{},"型":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"1":{"docs":{},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}},"2":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"f":{"docs":{},"(":{"docs":{},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{},"k":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},",":{"docs":{},"项":{"docs":{},"目":{"docs":{},"创":{"docs":{},"建":{"docs":{},"好":{"docs":{},"了":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"将":{"docs":{},"是":{"docs":{},"我":{"docs":{},"们":{"docs":{},"的":{"docs":{},"框":{"docs":{},"架":{"docs":{},"。":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"a":{"docs":{},"y":{"docs":{},".":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"r":{"docs":{},"g":{"docs":{},".":{"docs":{},"a":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},".":{"docs":{},"m":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{},".":{"docs":{},"p":{"docs":{},"l":{"docs":{},"u":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"f":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{},".":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},".":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"s":{"docs":{},"h":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"i":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.019417475728155338}},"/":{"docs":{},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"b":{"docs":{},"j":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.008287292817679558},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.025495750708215296},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.005203816131830009},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},"[":{"docs":{},"]":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}}},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"]":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},"{":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},".":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}},"*":{"docs":{},"/":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044}}}}}}}}}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}},"s":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},"(":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"b":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},".":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"y":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},":":{"docs":{},"i":{"docs":{},"s":{"docs":{},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}},")":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"可":{"docs":{},"以":{"docs":{},"用":{"docs":{},"m":{"docs":{},"y":{"docs":{},"b":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"s":{"docs":{},",":{"docs":{},"还":{"docs":{},"可":{"docs":{},"以":{"docs":{},"用":{"docs":{},"j":{"docs":{},"d":{"docs":{},"b":{"docs":{},"c":{"docs":{},"或":{"docs":{},"者":{"docs":{},"h":{"docs":{},"i":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"查":{"docs":{},"询":{"docs":{},"。":{"docs":{},"m":{"docs":{},"i":{"docs":{},"c":{"docs":{},"r":{"docs":{},"o":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},"平":{"docs":{},"台":{"docs":{},"上":{"docs":{},",":{"docs":{},"c":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"。":{"docs":{},"上":{"docs":{},"例":{"docs":{},"中":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"访":{"docs":{},"问":{"docs":{},"可":{"docs":{},"以":{"docs":{},"用":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"p":{"docs":{},"o":{"docs":{},"j":{"docs":{},"p":{"docs":{},"'":{"docs":{},"s":{"docs":{},"(":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"收":{"docs":{},"到":{"docs":{},"数":{"docs":{},"据":{"docs":{},"以":{"docs":{},"后":{"docs":{},",":{"docs":{},"它":{"docs":{},"就":{"docs":{},"会":{"docs":{},"聚":{"docs":{},"合":{"docs":{},"这":{"docs":{},"些":{"docs":{},"数":{"docs":{},"据":{"docs":{},"然":{"docs":{},"后":{"docs":{},"传":{"docs":{},"递":{"docs":{},"给":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}},"聚":{"docs":{},"合":{"docs":{},"了":{"docs":{},"业":{"docs":{},"务":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}},",":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.024390243902439025}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"f":{"docs":{},"i":{"docs":{},"t":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}},".":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},",":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}},"f":{"docs":{},"f":{"docs":{},",":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}},"l":{"docs":{},"d":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.004807692307692308},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}},"a":{"docs":{},"l":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"i":{"docs":{},"f":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},"(":{"docs":{},"s":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"o":{"docs":{},"f":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"b":{"docs":{},"a":{"docs":{},"m":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"(":{"docs":{},"可":{"docs":{},"选":{"docs":{},"项":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"是":{"docs":{},"没":{"docs":{},"有":{"docs":{},"函":{"docs":{},"数":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"取":{"docs":{},"而":{"docs":{},"代":{"docs":{},"之":{"docs":{},"的":{"docs":{},"是":{"docs":{},"防":{"docs":{},"止":{"docs":{},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},"p":{"docs":{},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"异":{"docs":{},"常":{"docs":{},"。":{"docs":{},"这":{"docs":{},"是":{"docs":{},"下":{"docs":{},"一":{"docs":{},"节":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"重":{"docs":{},"要":{"docs":{},"概":{"docs":{},"念":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"让":{"docs":{},"我":{"docs":{},"们":{"docs":{},"看":{"docs":{},"看":{"docs":{},"如":{"docs":{},"何":{"docs":{},"结":{"docs":{},"合":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"工":{"docs":{},"作":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"容":{"docs":{},"器":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"值":{"docs":{},"可":{"docs":{},"能":{"docs":{},"是":{"docs":{},"空":{"docs":{},"的":{"docs":{},"或":{"docs":{},"者":{"docs":{},"非":{"docs":{},"空":{"docs":{},"的":{"docs":{},"。":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"到":{"docs":{},"一":{"docs":{},"个":{"docs":{},"方":{"docs":{},"法":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"返":{"docs":{},"回":{"docs":{},"一":{"docs":{},"个":{"docs":{},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"n":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"u":{"docs":{},"n":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}}},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}},"n":{"docs":{},"e":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}},"s":{"docs":{},"x":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}},"u":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"f":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.02702702702702703}}}},"r":{"docs":{},"i":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0055248618784530384},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},"(":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}},":":{"docs":{},"\"":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}},"s":{"docs":{},"y":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"x":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}}}}}}}}}}}}}}},"l":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"t":{"docs":{},"x":{"docs":{},"t":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}}}}}}}}},"文":{"docs":{},"件":{"docs":{},"就":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"文":{"docs":{},"本":{"docs":{},",":{"docs":{},"每":{"docs":{},"行":{"docs":{},"都":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},",":{"docs":{},"它":{"docs":{},"会":{"docs":{},"从":{"docs":{},"里":{"docs":{},"面":{"docs":{},"随":{"docs":{},"机":{"docs":{},"访":{"docs":{},"问":{"docs":{},"的":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"e":{"docs":{},"(":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}},"t":{"docs":{},"r":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426}}}}},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}},"d":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"s":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"e":{"docs":{},"r":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426}}},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"=":{"docs":{},"$":{"docs":{},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"/":{"docs":{},".":{"docs":{},"c":{"docs":{},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{},"r":{"docs":{},"c":{"docs":{},"\"":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}},"'":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"@":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},":":{"docs":{},"/":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"t":{"docs":{},"o":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"i":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"d":{"docs":{},"=":{"docs":{},"j":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},";":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.004336513443191674}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"b":{"docs":{},"r":{"docs":{},"e":{"docs":{},"v":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.004819277108433735}}}}}}}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"g":{"docs":{},"n":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"下":{"docs":{},"一":{"docs":{},"节":{"docs":{},":":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514},"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}},":":{"docs":{},"原":{"docs":{},"理":{"docs":{},"分":{"docs":{},"析":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}},"各":{"docs":{},"种":{"docs":{},"配":{"docs":{},"置":{"docs":{},"详":{"docs":{},"解":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}},"开":{"docs":{},"始":{"docs":{},"写":{"docs":{},"作":{"docs":{},"吧":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}},",":{"docs":{},"后":{"docs":{},"缀":{"docs":{},"是":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}},"面":{"docs":{},"举":{"docs":{},"个":{"docs":{},"例":{"docs":{},"子":{"docs":{},"说":{"docs":{},"明":{"docs":{},"说":{"docs":{},"明":{"docs":{},"是":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},":":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}},"是":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"一":{"docs":{},"个":{"docs":{},"测":{"docs":{},"试":{"docs":{},":":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}},"例":{"docs":{},"子":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}},"实":{"docs":{},"际":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}},"代":{"docs":{},"理":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},"类":{"docs":{},"图":{"docs":{},"结":{"docs":{},"构":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},"类":{"docs":{},"图":{"docs":{},":":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}},"以":{"docs":{},"一":{"docs":{},"个":{"docs":{},"延":{"docs":{},"迟":{"docs":{},"加":{"docs":{},"载":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},"来":{"docs":{},"说":{"docs":{},"明":{"docs":{},"一":{"docs":{},"下":{"docs":{},"静":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},"。":{"docs":{},"我":{"docs":{},"们":{"docs":{},"在":{"docs":{},"启":{"docs":{},"动":{"docs":{},"某":{"docs":{},"个":{"docs":{},"服":{"docs":{},"务":{"docs":{},"系":{"docs":{},"统":{"docs":{},"时":{"docs":{},",":{"docs":{},"加":{"docs":{},"载":{"docs":{},"某":{"docs":{},"一":{"docs":{},"个":{"docs":{},"类":{"docs":{},"时":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"耗":{"docs":{},"费":{"docs":{},"很":{"docs":{},"长":{"docs":{},"时":{"docs":{},"间":{"docs":{},"。":{"docs":{},"为":{"docs":{},"了":{"docs":{},"获":{"docs":{},"取":{"docs":{},"更":{"docs":{},"好":{"docs":{},"的":{"docs":{},"性":{"docs":{},"能":{"docs":{},",":{"docs":{},"在":{"docs":{},"启":{"docs":{},"动":{"docs":{},"系":{"docs":{},"统":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"往":{"docs":{},"往":{"docs":{},"不":{"docs":{},"去":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"这":{"docs":{},"个":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"的":{"docs":{},"类":{"docs":{},",":{"docs":{},"取":{"docs":{},"而":{"docs":{},"代":{"docs":{},"之":{"docs":{},"的":{"docs":{},"是":{"docs":{},"去":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"其":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"。":{"docs":{},"这":{"docs":{},"样":{"docs":{},"将":{"docs":{},"耗":{"docs":{},"费":{"docs":{},"资":{"docs":{},"源":{"docs":{},"多":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"使":{"docs":{},"用":{"docs":{},"代":{"docs":{},"理":{"docs":{},"进":{"docs":{},"行":{"docs":{},"分":{"docs":{},"离":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"加":{"docs":{},"快":{"docs":{},"系":{"docs":{},"统":{"docs":{},"的":{"docs":{},"启":{"docs":{},"动":{"docs":{},"速":{"docs":{},"度":{"docs":{},",":{"docs":{},"减":{"docs":{},"少":{"docs":{},"用":{"docs":{},"户":{"docs":{},"等":{"docs":{},"待":{"docs":{},"的":{"docs":{},"时":{"docs":{},"间":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"用":{"docs":{},"一":{"docs":{},"个":{"docs":{},"实":{"docs":{},"例":{"docs":{},"讲":{"docs":{},"解":{"docs":{},"一":{"docs":{},"下":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"docs":{},"中":{"docs":{},"动":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{},"用":{"docs":{},"法":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}},"详":{"docs":{},"细":{"docs":{},"解":{"docs":{},"释":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"我":{"docs":{},"以":{"docs":{},"一":{"docs":{},"个":{"docs":{},"实":{"docs":{},"际":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"场":{"docs":{},"景":{"docs":{},"来":{"docs":{},"具":{"docs":{},"体":{"docs":{},"实":{"docs":{},"现":{"docs":{},"以":{"docs":{},"下":{"docs":{},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{},":":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},"演":{"docs":{},"示":{"docs":{},"了":{"docs":{},"如":{"docs":{},"何":{"docs":{},"使":{"docs":{},"用":{"docs":{},"并":{"docs":{},"行":{"docs":{},"流":{"docs":{},"很":{"docs":{},"容":{"docs":{},"易":{"docs":{},"的":{"docs":{},"提":{"docs":{},"高":{"docs":{},"性":{"docs":{},"能":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}},"章":{"docs":{},"节":{"docs":{},"解":{"docs":{},"释":{"docs":{},"最":{"docs":{},"常":{"docs":{},"见":{"docs":{},"的":{"docs":{},"流":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}},"依":{"docs":{},"次":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"上":{"docs":{},"面":{"docs":{},"各":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"或":{"docs":{},"者":{"docs":{},"目":{"docs":{},"录":{"docs":{},"的":{"docs":{},"用":{"docs":{},"途":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"的":{"docs":{},"设":{"docs":{},"置":{"docs":{},"让":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"对":{"docs":{},"响":{"docs":{},"应":{"docs":{},"内":{"docs":{},"容":{"docs":{},"缓":{"docs":{},"存":{"3":{"6":{"0":{"0":{"docs":{},"秒":{"docs":{},",":{"docs":{},"也":{"docs":{},"即":{"docs":{},"在":{"3":{"6":{"0":{"0":{"docs":{},"秒":{"docs":{},"内":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"客":{"docs":{},"户":{"docs":{},"再":{"docs":{},"次":{"docs":{},"访":{"docs":{},"问":{"docs":{},"该":{"docs":{},"资":{"docs":{},"源":{"docs":{},",":{"docs":{},"直":{"docs":{},"接":{"docs":{},"从":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"的":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"中":{"docs":{},"返":{"docs":{},"回":{"docs":{},"内":{"docs":{},"容":{"docs":{},"给":{"docs":{},"客":{"docs":{},"户":{"docs":{},",":{"docs":{},"不":{"docs":{},"要":{"docs":{},"再":{"docs":{},"从":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"获":{"docs":{},"取":{"docs":{},"(":{"docs":{},"当":{"docs":{},"然":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"功":{"docs":{},"能":{"docs":{},"是":{"docs":{},"靠":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},",":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"只":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"这":{"docs":{},"个":{"docs":{},"属":{"docs":{},"性":{"docs":{},"提":{"docs":{},"示":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"“":{"docs":{},"应":{"docs":{},"该":{"docs":{},"这":{"docs":{},"么":{"docs":{},"做":{"docs":{},"”":{"docs":{},",":{"docs":{},"做":{"docs":{},"不":{"docs":{},"做":{"docs":{},",":{"docs":{},"还":{"docs":{},"是":{"docs":{},"决":{"docs":{},"定":{"docs":{},"于":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"是":{"docs":{},"自":{"docs":{},"己":{"docs":{},"宣":{"docs":{},"称":{"docs":{},"支":{"docs":{},"持":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"的":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},",":{"docs":{},"则":{"docs":{},"就":{"docs":{},"应":{"docs":{},"该":{"docs":{},"这":{"docs":{},"样":{"docs":{},"实":{"docs":{},"现":{"docs":{},")":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}},"次":{"docs":{},"你":{"docs":{},"再":{"docs":{},"安":{"docs":{},"装":{"docs":{},"这":{"docs":{},"个":{"docs":{},"模":{"docs":{},"块":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}},"载":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.014563106796116505}},"地":{"docs":{},"址":{"docs":{},"可":{"docs":{},"以":{"docs":{},"到":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"搜":{"docs":{},",":{"docs":{},"我":{"docs":{},"这":{"docs":{},"里":{"docs":{},"给":{"docs":{},"出":{"docs":{},"一":{"docs":{},"个":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"s":{"docs":{},"o":{"docs":{},"f":{"docs":{},"t":{"docs":{},".":{"docs":{},"v":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"n":{"docs":{},"e":{"docs":{},"t":{"docs":{},"/":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"/":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"/":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}},"划":{"docs":{},"线":{"docs":{},"可":{"docs":{},"能":{"docs":{},"出":{"docs":{},"现":{"docs":{},"在":{"docs":{},"j":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"测":{"docs":{},"试":{"docs":{},"方":{"docs":{},"法":{"docs":{},"名":{"docs":{},"称":{"docs":{},"中":{"docs":{},"用":{"docs":{},"以":{"docs":{},"分":{"docs":{},"隔":{"docs":{},"名":{"docs":{},"称":{"docs":{},"的":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"组":{"docs":{},"件":{"docs":{},"。":{"docs":{},"一":{"docs":{},"个":{"docs":{},"典":{"docs":{},"型":{"docs":{},"的":{"docs":{},"模":{"docs":{},"式":{"docs":{},"是":{"docs":{},":":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"&":{"docs":{},"l":{"docs":{},"t":{"docs":{},";":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"&":{"docs":{},"g":{"docs":{},"t":{"docs":{},";":{"docs":{},"_":{"docs":{},"&":{"docs":{},"l":{"docs":{},"t":{"docs":{},";":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"&":{"docs":{},"g":{"docs":{},"t":{"docs":{},";":{"docs":{},",":{"docs":{},"例":{"docs":{},"如":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"p":{"docs":{},"o":{"docs":{},"p":{"docs":{},"_":{"docs":{},"e":{"docs":{},"m":{"docs":{},"p":{"docs":{},"t":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"⾯":{"docs":{},"面":{"docs":{},"的":{"docs":{},"的":{"docs":{},"表":{"docs":{},"⾥":{"docs":{},"里":{"docs":{},"分":{"docs":{},"析":{"docs":{},"了":{"docs":{},"分":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},"的":{"docs":{},"各":{"docs":{},"个":{"docs":{},"⽅":{"docs":{},"方":{"docs":{},"⾯":{"docs":{},"面":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}},"中":{"docs":{},"分":{"docs":{},"离":{"docs":{},"了":{"docs":{},"出":{"docs":{},"来":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"它":{"docs":{},"允":{"docs":{},"许":{"docs":{},"你":{"docs":{},"的":{"docs":{},"网":{"docs":{},"页":{"docs":{},"中":{"docs":{},"只":{"docs":{},"包":{"docs":{},"含":{"docs":{},"很":{"docs":{},"少":{"docs":{},"的":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"。":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}},"。":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}},"配":{"docs":{},"置":{"docs":{},"启":{"docs":{},"用":{"docs":{},"注":{"docs":{},"解":{"docs":{},"方":{"docs":{},"式":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}},",":{"docs":{},"用":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}},"才":{"docs":{},"得":{"docs":{},"以":{"docs":{},"修":{"docs":{},"复":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"在":{"docs":{},"这":{"docs":{},"之":{"docs":{},"后":{"docs":{},"才":{"docs":{},"可":{"docs":{},"以":{"docs":{},"放":{"docs":{},"心":{"docs":{},"使":{"docs":{},"用":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}},"这":{"docs":{},"句":{"docs":{},"话":{"docs":{},"大":{"docs":{},"概":{"docs":{},"做":{"docs":{},"了":{"docs":{},"下":{"docs":{},"面":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}},"国":{"docs":{},"联":{"docs":{},"通":{"docs":{},",":{"docs":{},"中":{"docs":{},"国":{"docs":{},"电":{"docs":{},"信":{"docs":{},"。":{"docs":{},"用":{"docs":{},"户":{"docs":{},"选":{"docs":{},"择":{"docs":{},"某":{"docs":{},"个":{"docs":{},"便":{"docs":{},"民":{"docs":{},"服":{"docs":{},"务":{"docs":{},"时":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}},"银":{"docs":{},"行":{"docs":{},"的":{"docs":{},"便":{"docs":{},"民":{"docs":{},"服":{"docs":{},"务":{"docs":{},"包":{"docs":{},"括":{"docs":{},"中":{"docs":{},"国":{"docs":{},"移":{"docs":{},"动":{"docs":{},"手":{"docs":{},"机":{"docs":{},"充":{"docs":{},"值":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"最":{"docs":{},"新":{"docs":{},"内":{"docs":{},"容":{"docs":{},"替":{"docs":{},"换":{"docs":{},"掉":{"docs":{},"你":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},"目":{"docs":{},"录":{"docs":{},"中":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{},"已":{"docs":{},"添":{"docs":{},"加":{"docs":{},"到":{"docs":{},"暂":{"docs":{},"存":{"docs":{},"区":{"docs":{},"的":{"docs":{},"改":{"docs":{},"动":{"docs":{},"以":{"docs":{},"及":{"docs":{},"新":{"docs":{},"文":{"docs":{},"件":{"docs":{},"都":{"docs":{},"不":{"docs":{},"会":{"docs":{},"受":{"docs":{},"到":{"docs":{},"影":{"docs":{},"响":{"docs":{},"。":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"也":{"docs":{},"有":{"docs":{},"。":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"执":{"docs":{},"行":{"docs":{},"如":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"叫":{"docs":{},"做":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}},"了":{"docs":{},"。":{"docs":{},"执":{"docs":{},"行":{"docs":{},"如":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{},"以":{"docs":{},"将":{"docs":{},"这":{"docs":{},"些":{"docs":{},"改":{"docs":{},"动":{"docs":{},"提":{"docs":{},"交":{"docs":{},"到":{"docs":{},"远":{"docs":{},"端":{"docs":{},"仓":{"docs":{},"库":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}},"括":{"docs":{},"号":{"docs":{},"是":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"一":{"docs":{},"部":{"docs":{},"分":{"docs":{},":":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"[":{"docs":{},"]":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}},"级":{"docs":{},"篇":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}},"作":{"docs":{},"为":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"启":{"docs":{},"动":{"docs":{},",":{"docs":{},"实":{"docs":{},"现":{"docs":{},"它":{"docs":{},"并":{"docs":{},"遵":{"docs":{},"循":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"参":{"docs":{},"数":{"docs":{},"约":{"docs":{},"定":{"docs":{},"即":{"docs":{},"可":{"docs":{},"。":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}},"个":{"docs":{},"架":{"docs":{},"构":{"docs":{},"师":{"docs":{},",":{"docs":{},"你":{"docs":{},"必":{"docs":{},"须":{"docs":{},"证":{"docs":{},"明":{"docs":{},"你":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},"决":{"docs":{},"策":{"docs":{},"是":{"docs":{},"正":{"docs":{},"确":{"docs":{},"的":{"docs":{},",":{"docs":{},"特":{"docs":{},"别":{"docs":{},"是":{"docs":{},"当":{"docs":{},"需":{"docs":{},"要":{"docs":{},"选":{"docs":{},"择":{"docs":{},"一":{"docs":{},"个":{"docs":{},"特":{"docs":{},"定":{"docs":{},"的":{"docs":{},"体":{"docs":{},"系":{"docs":{},"结":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{},"或":{"docs":{},"方":{"docs":{},"法":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"者":{"docs":{},"名":{"docs":{},"称":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"。":{"docs":{},"然":{"docs":{},"而":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"这":{"docs":{},"个":{"docs":{},"比":{"docs":{},"例":{"docs":{},"反":{"docs":{},"过":{"docs":{},"来":{"docs":{},",":{"docs":{},"大":{"docs":{},"部":{"docs":{},"分":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"都":{"docs":{},"是":{"docs":{},"仅":{"docs":{},"仅":{"docs":{},"穿":{"docs":{},"过":{"docs":{},"层":{"docs":{},",":{"docs":{},"不":{"docs":{},"做":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{},"那":{"docs":{},"么":{"docs":{},"开":{"docs":{},"放":{"docs":{},"一":{"docs":{},"些":{"docs":{},"架":{"docs":{},"构":{"docs":{},"层":{"docs":{},"会":{"docs":{},"比":{"docs":{},"较":{"docs":{},"好":{"docs":{},"。":{"docs":{},"不":{"docs":{},"过":{"docs":{},"由":{"docs":{},"于":{"docs":{},"缺":{"docs":{},"少":{"docs":{},"了":{"docs":{},"层":{"docs":{},"次":{"docs":{},"隔":{"docs":{},"离":{"docs":{},",":{"docs":{},"项":{"docs":{},"目":{"docs":{},"会":{"docs":{},"变":{"docs":{},"得":{"docs":{},"难":{"docs":{},"以":{"docs":{},"控":{"docs":{},"制":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"一":{"docs":{},"个":{"docs":{},"接":{"docs":{},"口":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"替":{"docs":{},"换":{"docs":{},"默":{"docs":{},"认":{"docs":{},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},".":{"docs":{},"y":{"docs":{},"m":{"docs":{},"l":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}},"些":{"docs":{},"动":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{},"生":{"docs":{},"成":{"docs":{},"方":{"docs":{},"法":{"docs":{},"甚":{"docs":{},"至":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"时":{"docs":{},"制":{"docs":{},"定":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"的":{"docs":{},"执":{"docs":{},"行":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},",":{"docs":{},"从":{"docs":{},"而":{"docs":{},"大":{"docs":{},"大":{"docs":{},"提":{"docs":{},"升":{"docs":{},"系":{"docs":{},"统":{"docs":{},"的":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"性":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"变":{"docs":{},"体":{"2":{"docs":{},"隐":{"docs":{},"式":{"docs":{},"编":{"docs":{},"译":{"docs":{},"器":{"docs":{},"隐":{"docs":{},"式":{"docs":{},"地":{"docs":{},"设":{"docs":{},"置":{"docs":{},"了":{"docs":{},"@":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},"注":{"docs":{},"解":{"docs":{},"。":{"docs":{},"这":{"docs":{},"对":{"docs":{},"于":{"docs":{},"通":{"docs":{},"过":{"docs":{},"反":{"docs":{},"射":{"docs":{},"来":{"docs":{},"读":{"docs":{},"取":{"docs":{},"注":{"docs":{},"解":{"docs":{},"信":{"docs":{},"息":{"docs":{},"是":{"docs":{},"非":{"docs":{},"常":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"8":{"docs":{},"的":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"+":{"docs":{},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"遍":{"docs":{},"历":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"测":{"docs":{},"试":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"性":{"docs":{},"能":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"搭":{"docs":{},"建":{"docs":{},"博":{"docs":{},"客":{"docs":{},"系":{"docs":{},"列":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}},"说":{"docs":{},"明":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"命":{"docs":{},"令":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"新":{"docs":{},"文":{"docs":{},"章":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"(":{"docs":{},"即":{"docs":{},"使":{"docs":{},"是":{"docs":{},"可":{"docs":{},"选":{"docs":{},"的":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}},"类":{"docs":{},"名":{"docs":{},"调":{"docs":{},"用":{"docs":{},"静":{"docs":{},"态":{"docs":{},"的":{"docs":{},"类":{"docs":{},"成":{"docs":{},"员":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"具":{"docs":{},"体":{"docs":{},"某":{"docs":{},"个":{"docs":{},"对":{"docs":{},"象":{"docs":{},"或":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"主":{"docs":{},"备":{"docs":{},"模":{"docs":{},"式":{"docs":{},",":{"docs":{},"实":{"docs":{},"现":{"docs":{},"数":{"docs":{},"据":{"docs":{},"备":{"docs":{},"份":{"docs":{},"和":{"docs":{},"高":{"docs":{},"可":{"docs":{},"用":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}},"集":{"docs":{},"群":{"docs":{},"对":{"docs":{},"应":{"docs":{},"用":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"进":{"docs":{},"行":{"docs":{},"冗":{"docs":{},"余":{"docs":{},",":{"docs":{},"实":{"docs":{},"现":{"docs":{},"高":{"docs":{},"可":{"docs":{},"用":{"docs":{},";":{"docs":{},"(":{"docs":{},"负":{"docs":{},"载":{"docs":{},"均":{"docs":{},"衡":{"docs":{},"设":{"docs":{},"备":{"docs":{},"可":{"docs":{},"与":{"docs":{},"应":{"docs":{},"用":{"docs":{},"一":{"docs":{},"块":{"docs":{},"部":{"docs":{},"署":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"链":{"docs":{},"接":{"docs":{},"相":{"docs":{},"对":{"docs":{},"于":{"docs":{},"根":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"显":{"docs":{},"示":{"docs":{},"草":{"docs":{},"稿":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}},"假":{"docs":{},"设":{"docs":{},"我":{"docs":{},"们":{"docs":{},"的":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"框":{"docs":{},"架":{"docs":{},"名":{"docs":{},"称":{"docs":{},"是":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}},"要":{"docs":{},"设":{"docs":{},"计":{"docs":{},"一":{"docs":{},"个":{"docs":{},"g":{"docs":{},"i":{"docs":{},"r":{"docs":{},"l":{"docs":{},"和":{"docs":{},"一":{"docs":{},"个":{"docs":{},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{},"类":{"docs":{},",":{"docs":{},"其":{"docs":{},"中":{"docs":{},"g":{"docs":{},"i":{"docs":{},"r":{"docs":{},"l":{"docs":{},"有":{"docs":{},"k":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"即":{"docs":{},"g":{"docs":{},"i":{"docs":{},"r":{"docs":{},"l":{"docs":{},"想":{"docs":{},"要":{"docs":{},"k":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"一":{"docs":{},"个":{"docs":{},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{},"。":{"docs":{},"那":{"docs":{},"么":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},"是":{"docs":{},",":{"docs":{},"g":{"docs":{},"i":{"docs":{},"r":{"docs":{},"l":{"docs":{},"如":{"docs":{},"何":{"docs":{},"能":{"docs":{},"够":{"docs":{},"认":{"docs":{},"识":{"docs":{},"这":{"docs":{},"个":{"docs":{},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{},"?":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},"高":{"docs":{},"峰":{"docs":{},"期":{"docs":{},"为":{"docs":{},"平":{"docs":{},"常":{"docs":{},"值":{"docs":{},"的":{"docs":{},"三":{"docs":{},"倍":{"docs":{},",":{"docs":{},"则":{"docs":{},"每":{"docs":{},"秒":{"docs":{},"的":{"docs":{},"并":{"docs":{},"发":{"docs":{},"数":{"docs":{},"可":{"docs":{},"以":{"docs":{},"达":{"docs":{},"到":{"8":{"3":{"4":{"0":{"docs":{},"次":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}},"如":{"docs":{},"你":{"docs":{},"想":{"docs":{},"丢":{"docs":{},"弃":{"docs":{},"你":{"docs":{},"在":{"docs":{},"本":{"docs":{},"地":{"docs":{},"的":{"docs":{},"所":{"docs":{},"有":{"docs":{},"改":{"docs":{},"动":{"docs":{},"与":{"docs":{},"提":{"docs":{},"交":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"到":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"上":{"docs":{},"获":{"docs":{},"取":{"docs":{},"最":{"docs":{},"新":{"docs":{},"的":{"docs":{},"版":{"docs":{},"本":{"docs":{},"历":{"docs":{},"史":{"docs":{},",":{"docs":{},"并":{"docs":{},"将":{"docs":{},"你":{"docs":{},"本":{"docs":{},"地":{"docs":{},"主":{"docs":{},"分":{"docs":{},"支":{"docs":{},"指":{"docs":{},"向":{"docs":{},"它":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"操":{"docs":{},"作":{"docs":{},"失":{"docs":{},"误":{"docs":{},"(":{"docs":{},"当":{"docs":{},"然":{"docs":{},",":{"docs":{},"这":{"docs":{},"最":{"docs":{},"好":{"docs":{},"永":{"docs":{},"远":{"docs":{},"不":{"docs":{},"要":{"docs":{},"发":{"docs":{},"生":{"docs":{},")":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"如":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{},"替":{"docs":{},"换":{"docs":{},"掉":{"docs":{},"本":{"docs":{},"地":{"docs":{},"改":{"docs":{},"动":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"做":{"docs":{},"任":{"docs":{},"何":{"docs":{},"事":{"docs":{},"情":{"docs":{},"都":{"docs":{},"需":{"docs":{},"要":{"docs":{},"做":{"docs":{},"好":{"docs":{},"规":{"docs":{},"划":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"我":{"docs":{},"们":{"docs":{},"在":{"docs":{},"开":{"docs":{},"发":{"docs":{},"博":{"docs":{},"客":{"docs":{},"系":{"docs":{},"统":{"docs":{},"之":{"docs":{},"前":{"docs":{},",":{"docs":{},"同":{"docs":{},"样":{"docs":{},"需":{"docs":{},"要":{"docs":{},"做":{"docs":{},"好":{"docs":{},"项":{"docs":{},"目":{"docs":{},"的":{"docs":{},"规":{"docs":{},"划":{"docs":{},",":{"docs":{},"如":{"docs":{},"何":{"docs":{},"设":{"docs":{},"置":{"docs":{},"目":{"docs":{},"录":{"docs":{},"结":{"docs":{},"构":{"docs":{},",":{"docs":{},"如":{"docs":{},"何":{"docs":{},"理":{"docs":{},"解":{"docs":{},"整":{"docs":{},"个":{"docs":{},"项":{"docs":{},"目":{"docs":{},"的":{"docs":{},"流":{"docs":{},"程":{"docs":{},"图":{"docs":{},",":{"docs":{},"当":{"docs":{},"我":{"docs":{},"们":{"docs":{},"理":{"docs":{},"解":{"docs":{},"了":{"docs":{},"应":{"docs":{},"用":{"docs":{},"的":{"docs":{},"执":{"docs":{},"行":{"docs":{},"过":{"docs":{},"程":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"接":{"docs":{},"下":{"docs":{},"来":{"docs":{},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"编":{"docs":{},"码":{"docs":{},"就":{"docs":{},"会":{"docs":{},"变":{"docs":{},"得":{"docs":{},"相":{"docs":{},"对":{"docs":{},"容":{"docs":{},"易":{"docs":{},"了":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"m":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{},"项":{"docs":{},"目":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}},"叫":{"docs":{},"做":{"docs":{},"“":{"docs":{},"f":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"_":{"docs":{},"x":{"docs":{},"”":{"docs":{},"的":{"docs":{},"分":{"docs":{},"支":{"docs":{},",":{"docs":{},"并":{"docs":{},"切":{"docs":{},"换":{"docs":{},"过":{"docs":{},"去":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}},"篇":{"docs":{},"文":{"docs":{},"章":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"不":{"docs":{},"指":{"docs":{},"定":{"docs":{},"l":{"docs":{},"a":{"docs":{},"y":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"就":{"docs":{},"使":{"docs":{},"用":{"docs":{},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},".":{"docs":{},"y":{"docs":{},"m":{"docs":{},"l":{"docs":{},"中":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"_":{"docs":{},"l":{"docs":{},"a":{"docs":{},"y":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"的":{"docs":{},"值":{"docs":{},",":{"docs":{},"标":{"docs":{},"题":{"docs":{},"中":{"docs":{},"如":{"docs":{},"果":{"docs":{},"有":{"docs":{},"空":{"docs":{},"格":{"docs":{},",":{"docs":{},"将":{"docs":{},"整":{"docs":{},"个":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"l":{"docs":{},"e":{"docs":{},"放":{"docs":{},"到":{"docs":{},"引":{"docs":{},"号":{"docs":{},"中":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"好":{"docs":{},"的":{"docs":{},"基":{"docs":{},"本":{"docs":{},"结":{"docs":{},"构":{"docs":{},"是":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}},"年":{"docs":{},"份":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"新":{"docs":{},"仓":{"docs":{},"库":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},",":{"docs":{},"打":{"docs":{},"开":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"执":{"docs":{},"行":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"一":{"docs":{},"下":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}},"个":{"docs":{},"网":{"docs":{},"站":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"没":{"docs":{},"有":{"docs":{},"提":{"docs":{},"供":{"docs":{},"f":{"docs":{},"o":{"docs":{},"l":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"会":{"docs":{},"在":{"docs":{},"当":{"docs":{},"前":{"docs":{},"目":{"docs":{},"录":{"docs":{},"设":{"docs":{},"置":{"docs":{},"网":{"docs":{},"站":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"上":{"docs":{},"下":{"docs":{},"文":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"配":{"docs":{},"置":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426}}}}}}},"注":{"docs":{},"入":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255}}}},"装":{"docs":{},"配":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}},"操":{"docs":{},"作":{"docs":{},"系":{"docs":{},"统":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}}},"级":{"docs":{},"篇":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}},"包":{"docs":{},"名":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"是":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}},"全":{"docs":{},"部":{"docs":{},"小":{"docs":{},"写":{"docs":{},",":{"docs":{},"连":{"docs":{},"续":{"docs":{},"的":{"docs":{},"单":{"docs":{},"词":{"docs":{},"只":{"docs":{},"是":{"docs":{},"简":{"docs":{},"单":{"docs":{},"地":{"docs":{},"连":{"docs":{},"接":{"docs":{},"起":{"docs":{},"来":{"docs":{},",":{"docs":{},"不":{"docs":{},"使":{"docs":{},"用":{"docs":{},"下":{"docs":{},"划":{"docs":{},"线":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"含":{"docs":{},"一":{"docs":{},"个":{"docs":{},"生":{"docs":{},"成":{"docs":{},"报":{"docs":{},"文":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}},"新":{"docs":{},"的":{"docs":{},"日":{"docs":{},"期":{"docs":{},"和":{"docs":{},"时":{"docs":{},"间":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},",":{"docs":{},"在":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"包":{"docs":{},"下":{"docs":{},"。":{"docs":{},"新":{"docs":{},"的":{"docs":{},"日":{"docs":{},"期":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"与":{"docs":{},"j":{"docs":{},"o":{"docs":{},"d":{"docs":{},"a":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"命":{"docs":{},"令":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}},"行":{"docs":{},"创":{"docs":{},"建":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}},"工":{"docs":{},"具":{"docs":{},"代":{"docs":{},"替":{"docs":{},"默":{"docs":{},"认":{"docs":{},"的":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}},"才":{"docs":{},"有":{"docs":{},"此":{"docs":{},"功":{"docs":{},"能":{"docs":{},":":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}},"马":{"docs":{},"上":{"docs":{},"同":{"docs":{},"步":{"docs":{},"一":{"docs":{},"个":{"docs":{},"模":{"docs":{},"块":{"docs":{},",":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}},"移":{"docs":{},"动":{"docs":{},"草":{"docs":{},"稿":{"docs":{},"到":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}},"名":{"docs":{},"约":{"docs":{},"定":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"建":{"docs":{},"立":{"docs":{},"路":{"docs":{},"由":{"docs":{},"、":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"、":{"docs":{},"视":{"docs":{},"图":{"docs":{},"相":{"docs":{},"关":{"docs":{},"的":{"docs":{},"包":{"docs":{},"和":{"docs":{},"类":{"docs":{},",":{"docs":{},"下":{"docs":{},"面":{"docs":{},"是":{"docs":{},"结":{"docs":{},"构":{"docs":{},":":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}},"一":{"docs":{},"个":{"docs":{},"全":{"docs":{},"品":{"docs":{},"类":{"docs":{},"的":{"docs":{},"电":{"docs":{},"子":{"docs":{},"商":{"docs":{},"务":{"docs":{},"网":{"docs":{},"站":{"docs":{},"(":{"docs":{},"b":{"2":{"docs":{},"c":{"docs":{},")":{"docs":{},",":{"docs":{},"用":{"docs":{},"户":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"线":{"docs":{},"购":{"docs":{},"买":{"docs":{},"商":{"docs":{},"品":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"线":{"docs":{},"支":{"docs":{},"付":{"docs":{},",":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"货":{"docs":{},"到":{"docs":{},"付":{"docs":{},"款":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}},"是":{"docs":{},"基":{"docs":{},"于":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},"m":{"docs":{},"v":{"docs":{},"c":{"docs":{},",":{"docs":{},"用":{"docs":{},"一":{"docs":{},"个":{"docs":{},"全":{"docs":{},"局":{"docs":{},"的":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"来":{"docs":{},"做":{"docs":{},"核":{"docs":{},"心":{"docs":{},"控":{"docs":{},"制":{"docs":{},"器":{"docs":{},",":{"docs":{},"使":{"docs":{},"用":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"2":{"docs":{},"o":{"docs":{},"框":{"docs":{},"架":{"docs":{},"作":{"docs":{},"为":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"基":{"docs":{},"础":{"docs":{},"访":{"docs":{},"问":{"docs":{},"。":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"展":{"docs":{},"示":{"docs":{},"给":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"信":{"docs":{},"息":{"docs":{},"的":{"docs":{},"结":{"docs":{},"构":{"docs":{},"及":{"docs":{},"样":{"docs":{},"式":{"docs":{},"。":{"docs":{},"一":{"docs":{},"个":{"docs":{},"视":{"docs":{},"图":{"docs":{},"通":{"docs":{},"常":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"网":{"docs":{},"页":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"在":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"中":{"docs":{},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"视":{"docs":{},"图":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"页":{"docs":{},"面":{"docs":{},"片":{"docs":{},"段":{"docs":{},",":{"docs":{},"如":{"docs":{},"页":{"docs":{},"头":{"docs":{},"、":{"docs":{},"页":{"docs":{},"尾":{"docs":{},"。":{"docs":{},"它":{"docs":{},"还":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"模":{"docs":{},"型":{"docs":{},"、":{"docs":{},"视":{"docs":{},"图":{"docs":{},"以":{"docs":{},"及":{"docs":{},"其":{"docs":{},"他":{"docs":{},"任":{"docs":{},"何":{"docs":{},"处":{"docs":{},"理":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"请":{"docs":{},"求":{"docs":{},"所":{"docs":{},"必":{"docs":{},"须":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"中":{"docs":{},"介":{"docs":{},",":{"docs":{},"并":{"docs":{},"生":{"docs":{},"成":{"docs":{},"网":{"docs":{},"页":{"docs":{},"。":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"核":{"docs":{},"心":{"docs":{},"的":{"docs":{},"一":{"docs":{},"块":{"docs":{},",":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"控":{"docs":{},"制":{"docs":{},"器":{"docs":{},",":{"docs":{},"每":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"的":{"docs":{},"接":{"docs":{},"收":{"docs":{},",":{"docs":{},"都":{"docs":{},"是":{"docs":{},"由":{"docs":{},"控":{"docs":{},"制":{"docs":{},"器":{"docs":{},"去":{"docs":{},"处":{"docs":{},"理":{"docs":{},"的":{"docs":{},"。":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"私":{"docs":{},"有":{"docs":{},"的":{"docs":{},",":{"docs":{},"除":{"docs":{},"了":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}},"谁":{"docs":{},"调":{"docs":{},"用":{"docs":{},"了":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"?":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}}}}}}}}},"从":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}},"否":{"docs":{},"启":{"docs":{},"用":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}},"显":{"docs":{},"示":{"docs":{},"未":{"docs":{},"来":{"docs":{},"日":{"docs":{},"期":{"docs":{},"文":{"docs":{},"章":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"为":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}},"渲":{"docs":{},"染":{"docs":{},"_":{"docs":{},"d":{"docs":{},"r":{"docs":{},"a":{"docs":{},"f":{"docs":{},"t":{"docs":{},"s":{"docs":{},"目":{"docs":{},"录":{"docs":{},"下":{"docs":{},"的":{"docs":{},"文":{"docs":{},"章":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"为":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}},"开":{"docs":{},"启":{"docs":{},"评":{"docs":{},"论":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"为":{"docs":{},"t":{"docs":{},"r":{"docs":{},"u":{"docs":{},"e":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}},"“":{"docs":{},"默":{"docs":{},"认":{"docs":{},"的":{"docs":{},"”":{"docs":{},"分":{"docs":{},"支":{"docs":{},"。":{"docs":{},"在":{"docs":{},"其":{"docs":{},"他":{"docs":{},"分":{"docs":{},"支":{"docs":{},"上":{"docs":{},"进":{"docs":{},"行":{"docs":{},"开":{"docs":{},"发":{"docs":{},",":{"docs":{},"完":{"docs":{},"成":{"docs":{},"后":{"docs":{},"再":{"docs":{},"将":{"docs":{},"它":{"docs":{},"们":{"docs":{},"合":{"docs":{},"并":{"docs":{},"到":{"docs":{},"主":{"docs":{},"分":{"docs":{},"支":{"docs":{},"上":{"docs":{},"。":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"你":{"docs":{},"想":{"docs":{},"要":{"docs":{},"标":{"docs":{},"记":{"docs":{},"的":{"docs":{},"提":{"docs":{},"交":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"的":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},",":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"包":{"docs":{},"含":{"docs":{},"若":{"docs":{},"干":{"docs":{},"个":{"docs":{},"属":{"docs":{},"性":{"docs":{},",":{"docs":{},"格":{"docs":{},"式":{"docs":{},"为":{"docs":{},"“":{"docs":{},"属":{"docs":{},"性":{"docs":{},"名":{"docs":{},":":{"docs":{},"属":{"docs":{},"性":{"docs":{},"值":{"docs":{},"”":{"docs":{},",":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"据":{"docs":{},"此":{"docs":{},"获":{"docs":{},"取":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"的":{"docs":{},"信":{"docs":{},"息":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"报":{"docs":{},"文":{"docs":{},"体":{"docs":{},",":{"docs":{},"它":{"docs":{},"将":{"docs":{},"一":{"docs":{},"个":{"docs":{},"页":{"docs":{},"面":{"docs":{},"表":{"docs":{},"单":{"docs":{},"中":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"值":{"docs":{},"通":{"docs":{},"过":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"1":{"docs":{},"=":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"1":{"docs":{},"&":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"2":{"docs":{},"=":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"2":{"docs":{},"的":{"docs":{},"键":{"docs":{},"值":{"docs":{},"对":{"docs":{},"形":{"docs":{},"式":{"docs":{},"编":{"docs":{},"码":{"docs":{},"成":{"docs":{},"一":{"docs":{},"个":{"docs":{},"格":{"docs":{},"式":{"docs":{},"化":{"docs":{},"串":{"docs":{},",":{"docs":{},"它":{"docs":{},"承":{"docs":{},"载":{"docs":{},"多":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"参":{"docs":{},"数":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"。":{"docs":{},"不":{"docs":{},"但":{"docs":{},"报":{"docs":{},"文":{"docs":{},"体":{"docs":{},"可":{"docs":{},"以":{"docs":{},"传":{"docs":{},"递":{"docs":{},"请":{"docs":{},"求":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"请":{"docs":{},"求":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"类":{"docs":{},"似":{"docs":{},"于":{"docs":{},"“":{"docs":{},"/":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"p":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"1":{"5":{"docs":{},"/":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},"?":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}},"docs":{}}}}}}}},"docs":{}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}},"请":{"docs":{},"求":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"和":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"是":{"docs":{},"最":{"docs":{},"常":{"docs":{},"见":{"docs":{},"的":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"除":{"docs":{},"此":{"docs":{},"以":{"docs":{},"外":{"docs":{},"还":{"docs":{},"包":{"docs":{},"括":{"docs":{},"d":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"、":{"docs":{},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"、":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"、":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"、":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"。":{"docs":{},"不":{"docs":{},"过":{"docs":{},",":{"docs":{},"当":{"docs":{},"前":{"docs":{},"的":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"浏":{"docs":{},"览":{"docs":{},"器":{"docs":{},"只":{"docs":{},"支":{"docs":{},"持":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"和":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},",":{"docs":{},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"再":{"docs":{},"好":{"docs":{},"不":{"docs":{},"过":{"docs":{},"的":{"docs":{},"了":{"docs":{},"。":{"docs":{},"然":{"docs":{},"后":{"docs":{},",":{"docs":{},"从":{"docs":{},"架":{"docs":{},"构":{"docs":{},"的":{"docs":{},"角":{"docs":{},"度":{"docs":{},"上":{"docs":{},"来":{"docs":{},"说":{"docs":{},",":{"docs":{},"选":{"docs":{},"择":{"docs":{},"这":{"docs":{},"个":{"docs":{},"模":{"docs":{},"式":{"docs":{},"还":{"docs":{},"要":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"很":{"docs":{},"多":{"docs":{},"的":{"docs":{},"东":{"docs":{},"⻄":{"docs":{},"西":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"开":{"docs":{},"放":{"docs":{},"的":{"docs":{},",":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"可":{"docs":{},"以":{"docs":{},"绕":{"docs":{},"过":{"docs":{},"服":{"docs":{},"务":{"docs":{},"层":{"docs":{},",":{"docs":{},"直":{"docs":{},"接":{"docs":{},"访":{"docs":{},"问":{"docs":{},"数":{"docs":{},"据":{"docs":{},"持":{"docs":{},"久":{"docs":{},"层":{"docs":{},"。":{"docs":{},"这":{"docs":{},"样":{"docs":{},"就":{"docs":{},"非":{"docs":{},"常":{"docs":{},"合":{"docs":{},"理":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"模":{"docs":{},"型":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}},"版":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{},"当":{"docs":{},"你":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"篇":{"docs":{},"新":{"docs":{},"的":{"docs":{},"文":{"docs":{},"章":{"docs":{},"时":{"docs":{},",":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"会":{"docs":{},"依":{"docs":{},"据":{"docs":{},"模":{"docs":{},"版":{"docs":{},"文":{"docs":{},"件":{"docs":{},"进":{"docs":{},"行":{"docs":{},"创":{"docs":{},"建":{"docs":{},",":{"docs":{},"主":{"docs":{},"要":{"docs":{},"用":{"docs":{},"在":{"docs":{},"你":{"docs":{},"想":{"docs":{},"在":{"docs":{},"每":{"docs":{},"篇":{"docs":{},"文":{"docs":{},"章":{"docs":{},"都":{"docs":{},"添":{"docs":{},"加":{"docs":{},"一":{"docs":{},"些":{"docs":{},"共":{"docs":{},"性":{"docs":{},"的":{"docs":{},"内":{"docs":{},"容":{"docs":{},"的":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"式":{"docs":{},"分":{"docs":{},"析":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.013986013986013986}}}}}},"约":{"docs":{},"定":{"docs":{},"一":{"docs":{},"下":{"docs":{},"框":{"docs":{},"架":{"docs":{},"基":{"docs":{},"础":{"docs":{},"信":{"docs":{},"息":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}},"束":{"docs":{},"条":{"docs":{},"件":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"页":{"docs":{},"面":{"docs":{},",":{"docs":{},"或":{"docs":{},"其":{"docs":{},"它":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"“":{"docs":{},"页":{"docs":{},"面":{"docs":{},"”":{"docs":{},",":{"docs":{},"j":{"docs":{},"s":{"docs":{},"p":{"docs":{},"已":{"docs":{},"经":{"docs":{},"很":{"docs":{},"好":{"docs":{},"的":{"docs":{},"实":{"docs":{},"现":{"docs":{},"了":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"层":{"docs":{},"中":{"docs":{},"的":{"docs":{},"部":{"docs":{},"分":{"docs":{},"功":{"docs":{},"能":{"docs":{},"。":{"docs":{"mvc/1.plan.html":{"ref":"mvc/1.plan.html","tf":0.013513513513513514}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"\"":{"0":{"docs":{},".":{"0":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"docs":{}}},"docs":{}}},"1":{"2":{"3":{"docs":{},"\"":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}},"docs":{}},"2":{"0":{"1":{"3":{"docs":{},"/":{"7":{"docs":{},"/":{"1":{"3":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"docs":{}},"docs":{}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"7":{"3":{"7":{"0":{"6":{"0":{"docs":{},"c":{"docs":{},"d":{"8":{"docs":{},"c":{"2":{"8":{"4":{"docs":{},"d":{"8":{"docs":{},"a":{"docs":{},"f":{"7":{"docs":{},"a":{"docs":{},"d":{"3":{"0":{"8":{"2":{"docs":{},"f":{"2":{"0":{"9":{"5":{"8":{"2":{"docs":{},"d":{"docs":{},"\"":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}},"docs":{}}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.05421686746987952}},"]":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"x":{"docs":{},"o":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.024657534246575342}},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521}}}}}}}},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"\"":{"docs":{},",":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"/":{"docs":{},"\"":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}},")":{"docs":{},";":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}}},".":{"docs":{},"t":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"\"":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}}}}}}}}}},")":{"docs":{},"\"":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.011799410029498525}}}}}}}}}},"买":{"docs":{},"了":{"docs":{},"\"":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}},"在":{"docs":{},"g":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"!":{"docs":{},"!":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}},"毛":{"docs":{},"钱":{"docs":{},"的":{"docs":{},"特":{"docs":{},"效":{"docs":{},",":{"docs":{},"装":{"docs":{},"逼":{"docs":{},"成":{"docs":{},"功":{"docs":{},"!":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}},"没":{"docs":{},"钱":{"docs":{},"还":{"docs":{},"想":{"docs":{},"装":{"docs":{},"逼":{"docs":{},",":{"docs":{},"真":{"docs":{},"是":{"docs":{},"匪":{"docs":{},"夷":{"docs":{},"所":{"docs":{},"思":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}},"小":{"docs":{},"鱼":{"docs":{},"人":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}},"爆":{"docs":{},"裂":{"docs":{},"魔":{"docs":{},"杖":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}},"购":{"docs":{},"买":{"docs":{},"了":{"docs":{},"\"":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}},"德":{"docs":{},"玛":{"docs":{},"西":{"docs":{},"亚":{"docs":{},"之":{"docs":{},"力":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}},"神":{"docs":{},"盾":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}},"\"":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}},")":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}},".":{"docs":{},"\"":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"l":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"/":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"/":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},";":{"docs":{},"\"":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}},"e":{"docs":{},"w":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},"l":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"e":{"docs":{},"\"":{"docs":{},"}":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"c":{"docs":{},"c":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}},"a":{"docs":{},"n":{"docs":{},"\"":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},"\"":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}},"d":{"docs":{},"d":{"1":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"2":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"docs":{}}},"o":{"docs":{},"e":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"\"":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}},"#":{"docs":{},"\"":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"a":{"docs":{},"a":{"docs":{},"a":{"1":{"docs":{},"\"":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"#":{"docs":{},"a":{"docs":{},"a":{"docs":{},"a":{"2":{"docs":{},"#":{"docs":{},"b":{"docs":{},"b":{"docs":{},"b":{"1":{"docs":{},"#":{"docs":{},"b":{"docs":{},"b":{"docs":{},"b":{"2":{"docs":{},"#":{"docs":{},"b":{"docs":{},"b":{"docs":{},"b":{"3":{"docs":{},"#":{"docs":{},"c":{"docs":{},"c":{"docs":{},"c":{"docs":{},"#":{"docs":{},"d":{"docs":{},"d":{"docs":{},"d":{"1":{"docs":{},"#":{"docs":{},"d":{"docs":{},"d":{"docs":{},"d":{"2":{"docs":{},"\"":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}}}}}},"docs":{}}}}}}}}}},"docs":{}}}}}},"docs":{}}}}}},"docs":{}}}}}},"docs":{}}}}}},"2":{"docs":{},"\"":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}},"docs":{}}},"n":{"docs":{},"n":{"docs":{},"a":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"b":{"docs":{},"\"":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"a":{"docs":{},"m":{"docs":{},"\"":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"b":{"docs":{},"b":{"2":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"3":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"docs":{}}}},"j":{"docs":{},"\"":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"m":{"docs":{},"i":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"k":{"docs":{},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}},"s":{"docs":{},"k":{"docs":{},"y":{"docs":{},"w":{"docs":{},"a":{"docs":{},"l":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"\"":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"v":{"docs":{},"a":{"docs":{},"l":{"3":{"3":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"9":{"docs":{},"\"":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"docs":{},"\"":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521}}}}}}}}}}},"w":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}},"x":{"docs":{},"e":{"docs":{},"n":{"docs":{},"i":{"docs":{},"a":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}},"m":{"docs":{},"l":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"^":{"0":{"docs":{},".":{"1":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0136986301369863}}}}},"2":{"docs":{},"\"":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"docs":{}}},"2":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"4":{"docs":{},"\"":{"docs":{},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"docs":{}}},"docs":{}}},"3":{"docs":{},".":{"0":{"docs":{},".":{"0":{"docs":{},"\"":{"docs":{},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"docs":{}}},"docs":{}}},"docs":{}},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"l":{"docs":{},"e":{"docs":{},"\"":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"代":{"docs":{},"码":{"docs":{},"提":{"docs":{},"交":{"docs":{},"信":{"docs":{},"息":{"docs":{},"\"":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}},"\\":{"docs":{},"u":{"0":{"3":{"docs":{},"b":{"docs":{},"c":{"docs":{},"s":{"docs":{},"\"":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0036144578313253013}}}}}}}},"docs":{}},"docs":{}}},"y":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"u":{"docs":{},"b":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"μ":{"docs":{},"s":{"docs":{},"\"":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"*":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.03314917127071823},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.015723270440251572},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.05314009661835749},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.05325443786982249},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.07623318385650224},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.06489675516224189},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.04107648725212465},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.006071118820468344},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.006024096385542169}},"/":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.019337016574585635},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.024154589371980676},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.01775147928994083},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.02242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.02064896755162242},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.021246458923512748},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.004336513443191674},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.004819277108433735}},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}},"注":{"docs":{},"释":{"docs":{},",":{"docs":{},"后":{"docs":{},"续":{"docs":{},"行":{"docs":{},"必":{"docs":{},"须":{"docs":{},"从":{"docs":{},"*":{"docs":{},"开":{"docs":{},"始":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}},"风":{"docs":{},"格":{"docs":{},",":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"/":{"docs":{},"/":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}},",":{"docs":{},"这":{"docs":{},"是":{"docs":{},"不":{"docs":{},"正":{"docs":{},"确":{"docs":{},"的":{"docs":{},"。":{"docs":{},"它":{"docs":{},"应":{"docs":{},"该":{"docs":{},"写":{"docs":{},"成":{"docs":{},"/":{"docs":{},"*":{"docs":{},"*":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}},"*":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"注":{"docs":{},"解":{"docs":{},"类":{"docs":{},":":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}},"+":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.008287292817679558},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.008968609865470852},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.03787878787878788},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0056657223796034},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.00975609756097561},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.006938421509106678},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.007692307692307693},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.05421686746987952},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"=":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}},"/":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"*":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.005203816131830009},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},"*":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.019337016574585635},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.024154589371980676},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.01775147928994083},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.02242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.02064896755162242},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.021246458923512748},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}}},"/":{"1":{"docs":{},".":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}},"2":{"docs":{},".":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}},"3":{"docs":{},".":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}},"5":{"5":{"docs":{},".":{"0":{"0":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.018867924528301886},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.014164305949008499},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.01951219512195122},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.010407632263660017},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.007481296758104738},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.051923076923076926},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.020481927710843374}},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}},"①":{"docs":{},"根":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"在":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"中":{"docs":{},"访":{"docs":{},"问":{"docs":{},"不":{"docs":{},"到":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"返":{"docs":{},"回":{"docs":{},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"o":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}},"a":{"docs":{},"y":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"d":{"docs":{},"b":{"docs":{},"y":{"docs":{},"e":{"docs":{},"方":{"docs":{},"法":{"docs":{},"同":{"docs":{},"理":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}},"声":{"docs":{},"明":{"docs":{},"成":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}},"类":{"docs":{},"加":{"docs":{},"载":{"docs":{},"时":{"docs":{},"就":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"就":{"docs":{},"是":{"docs":{},"将":{"docs":{},"方":{"docs":{},"法":{"docs":{},"都":{"docs":{},"加":{"docs":{},"入":{"docs":{},"到":{"docs":{},"一":{"docs":{},"个":{"docs":{},"列":{"docs":{},"表":{"docs":{},"中":{"docs":{},",":{"docs":{},"并":{"docs":{},"与":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"对":{"docs":{},"应":{"docs":{},"起":{"docs":{},"来":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"下":{"docs":{},"面":{"docs":{},"这":{"docs":{},"三":{"docs":{},"句":{"docs":{},"代":{"docs":{},"码":{"docs":{},"是":{"docs":{},"核":{"docs":{},"心":{"docs":{},"代":{"docs":{},"码":{"docs":{},",":{"docs":{},"返":{"docs":{},"回":{"docs":{},"实":{"docs":{},"现":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"类":{"docs":{},"并":{"docs":{},"包":{"docs":{},"含":{"docs":{},"了":{"docs":{},"所":{"docs":{},"需":{"docs":{},"要":{"docs":{},"的":{"docs":{},"信":{"docs":{},"息":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"个":{"docs":{},"过":{"docs":{},"程":{"docs":{},"就":{"docs":{},"是":{"docs":{},"填":{"docs":{},"充":{"docs":{},"s":{"docs":{},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"过":{"docs":{},"程":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}},"你":{"docs":{},"想":{"docs":{},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{},"类":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"该":{"docs":{},"类":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}},"利":{"docs":{},"用":{"docs":{},"反":{"docs":{},"射":{"docs":{},"获":{"docs":{},"取":{"docs":{},"你":{"docs":{},"想":{"docs":{},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{},"类":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}},"懒":{"docs":{},"加":{"docs":{},"载":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"填":{"docs":{},"充":{"docs":{},"s":{"docs":{},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"是":{"docs":{},"一":{"docs":{},"种":{"docs":{},"线":{"docs":{},"程":{"docs":{},"安":{"docs":{},"全":{"docs":{},"的":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"加":{"docs":{},"入":{"docs":{},"一":{"docs":{},"个":{"docs":{},"静":{"docs":{},"态":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"块":{"docs":{},",":{"docs":{},"将":{"docs":{},"每":{"docs":{},"一":{"docs":{},"个":{"docs":{},"属":{"docs":{},"性":{"docs":{},"都":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},",":{"docs":{},"这":{"docs":{},"里":{"docs":{},"静":{"docs":{},"态":{"docs":{},"代":{"docs":{},"码":{"docs":{},"块":{"docs":{},"也":{"docs":{},"叫":{"docs":{},"类":{"docs":{},"构":{"docs":{},"造":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"其":{"docs":{},"实":{"docs":{},"就":{"docs":{},"是":{"docs":{},"名":{"docs":{},"称":{"docs":{},"为":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"加":{"docs":{},"到":{"docs":{},"方":{"docs":{},"法":{"docs":{},"列":{"docs":{},"表":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"载":{"docs":{},"每":{"docs":{},"一":{"docs":{},"个":{"docs":{},"接":{"docs":{},"口":{"docs":{},"运":{"docs":{},"行":{"docs":{},"时":{"docs":{},"的":{"docs":{},"信":{"docs":{},"息":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}},"填":{"docs":{},"充":{"docs":{},"s":{"docs":{},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}}}}}}}},"如":{"docs":{},"果":{"docs":{},"传":{"docs":{},"入":{"docs":{},"不":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"接":{"docs":{},"口":{"docs":{},"类":{"docs":{},"型":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"你":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"加":{"docs":{},"载":{"docs":{},"的":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"与":{"docs":{},"你":{"docs":{},"传":{"docs":{},"入":{"docs":{},"的":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"不":{"docs":{},"相":{"docs":{},"等":{"docs":{},",":{"docs":{},"抛":{"docs":{},"出":{"docs":{},"异":{"docs":{},"常":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"将":{"docs":{},"接":{"docs":{},"口":{"docs":{},"列":{"docs":{},"表":{"docs":{},"中":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"与":{"docs":{},"接":{"docs":{},"口":{"docs":{},"下":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"对":{"docs":{},"应":{"docs":{},"起":{"docs":{},"来":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}},"每":{"docs":{},"一":{"docs":{},"个":{"docs":{},"代":{"docs":{},"理":{"docs":{},"方":{"docs":{},"法":{"docs":{},"都":{"docs":{},"加":{"docs":{},"到":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"中":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}},"接":{"docs":{},"下":{"docs":{},"来":{"docs":{},"就":{"docs":{},"是":{"docs":{},"写":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"过":{"docs":{},"程":{"docs":{},",":{"docs":{},"包":{"docs":{},"括":{"docs":{},"魔":{"docs":{},"数":{"docs":{},",":{"docs":{},"类":{"docs":{},"名":{"docs":{},",":{"docs":{},"常":{"docs":{},"量":{"docs":{},"池":{"docs":{},"等":{"docs":{},"一":{"docs":{},"系":{"docs":{},"列":{"docs":{},"字":{"docs":{},"节":{"docs":{},"码":{"docs":{},"的":{"docs":{},"组":{"docs":{},"成":{"docs":{},",":{"docs":{},"就":{"docs":{},"不":{"docs":{},"一":{"docs":{},"一":{"docs":{},"细":{"docs":{},"说":{"docs":{},"了":{"docs":{},"。":{"docs":{},"需":{"docs":{},"要":{"docs":{},"的":{"docs":{},"可":{"docs":{},"以":{"docs":{},"参":{"docs":{},"考":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"虚":{"docs":{},"拟":{"docs":{},"机":{"docs":{},"字":{"docs":{},"节":{"docs":{},"码":{"docs":{},"的":{"docs":{},"相":{"docs":{},"关":{"docs":{},"知":{"docs":{},"识":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"口":{"docs":{},"列":{"docs":{},"表":{"docs":{},"数":{"docs":{},"目":{"docs":{},"不":{"docs":{},"能":{"docs":{},"超":{"docs":{},"过":{"0":{"docs":{},"x":{"docs":{},"f":{"docs":{},"f":{"docs":{},"f":{"docs":{},"f":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"docs":{}}}}}}}}}}},"方":{"docs":{},"法":{"docs":{},"中":{"docs":{},"加":{"docs":{},"入":{"docs":{},"构":{"docs":{},"造":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"构":{"docs":{},"造":{"docs":{},"方":{"docs":{},"法":{"docs":{},"只":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},",":{"docs":{},"就":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"带":{"docs":{},"有":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"接":{"docs":{},"口":{"docs":{},"的":{"docs":{},"构":{"docs":{},"造":{"docs":{},"方":{"docs":{},"法":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"和":{"docs":{},"属":{"docs":{},"性":{"docs":{},"个":{"docs":{},"数":{"docs":{},"都":{"docs":{},"不":{"docs":{},"能":{"docs":{},"超":{"docs":{},"过":{"6":{"5":{"5":{"3":{"5":{"docs":{},",":{"docs":{},"包":{"docs":{},"括":{"docs":{},"之":{"docs":{},"前":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"个":{"docs":{},"数":{"docs":{},"也":{"docs":{},"是":{"docs":{},"这":{"docs":{},"样":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}},"注":{"docs":{},"意":{"docs":{},"这":{"docs":{},"里":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"此":{"docs":{},"处":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}},"生":{"docs":{},"成":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"随":{"docs":{},"机":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"的":{"docs":{},"类":{"docs":{},"名":{"docs":{},",":{"docs":{},"$":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"i":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}},"用":{"docs":{},"到":{"docs":{},"时":{"docs":{},"候":{"docs":{},"才":{"docs":{},"加":{"docs":{},"载":{"docs":{},",":{"docs":{},"懒":{"docs":{},"加":{"docs":{},"载":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}},"结":{"docs":{},"束":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}},"给":{"docs":{},"每":{"docs":{},"一":{"docs":{},"个":{"docs":{},"代":{"docs":{},"理":{"docs":{},"方":{"docs":{},"法":{"docs":{},"加":{"docs":{},"一":{"docs":{},"个":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"属":{"docs":{},"性":{"docs":{},",":{"docs":{},"数":{"docs":{},"字":{"1":{"0":{"docs":{},"是":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"标":{"docs":{},"识":{"docs":{},"符":{"docs":{},",":{"docs":{},"代":{"docs":{},"表":{"docs":{},"这":{"docs":{},"些":{"docs":{},"属":{"docs":{},"性":{"docs":{},"都":{"docs":{},"是":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}},"获":{"docs":{},"取":{"docs":{},"接":{"docs":{},"口":{"docs":{},"信":{"docs":{},"息":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"本":{"docs":{},"地":{"docs":{},"化":{"docs":{},"信":{"docs":{},"息":{"docs":{},"(":{"docs":{},"读":{"docs":{},"取":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"中":{"docs":{},"的":{"docs":{},"c":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{},"e":{"docs":{},"(":{"docs":{},"读":{"docs":{},"取":{"docs":{},"c":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{},"e":{"docs":{},"的":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{},")":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"指":{"docs":{},"定":{"docs":{},"名":{"docs":{},"称":{"docs":{},"的":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{},"的":{"docs":{},"值":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"中":{"docs":{},"的":{"docs":{},"属":{"docs":{},"性":{"docs":{},"名":{"docs":{},"称":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}},"体":{"docs":{},"的":{"docs":{},"长":{"docs":{},"度":{"docs":{},"(":{"docs":{},"读":{"docs":{},"取":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}},"这":{"docs":{},"一":{"docs":{},"段":{"docs":{},"是":{"docs":{},"看":{"docs":{},"你":{"docs":{},"传":{"docs":{},"入":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"中":{"docs":{},"有":{"docs":{},"没":{"docs":{},"有":{"docs":{},"不":{"docs":{},"是":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"有":{"docs":{},",":{"docs":{},"这":{"docs":{},"些":{"docs":{},"接":{"docs":{},"口":{"docs":{},"必":{"docs":{},"须":{"docs":{},"全":{"docs":{},"部":{"docs":{},"在":{"docs":{},"一":{"docs":{},"个":{"docs":{},"包":{"docs":{},"里":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},",":{"docs":{},"否":{"docs":{},"则":{"docs":{},"抛":{"docs":{},"异":{"docs":{},"常":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"个":{"docs":{},"才":{"docs":{},"是":{"docs":{},"真":{"docs":{},"正":{"docs":{},"给":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"加":{"docs":{},"入":{"docs":{},"方":{"docs":{},"法":{"docs":{},"了":{"docs":{},",":{"docs":{},"不":{"docs":{},"过":{"docs":{},"还":{"docs":{},"没":{"docs":{},"真":{"docs":{},"正":{"docs":{},"处":{"docs":{},"理":{"docs":{},",":{"docs":{},"只":{"docs":{},"是":{"docs":{},"先":{"docs":{},"加":{"docs":{},"进":{"docs":{},"来":{"docs":{},"等":{"docs":{},"待":{"docs":{},"循":{"docs":{},"环":{"docs":{},",":{"docs":{},"构":{"docs":{},"造":{"docs":{},"方":{"docs":{},"法":{"docs":{},"在":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},"的":{"docs":{},"名":{"docs":{},"称":{"docs":{},"描":{"docs":{},"述":{"docs":{},"是":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"是":{"docs":{},"因":{"docs":{},"为":{"docs":{},"在":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},",":{"docs":{},"这":{"docs":{},"些":{"docs":{},"个":{"docs":{},"数":{"docs":{},"都":{"docs":{},"是":{"docs":{},"用":{"4":{"docs":{},"位":{"1":{"6":{"docs":{},"进":{"docs":{},"制":{"docs":{},"表":{"docs":{},"示":{"docs":{},"的":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"最":{"docs":{},"大":{"docs":{},"值":{"docs":{},"是":{"2":{"docs":{},"的":{"1":{"6":{"docs":{},"次":{"docs":{},"方":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"docs":{}},"docs":{}}},"docs":{}}}}}}}}}}}}}},"docs":{}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}},"里":{"docs":{},"给":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"对":{"docs":{},"应":{"docs":{},"了":{"docs":{},"三":{"docs":{},"个":{"docs":{},"方":{"docs":{},"法":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},",":{"docs":{},"t":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"和":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"验":{"docs":{},"证":{"docs":{},"接":{"docs":{},"口":{"docs":{},"是":{"docs":{},"否":{"docs":{},"重":{"docs":{},"复":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}},"定":{"docs":{},"义":{"docs":{},"一":{"docs":{},"个":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},"的":{"docs":{},"列":{"docs":{},"表":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}},"根":{"docs":{},"据":{"docs":{},"用":{"docs":{},"户":{"docs":{},"缴":{"docs":{},"费":{"docs":{},"类":{"docs":{},"型":{"docs":{},",":{"docs":{},"生":{"docs":{},"成":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"通":{"docs":{},"信":{"docs":{},"报":{"docs":{},"文":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}},"解":{"docs":{},"析":{"docs":{},"注":{"docs":{},"解":{"docs":{},"方":{"docs":{},"法":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},"的":{"docs":{},"注":{"docs":{},"解":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}},"载":{"docs":{},"入":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},"方":{"docs":{},"法":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}},"遍":{"docs":{},"历":{"docs":{},"所":{"docs":{},"有":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.024096385542168676}}}}}}}},"共":{"docs":{},"数":{"docs":{},"据":{"docs":{},"传":{"docs":{},"输":{"1":{"docs":{},".":{"1":{"5":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}}},"docs":{}}}}}},"均":{"docs":{},"每":{"docs":{},"秒":{"docs":{},"完":{"docs":{},"成":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}},"失":{"docs":{},"败":{"docs":{},"处":{"docs":{},"理":{"docs":{},"次":{"docs":{},"数":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"完":{"docs":{},"成":{"5":{"5":{"0":{"docs":{},"次":{"docs":{},"处":{"docs":{},"理":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}},"docs":{}},"docs":{}},"docs":{}}},"实":{"docs":{},"际":{"docs":{},"最":{"docs":{},"高":{"docs":{},"并":{"docs":{},"发":{"docs":{},"数":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}},"平":{"docs":{},"均":{"docs":{},"每":{"docs":{},"秒":{"docs":{},"传":{"docs":{},"送":{"docs":{},"数":{"docs":{},"据":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}},"总":{"docs":{},"共":{"docs":{},"用":{"docs":{},"时":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}},"成":{"docs":{},"功":{"docs":{},"处":{"docs":{},"理":{"docs":{},"次":{"docs":{},"数":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"显":{"docs":{},"示":{"docs":{},"网":{"docs":{},"络":{"docs":{},"连":{"docs":{},"接":{"docs":{},"的":{"docs":{},"速":{"docs":{},"度":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}},"每":{"docs":{},"次":{"docs":{},"传":{"docs":{},"输":{"docs":{},"所":{"docs":{},"花":{"docs":{},"最":{"docs":{},"短":{"docs":{},"时":{"docs":{},"间":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}},"长":{"docs":{},"时":{"docs":{},"间":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}},"不":{"docs":{},"但":{"docs":{},"会":{"docs":{},"设":{"docs":{},"置":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"的":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},",":{"docs":{},"还":{"docs":{},"会":{"docs":{},"生":{"docs":{},"成":{"3":{"0":{"3":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},"码":{"docs":{},"呢":{"docs":{},",":{"docs":{},"两":{"docs":{},"者":{"docs":{},"天":{"docs":{},"仙":{"docs":{},"配":{"docs":{},"呢":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}},"添":{"docs":{},"加":{"docs":{},"c":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{},"e":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"一":{"docs":{},"个":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"设":{"docs":{},"置":{"docs":{},"状":{"docs":{},"态":{"docs":{},"码":{"docs":{},",":{"docs":{},"状":{"docs":{},"态":{"docs":{},"码":{"docs":{},"在":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"中":{"docs":{},"通":{"docs":{},"过":{"docs":{},"一":{"docs":{},"系":{"docs":{},"列":{"docs":{},"的":{"docs":{},"常":{"docs":{},"量":{"docs":{},"预":{"docs":{},"定":{"docs":{},"义":{"docs":{},"了":{"docs":{},",":{"docs":{},"如":{"docs":{},"s":{"docs":{},"c":{"docs":{},"_":{"docs":{},"a":{"docs":{},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},",":{"docs":{},"s":{"docs":{},"c":{"docs":{},"_":{"docs":{},"o":{"docs":{},"k":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{},":":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"/":{"docs":{},":":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}},"s":{"docs":{},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},"t":{"docs":{},"o":{"docs":{},"/":{"docs":{},"c":{"docs":{},"w":{"docs":{},"d":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"i":{"docs":{},"m":{"docs":{},"a":{"docs":{},"g":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"i":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"s":{"docs":{},"/":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},"g":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"/":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},"=":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.03867403314917127},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.07547169811320754},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.033816425120772944},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.05325443786982249},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.06502242152466367},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.07964601769911504},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.022988505747126436},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.022727272727272728},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.05240793201133145},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.02926829268292683},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.019886363636363636},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.03902862098872507},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.029925187032418952},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.08269230769230769},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.024096385542168676},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.020481927710843374}},"=":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.017699115044247787},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0056657223796034},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.019886363636363636},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.006938421509106678},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}},">":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0058997050147492625},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0026019080659150044},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.028846153846153848}},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"b":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}}}}}},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},".":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},".":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"n":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}}}}}}}}}}}}}}}}},"{":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}},">":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}},"?":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"@":{"5":{"2":{"docs":{},"x":{"2":{"docs":{},"x":{"docs":{},"a":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}},"docs":{}}},"docs":{}},"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.008287292817679558},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0028328611898017}}}}},"o":{"docs":{},"w":{"docs":{},"i":{"docs":{},"r":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"i":{"docs":{},"d":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.006289308176100629},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.012747875354107648},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.007481296758104738},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0036144578313253013}},"e":{"docs":{},":":{"docs":{},"能":{"docs":{},"用":{"docs":{},"则":{"docs":{},"用":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.014492753623188406},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.011834319526627219},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.033632286995515695},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.035398230088495575},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.012747875354107648}}}},"t":{"docs":{},"i":{"docs":{},"a":{"docs":{},"l":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.01569506726457399},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"p":{"docs":{},"o":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"y":{"docs":{},".":{"docs":{},"r":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{},"n":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"s":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{},"e":{"docs":{},"d":{"docs":{},"\"":{"docs":{},")":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"d":{"docs":{},"u":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{},"\"":{"docs":{},")":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"{":{"docs":{},"a":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}},"s":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"(":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}},"{":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},".":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"_":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}}}}}}}}}},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"o":{"docs":{},"b":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"\"":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"\"":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"2":{"docs":{},"\"":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"}":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}},"docs":{}}}}}}},"s":{"docs":{},"(":{"docs":{},"{":{"docs":{},"@":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"1":{"docs":{},"\"":{"docs":{},")":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"docs":{}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"v":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"s":{"docs":{},"—":{"docs":{},"—":{"docs":{},"t":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"/":{"docs":{},"d":{"docs":{},"e":{"docs":{},"v":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"s":{"docs":{},"/":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"u":{"docs":{},"s":{"docs":{},"/":{"3":{"5":{"6":{"0":{"9":{"5":{"1":{"9":{"2":{"0":{"8":{"5":{"9":{"6":{"2":{"7":{"5":{"2":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"t":{"0":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}},"1":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}},"2":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.013452914798206279},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0056657223796034},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.010752688172043012}},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},".":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.008287292817679558}},"e":{"docs":{},"s":{"docs":{},")":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}},"r":{"docs":{},"s":{"docs":{},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},",":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"z":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"(":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{},"w":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},".":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"(":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"f":{"docs":{},"i":{"docs":{},"t":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}},"h":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"(":{"docs":{},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"i":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}},";":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.014492753623188406}}}},"n":{"docs":{},"k":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.012578616352201259},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.02515177797051171},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}}},"u":{"docs":{},"g":{"docs":{},"h":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.006535947712418301},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},")":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"特":{"docs":{},"殊":{"docs":{},"的":{"docs":{},"注":{"docs":{},"释":{"docs":{},"并":{"docs":{},"不":{"docs":{},"需":{"docs":{},"要":{"docs":{},"在":{"docs":{},"最":{"docs":{},"后":{"docs":{},"一":{"docs":{},"个":{"docs":{},"语":{"docs":{},"句":{"docs":{},"组":{"docs":{},"(":{"docs":{},"一":{"docs":{},"般":{"docs":{},"是":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},")":{"docs":{},"中":{"docs":{},"出":{"docs":{},"现":{"docs":{},"。":{"docs":{},"示":{"docs":{},"例":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},"注":{"docs":{},"释":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}},".":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.00975609756097561}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.00821917808219178}}}}},"a":{"docs":{},"t":{"docs":{},"'":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"r":{"docs":{},"i":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.007805724197745013},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0036144578313253013}}},"u":{"docs":{},"e":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.004807692307692308},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"e":{"docs":{},"e":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}},"a":{"docs":{},"n":{"docs":{},"s":{"docs":{},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"/":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}},"s":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.010752688172043012}}}}}}}}}},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}},"y":{"docs":{},"/":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"/":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.006726457399103139}}},"_":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894}},"\"":{"docs":{},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}},"(":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}}}}}}},"e":{"docs":{},"s":{"docs":{},"t":{"2":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}},"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"i":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}},"x":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}},"a":{"docs":{},"r":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.010752688172043012}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},"(":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}},"g":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"\"":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"_":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"目":{"docs":{},"录":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"s":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"(":{"docs":{},")":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},".":{"docs":{},"p":{"docs":{},"l":{"docs":{},"u":{"docs":{},"s":{"docs":{},"(":{"1":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{},":":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"o":{"docs":{},"f":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"o":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"w":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},".":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"s":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{},"s":{"docs":{},"(":{"2":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},"docs":{}}}}}}}}}}}}}}}}}},"o":{"docs":{},"k":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464}}}}},"w":{"docs":{},"e":{"docs":{},"r":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.006535947712418301}}}}}},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},".":{"docs":{},"n":{"docs":{},"a":{"docs":{},"n":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{},"s":{"docs":{},".":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"(":{"docs":{},"t":{"1":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}},"z":{"docs":{},"o":{"docs":{},"n":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"库":{"docs":{},"可":{"docs":{},"以":{"docs":{},"媲":{"docs":{},"美":{"docs":{},",":{"docs":{},"但":{"docs":{},"它":{"docs":{},"们":{"docs":{},"是":{"docs":{},"不":{"docs":{},"一":{"docs":{},"样":{"docs":{},"的":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},"涵":{"docs":{},"盖":{"docs":{},"了":{"docs":{},"这":{"docs":{},"个":{"docs":{},"新":{"docs":{},"的":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},"最":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"部":{"docs":{},"分":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}},",":{"docs":{},"每":{"docs":{},"连":{"docs":{},"接":{"docs":{},"响":{"docs":{},"应":{"docs":{},"用":{"docs":{},"户":{"docs":{},"时":{"docs":{},"间":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}},"t":{"docs":{},"l":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"e":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"p":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0036144578313253013}}},":":{"docs":{},"一":{"docs":{},"个":{"docs":{},"常":{"docs":{},"见":{"docs":{},"的":{"docs":{},"错":{"docs":{},"误":{"docs":{},"是":{"docs":{},"把":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"写":{"docs":{},"成":{"docs":{},"/":{"docs":{},"*":{"docs":{},"*":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}},"不":{"docs":{},"要":{"docs":{},"使":{"docs":{},"用":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"你":{"docs":{},"非":{"docs":{},"要":{"docs":{},"使":{"docs":{},"用":{"docs":{},"它":{"docs":{},",":{"docs":{},"请":{"docs":{},"先":{"docs":{},"仔":{"docs":{},"细":{"docs":{},"阅":{"docs":{},"读":{"docs":{},"和":{"docs":{},"理":{"docs":{},"解":{"docs":{},"e":{"docs":{},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"在":{"docs":{},"写":{"docs":{},"多":{"docs":{},"行":{"docs":{},"注":{"docs":{},"释":{"docs":{},"时":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"你":{"docs":{},"希":{"docs":{},"望":{"docs":{},"在":{"docs":{},"必":{"docs":{},"要":{"docs":{},"时":{"docs":{},"能":{"docs":{},"重":{"docs":{},"新":{"docs":{},"换":{"docs":{},"行":{"docs":{},"(":{"docs":{},"即":{"docs":{},"注":{"docs":{},"释":{"docs":{},"像":{"docs":{},"段":{"docs":{},"落":{"docs":{},"风":{"docs":{},"格":{"docs":{},"一":{"docs":{},"样":{"docs":{},")":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"使":{"docs":{},"用":{"docs":{},"/":{"docs":{},"*":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"如":{"docs":{},"果":{"docs":{},"有":{"docs":{},"一":{"docs":{},"些":{"docs":{},"相":{"docs":{},"关":{"docs":{},"信":{"docs":{},"息":{"docs":{},"是":{"docs":{},"需":{"docs":{},"要":{"docs":{},"读":{"docs":{},"者":{"docs":{},"了":{"docs":{},"解":{"docs":{},"的":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"以":{"docs":{},"上":{"docs":{},"的":{"docs":{},"例":{"docs":{},"外":{"docs":{},"不":{"docs":{},"应":{"docs":{},"作":{"docs":{},"为":{"docs":{},"忽":{"docs":{},"视":{"docs":{},"这":{"docs":{},"些":{"docs":{},"信":{"docs":{},"息":{"docs":{},"的":{"docs":{},"理":{"docs":{},"由":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},",":{"docs":{},"对":{"docs":{},"于":{"docs":{},"方":{"docs":{},"法":{"docs":{},"名":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"a":{"docs":{},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"对":{"docs":{},"齐":{"docs":{},"可":{"docs":{},"增":{"docs":{},"加":{"docs":{},"代":{"docs":{},"码":{"docs":{},"可":{"docs":{},"读":{"docs":{},"性":{"docs":{},",":{"docs":{},"但":{"docs":{},"它":{"docs":{},"为":{"docs":{},"日":{"docs":{},"后":{"docs":{},"的":{"docs":{},"维":{"docs":{},"护":{"docs":{},"带":{"docs":{},"来":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"未":{"docs":{},"来":{"docs":{},"某":{"docs":{},"个":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"需":{"docs":{},"要":{"docs":{},"修":{"docs":{},"改":{"docs":{},"一":{"docs":{},"堆":{"docs":{},"对":{"docs":{},"齐":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"中":{"docs":{},"的":{"docs":{},"一":{"docs":{},"行":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"{":{"0":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"5":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0718232044198895},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.031446540880503145},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.04830917874396135},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.05325443786982249},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.006726457399103139},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.008849557522123894},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.034482758620689655},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.06060606060606061},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.049575070821529746},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.02926829268292683},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.048295454545454544},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.07111882046834345},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0773067331670823},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.01826923076923077},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169},"hexo/config.html":{"ref":"hexo/config.html","tf":0.00821917808219178},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.02289156626506024}},"}":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0038461538461538464},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"%":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.04084967320261438}}},"{":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}},"\"":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"\"":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"@":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"o":{"docs":{},"o":{"docs":{},"}":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}},"}":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.08011049723756906},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0660377358490566},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.07246376811594203},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.05917159763313609},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.042600896860986545},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.04424778761061947},"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.06896551724137931},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.09090909090909091},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.0679886685552408},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.03414634146341464},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.056818181818181816},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.07025151777970512},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.08478802992518704},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.013461538461538462},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.024096385542168676},"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.020481927710843374}},")":{"docs":{},";":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127},"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}}},")":{"docs":{},".":{"docs":{},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}},"}":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"`":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"都":{"docs":{},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"的":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"上":{"docs":{},"一":{"docs":{},"节":{"docs":{},":":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192},"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146},"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135},"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312},"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}},":":{"docs":{},"分":{"docs":{},"分":{"docs":{},"钟":{"docs":{},"部":{"docs":{},"署":{"docs":{},"一":{"docs":{},"个":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"环":{"docs":{},"境":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}},"各":{"docs":{},"种":{"docs":{},"配":{"docs":{},"置":{"docs":{},"详":{"docs":{},"解":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},",":{"docs":{},"执":{"docs":{},"行":{"docs":{},"靠":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}},"面":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"运":{"docs":{},"行":{"docs":{},"结":{"docs":{},"果":{"docs":{},"自":{"docs":{},"然":{"docs":{},"是":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}},"应":{"docs":{},"该":{"docs":{},"是":{"docs":{},"不":{"docs":{},"解":{"docs":{},"自":{"docs":{},"明":{"docs":{},"的":{"docs":{},":":{"docs":{},"p":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{},"a":{"docs":{},"b":{"docs":{},"s":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"避":{"docs":{},"免":{"docs":{},"我":{"docs":{},"们":{"docs":{},"将":{"docs":{},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},"写":{"docs":{},"入":{"docs":{},";":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"接":{"docs":{},"受":{"docs":{},"一":{"docs":{},"个":{"docs":{},"消":{"docs":{},"费":{"docs":{},"者":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"从":{"docs":{},"而":{"docs":{},"将":{"docs":{},"操":{"docs":{},"作":{"docs":{},"实":{"docs":{},"施":{"docs":{},"到":{"docs":{},"每":{"docs":{},"一":{"docs":{},"个":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"中":{"docs":{},"的":{"docs":{},"值":{"docs":{},"上":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"例":{"docs":{},"子":{"docs":{},"代":{"docs":{},"码":{"docs":{},"可":{"docs":{},"以":{"docs":{},"进":{"docs":{},"一":{"docs":{},"步":{"docs":{},"简":{"docs":{},"化":{"docs":{},",":{"docs":{},"利":{"docs":{},"用":{"docs":{},"静":{"docs":{},"态":{"docs":{},"方":{"docs":{},"法":{"docs":{},"引":{"docs":{},"用":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}},"十":{"docs":{},"分":{"docs":{},"优":{"docs":{},"雅":{"docs":{},",":{"docs":{},"易":{"docs":{},"于":{"docs":{},"人":{"docs":{},"们":{"docs":{},"辨":{"docs":{},"识":{"docs":{},"记":{"docs":{},"忆":{"docs":{},"。":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}},"因":{"docs":{},"为":{"docs":{},"路":{"docs":{},"由":{"docs":{},"的":{"docs":{},"量":{"docs":{},"很":{"docs":{},"大":{"docs":{},"之":{"docs":{},"后":{"docs":{},"遍":{"docs":{},"历":{"docs":{},"的":{"docs":{},"效":{"docs":{},"率":{"docs":{},"会":{"docs":{},"降":{"docs":{},"低":{"docs":{},",":{"docs":{},"但":{"docs":{},"这":{"docs":{},"样":{"docs":{},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"你":{"docs":{},"有":{"docs":{},"更":{"docs":{},"好":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"可":{"docs":{},"以":{"docs":{},"告":{"docs":{},"诉":{"docs":{},"我":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"我":{"docs":{},"们":{"docs":{},"安":{"docs":{},"装":{"docs":{},"了":{"docs":{},"淘":{"docs":{},"宝":{"docs":{},"的":{"docs":{},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"需":{"docs":{},"要":{"docs":{},"使":{"docs":{},"用":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}}}}}}},"此":{"docs":{},"在":{"docs":{},"这":{"docs":{},"里":{"docs":{},"就":{"docs":{},"没":{"docs":{},"有":{"docs":{},"必":{"docs":{},"要":{"docs":{},"加":{"docs":{},"注":{"docs":{},"释":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}},"应":{"docs":{},"用":{"docs":{},"的":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}},"数":{"docs":{},"据":{"docs":{},"。":{"docs":{},"从":{"docs":{},"它":{"docs":{},"可":{"docs":{},"以":{"docs":{},"看":{"docs":{},"出":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"版":{"docs":{},"本":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"以":{"docs":{},"及":{"docs":{},"它":{"docs":{},"所":{"docs":{},"默":{"docs":{},"认":{"docs":{},"或":{"docs":{},"者":{"docs":{},"说":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"的":{"docs":{},"一":{"docs":{},"些":{"docs":{},"组":{"docs":{},"件":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"安":{"docs":{},"装":{"docs":{},"了":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}},"于":{"docs":{},"字":{"docs":{},"段":{"docs":{},"的":{"docs":{},"注":{"docs":{},"解":{"docs":{},"紧":{"docs":{},"随":{"docs":{},"文":{"docs":{},"档":{"docs":{},"块":{"docs":{},"出":{"docs":{},"现":{"docs":{},",":{"docs":{},"应":{"docs":{},"用":{"docs":{},"于":{"docs":{},"字":{"docs":{},"段":{"docs":{},"的":{"docs":{},"多":{"docs":{},"个":{"docs":{},"注":{"docs":{},"解":{"docs":{},"允":{"docs":{},"许":{"docs":{},"与":{"docs":{},"字":{"docs":{},"段":{"docs":{},"出":{"docs":{},"现":{"docs":{},"在":{"docs":{},"同":{"docs":{},"一":{"docs":{},"行":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"程":{"docs":{},"序":{"docs":{},"缺":{"docs":{},"乏":{"docs":{},"合":{"docs":{},"理":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"一":{"docs":{},"般":{"docs":{},"会":{"docs":{},"导":{"docs":{},"致":{"docs":{},"程":{"docs":{},"序":{"docs":{},"过":{"docs":{},"度":{"docs":{},"耦":{"docs":{},"合":{"docs":{},"、":{"docs":{},"容":{"docs":{},"易":{"docs":{},"被":{"docs":{},"破":{"docs":{},"坏":{"docs":{},"、":{"docs":{},"难":{"docs":{},"以":{"docs":{},"应":{"docs":{},"对":{"docs":{},"变":{"docs":{},"化":{"docs":{},",":{"docs":{},"同":{"docs":{},"时":{"docs":{},"很":{"docs":{},"难":{"docs":{},"有":{"docs":{},"个":{"docs":{},"清":{"docs":{},"晰":{"docs":{},"的":{"docs":{},"版":{"docs":{},"本":{"docs":{},"或":{"docs":{},"者":{"docs":{},"方":{"docs":{},"向":{"docs":{},"性":{"docs":{},"。":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{},"结":{"docs":{},"果":{"docs":{},"是":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"你":{"docs":{},"没":{"docs":{},"有":{"docs":{},"充":{"docs":{},"分":{"docs":{},"理":{"docs":{},"解":{"docs":{},"程":{"docs":{},"序":{"docs":{},"系":{"docs":{},"统":{"docs":{},"里":{"docs":{},"每":{"docs":{},"个":{"docs":{},"组":{"docs":{},"件":{"docs":{},"和":{"docs":{},"模":{"docs":{},"块":{"docs":{},",":{"docs":{},"就":{"docs":{},"很":{"docs":{},"难":{"docs":{},"定":{"docs":{},"义":{"docs":{},"这":{"docs":{},"个":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"结":{"docs":{},"构":{"docs":{},"特":{"docs":{},"征":{"docs":{},"。":{"docs":{},"有":{"docs":{},"关":{"docs":{},"于":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"部":{"docs":{},"署":{"docs":{},"和":{"docs":{},"维":{"docs":{},"护":{"docs":{},"的":{"docs":{},"基":{"docs":{},"本":{"docs":{},"问":{"docs":{},"题":{"docs":{},"都":{"docs":{},"难":{"docs":{},"以":{"docs":{},"回":{"docs":{},"答":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},":":{"docs":{},"程":{"docs":{},"序":{"docs":{},"架":{"docs":{},"构":{"docs":{},"是":{"docs":{},"什":{"docs":{},"么":{"docs":{},"规":{"docs":{},"模":{"docs":{},"?":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"有":{"docs":{},"什":{"docs":{},"么":{"docs":{},"性":{"docs":{},"能":{"docs":{},"特":{"docs":{},"点":{"docs":{},"?":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"有":{"docs":{},"多":{"docs":{},"容":{"docs":{},"易":{"docs":{},"应":{"docs":{},"对":{"docs":{},"变":{"docs":{},"化":{"docs":{},"?":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"部":{"docs":{},"署":{"docs":{},"特":{"docs":{},"点":{"docs":{},"是":{"docs":{},"什":{"docs":{},"么":{"docs":{},"?":{"docs":{},"架":{"docs":{},"构":{"docs":{},"是":{"docs":{},"如":{"docs":{},"何":{"docs":{},"反":{"docs":{},"应":{"docs":{},"的":{"docs":{},"?":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"集":{"docs":{},"群":{"docs":{},"部":{"docs":{},"署":{"docs":{},"(":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"部":{"docs":{},"署":{"docs":{},",":{"docs":{},"集":{"docs":{},"群":{"docs":{},"部":{"docs":{},"署":{"docs":{},"和":{"docs":{},"负":{"docs":{},"载":{"docs":{},"均":{"docs":{},"衡":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"在":{"docs":{},"程":{"docs":{},"序":{"docs":{},"中":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"路":{"docs":{},"由":{"docs":{},",":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"在":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}},"静":{"docs":{},"态":{"docs":{},"导":{"docs":{},"入":{"docs":{},"独":{"docs":{},"立":{"docs":{},"成":{"docs":{},"组":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"应":{"docs":{},"用":{"docs":{},"部":{"docs":{},"署":{"docs":{},"在":{"docs":{},"同":{"docs":{},"一":{"docs":{},"台":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},",":{"docs":{},"应":{"docs":{},"用":{"docs":{},"之":{"docs":{},"间":{"docs":{},"耦":{"docs":{},"合":{"docs":{},"严":{"docs":{},"重":{"docs":{},"。":{"docs":{},"需":{"docs":{},"要":{"docs":{},"进":{"docs":{},"行":{"docs":{},"垂":{"docs":{},"直":{"docs":{},"切":{"docs":{},"分":{"docs":{},"和":{"docs":{},"水":{"docs":{},"平":{"docs":{},"切":{"docs":{},"分":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"字":{"docs":{},"段":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}},"其":{"docs":{},"它":{"docs":{},"字":{"docs":{},"符":{"docs":{},"串":{"docs":{},"中":{"docs":{},"的":{"docs":{},"空":{"docs":{},"白":{"docs":{},"字":{"docs":{},"符":{"docs":{},"都":{"docs":{},"要":{"docs":{},"进":{"docs":{},"行":{"docs":{},"转":{"docs":{},"义":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}},"谓":{"docs":{},"静":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},",":{"docs":{},"就":{"docs":{},"是":{"docs":{},"在":{"docs":{},"编":{"docs":{},"译":{"docs":{},"阶":{"docs":{},"段":{"docs":{},"就":{"docs":{},"生":{"docs":{},"成":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"来":{"docs":{},"完":{"docs":{},"成":{"docs":{},"对":{"docs":{},"代":{"docs":{},"理":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"一":{"docs":{},"系":{"docs":{},"列":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"是":{"docs":{},"代":{"docs":{},"理":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},"结":{"docs":{},"构":{"docs":{},"类":{"docs":{},"图":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"执":{"docs":{},"行":{"docs":{},"路":{"docs":{},"由":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}},"方":{"docs":{},"法":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"方":{"docs":{},"法":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}},"完":{"docs":{},"毕":{"docs":{},"、":{"2":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}},"docs":{}}}},"如":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{},"以":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"本":{"docs":{},"地":{"docs":{},"仓":{"docs":{},"库":{"docs":{},"的":{"docs":{},"克":{"docs":{},"隆":{"docs":{},"版":{"docs":{},"本":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}},"方":{"docs":{},"法":{"docs":{},"是":{"docs":{},"给":{"docs":{},"外":{"docs":{},"部":{"docs":{},"调":{"docs":{},"用":{"docs":{},"的":{"docs":{},"。":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}},"名":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"称":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}},"或":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"名":{"docs":{},"与":{"docs":{},"左":{"docs":{},"括":{"docs":{},"号":{"docs":{},"留":{"docs":{},"在":{"docs":{},"同":{"docs":{},"一":{"docs":{},"行":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}},"通":{"docs":{},"常":{"docs":{},"是":{"docs":{},"动":{"docs":{},"词":{"docs":{},"或":{"docs":{},"动":{"docs":{},"词":{"docs":{},"短":{"docs":{},"语":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}},"都":{"docs":{},"以":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"风":{"docs":{},"格":{"docs":{},"编":{"docs":{},"写":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}},"。":{"docs":{},"但":{"docs":{},"是":{"docs":{},"同":{"docs":{},"步":{"docs":{},"操":{"docs":{},"作":{"docs":{},"只":{"docs":{},"需":{"docs":{},"要":{"docs":{},"在":{"docs":{},"第":{"docs":{},"一":{"docs":{},"次":{"docs":{},"调":{"docs":{},"用":{"docs":{},"时":{"docs":{},"才":{"docs":{},"被":{"docs":{},"需":{"docs":{},"要":{"docs":{},",":{"docs":{},"即":{"docs":{},"第":{"docs":{},"一":{"docs":{},"次":{"docs":{},"创":{"docs":{},"建":{"docs":{},"单":{"docs":{},"例":{"docs":{},"实":{"docs":{},"例":{"docs":{},"对":{"docs":{},"象":{"docs":{},"时":{"docs":{},"。":{"docs":{},"这":{"docs":{},"就":{"docs":{},"引":{"docs":{},"出":{"docs":{},"了":{"docs":{},"双":{"docs":{},"重":{"docs":{},"检":{"docs":{},"验":{"docs":{},"锁":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"其":{"docs":{},"他":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},"还":{"docs":{},"有":{"docs":{},"很":{"docs":{},"多":{"docs":{},",":{"docs":{},"具":{"docs":{},"体":{"docs":{},"需":{"docs":{},"要":{"docs":{},"自":{"docs":{},"己":{"docs":{},"体":{"docs":{},"会":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}},"设":{"docs":{},"为":{"docs":{},"同":{"docs":{},"步":{"docs":{},"(":{"docs":{},"s":{"docs":{},"y":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},")":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"源":{"docs":{},"码":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},",":{"docs":{},"改":{"docs":{},"变":{"docs":{},"为":{"docs":{},"回":{"docs":{},"收":{"docs":{},"到":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"连":{"docs":{},"接":{"docs":{},"池":{"docs":{},"中":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"真":{"docs":{},"正":{"docs":{},"的":{"docs":{},"执":{"docs":{},"行":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}},"和":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"引":{"docs":{},"用":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}},"式":{"docs":{},"来":{"docs":{},"同":{"docs":{},"步":{"docs":{},":":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}},"便":{"docs":{},"进":{"docs":{},"行":{"docs":{},"多":{"docs":{},"品":{"docs":{},"类":{"docs":{},"管":{"docs":{},"理":{"docs":{},"(":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"性":{"docs":{},")":{"docs":{},"网":{"docs":{},"站":{"docs":{},"访":{"docs":{},"问":{"docs":{},"速":{"docs":{},"度":{"docs":{},"要":{"docs":{},"快":{"docs":{},"(":{"docs":{},"高":{"docs":{},"性":{"docs":{},"能":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"根":{"docs":{},"据":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"查":{"docs":{},"找":{"docs":{},"路":{"docs":{},"由":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"获":{"docs":{},"取":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}},"名":{"docs":{},"称":{"docs":{},"删":{"docs":{},"除":{"docs":{},"一":{"docs":{},"个":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}},"获":{"docs":{},"取":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"条":{"docs":{},"件":{"docs":{},"找":{"docs":{},"出":{"docs":{},"需":{"docs":{},"要":{"docs":{},"用":{"docs":{},"到":{"docs":{},"的":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}},"业":{"docs":{},"务":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},"进":{"docs":{},"行":{"docs":{},"等":{"docs":{},"级":{"docs":{},"定":{"docs":{},"义":{"docs":{},",":{"docs":{},"可":{"docs":{},"分":{"docs":{},"为":{"docs":{},"核":{"docs":{},"心":{"docs":{},"系":{"docs":{},"统":{"docs":{},"和":{"docs":{},"非":{"docs":{},"核":{"docs":{},"心":{"docs":{},"系":{"docs":{},"统":{"docs":{},"。":{"docs":{},"核":{"docs":{},"心":{"docs":{},"系":{"docs":{},"统":{"docs":{},":":{"docs":{},"产":{"docs":{},"品":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"购":{"docs":{},"物":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"支":{"docs":{},"付":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},";":{"docs":{},"非":{"docs":{},"核":{"docs":{},"心":{"docs":{},":":{"docs":{},"评":{"docs":{},"论":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"客":{"docs":{},"服":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"接":{"docs":{},"口":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"属":{"docs":{},"性":{"docs":{},"进":{"docs":{},"行":{"docs":{},"垂":{"docs":{},"直":{"docs":{},"切":{"docs":{},"分":{"docs":{},",":{"docs":{},"划":{"docs":{},"分":{"docs":{},"为":{"docs":{},"产":{"docs":{},"品":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"购":{"docs":{},"物":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"支":{"docs":{},"付":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"评":{"docs":{},"论":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"客":{"docs":{},"服":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"接":{"docs":{},"口":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},"(":{"docs":{},"对":{"docs":{},"接":{"docs":{},"如":{"docs":{},"进":{"docs":{},"销":{"docs":{},"存":{"docs":{},",":{"docs":{},"短":{"docs":{},"信":{"docs":{},"等":{"docs":{},"外":{"docs":{},"部":{"docs":{},"系":{"docs":{},"统":{"docs":{},")":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"特":{"docs":{},"性":{"docs":{},"可":{"docs":{},"使":{"docs":{},"用":{"docs":{},"以":{"docs":{},"下":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"过":{"docs":{},"期":{"docs":{},"策":{"docs":{},"略":{"docs":{},":":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}},"以":{"docs":{},"上":{"docs":{},"预":{"docs":{},"估":{"docs":{},",":{"docs":{},"有":{"docs":{},"几":{"docs":{},"个":{"docs":{},"问":{"docs":{},"题":{"docs":{},":":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}},"实":{"docs":{},"际":{"docs":{},"需":{"docs":{},"要":{"docs":{},",":{"docs":{},"进":{"docs":{},"行":{"docs":{},"改":{"docs":{},"造":{"docs":{},",":{"docs":{},"扩":{"docs":{},"展":{"docs":{},",":{"docs":{},"支":{"docs":{},"持":{"docs":{},"千":{"docs":{},"万":{"docs":{},"p":{"docs":{},"v":{"docs":{},",":{"docs":{},"是":{"docs":{},"没":{"docs":{},"问":{"docs":{},"题":{"docs":{},"的":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}},"并":{"docs":{},"发":{"docs":{},"量":{"docs":{},"(":{"docs":{},"并":{"docs":{},"发":{"docs":{},",":{"docs":{},"事":{"docs":{},"务":{"docs":{},"数":{"docs":{},")":{"docs":{},",":{"docs":{},"存":{"docs":{},"储":{"docs":{},"容":{"docs":{},"量":{"docs":{},"计":{"docs":{},"算":{"docs":{},"系":{"docs":{},"统":{"docs":{},"容":{"docs":{},"量":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}},"现":{"docs":{},"代":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}},"在":{"docs":{},"我":{"docs":{},"们":{"docs":{},"测":{"docs":{},"量":{"docs":{},"一":{"docs":{},"下":{"docs":{},"流":{"docs":{},"对":{"docs":{},"这":{"docs":{},"个":{"docs":{},"集":{"docs":{},"合":{"docs":{},"进":{"docs":{},"行":{"docs":{},"排":{"docs":{},"序":{"docs":{},"消":{"docs":{},"耗":{"docs":{},"的":{"docs":{},"时":{"docs":{},"间":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"你":{"docs":{},"的":{"docs":{},"改":{"docs":{},"动":{"docs":{},"已":{"docs":{},"经":{"docs":{},"提":{"docs":{},"交":{"docs":{},"到":{"docs":{},"了":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}},"将":{"docs":{},"所":{"docs":{},"有":{"docs":{},"字":{"docs":{},"母":{"docs":{},"都":{"docs":{},"小":{"docs":{},"写":{"docs":{},"(":{"docs":{},"包":{"docs":{},"括":{"docs":{},"缩":{"docs":{},"写":{"docs":{},")":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"将":{"docs":{},"单":{"docs":{},"词":{"docs":{},"的":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"字":{"docs":{},"母":{"docs":{},"大":{"docs":{},"写":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"类":{"docs":{},",":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}},"是":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{},":":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}},"就":{"docs":{},"是":{"docs":{},"寻":{"docs":{},"找":{"docs":{},"类":{"docs":{},"的":{"docs":{},"节":{"docs":{},"码":{"docs":{},"文":{"docs":{},"件":{"docs":{},"并":{"docs":{},"构":{"docs":{},"造":{"docs":{},"出":{"docs":{},"类":{"docs":{},"在":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"内":{"docs":{},"部":{"docs":{},"表":{"docs":{},"示":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"。":{"docs":{},"在":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"中":{"docs":{},",":{"docs":{},"类":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"把":{"docs":{},"一":{"docs":{},"个":{"docs":{},"类":{"docs":{},"装":{"docs":{},"入":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"中":{"docs":{},",":{"docs":{},"要":{"docs":{},"经":{"docs":{},"过":{"docs":{},"以":{"docs":{},"下":{"docs":{},"步":{"docs":{},"骤":{"docs":{},":":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"工":{"docs":{},"作":{"docs":{},"机":{"docs":{},"制":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}},"工":{"docs":{},"作":{"docs":{},"由":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"及":{"docs":{},"其":{"docs":{},"子":{"docs":{},"类":{"docs":{},"负":{"docs":{},"责":{"docs":{},",":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"运":{"docs":{},"行":{"docs":{},"时":{"docs":{},"系":{"docs":{},"统":{"docs":{},"组":{"docs":{},"件":{"docs":{},",":{"docs":{},"它":{"docs":{},"负":{"docs":{},"责":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"时":{"docs":{},"查":{"docs":{},"找":{"docs":{},"和":{"docs":{},"装":{"docs":{},"入":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"字":{"docs":{},"节":{"docs":{},"码":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"时":{"docs":{},"会":{"docs":{},"产":{"docs":{},"生":{"docs":{},"三":{"docs":{},"个":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},":":{"docs":{},"根":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"、":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"类":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},")":{"docs":{},"和":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"系":{"docs":{},"统":{"docs":{},"类":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},")":{"docs":{},"。":{"docs":{},"其":{"docs":{},"中":{"docs":{},",":{"docs":{},"根":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"不":{"docs":{},"是":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"子":{"docs":{},"类":{"docs":{},",":{"docs":{},"它":{"docs":{},"使":{"docs":{},"用":{"docs":{},"c":{"docs":{},"+":{"docs":{},"+":{"docs":{},"编":{"docs":{},"写":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"我":{"docs":{},"们":{"docs":{},"在":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"中":{"docs":{},"看":{"docs":{},"不":{"docs":{},"到":{"docs":{},"它":{"docs":{},",":{"docs":{},"根":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"负":{"docs":{},"责":{"docs":{},"装":{"docs":{},"载":{"docs":{},"j":{"docs":{},"r":{"docs":{},"e":{"docs":{},"的":{"docs":{},"核":{"docs":{},"心":{"docs":{},"类":{"docs":{},"库":{"docs":{},",":{"docs":{},"如":{"docs":{},"j":{"docs":{},"r":{"docs":{},"e":{"docs":{},"目":{"docs":{},"标":{"docs":{},"下":{"docs":{},"的":{"docs":{},"r":{"docs":{},"t":{"docs":{},".":{"docs":{},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{},"、":{"docs":{},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"s":{"docs":{},".":{"docs":{},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{},"等":{"docs":{},"。":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"和":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"都":{"docs":{},"是":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"子":{"docs":{},"类":{"docs":{},"。":{"docs":{},"其":{"docs":{},"中":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"负":{"docs":{},"责":{"docs":{},"装":{"docs":{},"载":{"docs":{},"j":{"docs":{},"r":{"docs":{},"e":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"目":{"docs":{},"录":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"中":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"r":{"docs":{},"类":{"docs":{},"包":{"docs":{},";":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"负":{"docs":{},"责":{"docs":{},"装":{"docs":{},"载":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{},"路":{"docs":{},"径":{"docs":{},"下":{"docs":{},"的":{"docs":{},"类":{"docs":{},"包":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"名":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"为":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}},"通":{"docs":{},"常":{"docs":{},"是":{"docs":{},"名":{"docs":{},"词":{"docs":{},"或":{"docs":{},"名":{"docs":{},"词":{"docs":{},"短":{"docs":{},"语":{"docs":{},",":{"docs":{},"接":{"docs":{},"口":{"docs":{},"名":{"docs":{},"称":{"docs":{},"有":{"docs":{},"时":{"docs":{},"可":{"docs":{},"能":{"docs":{},"是":{"docs":{},"形":{"docs":{},"容":{"docs":{},"词":{"docs":{},"或":{"docs":{},"形":{"docs":{},"容":{"docs":{},"词":{"docs":{},"短":{"docs":{},"语":{"docs":{},"。":{"docs":{},"现":{"docs":{},"在":{"docs":{},"还":{"docs":{},"没":{"docs":{},"有":{"docs":{},"特":{"docs":{},"定":{"docs":{},"的":{"docs":{},"规":{"docs":{},"则":{"docs":{},"或":{"docs":{},"行":{"docs":{},"之":{"docs":{},"有":{"docs":{},"效":{"docs":{},"的":{"docs":{},"约":{"docs":{},"定":{"docs":{},"来":{"docs":{},"命":{"docs":{},"名":{"docs":{},"注":{"docs":{},"解":{"docs":{},"类":{"docs":{},"型":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"都":{"docs":{},"以":{"docs":{},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"风":{"docs":{},"格":{"docs":{},"编":{"docs":{},"写":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"同":{"docs":{},"时":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"会":{"docs":{},"实":{"docs":{},"现":{"docs":{},"所":{"docs":{},"有":{"docs":{},"你":{"docs":{},"传":{"docs":{},"入":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"列":{"docs":{},"表":{"docs":{},"。":{"docs":{},"因":{"docs":{},"此":{"docs":{},"可":{"docs":{},"以":{"docs":{},"强":{"docs":{},"制":{"docs":{},"类":{"docs":{},"型":{"docs":{},"转":{"docs":{},"换":{"docs":{},"成":{"docs":{},"接":{"docs":{},"口":{"docs":{},"类":{"docs":{},"型":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"内":{"docs":{},"的":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"成":{"docs":{},"员":{"docs":{},"前":{"docs":{},"或":{"docs":{},"最":{"docs":{},"后":{"docs":{},"一":{"docs":{},"个":{"docs":{},"成":{"docs":{},"员":{"docs":{},"后":{"docs":{},"的":{"docs":{},"空":{"docs":{},"行":{"docs":{},"是":{"docs":{},"可":{"docs":{},"选":{"docs":{},"的":{"docs":{},"(":{"docs":{},"既":{"docs":{},"不":{"docs":{},"鼓":{"docs":{},"励":{"docs":{},"也":{"docs":{},"不":{"docs":{},"反":{"docs":{},"对":{"docs":{},"这":{"docs":{},"样":{"docs":{},"做":{"docs":{},",":{"docs":{},"视":{"docs":{},"个":{"docs":{},"人":{"docs":{},"喜":{"docs":{},"好":{"docs":{},"而":{"docs":{},"定":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"连":{"docs":{},"续":{"docs":{},"的":{"docs":{},"成":{"docs":{},"员":{"docs":{},"之":{"docs":{},"间":{"docs":{},":":{"docs":{},"字":{"docs":{},"段":{"docs":{},",":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},",":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"嵌":{"docs":{},"套":{"docs":{},"类":{"docs":{},",":{"docs":{},"静":{"docs":{},"态":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"块":{"docs":{},",":{"docs":{},"实":{"docs":{},"例":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"块":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"和":{"docs":{},"成":{"docs":{},"员":{"docs":{},"的":{"docs":{},"m":{"docs":{},"o":{"docs":{},"d":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"如":{"docs":{},"果":{"docs":{},"存":{"docs":{},"在":{"docs":{},",":{"docs":{},"则":{"docs":{},"按":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"语":{"docs":{},"言":{"docs":{},"规":{"docs":{},"范":{"docs":{},"中":{"docs":{},"推":{"docs":{},"荐":{"docs":{},"的":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"出":{"docs":{},"现":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"型":{"docs":{},"变":{"docs":{},"量":{"docs":{},"可":{"docs":{},"用":{"docs":{},"以":{"docs":{},"下":{"docs":{},"两":{"docs":{},"种":{"docs":{},"风":{"docs":{},"格":{"docs":{},"之":{"docs":{},"一":{"docs":{},"进":{"docs":{},"行":{"docs":{},"命":{"docs":{},"名":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}},"名":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"和":{"docs":{},"变":{"docs":{},"量":{"docs":{},"之":{"docs":{},"间":{"docs":{},":":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}},"界":{"docs":{},"限":{"docs":{},"中":{"docs":{},"的":{"docs":{},"&":{"docs":{},"(":{"docs":{},"&":{"docs":{},"l":{"docs":{},"t":{"docs":{},";":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}},"声":{"docs":{},"明":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"成":{"docs":{},"员":{"docs":{},"顺":{"docs":{},"序":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"的":{"docs":{},"成":{"docs":{},"员":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"对":{"docs":{},"易":{"docs":{},"学":{"docs":{},"性":{"docs":{},"有":{"docs":{},"很":{"docs":{},"大":{"docs":{},"的":{"docs":{},"影":{"docs":{},"响":{"docs":{},",":{"docs":{},"但":{"docs":{},"这":{"docs":{},"也":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"的":{"docs":{},"通":{"docs":{},"用":{"docs":{},"法":{"docs":{},"则":{"docs":{},"。":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"类":{"docs":{},"对":{"docs":{},"成":{"docs":{},"员":{"docs":{},"的":{"docs":{},"排":{"docs":{},"序":{"docs":{},"可":{"docs":{},"能":{"docs":{},"是":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"请":{"docs":{},"求":{"docs":{},"地":{"docs":{},"址":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}},"的":{"docs":{},"u":{"docs":{},"r":{"docs":{},"i":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"报":{"docs":{},"文":{"docs":{},"和":{"docs":{},"响":{"docs":{},"应":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"报":{"docs":{},"文":{"docs":{},"都":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"若":{"docs":{},"干":{"docs":{},"个":{"docs":{},"报":{"docs":{},"文":{"docs":{},"关":{"docs":{},"属":{"docs":{},"性":{"docs":{},",":{"docs":{},"它":{"docs":{},"们":{"docs":{},"是":{"docs":{},"为":{"docs":{},"协":{"docs":{},"助":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"及":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"交":{"docs":{},"易":{"docs":{},"的":{"docs":{},"一":{"docs":{},"些":{"docs":{},"附":{"docs":{},"属":{"docs":{},"信":{"docs":{},"息":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"报":{"docs":{},"文":{"docs":{},"可":{"docs":{},"通":{"docs":{},"过":{"docs":{},"一":{"docs":{},"个":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}},"需":{"docs":{},"要":{"docs":{},"的":{"docs":{},"所":{"docs":{},"有":{"docs":{},"信":{"docs":{},"息":{"docs":{},"(":{"docs":{},"在":{"docs":{},"这":{"docs":{},"个":{"docs":{},"例":{"docs":{},"子":{"docs":{},"里":{"docs":{},"获":{"docs":{},"取":{"docs":{},"客":{"docs":{},"户":{"docs":{},"信":{"docs":{},"息":{"docs":{},")":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"模":{"docs":{},"块":{"docs":{},"调":{"docs":{},"用":{"docs":{},"持":{"docs":{},"久":{"docs":{},"层":{"docs":{},"中":{"docs":{},"的":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"返":{"docs":{},"回":{"docs":{},"查":{"docs":{},"询":{"docs":{},"到":{"docs":{},"的":{"docs":{},"路":{"docs":{},"由":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}},"所":{"docs":{},"有":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"对":{"docs":{},"象":{"docs":{},"名":{"docs":{},"称":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}},"那":{"docs":{},"么":{"docs":{},"我":{"docs":{},"们":{"docs":{},"在":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"语":{"docs":{},"言":{"docs":{},"中":{"docs":{},"将":{"docs":{},"他":{"docs":{},"定":{"docs":{},"义":{"docs":{},"一":{"docs":{},"个":{"docs":{"mvc/2.route.html":{"ref":"mvc/2.route.html","tf":0.0027624309392265192}}}}}}}}}}}}}}}}},"写":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"实":{"docs":{},"现":{"docs":{},"代":{"docs":{},"码":{"docs":{},":":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}},"一":{"docs":{},"个":{"docs":{},"j":{"docs":{},"s":{"docs":{},"p":{"docs":{},"的":{"docs":{},"渲":{"docs":{},"染":{"docs":{},"实":{"docs":{},"现":{"docs":{},"就":{"docs":{},"很":{"docs":{},"简":{"docs":{},"单":{"docs":{},"了":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}},"哪":{"docs":{},"一":{"docs":{},"种":{"docs":{},"才":{"docs":{},"是":{"docs":{},"最":{"docs":{},"好":{"docs":{},"呢":{"docs":{},"?":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}},"容":{"docs":{},"器":{"docs":{},"里":{"docs":{},"应":{"docs":{},"该":{"docs":{},"有":{"docs":{},"什":{"docs":{},"么":{"docs":{},"呢":{"docs":{},",":{"docs":{},"我":{"docs":{},"想":{"docs":{},"它":{"docs":{},"至":{"docs":{},"少":{"docs":{},"要":{"docs":{},"有":{"docs":{},"存":{"docs":{},"储":{"docs":{},"和":{"docs":{},"移":{"docs":{},"除":{"docs":{},"一":{"docs":{},"个":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"能":{"docs":{},"力":{"docs":{},",":{"docs":{},"其":{"docs":{},"次":{"docs":{},"可":{"docs":{},"以":{"docs":{},"含":{"docs":{},"括":{"docs":{},"更":{"docs":{},"多":{"docs":{},"的":{"docs":{},"获":{"docs":{},"取":{"docs":{},"和":{"docs":{},"注":{"docs":{},"册":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"你":{"docs":{},"写":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"变":{"docs":{},"成":{"docs":{},"一":{"docs":{},"种":{"docs":{},"模":{"docs":{},"式":{"docs":{},"。":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}},"可":{"docs":{},"以":{"docs":{},"试":{"docs":{},"用":{"docs":{},"一":{"docs":{},"下":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"3":{"docs":{},"中":{"docs":{},"的":{"docs":{},"『":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}},"docs":{}}}}}}}}}}}},"这":{"docs":{},"个":{"docs":{},"注":{"docs":{},"释":{"docs":{},"应":{"docs":{},"该":{"docs":{},"写":{"docs":{},"成":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},",":{"docs":{},"这":{"docs":{},"样":{"docs":{},"更":{"docs":{},"统":{"docs":{},"一":{"docs":{},"更":{"docs":{},"友":{"docs":{},"好":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}},"为":{"docs":{},"什":{"docs":{},"么":{"docs":{},"不":{"docs":{},"允":{"docs":{},"许":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"直":{"docs":{},"接":{"docs":{},"访":{"docs":{},"问":{"docs":{},"数":{"docs":{},"据":{"docs":{},"层":{"docs":{},"呢":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"只":{"docs":{},"是":{"docs":{},"获":{"docs":{},"得":{"docs":{},"以":{"docs":{},"及":{"docs":{},"读":{"docs":{},"取":{"docs":{},"数":{"docs":{},"据":{"docs":{},",":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"直":{"docs":{},"接":{"docs":{},"访":{"docs":{},"问":{"docs":{},"数":{"docs":{},"据":{"docs":{},"层":{"docs":{},",":{"docs":{},"比":{"docs":{},"穿":{"docs":{},"过":{"docs":{},"一":{"docs":{},"层":{"docs":{},"一":{"docs":{},"层":{"docs":{},"来":{"docs":{},"得":{"docs":{},"到":{"docs":{},"数":{"docs":{},"据":{"docs":{},"来":{"docs":{},"的":{"docs":{},"快":{"docs":{},"多":{"docs":{},"了":{"docs":{},"。":{"docs":{},"这":{"docs":{},"涉":{"docs":{},"及":{"docs":{},"到":{"docs":{},"一":{"docs":{},"个":{"docs":{},"概":{"docs":{},"念":{"docs":{},":":{"docs":{},"层":{"docs":{},"隔":{"docs":{},"离":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"样":{"docs":{},"思":{"docs":{},"考":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}},"!":{"docs":{},"=":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.009433962264150943},"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0058997050147492625},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.009915014164305949},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.005203816131830009},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},".":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"\"":{"docs":{},")":{"docs":{},")":{"docs":{},"{":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255}}}}}}}}}}}}}}}}}}}}}}}}},"一":{"docs":{},"个":{"docs":{},"m":{"docs":{},"v":{"docs":{},"c":{"docs":{},"框":{"docs":{},"架":{"docs":{},"里":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}},"软":{"docs":{},"件":{"docs":{},"实":{"docs":{},"体":{"docs":{},"如":{"docs":{},"果":{"docs":{},"使":{"docs":{},"用":{"docs":{},"的":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"基":{"docs":{},"类":{"docs":{},"的":{"docs":{},"话":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"一":{"docs":{},"定":{"docs":{},"适":{"docs":{},"用":{"docs":{},"于":{"docs":{},"其":{"docs":{},"子":{"docs":{},"类":{"docs":{},",":{"docs":{},"而":{"docs":{},"且":{"docs":{},"它":{"docs":{},"根":{"docs":{},"本":{"docs":{},"不":{"docs":{},"能":{"docs":{},"察":{"docs":{},"觉":{"docs":{},"到":{"docs":{},"基":{"docs":{},"类":{"docs":{},"对":{"docs":{},"象":{"docs":{},"和":{"docs":{},"子":{"docs":{},"类":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"区":{"docs":{},"别":{"docs":{},"。":{"docs":{},"比":{"docs":{},"如":{"docs":{},",":{"docs":{},"假":{"docs":{},"设":{"docs":{},"有":{"docs":{},"两":{"docs":{},"个":{"docs":{},"类":{"docs":{},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"是":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"类":{"docs":{},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"是":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"d":{"docs":{},"类":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"e":{"docs":{},"d":{"docs":{},"类":{"docs":{},"是":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"类":{"docs":{},"的":{"docs":{},"子":{"docs":{},"类":{"docs":{},"。":{"docs":{},"那":{"docs":{},"么":{"docs":{},"一":{"docs":{},"个":{"docs":{},"方":{"docs":{},"法":{"docs":{},"如":{"docs":{},"果":{"docs":{},"可":{"docs":{},"以":{"docs":{},"接":{"docs":{},"受":{"docs":{},"一":{"docs":{},"个":{"docs":{},"基":{"docs":{},"类":{"docs":{},"对":{"docs":{},"象":{"docs":{},"b":{"docs":{},"的":{"docs":{},"话":{"docs":{},":":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"1":{"docs":{},"(":{"docs":{},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"应":{"docs":{},"当":{"docs":{},"对":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"(":{"docs":{},"例":{"docs":{},"如":{"docs":{},"对":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"层":{"docs":{},"的":{"docs":{},"扩":{"docs":{},"展":{"docs":{},")":{"docs":{},"开":{"docs":{},"放":{"docs":{},",":{"docs":{},"对":{"docs":{},"修":{"docs":{},"改":{"docs":{},"(":{"docs":{},"例":{"docs":{},"如":{"docs":{},"对":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"层":{"docs":{},"的":{"docs":{},"修":{"docs":{},"改":{"docs":{},")":{"docs":{},"关":{"docs":{},"闭":{"docs":{},"。":{"docs":{},"即":{"docs":{},"在":{"docs":{},"设":{"docs":{},"计":{"docs":{},"一":{"docs":{},"个":{"docs":{},"模":{"docs":{},"块":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"应":{"docs":{},"当":{"docs":{},"使":{"docs":{},"这":{"docs":{},"个":{"docs":{},"模":{"docs":{},"块":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"不":{"docs":{},"被":{"docs":{},"修":{"docs":{},"改":{"docs":{},"的":{"docs":{},"前":{"docs":{},"提":{"docs":{},"下":{"docs":{},"被":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"。":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{},"代":{"docs":{},"表":{"docs":{},"一":{"docs":{},"个":{"docs":{},"序":{"docs":{},"列":{"docs":{},"的":{"docs":{},"元":{"docs":{},"素":{"docs":{},"在":{"docs":{},"其":{"docs":{},"中":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"或":{"docs":{},"多":{"docs":{},"个":{"docs":{},"可":{"docs":{},"以":{"docs":{},"执":{"docs":{},"行":{"docs":{},"的":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{},"流":{"docs":{},"操":{"docs":{},"作":{"docs":{},"是":{"docs":{},"中":{"docs":{},"间":{"docs":{},"或":{"docs":{},"终":{"docs":{},"端":{"docs":{},"。":{"docs":{},"当":{"docs":{},"终":{"docs":{},"端":{"docs":{},"操":{"docs":{},"作":{"docs":{},"返":{"docs":{},"回":{"docs":{},"某":{"docs":{},"一":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"结":{"docs":{},"果":{"docs":{},"时":{"docs":{},",":{"docs":{},"中":{"docs":{},"间":{"docs":{},"操":{"docs":{},"作":{"docs":{},"返":{"docs":{},"回":{"docs":{},"流":{"docs":{},",":{"docs":{},"这":{"docs":{},"样":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"将":{"docs":{},"多":{"docs":{},"个":{"docs":{},"方":{"docs":{},"法":{"docs":{},"调":{"docs":{},"用":{"docs":{},"在":{"docs":{},"一":{"docs":{},"行":{"docs":{},"中":{"docs":{},"。":{"docs":{},"流":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"源":{"docs":{},"产":{"docs":{},"生":{"docs":{},"的":{"docs":{},",":{"docs":{},"例":{"docs":{},"如":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"像":{"docs":{},"列":{"docs":{},"表":{"docs":{},"或":{"docs":{},"设":{"docs":{},"置":{"docs":{},"(":{"docs":{},"不":{"docs":{},"支":{"docs":{},"持":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},")":{"docs":{},"。":{"docs":{},"流":{"docs":{},"操":{"docs":{},"作":{"docs":{},"可":{"docs":{},"以":{"docs":{},"被":{"docs":{},"执":{"docs":{},"行":{"docs":{},"的":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"或":{"docs":{},"并":{"docs":{},"行":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"新":{"docs":{},"命":{"docs":{},"令":{"docs":{},":":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}},"源":{"docs":{},"文":{"docs":{},"件":{"docs":{},"包":{"docs":{},"含":{"docs":{},"(":{"docs":{},"按":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"地":{"docs":{},")":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}},"空":{"docs":{},"的":{"docs":{},"块":{"docs":{},"状":{"docs":{},"结":{"docs":{},"构":{"docs":{},"里":{"docs":{},"什":{"docs":{},"么":{"docs":{},"也":{"docs":{},"不":{"docs":{},"包":{"docs":{},"含":{"docs":{},",":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"可":{"docs":{},"以":{"docs":{},"简":{"docs":{},"洁":{"docs":{},"地":{"docs":{},"写":{"docs":{},"成":{"docs":{},"{":{"docs":{},"}":{"docs":{},",":{"docs":{},"不":{"docs":{},"需":{"docs":{},"要":{"docs":{},"换":{"docs":{},"行":{"docs":{},"。":{"docs":{},"例":{"docs":{},"外":{"docs":{},":":{"docs":{},"如":{"docs":{},"果":{"docs":{},"它":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"多":{"docs":{},"块":{"docs":{},"语":{"docs":{},"句":{"docs":{},"的":{"docs":{},"一":{"docs":{},"部":{"docs":{},"分":{"docs":{},"(":{"docs":{},"i":{"docs":{},"f":{"docs":{},"/":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"顶":{"docs":{},"级":{"docs":{},"类":{"docs":{},"(":{"docs":{},"只":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}},"项":{"docs":{},"目":{"docs":{},"可":{"docs":{},"以":{"docs":{},"选":{"docs":{},"择":{"docs":{},"一":{"docs":{},"行":{"8":{"0":{"docs":{},"个":{"docs":{},"字":{"docs":{},"符":{"docs":{},"或":{"1":{"0":{"0":{"docs":{},"个":{"docs":{},"字":{"docs":{},"符":{"docs":{},"的":{"docs":{},"列":{"docs":{},"限":{"docs":{},"制":{"docs":{},",":{"docs":{},"除":{"docs":{},"了":{"docs":{},"下":{"docs":{},"述":{"docs":{},"例":{"docs":{},"外":{"docs":{},",":{"docs":{},"任":{"docs":{},"何":{"docs":{},"一":{"docs":{},"行":{"docs":{},"如":{"docs":{},"果":{"docs":{},"超":{"docs":{},"过":{"docs":{},"这":{"docs":{},"个":{"docs":{},"字":{"docs":{},"符":{"docs":{},"数":{"docs":{},"限":{"docs":{},"制":{"docs":{},",":{"docs":{},"必":{"docs":{},"须":{"docs":{},"自":{"docs":{},"动":{"docs":{},"换":{"docs":{},"行":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}},"docs":{}},"docs":{}}}}}}}}},"代":{"docs":{},"表":{"docs":{},"响":{"docs":{},"应":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"资":{"docs":{},"源":{"docs":{},"(":{"docs":{},"如":{"docs":{},"页":{"docs":{},"面":{"docs":{},")":{"docs":{},"版":{"docs":{},"本":{"docs":{},"的":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"某":{"docs":{},"个":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"资":{"docs":{},"源":{"docs":{},"发":{"docs":{},"生":{"docs":{},"变":{"docs":{},"化":{"docs":{},"了":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{},"就":{"docs":{},"会":{"docs":{},"相":{"docs":{},"应":{"docs":{},"发":{"docs":{},"生":{"docs":{},"变":{"docs":{},"化":{"docs":{},"。":{"docs":{},"它":{"docs":{},"是":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"起":{"docs":{},"看":{"docs":{},"看":{"docs":{},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"如":{"docs":{},"何":{"docs":{},"让":{"docs":{},"它":{"docs":{},"生":{"docs":{},"效":{"docs":{},"呢":{"docs":{},",":{"docs":{},"在":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}}}},"般":{"docs":{},"来":{"docs":{},"说":{"docs":{},",":{"docs":{},"单":{"docs":{},"例":{"docs":{},"模":{"docs":{},"式":{"docs":{},"有":{"docs":{},"五":{"docs":{},"种":{"docs":{},"写":{"docs":{},"法":{"docs":{},":":{"docs":{},"懒":{"docs":{},"汉":{"docs":{},"、":{"docs":{},"饿":{"docs":{},"汉":{"docs":{},"、":{"docs":{},"双":{"docs":{},"重":{"docs":{},"检":{"docs":{},"验":{"docs":{},"锁":{"docs":{},"、":{"docs":{},"静":{"docs":{},"态":{"docs":{},"内":{"docs":{},"部":{"docs":{},"类":{"docs":{},"、":{"docs":{},"枚":{"docs":{},"举":{"docs":{},"。":{"docs":{},"上":{"docs":{},"述":{"docs":{},"所":{"docs":{},"说":{"docs":{},"都":{"docs":{},"是":{"docs":{},"线":{"docs":{},"程":{"docs":{},"安":{"docs":{},"全":{"docs":{},"的":{"docs":{},"实":{"docs":{},"现":{"docs":{},",":{"docs":{},"文":{"docs":{},"章":{"docs":{},"开":{"docs":{},"头":{"docs":{},"给":{"docs":{},"出":{"docs":{},"的":{"docs":{},"第":{"docs":{},"一":{"docs":{},"种":{"docs":{},"方":{"docs":{},"法":{"docs":{},"不":{"docs":{},"算":{"docs":{},"正":{"docs":{},"确":{"docs":{},"的":{"docs":{},"写":{"docs":{},"法":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"形":{"docs":{},"式":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"网":{"docs":{},"站":{"docs":{},",":{"docs":{},"刚":{"docs":{},"开":{"docs":{},"始":{"docs":{},"的":{"docs":{},"做":{"docs":{},"法":{"docs":{},",":{"docs":{},"是":{"docs":{},"三":{"docs":{},"台":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},",":{"docs":{},"一":{"docs":{},"台":{"docs":{},"部":{"docs":{},"署":{"docs":{},"应":{"docs":{},"用":{"docs":{},",":{"docs":{},"一":{"docs":{},"台":{"docs":{},"部":{"docs":{},"署":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},",":{"docs":{},"一":{"docs":{},"台":{"docs":{},"部":{"docs":{},"署":{"docs":{},"n":{"docs":{},"f":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},"系":{"docs":{},"统":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"采":{"docs":{},"用":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"中":{"docs":{},"间":{"docs":{},"件":{"docs":{},"实":{"docs":{},"现":{"docs":{},",":{"docs":{},"建":{"docs":{},"议":{"docs":{},"使":{"docs":{},"用":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"它":{"docs":{},"有":{"docs":{},"持":{"docs":{},"久":{"docs":{},"化":{"docs":{},"功":{"docs":{},"能":{"docs":{},",":{"docs":{},"方":{"docs":{},"便":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"宕":{"docs":{},"机":{"docs":{},"后":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"从":{"docs":{},"持":{"docs":{},"久":{"docs":{},"化":{"docs":{},"存":{"docs":{},"储":{"docs":{},"中":{"docs":{},"加":{"docs":{},"载":{"docs":{},"会":{"docs":{},"话":{"docs":{},"信":{"docs":{},"息":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"、":{"docs":{},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},"定":{"docs":{},"义":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}},"电":{"docs":{},"商":{"docs":{},"案":{"docs":{},"例":{"docs":{},"的":{"docs":{},"原":{"docs":{},"因":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"行":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"体":{"docs":{},"可":{"docs":{},"以":{"docs":{},"跳":{"docs":{},"过":{"docs":{},"{":{"docs":{},"}":{"docs":{},"和":{"docs":{},"参":{"docs":{},"数":{"docs":{},"类":{"docs":{},"型":{"docs":{},",":{"docs":{},"使":{"docs":{},"它":{"docs":{},"变":{"docs":{},"得":{"docs":{},"更":{"docs":{},"短":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}},"一":{"docs":{},"个":{"docs":{},"语":{"docs":{},"句":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"次":{"docs":{},"以":{"docs":{},"保":{"docs":{},"证":{"docs":{},"尽":{"docs":{},"量":{"docs":{},"与":{"docs":{},"官":{"docs":{},"方":{"docs":{},"服":{"docs":{},"务":{"docs":{},"同":{"docs":{},"步":{"docs":{},"。":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}},"旦":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},",":{"docs":{},"你":{"docs":{},"的":{"docs":{},"项":{"docs":{},"目":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"是":{"docs":{},"这":{"docs":{},"个":{"docs":{},"样":{"docs":{},"子":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}},"安":{"docs":{},"装":{"docs":{},"了":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},",":{"docs":{},"运":{"docs":{},"行":{"docs":{},"以":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"在":{"docs":{},"目":{"docs":{},"录":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"安":{"docs":{},"装":{"docs":{},",":{"docs":{},"运":{"docs":{},"行":{"docs":{},"以":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{},"启":{"docs":{},"动":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}},"页":{"docs":{},"显":{"docs":{},"示":{"docs":{},"多":{"docs":{},"少":{"docs":{},"篇":{"docs":{},"文":{"docs":{},"章":{"docs":{},",":{"0":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}},"docs":{}}}}}}}}}},"款":{"docs":{},"开":{"docs":{},"源":{"docs":{},"的":{"docs":{},"压":{"docs":{},"力":{"docs":{},"测":{"docs":{},"试":{"docs":{},"工":{"docs":{},"具":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"根":{"docs":{},"据":{"docs":{},"配":{"docs":{},"置":{"docs":{},"对":{"docs":{},"一":{"docs":{},"个":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"站":{"docs":{},"点":{"docs":{},"进":{"docs":{},"行":{"docs":{},"多":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"并":{"docs":{},"发":{"docs":{},"访":{"docs":{},"问":{"docs":{},",":{"docs":{},"记":{"docs":{},"录":{"docs":{},"每":{"docs":{},"个":{"docs":{},"用":{"docs":{},"户":{"docs":{},"所":{"docs":{},"有":{"docs":{},"请":{"docs":{},"求":{"docs":{},"过":{"docs":{},"程":{"docs":{},"的":{"docs":{},"相":{"docs":{},"应":{"docs":{},"时":{"docs":{},"间":{"docs":{},",":{"docs":{},"并":{"docs":{},"在":{"docs":{},"一":{"docs":{},"定":{"docs":{},"数":{"docs":{},"量":{"docs":{},"的":{"docs":{},"并":{"docs":{},"发":{"docs":{},"访":{"docs":{},"问":{"docs":{},"下":{"docs":{},"重":{"docs":{},"复":{"docs":{},"进":{"docs":{},"行":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"些":{"docs":{},"用":{"docs":{},"于":{"docs":{},"读":{"docs":{},"取":{"docs":{},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"的":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}},"级":{"docs":{},"缓":{"docs":{},"存":{"docs":{},",":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"数":{"docs":{},"据":{"docs":{},"字":{"docs":{},"典":{"docs":{},",":{"docs":{},"和":{"docs":{},"常":{"docs":{},"用":{"docs":{},"热":{"docs":{},"点":{"docs":{},"数":{"docs":{},"据":{"docs":{},"等":{"docs":{},"基":{"docs":{},"本":{"docs":{},"不":{"docs":{},"可":{"docs":{},"变":{"docs":{},"/":{"docs":{},"有":{"docs":{},"规":{"docs":{},"则":{"docs":{},"变":{"docs":{},"化":{"docs":{},"的":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"二":{"docs":{},"级":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"需":{"docs":{},"要":{"docs":{},"的":{"docs":{},"所":{"docs":{},"有":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"。":{"docs":{},"当":{"docs":{},"一":{"docs":{},"级":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"过":{"docs":{},"期":{"docs":{},"或":{"docs":{},"不":{"docs":{},"可":{"docs":{},"用":{"docs":{},"时":{"docs":{},",":{"docs":{},"访":{"docs":{},"问":{"docs":{},"二":{"docs":{},"级":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"二":{"docs":{},"级":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"也":{"docs":{},"没":{"docs":{},"有":{"docs":{},",":{"docs":{},"则":{"docs":{},"访":{"docs":{},"问":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"您":{"docs":{},"可":{"docs":{},"说":{"docs":{},"到":{"docs":{},"点":{"docs":{},"儿":{"docs":{},"上":{"docs":{},"了":{"docs":{},",":{"docs":{},"几":{"docs":{},"乎":{"docs":{},"在":{"docs":{},"任":{"docs":{},"何":{"docs":{},"框":{"docs":{},"架":{"docs":{},"中":{"docs":{},"都":{"docs":{},"必":{"docs":{},"须":{"docs":{},"有":{"docs":{},"配":{"docs":{},"置":{"docs":{},"这":{"docs":{},"项":{"docs":{},",":{"docs":{},"所":{"docs":{},"谓":{"docs":{},"的":{"docs":{},"零":{"docs":{},"配":{"docs":{},"置":{"docs":{},"都":{"docs":{},"是":{"docs":{},"扯":{"docs":{},"淡":{"docs":{},"。":{"docs":{},"不":{"docs":{},"管":{"docs":{},"硬":{"docs":{},"编":{"docs":{},"码":{"docs":{},"还":{"docs":{},"是":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"方":{"docs":{},"式":{"docs":{},",":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"扯":{"docs":{},"淡":{"docs":{},"完":{"docs":{},"毕":{"docs":{},",":{"docs":{},"下":{"docs":{},"一":{"docs":{},"节":{"docs":{},"来":{"docs":{},"进":{"docs":{},"入":{"docs":{},"全":{"docs":{},"局":{"docs":{},"配":{"docs":{},"置":{"docs":{},"设":{"docs":{},"计":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}},"找":{"docs":{},"不":{"docs":{},"到":{"docs":{},"你":{"docs":{},"看":{"docs":{},"到":{"docs":{},"的":{"docs":{},"应":{"docs":{},"该":{"docs":{},"是":{"4":{"0":{"4":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}},"到":{"docs":{},"即":{"docs":{},"执":{"docs":{},"行":{"docs":{},"配":{"docs":{},"置":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}},"查":{"docs":{},"找":{"docs":{},"路":{"docs":{},"由":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}},"询":{"docs":{},"一":{"docs":{},"个":{"docs":{},"列":{"docs":{},"表":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}},"并":{"docs":{},"返":{"docs":{},"回":{"docs":{},"为":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"类":{"docs":{},"型":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}},"对":{"docs":{},"象":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}},"返":{"docs":{},"回":{"docs":{},"为":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"类":{"docs":{},"型":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}}}},"没":{"docs":{},"有":{"docs":{},"配":{"docs":{},"置":{"docs":{},",":{"docs":{},"框":{"docs":{},"架":{"docs":{},"的":{"docs":{},"易":{"docs":{},"用":{"docs":{},"性":{"docs":{},"和":{"docs":{},"快":{"docs":{},"速":{"docs":{},"开":{"docs":{},"发":{"docs":{},"靠":{"docs":{},"什":{"docs":{},"么":{"docs":{},"完":{"docs":{},"成":{"docs":{},",":{"docs":{},"又":{"docs":{},"一":{"docs":{},"行":{"docs":{},"一":{"docs":{},"行":{"docs":{},"编":{"docs":{},"写":{"docs":{},"代":{"docs":{},"码":{"docs":{},"吗":{"docs":{},"?":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"任":{"docs":{},"何":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"纯":{"docs":{},"输":{"docs":{},"出":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{},"q":{"docs":{},"u":{"docs":{},"o":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}},"方":{"docs":{},"法":{"docs":{},"和":{"docs":{},"文":{"docs":{},"档":{"docs":{},"的":{"docs":{},"枚":{"docs":{},"举":{"docs":{},"类":{"docs":{},"可":{"docs":{},"写":{"docs":{},"成":{"docs":{},"数":{"docs":{},"组":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"的":{"docs":{},"格":{"docs":{},"式":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}},"好":{"docs":{},"好":{"docs":{},"学":{"docs":{},"数":{"docs":{},"学":{"docs":{},"后":{"docs":{},"悔":{"docs":{},"了":{"docs":{},"吧":{"docs":{},"?":{"docs":{},"!":{"docs":{},"(":{"docs":{},"不":{"docs":{},"知":{"docs":{},"道":{"docs":{},"以":{"docs":{},"上":{"docs":{},"算":{"docs":{},"是":{"docs":{},"否":{"docs":{},"有":{"docs":{},"错":{"docs":{},"误":{"docs":{},",":{"docs":{},"呵":{"docs":{},"呵":{"docs":{},"~":{"docs":{},"~":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"看":{"docs":{},"到":{"docs":{},"这":{"docs":{},"里":{"docs":{},"也":{"docs":{},"许":{"docs":{},"很":{"docs":{},"多":{"docs":{},"同":{"docs":{},"学":{"docs":{},"会":{"docs":{},"有":{"docs":{},"点":{"docs":{},"疑":{"docs":{},"问":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"在":{"docs":{},"说":{"docs":{},"路":{"docs":{},"由":{"docs":{},"、":{"docs":{},"控":{"docs":{},"制":{"docs":{},"器":{"docs":{},"、":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"器":{"docs":{},",":{"docs":{},"可":{"docs":{},"是":{"docs":{},"我":{"docs":{},"怎":{"docs":{},"么":{"docs":{},"让":{"docs":{},"它":{"docs":{},"运":{"docs":{},"行":{"docs":{},"起":{"docs":{},"来":{"docs":{},"呢":{"docs":{},"?":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"个":{"docs":{},"错":{"docs":{},"误":{"docs":{},",":{"docs":{},"你":{"docs":{},"就":{"docs":{},"应":{"docs":{},"该":{"docs":{},"查":{"docs":{},"查":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"的":{"docs":{},"日":{"docs":{},"志":{"docs":{},"了":{"docs":{},",":{"docs":{},"肯":{"docs":{},"定":{"docs":{},"抛":{"docs":{},"出":{"docs":{},"了":{"docs":{},"一":{"docs":{},"堆":{"docs":{},"异":{"docs":{},"常":{"docs":{},",":{"docs":{},"别":{"docs":{},"睡":{"docs":{},"了":{"docs":{},",":{"docs":{},"起":{"docs":{},"来":{"docs":{},"改":{"docs":{},"b":{"docs":{},"u":{"docs":{},"g":{"docs":{},"去":{"docs":{},"吧":{"docs":{},"!":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"都":{"docs":{},"蛋":{"docs":{},"疼":{"docs":{},"。":{"docs":{},"。":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}},"了":{"docs":{},"上":{"docs":{},"面":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"只":{"docs":{},"是":{"docs":{},"简":{"docs":{},"单":{"docs":{},"会":{"docs":{},"用":{"docs":{},"动":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},"。":{"docs":{},"但":{"docs":{},"是":{"docs":{},"对":{"docs":{},"于":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"是":{"docs":{},"如":{"docs":{},"何":{"docs":{},"创":{"docs":{},"建":{"docs":{},"出":{"docs":{},"来":{"docs":{},"的":{"docs":{},",":{"docs":{},"是":{"docs":{},"谁":{"docs":{},"调":{"docs":{},"用":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"方":{"docs":{},"法":{"docs":{},"等":{"docs":{},"还":{"docs":{},"云":{"docs":{},"里":{"docs":{},"雾":{"docs":{},"里":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"通":{"docs":{},"过":{"docs":{},"分":{"docs":{},"析":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"获":{"docs":{},"取":{"docs":{},"方":{"docs":{},"法":{"docs":{},"内":{"docs":{},"的":{"docs":{},"参":{"docs":{},"数":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}},"类":{"docs":{},"的":{"docs":{},"默":{"docs":{},"认":{"docs":{},"构":{"docs":{},"造":{"docs":{},"器":{"docs":{},"对":{"docs":{},"象":{"docs":{},"并":{"docs":{},"通":{"docs":{},"过":{"docs":{},"它":{"docs":{},"实":{"docs":{},"例":{"docs":{},"化":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"的":{"docs":{},"父":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},",":{"docs":{},"除":{"docs":{},"根":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"外":{"docs":{},",":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"类":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"都":{"docs":{},"有":{"docs":{},"且":{"docs":{},"仅":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"父":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},",":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"父":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"是":{"docs":{},"根":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"根":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"非":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"编":{"docs":{},"写":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"无":{"docs":{},"法":{"docs":{},"获":{"docs":{},"得":{"docs":{},",":{"docs":{},"将":{"docs":{},"返":{"docs":{},"回":{"docs":{},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"(":{"docs":{},"f":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},")":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}},"请":{"docs":{},"求":{"docs":{},"所":{"docs":{},"关":{"docs":{},"联":{"docs":{},"的":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{},"其":{"docs":{},"内":{"docs":{},"部":{"docs":{},"的":{"docs":{},"机":{"docs":{},"理":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"读":{"docs":{},"取":{"docs":{},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"中":{"docs":{},"c":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{},"e":{"docs":{},"属":{"docs":{},"性":{"docs":{},"的":{"docs":{},"j":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"d":{"docs":{},"的":{"docs":{},"值":{"docs":{},",":{"docs":{},"在":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"会":{"docs":{},"话":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"中":{"docs":{},",":{"docs":{},"根":{"docs":{},"据":{"docs":{},"这":{"docs":{},"个":{"docs":{},"j":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"i":{"docs":{},"d":{"docs":{},"获":{"docs":{},"取":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"要":{"docs":{},"执":{"docs":{},"行":{"docs":{},"的":{"docs":{},"路":{"docs":{},"由":{"docs":{},"方":{"docs":{},"法":{"docs":{"mvc/3.controller.html":{"ref":"mvc/3.controller.html","tf":0.0031446540880503146}}}}}}}}},"运":{"docs":{},"行":{"docs":{},"起":{"docs":{},"来":{"docs":{},"整":{"docs":{},"个":{"docs":{},"框":{"docs":{},"架":{"docs":{},",":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{},"对":{"docs":{},"象":{"docs":{},"是":{"docs":{},"核":{"docs":{},"心":{"docs":{},",":{"docs":{},"看":{"docs":{},"看":{"docs":{},"里":{"docs":{},"面":{"docs":{},"都":{"docs":{},"需":{"docs":{},"要":{"docs":{},"什":{"docs":{},"么":{"docs":{},"吧":{"docs":{},"!":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"注":{"docs":{},"入":{"docs":{},"的":{"docs":{},"字":{"docs":{},"段":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}},"记":{"docs":{},"住":{"docs":{},",":{"docs":{},"排":{"docs":{},"序":{"docs":{},"只":{"docs":{},"会":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"流":{"docs":{},"的":{"docs":{},"排":{"docs":{},"序":{"docs":{},"视":{"docs":{},"图":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"处":{"docs":{},"理":{"docs":{},"支":{"docs":{},"持":{"docs":{},"集":{"docs":{},"合":{"docs":{},"的":{"docs":{},"排":{"docs":{},"序":{"docs":{},"。":{"docs":{},"原":{"docs":{},"来":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"集":{"docs":{},"合":{"docs":{},"中":{"docs":{},"的":{"docs":{},"元":{"docs":{},"素":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"是":{"docs":{},"没":{"docs":{},"有":{"docs":{},"改":{"docs":{},"变":{"docs":{},"的":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"合":{"docs":{},"并":{"docs":{},"其":{"docs":{},"他":{"docs":{},"分":{"docs":{},"支":{"docs":{},"到":{"docs":{},"你":{"docs":{},"的":{"docs":{},"当":{"docs":{},"前":{"docs":{},"分":{"docs":{},"支":{"docs":{},"(":{"docs":{},"例":{"docs":{},"如":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}},"更":{"docs":{},"新":{"docs":{},"你":{"docs":{},"的":{"docs":{},"本":{"docs":{},"地":{"docs":{},"仓":{"docs":{},"库":{"docs":{},"至":{"docs":{},"最":{"docs":{},"新":{"docs":{},"改":{"docs":{},"动":{"docs":{},",":{"docs":{},"执":{"docs":{},"行":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}},"满":{"docs":{},"足":{"docs":{},"本":{"docs":{},"文":{"docs":{},"档":{"docs":{},"中":{"docs":{},"其":{"docs":{},"他":{"docs":{},"节":{"docs":{},"的":{"docs":{},"空":{"docs":{},"行":{"docs":{},"要":{"docs":{},"求":{"docs":{},"(":{"docs":{},"比":{"docs":{},"如":{"3":{"docs":{},".":{"3":{"docs":{},"节":{"docs":{},":":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"语":{"docs":{},"句":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}},"全":{"docs":{},"局":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"对":{"docs":{},"象":{"docs":{},"完":{"docs":{},"成":{"docs":{},",":{"docs":{},"将":{"docs":{},"它":{"docs":{},"设":{"docs":{},"计":{"docs":{},"为":{"docs":{},"单":{"docs":{},"例":{"docs":{},"。":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}}}}}}},"品":{"docs":{},"类":{"docs":{},"的":{"docs":{},"电":{"docs":{},"子":{"docs":{},"商":{"docs":{},"务":{"docs":{},"网":{"docs":{},"站":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}},"存":{"docs":{},"放":{"docs":{},"所":{"docs":{},"有":{"docs":{},"路":{"docs":{},"由":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}},"储":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"和":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"的":{"docs":{},"关":{"docs":{},"系":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}},"入":{"docs":{},"会":{"docs":{},"话":{"docs":{},"时":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"设":{"docs":{},"置":{"docs":{},"会":{"docs":{},"话":{"docs":{},"保":{"docs":{},"持":{"docs":{},"的":{"docs":{},"时":{"docs":{},"间":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"1":{"5":{"docs":{},"分":{"docs":{},"钟":{"docs":{},",":{"docs":{},"超":{"docs":{},"过":{"docs":{},"后":{"docs":{},"自":{"docs":{},"动":{"docs":{},"超":{"docs":{},"时":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}},"映":{"docs":{},"射":{"docs":{},"的":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}},"添":{"docs":{},"加":{"docs":{},"路":{"docs":{},"由":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.00966183574879227}}}},"用":{"docs":{},"户":{"docs":{},"界":{"docs":{},"面":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}},"和":{"docs":{},"提":{"docs":{},"交":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}},"由":{"docs":{},"此":{"docs":{},"我":{"docs":{},"们":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"一":{"docs":{},"个":{"docs":{},"m":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{},"o":{"docs":{},"全":{"docs":{},"局":{"docs":{},"对":{"docs":{},"象":{"docs":{},":":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}}}}}}}}}}}}}}}}}},"于":{"docs":{},"作":{"docs":{},"者":{"docs":{},"这":{"docs":{},"篇":{"docs":{},"文":{"docs":{},"章":{"docs":{},"写":{"docs":{},"的":{"docs":{},"非":{"docs":{},"常":{"docs":{},"好":{"docs":{},",":{"docs":{},"我":{"docs":{},"也":{"docs":{},"就":{"docs":{},"没":{"docs":{},"有":{"docs":{},"重":{"docs":{},"写":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}},"枚":{"docs":{},"举":{"docs":{},"类":{"docs":{},"也":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"类":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"所":{"docs":{},"有":{"docs":{},"适":{"docs":{},"用":{"docs":{},"于":{"docs":{},"其":{"docs":{},"它":{"docs":{},"类":{"docs":{},"的":{"docs":{},"格":{"docs":{},"式":{"docs":{},"规":{"docs":{},"则":{"docs":{},"也":{"docs":{},"适":{"docs":{},"用":{"docs":{},"于":{"docs":{},"枚":{"docs":{},"举":{"docs":{},"类":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"一":{"docs":{},"些":{"docs":{},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{},"“":{"docs":{},"太":{"docs":{},"著":{"docs":{},"名":{"docs":{},"”":{"docs":{},"了":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"为":{"docs":{},"它":{"docs":{},"们":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"v":{"docs":{},"i":{"docs":{},"p":{"docs":{},"的":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"是":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"发":{"docs":{},"过":{"docs":{},"来":{"docs":{},"的":{"docs":{},",":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"当":{"docs":{},"然":{"docs":{},"只":{"docs":{},"能":{"docs":{},"读":{"docs":{},"取":{"docs":{},"了":{"docs":{},",":{"docs":{},"以":{"docs":{},"下":{"docs":{},"是":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"等":{"docs":{},"等":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}},"信":{"docs":{},"息":{"docs":{},"就":{"docs":{},"相":{"docs":{},"当":{"docs":{},"于":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"的":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"。":{"docs":{},"它":{"docs":{},"们":{"docs":{},"是":{"docs":{},"一":{"docs":{},"些":{"docs":{},"附":{"docs":{},"属":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"帮":{"docs":{},"忙":{"docs":{},"你":{"docs":{},"和":{"docs":{},"饭":{"docs":{},"店":{"docs":{},"老":{"docs":{},"板":{"docs":{},"顺":{"docs":{},"利":{"docs":{},"完":{"docs":{},"成":{"docs":{},"这":{"docs":{},"次":{"docs":{},"交":{"docs":{},"易":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"级":{"docs":{},"定":{"docs":{},"义":{"docs":{},"作":{"docs":{},"用":{"docs":{},":":{"docs":{},"用":{"docs":{},"于":{"docs":{},"流":{"docs":{},"量":{"docs":{},"突":{"docs":{},"发":{"docs":{},"时":{"docs":{},",":{"docs":{},"对":{"docs":{},"关":{"docs":{},"键":{"docs":{},"应":{"docs":{},"用":{"docs":{},"进":{"docs":{},"行":{"docs":{},"保":{"docs":{},"护":{"docs":{},",":{"docs":{},"实":{"docs":{},"现":{"docs":{},"优":{"docs":{},"雅":{"docs":{},"降":{"docs":{},"级":{"docs":{},";":{"docs":{},"保":{"docs":{},"护":{"docs":{},"关":{"docs":{},"键":{"docs":{},"应":{"docs":{},"用":{"docs":{},"不":{"docs":{},"受":{"docs":{},"到":{"docs":{},"影":{"docs":{},"响":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"读":{"docs":{},"取":{"docs":{},"资":{"docs":{},"源":{"docs":{},"文":{"docs":{},"件":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}}},"配":{"docs":{},"置":{"docs":{"mvc/4.config.html":{"ref":"mvc/4.config.html","tf":0.004830917874396135}}}}},"写":{"docs":{},"分":{"docs":{},"离":{"docs":{},":":{"docs":{},"一":{"docs":{},"般":{"docs":{},"解":{"docs":{},"决":{"docs":{},"读":{"docs":{},"比":{"docs":{},"例":{"docs":{},"远":{"docs":{},"大":{"docs":{},"于":{"docs":{},"写":{"docs":{},"比":{"docs":{},"例":{"docs":{},"的":{"docs":{},"场":{"docs":{},"景":{"docs":{},",":{"docs":{},"可":{"docs":{},"采":{"docs":{},"用":{"docs":{},"一":{"docs":{},"主":{"docs":{},"一":{"docs":{},"备":{"docs":{},",":{"docs":{},"一":{"docs":{},"主":{"docs":{},"多":{"docs":{},"备":{"docs":{},"或":{"docs":{},"多":{"docs":{},"主":{"docs":{},"多":{"docs":{},"备":{"docs":{},"方":{"docs":{},"式":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}},"j":{"docs":{},"s":{"docs":{},"p":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}},".":{"docs":{},".":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.007228915662650603}},"o":{"docs":{},"k":{"docs":{},"我":{"docs":{},"们":{"docs":{},"先":{"docs":{},"看":{"docs":{},"前":{"docs":{},"半":{"docs":{},"截":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"风":{"docs":{},"格":{"docs":{},"。":{"docs":{},"对":{"docs":{},"于":{"docs":{},"多":{"docs":{},"行":{"docs":{},"的":{"docs":{},"/":{"docs":{},"*":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"(":{"docs":{},"(":{"docs":{},"s":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}},"n":{"docs":{},"y":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"(":{"docs":{},"(":{"docs":{},"s":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}},"t":{"docs":{},"z":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"(":{"docs":{},"z":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{},".":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}},"(":{"docs":{},"s":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"(":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"m":{"docs":{},".":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},":":{"docs":{},":":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"l":{"docs":{},"n":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0028846153846153848},"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{},":":{"docs":{},"t":{"docs":{},"o":{"docs":{},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"(":{"docs":{},"(":{"docs":{},"s":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}},"o":{"docs":{},"f":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"d":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"y":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"m":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"u":{"docs":{},"m":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"m":{"docs":{},"m":{"docs":{},"m":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"(":{"docs":{},"s":{"1":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},"(":{"docs":{},"a":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}}}}}}}},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{},"(":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.007692307692307693}}}}}}}}}},"t":{"docs":{},"o":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"e":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"n":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"r":{"docs":{},"c":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}},"z":{"docs":{},"s":{"docs":{},"h":{"docs":{},"r":{"docs":{},"c":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}},"/":{"docs":{},"a":{"docs":{},"b":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},"u":{"docs":{},"r":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}},"你":{"docs":{},"懂":{"docs":{},"的":{"docs":{},"!":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}},"可":{"docs":{},"以":{"docs":{},"看":{"docs":{},"到":{"docs":{},"这":{"docs":{},"两":{"docs":{},"段":{"docs":{},"代":{"docs":{},"码":{"docs":{},"片":{"docs":{},"段":{"docs":{},"几":{"docs":{},"乎":{"docs":{},"是":{"docs":{},"相":{"docs":{},"同":{"docs":{},"的":{"docs":{},",":{"docs":{},"但":{"docs":{},"并":{"docs":{},"行":{"docs":{},"排":{"docs":{},"序":{"docs":{},"大":{"docs":{},"致":{"docs":{},"是":{"5":{"0":{"docs":{},"%":{"docs":{},"的":{"docs":{},"差":{"docs":{},"距":{"docs":{},"。":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"的":{"docs":{},"不":{"docs":{},"同":{"docs":{},"就":{"docs":{},"是":{"docs":{},"把":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{},"(":{"docs":{},")":{"docs":{},"改":{"docs":{},"成":{"docs":{},"了":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"m":{"docs":{},"(":{"docs":{},")":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"淘":{"docs":{},"宝":{"docs":{},"定":{"docs":{},"制":{"docs":{},"的":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}},"直":{"docs":{},"接":{"docs":{},"通":{"docs":{},"过":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}},"将":{"docs":{},"该":{"docs":{},"文":{"docs":{},"章":{"docs":{},"关":{"docs":{},"联":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},"全":{"docs":{},"部":{"docs":{},"放":{"docs":{},"到":{"docs":{},"该":{"docs":{},"目":{"docs":{},"录":{"docs":{},"下":{"docs":{},"。":{"docs":{},"这":{"docs":{},"样":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"更":{"docs":{},"加":{"docs":{},"方":{"docs":{},"便":{"docs":{},"的":{"docs":{},"使":{"docs":{},"用":{"docs":{},"它":{"docs":{},"们":{"docs":{},"了":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"编":{"docs":{},"辑":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"提":{"docs":{},"出":{"docs":{},"更":{"docs":{},"改":{"docs":{},"(":{"docs":{},"把":{"docs":{},"它":{"docs":{},"们":{"docs":{},"添":{"docs":{},"加":{"docs":{},"到":{"docs":{},"暂":{"docs":{},"存":{"docs":{},"区":{"docs":{},")":{"docs":{},",":{"docs":{},"使":{"docs":{},"用":{"docs":{},"如":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}},"用":{"docs":{},"同":{"docs":{},"时":{"docs":{},"部":{"docs":{},"署":{"docs":{},"到":{"docs":{},"多":{"docs":{},"个":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},",":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"将":{"docs":{},"依":{"docs":{},"次":{"docs":{},"执":{"docs":{},"行":{"docs":{},"每":{"docs":{},"个":{"docs":{},"部":{"docs":{},"署":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}}}},"在":{"docs":{},"模":{"docs":{},"板":{"docs":{},"中":{"docs":{},"使":{"docs":{},"用":{"docs":{},"它":{"docs":{},"们":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"少":{"docs":{},"一":{"docs":{},"点":{"docs":{},"的":{"docs":{},"提":{"docs":{},"交":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}},"的":{"docs":{},"改":{"docs":{},"动":{"docs":{},"现":{"docs":{},"在":{"docs":{},"已":{"docs":{},"经":{"docs":{},"在":{"docs":{},"本":{"docs":{},"地":{"docs":{},"仓":{"docs":{},"库":{"docs":{},"的":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}},"本":{"docs":{},"地":{"docs":{},"仓":{"docs":{},"库":{"docs":{},"由":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}},"就":{"docs":{},"会":{"docs":{},"去":{"docs":{},"f":{"docs":{},"i":{"docs":{},"x":{"docs":{},"这":{"docs":{},"些":{"docs":{},"问":{"docs":{},"题":{"docs":{},"的":{"docs":{},"了":{"docs":{},"。":{"docs":{},"(":{"docs":{},"言":{"docs":{},"下":{"docs":{},"之":{"docs":{},"意":{"docs":{},"就":{"docs":{},"是":{"docs":{},"大":{"docs":{},"胆":{"docs":{},"去":{"docs":{},"用":{"docs":{},"非":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"i":{"docs":{},"i":{"docs":{},"字":{"docs":{},"符":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"真":{"docs":{},"的":{"docs":{},"有":{"docs":{},"需":{"docs":{},"要":{"docs":{},"的":{"docs":{},"话":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"最":{"docs":{},"不":{"docs":{},"希":{"docs":{},"望":{"docs":{},"看":{"docs":{},"到":{"docs":{},"的":{"docs":{},",":{"docs":{},"即":{"docs":{},"找":{"docs":{},"不":{"docs":{},"到":{"docs":{},"页":{"docs":{},"面":{"docs":{},"。":{"docs":{},"如":{"docs":{},"你":{"docs":{},"在":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"上":{"docs":{},"找":{"docs":{},"到":{"docs":{},"一":{"docs":{},"个":{"docs":{},"页":{"docs":{},"面":{"docs":{},",":{"docs":{},"点":{"docs":{},"击":{"docs":{},"这":{"docs":{},"个":{"docs":{},"链":{"docs":{},"接":{"docs":{},"返":{"docs":{},"回":{"4":{"0":{"4":{"docs":{},",":{"docs":{},"表":{"docs":{},"示":{"docs":{},"这":{"docs":{},"个":{"docs":{},"页":{"docs":{},"面":{"docs":{},"已":{"docs":{},"经":{"docs":{},"被":{"docs":{},"网":{"docs":{},"站":{"docs":{},"删":{"docs":{},"除":{"docs":{},"了":{"docs":{},",":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"那":{"docs":{},"边":{"docs":{},"的":{"docs":{},"记":{"docs":{},"录":{"docs":{},"只":{"docs":{},"是":{"docs":{},"美":{"docs":{},"好":{"docs":{},"的":{"docs":{},"回":{"docs":{},"忆":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"希":{"docs":{},"望":{"docs":{},"看":{"docs":{},"到":{"docs":{},"的":{"docs":{},",":{"docs":{},"即":{"docs":{},"处":{"docs":{},"理":{"docs":{},"成":{"docs":{},"功":{"docs":{},"!":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"实":{"docs":{},"现":{"docs":{},"我":{"docs":{},"们":{"docs":{},"先":{"docs":{},"写":{"docs":{},"一":{"docs":{},"个":{"docs":{},"j":{"docs":{},"s":{"docs":{},"p":{"docs":{},"的":{"docs":{},",":{"docs":{},"当":{"docs":{},"你":{"docs":{},"在":{"docs":{},"使":{"docs":{},"用":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"进":{"docs":{},"行":{"docs":{},"开":{"docs":{},"发":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},"已":{"docs":{},"经":{"docs":{},"习":{"docs":{},"惯":{"docs":{},"了":{"docs":{},"这":{"docs":{},"句":{"docs":{},"语":{"docs":{},"法":{"docs":{},":":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"结":{"docs":{},"构":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"后":{"docs":{},"台":{"docs":{},"给":{"docs":{},"定":{"docs":{},"一":{"docs":{},"个":{"docs":{},"视":{"docs":{},"图":{"docs":{},"位":{"docs":{},"置":{"docs":{},",":{"docs":{},"输":{"docs":{},"出":{"docs":{},"到":{"docs":{},"前":{"docs":{},"端":{"docs":{},"j":{"docs":{},"s":{"docs":{},"p":{"docs":{},"或":{"docs":{},"者":{"docs":{},"其":{"docs":{},"他":{"docs":{},"模":{"docs":{},"板":{"docs":{},"引":{"docs":{},"擎":{"docs":{},"上":{"docs":{},",":{"docs":{},"做":{"docs":{},"一":{"docs":{},"个":{"docs":{},"非":{"docs":{},"常":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},":":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"怎":{"docs":{},"么":{"docs":{},"用":{"docs":{},"可":{"docs":{},"以":{"docs":{},"参":{"docs":{},"考":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}},"我":{"docs":{},"们":{"docs":{},"已":{"docs":{},"经":{"docs":{},"完":{"docs":{},"成":{"docs":{},"了":{"docs":{},"m":{"docs":{},"v":{"docs":{},"c":{"docs":{},"中":{"docs":{},"的":{"docs":{},"c":{"docs":{},"层":{"docs":{},",":{"docs":{},"还":{"docs":{},"有":{"docs":{},"m":{"docs":{},"和":{"docs":{},"v":{"docs":{},"没":{"docs":{},"有":{"docs":{},"做":{"docs":{},"呢":{"docs":{},"。":{"docs":{},"这":{"docs":{},"一":{"docs":{},"小":{"docs":{},"节":{"docs":{},"来":{"docs":{},"对":{"docs":{},"视":{"docs":{},"图":{"docs":{},"进":{"docs":{},"行":{"docs":{},"设":{"docs":{},"计":{"docs":{},",":{"docs":{},"从":{"docs":{},"后":{"docs":{},"台":{"docs":{},"到":{"docs":{},"前":{"docs":{},"台":{"docs":{},"的":{"docs":{},"渲":{"docs":{},"染":{"docs":{},"是":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"在":{"docs":{},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"中":{"docs":{},"是":{"docs":{},"这":{"docs":{},"样":{"docs":{},"获":{"docs":{},"取":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},":":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}},"j":{"docs":{},"s":{"docs":{},"p":{"docs":{},"中":{"docs":{},"让":{"docs":{},"页":{"docs":{},"面":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"到":{"docs":{},"一":{"docs":{},"个":{"docs":{},"某":{"docs":{},"个":{"docs":{},"a":{"docs":{},"页":{"docs":{},"面":{"docs":{},"中":{"docs":{},",":{"docs":{},"其":{"docs":{},"实":{"docs":{},"是":{"docs":{},"让":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"再":{"docs":{},"发":{"docs":{},"一":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"到":{"docs":{},"a":{"docs":{},"页":{"docs":{},"面":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"需":{"docs":{},"要":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"的":{"docs":{},"a":{"docs":{},"页":{"docs":{},"面":{"docs":{},"的":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},",":{"docs":{},"其":{"docs":{},"实":{"docs":{},"就":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"的":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"属":{"docs":{},"性":{"docs":{},"告":{"docs":{},"知":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"的":{"docs":{},",":{"docs":{},"如":{"docs":{},"下":{"docs":{},"的":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{},",":{"docs":{},"将":{"docs":{},"使":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"到":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"y":{"docs":{},"e":{"docs":{},"的":{"docs":{},"首":{"docs":{},"页":{"docs":{},"中":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"将":{"docs":{},"从":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"例":{"docs":{},"子":{"docs":{},"开":{"docs":{},"始":{"docs":{},"探":{"docs":{},"访":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"反":{"docs":{},"射":{"docs":{},"机":{"docs":{},"制":{"docs":{},"的":{"docs":{},"征":{"docs":{},"程":{"docs":{},",":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"类":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"、":{"docs":{},"五":{"docs":{},"个":{"docs":{},"方":{"docs":{},"法":{"docs":{},"以":{"docs":{},"及":{"docs":{},"两":{"docs":{},"个":{"docs":{},"属":{"docs":{},"性":{"docs":{},",":{"docs":{},"如":{"docs":{},"代":{"docs":{},"码":{"docs":{},"清":{"docs":{},"单":{"docs":{},"所":{"docs":{},"示":{"docs":{},":":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"容":{"docs":{},"器":{"docs":{},"要":{"docs":{},"可":{"docs":{},"以":{"docs":{},"存":{"docs":{},"储":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"还":{"docs":{},"要":{"docs":{},"有":{"docs":{},"注":{"docs":{},"解":{"docs":{},"注":{"docs":{},"入":{"docs":{},"的":{"docs":{},"功":{"docs":{},"能":{"docs":{},"即":{"docs":{},"可":{"docs":{},"。":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"要":{"docs":{},"自":{"docs":{},"己":{"docs":{},"设":{"docs":{},"计":{"docs":{},"一":{"docs":{},"个":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"目":{"docs":{},"标":{"docs":{},"是":{"docs":{},"什":{"docs":{},"么":{"docs":{},"呢":{"docs":{},"?":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}},"只":{"docs":{},"需":{"docs":{},"要":{"docs":{},"将":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"y":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"来":{"docs":{},"访":{"docs":{},"问":{"docs":{},"实":{"docs":{},"例":{"docs":{},",":{"docs":{},"这":{"docs":{},"比":{"docs":{},"调":{"docs":{},"用":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},"方":{"docs":{},"法":{"docs":{},"简":{"docs":{},"单":{"docs":{},"多":{"docs":{},"了":{"docs":{},"。":{"docs":{},"创":{"docs":{},"建":{"docs":{},"枚":{"docs":{},"举":{"docs":{},"默":{"docs":{},"认":{"docs":{},"就":{"docs":{},"是":{"docs":{},"线":{"docs":{},"程":{"docs":{},"安":{"docs":{},"全":{"docs":{},"的":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"不":{"docs":{},"需":{"docs":{},"要":{"docs":{},"担":{"docs":{},"心":{"docs":{},"d":{"docs":{},"o":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"从":{"docs":{},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"的":{"docs":{},"外":{"docs":{},"部":{"docs":{},"范":{"docs":{},"围":{"docs":{},"读":{"docs":{},"取":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"变":{"docs":{},"量":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"任":{"docs":{},"意":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"为":{"docs":{},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},",":{"docs":{},"只":{"docs":{},"要":{"docs":{},"接":{"docs":{},"口":{"docs":{},"只":{"docs":{},"包":{"docs":{},"含":{"docs":{},"一":{"docs":{},"个":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{},"确":{"docs":{},"保":{"docs":{},"你":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"满":{"docs":{},"足":{"docs":{},"要":{"docs":{},"求":{"docs":{},",":{"docs":{},"你":{"docs":{},"应":{"docs":{},"该":{"docs":{},"添":{"docs":{},"加":{"docs":{},"@":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"注":{"docs":{},"解":{"docs":{},"。":{"docs":{},"当":{"docs":{},"你":{"docs":{},"尝":{"docs":{},"试":{"docs":{},"在":{"docs":{},"接":{"docs":{},"口":{"docs":{},"上":{"docs":{},"添":{"docs":{},"加":{"docs":{},"第":{"docs":{},"二":{"docs":{},"个":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"方":{"docs":{},"法":{"docs":{},"声":{"docs":{},"明":{"docs":{},"时":{"docs":{},",":{"docs":{},"编":{"docs":{},"译":{"docs":{},"器":{"docs":{},"会":{"docs":{},"注":{"docs":{},"意":{"docs":{},"到":{"docs":{},"这":{"docs":{},"个":{"docs":{},"注":{"docs":{},"释":{"docs":{},"并":{"docs":{},"抛":{"docs":{},"出":{"docs":{},"一":{"docs":{},"个":{"docs":{},"编":{"docs":{},"译":{"docs":{},"器":{"docs":{},"错":{"docs":{},"误":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"模":{"docs":{},"拟":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"docs":{},"自":{"docs":{},"己":{"docs":{},"生":{"docs":{},"成":{"docs":{},"一":{"docs":{},"个":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}},"通":{"docs":{},"过":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{},":":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"人":{"docs":{},"的":{"docs":{},"引":{"docs":{},"用":{"docs":{},",":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"编":{"docs":{},"译":{"docs":{},"器":{"docs":{},"会":{"docs":{},"自":{"docs":{},"动":{"docs":{},"选":{"docs":{},"择":{"docs":{},"正":{"docs":{},"确":{"docs":{},"的":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},".":{"docs":{},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"的":{"docs":{},"返":{"docs":{},"回":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"并":{"docs":{},"没":{"docs":{},"有":{"docs":{},"全":{"docs":{},"面":{"docs":{},",":{"docs":{},"确":{"docs":{},"定":{"docs":{},"性":{"docs":{},"的":{"docs":{},"准":{"docs":{},"则":{"docs":{},"来":{"docs":{},"决":{"docs":{},"定":{"docs":{},"在":{"docs":{},"每":{"docs":{},"一":{"docs":{},"种":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},"如":{"docs":{},"何":{"docs":{},"自":{"docs":{},"动":{"docs":{},"换":{"docs":{},"行":{"docs":{},"。":{"docs":{},"很":{"docs":{},"多":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"对":{"docs":{},"于":{"docs":{},"同":{"docs":{},"一":{"docs":{},"段":{"docs":{},"代":{"docs":{},"码":{"docs":{},"会":{"docs":{},"有":{"docs":{},"好":{"docs":{},"几":{"docs":{},"种":{"docs":{},"有":{"docs":{},"效":{"docs":{},"的":{"docs":{},"自":{"docs":{},"动":{"docs":{},"换":{"docs":{},"行":{"docs":{},"方":{"docs":{},"式":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"才":{"docs":{},"认":{"docs":{},"为":{"docs":{},"它":{"docs":{},"符":{"docs":{},"合":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"编":{"docs":{},"程":{"docs":{},"风":{"docs":{},"格":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}},"没":{"docs":{},"有":{"docs":{},"理":{"docs":{},"由":{"docs":{},"假":{"docs":{},"设":{"docs":{},"读":{"docs":{},"者":{"docs":{},"能":{"docs":{},"记":{"docs":{},"住":{"docs":{},"整":{"docs":{},"个":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"运":{"docs":{},"算":{"docs":{},"符":{"docs":{},"优":{"docs":{},"先":{"docs":{},"级":{"docs":{},"表":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}},"把":{"docs":{},"参":{"docs":{},"数":{"docs":{},"给":{"docs":{},"大":{"docs":{},"家":{"docs":{},"简":{"docs":{},"单":{"docs":{},"说":{"docs":{},"明":{"docs":{},"一":{"docs":{},"下":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}},"更":{"docs":{},"容":{"docs":{},"易":{"docs":{},"构":{"docs":{},"造":{"docs":{},"有":{"docs":{},"效":{"docs":{},"的":{"docs":{},"角":{"docs":{},"色":{"docs":{},"和":{"docs":{},"强":{"docs":{},"⼒":{"docs":{},"力":{"docs":{},"的":{"docs":{},"模":{"docs":{},"型":{"docs":{},"。":{"docs":{},"这":{"docs":{},"样":{"docs":{},"应":{"docs":{},"用":{"docs":{},"变":{"docs":{},"的":{"docs":{},"更":{"docs":{},"好":{"docs":{},"开":{"docs":{},"发":{"docs":{},",":{"docs":{},"测":{"docs":{},"试":{"docs":{},",":{"docs":{},"管":{"docs":{},"理":{"docs":{},"和":{"docs":{},"维":{"docs":{},"护":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"看":{"docs":{},"一":{"docs":{},"下":{"docs":{},"淘":{"docs":{},"宝":{"docs":{},"前":{"docs":{},"几":{"docs":{},"年":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}},"选":{"docs":{},"用":{"docs":{},"了":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"2":{"docs":{},"o":{"docs":{},"作":{"docs":{},"为":{"docs":{},"底":{"docs":{},"层":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"框":{"docs":{},"架":{"docs":{},"作":{"docs":{},"为":{"docs":{},"支":{"docs":{},"持":{"docs":{},",":{"docs":{},"它":{"docs":{},"的":{"docs":{},"简":{"docs":{},"洁":{"docs":{},"易":{"docs":{},"用":{"docs":{},"性":{"docs":{},"让":{"docs":{},"我":{"docs":{},"刮":{"docs":{},"目":{"docs":{},"相":{"docs":{},"看":{"docs":{},",":{"docs":{},"后":{"docs":{},"面":{"docs":{},"我":{"docs":{},"们":{"docs":{},"也":{"docs":{},"会":{"docs":{},"写":{"docs":{},"如":{"docs":{},"何":{"docs":{},"实":{"docs":{},"现":{"docs":{},"一":{"docs":{},"个":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"框":{"docs":{},"架":{"docs":{},"。":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}},"比":{"docs":{},"较":{"docs":{},"倾":{"docs":{},"向":{"docs":{},"于":{"docs":{},"使":{"docs":{},"用":{"docs":{},"静":{"docs":{},"态":{"docs":{},"内":{"docs":{},"部":{"docs":{},"类":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"这":{"docs":{},"种":{"docs":{},"方":{"docs":{},"法":{"docs":{},"也":{"docs":{},"是":{"docs":{},"《":{"docs":{},"e":{"docs":{},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"的":{"docs":{},"就":{"docs":{},"是":{"docs":{},"这":{"docs":{},"个":{"docs":{},"。":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}},"的":{"docs":{},"系":{"docs":{},"统":{"docs":{},"环":{"docs":{},"境":{"docs":{},":":{"docs":{},"w":{"docs":{},"i":{"docs":{},"n":{"7":{"docs":{},"_":{"docs":{},"x":{"6":{"4":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}},"docs":{}},"docs":{}}}},"docs":{}}}}}}}}}},"把":{"docs":{},"你":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"到":{"docs":{},"其":{"docs":{},"它":{"docs":{},"的":{"docs":{},"页":{"docs":{},"面":{"docs":{},",":{"docs":{},"目":{"docs":{},"标":{"docs":{},"的":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"通":{"docs":{},"过":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"的":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"告":{"docs":{},"诉":{"docs":{},"你":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"要":{"docs":{},"啦":{"docs":{},")":{"docs":{},",":{"docs":{},"只":{"docs":{},"要":{"docs":{},"在":{"docs":{},"你":{"docs":{},"的":{"docs":{},"网":{"docs":{},"页":{"docs":{},"上":{"docs":{},"放":{"docs":{},"上":{"docs":{},"一":{"docs":{},"段":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},",":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"帮":{"docs":{},"你":{"docs":{},"监":{"docs":{},"控":{"docs":{},"流":{"docs":{},"量":{"docs":{},",":{"docs":{},"全":{"docs":{},"国":{"docs":{},"访":{"docs":{},"问":{"docs":{},"客":{"docs":{},"户":{"docs":{},"的":{"docs":{},"分":{"docs":{},"布":{"docs":{},"情":{"docs":{},"况":{"docs":{},"等":{"docs":{},"报":{"docs":{},"表":{"docs":{},"和":{"docs":{},"图":{"docs":{},"表":{"docs":{},",":{"docs":{},"其":{"docs":{},"原":{"docs":{},"理":{"docs":{},"就":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"这":{"docs":{},"个":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"r":{"docs":{},"及":{"docs":{},"其":{"docs":{},"它":{"docs":{},"一":{"docs":{},"些":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"工":{"docs":{},"作":{"docs":{},"的":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"渲":{"docs":{},"染":{"docs":{},"到":{"docs":{},"视":{"docs":{},"图":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}},"文":{"docs":{},"件":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"相":{"docs":{},"信":{"docs":{},"你":{"docs":{},"自":{"docs":{},"己":{"docs":{},"。":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}},"不":{"docs":{},"会":{"docs":{},"喜":{"docs":{},"欢":{"docs":{},"这":{"docs":{},"种":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"又":{"docs":{},"隐":{"docs":{},"含":{"docs":{},"问":{"docs":{},"题":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},",":{"docs":{},"当":{"docs":{},"然":{"docs":{},"我":{"docs":{},"们":{"docs":{},"有":{"docs":{},"更":{"docs":{},"好":{"docs":{},"的":{"docs":{},"实":{"docs":{},"现":{"docs":{},"线":{"docs":{},"程":{"docs":{},"安":{"docs":{},"全":{"docs":{},"的":{"docs":{},"单":{"docs":{},"例":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},"办":{"docs":{},"法":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"当":{"docs":{},"于":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"报":{"docs":{},"文":{"docs":{},"体":{"docs":{},",":{"docs":{},"而":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"关":{"docs":{},"中":{"docs":{},"间":{"docs":{},"件":{"docs":{},"可":{"docs":{},"参":{"docs":{},"考":{"docs":{},"c":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"r":{"docs":{},"(":{"docs":{},"阿":{"docs":{},"里":{"docs":{},",":{"docs":{},"目":{"docs":{},"前":{"docs":{},"已":{"docs":{},"不":{"docs":{},"在":{"docs":{},"维":{"docs":{},"护":{"docs":{},")":{"docs":{},",":{"docs":{},"t":{"docs":{},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"(":{"docs":{},"阿":{"docs":{},"里":{"docs":{},")":{"docs":{},",":{"docs":{},"a":{"docs":{},"t":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"(":{"docs":{},"奇":{"docs":{},"虎":{"3":{"6":{"0":{"docs":{},")":{"docs":{},",":{"docs":{},"m":{"docs":{},"y":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"(":{"docs":{},"在":{"docs":{},"c":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"r":{"docs":{},"基":{"docs":{},"础":{"docs":{},"上":{"docs":{},",":{"docs":{},"国":{"docs":{},"内":{"docs":{},"很":{"docs":{},"多":{"docs":{},"牛":{"docs":{},"人":{"docs":{},",":{"docs":{},"号":{"docs":{},"称":{"docs":{},"国":{"docs":{},"内":{"docs":{},"第":{"docs":{},"一":{"docs":{},"开":{"docs":{},"源":{"docs":{},"项":{"docs":{},"目":{"docs":{},")":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"默":{"docs":{},"认":{"docs":{},"设":{"docs":{},"置":{"docs":{},"了":{"docs":{"mvc/5.view.html":{"ref":"mvc/5.view.html","tf":0.005917159763313609}}}}},"方":{"docs":{},"法":{"docs":{},"不":{"docs":{},"能":{"docs":{},"在":{"docs":{},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"访":{"docs":{},"问":{"docs":{},"。":{"docs":{},"以":{"docs":{},"下":{"docs":{},"代":{"docs":{},"码":{"docs":{},"不":{"docs":{},"编":{"docs":{},"译":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}},"分":{"docs":{},"类":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"为":{"docs":{},"无":{"docs":{},"分":{"docs":{},"类":{"docs":{},",":{"docs":{},"当":{"docs":{},"然":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"设":{"docs":{},"置":{"docs":{},"一":{"docs":{},"个":{"docs":{},"默":{"docs":{},"认":{"docs":{},"分":{"docs":{},"类":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}},"布":{"docs":{},"局":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"你":{"docs":{},"的":{"docs":{},"网":{"docs":{},"站":{"docs":{},"将":{"docs":{},"会":{"docs":{},"运":{"docs":{},"行":{"docs":{},"在":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},",":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"使":{"docs":{},"用":{"docs":{},"文":{"docs":{},"章":{"docs":{},"标":{"docs":{},"题":{"docs":{},"作":{"docs":{},"为":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"文":{"docs":{},"章":{"docs":{},"布":{"docs":{},"局":{"docs":{},"是":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},",":{"docs":{},"当":{"docs":{},"然":{"docs":{},"你":{"docs":{},"可":{"docs":{},"用":{"docs":{},"提":{"docs":{},"供":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"布":{"docs":{},"局":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"编":{"docs":{},"辑":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"&":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752},"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"&":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713},"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00424929178470255},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127},"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}}},"a":{"docs":{},"m":{"docs":{},"p":{"docs":{},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},",":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}},"b":{"docs":{},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}},"用":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}},"k":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.012048192771084338}},"e":{"docs":{},"y":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426}},"s":{"docs":{},")":{"docs":{},"{":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"(":{"docs":{},")":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}},"(":{"docs":{},")":{"docs":{},"{":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.022988505747126436}}}},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}},"n":{"docs":{},"d":{"docs":{},"n":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.026905829596412557}}},"y":{"docs":{},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}},".":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},",":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}}}}}}},"e":{"docs":{},"x":{"docs":{},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"f":{"docs":{},"e":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"z":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"z":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"a":{"docs":{},"s":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}}}}}},"u":{"docs":{},"p":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},")":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"(":{"docs":{},")":{"docs":{},";":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.004484304932735426}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}},"i":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"(":{"docs":{},"块":{"docs":{},"引":{"docs":{},"用":{"docs":{},")":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},"p":{"docs":{},"t":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}},"带":{"docs":{},"参":{"docs":{},"数":{"docs":{},"更":{"docs":{},"新":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}}},"插":{"docs":{},"入":{"docs":{},"一":{"docs":{},"条":{"docs":{},"记":{"docs":{},"录":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}}}}}},"引":{"docs":{},"号":{"docs":{},"与":{"docs":{},"作":{"docs":{},"者":{"docs":{},"、":{"docs":{},"来":{"docs":{},"源":{"docs":{},"和":{"docs":{},"文":{"docs":{},"章":{"docs":{},"的":{"docs":{},"标":{"docs":{},"题":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}},"更":{"docs":{},"新":{"docs":{"mvc/6.dbutil.html":{"ref":"mvc/6.dbutil.html","tf":0.002242152466367713}},"与":{"docs":{},"合":{"docs":{},"并":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}},"多":{"docs":{},".":{"docs":{},".":{"docs":{},".":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"其":{"docs":{},"它":{"docs":{},"的":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"请":{"docs":{},"求":{"docs":{},"头":{"docs":{},"报":{"docs":{},"文":{"docs":{},",":{"docs":{},"参":{"docs":{},"见":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"e":{"docs":{},"n":{"docs":{},".":{"docs":{},"w":{"docs":{},"i":{"docs":{},"k":{"docs":{},"i":{"docs":{},"p":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"a":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"w":{"docs":{},"i":{"docs":{},"k":{"docs":{},"i":{"docs":{},"/":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"_":{"docs":{},"o":{"docs":{},"f":{"docs":{},"_":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"_":{"docs":{},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{},"{":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}},"|":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"保":{"docs":{},"存":{"docs":{},"方":{"docs":{},"法":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}},"所":{"docs":{},"有":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"格":{"docs":{},"式":{"docs":{},"为":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}},"持":{"docs":{},"一":{"docs":{},"致":{"docs":{},",":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"不":{"docs":{},"会":{"docs":{},"受":{"docs":{},"到":{"docs":{},"重":{"docs":{},"构":{"docs":{},"的":{"docs":{},"影":{"docs":{},"响":{"docs":{},",":{"docs":{},"它":{"docs":{},"和":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"所":{"docs":{},"使":{"docs":{},"用":{"docs":{},"的":{"docs":{},"界":{"docs":{},"面":{"docs":{},"架":{"docs":{},"构":{"docs":{},"完":{"docs":{},"全":{"docs":{},"独":{"docs":{},"立":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"修":{"docs":{},"改":{"docs":{},"信":{"docs":{},"息":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}},"设":{"docs":{},"置":{"docs":{},"。":{"docs":{},"一":{"docs":{},"个":{"docs":{},"有":{"docs":{},"效":{"docs":{},"的":{"docs":{},"部":{"docs":{},"署":{"docs":{},"设":{"docs":{},"置":{"docs":{},"必":{"docs":{},"须":{"docs":{},"有":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}},"默":{"docs":{},"认":{"docs":{},"布":{"docs":{},"局":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"删":{"docs":{},"除":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}},"一":{"docs":{},"个":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}},"缓":{"docs":{},"存":{"docs":{},"文":{"docs":{},"件":{"docs":{},"d":{"docs":{},"b":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"以":{"docs":{},"及":{"docs":{},"生":{"docs":{},"成":{"docs":{},"的":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"目":{"docs":{},"录":{"docs":{},",":{"docs":{},"当":{"docs":{},"你":{"docs":{},"修":{"docs":{},"改":{"docs":{},"了":{"docs":{},"某":{"docs":{},"些":{"docs":{},"样":{"docs":{},"式":{"docs":{},"或":{"docs":{},"者":{"docs":{},"配":{"docs":{},"置":{"docs":{},"时":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"发":{"docs":{},"现":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"演":{"docs":{},"示":{"docs":{},"程":{"docs":{},"序":{"docs":{},"代":{"docs":{},"码":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}}}}}},"编":{"docs":{},"辑":{"docs":{},"页":{"docs":{},"面":{"docs":{"mvc/7.crud.html":{"ref":"mvc/7.crud.html","tf":0.0029498525073746312}}}},"设":{"docs":{},"置":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"程":{"docs":{},"实":{"docs":{},"践":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"不":{"docs":{},"是":{"docs":{},"一":{"docs":{},"种":{"docs":{},"技":{"docs":{},"术":{"docs":{},",":{"docs":{},"只":{"docs":{},"是":{"docs":{},"一":{"docs":{},"种":{"docs":{},"思":{"docs":{},"想":{"docs":{},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"面":{"docs":{},"向":{"docs":{},"对":{"docs":{},"象":{"docs":{},"编":{"docs":{},"程":{"docs":{},"的":{"docs":{},"法":{"docs":{},"则":{"docs":{},",":{"docs":{},"它":{"docs":{},"能":{"docs":{},"指":{"docs":{},"导":{"docs":{},"我":{"docs":{},"们":{"docs":{},"如":{"docs":{},"何":{"docs":{},"设":{"docs":{},"计":{"docs":{},"出":{"docs":{},"松":{"docs":{},"耦":{"docs":{},"合":{"docs":{},"、":{"docs":{},"更":{"docs":{},"优":{"docs":{},"良":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},"。":{"docs":{},"传":{"docs":{},"统":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"都":{"docs":{},"是":{"docs":{},"由":{"docs":{},"我":{"docs":{},"们":{"docs":{},"在":{"docs":{},"类":{"docs":{},"内":{"docs":{},"部":{"docs":{},"主":{"docs":{},"动":{"docs":{},"创":{"docs":{},"建":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"从":{"docs":{},"而":{"docs":{},"导":{"docs":{},"致":{"docs":{},"类":{"docs":{},"与":{"docs":{},"类":{"docs":{},"之":{"docs":{},"间":{"docs":{},"高":{"docs":{},"耦":{"docs":{},"合":{"docs":{},",":{"docs":{},"难":{"docs":{},"于":{"docs":{},"测":{"docs":{},"试":{"docs":{},";":{"docs":{},"有":{"docs":{},"了":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"容":{"docs":{},"器":{"docs":{},"后":{"docs":{},",":{"docs":{},"把":{"docs":{},"创":{"docs":{},"建":{"docs":{},"和":{"docs":{},"查":{"docs":{},"找":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"控":{"docs":{},"制":{"docs":{},"权":{"docs":{},"交":{"docs":{},"给":{"docs":{},"了":{"docs":{},"容":{"docs":{},"器":{"docs":{},",":{"docs":{},"由":{"docs":{},"容":{"docs":{},"器":{"docs":{},"进":{"docs":{},"行":{"docs":{},"注":{"docs":{},"入":{"docs":{},"组":{"docs":{},"合":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"对":{"docs":{},"象":{"docs":{},"与":{"docs":{},"对":{"docs":{},"象":{"docs":{},"之":{"docs":{},"间":{"docs":{},"是":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"需":{"docs":{},"要":{"docs":{},"为":{"docs":{},"真":{"docs":{},"实":{"docs":{},"主":{"docs":{},"题":{"docs":{},"写":{"docs":{},"一":{"docs":{},"个":{"docs":{},"形":{"docs":{},"式":{"docs":{},"上":{"docs":{},"完":{"docs":{},"全":{"docs":{},"一":{"docs":{},"样":{"docs":{},"的":{"docs":{},"封":{"docs":{},"装":{"docs":{},"类":{"docs":{},",":{"docs":{},"假":{"docs":{},"如":{"docs":{},"主":{"docs":{},"题":{"docs":{},"接":{"docs":{},"口":{"docs":{},"中":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"很":{"docs":{},"多":{"docs":{},",":{"docs":{},"为":{"docs":{},"每":{"docs":{},"一":{"docs":{},"个":{"docs":{},"接":{"docs":{},"口":{"docs":{},"写":{"docs":{},"一":{"docs":{},"个":{"docs":{},"代":{"docs":{},"理":{"docs":{},"方":{"docs":{},"法":{"docs":{},"也":{"docs":{},"很":{"docs":{},"麻":{"docs":{},"烦":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"接":{"docs":{},"口":{"docs":{},"有":{"docs":{},"变":{"docs":{},"动":{"docs":{},",":{"docs":{},"则":{"docs":{},"真":{"docs":{},"实":{"docs":{},"主":{"docs":{},"题":{"docs":{},"和":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"都":{"docs":{},"要":{"docs":{},"修":{"docs":{},"改":{"docs":{},",":{"docs":{},"不":{"docs":{},"利":{"docs":{},"于":{"docs":{},"系":{"docs":{},"统":{"docs":{},"维":{"docs":{},"护":{"docs":{},";":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"要":{"docs":{},"记":{"docs":{},"住":{"docs":{},"代":{"docs":{},"码":{"docs":{},"是":{"docs":{},"怎":{"docs":{},"么":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},",":{"docs":{},"更":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"是":{"docs":{},"记":{"docs":{},"住":{"docs":{},"其":{"docs":{},"设":{"docs":{},"计":{"docs":{},"原":{"docs":{},"则":{"docs":{},"。":{"docs":{},"根":{"docs":{},"据":{"docs":{},"原":{"docs":{},"则":{"docs":{},"写":{"docs":{},"代":{"docs":{},"码":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"组":{"docs":{},"合":{"docs":{},"声":{"docs":{},"明":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}},"在":{"docs":{},"一":{"docs":{},"个":{"docs":{},"代":{"docs":{},"码":{"docs":{},"块":{"docs":{},"的":{"docs":{},"开":{"docs":{},"头":{"docs":{},"把":{"docs":{},"局":{"docs":{},"部":{"docs":{},"变":{"docs":{},"量":{"docs":{},"一":{"docs":{},"次":{"docs":{},"性":{"docs":{},"都":{"docs":{},"声":{"docs":{},"明":{"docs":{},"了":{"docs":{},"(":{"docs":{},"这":{"docs":{},"是":{"docs":{},"c":{"docs":{},"语":{"docs":{},"言":{"docs":{},"的":{"docs":{},"做":{"docs":{},"法":{"docs":{},")":{"docs":{},",":{"docs":{},"而":{"docs":{},"是":{"docs":{},"在":{"docs":{},"第":{"docs":{},"一":{"docs":{},"次":{"docs":{},"需":{"docs":{},"要":{"docs":{},"使":{"docs":{},"用":{"docs":{},"它":{"docs":{},"时":{"docs":{},"才":{"docs":{},"声":{"docs":{},"明":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"换":{"docs":{},"行":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"像":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"t":{"docs":{},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},".":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},",":{"docs":{},"新":{"docs":{},"的":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"t":{"docs":{},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"是":{"docs":{},"不":{"docs":{},"可":{"docs":{},"变":{"docs":{},"的":{"docs":{},",":{"docs":{},"线":{"docs":{},"程":{"docs":{},"安":{"docs":{},"全":{"docs":{},"的":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"想":{"docs":{},"被":{"docs":{},"渲":{"docs":{},"染":{"docs":{},"的":{"docs":{},"路":{"docs":{},"径":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}},"处":{"docs":{},"理":{"docs":{},"文":{"docs":{},"章":{"docs":{},"!":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}},"为":{"docs":{},"他":{"docs":{},"人":{"docs":{},"所":{"docs":{},"见":{"docs":{},"的":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}},"可":{"docs":{},"能":{"docs":{},"满":{"docs":{},"足":{"docs":{},"列":{"docs":{},"限":{"docs":{},"制":{"docs":{},"的":{"docs":{},"行":{"docs":{},"(":{"docs":{},"例":{"docs":{},"如":{"docs":{},",":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"中":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"长":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},",":{"docs":{},"或":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"长":{"docs":{},"的":{"docs":{},"j":{"docs":{},"s":{"docs":{},"n":{"docs":{},"i":{"docs":{},"方":{"docs":{},"法":{"docs":{},"参":{"docs":{},"考":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"为":{"docs":{},"什":{"docs":{},"么":{"docs":{},"需":{"docs":{},"要":{"docs":{},"依":{"docs":{},"赖":{"docs":{},":":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"需":{"docs":{},"要":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"容":{"docs":{},"器":{"docs":{},"来":{"docs":{},"提":{"docs":{},"供":{"docs":{},"对":{"docs":{},"象":{"docs":{},"需":{"docs":{},"要":{"docs":{},"的":{"docs":{},"外":{"docs":{},"部":{"docs":{},"资":{"docs":{},"源":{"docs":{},";":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"何":{"docs":{},"是":{"docs":{},"反":{"docs":{},"转":{"docs":{},",":{"docs":{},"哪":{"docs":{},"些":{"docs":{},"方":{"docs":{},"面":{"docs":{},"反":{"docs":{},"转":{"docs":{},"了":{"docs":{},":":{"docs":{},"有":{"docs":{},"反":{"docs":{},"转":{"docs":{},"就":{"docs":{},"有":{"docs":{},"正":{"docs":{},"转":{"docs":{},",":{"docs":{},"传":{"docs":{},"统":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"是":{"docs":{},"由":{"docs":{},"我":{"docs":{},"们":{"docs":{},"自":{"docs":{},"己":{"docs":{},"在":{"docs":{},"对":{"docs":{},"象":{"docs":{},"中":{"docs":{},"主":{"docs":{},"动":{"docs":{},"控":{"docs":{},"制":{"docs":{},"去":{"docs":{},"直":{"docs":{},"接":{"docs":{},"获":{"docs":{},"取":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"正":{"docs":{},"转":{"docs":{},";":{"docs":{},"而":{"docs":{},"反":{"docs":{},"转":{"docs":{},"则":{"docs":{},"是":{"docs":{},"由":{"docs":{},"容":{"docs":{},"器":{"docs":{},"来":{"docs":{},"帮":{"docs":{},"忙":{"docs":{},"创":{"docs":{},"建":{"docs":{},"及":{"docs":{},"注":{"docs":{},"入":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"对":{"docs":{},"象":{"docs":{},";":{"docs":{},"为":{"docs":{},"何":{"docs":{},"是":{"docs":{},"反":{"docs":{},"转":{"docs":{},"?":{"docs":{},"因":{"docs":{},"为":{"docs":{},"由":{"docs":{},"容":{"docs":{},"器":{"docs":{},"帮":{"docs":{},"我":{"docs":{},"们":{"docs":{},"查":{"docs":{},"找":{"docs":{},"及":{"docs":{},"注":{"docs":{},"入":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"对":{"docs":{},"象":{"docs":{},"只":{"docs":{},"是":{"docs":{},"被":{"docs":{},"动":{"docs":{},"的":{"docs":{},"接":{"docs":{},"受":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"是":{"docs":{},"反":{"docs":{},"转":{"docs":{},";":{"docs":{},"哪":{"docs":{},"些":{"docs":{},"方":{"docs":{},"面":{"docs":{},"反":{"docs":{},"转":{"docs":{},"了":{"docs":{},"?":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"获":{"docs":{},"取":{"docs":{},"被":{"docs":{},"反":{"docs":{},"转":{"docs":{},"了":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"了":{"docs":{},"解":{"docs":{},"决":{"docs":{},"上":{"docs":{},"面":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},",":{"docs":{},"最":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"是":{"docs":{},"将":{"docs":{},"整":{"docs":{},"个":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}},"演":{"docs":{},"示":{"docs":{},"分":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},"是":{"docs":{},"如":{"docs":{},"何":{"docs":{},"工":{"docs":{},"作":{"docs":{},"的":{"docs":{},",":{"docs":{},"想":{"docs":{},"象":{"docs":{},"一":{"docs":{},"个":{"docs":{},"场":{"docs":{},"景":{"docs":{},",":{"docs":{},"如":{"docs":{},"表":{"1":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}},"不":{"docs":{},"分":{"docs":{},"页":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"值":{"docs":{},"为":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}},"软":{"docs":{},"件":{"docs":{},"发":{"docs":{},"布":{"docs":{},"创":{"docs":{},"建":{"docs":{},"标":{"docs":{},"签":{"docs":{},"是":{"docs":{},"推":{"docs":{},"荐":{"docs":{},"的":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"概":{"docs":{},"念":{"docs":{},"早":{"docs":{},"已":{"docs":{},"存":{"docs":{},"在":{"docs":{},",":{"docs":{},"在":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}},"请":{"docs":{},"求":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"地":{"docs":{},"址":{"docs":{},",":{"docs":{},"它":{"docs":{},"和":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"的":{"docs":{},"h":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"属":{"docs":{},"性":{"docs":{},"组":{"docs":{},"成":{"docs":{},"完":{"docs":{},"整":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},",":{"docs":{},"③":{"docs":{},"是":{"docs":{},"协":{"docs":{},"议":{"docs":{},"名":{"docs":{},"称":{"docs":{},"及":{"docs":{},"版":{"docs":{},"本":{"docs":{},"号":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"亲":{"docs":{},"友":{"docs":{},"介":{"docs":{},"绍":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}},",":{"docs":{},"固":{"docs":{},"然":{"docs":{},"是":{"docs":{},"好":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"不":{"docs":{},"满":{"docs":{},"意":{"docs":{},",":{"docs":{},"尽":{"docs":{},"管":{"docs":{},"另":{"docs":{},"外":{"docs":{},"换":{"docs":{},"一":{"docs":{},"个":{"docs":{},"好":{"docs":{},"了":{"docs":{},"。":{"docs":{},"但":{"docs":{},"是":{"docs":{},",":{"docs":{},"亲":{"docs":{},"友":{"docs":{},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"经":{"docs":{},"常":{"docs":{},"是":{"docs":{},"以":{"docs":{},"s":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{},"的":{"docs":{},"形":{"docs":{},"式":{"docs":{},"出":{"docs":{},"现":{"docs":{},",":{"docs":{},"不":{"docs":{},"然":{"docs":{},"就":{"docs":{},"是":{"docs":{},",":{"docs":{},"存":{"docs":{},"在":{"docs":{},"于":{"docs":{},"g":{"docs":{},"l":{"docs":{},"o":{"docs":{},"b":{"docs":{},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},",":{"docs":{},"无":{"docs":{},"处":{"docs":{},"不":{"docs":{},"在":{"docs":{},",":{"docs":{},"无":{"docs":{},"处":{"docs":{},"不":{"docs":{},"能":{"docs":{},"。":{"docs":{},"实":{"docs":{},"在":{"docs":{},"是":{"docs":{},"太":{"docs":{},"繁":{"docs":{},"琐":{"docs":{},"了":{"docs":{},"一":{"docs":{},"点":{"docs":{},",":{"docs":{},"不":{"docs":{},"够":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"。":{"docs":{},"我":{"docs":{},"为":{"docs":{},"什":{"docs":{},"么":{"docs":{},"一":{"docs":{},"定":{"docs":{},"要":{"docs":{},"这":{"docs":{},"个":{"docs":{},"亲":{"docs":{},"友":{"docs":{},"掺":{"docs":{},"和":{"docs":{},"进":{"docs":{},"来":{"docs":{},"呢":{"docs":{},"?":{"docs":{},"为":{"docs":{},"什":{"docs":{},"么":{"docs":{},"一":{"docs":{},"定":{"docs":{},"要":{"docs":{},"付":{"docs":{},"给":{"docs":{},"她":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"费":{"docs":{},"呢":{"docs":{},"?":{"docs":{},"万":{"docs":{},"一":{"docs":{},"最":{"docs":{},"好":{"docs":{},"的":{"docs":{},"朋":{"docs":{},"友":{"docs":{},"爱":{"docs":{},"上":{"docs":{},"了":{"docs":{},"我":{"docs":{},"的":{"docs":{},"男":{"docs":{},"朋":{"docs":{},"友":{"docs":{},"呢":{"docs":{},"?":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},":":{"docs":{},"由":{"docs":{},"中":{"docs":{},"间":{"docs":{},"人":{"docs":{},"负":{"docs":{},"责":{"docs":{},"提":{"docs":{},"供":{"docs":{},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{},"来":{"docs":{},"见":{"docs":{},"面":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}},"好":{"docs":{},"莱":{"docs":{},"坞":{"docs":{},"法":{"docs":{},"则":{"docs":{},":":{"docs":{},"“":{"docs":{},"别":{"docs":{},"找":{"docs":{},"我":{"docs":{},"们":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"找":{"docs":{},"你":{"docs":{},"”":{"docs":{},";":{"docs":{},"即":{"docs":{},"由":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"容":{"docs":{},"器":{"docs":{},"帮":{"docs":{},"对":{"docs":{},"象":{"docs":{},"找":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"对":{"docs":{},"象":{"docs":{},"并":{"docs":{},"注":{"docs":{},"入":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"由":{"docs":{},"对":{"docs":{},"象":{"docs":{},"主":{"docs":{},"动":{"docs":{},"去":{"docs":{},"找":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"了":{"docs":{},",":{"docs":{},"深":{"docs":{},"入":{"docs":{},"的":{"docs":{},"不":{"docs":{},"说":{"docs":{},"了":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"不":{"docs":{},"是":{"docs":{},"学":{"docs":{},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"的":{"docs":{},",":{"docs":{},"只":{"docs":{},"是":{"docs":{},"知":{"docs":{},"道":{"docs":{},"一":{"docs":{},"下":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"在":{"docs":{},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"中":{"docs":{},"高":{"docs":{},"大":{"docs":{},"上":{"docs":{},"的":{"docs":{},"形":{"docs":{},"象":{"docs":{},",":{"docs":{},"接":{"docs":{},"下":{"docs":{},"来":{"docs":{},"步":{"docs":{},"入":{"docs":{},"正":{"docs":{},"轨":{"docs":{},",":{"docs":{},"开":{"docs":{},"始":{"docs":{},"设":{"docs":{},"计":{"docs":{},"一":{"docs":{},"个":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"容":{"docs":{},"器":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"伸":{"docs":{},"缩":{"docs":{},"性":{"docs":{},"的":{"docs":{},"方":{"docs":{},"向":{"docs":{},"发":{"docs":{},"展":{"docs":{},",":{"docs":{},"⽽":{"docs":{},"而":{"docs":{},"其":{"docs":{},"他":{"docs":{},"架":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{},"会":{"docs":{},"让":{"docs":{},"程":{"docs":{},"序":{"docs":{},"朝":{"docs":{},"着":{"docs":{},"高":{"docs":{},"度":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"的":{"docs":{},"方":{"docs":{},"向":{"docs":{},"发":{"docs":{},"展":{"docs":{},"。":{"docs":{},"知":{"docs":{},"道":{"docs":{},"了":{"docs":{},"这":{"docs":{},"些":{"docs":{},"特":{"docs":{},"点":{"docs":{},",":{"docs":{},"了":{"docs":{},"解":{"docs":{},"架":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"容":{"docs":{},"器":{"docs":{},"控":{"docs":{},"制":{"docs":{},"了":{"docs":{},"对":{"docs":{},"象":{"docs":{},";":{"docs":{},"控":{"docs":{},"制":{"docs":{},"什":{"docs":{},"么":{"docs":{},"?":{"docs":{},"那":{"docs":{},"就":{"docs":{},"是":{"docs":{},"主":{"docs":{},"要":{"docs":{},"控":{"docs":{},"制":{"docs":{},"了":{"docs":{},"外":{"docs":{},"部":{"docs":{},"资":{"docs":{},"源":{"docs":{},"获":{"docs":{},"取":{"docs":{},"(":{"docs":{},"不":{"docs":{},"只":{"docs":{},"是":{"docs":{},"对":{"docs":{},"象":{"docs":{},"包":{"docs":{},"括":{"docs":{},"比":{"docs":{},"如":{"docs":{},"文":{"docs":{},"件":{"docs":{},"等":{"docs":{},")":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"简":{"docs":{},"单":{"docs":{},"实":{"docs":{},"现":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}},"量":{"docs":{},"预":{"docs":{},"估":{"docs":{},":":{"7":{"0":{"docs":{},"/":{"9":{"0":{"docs":{},"原":{"docs":{},"则":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}}}}},"对":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"于":{"docs":{},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}},"具":{"docs":{},"有":{"docs":{},"特":{"docs":{},"殊":{"docs":{},"转":{"docs":{},"义":{"docs":{},"序":{"docs":{},"列":{"docs":{},"的":{"docs":{},"任":{"docs":{},"何":{"docs":{},"字":{"docs":{},"符":{"docs":{},"(":{"docs":{},"\\":{"docs":{},"b":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}},"剩":{"docs":{},"余":{"docs":{},"的":{"docs":{},"非":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"i":{"docs":{},"i":{"docs":{},"字":{"docs":{},"符":{"docs":{},",":{"docs":{},"是":{"docs":{},"使":{"docs":{},"用":{"docs":{},"实":{"docs":{},"际":{"docs":{},"的":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"字":{"docs":{},"符":{"docs":{},"(":{"docs":{},"比":{"docs":{},"如":{"docs":{},"∞":{"docs":{},")":{"docs":{},",":{"docs":{},"还":{"docs":{},"是":{"docs":{},"使":{"docs":{},"用":{"docs":{},"等":{"docs":{},"价":{"docs":{},"的":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"转":{"docs":{},"义":{"docs":{},"符":{"docs":{},"(":{"docs":{},"比":{"docs":{},"如":{"docs":{},"\\":{"docs":{},"u":{"2":{"2":{"1":{"docs":{},"e":{"docs":{},")":{"docs":{},",":{"docs":{},"取":{"docs":{},"决":{"docs":{},"于":{"docs":{},"哪":{"docs":{},"个":{"docs":{},"能":{"docs":{},"让":{"docs":{},"代":{"docs":{},"码":{"docs":{},"更":{"docs":{},"易":{"docs":{},"于":{"docs":{},"阅":{"docs":{},"读":{"docs":{},"和":{"docs":{},"理":{"docs":{},"解":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"包":{"docs":{},"外":{"docs":{},"不":{"docs":{},"可":{"docs":{},"见":{"docs":{},"的":{"docs":{},"类":{"docs":{},"和":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"如":{"docs":{},"有":{"docs":{},"需":{"docs":{},"要":{"docs":{},",":{"docs":{},"也":{"docs":{},"是":{"docs":{},"要":{"docs":{},"使":{"docs":{},"用":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"的":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"一":{"docs":{},"个":{"docs":{},"注":{"docs":{},"释":{"docs":{},"是":{"docs":{},"用":{"docs":{},"来":{"docs":{},"定":{"docs":{},"义":{"docs":{},"一":{"docs":{},"个":{"docs":{},"类":{"docs":{},",":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"字":{"docs":{},"段":{"docs":{},"的":{"docs":{},"整":{"docs":{},"体":{"docs":{},"目":{"docs":{},"的":{"docs":{},"或":{"docs":{},"行":{"docs":{},"为":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"简":{"docs":{},"单":{"docs":{},"明":{"docs":{},"显":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"如":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"f":{"docs":{},"o":{"docs":{},"o":{"docs":{},",":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"是":{"docs":{},"可":{"docs":{},"选":{"docs":{},"的":{"docs":{},"(":{"docs":{},"即":{"docs":{},",":{"docs":{},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"不":{"docs":{},"写":{"docs":{},"的":{"docs":{},")":{"docs":{},"。":{"docs":{},"这":{"docs":{},"种":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},"除":{"docs":{},"了":{"docs":{},"写":{"docs":{},"“":{"docs":{},"r":{"docs":{},"e":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"那":{"docs":{},"些":{"docs":{},"不":{"docs":{},"是":{"docs":{},"明":{"docs":{},"确":{"docs":{},"强":{"docs":{},"制":{"docs":{},"要":{"docs":{},"求":{"docs":{},"的":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"尽":{"docs":{},"量":{"docs":{},"避":{"docs":{},"免":{"docs":{},"提":{"docs":{},"供":{"docs":{},"意":{"docs":{},"见":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}},"非":{"docs":{},"空":{"docs":{},"块":{"docs":{},"和":{"docs":{},"块":{"docs":{},"状":{"docs":{},"结":{"docs":{},"构":{"docs":{},",":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"遵":{"docs":{},"循":{"docs":{},"k":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"和":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"e":{"docs":{},"风":{"docs":{},"格":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"开":{"docs":{},"发":{"docs":{},"人":{"docs":{},"员":{"docs":{},",":{"docs":{},"掌":{"docs":{},"握":{"docs":{},"基":{"docs":{},"本":{"docs":{},"的":{"docs":{},"运":{"docs":{},"维":{"docs":{},"技":{"docs":{},"能":{"docs":{},"是":{"docs":{},"必":{"docs":{},"须":{"docs":{},"的":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"你":{"docs":{},"还":{"docs":{},"不":{"docs":{},"熟":{"docs":{},"悉":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"u":{"docs":{},"x":{"docs":{},"环":{"docs":{},"境":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"看":{"docs":{},"这":{"docs":{},"个":{"docs":{},"教":{"docs":{},"程":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"你":{"docs":{},"觉":{"docs":{},"得":{"docs":{},"这":{"docs":{},"个":{"docs":{},"笔":{"docs":{},"记":{"docs":{},"还":{"docs":{},"不":{"docs":{},"错":{"docs":{},"记":{"docs":{},"得":{"docs":{},"给":{"docs":{},"这":{"docs":{},"个":{"docs":{},"项":{"docs":{},"目":{"docs":{},"一":{"docs":{},"个":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"象":{"docs":{},"中":{"docs":{},",":{"docs":{},"运":{"docs":{},"行":{"docs":{},"代":{"docs":{},"码":{"docs":{},"的":{"docs":{},"结":{"docs":{},"果":{"docs":{},"(":{"docs":{},"这":{"docs":{},"里":{"docs":{},"是":{"docs":{},"例":{"docs":{},"子":{"docs":{},",":{"docs":{},"代":{"docs":{},"码":{"docs":{},"不":{"docs":{},"能":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},")":{"docs":{},"就":{"docs":{},"是":{"docs":{},":":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"所":{"docs":{},"有":{"docs":{},"标":{"docs":{},"识":{"docs":{},"符":{"docs":{},"都":{"docs":{},"通":{"docs":{},"用":{"docs":{},"的":{"docs":{},"规":{"docs":{},"则":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}},"照":{"docs":{},"上":{"docs":{},"面":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"把":{"docs":{},"它":{"docs":{},"进":{"docs":{},"一":{"docs":{},"步":{"docs":{},"分":{"docs":{},"解":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"看":{"docs":{},"到":{"docs":{},"一":{"docs":{},"幅":{"docs":{},"更":{"docs":{},"详":{"docs":{},"细":{"docs":{},"的":{"docs":{},"结":{"docs":{},"构":{"docs":{},"图":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"缓":{"docs":{},"存":{"docs":{},"进":{"docs":{},"行":{"docs":{},"控":{"docs":{},"制":{"docs":{},",":{"docs":{},"如":{"docs":{},"一":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"希":{"docs":{},"望":{"docs":{},"响":{"docs":{},"应":{"docs":{},"返":{"docs":{},"回":{"docs":{},"的":{"docs":{},"内":{"docs":{},"容":{"docs":{},"在":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"要":{"docs":{},"被":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"一":{"docs":{},"年":{"docs":{},",":{"docs":{},"或":{"docs":{},"不":{"docs":{},"希":{"docs":{},"望":{"docs":{},"被":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"通":{"docs":{},"过":{"docs":{},"这":{"docs":{},"个":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"达":{"docs":{},"到":{"docs":{},"目":{"docs":{},"的":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"应":{"docs":{},"的":{"docs":{},"是":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}},"程":{"docs":{},"序":{"docs":{},"员":{"docs":{},"来":{"docs":{},"说":{"docs":{},"很":{"docs":{},"常":{"docs":{},"见":{"docs":{},"一":{"docs":{},"种":{"docs":{},"情":{"docs":{},"况":{"docs":{},"是":{"docs":{},"在":{"docs":{},"没":{"docs":{},"有":{"docs":{},"合":{"docs":{},"理":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},"架":{"docs":{},"构":{"docs":{},"时":{"docs":{},"就":{"docs":{},"开":{"docs":{},"始":{"docs":{},"编":{"docs":{},"程":{"docs":{},",":{"docs":{},"没":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"清":{"docs":{},"晰":{"docs":{},"的":{"docs":{},"和":{"docs":{},"定":{"docs":{},"义":{"docs":{},"好":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"开":{"docs":{},"发":{"docs":{},"者":{"docs":{},"和":{"docs":{},"架":{"docs":{},"构":{"docs":{},"师":{"docs":{},"通":{"docs":{},"常":{"docs":{},"会":{"docs":{},"使":{"docs":{},"用":{"docs":{},"标":{"docs":{},"准":{"docs":{},"式":{"docs":{},"的":{"docs":{},"传":{"docs":{},"统":{"docs":{},"分":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{},"(":{"docs":{},"也":{"docs":{},"被":{"docs":{},"称":{"docs":{},"为":{"docs":{},"多":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},")":{"docs":{},"—":{"docs":{},"通":{"docs":{},"过":{"docs":{},"将":{"docs":{},"源":{"docs":{},"码":{"docs":{},"模":{"docs":{},"块":{"docs":{},"分":{"docs":{},"割":{"docs":{},"为":{"docs":{},"几":{"docs":{},"个":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"层":{"docs":{},"到":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"包":{"docs":{},"中":{"docs":{},"。":{"docs":{},"不":{"docs":{},"幸":{"docs":{},"的":{"docs":{},"是":{"docs":{},",":{"docs":{},"这":{"docs":{},"种":{"docs":{},"编":{"docs":{},"码":{"docs":{},"方":{"docs":{},"式":{"docs":{},"会":{"docs":{},"导":{"docs":{},"致":{"docs":{},"一":{"docs":{},"系":{"docs":{},"列":{"docs":{},"没":{"docs":{},"有":{"docs":{},"组":{"docs":{},"织":{"docs":{},"性":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"模":{"docs":{},"块":{"docs":{},",":{"docs":{},"这":{"docs":{},"些":{"docs":{},"模":{"docs":{},"块":{"docs":{},"缺":{"docs":{},"乏":{"docs":{},"明":{"docs":{},"确":{"docs":{},"的":{"docs":{},"规":{"docs":{},"则":{"docs":{},"、":{"docs":{},"职":{"docs":{},"责":{"docs":{},"和":{"docs":{},"同":{"docs":{},"其":{"docs":{},"他":{"docs":{},"模":{"docs":{},"块":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"关":{"docs":{},"联":{"docs":{},"。":{"docs":{},"这":{"docs":{},"通":{"docs":{},"常":{"docs":{},"被":{"docs":{},"称":{"docs":{},"为":{"docs":{},"架":{"docs":{},"构":{"docs":{},"大":{"docs":{},"泥":{"docs":{},"球":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"接":{"docs":{},"进":{"docs":{},"销":{"docs":{},"存":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}},"松":{"docs":{},"散":{"docs":{},"耦":{"docs":{},"合":{"docs":{},",":{"docs":{},"这":{"docs":{},"样":{"docs":{},"也":{"docs":{},"方":{"docs":{},"便":{"docs":{},"测":{"docs":{},"试":{"docs":{},",":{"docs":{},"利":{"docs":{},"于":{"docs":{},"功":{"docs":{},"能":{"docs":{},"复":{"docs":{},"用":{"docs":{},",":{"docs":{},"更":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"是":{"docs":{},"使":{"docs":{},"得":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"整":{"docs":{},"个":{"docs":{},"体":{"docs":{},"系":{"docs":{},"结":{"docs":{},"构":{"docs":{},"变":{"docs":{},"得":{"docs":{},"非":{"docs":{},"常":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"注":{"docs":{},"入":{"docs":{},"了":{"docs":{},"什":{"docs":{},"么":{"docs":{},":":{"docs":{},"就":{"docs":{},"是":{"docs":{},"注":{"docs":{},"入":{"docs":{},"某":{"docs":{},"个":{"docs":{},"对":{"docs":{},"象":{"docs":{},"所":{"docs":{},"需":{"docs":{},"要":{"docs":{},"的":{"docs":{},"外":{"docs":{},"部":{"docs":{},"资":{"docs":{},"源":{"docs":{},"(":{"docs":{},"包":{"docs":{},"括":{"docs":{},"对":{"docs":{},"象":{"docs":{},"、":{"docs":{},"资":{"docs":{},"源":{"docs":{},"、":{"docs":{},"常":{"docs":{},"量":{"docs":{},"数":{"docs":{},"据":{"docs":{},")":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"对":{"docs":{},"象":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}},"册":{"docs":{},"一":{"docs":{},"个":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"到":{"docs":{},"容":{"docs":{},"器":{"docs":{},"中":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"到":{"docs":{},"容":{"docs":{},"器":{"docs":{},"中":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}},"带":{"docs":{},"名":{"docs":{},"称":{"docs":{},"的":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"到":{"docs":{},"容":{"docs":{},"器":{"docs":{},"中":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}},"用":{"docs":{},"户":{"docs":{},"数":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"解":{"docs":{},"(":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}},"紧":{"docs":{},"跟":{"docs":{},"在":{"docs":{},"文":{"docs":{},"档":{"docs":{},"块":{"docs":{},"后":{"docs":{},"面":{"docs":{},",":{"docs":{},"应":{"docs":{},"用":{"docs":{},"于":{"docs":{},"类":{"docs":{},"、":{"docs":{},"方":{"docs":{},"法":{"docs":{},"和":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"注":{"docs":{},"解":{"docs":{},"独":{"docs":{},"占":{"docs":{},"一":{"docs":{},"行":{"docs":{},"。":{"docs":{},"这":{"docs":{},"些":{"docs":{},"换":{"docs":{},"行":{"docs":{},"不":{"docs":{},"属":{"docs":{},"于":{"docs":{},"自":{"docs":{},"动":{"docs":{},"换":{"docs":{},"行":{"docs":{},"(":{"docs":{},"第":{"4":{"docs":{},".":{"5":{"docs":{},"节":{"docs":{},",":{"docs":{},"自":{"docs":{},"动":{"docs":{},"换":{"docs":{},"行":{"docs":{},")":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"级":{"docs":{},"别":{"docs":{},"不":{"docs":{},"变":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"释":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"不":{"docs":{},"要":{"docs":{},"封":{"docs":{},"闭":{"docs":{},"在":{"docs":{},"由":{"docs":{},"星":{"docs":{},"号":{"docs":{},"或":{"docs":{},"其":{"docs":{},"它":{"docs":{},"字":{"docs":{},"符":{"docs":{},"绘":{"docs":{},"制":{"docs":{},"的":{"docs":{},"框":{"docs":{},"架":{"docs":{},"里":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}},"中":{"docs":{},"那":{"docs":{},"些":{"docs":{},"可":{"docs":{},"能":{"docs":{},"被":{"docs":{},"剪":{"docs":{},"切":{"docs":{},"并":{"docs":{},"粘":{"docs":{},"贴":{"docs":{},"到":{"docs":{},"s":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},"中":{"docs":{},"的":{"docs":{},"命":{"docs":{},"令":{"docs":{},"行":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}},"意":{"docs":{},"到":{"docs":{},"后":{"docs":{},"台":{"docs":{},"的":{"docs":{},"那":{"docs":{},"个":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}},"事":{"docs":{},"项":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}},"表":{"1":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}},"docs":{}}}},"然":{"docs":{},"而":{"docs":{},"从":{"docs":{},"开":{"docs":{},"始":{"docs":{},"就":{"docs":{},"创":{"docs":{},"建":{"docs":{},"的":{"docs":{},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{},"缺":{"docs":{},"点":{"docs":{},"就":{"docs":{},"是":{"docs":{},"无":{"docs":{},"法":{"docs":{},"在":{"docs":{},"更":{"docs":{},"换":{"docs":{},"。":{"docs":{},"并":{"docs":{},"且":{"docs":{},"要":{"docs":{},"负":{"docs":{},"责":{"docs":{},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{},"的":{"docs":{},"整":{"docs":{},"个":{"docs":{},"生":{"docs":{},"命":{"docs":{},"周":{"docs":{},"期":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"我":{"docs":{},"们":{"docs":{},"的":{"docs":{},"g":{"docs":{},"i":{"docs":{},"r":{"docs":{},"l":{"docs":{},"想":{"docs":{},"要":{"docs":{},"换":{"docs":{},"一":{"docs":{},"个":{"docs":{},"怎":{"docs":{},"么":{"docs":{},"办":{"docs":{},"?":{"docs":{},"(":{"docs":{},"笔":{"docs":{},"者":{"docs":{},"严":{"docs":{},"重":{"docs":{},"不":{"docs":{},"支":{"docs":{},"持":{"docs":{},"g":{"docs":{},"i":{"docs":{},"r":{"docs":{},"l":{"docs":{},"经":{"docs":{},"常":{"docs":{},"更":{"docs":{},"换":{"docs":{},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{},")":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{},"必":{"docs":{},"须":{"docs":{},"是":{"docs":{},"隐":{"docs":{},"含":{"docs":{},"的":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"常":{"docs":{},"量":{"docs":{},"。":{"docs":{},"以":{"docs":{},"下":{"docs":{},"代":{"docs":{},"码":{"docs":{},"不":{"docs":{},"编":{"docs":{},"译":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}},"后":{"docs":{},"取":{"docs":{},"到":{"docs":{},"值":{"docs":{},"的":{"docs":{},"情":{"docs":{},"况":{"docs":{},"。":{"docs":{},"从":{"docs":{},"「":{"docs":{},"先":{"docs":{},"行":{"docs":{},"发":{"docs":{},"生":{"docs":{},"原":{"docs":{},"则":{"docs":{},"」":{"docs":{},"的":{"docs":{},"角":{"docs":{},"度":{"docs":{},"理":{"docs":{},"解":{"docs":{},"的":{"docs":{},"话":{"docs":{},",":{"docs":{},"就":{"docs":{},"是":{"docs":{},"对":{"docs":{},"于":{"docs":{},"一":{"docs":{},"个":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},"。":{"docs":{},"这":{"docs":{},"里":{"docs":{},"为":{"docs":{},"了":{"docs":{},"避":{"docs":{},"免":{"docs":{},"i":{"docs":{},"f":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}},"我":{"docs":{},"们":{"docs":{},"通":{"docs":{},"过":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"引":{"docs":{},"用":{"docs":{},"来":{"docs":{},"把":{"docs":{},"所":{"docs":{},"有":{"docs":{},"东":{"docs":{},"西":{"docs":{},"拼":{"docs":{},"到":{"docs":{},"一":{"docs":{},"起":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"手":{"docs":{},"动":{"docs":{},"实":{"docs":{},"现":{"docs":{},"工":{"docs":{},"厂":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"按":{"docs":{},"照":{"docs":{},"提":{"docs":{},"示":{"docs":{},"一":{"docs":{},"步":{"docs":{},"一":{"docs":{},"步":{"docs":{},"安":{"docs":{},"装":{"docs":{},"即":{"docs":{},"可":{"docs":{},",":{"docs":{},"我":{"docs":{},"装":{"docs":{},"在":{"docs":{},"了":{"docs":{},"c":{"docs":{},"盘":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"盘":{"docs":{},"装":{"docs":{},"了":{"docs":{},"s":{"docs":{},"s":{"docs":{},"d":{"docs":{},"会":{"docs":{},"快":{"docs":{},"一":{"docs":{},"些":{"docs":{},"。":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"⽽":{"docs":{},"而":{"docs":{},"封":{"docs":{},"闭":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"层":{"docs":{},"次":{"docs":{},"也":{"docs":{},"有":{"docs":{},"不":{"docs":{},"便":{"docs":{},"之":{"docs":{},"处":{"docs":{},",":{"docs":{},"有":{"docs":{},"时":{"docs":{},"候":{"docs":{},"也":{"docs":{},"应":{"docs":{},"该":{"docs":{},"开":{"docs":{},"放":{"docs":{},"某":{"docs":{},"一":{"docs":{},"层":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"想":{"docs":{},"往":{"docs":{},"包":{"docs":{},"含":{"docs":{},"了":{"docs":{},"一":{"docs":{},"些":{"docs":{},"由":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"调":{"docs":{},"用":{"docs":{},"的":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"成":{"docs":{},"为":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"应":{"docs":{},"用":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}},"父":{"docs":{},"母":{"docs":{},"包":{"docs":{},"办":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}},":":{"docs":{},"一":{"docs":{},"切":{"docs":{},"交":{"docs":{},"给":{"docs":{},"父":{"docs":{},"母":{"docs":{},",":{"docs":{},"自":{"docs":{},"己":{"docs":{},"不":{"docs":{},"用":{"docs":{},"费":{"docs":{},"吹":{"docs":{},"灰":{"docs":{},"之":{"docs":{},"力":{"docs":{},",":{"docs":{},"只":{"docs":{},"需":{"docs":{},"要":{"docs":{},"等":{"docs":{},"着":{"docs":{},"k":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{},"就":{"docs":{},"好":{"docs":{},"了":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"理":{"docs":{},"解":{"docs":{},"d":{"docs":{},"i":{"docs":{},"的":{"docs":{},"关":{"docs":{},"键":{"docs":{},"是":{"docs":{},":":{"docs":{},"“":{"docs":{},"谁":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"谁":{"docs":{},",":{"docs":{},"为":{"docs":{},"什":{"docs":{},"么":{"docs":{},"需":{"docs":{},"要":{"docs":{},"依":{"docs":{},"赖":{"docs":{},",":{"docs":{},"谁":{"docs":{},"注":{"docs":{},"入":{"docs":{},"谁":{"docs":{},",":{"docs":{},"注":{"docs":{},"入":{"docs":{},"了":{"docs":{},"什":{"docs":{},"么":{"docs":{},"”":{"docs":{},",":{"docs":{},"那":{"docs":{},"我":{"docs":{},"们":{"docs":{},"来":{"docs":{},"深":{"docs":{},"入":{"docs":{},"分":{"docs":{},"析":{"docs":{},"一":{"docs":{},"下":{"docs":{},":":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"了":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"和":{"docs":{},"d":{"docs":{},"i":{"docs":{},"的":{"docs":{},"概":{"docs":{},"念":{"docs":{},"后":{"docs":{},",":{"docs":{},"一":{"docs":{},"切":{"docs":{},"都":{"docs":{},"将":{"docs":{},"变":{"docs":{},"得":{"docs":{},"简":{"docs":{},"单":{"docs":{},"明":{"docs":{},"了":{"docs":{},",":{"docs":{},"剩":{"docs":{},"下":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},"只":{"docs":{},"是":{"docs":{},"在":{"docs":{},"框":{"docs":{},"架":{"docs":{},"中":{"docs":{},"堆":{"docs":{},"积":{"docs":{},"木":{"docs":{},"而":{"docs":{},"已":{"docs":{},",":{"docs":{},"下":{"docs":{},"一":{"docs":{},"节":{"docs":{},"来":{"docs":{},"看":{"docs":{},"看":{"docs":{},"s":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"是":{"docs":{},"怎":{"docs":{},"么":{"docs":{},"用":{"docs":{},"的":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"而":{"docs":{},"言":{"docs":{},",":{"docs":{},"“":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"注":{"docs":{},"入":{"docs":{},"”":{"docs":{},"明":{"docs":{},"确":{"docs":{},"描":{"docs":{},"述":{"docs":{},"了":{"docs":{},"“":{"docs":{},"被":{"docs":{},"注":{"docs":{},"入":{"docs":{},"对":{"docs":{},"象":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"容":{"docs":{},"器":{"docs":{},"配":{"docs":{},"置":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"对":{"docs":{},"象":{"docs":{},"”":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"不":{"docs":{},"是":{"docs":{},"生":{"docs":{},"搬":{"docs":{},"硬":{"docs":{},"套":{"docs":{},"。":{"docs":{},"其":{"docs":{},"实":{"docs":{},"设":{"docs":{},"计":{"docs":{},"模":{"docs":{},"式":{"docs":{},"都":{"docs":{},"是":{"docs":{},"设":{"docs":{},"计":{"docs":{},"原":{"docs":{},"则":{"docs":{},"的":{"docs":{},"体":{"docs":{},"现":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}},"非":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"谁":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"于":{"docs":{},"谁":{"docs":{},":":{"docs":{},"当":{"docs":{},"然":{"docs":{},"是":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"于":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"容":{"docs":{},"器":{"docs":{},";":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}},"控":{"docs":{},"制":{"docs":{},"谁":{"docs":{},",":{"docs":{},"控":{"docs":{},"制":{"docs":{},"什":{"docs":{},"么":{"docs":{},":":{"docs":{},"传":{"docs":{},"统":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}},"注":{"docs":{},"入":{"docs":{},"谁":{"docs":{},":":{"docs":{},"很":{"docs":{},"明":{"docs":{},"显":{"docs":{},"是":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"容":{"docs":{},"器":{"docs":{},"注":{"docs":{},"入":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"某":{"docs":{},"个":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},";":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"象":{"docs":{},"的":{"docs":{},"创":{"docs":{},"建":{"docs":{},";":{"docs":{},"谁":{"docs":{},"控":{"docs":{},"制":{"docs":{},"谁":{"docs":{},"?":{"docs":{},"当":{"docs":{},"然":{"docs":{},"是":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}},"青":{"docs":{},"梅":{"docs":{},"竹":{"docs":{},"马":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}},":":{"docs":{},"g":{"docs":{},"i":{"docs":{},"r":{"docs":{},"l":{"docs":{},"从":{"docs":{},"小":{"docs":{},"就":{"docs":{},"知":{"docs":{},"道":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"b":{"docs":{},"o":{"docs":{},"y":{"docs":{},"。":{"docs":{"ioc/1.concept.html":{"ref":"ioc/1.concept.html","tf":0.011494252873563218}}}}}}}}}}}}}}}}}}}}}}},";":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576},"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825},"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}},";":{"docs":{},";":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},")":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}},"及":{"docs":{},"右":{"docs":{},"括":{"docs":{},"号":{"docs":{},"(":{"docs":{},")":{"docs":{},")":{"docs":{},"后":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}},"x":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"m":{"docs":{},"l":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.015151515151515152}},"\"":{"docs":{},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.007481296758104738}}}},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.014962593516209476}},";":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}}}}}}}}}}}}},"a":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},";":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}}}},"剑":{"docs":{},"圣":{"docs":{},"在":{"docs":{},"g":{"docs":{},"a":{"docs":{},"n":{"docs":{},"k":{"docs":{},"!":{"docs":{},"!":{"docs":{},"。":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}},"买":{"docs":{},"了":{"5":{"docs":{},"毛":{"docs":{},"钱":{"docs":{},"特":{"docs":{},"效":{"docs":{},",":{"docs":{},"装":{"docs":{},"逼":{"docs":{},"成":{"docs":{},"功":{"docs":{},"!":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}},"docs":{}}}}},"已":{"docs":{},"经":{"docs":{},"注":{"docs":{},"入":{"docs":{},"到":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}},"是":{"docs":{},"非":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}},"达":{"docs":{},"到":{"docs":{},"通":{"docs":{},"信":{"docs":{},"目":{"docs":{},"的":{"docs":{},"。":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}},"德":{"docs":{},"玛":{"docs":{},"买":{"docs":{},"了":{"5":{"docs":{},"毛":{"docs":{},"钱":{"docs":{},"的":{"docs":{},"特":{"docs":{},"效":{"docs":{},",":{"docs":{},"装":{"docs":{},"逼":{"docs":{},"成":{"docs":{},"功":{"docs":{},"!":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}}}}}}}}}},"docs":{}}},"西":{"docs":{},"亚":{"docs":{},"之":{"docs":{},"力":{"docs":{},"购":{"docs":{},"买":{"docs":{},"了":{"docs":{},"神":{"docs":{},"盾":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}},"此":{"docs":{},"时":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}},"外":{"docs":{},",":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"还":{"docs":{},"为":{"docs":{},"包":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"反":{"docs":{},"射":{"docs":{},"类":{"docs":{},",":{"docs":{},"在":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"处":{"docs":{},"我":{"docs":{},"使":{"docs":{},"用":{"docs":{},"*":{"docs":{},"*":{"docs":{},"注":{"docs":{},"解":{"docs":{},"*":{"docs":{},"*":{"docs":{},"的":{"docs":{},"原":{"docs":{},"因":{"docs":{},"是":{"docs":{},"为":{"docs":{},"了":{"docs":{},"简":{"docs":{},"单":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}},"不":{"docs":{},"详":{"docs":{},"细":{"docs":{},"介":{"docs":{},"绍":{"docs":{},",":{"docs":{},"大":{"docs":{},"家":{"docs":{},"可":{"docs":{},"以":{"docs":{},"问":{"docs":{},"度":{"docs":{},"娘":{"docs":{},"/":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},",":{"docs":{},"有":{"docs":{},"机":{"docs":{},"会":{"docs":{},"的":{"docs":{},"话":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"分":{"docs":{},"享":{"docs":{},"给":{"docs":{},"大":{"docs":{},"家":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"命":{"docs":{},"令":{"docs":{},"会":{"docs":{},"使":{"docs":{},"用":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}},"首":{"docs":{},"先":{"docs":{},"还":{"docs":{},"是":{"docs":{},"要":{"docs":{},"在":{"docs":{"ioc/2.spring.html":{"ref":"ioc/2.spring.html","tf":0.007575757575757576}}}}}},"设":{"docs":{},"计":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"一":{"docs":{},"个":{"docs":{},"i":{"docs":{},"o":{"docs":{},"c":{"docs":{},"容":{"docs":{},"器":{"docs":{},"中":{"docs":{},"最":{"docs":{},"核":{"docs":{},"心":{"docs":{},"的":{"docs":{},"当":{"docs":{},"属":{"docs":{},"容":{"docs":{},"器":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"来":{"docs":{},"一":{"docs":{},"个":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"。":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"注":{"docs":{},"意":{"docs":{},"到":{"docs":{},"生":{"docs":{},"成":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"的":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},",":{"docs":{},"它":{"docs":{},"传":{"docs":{},"入":{"docs":{},"一":{"docs":{},"个":{"docs":{},"实":{"docs":{},"现":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"接":{"docs":{},"口":{"docs":{},"的":{"docs":{},"类":{"docs":{},"作":{"docs":{},"为":{"docs":{},"参":{"docs":{},"数":{"docs":{},",":{"docs":{},"并":{"docs":{},"调":{"docs":{},"用":{"docs":{},"父":{"docs":{},"类":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"的":{"docs":{},"构":{"docs":{},"造":{"docs":{},"器":{"docs":{},",":{"docs":{},"即":{"docs":{},"将":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"中":{"docs":{},"的":{"docs":{},"成":{"docs":{},"员":{"docs":{},"变":{"docs":{},"量":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"看":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"定":{"docs":{},"义":{"docs":{},"一":{"docs":{},"个":{"docs":{},"策":{"docs":{},"略":{"docs":{},"接":{"docs":{},"口":{"docs":{},":":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"大":{"docs":{},"的":{"docs":{},"元":{"docs":{},"素":{"docs":{},"列":{"docs":{},"表":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}},"定":{"docs":{},"义":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"包":{"docs":{},"装":{"docs":{},"的":{"docs":{},"注":{"docs":{},"解":{"docs":{},",":{"docs":{},"它":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"返":{"docs":{},"回":{"docs":{},"值":{"docs":{},"为":{"docs":{},"数":{"docs":{},"组":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"判":{"docs":{},"断":{"docs":{},"是":{"docs":{},"否":{"docs":{},"使":{"docs":{},"用":{"docs":{},"了":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"类":{"docs":{},"型":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},"(":{"docs":{},"是":{"docs":{},":":{"docs":{},"根":{"docs":{},"据":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"查":{"docs":{},"找":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"查":{"docs":{},"找":{"docs":{},"不":{"docs":{},"到":{"docs":{},"则":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"无":{"docs":{},"参":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"的":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"命":{"docs":{},"名":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"(":{"docs":{},"是":{"docs":{},":":{"docs":{},"根":{"docs":{},"据":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"查":{"docs":{},"找":{"docs":{},"b":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{},")":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"小":{"docs":{},"鱼":{"docs":{},"人":{"docs":{},"购":{"docs":{},"买":{"docs":{},"了":{"docs":{},"爆":{"docs":{},"裂":{"docs":{},"魔":{"docs":{},"杖":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}},"指":{"docs":{},"定":{"docs":{},"装":{"docs":{},"配":{"docs":{},"的":{"docs":{},"类":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}},"端":{"docs":{},"口":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"语":{"docs":{},"言":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"南":{"docs":{},"和":{"docs":{},"手":{"docs":{},"册":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}},"说":{"docs":{},"明":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"测":{"docs":{},"试":{"docs":{},"代":{"docs":{},"码":{"docs":{},":":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}},"类":{"docs":{},"的":{"docs":{},"命":{"docs":{},"名":{"docs":{},"以":{"docs":{},"它":{"docs":{},"要":{"docs":{},"测":{"docs":{},"试":{"docs":{},"的":{"docs":{},"类":{"docs":{},"的":{"docs":{},"名":{"docs":{},"称":{"docs":{},"开":{"docs":{},"始":{"docs":{},",":{"docs":{},"以":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"结":{"docs":{},"束":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},",":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"或":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"结":{"docs":{},"果":{"docs":{},"主":{"docs":{},"要":{"docs":{},"也":{"docs":{},"是":{"docs":{},"看":{"docs":{},"这":{"docs":{},"两":{"docs":{},"个":{"docs":{},"值":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}},"结":{"docs":{},"果":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"中":{"docs":{},"主":{"docs":{},"要":{"docs":{},"的":{"docs":{},"指":{"docs":{},"标":{"docs":{},"是":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}},"第":{"4":{"docs":{},".":{"6":{"docs":{},".":{"3":{"docs":{},"水":{"docs":{},"平":{"docs":{},"对":{"docs":{},"齐":{"docs":{},"一":{"docs":{},"节":{"docs":{},"中":{"docs":{},"指":{"docs":{},"出":{"docs":{},",":{"docs":{},"不":{"docs":{},"鼓":{"docs":{},"励":{"docs":{},"使":{"docs":{},"用":{"docs":{},"可":{"docs":{},"变":{"docs":{},"数":{"docs":{},"目":{"docs":{},"的":{"docs":{},"空":{"docs":{},"格":{"docs":{},"来":{"docs":{},"对":{"docs":{},"齐":{"docs":{},"前":{"docs":{},"面":{"docs":{},"行":{"docs":{},"的":{"docs":{},"符":{"docs":{},"号":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}},"7":{"docs":{},"条":{"docs":{},"款":{"docs":{},":":{"docs":{},"“":{"docs":{},"a":{"docs":{},"v":{"docs":{},"o":{"docs":{},"i":{"docs":{},"d":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}},"docs":{},"三":{"docs":{},"步":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"反":{"docs":{},"射":{"docs":{},"方":{"docs":{},"法":{"docs":{},"操":{"docs":{},"控":{"docs":{},"目":{"docs":{},"标":{"docs":{},"类":{"docs":{},"的":{"docs":{},"元":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"我":{"docs":{},"们":{"docs":{},"将":{"docs":{},"这":{"docs":{},"些":{"docs":{},"信":{"docs":{},"息":{"docs":{},"以":{"docs":{},"一":{"docs":{},"个":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"提":{"docs":{},"供":{"docs":{},",":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"语":{"docs":{},"言":{"docs":{},"的":{"docs":{},"反":{"docs":{},"射":{"docs":{},"功":{"docs":{},"能":{"docs":{},"编":{"docs":{},"写":{"docs":{},"一":{"docs":{},"段":{"docs":{},"通":{"docs":{},"用":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"对":{"docs":{},"类":{"docs":{},"似":{"docs":{},"于":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"o":{"docs":{},"的":{"docs":{},"类":{"docs":{},"进":{"docs":{},"行":{"docs":{},"实":{"docs":{},"例":{"docs":{},"化":{"docs":{},"及":{"docs":{},"功":{"docs":{},"能":{"docs":{},"调":{"docs":{},"用":{"docs":{},"操":{"docs":{},"作":{"docs":{},"了":{"docs":{},"。":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"方":{"docs":{},"的":{"docs":{},"包":{"docs":{},"。":{"docs":{},"每":{"docs":{},"个":{"docs":{},"顶":{"docs":{},"级":{"docs":{},"包":{"docs":{},"为":{"docs":{},"一":{"docs":{},"组":{"docs":{},",":{"docs":{},"字":{"docs":{},"典":{"docs":{},"序":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},":":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"r":{"docs":{},"o":{"docs":{},"i":{"docs":{},"d":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"一":{"docs":{},"个":{"docs":{},"要":{"docs":{},"注":{"docs":{},"意":{"docs":{},"的":{"docs":{},"就":{"docs":{},"是":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}},"章":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}},"维":{"docs":{},"护":{"docs":{},"名":{"docs":{},"称":{"docs":{},"和":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"关":{"docs":{},"系":{"docs":{},"。":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}}}}}}},"的":{"docs":{},"三":{"docs":{},"棵":{"docs":{},"“":{"docs":{},"树":{"docs":{},"”":{"docs":{},"组":{"docs":{},"成":{"docs":{},"。":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"是":{"docs":{},"你":{"docs":{},"的":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}},"基":{"docs":{},"百":{"docs":{},"科":{"docs":{},"上":{"docs":{},"是":{"docs":{},"这":{"docs":{},"样":{"docs":{},"描":{"docs":{},"述":{"docs":{},"代":{"docs":{},"理":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},":":{"docs":{},"所":{"docs":{},"谓":{"docs":{},"代":{"docs":{},"理":{"docs":{},"者":{"docs":{},"是":{"docs":{},"指":{"docs":{},"一":{"docs":{},"个":{"docs":{},"类":{"docs":{},"可":{"docs":{},"以":{"docs":{},"作":{"docs":{},"为":{"docs":{},"其":{"docs":{},"他":{"docs":{},"东":{"docs":{},"西":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"。":{"docs":{},"代":{"docs":{},"理":{"docs":{},"者":{"docs":{},"可":{"docs":{},"以":{"docs":{},"作":{"docs":{},"任":{"docs":{},"何":{"docs":{},"东":{"docs":{},"西":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"英":{"docs":{},"雄":{"docs":{},"名":{"docs":{},"称":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}},"装":{"docs":{},"备":{"docs":{},"名":{"docs":{},"称":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085},"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}},"输":{"docs":{},"出":{"docs":{},"了":{"docs":{},":":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}},"结":{"docs":{},"果":{"docs":{},":":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}},"到":{"docs":{},"指":{"docs":{},"定":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"我":{"docs":{},"没":{"docs":{},"用":{"docs":{},"过":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}},"入":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}},"需":{"docs":{},"要":{"docs":{},"注":{"docs":{},"入":{"docs":{},"的":{"docs":{},"字":{"docs":{},"段":{"docs":{"ioc/3.myioc.html":{"ref":"ioc/3.myioc.html","tf":0.00141643059490085}}}}}},"意":{"docs":{},"的":{"docs":{},"是":{"docs":{},"”":{"docs":{},"i":{"docs":{},"o":{"docs":{},"s":{"docs":{},"”":{"docs":{},"并":{"docs":{},"不":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"真":{"docs":{},"正":{"docs":{},"的":{"docs":{},"驼":{"docs":{},"峰":{"docs":{},"表":{"docs":{},"示":{"docs":{},"形":{"docs":{},"式":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"该":{"docs":{},"推":{"docs":{},"荐":{"docs":{},"对":{"docs":{},"它":{"docs":{},"并":{"docs":{},"不":{"docs":{},"适":{"docs":{},"用":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"时":{"docs":{},"才":{"docs":{},"声":{"docs":{},"明":{"docs":{},",":{"docs":{},"并":{"docs":{},"尽":{"docs":{},"快":{"docs":{},"进":{"docs":{},"行":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}},"访":{"docs":{},"问":{"docs":{},"的":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"文":{"docs":{},"件":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}},"部":{"docs":{},"署":{"docs":{},"大":{"docs":{},"量":{"docs":{},"的":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},",":{"docs":{},"高":{"docs":{},"峰":{"docs":{},"期":{"docs":{},"计":{"docs":{},"算":{"docs":{},",":{"docs":{},"可":{"docs":{},"能":{"docs":{},"要":{"docs":{},"部":{"docs":{},"署":{"3":{"0":{"docs":{},"台":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"。":{"docs":{},"并":{"docs":{},"且":{"docs":{},"这":{"docs":{},"三":{"docs":{},"十":{"docs":{},"台":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},",":{"docs":{},"只":{"docs":{},"有":{"docs":{},"秒":{"docs":{},"杀":{"docs":{},",":{"docs":{},"活":{"docs":{},"动":{"docs":{},"时":{"docs":{},"才":{"docs":{},"会":{"docs":{},"用":{"docs":{},"到":{"docs":{},",":{"docs":{},"存":{"docs":{},"在":{"docs":{},"大":{"docs":{},"量":{"docs":{},"的":{"docs":{},"浪":{"docs":{},"费":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}},"求":{"docs":{},"功":{"docs":{},"能":{"docs":{},"矩":{"docs":{},"阵":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"管":{"docs":{},"理":{"docs":{},"传":{"docs":{},"统":{"docs":{},"的":{"docs":{},"做":{"docs":{},"法":{"docs":{},",":{"docs":{},"会":{"docs":{},"使":{"docs":{},"用":{"docs":{},"用":{"docs":{},"例":{"docs":{},"图":{"docs":{},"或":{"docs":{},"模":{"docs":{},"块":{"docs":{},"图":{"docs":{},"(":{"docs":{},"需":{"docs":{},"求":{"docs":{},"列":{"docs":{},"表":{"docs":{},")":{"docs":{},"进":{"docs":{},"行":{"docs":{},"需":{"docs":{},"求":{"docs":{},"的":{"docs":{},"描":{"docs":{},"述":{"docs":{},"。":{"docs":{},"这":{"docs":{},"样":{"docs":{},"做":{"docs":{},"常":{"docs":{},"常":{"docs":{},"忽":{"docs":{},"视":{"docs":{},"掉":{"docs":{},"一":{"docs":{},"个":{"docs":{},"很":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"需":{"docs":{},"求":{"docs":{},"(":{"docs":{},"非":{"docs":{},"功":{"docs":{},"能":{"docs":{},"需":{"docs":{},"求":{"docs":{},")":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"推":{"docs":{},"荐":{"docs":{},"大":{"docs":{},"家":{"docs":{},"使":{"docs":{},"用":{"docs":{},"需":{"docs":{},"求":{"docs":{},"功":{"docs":{},"能":{"docs":{},"矩":{"docs":{},"阵":{"docs":{},",":{"docs":{},"进":{"docs":{},"行":{"docs":{},"需":{"docs":{},"求":{"docs":{},"描":{"docs":{},"述":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"[":{"1":{"docs":{},".":{"docs":{},"]":{"docs":{},"装":{"docs":{},"载":{"docs":{},":":{"docs":{},"查":{"docs":{},"找":{"docs":{},"和":{"docs":{},"导":{"docs":{},"入":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}},"2":{"docs":{},".":{"1":{"docs":{},"]":{"docs":{},"校":{"docs":{},"验":{"docs":{},":":{"docs":{},"检":{"docs":{},"查":{"docs":{},"载":{"docs":{},"入":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},"数":{"docs":{},"据":{"docs":{},"的":{"docs":{},"正":{"docs":{},"确":{"docs":{},"性":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}},"2":{"docs":{},"]":{"docs":{},"准":{"docs":{},"备":{"docs":{},":":{"docs":{},"给":{"docs":{},"类":{"docs":{},"的":{"docs":{},"静":{"docs":{},"态":{"docs":{},"变":{"docs":{},"量":{"docs":{},"分":{"docs":{},"配":{"docs":{},"存":{"docs":{},"储":{"docs":{},"空":{"docs":{},"间":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}},"3":{"docs":{},"]":{"docs":{},"解":{"docs":{},"析":{"docs":{},":":{"docs":{},"将":{"docs":{},"符":{"docs":{},"号":{"docs":{},"引":{"docs":{},"用":{"docs":{},"转":{"docs":{},"成":{"docs":{},"直":{"docs":{},"接":{"docs":{},"引":{"docs":{},"用":{"docs":{},";":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}},"docs":{},"]":{"docs":{},"链":{"docs":{},"接":{"docs":{},":":{"docs":{},"执":{"docs":{},"行":{"docs":{},"校":{"docs":{},"验":{"docs":{},"、":{"docs":{},"准":{"docs":{},"备":{"docs":{},"和":{"docs":{},"解":{"docs":{},"析":{"docs":{},"步":{"docs":{},"骤":{"docs":{},",":{"docs":{},"其":{"docs":{},"中":{"docs":{},"解":{"docs":{},"析":{"docs":{},"步":{"docs":{},"骤":{"docs":{},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"选":{"docs":{},"择":{"docs":{},"的":{"docs":{},":":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"3":{"docs":{},".":{"docs":{},"]":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},":":{"docs":{},"对":{"docs":{},"类":{"docs":{},"的":{"docs":{},"静":{"docs":{},"态":{"docs":{},"变":{"docs":{},"量":{"docs":{},"、":{"docs":{},"静":{"docs":{},"态":{"docs":{},"代":{"docs":{},"码":{"docs":{},"块":{"docs":{},"执":{"docs":{},"行":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"工":{"docs":{},"作":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{},"]":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"]":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"2":{"docs":{},"]":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}},"o":{"docs":{},"l":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"]":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"y":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"]":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}},"n":{"docs":{},"g":{"docs":{},":":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"u":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}},"a":{"docs":{},"l":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{},"[":{"docs":{},",":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}},"b":{"docs":{},"r":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}},"h":{"docs":{},"e":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}}},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}}}},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"_":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{},"_":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"l":{"docs":{},"e":{"docs":{},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"l":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"e":{"docs":{},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.006535947712418301}}}}}}}},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"w":{"docs":{},"i":{"docs":{},"d":{"docs":{},"t":{"docs":{},"h":{"docs":{},"]":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}},"鱼":{"docs":{},"香":{"docs":{},"肉":{"docs":{},"丝":{"docs":{},"]":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}},"从":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}},"本":{"docs":{},"地":{"docs":{},"文":{"docs":{},"件":{"docs":{},"系":{"docs":{},"统":{"docs":{},"载":{"docs":{},"入":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"本":{"docs":{},"地":{"docs":{},"文":{"docs":{},"件":{"docs":{},"系":{"docs":{},"统":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"该":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"将":{"docs":{},"抛":{"docs":{},"出":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"f":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},"c":{"docs":{},"e":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"异":{"docs":{},"常":{"docs":{},"。":{"docs":{},"该":{"docs":{},"方":{"docs":{},"法":{"docs":{},"是":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"默":{"docs":{},"认":{"docs":{},"使":{"docs":{},"用":{"docs":{},"的":{"docs":{},"装":{"docs":{},"载":{"docs":{},"机":{"docs":{},"制":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"s":{"docs":{},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"i":{"docs":{},"e":{"docs":{},"r":{"docs":{},"中":{"docs":{},"获":{"docs":{},"取":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"可":{"docs":{},"能":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"工":{"docs":{},"厂":{"docs":{},"或":{"docs":{},"者":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"的":{"docs":{},"实":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"上":{"docs":{},"面":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"可":{"docs":{},"以":{"docs":{},"看":{"docs":{},"出":{"docs":{},",":{"docs":{},"要":{"docs":{},"利":{"docs":{},"用":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"docs":{},"中":{"docs":{},"的":{"docs":{},"动":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},"。":{"docs":{},"利":{"docs":{},"用":{"docs":{},"静":{"docs":{},"态":{"docs":{},"方":{"docs":{},"法":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},".":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"源":{"docs":{},"码":{"docs":{},"看":{"docs":{},"出":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"的":{"docs":{},"生":{"docs":{},"成":{"docs":{},"是":{"docs":{},"依":{"docs":{},"靠":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"0":{"docs":{},"这":{"docs":{},"个":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"接":{"docs":{},"下":{"docs":{},"来":{"docs":{},"看":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"0":{"docs":{},"源":{"docs":{},"码":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}},"队":{"docs":{},"列":{"docs":{},"中":{"docs":{},"获":{"docs":{},"取":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},"描":{"docs":{},"述":{"docs":{},"以":{"docs":{},"及":{"docs":{},"类":{"docs":{},"图":{"docs":{},"来":{"docs":{},"看":{"docs":{},"真":{"docs":{},"的":{"docs":{},"是":{"docs":{},"非":{"docs":{},"常":{"docs":{},"简":{"docs":{},"单":{"docs":{},",":{"docs":{},"总":{"docs":{},"结":{"docs":{},"起":{"docs":{},"来":{"docs":{},"就":{"docs":{},"是":{"docs":{},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{},"定":{"docs":{},"义":{"docs":{},"了":{"docs":{},"一":{"docs":{},"组":{"docs":{},"算":{"docs":{},"法":{"docs":{},",":{"docs":{},"它":{"docs":{},"们":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"共":{"docs":{},"同":{"docs":{},"的":{"docs":{},"策":{"docs":{},"略":{"docs":{},"行":{"docs":{},"为":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"这":{"docs":{},"些":{"docs":{},"算":{"docs":{},"法":{"docs":{},"之":{"docs":{},"间":{"docs":{},"可":{"docs":{},"以":{"docs":{},"互":{"docs":{},"相":{"docs":{},"替":{"docs":{},"换":{"docs":{},",":{"docs":{},"使":{"docs":{},"算":{"docs":{},"法":{"docs":{},"可":{"docs":{},"以":{"docs":{},"根":{"docs":{},"据":{"docs":{},"场":{"docs":{},"景":{"docs":{},"的":{"docs":{},"不":{"docs":{},"同":{"docs":{},"而":{"docs":{},"改":{"docs":{},"变":{"docs":{},"。":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"访":{"docs":{},"问":{"docs":{},"外":{"docs":{},"部":{"docs":{},"变":{"docs":{},"量":{"docs":{},"的":{"docs":{},"作":{"docs":{},"用":{"docs":{},"域":{"docs":{},"是":{"docs":{},"匿":{"docs":{},"名":{"docs":{},"对":{"docs":{},"象":{"docs":{},"非":{"docs":{},"常":{"docs":{},"相":{"docs":{},"似":{"docs":{},"。":{"docs":{},"您":{"docs":{},"可":{"docs":{},"以":{"docs":{},"从":{"docs":{},"本":{"docs":{},"地":{"docs":{},"外":{"docs":{},"部":{"docs":{},"范":{"docs":{},"围":{"docs":{},"以":{"docs":{},"及":{"docs":{},"实":{"docs":{},"例":{"docs":{},"字":{"docs":{},"段":{"docs":{},"和":{"docs":{},"静":{"docs":{},"态":{"docs":{},"变":{"docs":{},"量":{"docs":{},"中":{"docs":{},"访":{"docs":{},"问":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"变":{"docs":{},"量":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"哪":{"docs":{},"里":{"docs":{},"断":{"docs":{},"开":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"另":{"docs":{},"外":{"docs":{},"一":{"docs":{},"个":{"docs":{},"方":{"docs":{},"面":{"docs":{},"来":{"docs":{},"说":{"docs":{},",":{"docs":{},"分":{"docs":{},"层":{"docs":{},"隔":{"docs":{},"离":{"docs":{},"使":{"docs":{},"得":{"docs":{},"层":{"docs":{},"与":{"docs":{},"层":{"docs":{},"之":{"docs":{},"间":{"docs":{},"都":{"docs":{},"是":{"docs":{},"相":{"docs":{},"互":{"docs":{},"独":{"docs":{},"立":{"docs":{},"的":{"docs":{},",":{"docs":{},"架":{"docs":{},"构":{"docs":{},"中":{"docs":{},"的":{"docs":{},"每":{"docs":{},"一":{"docs":{},"层":{"docs":{},"的":{"docs":{},"互":{"docs":{},"相":{"docs":{},"了":{"docs":{},"解":{"docs":{},"都":{"docs":{},"很":{"docs":{},"少":{"docs":{},"。":{"docs":{},"为":{"docs":{},"了":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"技":{"docs":{},"术":{"docs":{},"的":{"docs":{},"角":{"docs":{},"度":{"docs":{},"来":{"docs":{},"说":{"docs":{},",":{"docs":{},"有":{"docs":{},"很":{"docs":{},"多":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"能":{"docs":{},"够":{"docs":{},"实":{"docs":{},"现":{"docs":{},"这":{"docs":{},"些":{"docs":{},"模":{"docs":{},"块":{"docs":{},"。":{"docs":{},"比":{"docs":{},"如":{"docs":{},"说":{"docs":{},"在":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"平":{"docs":{},"台":{"docs":{},"中":{"docs":{},",":{"docs":{},"c":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"取":{"docs":{},"消":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"语":{"docs":{},"言":{"docs":{},"访":{"docs":{},"问":{"docs":{},"检":{"docs":{},"查":{"docs":{},"以":{"docs":{},"访":{"docs":{},"问":{"docs":{},"p":{"docs":{},"r":{"docs":{},"i":{"docs":{},"v":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"变":{"docs":{},"量":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}},"将":{"docs":{},"类":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"字":{"docs":{},"节":{"docs":{},"数":{"docs":{},"组":{"docs":{},"转":{"docs":{},"换":{"docs":{},"成":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"内":{"docs":{},"部":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{},"字":{"docs":{},"节":{"docs":{},"数":{"docs":{},"组":{"docs":{},"可":{"docs":{},"以":{"docs":{},"从":{"docs":{},"本":{"docs":{},"地":{"docs":{},"文":{"docs":{},"件":{"docs":{},"系":{"docs":{},"统":{"docs":{},"、":{"docs":{},"远":{"docs":{},"程":{"docs":{},"网":{"docs":{},"络":{"docs":{},"获":{"docs":{},"取":{"docs":{},"。":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"为":{"docs":{},"字":{"docs":{},"节":{"docs":{},"数":{"docs":{},"组":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"全":{"docs":{},"限":{"docs":{},"定":{"docs":{},"类":{"docs":{},"名":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"i":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},"对":{"docs":{},"象":{"docs":{},"指":{"docs":{},"向":{"docs":{},"分":{"docs":{},"配":{"docs":{},"的":{"docs":{},"内":{"docs":{},"存":{"docs":{},"空":{"docs":{},"间":{"docs":{},"(":{"docs":{},"执":{"docs":{},"行":{"docs":{},"完":{"docs":{},"这":{"docs":{},"步":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}},"字":{"docs":{},"符":{"docs":{},"串":{"docs":{},"解":{"docs":{},"析":{"docs":{},"为":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}},"前":{"docs":{},"缀":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},"后":{"docs":{},"创":{"docs":{},"建":{"docs":{},"日":{"docs":{},"期":{"docs":{},"。":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"以":{"docs":{},"下":{"docs":{},"的":{"docs":{},"占":{"docs":{},"位":{"docs":{},"符":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}},"多":{"docs":{},"个":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},"公":{"docs":{},"用":{"docs":{},"的":{"docs":{},"功":{"docs":{},"能":{"docs":{},"/":{"docs":{},"模":{"docs":{},"块":{"docs":{},",":{"docs":{},"进":{"docs":{},"行":{"docs":{},"抽":{"docs":{},"取":{"docs":{},",":{"docs":{},"作":{"docs":{},"为":{"docs":{},"公":{"docs":{},"用":{"docs":{},"服":{"docs":{},"务":{"docs":{},"使":{"docs":{},"用":{"docs":{},"。":{"docs":{},"比":{"docs":{},"如":{"docs":{},"本":{"docs":{},"案":{"docs":{},"例":{"docs":{},"的":{"docs":{},"会":{"docs":{},"员":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"抽":{"docs":{},"取":{"docs":{},"为":{"docs":{},"公":{"docs":{},"用":{"docs":{},"的":{"docs":{},"服":{"docs":{},"务":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"每":{"docs":{},"一":{"docs":{},"个":{"docs":{},"类":{"docs":{},"在":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"中":{"docs":{},"都":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"它":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"类":{"docs":{},"结":{"docs":{},"构":{"docs":{},"信":{"docs":{},"息":{"docs":{},"的":{"docs":{},"描":{"docs":{},"述":{"docs":{},"。":{"docs":{},"数":{"docs":{},"组":{"docs":{},"、":{"docs":{},"枚":{"docs":{},"举":{"docs":{},"、":{"docs":{},"注":{"docs":{},"解":{"docs":{},"以":{"docs":{},"及":{"docs":{},"基":{"docs":{},"本":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"类":{"docs":{},"型":{"docs":{},"(":{"docs":{},"如":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"、":{"docs":{},"d":{"docs":{},"o":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"等":{"docs":{},")":{"docs":{},",":{"docs":{},"甚":{"docs":{},"至":{"docs":{},"v":{"docs":{},"o":{"docs":{},"i":{"docs":{},"d":{"docs":{},"都":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"没":{"docs":{},"有":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"的":{"docs":{},"构":{"docs":{},"造":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"对":{"docs":{},"象":{"docs":{},"是":{"docs":{},"在":{"docs":{},"装":{"docs":{},"载":{"docs":{},"类":{"docs":{},"时":{"docs":{},"由":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"通":{"docs":{},"过":{"docs":{},"调":{"docs":{},"用":{"docs":{},"类":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},"中":{"docs":{},"的":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"(":{"docs":{},")":{"docs":{},"方":{"docs":{},"法":{"docs":{},"自":{"docs":{},"动":{"docs":{},"构":{"docs":{},"造":{"docs":{},"的":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"个":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"标":{"docs":{},"签":{"docs":{},"后":{"docs":{},"新":{"docs":{},"起":{"docs":{},"一":{"docs":{},"行":{"docs":{},",":{"docs":{},"再":{"docs":{},"缩":{"docs":{},"进":{"2":{"docs":{},"个":{"docs":{},"空":{"docs":{},"格":{"docs":{},",":{"docs":{},"写":{"docs":{},"下":{"docs":{},"一":{"docs":{},"条":{"docs":{},"或":{"docs":{},"多":{"docs":{},"条":{"docs":{},"语":{"docs":{},"句":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}},"语":{"docs":{},"句":{"docs":{},"都":{"docs":{},"包":{"docs":{},"含":{"docs":{},"一":{"docs":{},"个":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"语":{"docs":{},"句":{"docs":{},"组":{"docs":{},",":{"docs":{},"即":{"docs":{},"使":{"docs":{},"它":{"docs":{},"什":{"docs":{},"么":{"docs":{},"代":{"docs":{},"码":{"docs":{},"也":{"docs":{},"不":{"docs":{},"包":{"docs":{},"含":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"单":{"docs":{},"词":{"docs":{},"的":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"字":{"docs":{},"母":{"docs":{},"都":{"docs":{},"大":{"docs":{},"写":{"docs":{},",":{"docs":{},"来":{"docs":{},"得":{"docs":{},"到":{"docs":{},"大":{"docs":{},"驼":{"docs":{},"峰":{"docs":{},"式":{"docs":{},"命":{"docs":{},"名":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}},"常":{"docs":{},"量":{"docs":{},"都":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"静":{"docs":{},"态":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"字":{"docs":{},"段":{"docs":{},",":{"docs":{},"但":{"docs":{},"不":{"docs":{},"是":{"docs":{},"所":{"docs":{},"有":{"docs":{},"静":{"docs":{},"态":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"字":{"docs":{},"段":{"docs":{},"都":{"docs":{},"是":{"docs":{},"常":{"docs":{},"量":{"docs":{},"。":{"docs":{},"在":{"docs":{},"决":{"docs":{},"定":{"docs":{},"一":{"docs":{},"个":{"docs":{},"字":{"docs":{},"段":{"docs":{},"是":{"docs":{},"否":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"常":{"docs":{},"量":{"docs":{},"时":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"类":{"docs":{},"或":{"docs":{},"成":{"docs":{},"员":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"以":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"短":{"docs":{},"的":{"docs":{},"摘":{"docs":{},"要":{"docs":{},"片":{"docs":{},"段":{"docs":{},"开":{"docs":{},"始":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"片":{"docs":{},"段":{"docs":{},"是":{"docs":{},"非":{"docs":{},"常":{"docs":{},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},",":{"docs":{},"在":{"docs":{},"某":{"docs":{},"些":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},",":{"docs":{},"它":{"docs":{},"是":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"出":{"docs":{},"现":{"docs":{},"的":{"docs":{},"文":{"docs":{},"本":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"在":{"docs":{},"类":{"docs":{},"和":{"docs":{},"方":{"docs":{},"法":{"docs":{},"索":{"docs":{},"引":{"docs":{},"中":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"语":{"docs":{},"句":{"docs":{},"后":{"docs":{},"要":{"docs":{},"换":{"docs":{},"行":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"顶":{"docs":{},"级":{"docs":{},"类":{"docs":{},"都":{"docs":{},"在":{"docs":{},"一":{"docs":{},"个":{"docs":{},"与":{"docs":{},"它":{"docs":{},"同":{"docs":{},"名":{"docs":{},"的":{"docs":{},"源":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},"(":{"docs":{},"当":{"docs":{},"然":{"docs":{},",":{"docs":{},"还":{"docs":{},"包":{"docs":{},"含":{"docs":{},".":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"后":{"docs":{},"缀":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"分":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},"或":{"docs":{},"多":{"docs":{},"或":{"docs":{},"少":{"docs":{},"都":{"docs":{},"可":{"docs":{},"能":{"docs":{},"遇":{"docs":{},"到":{"docs":{},"这":{"docs":{},"种":{"docs":{},"场":{"docs":{},"景":{"docs":{},"。":{"docs":{},"关":{"docs":{},"键":{"docs":{},"在":{"docs":{},"于":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"有":{"docs":{},"多":{"docs":{},"少":{"docs":{},"。":{"8":{"0":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"当":{"docs":{},"开":{"docs":{},"始":{"docs":{},"一":{"docs":{},"个":{"docs":{},"新":{"docs":{},"的":{"docs":{},"块":{"docs":{},",":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"增":{"docs":{},"加":{"2":{"docs":{},"个":{"docs":{},"空":{"docs":{},"格":{"docs":{},",":{"docs":{},"当":{"docs":{},"块":{"docs":{},"结":{"docs":{},"束":{"docs":{},"时":{"docs":{},",":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"返":{"docs":{},"回":{"docs":{},"先":{"docs":{},"前":{"docs":{},"的":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"级":{"docs":{},"别":{"docs":{},"。":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"级":{"docs":{},"别":{"docs":{},"适":{"docs":{},"用":{"docs":{},"于":{"docs":{},"代":{"docs":{},"码":{"docs":{},"和":{"docs":{},"注":{"docs":{},"释":{"docs":{},"。":{"docs":{},"(":{"docs":{},"见":{"4":{"docs":{},".":{"1":{"docs":{},".":{"2":{"docs":{},"节":{"docs":{},"中":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"示":{"docs":{},"例":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}},"docs":{}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}},"次":{"docs":{},"只":{"docs":{},"声":{"docs":{},"明":{"docs":{},"一":{"docs":{},"个":{"docs":{},"变":{"docs":{},"量":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"秒":{"docs":{},"响":{"docs":{},"应":{"docs":{},"用":{"docs":{},"户":{"docs":{},"数":{"docs":{},"和":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}},"并":{"docs":{},"发":{"docs":{},"数":{"docs":{},"预":{"docs":{},"估":{"docs":{},":":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"量":{"docs":{},":":{"1":{"6":{"docs":{},".":{"7":{"docs":{},"万":{"docs":{},"/":{"6":{"0":{"docs":{},"=":{"2":{"7":{"8":{"0":{"docs":{},"(":{"docs":{},"约":{"docs":{},"等":{"docs":{},"于":{"docs":{},")":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}}},"docs":{}}},"docs":{}},"docs":{}}}}}},"分":{"docs":{},"并":{"docs":{},"发":{"docs":{},"量":{"docs":{},":":{"4":{"docs":{},".":{"8":{"docs":{},"*":{"6":{"0":{"docs":{},"=":{"2":{"8":{"8":{"docs":{},"分":{"docs":{},"钟":{"docs":{},",":{"docs":{},"每":{"docs":{},"分":{"docs":{},"钟":{"docs":{},"访":{"docs":{},"问":{"4":{"8":{"0":{"0":{"docs":{},"/":{"2":{"8":{"8":{"docs":{},"=":{"1":{"6":{"docs":{},".":{"7":{"docs":{},"万":{"docs":{},"(":{"docs":{},"约":{"docs":{},"等":{"docs":{},"于":{"docs":{},")":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"docs":{}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}},"docs":{}}},"docs":{}}}}}},"天":{"docs":{},"的":{"docs":{},"u":{"docs":{},"v":{"docs":{},"为":{"2":{"0":{"0":{"docs":{},"万":{"docs":{},"(":{"docs":{},"二":{"docs":{},"八":{"docs":{},"原":{"docs":{},"则":{"docs":{},")":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}},"并":{"docs":{},"发":{"docs":{},"量":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}},"日":{"docs":{},"每":{"docs":{},"天":{"docs":{},"点":{"docs":{},"击":{"docs":{},"浏":{"docs":{},"览":{"3":{"0":{"docs":{},"次":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}},"docs":{}},"docs":{}}}}}}},"的":{"docs":{},"p":{"docs":{},"v":{"docs":{},"量":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}},"除":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"默":{"docs":{},"认":{"docs":{},"的":{"docs":{},"三":{"docs":{},"个":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"以":{"docs":{},"外":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"编":{"docs":{},"写":{"docs":{},"自":{"docs":{},"己":{"docs":{},"的":{"docs":{},"第":{"docs":{},"三":{"docs":{},"方":{"docs":{},"类":{"docs":{},"装":{"docs":{},"载":{"docs":{},"器":{"docs":{},",":{"docs":{},"以":{"docs":{},"实":{"docs":{},"现":{"docs":{},"一":{"docs":{},"些":{"docs":{},"特":{"docs":{},"殊":{"docs":{},"的":{"docs":{},"需":{"docs":{},"求":{"docs":{},"。":{"docs":{},"类":{"docs":{},"文":{"docs":{},"件":{"docs":{},"被":{"docs":{},"装":{"docs":{},"载":{"docs":{},"并":{"docs":{},"解":{"docs":{},"析":{"docs":{},"后":{"docs":{},",":{"docs":{},"在":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"内":{"docs":{},"将":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"类":{"docs":{},"描":{"docs":{},"述":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"该":{"docs":{},"类":{"docs":{},"的":{"docs":{},"实":{"docs":{},"例":{"docs":{},"都":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"指":{"docs":{},"向":{"docs":{},"这":{"docs":{},"个":{"docs":{},"类":{"docs":{},"描":{"docs":{},"述":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"引":{"docs":{},"用":{"docs":{},",":{"docs":{},"而":{"docs":{},"类":{"docs":{},"描":{"docs":{},"述":{"docs":{},"对":{"docs":{},"象":{"docs":{},"又":{"docs":{},"拥":{"docs":{},"有":{"docs":{},"指":{"docs":{},"向":{"docs":{},"关":{"docs":{},"联":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"引":{"docs":{},"用":{"docs":{},",":{"docs":{},"如":{"docs":{},"图":{"docs":{},"所":{"docs":{},"示":{"docs":{},"。":{"docs":{"ioc/4.principle.html":{"ref":"ioc/4.principle.html","tf":0.004878048780487805}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"了":{"docs":{},"接":{"docs":{},"口":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"方":{"docs":{},"法":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"c":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},",":{"docs":{},"还":{"docs":{},"定":{"docs":{},"义":{"docs":{},"了":{"docs":{},"默":{"docs":{},"认":{"docs":{},"方":{"docs":{},"法":{"docs":{},"s":{"docs":{},"q":{"docs":{},"r":{"docs":{},"t":{"docs":{},"的":{"docs":{},"返":{"docs":{},"回":{"docs":{},"值":{"docs":{},"。":{"docs":{},"具":{"docs":{},"体":{"docs":{},"类":{"docs":{},"实":{"docs":{},"现":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"方":{"docs":{},"法":{"docs":{},"c":{"docs":{},"a":{"docs":{},"l":{"docs":{},"c":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"。":{"docs":{},"默":{"docs":{},"认":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"s":{"docs":{},"q":{"docs":{},"r":{"docs":{},"t":{"docs":{},"可":{"docs":{},"以":{"docs":{},"开":{"docs":{},"箱":{"docs":{},"即":{"docs":{},"用":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},",":{"docs":{},"对":{"docs":{},"捕":{"docs":{},"获":{"docs":{},"的":{"docs":{},"异":{"docs":{},"常":{"docs":{},"不":{"docs":{},"做":{"docs":{},"响":{"docs":{},"应":{"docs":{},"是":{"docs":{},"极":{"docs":{},"少":{"docs":{},"正":{"docs":{},"确":{"docs":{},"的":{"docs":{},"。":{"docs":{},"(":{"docs":{},"典":{"docs":{},"型":{"docs":{},"的":{"docs":{},"响":{"docs":{},"应":{"docs":{},"方":{"docs":{},"式":{"docs":{},"是":{"docs":{},"打":{"docs":{},"印":{"docs":{},"日":{"docs":{},"志":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"如":{"docs":{},"果":{"docs":{},"它":{"docs":{},"被":{"docs":{},"认":{"docs":{},"为":{"docs":{},"是":{"docs":{},"不":{"docs":{},"可":{"docs":{},"能":{"docs":{},"的":{"docs":{},",":{"docs":{},"则":{"docs":{},"把":{"docs":{},"它":{"docs":{},"当":{"docs":{},"作":{"docs":{},"一":{"docs":{},"个":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},"重":{"docs":{},"新":{"docs":{},"抛":{"docs":{},"出":{"docs":{},"。":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"单":{"docs":{},"词":{"docs":{},",":{"docs":{},"每":{"docs":{},"个":{"docs":{},"单":{"docs":{},"词":{"docs":{},"的":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"字":{"docs":{},"母":{"docs":{},"都":{"docs":{},"大":{"docs":{},"写":{"docs":{},",":{"docs":{},"来":{"docs":{},"得":{"docs":{},"到":{"docs":{},"小":{"docs":{},"驼":{"docs":{},"峰":{"docs":{},"式":{"docs":{},"命":{"docs":{},"名":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"段":{"docs":{},"落":{"docs":{},",":{"docs":{},"每":{"docs":{},"个":{"docs":{},"段":{"docs":{},"落":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"单":{"docs":{},"词":{"docs":{},"前":{"docs":{},"都":{"docs":{},"有":{"docs":{},"标":{"docs":{},"签":{"docs":{},"&":{"docs":{},"l":{"docs":{},"t":{"docs":{},";":{"docs":{},"p":{"docs":{},"&":{"docs":{},"g":{"docs":{},"t":{"docs":{},";":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"它":{"docs":{},"和":{"docs":{},"第":{"docs":{},"一":{"docs":{},"个":{"docs":{},"单":{"docs":{},"词":{"docs":{},"间":{"docs":{},"没":{"docs":{},"有":{"docs":{},"空":{"docs":{},"格":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"行":{"docs":{},"结":{"docs":{},"束":{"docs":{},"符":{"docs":{},"序":{"docs":{},"列":{"docs":{},",":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"i":{"docs":{},"i":{"docs":{},"水":{"docs":{},"平":{"docs":{},"空":{"docs":{},"格":{"docs":{},"字":{"docs":{},"符":{"docs":{},"(":{"0":{"docs":{},"×":{"2":{"0":{"docs":{},",":{"docs":{},"即":{"docs":{},"空":{"docs":{},"格":{"docs":{},")":{"docs":{},"是":{"docs":{},"源":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"允":{"docs":{},"许":{"docs":{},"出":{"docs":{},"现":{"docs":{},"的":{"docs":{},"空":{"docs":{},"白":{"docs":{},"字":{"docs":{},"符":{"docs":{},",":{"docs":{},"这":{"docs":{},"意":{"docs":{},"味":{"docs":{},"着":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}}},"语":{"docs":{},"言":{"docs":{},"需":{"docs":{},"求":{"docs":{},"和":{"docs":{},"其":{"docs":{},"它":{"docs":{},"规":{"docs":{},"则":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"除":{"docs":{},"了":{"docs":{},"文":{"docs":{},"字":{"docs":{},",":{"docs":{},"注":{"docs":{},"释":{"docs":{},"和":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"用":{"docs":{},"到":{"docs":{},"单":{"docs":{},"个":{"docs":{},"空":{"docs":{},"格":{"docs":{},",":{"docs":{},"单":{"docs":{},"个":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"i":{"docs":{},"i":{"docs":{},"空":{"docs":{},"格":{"docs":{},"也":{"docs":{},"出":{"docs":{},"现":{"docs":{},"在":{"docs":{},"以":{"docs":{},"下":{"docs":{},"几":{"docs":{},"个":{"docs":{},"地":{"docs":{},"方":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"以":{"docs":{},"上":{"docs":{},"介":{"docs":{},"绍":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"拆":{"docs":{},"分":{"docs":{},",":{"docs":{},"应":{"docs":{},"用":{"docs":{},"集":{"docs":{},"群":{"docs":{},",":{"docs":{},"多":{"docs":{},"级":{"docs":{},"缓":{"docs":{},"存":{"docs":{},",":{"docs":{},"单":{"docs":{},"点":{"docs":{},"登":{"docs":{},"录":{"docs":{},",":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"集":{"docs":{},"群":{"docs":{},",":{"docs":{},"服":{"docs":{},"务":{"docs":{},"化":{"docs":{},",":{"docs":{},"消":{"docs":{},"息":{"docs":{},"队":{"docs":{},"列":{"docs":{},"外":{"docs":{},"。":{"docs":{},"还":{"docs":{},"有":{"docs":{},"c":{"docs":{},"d":{"docs":{},"n":{"docs":{},",":{"docs":{},"反":{"docs":{},"向":{"docs":{},"代":{"docs":{},"理":{"docs":{},",":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"文":{"docs":{},"件":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"大":{"docs":{},"数":{"docs":{},"据":{"docs":{},"处":{"docs":{},"理":{"docs":{},"等":{"docs":{},"系":{"docs":{},"统":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"非":{"docs":{},"你":{"docs":{},"将":{"docs":{},"分":{"docs":{},"支":{"docs":{},"推":{"docs":{},"送":{"docs":{},"到":{"docs":{},"远":{"docs":{},"端":{"docs":{},"仓":{"docs":{},"库":{"docs":{},",":{"docs":{},"不":{"docs":{},"然":{"docs":{},"该":{"docs":{},"分":{"docs":{},"支":{"docs":{},"就":{"docs":{},"是":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}},"作":{"docs":{},"者":{"docs":{},"和":{"docs":{},"r":{"docs":{},"e":{"docs":{},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{},"e":{"docs":{},"r":{"docs":{},"都":{"docs":{},"认":{"docs":{},"为":{"docs":{},"去":{"docs":{},"掉":{"docs":{},"小":{"docs":{},"括":{"docs":{},"号":{"docs":{},"也":{"docs":{},"不":{"docs":{},"会":{"docs":{},"使":{"docs":{},"代":{"docs":{},"码":{"docs":{},"被":{"docs":{},"误":{"docs":{},"解":{"docs":{},",":{"docs":{},"或":{"docs":{},"是":{"docs":{},"去":{"docs":{},"掉":{"docs":{},"小":{"docs":{},"括":{"docs":{},"号":{"docs":{},"能":{"docs":{},"让":{"docs":{},"代":{"docs":{},"码":{"docs":{},"更":{"docs":{},"易":{"docs":{},"于":{"docs":{},"阅":{"docs":{},"读":{"docs":{},",":{"docs":{},"否":{"docs":{},"则":{"docs":{},"我":{"docs":{},"们":{"docs":{},"不":{"docs":{},"应":{"docs":{},"该":{"docs":{},"去":{"docs":{},"掉":{"docs":{},"小":{"docs":{},"括":{"docs":{},"号":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"之":{"docs":{},"前":{"docs":{},"必":{"docs":{},"须":{"docs":{},"调":{"docs":{},"用":{"docs":{},"某":{"docs":{},"个":{"docs":{},"方":{"docs":{},"法":{"docs":{},"设":{"docs":{},"置":{"docs":{},"参":{"docs":{},"数":{"docs":{},"给":{"docs":{},"它":{"docs":{},",":{"docs":{},"那":{"docs":{},"样":{"docs":{},"这":{"docs":{},"种":{"docs":{},"单":{"docs":{},"例":{"docs":{},"写":{"docs":{},"法":{"docs":{},"就":{"docs":{},"无":{"docs":{},"法":{"docs":{},"使":{"docs":{},"用":{"docs":{},"了":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"启":{"docs":{},"动":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},",":{"docs":{},"通":{"docs":{},"常":{"docs":{},"用":{"docs":{},"于":{"docs":{},"生":{"docs":{},"产":{"docs":{},"环":{"docs":{},"境":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}},"后":{"docs":{},"或":{"docs":{},"者":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}},",":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"执":{"docs":{},"行":{"docs":{},"到":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}},"外":{"docs":{},"没":{"docs":{},"有":{"docs":{},"办":{"docs":{},"法":{"docs":{},"访":{"docs":{},"问":{"docs":{},"它":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"它":{"docs":{},"是":{"docs":{},"懒":{"docs":{},"汉":{"docs":{},"式":{"docs":{},"的":{"docs":{},";":{"docs":{},"同":{"docs":{},"时":{"docs":{},"读":{"docs":{},"取":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},"不":{"docs":{},"会":{"docs":{},"进":{"docs":{},"行":{"docs":{},"同":{"docs":{},"步":{"docs":{},",":{"docs":{},"没":{"docs":{},"有":{"docs":{},"性":{"docs":{},"能":{"docs":{},"缺":{"docs":{},"陷":{"docs":{},";":{"docs":{},"也":{"docs":{},"不":{"docs":{},"依":{"docs":{},"赖":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"也":{"docs":{},"不":{"docs":{},"能":{"docs":{},"完":{"docs":{},"全":{"docs":{},"避":{"docs":{},"免":{"docs":{},"重":{"docs":{},"排":{"docs":{},"序":{"docs":{},",":{"docs":{},"主":{"docs":{},"要":{"docs":{},"是":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}},"可":{"docs":{},"能":{"docs":{},"是":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}},"就":{"docs":{},"是":{"docs":{},"被":{"docs":{},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}},"要":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"使":{"docs":{},"用":{"docs":{},"注":{"docs":{},"解":{"docs":{},"的":{"docs":{},"嵌":{"docs":{},"套":{"docs":{},"了":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"的":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}},"了":{"docs":{},"(":{"docs":{},"但":{"docs":{},"却":{"docs":{},"没":{"docs":{},"有":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},")":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"线":{"docs":{},"程":{"docs":{},"二":{"docs":{},"会":{"docs":{},"直":{"docs":{},"接":{"docs":{},"返":{"docs":{},"回":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}},")":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}},"解":{"docs":{},"配":{"docs":{},"置":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}},"以":{"docs":{},"前":{"docs":{},"的":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}},"版":{"docs":{},"本":{"docs":{},"使":{"docs":{},"用":{"docs":{},"了":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}},"上":{"docs":{},"就":{"docs":{},"是":{"docs":{},"静":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"测":{"docs":{},"试":{"docs":{},"例":{"docs":{},"子":{"docs":{},"。":{"docs":{},"感":{"docs":{},"觉":{"docs":{},"可":{"docs":{},"能":{"docs":{},"没":{"docs":{},"有":{"docs":{},"实":{"docs":{},"际":{"docs":{},"用":{"docs":{},"途":{"docs":{},"。":{"docs":{},"然":{"docs":{},"而":{"docs":{},"并":{"docs":{},"非":{"docs":{},"如":{"docs":{},"此":{"docs":{},"。":{"docs":{},"使":{"docs":{},"用":{"docs":{},"代":{"docs":{},"理":{"docs":{},"我":{"docs":{},"们":{"docs":{},"还":{"docs":{},"可":{"docs":{},"以":{"docs":{},"将":{"docs":{},"目":{"docs":{},"标":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"进":{"docs":{},"行":{"docs":{},"改":{"docs":{},"造":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"连":{"docs":{},"接":{"docs":{},"池":{"docs":{},"中":{"docs":{},"创":{"docs":{},"建":{"docs":{},"了":{"docs":{},"一":{"docs":{},"系":{"docs":{},"列":{"docs":{},"连":{"docs":{},"接":{"docs":{},",":{"docs":{},"为":{"docs":{},"了":{"docs":{},"保":{"docs":{},"证":{"docs":{},"不":{"docs":{},"频":{"docs":{},"繁":{"docs":{},"的":{"docs":{},"打":{"docs":{},"开":{"docs":{},"连":{"docs":{},"接":{"docs":{},",":{"docs":{},"这":{"docs":{},"些":{"docs":{},"连":{"docs":{},"接":{"docs":{},"是":{"docs":{},"几":{"docs":{},"乎":{"docs":{},"不":{"docs":{},"会":{"docs":{},"关":{"docs":{},"闭":{"docs":{},"的":{"docs":{},"。":{"docs":{},"然":{"docs":{},"而":{"docs":{},"我":{"docs":{},"们":{"docs":{},"编":{"docs":{},"程":{"docs":{},"总":{"docs":{},"有":{"docs":{},"习":{"docs":{},"惯":{"docs":{},"去":{"docs":{},"将":{"docs":{},"打":{"docs":{},"开":{"docs":{},"的":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"此":{"docs":{},"处":{"docs":{},"的":{"docs":{},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"过":{"docs":{},"程":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"需":{"docs":{},"要":{"docs":{},"多":{"docs":{},"种":{"docs":{},"策":{"docs":{},"略":{"docs":{},"的":{"docs":{},"叠":{"docs":{},"加":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"每":{"docs":{},"个":{"docs":{},"部":{"docs":{},"分":{"docs":{},"之":{"docs":{},"间":{"docs":{},"用":{"docs":{},"一":{"docs":{},"个":{"docs":{},"空":{"docs":{},"行":{"docs":{},"隔":{"docs":{},"开":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}},"是":{"docs":{},"对":{"docs":{},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"需":{"docs":{},"求":{"docs":{},"的":{"docs":{},"简":{"docs":{},"单":{"docs":{},"举":{"docs":{},"例":{"docs":{},",":{"docs":{},"目":{"docs":{},"的":{"docs":{},"是":{"docs":{},"说":{"docs":{},"明":{"docs":{},"(":{"1":{"docs":{},")":{"docs":{},"需":{"docs":{},"求":{"docs":{},"分":{"docs":{},"析":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"要":{"docs":{},"全":{"docs":{},"面":{"docs":{},",":{"docs":{},"大":{"docs":{},"型":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"系":{"docs":{},"统":{"docs":{},"重":{"docs":{},"点":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"非":{"docs":{},"功":{"docs":{},"能":{"docs":{},"需":{"docs":{},"求":{"docs":{},";":{"docs":{},"(":{"2":{"docs":{},")":{"docs":{},"描":{"docs":{},"述":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"电":{"docs":{},"商":{"docs":{},"需":{"docs":{},"求":{"docs":{},"场":{"docs":{},"景":{"docs":{},",":{"docs":{},"使":{"docs":{},"大":{"docs":{},"家":{"docs":{},"对":{"docs":{},"下":{"docs":{},"一":{"docs":{},"步":{"docs":{},"的":{"docs":{},"分":{"docs":{},"析":{"docs":{},"设":{"docs":{},"计":{"docs":{},"有":{"docs":{},"个":{"docs":{},"依":{"docs":{},"据":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}},"本":{"docs":{},"次":{"docs":{},"分":{"docs":{},"享":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"总":{"docs":{},"结":{"docs":{},",":{"docs":{},"其":{"docs":{},"中":{"docs":{},"细":{"docs":{},"节":{"docs":{},"可":{"docs":{},"参":{"docs":{},"考":{"docs":{},"前":{"docs":{},"面":{"docs":{},"分":{"docs":{},"享":{"docs":{},"的":{"docs":{},"内":{"docs":{},"容":{"docs":{},"。":{"docs":{},"其":{"docs":{},"中":{"docs":{},"还":{"docs":{},"有":{"docs":{},"很":{"docs":{},"多":{"docs":{},"可":{"docs":{},"以":{"docs":{},"优":{"docs":{},"化":{"docs":{},"和":{"docs":{},"细":{"docs":{},"化":{"docs":{},"的":{"docs":{},"地":{"docs":{},"方":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"是":{"docs":{},"案":{"docs":{},"例":{"docs":{},"分":{"docs":{},"享":{"docs":{},",":{"docs":{},"主":{"docs":{},"要":{"docs":{},"针":{"docs":{},"对":{"docs":{},"重":{"docs":{},"要":{"docs":{},"部":{"docs":{},"分":{"docs":{},"做":{"docs":{},"了":{"docs":{},"介":{"docs":{},"绍":{"docs":{},",":{"docs":{},"工":{"docs":{},"作":{"docs":{},"中":{"docs":{},"需":{"docs":{},"要":{"docs":{},"大":{"docs":{},"家":{"docs":{},"根":{"docs":{},"据":{"docs":{},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"场":{"docs":{},"景":{"docs":{},"进":{"docs":{},"行":{"docs":{},"架":{"docs":{},"构":{"docs":{},"设":{"docs":{},"计":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"架":{"docs":{},"构":{"docs":{},"案":{"docs":{},"例":{"docs":{},"的":{"docs":{},"分":{"docs":{},"享":{"docs":{},"一":{"docs":{},"共":{"docs":{},"有":{"docs":{},"三":{"docs":{},"篇":{"docs":{},",":{"docs":{},"从":{"docs":{},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"的":{"docs":{},"需":{"docs":{},"求":{"docs":{},",":{"docs":{},"到":{"docs":{},"单":{"docs":{},"机":{"docs":{},"架":{"docs":{},"构":{"docs":{},",":{"docs":{},"逐":{"docs":{},"步":{"docs":{},"演":{"docs":{},"变":{"docs":{},"为":{"docs":{},"常":{"docs":{},"用":{"docs":{},"的":{"docs":{},",":{"docs":{},"可":{"docs":{},"供":{"docs":{},"参":{"docs":{},"考":{"docs":{},"的":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"架":{"docs":{},"构":{"docs":{},"的":{"docs":{},"原":{"docs":{},"型":{"docs":{},"。":{"docs":{},"除":{"docs":{},"具":{"docs":{},"备":{"docs":{},"功":{"docs":{},"能":{"docs":{},"需":{"docs":{},"求":{"docs":{},"外":{"docs":{},",":{"docs":{},"还":{"docs":{},"具":{"docs":{},"备":{"docs":{},"一":{"docs":{},"定":{"docs":{},"的":{"docs":{},"高":{"docs":{},"性":{"docs":{},"能":{"docs":{},",":{"docs":{},"高":{"docs":{},"可":{"docs":{},"用":{"docs":{},",":{"docs":{},"可":{"docs":{},"伸":{"docs":{},"缩":{"docs":{},",":{"docs":{},"可":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"等":{"docs":{},"非":{"docs":{},"功":{"docs":{},"能":{"docs":{},"质":{"docs":{},"量":{"docs":{},"需":{"docs":{},"求":{"docs":{},"(":{"docs":{},"架":{"docs":{},"构":{"docs":{},"目":{"docs":{},"标":{"docs":{},")":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"预":{"docs":{},"估":{"docs":{},"仅":{"docs":{},"供":{"docs":{},"参":{"docs":{},"考":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"配":{"docs":{},"置":{"docs":{},",":{"docs":{},"业":{"docs":{},"务":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"度":{"docs":{},"等":{"docs":{},"都":{"docs":{},"有":{"docs":{},"影":{"docs":{},"响":{"docs":{},"。":{"docs":{},"在":{"docs":{},"此":{"docs":{},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},",":{"docs":{},"硬":{"docs":{},"盘":{"docs":{},",":{"docs":{},"网":{"docs":{},"络":{"docs":{},"等":{"docs":{},"不":{"docs":{},"再":{"docs":{},"进":{"docs":{},"行":{"docs":{},"评":{"docs":{},"估":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"创":{"docs":{},"建":{"docs":{},"新":{"docs":{},"的":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}},"在":{"docs":{},"你":{"docs":{},"的":{"docs":{},"工":{"docs":{},"作":{"docs":{},"目":{"docs":{},"录":{"docs":{},"中":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}},"下":{"docs":{},"情":{"docs":{},"况":{"docs":{},"需":{"docs":{},"要":{"docs":{},"使":{"docs":{},"用":{"docs":{},"一":{"docs":{},"个":{"docs":{},"空":{"docs":{},"行":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}},"示":{"docs":{},"例":{"docs":{},"先":{"docs":{},"展":{"docs":{},"示":{"docs":{},"未":{"docs":{},"对":{"docs":{},"齐":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"是":{"docs":{},"对":{"docs":{},"齐":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"实":{"docs":{},"际":{"docs":{},"的":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}},"几":{"docs":{},"个":{"docs":{},"常":{"docs":{},"见":{"docs":{},"的":{"docs":{},"状":{"docs":{},"态":{"docs":{},"码":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"类":{"docs":{},"命":{"docs":{},"名":{"docs":{},"方":{"docs":{},"式":{"docs":{},"(":{"5":{"docs":{},".":{"2":{"docs":{},".":{"2":{"docs":{},"节":{"docs":{},")":{"docs":{},",":{"docs":{},"后":{"docs":{},"面":{"docs":{},"加":{"docs":{},"个":{"docs":{},"大":{"docs":{},"写":{"docs":{},"的":{"docs":{},"t":{"docs":{},"(":{"docs":{},"如":{"docs":{},":":{"docs":{},"r":{"docs":{},"e":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"t":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}},"docs":{}}}}}}},"把":{"docs":{},"各":{"docs":{},"个":{"docs":{},"层":{"docs":{},"分":{"docs":{},"成":{"docs":{},"单":{"docs":{},"独":{"docs":{},"的":{"docs":{},"物":{"docs":{},"理":{"docs":{},"模":{"docs":{},"块":{"docs":{},"或":{"docs":{},"者":{"docs":{},"干":{"docs":{},"脆":{"docs":{},"把":{"docs":{},"整":{"docs":{},"个":{"docs":{},"程":{"docs":{},"序":{"docs":{},"分":{"docs":{},"成":{"docs":{},"多":{"docs":{},"个":{"docs":{},"节":{"docs":{},"点":{"docs":{},"来":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"分":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"总":{"docs":{},"体":{"docs":{},"的":{"docs":{},"关":{"docs":{},"系":{"docs":{},"过":{"docs":{},"于":{"docs":{},"紧":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"件":{"docs":{},"事":{"docs":{},"情":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}},"但":{"docs":{},"是":{"docs":{},"在":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}},"特":{"docs":{},"别":{"docs":{},"注":{"docs":{},"意":{"docs":{},"在":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"8":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"docs":{}}}}},"它":{"docs":{},"不":{"docs":{},"同":{"docs":{},"于":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"压":{"docs":{},"力":{"docs":{},"测":{"docs":{},"试":{"docs":{},"工":{"docs":{},"具":{"docs":{},",":{"docs":{},"它":{"docs":{},"可":{"docs":{},"以":{"docs":{},"以":{"docs":{},"一":{"docs":{},"个":{"docs":{},"单":{"docs":{},"一":{"docs":{},"的":{"docs":{},"进":{"docs":{},"程":{"docs":{},"运":{"docs":{},"行":{"docs":{},",":{"docs":{},"一":{"docs":{},"般":{"docs":{},"不":{"docs":{},"会":{"docs":{},"把":{"docs":{},"客":{"docs":{},"户":{"docs":{},"机":{"docs":{},"搞":{"docs":{},"死":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"目":{"docs":{},"前":{"docs":{},"主":{"docs":{},"流":{"docs":{},"的":{"docs":{},"网":{"docs":{},"站":{"docs":{},"架":{"docs":{},"构":{"docs":{},"已":{"docs":{},"经":{"docs":{},"发":{"docs":{},"生":{"docs":{},"了":{"docs":{},"翻":{"docs":{},"天":{"docs":{},"覆":{"docs":{},"地":{"docs":{},"的":{"docs":{},"变":{"docs":{},"化":{"docs":{},"。":{"docs":{},"一":{"docs":{},"般":{"docs":{},"都":{"docs":{},"会":{"docs":{},"采":{"docs":{},"用":{"docs":{},"集":{"docs":{},"群":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},",":{"docs":{},"进":{"docs":{},"行":{"docs":{},"高":{"docs":{},"可":{"docs":{},"用":{"docs":{},"设":{"docs":{},"计":{"docs":{},"。":{"docs":{},"至":{"docs":{},"少":{"docs":{},"是":{"docs":{},"下":{"docs":{},"面":{"docs":{},"这":{"docs":{},"个":{"docs":{},"样":{"docs":{},"子":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"匿":{"docs":{},"名":{"docs":{},"对":{"docs":{},"象":{"docs":{},"变":{"docs":{},"量":{"docs":{},"n":{"docs":{},"u":{"docs":{},"m":{"docs":{},"没":{"docs":{},"有":{"docs":{},"被":{"docs":{},"声":{"docs":{},"明":{"docs":{},"为":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},",":{"docs":{},"下":{"docs":{},"面":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"也":{"docs":{},"有":{"docs":{},"效":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"内":{"docs":{},"存":{"docs":{},"模":{"docs":{},"型":{"docs":{},")":{"docs":{},"是":{"docs":{},"存":{"docs":{},"在":{"docs":{},"缺":{"docs":{},"陷":{"docs":{},"的":{"docs":{},",":{"docs":{},"即":{"docs":{},"时":{"docs":{},"将":{"docs":{},"变":{"docs":{},"量":{"docs":{},"声":{"docs":{},"明":{"docs":{},"成":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}},"置":{"docs":{},"函":{"docs":{},"数":{"docs":{},"式":{"docs":{},"接":{"docs":{},"口":{"docs":{},"(":{"docs":{},"b":{"docs":{},"u":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}},"建":{"docs":{},"的":{"docs":{},"图":{"docs":{},"形":{"docs":{},"化":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}},"单":{"docs":{},"例":{"docs":{},"模":{"docs":{},"式":{"docs":{},"算":{"docs":{},"是":{"docs":{},"设":{"docs":{},"计":{"docs":{},"模":{"docs":{},"式":{"docs":{},"中":{"docs":{},"最":{"docs":{},"容":{"docs":{},"易":{"docs":{},"理":{"docs":{},"解":{"docs":{},",":{"docs":{},"也":{"docs":{},"是":{"docs":{},"最":{"docs":{},"容":{"docs":{},"易":{"docs":{},"手":{"docs":{},"写":{"docs":{},"代":{"docs":{},"码":{"docs":{},"的":{"docs":{},"模":{"docs":{},"式":{"docs":{},"了":{"docs":{},"吧":{"docs":{},"。":{"docs":{},"但":{"docs":{},"是":{"docs":{},"其":{"docs":{},"中":{"docs":{},"的":{"docs":{},"坑":{"docs":{},"却":{"docs":{},"不":{"docs":{},"少":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"也":{"docs":{},"常":{"docs":{},"作":{"docs":{},"为":{"docs":{},"面":{"docs":{},"试":{"docs":{},"题":{"docs":{},"来":{"docs":{},"考":{"docs":{},"。":{"docs":{},"本":{"docs":{},"文":{"docs":{},"主":{"docs":{},"要":{"docs":{},"对":{"docs":{},"几":{"docs":{},"种":{"docs":{},"单":{"docs":{},"例":{"docs":{},"写":{"docs":{},"法":{"docs":{},"的":{"docs":{},"整":{"docs":{},"理":{"docs":{},",":{"docs":{},"并":{"docs":{},"分":{"docs":{},"析":{"docs":{},"其":{"docs":{},"优":{"docs":{},"缺":{"docs":{},"点":{"docs":{},"。":{"docs":{},"很":{"docs":{},"多":{"docs":{},"都":{"docs":{},"是":{"docs":{},"一":{"docs":{},"些":{"docs":{},"老":{"docs":{},"生":{"docs":{},"常":{"docs":{},"谈":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},",":{"docs":{},"但":{"docs":{},"如":{"docs":{},"果":{"docs":{},"你":{"docs":{},"不":{"docs":{},"知":{"docs":{},"道":{"docs":{},"如":{"docs":{},"何":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"线":{"docs":{},"程":{"docs":{},"安":{"docs":{},"全":{"docs":{},"的":{"docs":{},"单":{"docs":{},"例":{"docs":{},",":{"docs":{},"不":{"docs":{},"知":{"docs":{},"道":{"docs":{},"什":{"docs":{},"么":{"docs":{},"是":{"docs":{},"双":{"docs":{},"检":{"docs":{},"锁":{"docs":{},",":{"docs":{},"那":{"docs":{},"这":{"docs":{},"篇":{"docs":{},"文":{"docs":{},"章":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"帮":{"docs":{},"助":{"docs":{},"到":{"docs":{},"你":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"个":{"docs":{},"的":{"docs":{},"大":{"docs":{},"写":{"docs":{},"字":{"docs":{},"母":{"docs":{},",":{"docs":{},"后":{"docs":{},"面":{"docs":{},"可":{"docs":{},"以":{"docs":{},"跟":{"docs":{},"一":{"docs":{},"个":{"docs":{},"数":{"docs":{},"字":{"docs":{},"(":{"docs":{},"如":{"docs":{},":":{"docs":{},"e":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}},"元":{"docs":{},"测":{"docs":{},"试":{"docs":{},"类":{"docs":{},"中":{"docs":{},"的":{"docs":{},"测":{"docs":{},"试":{"docs":{},"方":{"docs":{},"法":{"docs":{},"可":{"docs":{},"能":{"docs":{},"是":{"docs":{},"不":{"docs":{},"言":{"docs":{},"自":{"docs":{},"明":{"docs":{},"的":{"docs":{},"最":{"docs":{},"常":{"docs":{},"见":{"docs":{},"例":{"docs":{},"子":{"docs":{},"了":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"通":{"docs":{},"常":{"docs":{},"可":{"docs":{},"以":{"docs":{},"从":{"docs":{},"这":{"docs":{},"些":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"描":{"docs":{},"述":{"docs":{},"性":{"docs":{},"命":{"docs":{},"名":{"docs":{},"中":{"docs":{},"知":{"docs":{},"道":{"docs":{},"它":{"docs":{},"是":{"docs":{},"干":{"docs":{},"什":{"docs":{},"么":{"docs":{},"的":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"不":{"docs":{},"需":{"docs":{},"要":{"docs":{},"额":{"docs":{},"外":{"docs":{},"的":{"docs":{},"文":{"docs":{},"档":{"docs":{},"说":{"docs":{},"明":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"点":{"docs":{},"登":{"docs":{},"录":{"docs":{},"(":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}},"双":{"docs":{},"重":{"docs":{},"检":{"docs":{},"验":{"docs":{},"锁":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}},"模":{"docs":{},"式":{"docs":{},"(":{"docs":{},"d":{"docs":{},"o":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}},"变":{"docs":{},"量":{"docs":{},"了":{"docs":{},",":{"docs":{},"在":{"docs":{},"第":{"docs":{},"一":{"docs":{},"次":{"docs":{},"加":{"docs":{},"载":{"docs":{},"类":{"docs":{},"到":{"docs":{},"内":{"docs":{},"存":{"docs":{},"中":{"docs":{},"时":{"docs":{},"就":{"docs":{},"会":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},",":{"docs":{},"所":{"docs":{},"以":{"docs":{},"创":{"docs":{},"建":{"docs":{},"实":{"docs":{},"例":{"docs":{},"本":{"docs":{},"身":{"docs":{},"是":{"docs":{},"线":{"docs":{},"程":{"docs":{},"安":{"docs":{},"全":{"docs":{},"的":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"前":{"docs":{},"后":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"仍":{"docs":{},"然":{"docs":{},"存":{"docs":{},"在":{"docs":{},"重":{"docs":{},"排":{"docs":{},"序":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}},"声":{"docs":{},"明":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"成":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}},"的":{"docs":{},"写":{"docs":{},"操":{"docs":{},"作":{"docs":{},"都":{"docs":{},"先":{"docs":{},"行":{"docs":{},"发":{"docs":{},"生":{"docs":{},"于":{"docs":{},"后":{"docs":{},"面":{"docs":{},"对":{"docs":{},"这":{"docs":{},"个":{"docs":{},"变":{"docs":{},"量":{"docs":{},"的":{"docs":{},"读":{"docs":{},"操":{"docs":{},"作":{"docs":{},"(":{"docs":{},"这":{"docs":{},"里":{"docs":{},"的":{"docs":{},"“":{"docs":{},"后":{"docs":{},"面":{"docs":{},"”":{"docs":{},"是":{"docs":{},"时":{"docs":{},"间":{"docs":{},"上":{"docs":{},"的":{"docs":{},"先":{"docs":{},"后":{"docs":{},"顺":{"docs":{},"序":{"docs":{},")":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"赋":{"docs":{},"值":{"docs":{},"操":{"docs":{},"作":{"docs":{},"后":{"docs":{},"面":{"docs":{},"会":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"内":{"docs":{},"存":{"docs":{},"屏":{"docs":{},"障":{"docs":{},"(":{"docs":{},"生":{"docs":{},"成":{"docs":{},"的":{"docs":{},"汇":{"docs":{},"编":{"docs":{},"代":{"docs":{},"码":{"docs":{},"上":{"docs":{},")":{"docs":{},",":{"docs":{},"读":{"docs":{},"操":{"docs":{},"作":{"docs":{},"不":{"docs":{},"会":{"docs":{},"被":{"docs":{},"重":{"docs":{},"排":{"docs":{},"序":{"docs":{},"到":{"docs":{},"内":{"docs":{},"存":{"docs":{},"屏":{"docs":{},"障":{"docs":{},"之":{"docs":{},"前":{"docs":{},"。":{"docs":{},"比":{"docs":{},"如":{"docs":{},"上":{"docs":{},"面":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},",":{"docs":{},"取":{"docs":{},"操":{"docs":{},"作":{"docs":{},"必":{"docs":{},"须":{"docs":{},"在":{"docs":{},"执":{"docs":{},"行":{"docs":{},"完":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"体":{"1":{"docs":{},":":{"docs":{},"使":{"docs":{},"用":{"docs":{},"注":{"docs":{},"解":{"docs":{},"容":{"docs":{},"器":{"docs":{},"(":{"docs":{},"老":{"docs":{},"方":{"docs":{},"法":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}},"2":{"docs":{},":":{"docs":{},"使":{"docs":{},"用":{"docs":{},"可":{"docs":{},"重":{"docs":{},"复":{"docs":{},"注":{"docs":{},"解":{"docs":{},"(":{"docs":{},"新":{"docs":{},"方":{"docs":{},"法":{"docs":{},")":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}},"docs":{}},"也":{"docs":{},"是":{"docs":{},"并":{"docs":{},"且":{"docs":{},"费":{"docs":{},"时":{"docs":{},"费":{"docs":{},"⼒":{"docs":{},"力":{"docs":{},"的":{"docs":{},"。":{"docs":{},"分":{"docs":{},"层":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},"笨":{"docs":{},"重":{"docs":{},"以":{"docs":{},"及":{"docs":{},"经":{"docs":{},"常":{"docs":{},"出":{"docs":{},"现":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"紧":{"docs":{},"耦":{"docs":{},"合":{"docs":{},"是":{"docs":{},"导":{"docs":{},"致":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"性":{"docs":{},"降":{"docs":{},"低":{"docs":{},"的":{"docs":{},"原":{"docs":{},"因":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"和":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"相":{"docs":{},"比":{"docs":{},",":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"多":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"“":{"docs":{},"响":{"docs":{},"应":{"docs":{},"状":{"docs":{},"态":{"docs":{},"码":{"docs":{},"”":{"docs":{},",":{"docs":{},"它":{"docs":{},"以":{"docs":{},"“":{"docs":{},"清":{"docs":{},"晰":{"docs":{},"明":{"docs":{},"确":{"docs":{},"”":{"docs":{},"的":{"docs":{},"语":{"docs":{},"言":{"docs":{},"告":{"docs":{},"诉":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"本":{"docs":{},"次":{"docs":{},"请":{"docs":{},"求":{"docs":{},"的":{"docs":{},"处":{"docs":{},"理":{"docs":{},"结":{"docs":{},"果":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"就":{"docs":{},"为":{"docs":{},"非":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}},"可":{"docs":{},"以":{"docs":{},"了":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}},"我":{"docs":{},"个":{"docs":{},"人":{"docs":{},"而":{"docs":{},"言":{"docs":{},",":{"docs":{},"一":{"docs":{},"般":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},"直":{"docs":{},"接":{"docs":{},"使":{"docs":{},"用":{"docs":{},"饿":{"docs":{},"汉":{"docs":{},"式":{"docs":{},"就":{"docs":{},"好":{"docs":{},"了":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"明":{"docs":{},"确":{"docs":{},"要":{"docs":{},"求":{"docs":{},"要":{"docs":{},"懒":{"docs":{},"加":{"docs":{},"载":{"docs":{},"(":{"docs":{},"l":{"docs":{},"a":{"docs":{},"z":{"docs":{},"i":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"此":{"docs":{},"代":{"docs":{},"理":{"docs":{},"模":{"docs":{},"式":{"docs":{},"分":{"docs":{},"析":{"docs":{},"到":{"docs":{},"此":{"docs":{},"结":{"docs":{},"束":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}},"会":{"docs":{},"直":{"docs":{},"接":{"docs":{},"从":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}},"是":{"docs":{},"放":{"docs":{},"j":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"地":{"docs":{},"方":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}},"不":{"docs":{},"应":{"docs":{},"该":{"docs":{},"忽":{"docs":{},"视":{"docs":{},"文":{"docs":{},"档":{"docs":{},"说":{"docs":{},"明":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"读":{"docs":{},"者":{"docs":{},"很":{"docs":{},"可":{"docs":{},"能":{"docs":{},"不":{"docs":{},"知":{"docs":{},"道":{"docs":{},"词":{"docs":{},"语":{"docs":{},"c":{"docs":{},"a":{"docs":{},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"屏":{"docs":{},"蔽":{"docs":{},"重":{"docs":{},"排":{"docs":{},"序":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},"在":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}},"当":{"docs":{},"被":{"docs":{},"问":{"docs":{},"到":{"docs":{},"要":{"docs":{},"实":{"docs":{},"现":{"docs":{},"一":{"docs":{},"个":{"docs":{},"单":{"docs":{},"例":{"docs":{},"模":{"docs":{},"式":{"docs":{},"时":{"docs":{},",":{"docs":{},"很":{"docs":{},"多":{"docs":{},"人":{"docs":{},"的":{"docs":{},"第":{"docs":{},"一":{"docs":{},"反":{"docs":{},"应":{"docs":{},"是":{"docs":{},"写":{"docs":{},"出":{"docs":{},"如":{"docs":{},"下":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},",":{"docs":{},"包":{"docs":{},"括":{"docs":{},"教":{"docs":{},"科":{"docs":{},"书":{"docs":{},"上":{"docs":{},"也":{"docs":{},"是":{"docs":{},"这":{"docs":{},"样":{"docs":{},"教":{"docs":{},"我":{"docs":{},"们":{"docs":{},"的":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"然":{"docs":{},"加":{"docs":{},"入":{"docs":{},"你":{"docs":{},"要":{"docs":{},"是":{"docs":{},"非":{"docs":{},"要":{"docs":{},"代":{"docs":{},"理":{"docs":{},"一":{"docs":{},"个":{"docs":{},"没":{"docs":{},"有":{"docs":{},"实":{"docs":{},"现":{"docs":{},"某":{"docs":{},"个":{"docs":{},"接":{"docs":{},"口":{"docs":{},"的":{"docs":{},"类":{"docs":{},",":{"docs":{},"同":{"docs":{},"时":{"docs":{},"该":{"docs":{},"类":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"与":{"docs":{},"其":{"docs":{},"他":{"docs":{},"接":{"docs":{},"口":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"相":{"docs":{},"同":{"docs":{},",":{"docs":{},"利":{"docs":{},"用":{"docs":{},"反":{"docs":{},"射":{"docs":{},"也":{"docs":{},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"轻":{"docs":{},"松":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}},"仅":{"docs":{},"有":{"docs":{},"这":{"docs":{},"两":{"docs":{},"个":{"docs":{},"指":{"docs":{},"标":{"docs":{},"并":{"docs":{},"不":{"docs":{},"能":{"docs":{},"完":{"docs":{},"成":{"docs":{},"对":{"docs":{},"性":{"docs":{},"能":{"docs":{},"的":{"docs":{},"分":{"docs":{},"析":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"还":{"docs":{},"需":{"docs":{},"要":{"docs":{},"对":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"的":{"docs":{},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},"、":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"进":{"docs":{},"行":{"docs":{},"分":{"docs":{},"析":{"docs":{},",":{"docs":{},"才":{"docs":{},"能":{"docs":{},"得":{"docs":{},"出":{"docs":{},"结":{"docs":{},"论":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"需":{"docs":{},"要":{"docs":{},"一":{"docs":{},"个":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"多":{"docs":{},"份":{"docs":{},"副":{"docs":{},"本":{"docs":{},"时":{"docs":{},",":{"docs":{},"代":{"docs":{},"理":{"docs":{},"模":{"docs":{},"式":{"docs":{},"可":{"docs":{},"以":{"docs":{},"结":{"docs":{},"合":{"docs":{},"享":{"docs":{},"元":{"docs":{},"模":{"docs":{},"式":{"docs":{},"以":{"docs":{},"减":{"docs":{},"少":{"docs":{},"存":{"docs":{},"储":{"docs":{},"器":{"docs":{},"的":{"docs":{},"用":{"docs":{},"量":{"docs":{},"。":{"docs":{},"典":{"docs":{},"型":{"docs":{},"做":{"docs":{},"法":{"docs":{},"是":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"对":{"docs":{},"象":{"docs":{},"以":{"docs":{},"及":{"docs":{},"多":{"docs":{},"个":{"docs":{},"代":{"docs":{},"理":{"docs":{},"者":{"docs":{},",":{"docs":{},"每":{"docs":{},"个":{"docs":{},"代":{"docs":{},"理":{"docs":{},"者":{"docs":{},"会":{"docs":{},"引":{"docs":{},"用":{"docs":{},"到":{"docs":{},"原":{"docs":{},"本":{"docs":{},"的":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{},"而":{"docs":{},"作":{"docs":{},"用":{"docs":{},"在":{"docs":{},"代":{"docs":{},"理":{"docs":{},"者":{"docs":{},"的":{"docs":{},"运":{"docs":{},"算":{"docs":{},"会":{"docs":{},"转":{"docs":{},"送":{"docs":{},"到":{"docs":{},"原":{"docs":{},"本":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{},"一":{"docs":{},"旦":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"代":{"docs":{},"理":{"docs":{},"者":{"docs":{},"都":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"时":{"docs":{},",":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"对":{"docs":{},"象":{"docs":{},"会":{"docs":{},"被":{"docs":{},"移":{"docs":{},"除":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"前":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204}}},"安":{"docs":{},"装":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},"发":{"docs":{},"现":{"docs":{},"安":{"docs":{},"装":{"docs":{},"的":{"docs":{},"模":{"docs":{},"块":{"docs":{},"还":{"docs":{},"没":{"docs":{},"有":{"docs":{},"同":{"docs":{},"步":{"docs":{},"过":{"docs":{},"来":{"docs":{},",":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}}}}}}}},"你":{"docs":{},"运":{"docs":{},"行":{"docs":{},"这":{"docs":{},"个":{"docs":{},"命":{"docs":{},"令":{"docs":{},",":{"docs":{},"要":{"docs":{},"尝":{"docs":{},"试":{"docs":{},"在":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"篇":{"docs":{},"文":{"docs":{},"章":{"docs":{},",":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"将":{"docs":{},"构":{"docs":{},"建":{"docs":{},"基":{"docs":{},"于":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"正":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"时":{"docs":{},",":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"将":{"docs":{},"自":{"docs":{},"动":{"docs":{},"监":{"docs":{},"控":{"docs":{},"文":{"docs":{},"件":{"docs":{},"更":{"docs":{},"改":{"docs":{},"和":{"docs":{},"更":{"docs":{},"新":{"docs":{},"。":{"docs":{},"你":{"docs":{},"不":{"docs":{},"需":{"docs":{},"要":{"docs":{},"重":{"docs":{},"新":{"docs":{},"启":{"docs":{},"动":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"一":{"docs":{},"个":{"docs":{},"类":{"docs":{},"有":{"docs":{},"多":{"docs":{},"个":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},",":{"docs":{},"或":{"docs":{},"是":{"docs":{},"多":{"docs":{},"个":{"docs":{},"同":{"docs":{},"名":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"这":{"docs":{},"些":{"docs":{},"函":{"docs":{},"数":{"docs":{},"/":{"docs":{},"方":{"docs":{},"法":{"docs":{},"应":{"docs":{},"该":{"docs":{},"按":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"出":{"docs":{},"现":{"docs":{},"在":{"docs":{},"一":{"docs":{},"起":{"docs":{},",":{"docs":{},"中":{"docs":{},"间":{"docs":{},"不":{"docs":{},"要":{"docs":{},"放":{"docs":{},"进":{"docs":{},"其":{"docs":{},"它":{"docs":{},"函":{"docs":{},"数":{"docs":{},"/":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"存":{"docs":{},"在":{"docs":{},"连":{"docs":{},"续":{"docs":{},"自":{"docs":{},"动":{"docs":{},"换":{"docs":{},"行":{"docs":{},"时":{"docs":{},",":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"可":{"docs":{},"能":{"docs":{},"会":{"docs":{},"多":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"不":{"docs":{},"只":{"4":{"docs":{},"个":{"docs":{},"空":{"docs":{},"格":{"docs":{},"(":{"docs":{},"语":{"docs":{},"法":{"docs":{},"元":{"docs":{},"素":{"docs":{},"存":{"docs":{},"在":{"docs":{},"多":{"docs":{},"级":{"docs":{},"时":{"docs":{},")":{"docs":{},"。":{"docs":{},"一":{"docs":{},"般":{"docs":{},"而":{"docs":{},"言":{"docs":{},",":{"docs":{},"两":{"docs":{},"个":{"docs":{},"连":{"docs":{},"续":{"docs":{},"行":{"docs":{},"使":{"docs":{},"用":{"docs":{},"相":{"docs":{},"同":{"docs":{},"的":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"当":{"docs":{},"且":{"docs":{},"仅":{"docs":{},"当":{"docs":{},"它":{"docs":{},"们":{"docs":{},"开":{"docs":{},"始":{"docs":{},"于":{"docs":{},"同":{"docs":{},"级":{"docs":{},"语":{"docs":{},"法":{"docs":{},"元":{"docs":{},"素":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}},"描":{"docs":{},"述":{"docs":{},"无":{"docs":{},"法":{"docs":{},"在":{"docs":{},"一":{"docs":{},"行":{"docs":{},"中":{"docs":{},"容":{"docs":{},"纳":{"docs":{},",":{"docs":{},"连":{"docs":{},"续":{"docs":{},"行":{"docs":{},"需":{"docs":{},"要":{"docs":{},"至":{"docs":{},"少":{"docs":{},"再":{"docs":{},"缩":{"docs":{},"进":{"4":{"docs":{},"个":{"docs":{},"空":{"docs":{},"格":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}},"总":{"docs":{},"结":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}},"懒":{"docs":{},"汉":{"docs":{},"式":{"docs":{},",":{"docs":{},"线":{"docs":{},"程":{"docs":{},"不":{"docs":{},"安":{"docs":{},"全":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}},"安":{"docs":{},"全":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}},"未":{"docs":{},"执":{"docs":{},"行":{"docs":{},"之":{"docs":{},"前":{"docs":{},",":{"docs":{},"被":{"docs":{},"线":{"docs":{},"程":{"docs":{},"二":{"docs":{},"抢":{"docs":{},"占":{"docs":{},"了":{"docs":{},",":{"docs":{},"这":{"docs":{},"时":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}},"完":{"docs":{},"待":{"docs":{},"续":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}},"枚":{"docs":{},"举":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}},"常":{"docs":{},"量":{"docs":{},"间":{"docs":{},"用":{"docs":{},"逗":{"docs":{},"号":{"docs":{},"隔":{"docs":{},"开":{"docs":{},",":{"docs":{},"换":{"docs":{},"行":{"docs":{},"可":{"docs":{},"选":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}},"类":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"版":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.014563106796116505}},"本":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}},"的":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"主":{"docs":{},"要":{"docs":{},"原":{"docs":{},"因":{"docs":{},"是":{"docs":{},"其":{"docs":{},"另":{"docs":{},"一":{"docs":{},"个":{"docs":{},"特":{"docs":{},"性":{"docs":{},":":{"docs":{},"禁":{"docs":{},"止":{"docs":{},"指":{"docs":{},"令":{"docs":{},"重":{"docs":{},"排":{"docs":{},"序":{"docs":{},"优":{"docs":{},"化":{"docs":{},"。":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"说":{"docs":{},",":{"docs":{},"在":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"副":{"docs":{},"本":{"docs":{},",":{"docs":{},"每":{"docs":{},"次":{"docs":{},"都":{"docs":{},"是":{"docs":{},"去":{"docs":{},"主":{"docs":{},"内":{"docs":{},"存":{"docs":{},"中":{"docs":{},"读":{"docs":{},"取":{"docs":{},"。":{"docs":{},"但":{"docs":{},"其":{"docs":{},"实":{"docs":{},"是":{"docs":{},"不":{"docs":{},"对":{"docs":{},"的":{"docs":{},"。":{"docs":{},"使":{"docs":{},"用":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}},"即":{"docs":{},"时":{"docs":{},"编":{"docs":{},"译":{"docs":{},"器":{"docs":{},"中":{"docs":{},"存":{"docs":{},"在":{"docs":{},"指":{"docs":{},"令":{"docs":{},"重":{"docs":{},"排":{"docs":{},"序":{"docs":{},"的":{"docs":{},"优":{"docs":{},"化":{"docs":{},"。":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"说":{"docs":{},"上":{"docs":{},"面":{"docs":{},"的":{"docs":{},"第":{"docs":{},"二":{"docs":{},"步":{"docs":{},"和":{"docs":{},"第":{"docs":{},"三":{"docs":{},"步":{"docs":{},"的":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"是":{"docs":{},"不":{"docs":{},"能":{"docs":{},"保":{"docs":{},"证":{"docs":{},"的":{"docs":{},",":{"docs":{},"最":{"docs":{},"终":{"docs":{},"的":{"docs":{},"执":{"docs":{},"行":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"可":{"docs":{},"能":{"docs":{},"是":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"原":{"docs":{},"因":{"docs":{},"是":{"docs":{},"可":{"docs":{},"见":{"docs":{},"性":{"docs":{},",":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"保":{"docs":{},"证":{"docs":{},"线":{"docs":{},"程":{"docs":{},"在":{"docs":{},"本":{"docs":{},"地":{"docs":{},"不":{"docs":{},"会":{"docs":{},"存":{"docs":{},"有":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}},"双":{"docs":{},"检":{"docs":{},"锁":{"docs":{},"还":{"docs":{},"是":{"docs":{},"有":{"docs":{},"问":{"docs":{},"题":{"docs":{},"的":{"docs":{},"。":{"docs":{},"其":{"docs":{},"原":{"docs":{},"因":{"docs":{},"是":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"就":{"docs":{},"会":{"docs":{},"创":{"docs":{},"建":{"docs":{},"多":{"docs":{},"个":{"docs":{},"实":{"docs":{},"例":{"docs":{},"。":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"说":{"docs":{},"在":{"docs":{},"多":{"docs":{},"线":{"docs":{},"程":{"docs":{},"下":{"docs":{},"不":{"docs":{},"能":{"docs":{},"正":{"docs":{},"常":{"docs":{},"工":{"docs":{},"作":{"docs":{},"。":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}},"。":{"docs":{},"这":{"docs":{},"本":{"docs":{},"迷":{"docs":{},"你":{"docs":{},"书":{"docs":{},"的":{"docs":{},"目":{"docs":{},"的":{"docs":{},"就":{"docs":{},"是":{"docs":{},"给":{"docs":{},"你":{"docs":{},"⾜":{"docs":{},"足":{"docs":{},"够":{"docs":{},"的":{"docs":{},"信":{"docs":{},"息":{"docs":{},"让":{"docs":{},"你":{"docs":{},"去":{"docs":{},"做":{"docs":{},"出":{"docs":{},"正":{"docs":{},"确":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"决":{"docs":{},"策":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"来":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"成":{"docs":{},"员":{"docs":{},"变":{"docs":{},"量":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}},"结":{"docs":{},"构":{"docs":{},"图":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"解":{"docs":{},"释":{"docs":{},"是":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"模":{"docs":{},"板":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"占":{"docs":{},"位":{"docs":{},"符":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"模":{"docs":{},"板":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}},"前":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}},"标":{"docs":{},"签":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}},"简":{"docs":{},"明":{"docs":{},"指":{"docs":{},"南":{"docs":{},",":{"docs":{},"木":{"docs":{},"有":{"docs":{},"高":{"docs":{},"深":{"docs":{},"内":{"docs":{},"容":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{},")":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}},"优":{"docs":{},"点":{"docs":{},"和":{"docs":{},"缺":{"docs":{},"点":{"docs":{},"是":{"docs":{},"非":{"docs":{},"常":{"docs":{},"必":{"docs":{},"要":{"docs":{},"的":{"docs":{},",":{"docs":{},"它":{"docs":{},"帮":{"docs":{},"助":{"docs":{},"我":{"docs":{},"们":{"docs":{},"选":{"docs":{},"择":{"docs":{},"个":{"docs":{},"适":{"docs":{},"合":{"docs":{},"自":{"docs":{},"己":{"docs":{},"特":{"docs":{},"定":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"需":{"docs":{},"求":{"docs":{},"和":{"docs":{},"目":{"docs":{},"标":{"docs":{},"的":{"docs":{},"的":{"docs":{},"程":{"docs":{},"序":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"架":{"docs":{},"构":{"docs":{},"师":{"docs":{},",":{"docs":{},"设":{"docs":{},"计":{"docs":{},"师":{"docs":{},",":{"docs":{},"还":{"docs":{},"有":{"docs":{},"程":{"docs":{},"序":{"docs":{},"员":{"docs":{},"都":{"docs":{},"知":{"docs":{},"道":{"docs":{},"它":{"docs":{},"。":{"docs":{},"许":{"docs":{},"多":{"docs":{},"传":{"docs":{},"统":{"docs":{},"i":{"docs":{},"t":{"docs":{},"公":{"docs":{},"司":{"docs":{},"的":{"docs":{},"组":{"docs":{},"织":{"docs":{},"架":{"docs":{},"构":{"docs":{},"和":{"docs":{},"分":{"docs":{},"层":{"docs":{},"模":{"docs":{},"式":{"docs":{},"十":{"docs":{},"分":{"docs":{},"的":{"docs":{},"相":{"docs":{},"似":{"docs":{},"。":{"docs":{},"所":{"docs":{},"以":{"docs":{},"它":{"docs":{},"很":{"docs":{},"自":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"组":{"docs":{},"件":{"docs":{},"当":{"docs":{},"中":{"docs":{},"。":{"docs":{},"因":{"docs":{},"此":{"docs":{},",":{"docs":{},"有":{"docs":{},"一":{"docs":{},"些":{"docs":{},"小":{"docs":{},"的":{"docs":{},"应":{"docs":{},"用":{"docs":{},"可":{"docs":{},"能":{"docs":{},"只":{"docs":{},"有":{"3":{"docs":{},"层":{"docs":{},",":{"docs":{},"一":{"docs":{},"些":{"docs":{},"有":{"docs":{},"着":{"docs":{},"更":{"docs":{},"复":{"docs":{},"杂":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"的":{"docs":{},"大":{"docs":{},"应":{"docs":{},"用":{"docs":{},"可":{"docs":{},"能":{"docs":{},"有":{"5":{"docs":{},"层":{"docs":{},"或":{"docs":{},"者":{"docs":{},"更":{"docs":{},"多":{"docs":{},"的":{"docs":{},"分":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}},"给":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}},"虽":{"docs":{},"然":{"docs":{},"做":{"docs":{},"到":{"docs":{},"了":{"docs":{},"线":{"docs":{},"程":{"docs":{},"安":{"docs":{},"全":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"解":{"docs":{},"决":{"docs":{},"了":{"docs":{},"多":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"它":{"docs":{},"并":{"docs":{},"不":{"docs":{},"高":{"docs":{},"效":{"docs":{},"。":{"docs":{},"因":{"docs":{},"为":{"docs":{},"在":{"docs":{},"任":{"docs":{},"何":{"docs":{},"时":{"docs":{},"候":{"docs":{},"只":{"docs":{},"能":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"线":{"docs":{},"程":{"docs":{},"调":{"docs":{},"用":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"在":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"中":{"docs":{},"从":{"docs":{},"未":{"docs":{},"定":{"docs":{},"义":{"docs":{},"@":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},"注":{"docs":{},"解":{"docs":{},",":{"docs":{},"它":{"docs":{},"仍":{"docs":{},"然":{"docs":{},"可":{"docs":{},"读":{"docs":{},"通":{"docs":{},"过":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},")":{"docs":{},"读":{"docs":{},"取":{"docs":{},"。":{"docs":{},"并":{"docs":{},"且":{"docs":{},",":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"b":{"docs":{},"y":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"方":{"docs":{},"法":{"docs":{},"会":{"docs":{},"更":{"docs":{},"方":{"docs":{},"便":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"它":{"docs":{},"赋":{"docs":{},"予":{"docs":{},"了":{"docs":{},"所":{"docs":{},"有":{"docs":{},"@":{"docs":{},"h":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},"注":{"docs":{},"解":{"docs":{},"标":{"docs":{},"注":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"直":{"docs":{},"接":{"docs":{},"的":{"docs":{},"访":{"docs":{},"问":{"docs":{},"权":{"docs":{},"限":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"缩":{"docs":{},"写":{"docs":{},"更":{"docs":{},"宽":{"docs":{},"松":{"docs":{},",":{"docs":{},"但":{"docs":{},"还":{"docs":{},"是":{"docs":{},"要":{"docs":{},"避":{"docs":{},"免":{"docs":{},"用":{"docs":{},"单":{"docs":{},"字":{"docs":{},"符":{"docs":{},"进":{"docs":{},"行":{"docs":{},"命":{"docs":{},"名":{"docs":{},",":{"docs":{},"除":{"docs":{},"了":{"docs":{},"临":{"docs":{},"时":{"docs":{},"变":{"docs":{},"量":{"docs":{},"和":{"docs":{},"循":{"docs":{},"环":{"docs":{},"变":{"docs":{},"量":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"静":{"docs":{},"态":{"docs":{},"内":{"docs":{},"部":{"docs":{},"类":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}},"代":{"docs":{},"理":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}},"的":{"docs":{},"实":{"docs":{},"例":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}}}}}}},"的":{"docs":{},"集":{"docs":{},"合":{"docs":{},"类":{"docs":{},"方":{"docs":{},"法":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},",":{"docs":{},"为":{"docs":{},"比":{"docs":{},"较":{"docs":{},"器":{"docs":{},"的":{"docs":{},"给":{"docs":{},"定":{"docs":{},"列":{"docs":{},"表":{"docs":{},"中":{"docs":{},"的":{"docs":{},"元":{"docs":{},"素":{"docs":{},"排":{"docs":{},"序":{"docs":{},"。":{"docs":{},"你":{"docs":{},"会":{"docs":{},"发":{"docs":{},"现":{"docs":{},"自":{"docs":{},"己":{"docs":{},"经":{"docs":{},"常":{"docs":{},"创":{"docs":{},"建":{"docs":{},"匿":{"docs":{},"名":{"docs":{},"比":{"docs":{},"较":{"docs":{},"器":{"docs":{},"并":{"docs":{},"将":{"docs":{},"它":{"docs":{},"们":{"docs":{},"传":{"docs":{},"递":{"docs":{},"给":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"成":{"docs":{},"员":{"docs":{},":":{"docs":{},"使":{"docs":{},"用":{"docs":{},"类":{"docs":{},"进":{"docs":{},"行":{"docs":{},"调":{"docs":{},"用":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}},"默":{"docs":{},"模":{"docs":{},"式":{"docs":{},",":{"docs":{},"不":{"docs":{},"在":{"docs":{},"终":{"docs":{},"端":{"docs":{},"上":{"docs":{},"显":{"docs":{},"示":{"docs":{},"任":{"docs":{},"何":{"docs":{},"信":{"docs":{},"息":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}},"饿":{"docs":{},"汉":{"docs":{},"式":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}},"(":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{"designpatterns/singleton.html":{"ref":"designpatterns/singleton.html","tf":0.002840909090909091}}}}}},"实":{"docs":{},"现":{"docs":{},"原":{"docs":{},"理":{"docs":{},"很":{"docs":{},"简":{"docs":{},"单":{"docs":{},",":{"docs":{},"对":{"docs":{},"j":{"docs":{},"s":{"docs":{},"p":{"docs":{},"输":{"docs":{},"出":{"docs":{},"的":{"docs":{},"内":{"docs":{},"容":{"docs":{},"m":{"docs":{},"d":{"5":{"docs":{},",":{"docs":{},"这":{"docs":{},"样":{"docs":{},"内":{"docs":{},"容":{"docs":{},"有":{"docs":{},"变":{"docs":{},"化":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{},"就":{"docs":{},"相":{"docs":{},"应":{"docs":{},"变":{"docs":{},"化":{"docs":{},"了":{"docs":{},")":{"docs":{},",":{"docs":{},"用":{"docs":{},"于":{"docs":{},"生":{"docs":{},"成":{"docs":{},"响":{"docs":{},"应":{"docs":{},"的":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"这":{"docs":{},"东":{"docs":{},"东":{"docs":{},"确":{"docs":{},"实":{"docs":{},"可":{"docs":{},"以":{"docs":{},"帮":{"docs":{},"助":{"docs":{},"减":{"docs":{},"少":{"docs":{},"请":{"docs":{},"求":{"docs":{},"和":{"docs":{},"响":{"docs":{},"应":{"docs":{},"的":{"docs":{},"交":{"docs":{},"互":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}},"这":{"docs":{},"样":{"docs":{},",":{"docs":{},"你":{"docs":{},"就":{"docs":{},"不":{"docs":{},"会":{"docs":{},"觉":{"docs":{},"得":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"很":{"docs":{},"神":{"docs":{},"秘":{"docs":{},"了":{"docs":{},"吧":{"docs":{},",":{"docs":{},"你":{"docs":{},"自":{"docs":{},"己":{"docs":{},"也":{"docs":{},"可":{"docs":{},"以":{"docs":{},"做":{"docs":{},"一":{"docs":{},"个":{"docs":{},"类":{"docs":{},"似":{"docs":{},"的":{"docs":{},"会":{"docs":{},"话":{"docs":{},"管":{"docs":{},"理":{"docs":{},")":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}},"主":{"docs":{},"题":{"docs":{},"接":{"docs":{},"口":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"配":{"docs":{},"置":{"docs":{},",":{"docs":{},"此":{"docs":{},"处":{"docs":{},"填":{"docs":{},"上":{"docs":{},"主":{"docs":{},"题":{"docs":{},"名":{"docs":{},"就":{"docs":{},"o":{"docs":{},"k":{"docs":{},"了":{"docs":{},",":{"docs":{},"当":{"docs":{},"然":{"docs":{},"在":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"s":{"docs":{},"目":{"docs":{},"录":{"docs":{},"下":{"docs":{},"一":{"docs":{},"定":{"docs":{},"要":{"docs":{},"有":{"docs":{},"你":{"docs":{},"配":{"docs":{},"置":{"docs":{},"的":{"docs":{},"主":{"docs":{},"题":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"例":{"docs":{},"如":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"网":{"docs":{},"络":{"docs":{},"连":{"docs":{},"接":{"docs":{},",":{"docs":{},"存":{"docs":{},"储":{"docs":{},"器":{"docs":{},"中":{"docs":{},"的":{"docs":{},"大":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"文":{"docs":{},"件":{"docs":{},"或":{"docs":{},"者":{"docs":{},"其":{"docs":{},"他":{"docs":{},"无":{"docs":{},"法":{"docs":{},"复":{"docs":{},"制":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"在":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338},"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.010752688172043012}}}},"外":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},"a":{"docs":{},"g":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"不":{"docs":{},"言":{"docs":{},"自":{"docs":{},"明":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"两":{"docs":{},"个":{"docs":{},"连":{"docs":{},"续":{"docs":{},"字":{"docs":{},"段":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"空":{"docs":{},"行":{"docs":{},"是":{"docs":{},"可":{"docs":{},"选":{"docs":{},"的":{"docs":{},",":{"docs":{},"用":{"docs":{},"于":{"docs":{},"字":{"docs":{},"段":{"docs":{},"的":{"docs":{},"空":{"docs":{},"行":{"docs":{},"主":{"docs":{},"要":{"docs":{},"用":{"docs":{},"来":{"docs":{},"对":{"docs":{},"字":{"docs":{},"段":{"docs":{},"进":{"docs":{},"行":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"分":{"docs":{},"组":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"单":{"docs":{},"个":{"docs":{},"的":{"docs":{},"注":{"docs":{},"解":{"docs":{},"可":{"docs":{},"以":{"docs":{},"和":{"docs":{},"签":{"docs":{},"名":{"docs":{},"的":{"docs":{},"第":{"docs":{},"一":{"docs":{},"行":{"docs":{},"出":{"docs":{},"现":{"docs":{},"在":{"docs":{},"同":{"docs":{},"一":{"docs":{},"行":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}},"在":{"docs":{},"测":{"docs":{},"试":{"docs":{},"中":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"一":{"docs":{},"个":{"docs":{},"捕":{"docs":{},"获":{"docs":{},"的":{"docs":{},"异":{"docs":{},"常":{"docs":{},"被":{"docs":{},"命":{"docs":{},"名":{"docs":{},"为":{"docs":{},"e":{"docs":{},"x":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},",":{"docs":{},"则":{"docs":{},"它":{"docs":{},"可":{"docs":{},"以":{"docs":{},"被":{"docs":{},"不":{"docs":{},"加":{"docs":{},"注":{"docs":{},"释":{"docs":{},"地":{"docs":{},"忽":{"docs":{},"略":{"docs":{},"。":{"docs":{},"下":{"docs":{},"面":{"docs":{},"是":{"docs":{},"一":{"docs":{},"种":{"docs":{},"非":{"docs":{},"常":{"docs":{},"常":{"docs":{},"见":{"docs":{},"的":{"docs":{},"情":{"docs":{},"形":{"docs":{},",":{"docs":{},"用":{"docs":{},"以":{"docs":{},"确":{"docs":{},"保":{"docs":{},"所":{"docs":{},"测":{"docs":{},"试":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"会":{"docs":{},"抛":{"docs":{},"出":{"docs":{},"一":{"docs":{},"个":{"docs":{},"期":{"docs":{},"望":{"docs":{},"中":{"docs":{},"的":{"docs":{},"异":{"docs":{},"常":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"重":{"docs":{},"载":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"再":{"docs":{},"次":{"docs":{},"注":{"docs":{},"意":{"docs":{},"到":{"docs":{},"几":{"docs":{},"个":{"docs":{},"静":{"docs":{},"态":{"docs":{},"的":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"块":{"docs":{},",":{"docs":{},"这":{"docs":{},"里":{"docs":{},"的":{"docs":{},"静":{"docs":{},"态":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"块":{"docs":{},"就":{"docs":{},"是":{"docs":{},"对":{"docs":{},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{},"接":{"docs":{},"口":{"docs":{},"列":{"docs":{},"表":{"docs":{},"以":{"docs":{},"及":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},",":{"docs":{},"t":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"把":{"docs":{},"新":{"docs":{},"建":{"docs":{},"的":{"docs":{},"分":{"docs":{},"支":{"docs":{},"删":{"docs":{},"掉":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}},"进":{"docs":{},"一":{"docs":{},"步":{"docs":{},"可":{"docs":{},"以":{"docs":{},"根":{"docs":{},"据":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{},"建":{"docs":{},"立":{"docs":{},"完":{"docs":{},"善":{"docs":{},"的":{"docs":{},"单":{"docs":{},"点":{"docs":{},"登":{"docs":{},"录":{"docs":{},"或":{"docs":{},"账":{"docs":{},"户":{"docs":{},"管":{"docs":{},"理":{"docs":{},"系":{"docs":{},"统":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"前":{"docs":{},"文":{"docs":{},"提":{"docs":{},"到":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},".":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"l":{"docs":{},"y":{"docs":{},"是":{"docs":{},"真":{"docs":{},"正":{"docs":{},"生":{"docs":{},"成":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"这":{"docs":{},"其":{"docs":{},"实":{"docs":{},"是":{"docs":{},"不":{"docs":{},"准":{"docs":{},"确":{"docs":{},"的":{"docs":{},"。":{"docs":{},"源":{"docs":{},"代":{"docs":{},"码":{"docs":{},"读":{"docs":{},"到":{"docs":{},"这":{"docs":{},"里":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"会":{"docs":{},"发":{"docs":{},"现":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"n":{"docs":{},"e":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"x":{"docs":{},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"才":{"docs":{},"是":{"docs":{},"真":{"docs":{},"正":{"docs":{},"生":{"docs":{},"成":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"置":{"docs":{},"申":{"docs":{},"明":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"的":{"docs":{},"意":{"docs":{},"思":{"docs":{},"是":{"docs":{},"写":{"docs":{},"在":{"docs":{},"文":{"docs":{},"章":{"docs":{},"前":{"docs":{},"面":{"docs":{},"的":{"docs":{},"一":{"docs":{},"块":{"docs":{},"内":{"docs":{},"容":{"docs":{},",":{"docs":{},"为":{"docs":{},"了":{"docs":{},"对":{"docs":{},"文":{"docs":{},"章":{"docs":{},"进":{"docs":{},"行":{"docs":{},"某":{"docs":{},"些":{"docs":{},"设":{"docs":{},"置":{"docs":{},"。":{"docs":{},"它":{"docs":{},"有":{"docs":{},"两":{"docs":{},"种":{"docs":{},"书":{"docs":{},"写":{"docs":{},"方":{"docs":{},"式":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"面":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"提":{"docs":{},"到":{"docs":{},"一":{"docs":{},"个":{"docs":{},"特":{"docs":{},"殊":{"docs":{},"的":{"docs":{},"布":{"docs":{},"局":{"docs":{},":":{"docs":{},"d":{"docs":{},"r":{"docs":{},"a":{"docs":{},"f":{"docs":{},"t":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}},"这":{"4":{"docs":{},"种":{"docs":{},"标":{"docs":{},"记":{"docs":{},"如":{"docs":{},"果":{"docs":{},"出":{"docs":{},"现":{"docs":{},",":{"docs":{},"描":{"docs":{},"述":{"docs":{},"都":{"docs":{},"不":{"docs":{},"能":{"docs":{},"为":{"docs":{},"空":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}},"docs":{}}},"几":{"docs":{},"位":{"docs":{},",":{"docs":{},"只":{"docs":{},"要":{"docs":{},"它":{"docs":{},"的":{"docs":{},"指":{"docs":{},"向":{"docs":{},"具":{"docs":{},"有":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"性":{"docs":{},"。":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}},"言":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"动":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695}},"将":{"docs":{},"每":{"docs":{},"个":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"执":{"docs":{},"行":{"docs":{},"过":{"docs":{},"程":{"docs":{},"则":{"docs":{},"交":{"docs":{},"给":{"docs":{},"了":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"方":{"docs":{},"法":{"docs":{},"处":{"docs":{},"理":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}},"是":{"docs":{},"指":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"时":{"docs":{},"动":{"docs":{},"态":{"docs":{},"生":{"docs":{},"成":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"。":{"docs":{},"即":{"docs":{},",":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"的":{"docs":{},"字":{"docs":{},"节":{"docs":{},"码":{"docs":{},"将":{"docs":{},"在":{"docs":{},"运":{"docs":{},"行":{"docs":{},"时":{"docs":{},"生":{"docs":{},"成":{"docs":{},"并":{"docs":{},"载":{"docs":{},"入":{"docs":{},"当":{"docs":{},"前":{"docs":{},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"即":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"的":{"docs":{},"所":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},"行":{"docs":{},"为":{"docs":{},"接":{"docs":{},"口":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}},"使":{"docs":{},"局":{"docs":{},"部":{"docs":{},"变":{"docs":{},"量":{"docs":{},"是":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"和":{"docs":{},"不":{"docs":{},"可":{"docs":{},"改":{"docs":{},"变":{"docs":{},"的":{"docs":{},",":{"docs":{},"也":{"docs":{},"不":{"docs":{},"应":{"docs":{},"该":{"docs":{},"把":{"docs":{},"它":{"docs":{},"示":{"docs":{},"为":{"docs":{},"常":{"docs":{},"量":{"docs":{},",":{"docs":{},"自":{"docs":{},"然":{"docs":{},"也":{"docs":{},"不":{"docs":{},"能":{"docs":{},"用":{"docs":{},"常":{"docs":{},"量":{"docs":{},"的":{"docs":{},"规":{"docs":{},"则":{"docs":{},"去":{"docs":{},"命":{"docs":{},"名":{"docs":{},"它":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"不":{"docs":{},"要":{"docs":{},"出":{"docs":{},"现":{"docs":{},"类":{"docs":{},"似":{"docs":{},"这":{"docs":{},"样":{"docs":{},"的":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"语":{"docs":{},"句":{"docs":{},":":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}},"去":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"j":{"docs":{},"s":{"docs":{},"的":{"docs":{},"官":{"docs":{},"网":{"docs":{},"下":{"docs":{},"载":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"j":{"docs":{},"s":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"e":{"docs":{},"n":{"docs":{},"/":{"docs":{},"d":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"/":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"参":{"docs":{},"考":{"docs":{},"文":{"docs":{},"献":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0017346053772766695},"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}},"资":{"docs":{},"料":{"docs":{},":":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}},"京":{"docs":{},"东":{"docs":{},"或":{"docs":{},"国":{"docs":{},"美":{"docs":{},"在":{"docs":{},"线":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}},"条":{"docs":{},"件":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}},"部":{"docs":{},"署":{"docs":{},"方":{"docs":{},"案":{"2":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}},"docs":{}}}}}},"数":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}},"名":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"以":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"风":{"docs":{},"格":{"docs":{},"编":{"docs":{},"写":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}},"和":{"docs":{},"局":{"docs":{},"部":{"docs":{},"变":{"docs":{},"量":{"docs":{},"注":{"docs":{},"解":{"docs":{},"没":{"docs":{},"有":{"docs":{},"特":{"docs":{},"定":{"docs":{},"规":{"docs":{},"则":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}},"应":{"docs":{},"该":{"docs":{},"避":{"docs":{},"免":{"docs":{},"用":{"docs":{},"单":{"docs":{},"个":{"docs":{},"字":{"docs":{},"符":{"docs":{},"命":{"docs":{},"名":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}},"了":{"docs":{},"解":{"docs":{},"了":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"来":{"docs":{},"看":{"docs":{},"运":{"docs":{},"行":{"docs":{},"一":{"docs":{},"条":{"docs":{},"命":{"docs":{},"令":{"docs":{},"来":{"docs":{},"看":{"docs":{},"看":{"docs":{},"它":{"docs":{},"的":{"docs":{},"返":{"docs":{},"回":{"docs":{},"结":{"docs":{},"果":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}}},"众":{"docs":{},"多":{"docs":{},",":{"docs":{},"一":{"docs":{},"般":{"docs":{},"我":{"docs":{},"们":{"docs":{},"用":{"docs":{},"到":{"docs":{},"的":{"docs":{},"是":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}},"其":{"docs":{},"实":{"docs":{},"可":{"docs":{},"以":{"docs":{},"自":{"docs":{},"由":{"docs":{},"组":{"docs":{},"合":{"docs":{},",":{"docs":{},"参":{"docs":{},"数":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"选":{"docs":{},"择":{"docs":{},"并":{"docs":{},"没":{"docs":{},"有":{"docs":{},"什":{"docs":{},"么":{"docs":{},"限":{"docs":{},"制":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}},"见":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"e":{"docs":{},"n":{"docs":{},".":{"docs":{},"w":{"docs":{},"i":{"docs":{},"k":{"docs":{},"i":{"docs":{},"p":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"a":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"w":{"docs":{},"i":{"docs":{},"k":{"docs":{},"i":{"docs":{},"/":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"_":{"docs":{},"o":{"docs":{},"f":{"docs":{},"_":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"_":{"docs":{},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"_":{"docs":{},"f":{"docs":{},"i":{"docs":{},"e":{"docs":{},"l":{"docs":{},"d":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"定":{"docs":{},"义":{"docs":{},"一":{"docs":{},"个":{"docs":{},"主":{"docs":{},"题":{"docs":{},"接":{"docs":{},"口":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},",":{"docs":{},"来":{"docs":{},"代":{"docs":{},"理":{"docs":{},"目":{"docs":{},"标":{"docs":{},"对":{"docs":{},"象":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}},"目":{"docs":{},"标":{"docs":{},"类":{"docs":{},",":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"场":{"docs":{},"景":{"docs":{},"类":{"docs":{},"用":{"docs":{},"于":{"docs":{},"生":{"docs":{},"成":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{},"报":{"docs":{},"文":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}},"算":{"docs":{},"法":{"docs":{},"使":{"docs":{},"用":{"docs":{},"场":{"docs":{},"景":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}},"组":{"docs":{},"具":{"docs":{},"体":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},":":{"docs":{},"@":{"docs":{},"x":{"docs":{},"m":{"docs":{},"l":{"docs":{},"t":{"docs":{},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"d":{"docs":{},"e":{"docs":{},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"\"":{"docs":{},")":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"两":{"docs":{},"个":{"docs":{},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},":":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}},"策":{"docs":{},"略":{"docs":{},"接":{"docs":{},"口":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}},"期":{"docs":{},"举":{"docs":{},"办":{"docs":{},"双":{"1":{"1":{"docs":{},",":{"docs":{},"双":{"1":{"2":{"docs":{},",":{"docs":{},"三":{"docs":{},"八":{"docs":{},"男":{"docs":{},"人":{"docs":{},"节":{"docs":{},"等":{"docs":{},"活":{"docs":{},"动":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}},"docs":{}},"docs":{}}}},"docs":{}},"docs":{}}}}}},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}},"代":{"docs":{},"码":{"docs":{},"实":{"docs":{},"例":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}},"想":{"docs":{},"要":{"docs":{},"调":{"docs":{},"用":{"docs":{},"目":{"docs":{},"标":{"docs":{},"对":{"docs":{},"象":{"docs":{},"的":{"docs":{},"行":{"docs":{},"为":{"docs":{},"接":{"docs":{},"口":{"docs":{},",":{"docs":{},"只":{"docs":{},"能":{"docs":{},"通":{"docs":{},"过":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"来":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}},"调":{"docs":{},"用":{"docs":{},"s":{"docs":{},"i":{"docs":{},"t":{"docs":{},"u":{"docs":{},"a":{"docs":{},"t":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}},"接":{"docs":{},"受":{"docs":{},"什":{"docs":{},"么":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"响":{"docs":{},"应":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}},"就":{"docs":{},"是":{"docs":{},"客":{"docs":{},"户":{"docs":{},",":{"docs":{},"不":{"docs":{},"会":{"docs":{},"告":{"docs":{},"诉":{"docs":{},"你":{"docs":{},"具":{"docs":{},"体":{"docs":{},"要":{"docs":{},"什":{"docs":{},"么":{"docs":{},",":{"docs":{},"只":{"docs":{},"会":{"docs":{},"告":{"docs":{},"诉":{"docs":{},"你":{"docs":{},"他":{"docs":{},"想":{"docs":{},"要":{"docs":{},"什":{"docs":{},"么":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"很":{"docs":{},"多":{"docs":{},"时":{"docs":{},"候":{"docs":{},"要":{"docs":{},"引":{"docs":{},"导":{"docs":{},",":{"docs":{},"挖":{"docs":{},"掘":{"docs":{},"客":{"docs":{},"户":{"docs":{},"的":{"docs":{},"需":{"docs":{},"求":{"docs":{},"。":{"docs":{},"好":{"docs":{},"在":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"明":{"docs":{},"确":{"docs":{},"的":{"docs":{},"参":{"docs":{},"考":{"docs":{},"网":{"docs":{},"站":{"docs":{},"。":{"docs":{},"因":{"docs":{},"此":{"docs":{},",":{"docs":{},"下":{"docs":{},"一":{"docs":{},"步":{"docs":{},"要":{"docs":{},"进":{"docs":{},"行":{"docs":{},"大":{"docs":{},"量":{"docs":{},"的":{"docs":{},"分":{"docs":{},"析":{"docs":{},",":{"docs":{},"结":{"docs":{},"合":{"docs":{},"行":{"docs":{},"业":{"docs":{},",":{"docs":{},"以":{"docs":{},"及":{"docs":{},"参":{"docs":{},"考":{"docs":{},"网":{"docs":{},"站":{"docs":{},",":{"docs":{},"给":{"docs":{},"客":{"docs":{},"户":{"docs":{},"提":{"docs":{},"供":{"docs":{},"方":{"docs":{},"案":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"需":{"docs":{},"求":{"docs":{},":":{"3":{"docs":{},"~":{"5":{"docs":{},"年":{"docs":{},"用":{"docs":{},"户":{"docs":{},"数":{"docs":{},"达":{"docs":{},"到":{"1":{"0":{"0":{"0":{"docs":{},"万":{"docs":{},"注":{"docs":{},"册":{"docs":{},"用":{"docs":{},"户":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}},"docs":{}}},"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}},"并":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"实":{"docs":{},"现":{"docs":{},"主":{"docs":{},"题":{"docs":{},"接":{"docs":{},"口":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}},"且":{"docs":{},"会":{"docs":{},"让":{"docs":{},"你":{"docs":{},"从":{"docs":{},"官":{"docs":{},"方":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}},"与":{"docs":{},"前":{"docs":{},"一":{"docs":{},"行":{"docs":{},"的":{"docs":{},"*":{"docs":{},"对":{"docs":{},"齐":{"docs":{},"。":{"docs":{},"以":{"docs":{},"下":{"docs":{},"示":{"docs":{},"例":{"docs":{},"注":{"docs":{},"释":{"docs":{},"都":{"docs":{},"是":{"docs":{},"o":{"docs":{},"k":{"docs":{},"的":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"正":{"docs":{},"确":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"来":{"docs":{},"命":{"docs":{},"名":{"docs":{},"测":{"docs":{},"试":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}},"发":{"docs":{},"数":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"访":{"docs":{},"问":{"docs":{},"进":{"docs":{},"程":{"docs":{},"数":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}},"最":{"docs":{},"后":{"docs":{},"就":{"docs":{},"是":{"docs":{},"这":{"docs":{},"几":{"docs":{},"个":{"docs":{},"方":{"docs":{},"法":{"docs":{},"的":{"docs":{},"调":{"docs":{},"用":{"docs":{},"过":{"docs":{},"程":{"docs":{},",":{"docs":{},"全":{"docs":{},"都":{"docs":{},"是":{"docs":{},"回":{"docs":{},"调":{"docs":{},"i":{"docs":{},"n":{"docs":{},"v":{"docs":{},"o":{"docs":{},"k":{"docs":{},"e":{"docs":{},"方":{"docs":{},"法":{"docs":{},"。":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"将":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"单":{"docs":{},"词":{"docs":{},"连":{"docs":{},"接":{"docs":{},"起":{"docs":{},"来":{"docs":{},"得":{"docs":{},"到":{"docs":{},"一":{"docs":{},"个":{"docs":{},"标":{"docs":{},"识":{"docs":{},"符":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}},"重":{"docs":{},"要":{"docs":{},"的":{"docs":{},"一":{"docs":{},"点":{"docs":{},",":{"docs":{},"每":{"docs":{},"个":{"docs":{},"类":{"docs":{},"应":{"docs":{},"该":{"docs":{},"以":{"docs":{},"某":{"docs":{},"种":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"去":{"docs":{},"排":{"docs":{},"序":{"docs":{},"它":{"docs":{},"的":{"docs":{},"成":{"docs":{},"员":{"docs":{},",":{"docs":{},"维":{"docs":{},"护":{"docs":{},"者":{"docs":{},"应":{"docs":{},"该":{"docs":{},"要":{"docs":{},"能":{"docs":{},"解":{"docs":{},"释":{"docs":{},"这":{"docs":{},"种":{"docs":{},"排":{"docs":{},"序":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"。":{"docs":{},"比":{"docs":{},"如":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"清":{"docs":{},"理":{"docs":{},"持":{"docs":{},"有":{"docs":{},"弱":{"docs":{},"引":{"docs":{},"用":{"docs":{},"的":{"docs":{},"w":{"docs":{},"e":{"docs":{},"a":{"docs":{},"k":{"docs":{},"h":{"docs":{},"a":{"docs":{},"s":{"docs":{},"h":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"这":{"docs":{},"种":{"docs":{},"数":{"docs":{},"据":{"docs":{},"结":{"docs":{},"构":{"docs":{},",":{"docs":{},"一":{"docs":{},"般":{"docs":{},"用":{"docs":{},"于":{"docs":{},"缓":{"docs":{},"存":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"源":{"docs":{},"码":{"docs":{},"之":{"docs":{},"前":{"docs":{},",":{"docs":{},"先":{"docs":{},"简":{"docs":{},"单":{"docs":{},"了":{"docs":{},"解":{"docs":{},"一":{"docs":{},"下":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}},"文":{"docs":{},"件":{"docs":{},"以":{"docs":{},"其":{"docs":{},"最":{"docs":{},"顶":{"docs":{},"层":{"docs":{},"的":{"docs":{},"类":{"docs":{},"名":{"docs":{},"来":{"docs":{},"命":{"docs":{},"名":{"docs":{},",":{"docs":{},"大":{"docs":{},"小":{"docs":{},"写":{"docs":{},"敏":{"docs":{},"感":{"docs":{},",":{"docs":{},"文":{"docs":{},"件":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"名":{"docs":{},"为":{"docs":{},".":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"基":{"docs":{},"础":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"结":{"docs":{},"构":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"编":{"docs":{},"码":{"docs":{},"格":{"docs":{},"式":{"docs":{},"为":{"docs":{},"u":{"docs":{},"t":{"docs":{},"f":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}},"生":{"docs":{},"成":{"docs":{},"代":{"docs":{},"理":{"docs":{},"类":{"docs":{},"的":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"返":{"docs":{},"回":{"docs":{},"字":{"docs":{},"节":{"docs":{},"流":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}},"动":{"docs":{},"态":{"docs":{},"代":{"docs":{},"理":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"有":{"docs":{},"很":{"docs":{},"多":{"docs":{},":":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}},"完":{"docs":{},"后":{"docs":{},"直":{"docs":{},"接":{"docs":{},"部":{"docs":{},"署":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}},"静":{"docs":{},"态":{"docs":{},"文":{"docs":{},"件":{"docs":{},":":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}},"器":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"著":{"docs":{},"名":{"docs":{},"的":{"docs":{},"代":{"docs":{},"理":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},"就":{"docs":{},"是":{"docs":{},"引":{"docs":{},"用":{"docs":{},"计":{"docs":{},"数":{"docs":{},"(":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"designpatterns/proxy.html":{"ref":"designpatterns/proxy.html","tf":0.0008673026886383347}}}}}}}}}}}}}}}}}}}}}}}},"`":{"docs":{},"`":{"docs":{},"`":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}}}}}}}},"s":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}},"三":{"docs":{},"、":{"docs":{},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{},"中":{"docs":{},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"原":{"docs":{},"则":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}},"网":{"docs":{},"站":{"docs":{},"初":{"docs":{},"级":{"docs":{},"架":{"docs":{},"构":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"二":{"docs":{},"、":{"docs":{},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{},"的":{"docs":{},"实":{"docs":{},"际":{"docs":{},"应":{"docs":{},"用":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"需":{"docs":{},"求":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"学":{"docs":{},"习":{"docs":{},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}},"本":{"docs":{},"来":{"docs":{},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"用":{"docs":{},"一":{"docs":{},"系":{"docs":{},"列":{"docs":{},"的":{"docs":{},"i":{"docs":{},"f":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}},"文":{"docs":{},"档":{"docs":{},"中":{"docs":{},"的":{"docs":{},"示":{"docs":{},"例":{"docs":{},"代":{"docs":{},"码":{"docs":{},"并":{"docs":{},"不":{"docs":{},"作":{"docs":{},"为":{"docs":{},"规":{"docs":{},"范":{"docs":{},"。":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"说":{"docs":{},",":{"docs":{},"虽":{"docs":{},"然":{"docs":{},"示":{"docs":{},"例":{"docs":{},"代":{"docs":{},"码":{"docs":{},"是":{"docs":{},"遵":{"docs":{},"循":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"编":{"docs":{},"程":{"docs":{},"风":{"docs":{},"格":{"docs":{},",":{"docs":{},"但":{"docs":{},"并":{"docs":{},"不":{"docs":{},"意":{"docs":{},"味":{"docs":{},"着":{"docs":{},"这":{"docs":{},"是":{"docs":{},"展":{"docs":{},"现":{"docs":{},"这":{"docs":{},"些":{"docs":{},"代":{"docs":{},"码":{"docs":{},"的":{"docs":{},"唯":{"docs":{},"一":{"docs":{},"方":{"docs":{},"式":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"案":{"docs":{},"例":{"docs":{},"在":{"docs":{},"业":{"docs":{},"务":{"docs":{},"拆":{"docs":{},"分":{"docs":{},"的":{"docs":{},"基":{"docs":{},"础":{"docs":{},"上":{"docs":{},",":{"docs":{},"结":{"docs":{},"合":{"docs":{},"分":{"docs":{},"库":{"docs":{},"分":{"docs":{},"表":{"docs":{},"和":{"docs":{},"读":{"docs":{},"写":{"docs":{},"分":{"docs":{},"离":{"docs":{},"。":{"docs":{},"如":{"docs":{},"下":{"docs":{},"图":{"docs":{},":":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"次":{"docs":{},"分":{"docs":{},"享":{"docs":{},"大":{"docs":{},"纲":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"的":{"docs":{},"需":{"docs":{},"求":{"docs":{},"矩":{"docs":{},"阵":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}},"比":{"docs":{},"如":{"docs":{},"场":{"docs":{},"景":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},".":{"docs":{},"u":{"docs":{},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{},".":{"docs":{},"c":{"docs":{},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"s":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{},"(":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"说":{"docs":{},"j":{"docs":{},"d":{"docs":{},"k":{"docs":{},"中":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"的":{"docs":{},"使":{"docs":{},"用":{"docs":{},"过":{"docs":{},"程":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}},"你":{"docs":{},"写":{"docs":{},"成":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.004987531172069825}},"中":{"docs":{},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"原":{"docs":{},"则":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}},"之":{"docs":{},"所":{"docs":{},"以":{"docs":{},"可":{"docs":{},"行":{"docs":{},"的":{"docs":{},"基":{"docs":{},"础":{"docs":{},"便":{"docs":{},"是":{"docs":{},"里":{"docs":{},"氏":{"docs":{},"替":{"docs":{},"换":{"docs":{},"原":{"docs":{},"则":{"docs":{},":":{"docs":{},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{},"要":{"docs":{},"求":{"docs":{},"所":{"docs":{},"有":{"docs":{},"的":{"docs":{},"策":{"docs":{},"略":{"docs":{},"对":{"docs":{},"象":{"docs":{},"都":{"docs":{},"是":{"docs":{},"可":{"docs":{},"以":{"docs":{},"互":{"docs":{},"换":{"docs":{},"的":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"它":{"docs":{},"们":{"docs":{},"都":{"docs":{},"必":{"docs":{},"须":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"策":{"docs":{},"略":{"docs":{},"角":{"docs":{},"色":{"docs":{},"的":{"docs":{},"子":{"docs":{},"类":{"docs":{},"。":{"docs":{},"在":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"则":{"docs":{},"仅":{"docs":{},"知":{"docs":{},"道":{"docs":{},"抽":{"docs":{},"象":{"docs":{},"策":{"docs":{},"略":{"docs":{},"角":{"docs":{},"色":{"docs":{},"类":{"docs":{},"型":{"docs":{},",":{"docs":{},"虽":{"docs":{},"然":{"docs":{},"变":{"docs":{},"量":{"docs":{},"的":{"docs":{},"真":{"docs":{},"实":{"docs":{},"类":{"docs":{},"型":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"任":{"docs":{},"何":{"docs":{},"一":{"docs":{},"个":{"docs":{},"具":{"docs":{},"体":{"docs":{},"策":{"docs":{},"略":{"docs":{},"角":{"docs":{},"色":{"docs":{},"的":{"docs":{},"实":{"docs":{},"例":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"定":{"docs":{},"义":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}},"实":{"docs":{},"际":{"docs":{},"应":{"docs":{},"用":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}},"应":{"docs":{},"用":{"docs":{},"有":{"docs":{},"很":{"docs":{},"多":{"docs":{},",":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}},"设":{"docs":{},"计":{"docs":{},"原":{"docs":{},"则":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}},",":{"docs":{},"顾":{"docs":{},"名":{"docs":{},"思":{"docs":{},"义":{"docs":{},"就":{"docs":{},"是":{"docs":{},"指":{"docs":{},"对":{"docs":{},"象":{"docs":{},"具":{"docs":{},"有":{"docs":{},"某":{"docs":{},"个":{"docs":{},"行":{"docs":{},"为":{"docs":{},",":{"docs":{},"但":{"docs":{},"是":{"docs":{},"在":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"场":{"docs":{},"景":{"docs":{},"下":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"行":{"docs":{},"为":{"docs":{},"应":{"docs":{},"该":{"docs":{},"有":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"表":{"docs":{},"现":{"docs":{},"形":{"docs":{},"式":{"docs":{},",":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"有":{"docs":{},"了":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"策":{"docs":{},"略":{"docs":{},"。":{"docs":{},"让":{"docs":{},"对":{"docs":{},"象":{"docs":{},"能":{"docs":{},"再":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"场":{"docs":{},"景":{"docs":{},"下":{"docs":{},"对":{"docs":{},"同":{"docs":{},"一":{"docs":{},"行":{"docs":{},"为":{"docs":{},"有":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"实":{"docs":{},"现":{"docs":{},",":{"docs":{},"这":{"docs":{},"就":{"docs":{},"是":{"docs":{},"策":{"docs":{},"略":{"docs":{},"模":{"docs":{},"式":{"docs":{},"。":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"类":{"docs":{},"工":{"docs":{},"厂":{"docs":{},":":{"docs":{},"这":{"docs":{},"个":{"docs":{},"工":{"docs":{},"厂":{"docs":{},"创":{"docs":{},"建":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},"的":{"docs":{},"思":{"docs":{},"路":{"docs":{},"就":{"docs":{},"是":{"docs":{},",":{"docs":{},"载":{"docs":{},"入":{"docs":{},"一":{"docs":{},"些":{"docs":{},"列":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},",":{"docs":{},"根":{"docs":{},"据":{"docs":{},"不":{"docs":{},"同":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},"的":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"注":{"docs":{},"解":{"docs":{},"和":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"传":{"docs":{},"入":{"docs":{},"参":{"docs":{},"数":{"docs":{},"来":{"docs":{},"生":{"docs":{},"成":{"docs":{},"具":{"docs":{},"体":{"docs":{},"的":{"docs":{},"策":{"docs":{},"略":{"docs":{},"类":{"docs":{},"。":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"背":{"docs":{},"景":{"docs":{},":":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}},"跟":{"docs":{},"代":{"docs":{},"码":{"docs":{},"的":{"docs":{},"耦":{"docs":{},"合":{"docs":{},"紧":{"docs":{},"一":{"docs":{},"点":{"docs":{},"。":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}},"里":{"docs":{},"氏":{"docs":{},"替":{"docs":{},"换":{"docs":{},"原":{"docs":{},"则":{"docs":{},"讲":{"docs":{},"的":{"docs":{},"是":{"docs":{},"基":{"docs":{},"类":{"docs":{},"与":{"docs":{},"子":{"docs":{},"类":{"docs":{},"的":{"docs":{},"关":{"docs":{},"系":{"docs":{},"。":{"docs":{},"只":{"docs":{},"有":{"docs":{},"当":{"docs":{},"这":{"docs":{},"种":{"docs":{},"关":{"docs":{},"系":{"docs":{},"存":{"docs":{},"在":{"docs":{},"时":{"docs":{},",":{"docs":{},"里":{"docs":{},"氏":{"docs":{},"替":{"docs":{},"换":{"docs":{},"关":{"docs":{},"系":{"docs":{},"才":{"docs":{},"存":{"docs":{},"在":{"docs":{},",":{"docs":{},"反":{"docs":{},"之":{"docs":{},"则":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"。":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"(":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"k":{"docs":{},"o":{"docs":{},"v":{"docs":{"designpatterns/strategy.html":{"ref":"designpatterns/strategy.html","tf":0.0024937655860349127}}}}}}}}}}}}}}},"%":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.007168458781362007}},"d":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}}},"}":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.04084967320261438}}}},"y":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}},"y":{"docs":{},"y":{"docs":{},"i":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"y":{"docs":{},",":{"docs":{},"一":{"docs":{},"般":{"docs":{},"我":{"docs":{},"们":{"docs":{},"喜":{"docs":{},"欢":{"docs":{},"使":{"docs":{},"用":{"docs":{},"y":{"docs":{},"y":{"docs":{},"y":{"docs":{},"i":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}},"a":{"docs":{},"m":{"docs":{},"l":{"docs":{},"方":{"docs":{},"式":{"docs":{},",":{"docs":{},"以":{"docs":{},"三":{"docs":{},"短":{"docs":{},"线":{"docs":{},"结":{"docs":{},"束":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"f":{"docs":{},".":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}}}}},"t":{"docs":{},"u":{"docs":{},"b":{"docs":{},"e":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"e":{"docs":{},"r":{"docs":{},"*":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}},"z":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"1":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"2":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}},"docs":{},"i":{"docs":{},"d":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0019230769230769232}},".":{"docs":{},"o":{"docs":{},"f":{"docs":{},"(":{"docs":{},"\"":{"docs":{},"b":{"docs":{},"r":{"docs":{},"a":{"docs":{},"z":{"docs":{},"i":{"docs":{},"l":{"docs":{},"/":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{},"t":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}},"e":{"docs":{},"u":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"/":{"docs":{},"b":{"docs":{},"e":{"docs":{},"r":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"\"":{"docs":{},")":{"docs":{},";":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"u":{"docs":{},"l":{"docs":{},"e":{"docs":{},"s":{"docs":{},"[":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{},"o":{"docs":{},"f":{"docs":{},"f":{"docs":{},"s":{"docs":{},"e":{"docs":{},"t":{"docs":{},"=":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}},"+":{"0":{"1":{"docs":{},":":{"0":{"0":{"docs":{},"]":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"x":{"docs":{},"v":{"docs":{},"f":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.010752688172043012}}}}}},"与":{"docs":{},"局":{"docs":{},"部":{"docs":{},"变":{"docs":{},"量":{"docs":{},"不":{"docs":{},"同":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"在":{"docs":{},"l":{"docs":{},"a":{"docs":{},"m":{"docs":{},"b":{"docs":{},"d":{"docs":{},"a":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"的":{"docs":{},"内":{"docs":{},"部":{"docs":{},"能":{"docs":{},"获":{"docs":{},"取":{"docs":{},"到":{"docs":{},"对":{"docs":{},"成":{"docs":{},"员":{"docs":{},"变":{"docs":{},"量":{"docs":{},"或":{"docs":{},"静":{"docs":{},"态":{"docs":{},"变":{"docs":{},"量":{"docs":{},"的":{"docs":{},"读":{"docs":{},"写":{"docs":{},"权":{"docs":{},"。":{"docs":{},"这":{"docs":{},"种":{"docs":{},"访":{"docs":{},"问":{"docs":{},"行":{"docs":{},"为":{"docs":{},"在":{"docs":{},"匿":{"docs":{},"名":{"docs":{},"对":{"docs":{},"象":{"docs":{},"里":{"docs":{},"是":{"docs":{},"非":{"docs":{},"常":{"docs":{},"典":{"docs":{},"型":{"docs":{},"的":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"其":{"docs":{},"它":{"docs":{},"块":{"docs":{},"状":{"docs":{},"结":{"docs":{},"构":{"docs":{},"一":{"docs":{},"致":{"docs":{},",":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"块":{"docs":{},"中":{"docs":{},"的":{"docs":{},"内":{"docs":{},"容":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"为":{"2":{"docs":{},"个":{"docs":{},"空":{"docs":{},"格":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"编":{"docs":{},"程":{"docs":{},"风":{"docs":{},"格":{"docs":{},"指":{"docs":{},"南":{"docs":{},"一":{"docs":{},"样":{"docs":{},",":{"docs":{},"这":{"docs":{},"里":{"docs":{},"所":{"docs":{},"讨":{"docs":{},"论":{"docs":{},"的":{"docs":{},"不":{"docs":{},"仅":{"docs":{},"仅":{"docs":{},"是":{"docs":{},"编":{"docs":{},"码":{"docs":{},"格":{"docs":{},"式":{"docs":{},"美":{"docs":{},"不":{"docs":{},"美":{"docs":{},"观":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"举":{"docs":{},"例":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}},"办":{"docs":{},"双":{"1":{"1":{"docs":{},",":{"docs":{},"双":{"1":{"2":{"docs":{},",":{"docs":{},"三":{"docs":{},"八":{"docs":{},"男":{"docs":{},"人":{"docs":{},"节":{"docs":{},"等":{"docs":{},"活":{"docs":{},"动":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}},"docs":{}},"docs":{}}}},"docs":{}},"docs":{}}}},"函":{"docs":{},"数":{"docs":{},"式":{"docs":{},"接":{"docs":{},"口":{"docs":{},"(":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}},"另":{"docs":{},"一":{"docs":{},"种":{"docs":{},"实":{"docs":{},"用":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}},"合":{"docs":{},"并":{"docs":{},"操":{"docs":{},"作":{"docs":{},"先":{"docs":{},"看":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"中":{"docs":{},"是":{"docs":{},"否":{"docs":{},"没":{"docs":{},"有":{"docs":{},"特":{"docs":{},"定":{"docs":{},"的":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"/":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"存":{"docs":{},"在":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"是":{"docs":{},",":{"docs":{},"则":{"docs":{},"把":{"docs":{},"k":{"docs":{},"e":{"docs":{},"y":{"docs":{},"/":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{},"u":{"docs":{},"e":{"docs":{},"存":{"docs":{},"入":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},",":{"docs":{},"否":{"docs":{},"则":{"docs":{},"m":{"docs":{},"e":{"docs":{},"r":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"函":{"docs":{},"数":{"docs":{},"就":{"docs":{},"会":{"docs":{},"被":{"docs":{},"调":{"docs":{},"用":{"docs":{},",":{"docs":{},"对":{"docs":{},"现":{"docs":{},"有":{"docs":{},"的":{"docs":{},"数":{"docs":{},"值":{"docs":{},"进":{"docs":{},"行":{"docs":{},"修":{"docs":{},"改":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"(":{"docs":{},"m":{"docs":{},"e":{"docs":{},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},")":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}},"时":{"docs":{},"区":{"docs":{},"是":{"docs":{},"由":{"docs":{},"z":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"i":{"docs":{},"d":{"docs":{},"表":{"docs":{},"示":{"docs":{},",":{"docs":{},"通":{"docs":{},"过":{"docs":{},"静":{"docs":{},"态":{"docs":{},"工":{"docs":{},"厂":{"docs":{},"方":{"docs":{},"法":{"docs":{},"可":{"docs":{},"以":{"docs":{},"很":{"docs":{},"容":{"docs":{},"易":{"docs":{},"地":{"docs":{},"访":{"docs":{},"问":{"docs":{},"。":{"docs":{},"时":{"docs":{},"区":{"docs":{},"还":{"docs":{},"定":{"docs":{},"义":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"偏":{"docs":{},"移":{"docs":{},"量":{"docs":{},",":{"docs":{},"用":{"docs":{},"来":{"docs":{},"转":{"docs":{},"换":{"docs":{},"当":{"docs":{},"前":{"docs":{},"时":{"docs":{},"刻":{"docs":{},"与":{"docs":{},"目":{"docs":{},"标":{"docs":{},"时":{"docs":{},"刻":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"格":{"docs":{},"式":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0024096385542168677}},"日":{"docs":{},"期":{"docs":{},"时":{"docs":{},"间":{"docs":{},"对":{"docs":{},"象":{"docs":{},"就":{"docs":{},"像":{"docs":{},"格":{"docs":{},"式":{"docs":{},"化":{"docs":{},"日":{"docs":{},"期":{"docs":{},"对":{"docs":{},"象":{"docs":{},"或":{"docs":{},"者":{"docs":{},"格":{"docs":{},"式":{"docs":{},"化":{"docs":{},"时":{"docs":{},"间":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"除":{"docs":{},"了":{"docs":{},"使":{"docs":{},"用":{"docs":{},"预":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"格":{"docs":{},"式":{"docs":{},"以":{"docs":{},"外":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"还":{"docs":{},"可":{"docs":{},"以":{"docs":{},"创":{"docs":{},"建":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"格":{"docs":{},"式":{"docs":{},"化":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"我":{"docs":{},"们":{"docs":{},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"的":{"docs":{},"格":{"docs":{},"式":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"正":{"docs":{},"如":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"看":{"docs":{},"到":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"更":{"docs":{},"容":{"docs":{},"易":{"docs":{},"阅":{"docs":{},"读":{"docs":{},"。":{"docs":{},"但":{"docs":{},"它":{"docs":{},"甚":{"docs":{},"至":{"docs":{},"更":{"docs":{},"短":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}},"前":{"docs":{},"面":{"docs":{},"所":{"docs":{},"说":{"docs":{},"的":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"不":{"docs":{},"支":{"docs":{},"持":{"docs":{},"流":{"docs":{},"操":{"docs":{},"作":{"docs":{},",":{"docs":{},"现":{"docs":{},"在":{"docs":{},"的":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{},"支":{"docs":{},"持":{"docs":{},"各":{"docs":{},"种":{"docs":{},"新":{"docs":{},"的":{"docs":{},"实":{"docs":{},"用":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"和":{"docs":{},"常":{"docs":{},"见":{"docs":{},"的":{"docs":{},"任":{"docs":{},"务":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"常":{"docs":{},"方":{"docs":{},"式":{"docs":{},"遍":{"docs":{},"历":{"docs":{},"m":{"docs":{},"a":{"docs":{},"p":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}}},"让":{"docs":{},"我":{"docs":{},"们":{"docs":{},"以":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"例":{"docs":{},"子":{"docs":{},"来":{"docs":{},"开":{"docs":{},"始":{"docs":{},",":{"docs":{},"在":{"docs":{},"以":{"docs":{},"前":{"docs":{},"的":{"docs":{},"版":{"docs":{},"本":{"docs":{},"中":{"docs":{},"对":{"docs":{},"字":{"docs":{},"符":{"docs":{},"串":{"docs":{},"进":{"docs":{},"行":{"docs":{},"排":{"docs":{},"序":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"先":{"docs":{},"看":{"docs":{},"一":{"docs":{},"下":{"docs":{},"数":{"docs":{},"据":{"docs":{},"流":{"docs":{},"如":{"docs":{},"何":{"docs":{},"工":{"docs":{},"作":{"docs":{},"。":{"docs":{},"首":{"docs":{},"先":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"字":{"docs":{},"符":{"docs":{},"串":{"docs":{},"列":{"docs":{},"表":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"来":{"docs":{},"看":{"docs":{},"看":{"docs":{},"如":{"docs":{},"何":{"docs":{},"使":{"docs":{},"用":{"docs":{},":":{"docs":{},":":{"docs":{},"关":{"docs":{},"键":{"docs":{},"字":{"docs":{},"调":{"docs":{},"用":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},"。":{"docs":{},"首":{"docs":{},"先":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"定":{"docs":{},"义":{"docs":{},"一":{"docs":{},"个":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"o":{"docs":{},"n":{"docs":{},"类":{"docs":{},"并":{"docs":{},"且":{"docs":{},"提":{"docs":{},"供":{"docs":{},"不":{"docs":{},"同":{"docs":{},"的":{"docs":{},"构":{"docs":{},"造":{"docs":{},"函":{"docs":{},"数":{"docs":{},":":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"记":{"docs":{},"住":{"docs":{},",":{"docs":{},"有":{"docs":{},"@":{"docs":{},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"注":{"docs":{},"解":{"docs":{},"的":{"docs":{},"也":{"docs":{},"是":{"docs":{},"有":{"docs":{},"效":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"得":{"docs":{},"第":{"docs":{},"一":{"docs":{},"节":{"docs":{},"的":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"例":{"docs":{},"子":{"docs":{},"吗":{"docs":{},"?":{"docs":{},"接":{"docs":{},"口":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"定":{"docs":{},"义":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"默":{"docs":{},"认":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"可":{"docs":{},"以":{"docs":{},"从":{"docs":{},"每":{"docs":{},"个":{"docs":{},"公":{"docs":{},"式":{"docs":{},"实":{"docs":{},"例":{"docs":{},"访":{"docs":{},"问":{"docs":{},"包":{"docs":{},"括":{"docs":{},"匿":{"docs":{},"名":{"docs":{},"对":{"docs":{},"象":{"docs":{},",":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"访":{"docs":{},"问":{"docs":{},"字":{"docs":{},"段":{"docs":{},"和":{"docs":{},"静":{"docs":{},"态":{"docs":{},"变":{"docs":{},"量":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}},"局":{"docs":{},"部":{"docs":{},"变":{"docs":{},"量":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}},"默":{"docs":{},"认":{"docs":{},"接":{"docs":{},"口":{"docs":{},"方":{"docs":{},"法":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}},"时":{"docs":{},"间":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}},"该":{"docs":{},"公":{"docs":{},"式":{"docs":{},"被":{"docs":{},"实":{"docs":{},"现":{"docs":{},"为":{"docs":{},"匿":{"docs":{},"名":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{},"这":{"docs":{},"段":{"docs":{},"代":{"docs":{},"码":{"docs":{},"是":{"docs":{},"相":{"docs":{},"当":{"docs":{},"长":{"docs":{},"的":{"docs":{},":":{"docs":{},"非":{"docs":{},"常":{"docs":{},"详":{"docs":{},"细":{"docs":{},"的":{"docs":{},"一":{"docs":{},"个":{"docs":{},"计":{"docs":{},"算":{"docs":{},":":{"6":{"docs":{},"行":{"docs":{},"代":{"docs":{},"码":{"docs":{},"完":{"docs":{},"成":{"docs":{},"这":{"docs":{},"样":{"docs":{},"一":{"docs":{},"个":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"计":{"docs":{},"算":{"docs":{},"。":{"docs":{},"正":{"docs":{},"如":{"docs":{},"我":{"docs":{},"们":{"docs":{},"将":{"docs":{},"在":{"docs":{},"下":{"docs":{},"一":{"docs":{},"节":{"docs":{},"中":{"docs":{},"看":{"docs":{},"到":{"docs":{},"的":{"docs":{},",":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"8":{"docs":{},"有":{"docs":{},"一":{"docs":{},"个":{"docs":{},"更":{"docs":{},"好":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"来":{"docs":{},"实":{"docs":{},"现":{"docs":{},"单":{"docs":{},"方":{"docs":{},"法":{"docs":{},"对":{"docs":{},"象":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"终":{"docs":{},"止":{"docs":{},"操":{"docs":{},"作":{"docs":{},"能":{"docs":{},"够":{"docs":{},"通":{"docs":{},"过":{"docs":{},"某":{"docs":{},"一":{"docs":{},"个":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"对":{"docs":{},"元":{"docs":{},"素":{"docs":{},"进":{"docs":{},"行":{"docs":{},"削":{"docs":{},"减":{"docs":{},"操":{"docs":{},"作":{"docs":{},"。":{"docs":{},"该":{"docs":{},"操":{"docs":{},"作":{"docs":{},"的":{"docs":{},"结":{"docs":{},"果":{"docs":{},"会":{"docs":{},"放":{"docs":{},"在":{"docs":{},"一":{"docs":{},"个":{"docs":{},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"变":{"docs":{},"量":{"docs":{},"里":{"docs":{},"返":{"docs":{},"回":{"docs":{},"。":{"docs":{"java8/java8-guide.html":{"ref":"java8/java8-guide.html","tf":0.0009615384615384616}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"普":{"docs":{},"通":{"docs":{},"方":{"docs":{},"式":{"docs":{},"循":{"docs":{},"环":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"java8/foreach.html":{"ref":"java8/foreach.html","tf":0.006024096385542169}}}}}}}}}},"代":{"docs":{},"码":{"docs":{},"块":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"服":{"docs":{},"务":{"docs":{},"组":{"docs":{},"件":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"中":{"docs":{},"添":{"docs":{},"加":{"docs":{},"个":{"docs":{},"分":{"docs":{},"享":{"docs":{},"服":{"docs":{},"务":{"docs":{},"层":{"docs":{},"。":{"docs":{},"在":{"docs":{},"这":{"docs":{},"个":{"docs":{},"例":{"docs":{},"子":{"docs":{},"里":{"docs":{},",":{"docs":{},"新":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"服":{"docs":{},"务":{"docs":{},"层":{"docs":{},"通":{"docs":{},"常":{"docs":{},"是":{"docs":{},"个":{"docs":{},"好":{"docs":{},"主":{"docs":{},"意":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"从":{"docs":{},"架":{"docs":{},"构":{"docs":{},"上":{"docs":{},"来":{"docs":{},"说":{"docs":{},",":{"docs":{},"它":{"docs":{},"限":{"docs":{},"制":{"docs":{},"了":{"docs":{},"分":{"docs":{},"享":{"docs":{},"服":{"docs":{},"务":{"docs":{},"访":{"docs":{},"问":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"(":{"docs":{},"也":{"docs":{},"不":{"docs":{},"允":{"docs":{},"许":{"docs":{},"访":{"docs":{},"问":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},")":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"没":{"docs":{},"有":{"docs":{},"隔":{"docs":{},"离":{"docs":{},"层":{"docs":{},",":{"docs":{},"就":{"docs":{},"没":{"docs":{},"有":{"docs":{},"任":{"docs":{},"何":{"docs":{},"架":{"docs":{},"构":{"docs":{},"来":{"docs":{},"限":{"docs":{},"制":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"访":{"docs":{},"问":{"docs":{},"普":{"docs":{},"通":{"docs":{},"服":{"docs":{},"务":{"docs":{},",":{"docs":{},"难":{"docs":{},"以":{"docs":{},"进":{"docs":{},"行":{"docs":{},"权":{"docs":{},"限":{"docs":{},"管":{"docs":{},"理":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"#":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}},"$":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.055900621118012424},"hexo/config.html":{"ref":"hexo/config.html","tf":0.0547945205479452},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.02287581699346405}}},"'":{"docs":{},"\\":{"docs":{},"n":{"docs":{},"#":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"a":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}},"u":{"docs":{},"f":{"docs":{},"e":{"docs":{},"f":{"docs":{},"f":{"docs":{},"'":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"\\":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.037267080745341616}},"f":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"n":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"r":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"t":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"‘":{"docs":{},"及":{"docs":{},"$":{"docs":{},"$":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"使":{"docs":{},"用":{"docs":{},"它":{"docs":{},"的":{"docs":{},"转":{"docs":{},"义":{"docs":{},"序":{"docs":{},"列":{"docs":{},",":{"docs":{},"而":{"docs":{},"不":{"docs":{},"是":{"docs":{},"相":{"docs":{},"应":{"docs":{},"的":{"docs":{},"八":{"docs":{},"进":{"docs":{},"制":{"docs":{},"(":{"docs":{},"比":{"docs":{},"如":{"1":{"2":{"docs":{},")":{"docs":{},"或":{"docs":{},"u":{"docs":{},"n":{"docs":{},"i":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"(":{"docs":{},"比":{"docs":{},"如":{"docs":{},"\\":{"docs":{},"u":{"0":{"0":{"0":{"docs":{},"a":{"docs":{},")":{"docs":{},"转":{"docs":{},"义":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"“":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"~":{"docs":{},"/":{"docs":{},".":{"docs":{},"z":{"docs":{},"s":{"docs":{},"h":{"docs":{},"r":{"docs":{},"c":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204}}}}}}}}}},"会":{"docs":{},"自":{"docs":{},"动":{"docs":{},"在":{"docs":{},"后":{"docs":{},"台":{"docs":{},"进":{"docs":{},"行":{"docs":{},"同":{"docs":{},"步":{"docs":{},",":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}},"在":{"docs":{},"当":{"docs":{},"前":{"docs":{},"目":{"docs":{},"录":{"docs":{},"生":{"docs":{},"成":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"b":{"docs":{},"e":{"docs":{},"n":{"docs":{},"c":{"docs":{},"h":{"docs":{},"可":{"docs":{},"执":{"docs":{},"行":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"直":{"docs":{},"接":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"了":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"影":{"docs":{},"响":{"docs":{},"到":{"docs":{},"整":{"docs":{},"个":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"发":{"docs":{},"布":{"docs":{},"(":{"docs":{},"或":{"docs":{},"者":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"⼤":{"docs":{},"大":{"docs":{},"部":{"docs":{},"分":{"docs":{},")":{"docs":{},"。":{"docs":{},"发":{"docs":{},"布":{"docs":{},"必":{"docs":{},"须":{"docs":{},"是":{"docs":{},"按":{"docs":{},"照":{"docs":{},"计":{"docs":{},"划":{"docs":{},",":{"docs":{},"在":{"docs":{},"⾮":{"docs":{},"非":{"docs":{},"⼯":{"docs":{},"工":{"docs":{},"作":{"docs":{},"时":{"docs":{},"间":{"docs":{},"或":{"docs":{},"者":{"docs":{},"周":{"docs":{},"末":{"docs":{},"进":{"docs":{},"⾏":{"docs":{},"行":{"docs":{},"发":{"docs":{},"布":{"docs":{},"。":{"docs":{},"因":{"docs":{},"此":{"docs":{},",":{"docs":{},"分":{"docs":{},"层":{"docs":{},"模":{"docs":{},"式":{"docs":{},"导":{"docs":{},"致":{"docs":{},"应":{"docs":{},"⽤":{"docs":{},"用":{"docs":{},"发":{"docs":{},"布":{"docs":{},"⼀":{"docs":{},"一":{"docs":{},"点":{"docs":{},"也":{"docs":{},"不":{"docs":{},"流":{"docs":{},"畅":{"docs":{},",":{"docs":{},"在":{"docs":{},"发":{"docs":{},"布":{"docs":{},"上":{"docs":{},"降":{"docs":{},"低":{"docs":{},"了":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"性":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"员":{"docs":{},"管":{"docs":{},"理":{"docs":{},",":{"docs":{},"购":{"docs":{},"物":{"docs":{},"车":{"docs":{},",":{"docs":{},"结":{"docs":{},"算":{"docs":{},"功":{"docs":{},"能":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}},"压":{"docs":{},"缩":{"docs":{},"支":{"docs":{},"持":{"docs":{},")":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}},"只":{"docs":{},"有":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}},"一":{"docs":{},"个":{"docs":{},"顶":{"docs":{},"级":{"docs":{},"类":{"docs":{},"声":{"docs":{},"明":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"是":{"docs":{},"永":{"docs":{},"远":{"docs":{},"不":{"docs":{},"打":{"docs":{},"算":{"docs":{},"改":{"docs":{},"变":{"docs":{},"对":{"docs":{},"象":{"docs":{},"一":{"docs":{},"般":{"docs":{},"是":{"docs":{},"不":{"docs":{},"够":{"docs":{},"的":{"docs":{},",":{"docs":{},"它":{"docs":{},"要":{"docs":{},"真":{"docs":{},"的":{"docs":{},"一":{"docs":{},"直":{"docs":{},"不":{"docs":{},"变":{"docs":{},"才":{"docs":{},"能":{"docs":{},"将":{"docs":{},"它":{"docs":{},"示":{"docs":{},"为":{"docs":{},"常":{"docs":{},"量":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"要":{"docs":{},"是":{"docs":{},"合":{"docs":{},"法":{"docs":{},"的":{"docs":{},",":{"docs":{},"就":{"docs":{},"把":{"docs":{},"@":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{},"注":{"docs":{},"解":{"docs":{},"给":{"docs":{},"用":{"docs":{},"上":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}},"同":{"docs":{},"步":{"docs":{},"模":{"docs":{},"块":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}},"时":{"docs":{},"也":{"docs":{},"讨":{"docs":{},"论":{"docs":{},"一":{"docs":{},"些":{"docs":{},"约":{"docs":{},"定":{"docs":{},"及":{"docs":{},"编":{"docs":{},"码":{"docs":{},"标":{"docs":{},"准":{"docs":{},"。":{"docs":{},"然":{"docs":{},"而":{"docs":{},",":{"docs":{},"这":{"docs":{},"份":{"docs":{},"文":{"docs":{},"档":{"docs":{},"主":{"docs":{},"要":{"docs":{},"侧":{"docs":{},"重":{"docs":{},"于":{"docs":{},"我":{"docs":{},"们":{"docs":{},"所":{"docs":{},"普":{"docs":{},"遍":{"docs":{},"遵":{"docs":{},"循":{"docs":{},"的":{"docs":{},"规":{"docs":{},"则":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"哦":{"docs":{},")":{"docs":{},":":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}},"安":{"docs":{},"装":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}},"n":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{},"j":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"x":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}},"了":{"docs":{},".":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}},"a":{"docs":{},"p":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"一":{"docs":{},"般":{"docs":{},"就":{"docs":{},"自":{"docs":{},"带":{"docs":{},"了":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}},"所":{"docs":{},"有":{"docs":{},"模":{"docs":{},"块":{"docs":{},".":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}},"模":{"docs":{},"块":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}},"很":{"docs":{},"简":{"docs":{},"单":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}},"非":{"docs":{},"常":{"docs":{},"简":{"docs":{},"单":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}},"j":{"docs":{},"d":{"docs":{},"k":{"docs":{},"环":{"docs":{},"境":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}},"m":{"docs":{},"y":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"及":{"docs":{},"配":{"docs":{},"置":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"3":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}},"docs":{}}}}}},"s":{"docs":{},"v":{"docs":{},"n":{"docs":{},"服":{"docs":{},"务":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}}}}}}},"全":{"docs":{},"模":{"docs":{},"式":{"docs":{},",":{"docs":{},"使":{"docs":{},"所":{"docs":{},"有":{"docs":{},"插":{"docs":{},"件":{"docs":{},"和":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"不":{"docs":{},"生":{"docs":{},"效":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}},"官":{"docs":{},"网":{"docs":{},"的":{"docs":{},"安":{"docs":{},"装":{"docs":{},"说":{"docs":{},"明":{"docs":{},"是":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}},"或":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"者":{"docs":{},"你":{"docs":{},"直":{"docs":{},"接":{"docs":{},"通":{"docs":{},"过":{"docs":{},"添":{"docs":{},"加":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}},"是":{"docs":{},"以":{"docs":{},"下":{"docs":{},"单":{"docs":{},"行":{"docs":{},"形":{"docs":{},"式":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}},"按":{"docs":{},"照":{"docs":{},"官":{"docs":{},"方":{"docs":{},"教":{"docs":{},"程":{"docs":{},"(":{"docs":{},"注":{"docs":{},"意":{"docs":{},"使":{"docs":{},"用":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}},"一":{"docs":{},"台":{"docs":{},"w":{"docs":{},"e":{"docs":{},"b":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},",":{"docs":{},"支":{"docs":{},"持":{"docs":{},"每":{"docs":{},"秒":{"3":{"0":{"0":{"docs":{},"个":{"docs":{},"并":{"docs":{},"发":{"docs":{},"计":{"docs":{},"算":{"docs":{},"。":{"docs":{},"平":{"docs":{},"常":{"docs":{},"需":{"docs":{},"要":{"1":{"0":{"docs":{},"台":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"(":{"docs":{},"约":{"docs":{},"等":{"docs":{},"于":{"docs":{},")":{"docs":{},";":{"docs":{},"[":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"默":{"docs":{},"认":{"docs":{},"配":{"docs":{},"置":{"docs":{},"是":{"1":{"5":{"0":{"docs":{},"]":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}},"推":{"docs":{},"出":{"docs":{},"了":{"docs":{},"镜":{"docs":{},"像":{"docs":{},"服":{"docs":{},"务":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}},"送":{"docs":{},"改":{"docs":{},"动":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}},"荐":{"docs":{},":":{"docs":{},"如":{"docs":{},"果":{"docs":{},"某":{"docs":{},"个":{"docs":{},"单":{"docs":{},"词":{"docs":{},"已":{"docs":{},"经":{"docs":{},"有":{"docs":{},"了":{"docs":{},"常":{"docs":{},"用":{"docs":{},"的":{"docs":{},"驼":{"docs":{},"峰":{"docs":{},"表":{"docs":{},"示":{"docs":{},"形":{"docs":{},"式":{"docs":{},",":{"docs":{},"按":{"docs":{},"它":{"docs":{},"的":{"docs":{},"组":{"docs":{},"成":{"docs":{},"将":{"docs":{},"它":{"docs":{},"分":{"docs":{},"割":{"docs":{},"开":{"docs":{},"(":{"docs":{},"如":{"docs":{},"”":{"docs":{},"a":{"docs":{},"d":{"docs":{},"w":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"s":{"docs":{},"”":{"docs":{},"将":{"docs":{},"分":{"docs":{},"割":{"docs":{},"成":{"docs":{},"”":{"docs":{},"a":{"docs":{},"d":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"淘":{"docs":{},"宝":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.012422360248447204}},"的":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}},"直":{"docs":{},"接":{"docs":{},"通":{"docs":{},"过":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}},"访":{"docs":{},"问":{"docs":{},"持":{"docs":{},"久":{"docs":{},"层":{"docs":{},"了":{"docs":{},",":{"docs":{},"假":{"docs":{},"如":{"docs":{},"持":{"docs":{},"久":{"docs":{},"层":{"docs":{},"中":{"docs":{},"的":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"变":{"docs":{},"化":{"docs":{},"了":{"docs":{},",":{"docs":{},"这":{"docs":{},"对":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"和":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"都":{"docs":{},"有":{"docs":{},"一":{"docs":{},"定":{"docs":{},"的":{"docs":{},"影":{"docs":{},"响":{"docs":{},"。":{"docs":{},"这":{"docs":{},"只":{"docs":{},"会":{"docs":{},"让":{"docs":{},"应":{"docs":{},"用":{"docs":{},"变":{"docs":{},"得":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"系":{"docs":{},"统":{"docs":{},"运":{"docs":{},"行":{"docs":{},"在":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}},"c":{"docs":{},"p":{"docs":{},"u":{"docs":{},"一":{"docs":{},"般":{"docs":{},"维":{"docs":{},"持":{"docs":{},"在":{"7":{"0":{"docs":{},"%":{"docs":{},"左":{"docs":{},"右":{"docs":{},"的":{"docs":{},"水":{"docs":{},"平":{"docs":{},",":{"docs":{},"高":{"docs":{},"峰":{"docs":{},"期":{"docs":{},"达":{"docs":{},"到":{"9":{"0":{"docs":{},"%":{"docs":{},"的":{"docs":{},"水":{"docs":{},"平":{"docs":{},",":{"docs":{},"是":{"docs":{},"不":{"docs":{},"浪":{"docs":{},"费":{"docs":{},"资":{"docs":{},"源":{"docs":{},",":{"docs":{},"并":{"docs":{},"比":{"docs":{},"较":{"docs":{},"稳":{"docs":{},"定":{"docs":{},"的":{"docs":{},"。":{"docs":{},"内":{"docs":{},"存":{"docs":{},",":{"docs":{},"i":{"docs":{},"o":{"docs":{},"类":{"docs":{},"似":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}},"分":{"docs":{},"割":{"docs":{},"为":{"docs":{},"多":{"docs":{},"个":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},",":{"docs":{},"独":{"docs":{},"立":{"docs":{},"部":{"docs":{},"署":{"docs":{},"后":{"docs":{},",":{"docs":{},"不":{"docs":{},"可":{"docs":{},"避":{"docs":{},"免":{"docs":{},"的":{"docs":{},"会":{"docs":{},"遇":{"docs":{},"到":{"docs":{},"会":{"docs":{},"话":{"docs":{},"管":{"docs":{},"理":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{},"一":{"docs":{},"般":{"docs":{},"可":{"docs":{},"采":{"docs":{},"用":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"同":{"docs":{},"步":{"docs":{},",":{"docs":{},"c":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"方":{"docs":{},"式":{"docs":{},"。":{"docs":{},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"一":{"docs":{},"般":{"docs":{},"采":{"docs":{},"用":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"实":{"docs":{},"现":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"容":{"docs":{},"量":{"docs":{},"估":{"docs":{},"算":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}},"进":{"docs":{},"行":{"docs":{},"全":{"docs":{},"量":{"docs":{},"同":{"docs":{},"步":{"docs":{},"的":{"docs":{},".":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}},"安":{"docs":{},"装":{"docs":{},".":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}},"镜":{"docs":{},"像":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"完":{"docs":{},"整":{"docs":{},"的":{"docs":{},"n":{"docs":{},"p":{"docs":{},"m":{"docs":{},"j":{"docs":{},"s":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"镜":{"docs":{},"像":{"docs":{},"。":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"用":{"docs":{},"此":{"docs":{},"代":{"docs":{},"替":{"docs":{},"官":{"docs":{},"方":{"docs":{},"版":{"docs":{},"本":{"docs":{},"(":{"docs":{},"只":{"docs":{},"读":{"docs":{},")":{"docs":{},",":{"docs":{},"同":{"docs":{},"步":{"docs":{},"频":{"docs":{},"率":{"docs":{},"目":{"docs":{},"前":{"docs":{},"为":{"docs":{"hexo/hello.html":{"ref":"hexo/hello.html","tf":0.006211180124223602}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"_":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{},".":{"docs":{},"y":{"docs":{},"m":{"docs":{},"l":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.006535947712418301}},"站":{"docs":{},"点":{"docs":{},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"很":{"docs":{},"多":{"docs":{},"全":{"docs":{},"局":{"docs":{},"配":{"docs":{},"置":{"docs":{},"都":{"docs":{},"在":{"docs":{},"这":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"中":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}},"d":{"docs":{},"r":{"docs":{},"a":{"docs":{},"f":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}},"└":{"docs":{},"─":{"docs":{},"─":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.005479452054794521}}}}},"├":{"docs":{},"─":{"docs":{},"─":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.01643835616438356}}}}},"仅":{"docs":{},"服":{"docs":{},"务":{"docs":{},"静":{"docs":{},"态":{"docs":{},"文":{"docs":{},"件":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}},"准":{"docs":{},"备":{"docs":{},"启":{"docs":{},"程":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"文":{"docs":{},"件":{"docs":{},":":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},".":{"docs":{},"t":{"docs":{},"x":{"docs":{},"t":{"docs":{},",":{"docs":{},"文":{"docs":{},"件":{"docs":{},"格":{"docs":{},"式":{"docs":{},"是":{"docs":{},"每":{"docs":{},"行":{"docs":{},"一":{"docs":{},"个":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},",":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"最":{"docs":{},"好":{"docs":{},"超":{"docs":{},"过":{"5":{"0":{"docs":{},"-":{"1":{"0":{"0":{"docs":{},"个":{"docs":{},"测":{"docs":{},"试":{"docs":{},"效":{"docs":{},"果":{"docs":{},"比":{"docs":{},"较":{"docs":{},"好":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"列":{"docs":{},"出":{"docs":{},"所":{"docs":{},"有":{"docs":{},"路":{"docs":{},"由":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}},"限":{"docs":{},"制":{"docs":{},":":{"8":{"0":{"docs":{},"或":{"1":{"0":{"0":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}}}},"发":{"docs":{},"布":{"docs":{},"为":{"docs":{},"草":{"docs":{},"稿":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"时":{"docs":{},"间":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"为":{"docs":{},"文":{"docs":{},"件":{"docs":{},"创":{"docs":{},"建":{"docs":{},"时":{"docs":{},"间":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}},"启":{"docs":{},"动":{"docs":{},"一":{"docs":{},"个":{"docs":{},"本":{"docs":{},"地":{"docs":{},"服":{"docs":{},"务":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},"访":{"docs":{},"问":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}},"扩":{"docs":{},"展":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"描":{"docs":{},"述":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.030136986301369864},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.004901960784313725}},"|":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"放":{"docs":{},"脚":{"docs":{},"本":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},",":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}},"文":{"docs":{},"章":{"docs":{},"的":{"docs":{},"永":{"docs":{},"久":{"docs":{},"网":{"docs":{},"址":{"docs":{},"链":{"docs":{},"接":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"是":{"docs":{},":":{"docs":{},"y":{"docs":{},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},"/":{"docs":{},":":{"docs":{},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{},"t":{"docs":{},"h":{"docs":{},"/":{"docs":{},":":{"docs":{},"d":{"docs":{},"a":{"docs":{},"y":{"docs":{},"/":{"docs":{},":":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"l":{"docs":{},"e":{"docs":{},"/":{"docs":{},",":{"docs":{},"指":{"docs":{},"的":{"docs":{},"什":{"docs":{},"么":{"docs":{},"意":{"docs":{},"思":{"docs":{},"?":{"docs":{},"比":{"docs":{},"如":{"docs":{},"我":{"docs":{},"一":{"docs":{},"篇":{"docs":{},"叫":{"docs":{},"『":{"docs":{},"l":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"』":{"docs":{},"的":{"docs":{},"文":{"docs":{},"章":{"docs":{},"是":{"docs":{},"在":{"2":{"0":{"1":{"2":{"docs":{},"年":{"1":{"docs":{},"月":{"1":{"docs":{},"日":{"docs":{},"写":{"docs":{},"的":{"docs":{},",":{"docs":{},"那":{"docs":{},"么":{"docs":{},"它":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"链":{"docs":{},"接":{"docs":{},"就":{"docs":{},"是":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"y":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"/":{"2":{"0":{"1":{"2":{"docs":{},"/":{"0":{"1":{"docs":{},"/":{"0":{"1":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"v":{"docs":{},"e":{"docs":{},"/":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"中":{"docs":{},"插":{"docs":{},"入":{"docs":{},"代":{"docs":{},"码":{"docs":{},"块":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}},"所":{"docs":{},"属":{"docs":{},"分":{"docs":{},"类":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"标":{"docs":{},"签":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"题":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.004901960784313725}}}},"永":{"docs":{},"久":{"docs":{},"链":{"docs":{},"接":{"docs":{},",":{"docs":{},"一":{"docs":{},"般":{"docs":{},"不":{"docs":{},"用":{"docs":{},"写":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"就":{"docs":{},"行":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}},"件":{"docs":{},"修":{"docs":{},"改":{"docs":{},"时":{"docs":{},"间":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"夹":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}},"下":{"docs":{},"找":{"docs":{},"到":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},"为":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"中":{"docs":{},"添":{"docs":{},"加":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}},"的":{"docs":{},"相":{"docs":{},"应":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}},"的":{"docs":{},"监":{"docs":{},"控":{"docs":{},"的":{"docs":{},"禁":{"docs":{},"用":{"docs":{},"的":{"docs":{},"。":{"docs":{},"你":{"docs":{},"必":{"docs":{},"须":{"docs":{},"运":{"docs":{},"行":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}},"名":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}},"编":{"docs":{},"码":{"docs":{},":":{"docs":{},"u":{"docs":{},"t":{"docs":{},"f":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"格":{"docs":{},"式":{"docs":{},"如":{"docs":{},"下":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}},"新":{"docs":{},"建":{"docs":{},"文":{"docs":{},"章":{"docs":{},"默":{"docs":{},"认":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"值":{"docs":{},"为":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},"不":{"docs":{},"能":{"docs":{},"总":{"docs":{},"是":{"docs":{},"习":{"docs":{},"惯":{"docs":{},"性":{"docs":{},"地":{"docs":{},"添":{"docs":{},"加":{"docs":{},"到":{"docs":{},"类":{"docs":{},"的":{"docs":{},"结":{"docs":{},"尾":{"docs":{},",":{"docs":{},"因":{"docs":{},"为":{"docs":{},"这":{"docs":{},"样":{"docs":{},"就":{"docs":{},"是":{"docs":{},"按":{"docs":{},"时":{"docs":{},"间":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"而":{"docs":{},"非":{"docs":{},"某":{"docs":{},"种":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"来":{"docs":{},"排":{"docs":{},"序":{"docs":{},"的":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"日":{"docs":{},"志":{"docs":{},"详":{"docs":{},"细":{"docs":{},"信":{"docs":{},"息":{"docs":{},"输":{"docs":{},"出":{"docs":{},"到":{"docs":{},"终":{"docs":{},"端":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}},"期":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}},"格":{"docs":{},"式":{"docs":{},"化":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"均":{"docs":{},"u":{"docs":{},"v":{"docs":{},"量":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}},"显":{"docs":{},"示":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"的":{"docs":{},"版":{"docs":{},"本":{"docs":{},"信":{"docs":{},"息":{"docs":{},"到":{"docs":{},"控":{"docs":{},"制":{"docs":{},"台":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}},"草":{"docs":{},"稿":{"docs":{},"文":{"docs":{},"章":{"docs":{},"(":{"docs":{},"位":{"docs":{},"于":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"/":{"docs":{},"_":{"docs":{},"d":{"docs":{},"r":{"docs":{},"a":{"docs":{},"f":{"docs":{},"t":{"docs":{},"s":{"docs":{},"目":{"docs":{},"录":{"docs":{},"下":{"docs":{},")":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}},"历":{"docs":{},"史":{"docs":{},"记":{"docs":{},"录":{"docs":{},"时":{"docs":{},",":{"docs":{},"每":{"docs":{},"个":{"docs":{},"提":{"docs":{},"交":{"docs":{},"的":{"docs":{},"信":{"docs":{},"息":{"docs":{},"只":{"docs":{},"显":{"docs":{},"示":{"docs":{},"一":{"docs":{},"行":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}},"来":{"docs":{},"渲":{"docs":{},"染":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"你":{"docs":{},"不":{"docs":{},"需":{"docs":{},"要":{"docs":{},"可":{"docs":{},"以":{"docs":{},"卸":{"docs":{},"载":{"docs":{},"它":{"docs":{},"们":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}},"使":{"docs":{},"用":{"docs":{},"它":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"实":{"docs":{},"现":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"中":{"docs":{},"的":{"docs":{},"c":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}},"得":{"docs":{},"到":{"docs":{},"客":{"docs":{},"户":{"docs":{},"信":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}},"标":{"docs":{},"签":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752},"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"缩":{"docs":{},"略":{"docs":{},"名":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"插":{"docs":{},"件":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"使":{"docs":{},"用":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}},"准":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"标":{"docs":{},"记":{"docs":{},"按":{"docs":{},"以":{"docs":{},"下":{"docs":{},"顺":{"docs":{},"序":{"docs":{},"出":{"docs":{},"现":{"docs":{},":":{"docs":{},"@":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}},"识":{"docs":{},"符":{"docs":{},"只":{"docs":{},"能":{"docs":{},"使":{"docs":{},"用":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"i":{"docs":{},"i":{"docs":{},"字":{"docs":{},"母":{"docs":{},"和":{"docs":{},"数":{"docs":{},"字":{"docs":{},",":{"docs":{},"因":{"docs":{},"此":{"docs":{},"每":{"docs":{},"个":{"docs":{},"有":{"docs":{},"效":{"docs":{},"的":{"docs":{},"标":{"docs":{},"识":{"docs":{},"符":{"docs":{},"名":{"docs":{},"称":{"docs":{},"都":{"docs":{},"能":{"docs":{},"匹":{"docs":{},"配":{"docs":{},"正":{"docs":{},"则":{"docs":{},"表":{"docs":{},"达":{"docs":{},"式":{"docs":{},"\\":{"docs":{},"w":{"docs":{},"+":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"规":{"docs":{},"则":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"监":{"docs":{},"控":{"docs":{},"文":{"docs":{},"件":{"docs":{},"的":{"docs":{},"改":{"docs":{},"变":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}},"听":{"docs":{},"文":{"docs":{},"件":{"docs":{},"修":{"docs":{},"改":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}},"站":{"docs":{},"点":{"docs":{},"副":{"docs":{},"标":{"docs":{},"题":{"docs":{},",":{"docs":{},"会":{"docs":{},"显":{"docs":{},"示":{"docs":{},"在":{"docs":{},"首":{"docs":{},"页":{"docs":{},"上":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"不":{"docs":{},"填":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}},"名":{"docs":{},"字":{"docs":{},",":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"h":{"docs":{},"t":{"docs":{},"m":{"docs":{},"l":{"docs":{},"的":{"docs":{},"t":{"docs":{},"i":{"docs":{},"t":{"docs":{},"l":{"docs":{},"e":{"docs":{},",":{"docs":{},"会":{"docs":{},"显":{"docs":{},"示":{"docs":{},"在":{"docs":{},"浏":{"docs":{},"览":{"docs":{},"器":{"docs":{},"标":{"docs":{},"签":{"docs":{},"上":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"描":{"docs":{},"述":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"不":{"docs":{},"填":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}},"时":{"docs":{},"区":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"是":{"docs":{},"电":{"docs":{},"脑":{"docs":{},"时":{"docs":{},"间":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}},"根":{"docs":{},"目":{"docs":{},"录":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}},"网":{"docs":{},"址":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"配":{"docs":{},"置":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"这":{"docs":{},"里":{"docs":{},"进":{"docs":{},"行":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"配":{"docs":{},"置":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}},"网":{"docs":{},"站":{"docs":{},"设":{"docs":{},"置":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"初":{"docs":{},"级":{"docs":{},"架":{"docs":{},"构":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"架":{"docs":{},"构":{"docs":{},"优":{"docs":{},"化":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}},"分":{"docs":{},"析":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"需":{"docs":{},"求":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"脚":{"docs":{},"手":{"docs":{},"架":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"。":{"docs":{},"当":{"docs":{},"你":{"docs":{},"创":{"docs":{},"建":{"docs":{},"一":{"docs":{},"个":{"docs":{},"新":{"docs":{},"文":{"docs":{},"章":{"docs":{},",":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"基":{"docs":{},"于":{"docs":{},"s":{"docs":{},"c":{"docs":{},"a":{"docs":{},"f":{"docs":{},"f":{"docs":{},"o":{"docs":{},"l":{"docs":{},"d":{"docs":{},"s":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"里":{"docs":{},"的":{"docs":{},"类":{"docs":{},"型":{"docs":{},"来":{"docs":{},"创":{"docs":{},"建":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"本":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"。":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"h":{"docs":{},"e":{"docs":{},"x":{"docs":{},"o":{"docs":{},"最":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"方":{"docs":{},"法":{"docs":{},",":{"docs":{},"它":{"docs":{},"会":{"docs":{},"自":{"docs":{},"动":{"docs":{},"执":{"docs":{},"行":{"docs":{},"这":{"docs":{},"个":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"下":{"docs":{},"的":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},"文":{"docs":{},"件":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"自":{"docs":{},"定":{"docs":{},"义":{"docs":{},"当":{"docs":{},"前":{"docs":{},"工":{"docs":{},"作":{"docs":{},"目":{"docs":{},"录":{"docs":{},"路":{"docs":{},"径":{"docs":{},",":{"docs":{},"假":{"docs":{},"如":{"docs":{},"你":{"docs":{},"没":{"docs":{},"在":{"docs":{},"工":{"docs":{},"作":{"docs":{},"目":{"docs":{},"录":{"docs":{},"下":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"这":{"docs":{},"个":{"docs":{},"命":{"docs":{},"令":{"docs":{},"指":{"docs":{},"定":{"docs":{},"一":{"docs":{},"下":{"docs":{},"工":{"docs":{},"作":{"docs":{},"目":{"docs":{},"录":{"docs":{},"路":{"docs":{},"径":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"布":{"docs":{},"局":{"docs":{},"保":{"docs":{},"存":{"docs":{},"到":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"动":{"docs":{},"换":{"docs":{},"行":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"时":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"至":{"docs":{},"少":{"docs":{},"+":{"4":{"docs":{},"个":{"docs":{},"空":{"docs":{},"格":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"docs":{}}}}}},",":{"docs":{},"第":{"docs":{},"一":{"docs":{},"行":{"docs":{},"后":{"docs":{},"的":{"docs":{},"每":{"docs":{},"一":{"docs":{},"行":{"docs":{},"至":{"docs":{},"少":{"docs":{},"比":{"docs":{},"第":{"docs":{},"一":{"docs":{},"行":{"docs":{},"多":{"docs":{},"缩":{"docs":{},"进":{"4":{"docs":{},"个":{"docs":{},"空":{"docs":{},"格":{"docs":{},"(":{"docs":{},"注":{"docs":{},"意":{"docs":{},":":{"docs":{},"制":{"docs":{},"表":{"docs":{},"符":{"docs":{},"不":{"docs":{},"用":{"docs":{},"于":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"。":{"docs":{},"见":{"2":{"docs":{},".":{"3":{"docs":{},".":{"1":{"docs":{},"节":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"docs":{}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"基":{"docs":{},"本":{"docs":{},"准":{"docs":{},"则":{"docs":{},"是":{"docs":{},":":{"docs":{},"更":{"docs":{},"倾":{"docs":{},"向":{"docs":{},"于":{"docs":{},"在":{"docs":{},"更":{"docs":{},"高":{"docs":{},"的":{"docs":{},"语":{"docs":{},"法":{"docs":{},"级":{"docs":{},"别":{"docs":{},"处":{"docs":{},"断":{"docs":{},"开":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}},"身":{"docs":{},"的":{"docs":{},"调":{"docs":{},"试":{"docs":{},"器":{"docs":{},"已":{"docs":{},"经":{"docs":{},"很":{"docs":{},"好":{"docs":{},"用":{"docs":{},"了":{"docs":{},",":{"docs":{},"按":{"docs":{},"f":{"1":{"2":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"看":{"docs":{},"到":{"docs":{},"(":{"docs":{},"i":{"docs":{},"e":{"1":{"0":{"docs":{},"以":{"docs":{},"上":{"docs":{},"也":{"docs":{},"直":{"docs":{},"接":{"docs":{},"按":{"docs":{},"f":{"1":{"2":{"docs":{},"就":{"docs":{},"可":{"docs":{},"以":{"docs":{},"调":{"docs":{},"试":{"docs":{},"了":{"docs":{},")":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}},"表":{"docs":{},"示":{"docs":{},"在":{"docs":{},"部":{"docs":{},"署":{"docs":{},"前":{"docs":{},"先":{"docs":{},"重":{"docs":{},"新":{"docs":{},"生":{"docs":{},"成":{"docs":{},"一":{"docs":{},"下":{"docs":{},"站":{"docs":{},"点":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}},"这":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"是":{"docs":{},"从":{"docs":{},"哪":{"docs":{},"个":{"docs":{},"u":{"docs":{},"r":{"docs":{},"l":{"docs":{},"过":{"docs":{},"来":{"docs":{},"的":{"docs":{},",":{"docs":{},"假":{"docs":{},"如":{"docs":{},"你":{"docs":{},"通":{"docs":{},"过":{"docs":{},"g":{"docs":{},"o":{"docs":{},"o":{"docs":{},"g":{"docs":{},"l":{"docs":{},"e":{"docs":{},"搜":{"docs":{},"索":{"docs":{},"出":{"docs":{},"一":{"docs":{},"个":{"docs":{},"商":{"docs":{},"家":{"docs":{},"的":{"docs":{},"广":{"docs":{},"告":{"docs":{},"页":{"docs":{},"面":{"docs":{},",":{"docs":{},"你":{"docs":{},"对":{"docs":{},"这":{"docs":{},"个":{"docs":{},"广":{"docs":{},"告":{"docs":{},"页":{"docs":{},"面":{"docs":{},"感":{"docs":{},"兴":{"docs":{},"趣":{"docs":{},",":{"docs":{},"鼠":{"docs":{},"标":{"docs":{},"一":{"docs":{},"点":{"docs":{},"发":{"docs":{},"送":{"docs":{},"一":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"到":{"docs":{},"商":{"docs":{},"家":{"docs":{},"的":{"docs":{},"网":{"docs":{},"站":{"docs":{},",":{"docs":{},"这":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"的":{"docs":{},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{},"r":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{},"值":{"docs":{},"就":{"docs":{},"是":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"用":{"docs":{},"户":{"docs":{},"界":{"docs":{},"面":{"docs":{},"接":{"docs":{},"到":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"查":{"docs":{},"询":{"docs":{},"客":{"docs":{},"户":{"docs":{},"信":{"docs":{},"息":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},",":{"docs":{},"它":{"docs":{},"就":{"docs":{},"会":{"docs":{},"转":{"docs":{},"发":{"docs":{},"这":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"给":{"docs":{},"用":{"docs":{},"户":{"docs":{},"委":{"docs":{},"托":{"docs":{},"(":{"docs":{},"c":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"语":{"docs":{},"言":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"转":{"docs":{},"换":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},",":{"1":{"docs":{},"代":{"docs":{},"表":{"docs":{},"小":{"docs":{},"写":{"docs":{},";":{"2":{"docs":{},"代":{"docs":{},"表":{"docs":{},"大":{"docs":{},"写":{"docs":{},";":{"docs":{},"默":{"docs":{},"认":{"docs":{},"为":{"0":{"docs":{},",":{"docs":{},"意":{"docs":{},"思":{"docs":{},"就":{"docs":{},"是":{"docs":{},"创":{"docs":{},"建":{"docs":{},"文":{"docs":{},"章":{"docs":{},"的":{"docs":{},"时":{"docs":{},"候":{"docs":{},",":{"docs":{},"是":{"docs":{},"否":{"docs":{},"自":{"docs":{},"动":{"docs":{},"帮":{"docs":{},"你":{"docs":{},"转":{"docs":{},"换":{"docs":{},"文":{"docs":{},"件":{"docs":{},"名":{"docs":{},",":{"docs":{},"默":{"docs":{},"认":{"docs":{},"就":{"docs":{},"行":{"docs":{},",":{"docs":{},"意":{"docs":{},"义":{"docs":{},"不":{"docs":{},"大":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}}}}}}}}}},"docs":{}}}}}}},"docs":{}}}}}}},"迁":{"docs":{},"移":{"docs":{},"到":{"docs":{},"其":{"docs":{},"他":{"docs":{},"模":{"docs":{},"块":{"docs":{},"的":{"docs":{},"命":{"docs":{},"令":{"docs":{},"。":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}},"选":{"docs":{},"项":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.010958904109589041},"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"或":{"docs":{},"者":{"docs":{},"设":{"docs":{},"置":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"来":{"docs":{},"设":{"docs":{},"置":{"docs":{},"其":{"docs":{},"他":{"docs":{},"端":{"docs":{},"口":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}},"部":{"docs":{},"署":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}},"你":{"docs":{},"的":{"docs":{},"站":{"docs":{},"点":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}},"配":{"docs":{},"置":{"docs":{},",":{"docs":{},"将":{"docs":{},"本":{"docs":{},"地":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"目":{"docs":{},"录":{"docs":{},"也":{"docs":{},"就":{"docs":{},"是":{"docs":{},"网":{"docs":{},"站":{"docs":{},"部":{"docs":{},"署":{"docs":{},"到":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"上":{"docs":{},"的":{"docs":{},"配":{"docs":{},"置":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"后":{"docs":{},"生":{"docs":{},"成":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"生":{"docs":{},"成":{"docs":{},"后":{"docs":{},",":{"docs":{},"您":{"docs":{},"可":{"docs":{},"以":{"docs":{},"运":{"docs":{},"行":{"docs":{},"以":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{},"之":{"docs":{},"一":{"docs":{},",":{"docs":{},"这":{"2":{"docs":{},"个":{"docs":{},"命":{"docs":{},"令":{"docs":{},"使":{"docs":{},"用":{"docs":{},"结":{"docs":{},"果":{"docs":{},"相":{"docs":{},"同":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}}}}},"链":{"docs":{},"接":{"docs":{},"设":{"docs":{},"置":{"docs":{"hexo/config.html":{"ref":"hexo/config.html","tf":0.0027397260273972603}}}},"与":{"docs":{},"资":{"docs":{},"源":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}},"别":{"docs":{},"名":{"docs":{},":":{"docs":{},"c":{"docs":{},"o":{"docs":{},"d":{"docs":{},"e":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}},"q":{"docs":{},"u":{"docs":{},"o":{"docs":{},"t":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"占":{"docs":{},"位":{"docs":{},"符":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0032679738562091504}}}}},"字":{"docs":{},"段":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},":":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}},"布":{"docs":{},"局":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.004901960784313725}}}},"引":{"docs":{},"用":{"docs":{},"一":{"docs":{},"本":{"docs":{},"书":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}},"网":{"docs":{},"络":{"docs":{},"上":{"docs":{},"一":{"docs":{},"篇":{"docs":{},"文":{"docs":{},"章":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}},"自":{"docs":{},"t":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}},"月":{"docs":{},"份":{"docs":{},",":{"docs":{},"单":{"docs":{},"数":{"docs":{},"字":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"4":{"docs":{},"月":{"docs":{},"就":{"docs":{},"是":{"4":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"docs":{}}}}},"docs":{}}}}}}},"如":{"4":{"docs":{},"月":{"docs":{},"为":{"0":{"4":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}},"docs":{}},"docs":{}}}},"docs":{}}}}},"草":{"docs":{},"稿":{"docs":{},"默":{"docs":{},"认":{"docs":{},"不":{"docs":{},"显":{"docs":{},"示":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"添":{"docs":{},"加":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}},"资":{"docs":{},"源":{"docs":{},"是":{"docs":{},"非":{"docs":{},"文":{"docs":{},"章":{"docs":{},"的":{"docs":{},"文":{"docs":{},"件":{"docs":{},",":{"docs":{},"在":{"docs":{},"s":{"docs":{},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},"文":{"docs":{},"件":{"docs":{},"夹":{"docs":{},"中":{"docs":{},",":{"docs":{},"如":{"docs":{},"图":{"docs":{},"片":{"docs":{},"、":{"docs":{},"c":{"docs":{},"s":{"docs":{},"s":{"docs":{},"、":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"r":{"docs":{},"i":{"docs":{},"p":{"docs":{},"t":{"docs":{},"文":{"docs":{},"件":{"docs":{},"等":{"docs":{},"。":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"目":{"docs":{},"录":{"docs":{},"x":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}},"错":{"docs":{},"误":{"docs":{},"。":{"docs":{},"您":{"docs":{},"可":{"docs":{},"以":{"docs":{},"添":{"docs":{},"加":{"docs":{"hexo/writing.html":{"ref":"hexo/writing.html","tf":0.0016339869281045752}}}}}}}}}},"专":{"docs":{},"业":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}},"交":{"docs":{},"互":{"docs":{},"式":{"docs":{},"添":{"docs":{},"加":{"docs":{},"文":{"docs":{},"件":{"docs":{},"到":{"docs":{},"暂":{"docs":{},"存":{"docs":{},"区":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}},"仓":{"docs":{},"库":{"docs":{},"。":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}},"位":{"docs":{},"字":{"docs":{},"符":{"docs":{},"。":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"下":{"docs":{},"列":{"docs":{},"命":{"docs":{},"令":{"docs":{},"获":{"docs":{},"取":{"docs":{},"提":{"docs":{},"交":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}},"像":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}},"c":{"docs":{},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{},"i":{"docs":{},"e":{"docs":{},",":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"这":{"docs":{},"些":{"docs":{},"响":{"docs":{},"应":{"docs":{},"头":{"docs":{},"是":{"docs":{},"有":{"docs":{},"福":{"docs":{},"之":{"docs":{},"人":{"docs":{},",":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"v":{"docs":{},"l":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"为":{"docs":{},"它":{"docs":{},"们":{"docs":{},"都":{"docs":{},"提":{"docs":{},"供":{"docs":{},"了":{"docs":{},"v":{"docs":{},"i":{"docs":{},"p":{"docs":{},"(":{"docs":{},"非":{"docs":{},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"切":{"docs":{},"换":{"docs":{},"回":{"docs":{},"主":{"docs":{},"分":{"docs":{},"支":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}},"助":{"docs":{},"你":{"docs":{},"入":{"docs":{},"门":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}},"图":{"docs":{},"形":{"docs":{},"化":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}},"解":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}},"片":{"docs":{},"存":{"docs":{},"储":{"docs":{},"的":{"docs":{},"要":{"docs":{},"求":{"docs":{},"(":{"docs":{},"海":{"docs":{},"量":{"docs":{},"小":{"docs":{},"图":{"docs":{},"片":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}},"基":{"docs":{},"本":{"docs":{},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{},"程":{"docs":{},"的":{"docs":{},"第":{"docs":{},"一":{"docs":{},"步":{"docs":{},";":{"docs":{},"使":{"docs":{},"用":{"docs":{},"如":{"docs":{},"下":{"docs":{},"命":{"docs":{},"令":{"docs":{},"以":{"docs":{},"实":{"docs":{},"际":{"docs":{},"提":{"docs":{},"交":{"docs":{},"改":{"docs":{},"动":{"docs":{},":":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}},"格":{"docs":{},"式":{"docs":{},"总":{"docs":{},"是":{"docs":{},"o":{"docs":{},"k":{"docs":{},"的":{"docs":{},"。":{"docs":{},"当":{"docs":{},"整":{"docs":{},"个":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"块":{"docs":{},"能":{"docs":{},"容":{"docs":{},"纳":{"docs":{},"于":{"docs":{},"一":{"docs":{},"行":{"docs":{},"时":{"docs":{},"(":{"docs":{},"且":{"docs":{},"没":{"docs":{},"有":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"标":{"docs":{},"记":{"docs":{},"@":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},")":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"使":{"docs":{},"用":{"docs":{},"单":{"docs":{},"行":{"docs":{},"形":{"docs":{},"式":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"用":{"docs":{},"法":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}},"工":{"docs":{},"作":{"docs":{},"流":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}},"目":{"docs":{},"录":{"docs":{},",":{"docs":{},"它":{"docs":{},"持":{"docs":{},"有":{"docs":{},"实":{"docs":{},"际":{"docs":{},"文":{"docs":{},"件":{"docs":{},";":{"docs":{},"第":{"docs":{},"二":{"docs":{},"个":{"docs":{},"是":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}},"帮":{"docs":{},"助":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}},"彩":{"docs":{},"色":{"docs":{},"的":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}},"换":{"docs":{},"成":{"docs":{},"你":{"docs":{},"想":{"docs":{},"要":{"docs":{},"推":{"docs":{},"送":{"docs":{},"的":{"docs":{},"任":{"docs":{},"何":{"docs":{},"分":{"docs":{},"支":{"docs":{},"。":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}},"暂":{"docs":{},"存":{"docs":{},"区":{"docs":{},"(":{"docs":{},"i":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"x":{"docs":{},")":{"docs":{},",":{"docs":{},"它":{"docs":{},"像":{"docs":{},"个":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"区":{"docs":{},"域":{"docs":{},",":{"docs":{},"临":{"docs":{},"时":{"docs":{},"保":{"docs":{},"存":{"docs":{},"你":{"docs":{},"的":{"docs":{},"改":{"docs":{},"动":{"docs":{},";":{"docs":{},"最":{"docs":{},"后":{"docs":{},"是":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"替":{"docs":{},"换":{"docs":{},"本":{"docs":{},"地":{"docs":{},"改":{"docs":{},"动":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}},"检":{"docs":{},"出":{"docs":{},"仓":{"docs":{},"库":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}},"社":{"docs":{},"区":{"docs":{},"参":{"docs":{},"考":{"docs":{},"书":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}},"远":{"docs":{},"端":{"docs":{},"的":{"docs":{},"改":{"docs":{},"动":{"docs":{},"。":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}},"都":{"docs":{},"会":{"docs":{},"尝":{"docs":{},"试":{"docs":{},"去":{"docs":{},"自":{"docs":{},"动":{"docs":{},"合":{"docs":{},"并":{"docs":{},"改":{"docs":{},"动":{"docs":{},"。":{"docs":{},"遗":{"docs":{},"憾":{"docs":{},"的":{"docs":{},"是":{"docs":{},",":{"docs":{},"这":{"docs":{},"可":{"docs":{},"能":{"docs":{},"并":{"docs":{},"非":{"docs":{},"每":{"docs":{},"次":{"docs":{},"都":{"docs":{},"成":{"docs":{},"功":{"docs":{},",":{"docs":{},"并":{"docs":{},"可":{"docs":{},"能":{"docs":{},"出":{"docs":{},"现":{"docs":{},"冲":{"docs":{},"突":{"docs":{},"(":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"f":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"t":{"docs":{},"s":{"docs":{},")":{"docs":{},"。":{"docs":{"git/guide.html":{"ref":"git/guide.html","tf":0.0048543689320388345}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"任":{"docs":{},"何":{"docs":{},"能":{"docs":{},"表":{"docs":{},"达":{"docs":{},"这":{"docs":{},"个":{"docs":{},"意":{"docs":{},"思":{"docs":{},"的":{"docs":{},"注":{"docs":{},"释":{"docs":{},"都":{"docs":{},"是":{"docs":{},"o":{"docs":{},"k":{"docs":{},"的":{"docs":{},"(":{"docs":{},"典":{"docs":{},"型":{"docs":{},"的":{"docs":{},"是":{"docs":{},"用":{"docs":{},"/":{"docs":{},"/":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}},"允":{"docs":{},"许":{"docs":{},",":{"docs":{},"但":{"docs":{},"没":{"docs":{},"有":{"docs":{},"理":{"docs":{},"由":{"docs":{},"要":{"docs":{},"这":{"docs":{},"样":{"docs":{},"做":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}},"这":{"docs":{},"样":{"docs":{},"做":{"docs":{},"显":{"docs":{},"得":{"docs":{},"笨":{"docs":{},"拙":{"docs":{},"还":{"docs":{},"容":{"docs":{},"易":{"docs":{},"出":{"docs":{},"错":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}},"制":{"docs":{},"表":{"docs":{},"符":{"docs":{},"不":{"docs":{},"用":{"docs":{},"于":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}},"加":{"docs":{},"星":{"docs":{},"号":{"docs":{},"处":{"docs":{},"表":{"docs":{},"示":{"docs":{},"可":{"docs":{},"以":{"docs":{},",":{"docs":{},"但":{"docs":{},"不":{"docs":{},"推":{"docs":{},"荐":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}},"右":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"前":{"docs":{},"换":{"docs":{},"行":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"名":{"docs":{},"字":{"docs":{},"从":{"docs":{},"散":{"docs":{},"文":{"docs":{},"形":{"docs":{},"式":{"docs":{},"(":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}},"否":{"docs":{},"则":{"docs":{},"不":{"docs":{},"换":{"docs":{},"行":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"右":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"后":{"docs":{},"面":{"docs":{},"是":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},"或":{"docs":{},"逗":{"docs":{},"号":{"docs":{},",":{"docs":{},"则":{"docs":{},"不":{"docs":{},"换":{"docs":{},"行":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"处":{"docs":{},"于":{"docs":{},"反":{"docs":{},"污":{"docs":{},"水":{"docs":{},"模":{"docs":{},"式":{"docs":{},"。":{"docs":{},"大":{"docs":{},"概":{"docs":{},"有":{"docs":{},"百":{"docs":{},"分":{"docs":{},"之":{"docs":{},"二":{"docs":{},"十":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"仅":{"docs":{},"仅":{"docs":{},"是":{"docs":{},"做":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"穿":{"docs":{},"越":{"docs":{},",":{"docs":{},"百":{"docs":{},"分":{"docs":{},"之":{"docs":{},"八":{"docs":{},"十":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"会":{"docs":{},"做":{"docs":{},"一":{"docs":{},"些":{"docs":{},"业":{"docs":{},"务":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"操":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"哪":{"docs":{},"里":{"docs":{},"需":{"docs":{},"要":{"docs":{},"使":{"docs":{},"用":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}},"块":{"docs":{},"注":{"docs":{},"释":{"docs":{},"与":{"docs":{},"其":{"docs":{},"周":{"docs":{},"围":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"在":{"docs":{},"同":{"docs":{},"一":{"docs":{},"缩":{"docs":{},"进":{"docs":{},"级":{"docs":{},"别":{"docs":{},"。":{"docs":{},"它":{"docs":{},"们":{"docs":{},"可":{"docs":{},"以":{"docs":{},"是":{"docs":{},"/":{"docs":{},"*":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}},"风":{"docs":{},"格":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"缩":{"docs":{},"进":{"docs":{},":":{"2":{"docs":{},"个":{"docs":{},"空":{"docs":{},"格":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"docs":{}}}},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"模":{"docs":{},"块":{"docs":{},"能":{"docs":{},"找":{"docs":{},"到":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"里":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"模":{"docs":{},"块":{"docs":{},"处":{"docs":{},"理":{"docs":{},"对":{"docs":{},"应":{"docs":{},"数":{"docs":{},"据":{"docs":{},"(":{"docs":{},"约":{"docs":{},"束":{"docs":{},"关":{"docs":{},"系":{"docs":{},")":{"docs":{},"。":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"里":{"docs":{},"的":{"docs":{},"c":{"docs":{},"u":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"m":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"垂":{"docs":{},"直":{"docs":{},"空":{"docs":{},"白":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"多":{"docs":{},"个":{"docs":{},"连":{"docs":{},"续":{"docs":{},"的":{"docs":{},"空":{"docs":{},"行":{"docs":{},"是":{"docs":{},"允":{"docs":{},"许":{"docs":{},"的":{"docs":{},",":{"docs":{},"但":{"docs":{},"没":{"docs":{},"有":{"docs":{},"必":{"docs":{},"要":{"docs":{},"这":{"docs":{},"样":{"docs":{},"做":{"docs":{},"(":{"docs":{},"我":{"docs":{},"们":{"docs":{},"也":{"docs":{},"不":{"docs":{},"鼓":{"docs":{},"励":{"docs":{},"这":{"docs":{},"样":{"docs":{},"做":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"种":{"docs":{},"在":{"docs":{},"线":{"docs":{},"支":{"docs":{},"付":{"docs":{},"方":{"docs":{},"式":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}},"级":{"docs":{},"缓":{"docs":{},"存":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.011695906432748537}}}}}},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"与":{"docs":{},"i":{"docs":{},"f":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"型":{"docs":{},"网":{"docs":{},"站":{"docs":{},"一":{"docs":{},"般":{"docs":{},"需":{"docs":{},"要":{"docs":{},"做":{"docs":{},"以":{"docs":{},"下":{"docs":{},"架":{"docs":{},"构":{"docs":{},"优":{"docs":{},"化":{"docs":{},"(":{"docs":{},"优":{"docs":{},"化":{"docs":{},"是":{"docs":{},"架":{"docs":{},"构":{"docs":{},"设":{"docs":{},"计":{"docs":{},"时":{"docs":{},",":{"docs":{},"就":{"docs":{},"要":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"的":{"docs":{},",":{"docs":{},"一":{"docs":{},"般":{"docs":{},"从":{"docs":{},"架":{"docs":{},"构":{"docs":{},"/":{"docs":{},"代":{"docs":{},"码":{"docs":{},"级":{"docs":{},"别":{"docs":{},"解":{"docs":{},"决":{"docs":{},",":{"docs":{},"调":{"docs":{},"优":{"docs":{},"主":{"docs":{},"要":{"docs":{},"是":{"docs":{},"简":{"docs":{},"单":{"docs":{},"参":{"docs":{},"数":{"docs":{},"的":{"docs":{},"调":{"docs":{},"整":{"docs":{},",":{"docs":{},"比":{"docs":{},"如":{"docs":{},"j":{"docs":{},"v":{"docs":{},"m":{"docs":{},"调":{"docs":{},"优":{"docs":{},";":{"docs":{},"如":{"docs":{},"果":{"docs":{},"调":{"docs":{},"优":{"docs":{},"涉":{"docs":{},"及":{"docs":{},"大":{"docs":{},"量":{"docs":{},"代":{"docs":{},"码":{"docs":{},"改":{"docs":{},"造":{"docs":{},",":{"docs":{},"就":{"docs":{},"不":{"docs":{},"是":{"docs":{},"调":{"docs":{},"优":{"docs":{},"了":{"docs":{},",":{"docs":{},"属":{"docs":{},"于":{"docs":{},"重":{"docs":{},"构":{"docs":{},")":{"docs":{},":":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"架":{"docs":{},"构":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"系":{"docs":{},"列":{"docs":{},"文":{"docs":{},"档":{"docs":{},",":{"docs":{},"欢":{"docs":{},"迎":{"docs":{},"大":{"docs":{},"家":{"docs":{},"关":{"docs":{},"注":{"docs":{},"。":{"docs":{},"本":{"docs":{},"次":{"docs":{},"分":{"docs":{},"享":{"docs":{},"主":{"docs":{},"题":{"docs":{},":":{"docs":{},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"架":{"docs":{},"构":{"docs":{},"案":{"docs":{},"例":{"docs":{},"。":{"docs":{},"从":{"docs":{},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"的":{"docs":{},"需":{"docs":{},"求":{"docs":{},",":{"docs":{},"到":{"docs":{},"单":{"docs":{},"机":{"docs":{},"架":{"docs":{},"构":{"docs":{},",":{"docs":{},"逐":{"docs":{},"步":{"docs":{},"演":{"docs":{},"变":{"docs":{},"为":{"docs":{},"常":{"docs":{},"用":{"docs":{},"的":{"docs":{},",":{"docs":{},"可":{"docs":{},"供":{"docs":{},"参":{"docs":{},"考":{"docs":{},"的":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"架":{"docs":{},"构":{"docs":{},"的":{"docs":{},"原":{"docs":{},"型":{"docs":{},"。":{"docs":{},"除":{"docs":{},"具":{"docs":{},"备":{"docs":{},"功":{"docs":{},"能":{"docs":{},"需":{"docs":{},"求":{"docs":{},"外":{"docs":{},",":{"docs":{},"还":{"docs":{},"具":{"docs":{},"备":{"docs":{},"一":{"docs":{},"定":{"docs":{},"的":{"docs":{},"高":{"docs":{},"性":{"docs":{},"能":{"docs":{},",":{"docs":{},"高":{"docs":{},"可":{"docs":{},"用":{"docs":{},",":{"docs":{},"可":{"docs":{},"伸":{"docs":{},"缩":{"docs":{},",":{"docs":{},"可":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"等":{"docs":{},"非":{"docs":{},"功":{"docs":{},"能":{"docs":{},"质":{"docs":{},"量":{"docs":{},"需":{"docs":{},"求":{"docs":{},"(":{"docs":{},"架":{"docs":{},"构":{"docs":{},"目":{"docs":{},"标":{"docs":{},")":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"系":{"docs":{},"列":{"docs":{},":":{"docs":{},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"架":{"docs":{},"构":{"docs":{},"案":{"docs":{},"例":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}},"需":{"docs":{},"要":{"docs":{},"存":{"docs":{},"储":{"docs":{},"海":{"docs":{},"量":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},",":{"docs":{},"为":{"docs":{},"达":{"docs":{},"到":{"docs":{},"海":{"docs":{},"量":{"docs":{},"数":{"docs":{},"据":{"docs":{},"存":{"docs":{},"储":{"docs":{},",":{"docs":{},"高":{"docs":{},"可":{"docs":{},"用":{"docs":{},",":{"docs":{},"高":{"docs":{},"性":{"docs":{},"能":{"docs":{},"一":{"docs":{},"般":{"docs":{},"采":{"docs":{},"用":{"docs":{},"冗":{"docs":{},"余":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},"进":{"docs":{},"行":{"docs":{},"系":{"docs":{},"统":{"docs":{},"设":{"docs":{},"计":{"docs":{},"。":{"docs":{},"一":{"docs":{},"般":{"docs":{},"有":{"docs":{},"两":{"docs":{},"种":{"docs":{},"方":{"docs":{},"式":{"docs":{},"读":{"docs":{},"写":{"docs":{},"分":{"docs":{},"离":{"docs":{},"和":{"docs":{},"分":{"docs":{},"库":{"docs":{},"分":{"docs":{},"表":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"量":{"docs":{},"应":{"docs":{},"用":{"docs":{},"存":{"docs":{},"在":{"docs":{},"冗":{"docs":{},"余":{"docs":{},"代":{"docs":{},"码":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}},"它":{"docs":{},"也":{"docs":{},"不":{"docs":{},"会":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"完":{"docs":{},"整":{"docs":{},"的":{"docs":{},"祈":{"docs":{},"使":{"docs":{},"句":{"docs":{},",":{"docs":{},"如":{"docs":{},"s":{"docs":{},"a":{"docs":{},"v":{"docs":{},"e":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}},"局":{"docs":{},"部":{"docs":{},"变":{"docs":{},"量":{"docs":{},"名":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"以":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},"风":{"docs":{},"格":{"docs":{},"编":{"docs":{},"写":{"docs":{},",":{"docs":{},"比":{"docs":{},"起":{"docs":{},"其":{"docs":{},"它":{"docs":{},"类":{"docs":{},"型":{"docs":{},"的":{"docs":{},"名":{"docs":{},"称":{"docs":{},",":{"docs":{},"局":{"docs":{},"部":{"docs":{},"变":{"docs":{},"量":{"docs":{},"名":{"docs":{},"可":{"docs":{},"以":{"docs":{},"有":{"docs":{},"更":{"docs":{},"为":{"docs":{},"宽":{"docs":{},"松":{"docs":{},"的":{"docs":{},"缩":{"docs":{},"写":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"在":{"docs":{},"声":{"docs":{},"明":{"docs":{},"时":{"docs":{},"最":{"docs":{},"好":{"docs":{},"就":{"docs":{},"进":{"docs":{},"行":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"声":{"docs":{},"明":{"docs":{},"后":{"docs":{},"尽":{"docs":{},"快":{"docs":{},"进":{"docs":{},"行":{"docs":{},"初":{"docs":{},"始":{"docs":{},"化":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"左":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"前":{"docs":{},"不":{"docs":{},"换":{"docs":{},"行":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"后":{"docs":{},"换":{"docs":{},"行":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"常":{"docs":{},"量":{"docs":{},"名":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"命":{"docs":{},"名":{"docs":{},"模":{"docs":{},"式":{"docs":{},"为":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},"_":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},",":{"docs":{},"全":{"docs":{},"部":{"docs":{},"字":{"docs":{},"母":{"docs":{},"大":{"docs":{},"写":{"docs":{},",":{"docs":{},"用":{"docs":{},"下":{"docs":{},"划":{"docs":{},"线":{"docs":{},"分":{"docs":{},"隔":{"docs":{},"单":{"docs":{},"词":{"docs":{},"。":{"docs":{},"那":{"docs":{},",":{"docs":{},"到":{"docs":{},"底":{"docs":{},"什":{"docs":{},"么":{"docs":{},"算":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"常":{"docs":{},"量":{"docs":{},"?":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"见":{"docs":{},"的":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}},"请":{"docs":{},"求":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}},"很":{"docs":{},"糟":{"docs":{},",":{"docs":{},"读":{"docs":{},"者":{"docs":{},"根":{"docs":{},"本":{"docs":{},"看":{"docs":{},"不":{"docs":{},"出":{"docs":{},"这":{"docs":{},"是":{"docs":{},"什":{"docs":{},"么":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}},"多":{"docs":{},"貌":{"docs":{},"似":{"docs":{},"神":{"docs":{},"奇":{"docs":{},"的":{"docs":{},"网":{"docs":{},"页":{"docs":{},"监":{"docs":{},"控":{"docs":{},"软":{"docs":{},"件":{"docs":{},"(":{"docs":{},"如":{"docs":{},"著":{"docs":{},"名":{"docs":{},"的":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}},"把":{"docs":{},"短":{"docs":{},"语":{"docs":{},"转":{"docs":{},"换":{"docs":{},"为":{"docs":{},"纯":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"i":{"docs":{},"i":{"docs":{},"码":{"docs":{},",":{"docs":{},"并":{"docs":{},"且":{"docs":{},"移":{"docs":{},"除":{"docs":{},"任":{"docs":{},"何":{"docs":{},"单":{"docs":{},"引":{"docs":{},"号":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},":":{"docs":{},"”":{"docs":{},"m":{"docs":{},"ü":{"docs":{},"l":{"docs":{},"l":{"docs":{},"e":{"docs":{},"r":{"docs":{},"’":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"这":{"docs":{},"个":{"docs":{},"结":{"docs":{},"果":{"docs":{},"切":{"docs":{},"分":{"docs":{},"成":{"docs":{},"单":{"docs":{},"词":{"docs":{},",":{"docs":{},"在":{"docs":{},"空":{"docs":{},"格":{"docs":{},"或":{"docs":{},"其":{"docs":{},"它":{"docs":{},"标":{"docs":{},"点":{"docs":{},"符":{"docs":{},"号":{"docs":{},"(":{"docs":{},"通":{"docs":{},"常":{"docs":{},"是":{"docs":{},"连":{"docs":{},"字":{"docs":{},"符":{"docs":{},")":{"docs":{},"处":{"docs":{},"分":{"docs":{},"割":{"docs":{},"开":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"捕":{"docs":{},"获":{"docs":{},"的":{"docs":{},"异":{"docs":{},"常":{"docs":{},":":{"docs":{},"不":{"docs":{},"能":{"docs":{},"忽":{"docs":{},"视":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}},"提":{"docs":{},"取":{"docs":{},"方":{"docs":{},"法":{"docs":{},"或":{"docs":{},"局":{"docs":{},"部":{"docs":{},"变":{"docs":{},"量":{"docs":{},"可":{"docs":{},"以":{"docs":{},"在":{"docs":{},"不":{"docs":{},"换":{"docs":{},"行":{"docs":{},"的":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},"解":{"docs":{},"决":{"docs":{},"代":{"docs":{},"码":{"docs":{},"过":{"docs":{},"长":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},"(":{"docs":{},"是":{"docs":{},"合":{"docs":{},"理":{"docs":{},"缩":{"docs":{},"短":{"docs":{},"命":{"docs":{},"名":{"docs":{},"长":{"docs":{},"度":{"docs":{},"吧":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"摘":{"docs":{},"要":{"docs":{},"片":{"docs":{},"段":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"术":{"docs":{},"语":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"可":{"docs":{},"表":{"docs":{},"示":{"docs":{},"一":{"docs":{},"个":{"docs":{},"普":{"docs":{},"通":{"docs":{},"类":{"docs":{},",":{"docs":{},"枚":{"docs":{},"举":{"docs":{},"类":{"docs":{},",":{"docs":{},"接":{"docs":{},"口":{"docs":{},"或":{"docs":{},"是":{"docs":{},"a":{"docs":{},"n":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"类":{"docs":{},"型":{"docs":{},"(":{"docs":{},"@":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"m":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"只":{"docs":{},"用":{"docs":{},"来":{"docs":{},"指":{"docs":{},"代":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},"注":{"docs":{},"释":{"docs":{},"(":{"docs":{},"i":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"说":{"docs":{},"明":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},":":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"块":{"docs":{},"的":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"内":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"或":{"docs":{},"多":{"docs":{},"个":{"docs":{},"语":{"docs":{},"句":{"docs":{},"组":{"docs":{},"。":{"docs":{},"每":{"docs":{},"个":{"docs":{},"语":{"docs":{},"句":{"docs":{},"组":{"docs":{},"包":{"docs":{},"含":{"docs":{},"一":{"docs":{},"个":{"docs":{},"或":{"docs":{},"多":{"docs":{},"个":{"docs":{},"s":{"docs":{},"w":{"docs":{},"i":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},"标":{"docs":{},"签":{"docs":{},"(":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"一":{"docs":{},"般":{"docs":{},"情":{"docs":{},"况":{"docs":{},"下":{"docs":{},",":{"docs":{},"一":{"docs":{},"行":{"docs":{},"长":{"docs":{},"代":{"docs":{},"码":{"docs":{},"为":{"docs":{},"了":{"docs":{},"避":{"docs":{},"免":{"docs":{},"超":{"docs":{},"出":{"docs":{},"列":{"docs":{},"限":{"docs":{},"制":{"docs":{},"(":{"8":{"0":{"docs":{},"或":{"1":{"0":{"0":{"docs":{},"个":{"docs":{},"字":{"docs":{},"符":{"docs":{},")":{"docs":{},"而":{"docs":{},"被":{"docs":{},"分":{"docs":{},"为":{"docs":{},"多":{"docs":{},"行":{"docs":{},",":{"docs":{},"我":{"docs":{},"们":{"docs":{},"称":{"docs":{},"之":{"docs":{},"为":{"docs":{},"自":{"docs":{},"动":{"docs":{},"换":{"docs":{},"行":{"docs":{},"(":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"e":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}},"块":{"docs":{},"状":{"docs":{},"结":{"docs":{},"构":{"docs":{},"(":{"docs":{},"b":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"k":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}},"水":{"docs":{},"平":{"docs":{},"对":{"docs":{},"齐":{"docs":{},"指":{"docs":{},"的":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"增":{"docs":{},"加":{"docs":{},"可":{"docs":{},"变":{"docs":{},"数":{"docs":{},"量":{"docs":{},"的":{"docs":{},"空":{"docs":{},"格":{"docs":{},"来":{"docs":{},"使":{"docs":{},"某":{"docs":{},"一":{"docs":{},"行":{"docs":{},"的":{"docs":{},"字":{"docs":{},"符":{"docs":{},"与":{"docs":{},"上":{"docs":{},"一":{"docs":{},"行":{"docs":{},"的":{"docs":{},"相":{"docs":{},"应":{"docs":{},"字":{"docs":{},"符":{"docs":{},"对":{"docs":{},"齐":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"极":{"docs":{},"少":{"docs":{},"会":{"docs":{},"去":{"docs":{},"重":{"docs":{},"载":{"docs":{},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},".":{"docs":{},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"z":{"docs":{},"e":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}},"段":{"docs":{},"落":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"水":{"docs":{},"平":{"docs":{},"对":{"docs":{},"齐":{"docs":{},":":{"docs":{},"不":{"docs":{},"做":{"docs":{},"要":{"docs":{},"求":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}},"空":{"docs":{},"白":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"永":{"docs":{},"远":{"docs":{},"不":{"docs":{},"要":{"docs":{},"由":{"docs":{},"于":{"docs":{},"害":{"docs":{},"怕":{"docs":{},"某":{"docs":{},"些":{"docs":{},"程":{"docs":{},"序":{"docs":{},"可":{"docs":{},"能":{"docs":{},"无":{"docs":{},"法":{"docs":{},"正":{"docs":{},"确":{"docs":{},"处":{"docs":{},"理":{"docs":{},"非":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"i":{"docs":{},"i":{"docs":{},"字":{"docs":{},"符":{"docs":{},"而":{"docs":{},"让":{"docs":{},"你":{"docs":{},"的":{"docs":{},"代":{"docs":{},"码":{"docs":{},"可":{"docs":{},"读":{"docs":{},"性":{"docs":{},"变":{"docs":{},"差":{"docs":{},"。":{"docs":{},"当":{"docs":{},"程":{"docs":{},"序":{"docs":{},"无":{"docs":{},"法":{"docs":{},"正":{"docs":{},"确":{"docs":{},"处":{"docs":{},"理":{"docs":{},"非":{"docs":{},"a":{"docs":{},"s":{"docs":{},"c":{"docs":{},"i":{"docs":{},"i":{"docs":{},"字":{"docs":{},"符":{"docs":{},"时":{"docs":{},",":{"docs":{},"它":{"docs":{},"自":{"docs":{},"然":{"docs":{},"无":{"docs":{},"法":{"docs":{},"正":{"docs":{},"确":{"docs":{},"运":{"docs":{},"行":{"docs":{},",":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"特":{"docs":{},"殊":{"docs":{},"字":{"docs":{},"符":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"转":{"docs":{},"义":{"docs":{},"序":{"docs":{},"列":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}},"说":{"docs":{},"明":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}},"禁":{"docs":{},"用":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"空":{"docs":{},"块":{"docs":{},":":{"docs":{},"可":{"docs":{},"以":{"docs":{},"用":{"docs":{},"简":{"docs":{},"洁":{"docs":{},"版":{"docs":{},"本":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}},"白":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"字":{"docs":{},"符":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}},"行":{"docs":{},"(":{"docs":{},"即":{"docs":{},",":{"docs":{},"只":{"docs":{},"包":{"docs":{},"含":{"docs":{},"最":{"docs":{},"左":{"docs":{},"侧":{"docs":{},"星":{"docs":{},"号":{"docs":{},"的":{"docs":{},"行":{"docs":{},")":{"docs":{},"会":{"docs":{},"出":{"docs":{},"现":{"docs":{},"在":{"docs":{},"段":{"docs":{},"落":{"docs":{},"之":{"docs":{},"间":{"docs":{},"和":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},"标":{"docs":{},"记":{"docs":{},"(":{"docs":{},"@":{"docs":{},"x":{"docs":{},"x":{"docs":{},"x":{"docs":{},")":{"docs":{},"之":{"docs":{},"前":{"docs":{},"(":{"docs":{},"如":{"docs":{},"果":{"docs":{},"有":{"docs":{},"的":{"docs":{},"话":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"组":{"docs":{},"内":{"docs":{},"不":{"docs":{},"空":{"docs":{},"行":{"docs":{},",":{"docs":{},"按":{"docs":{},"字":{"docs":{},"典":{"docs":{},"序":{"docs":{},"排":{"docs":{},"列":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}},"件":{"docs":{},"来":{"docs":{},"实":{"docs":{},"现":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}},"缩":{"docs":{},"进":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"考":{"docs":{},"虑":{"docs":{},"它":{"docs":{},"是":{"docs":{},"否":{"docs":{},"真":{"docs":{},"的":{"docs":{},"感":{"docs":{},"觉":{"docs":{},"像":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"常":{"docs":{},"量":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},",":{"docs":{},"如":{"docs":{},"果":{"docs":{},"任":{"docs":{},"何":{"docs":{},"一":{"docs":{},"个":{"docs":{},"该":{"docs":{},"实":{"docs":{},"例":{"docs":{},"的":{"docs":{},"观":{"docs":{},"测":{"docs":{},"状":{"docs":{},"态":{"docs":{},"是":{"docs":{},"可":{"docs":{},"变":{"docs":{},"的":{"docs":{},",":{"docs":{},"则":{"docs":{},"它":{"docs":{},"几":{"docs":{},"乎":{"docs":{},"肯":{"docs":{},"定":{"docs":{},"不":{"docs":{},"会":{"docs":{},"是":{"docs":{},"一":{"docs":{},"个":{"docs":{},"常":{"docs":{},"量":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"至":{"docs":{},"少":{"docs":{},"在":{"docs":{},"每":{"docs":{},"个":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"类":{"docs":{},"及":{"docs":{},"它":{"docs":{},"的":{"docs":{},"每":{"docs":{},"个":{"docs":{},"p":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{},"i":{"docs":{},"c":{"docs":{},"和":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"成":{"docs":{},"员":{"docs":{},"处":{"docs":{},"使":{"docs":{},"用":{"docs":{},"j":{"docs":{},"a":{"docs":{},"v":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"c":{"docs":{},",":{"docs":{},"以":{"docs":{},"下":{"docs":{},"是":{"docs":{},"一":{"docs":{},"些":{"docs":{},"例":{"docs":{},"外":{"docs":{},":":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"许":{"docs":{},"可":{"docs":{},"证":{"docs":{},"或":{"docs":{},"版":{"docs":{},"权":{"docs":{},"信":{"docs":{},"息":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}},"(":{"docs":{},"如":{"docs":{},"有":{"docs":{},"需":{"docs":{},"要":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}},"赞":{"docs":{},",":{"docs":{},"即":{"docs":{},"使":{"docs":{},"没":{"docs":{},"有":{"docs":{},"注":{"docs":{},"释":{"docs":{},"也":{"docs":{},"非":{"docs":{},"常":{"docs":{},"清":{"docs":{},"晰":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}},"逗":{"docs":{},"号":{"docs":{},"(":{"docs":{},",":{"docs":{},")":{"docs":{},"与":{"docs":{},"其":{"docs":{},"前":{"docs":{},"面":{"docs":{},"的":{"docs":{},"内":{"docs":{},"容":{"docs":{},"留":{"docs":{},"在":{"docs":{},"同":{"docs":{},"一":{"docs":{},"行":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}},"重":{"docs":{},"载":{"docs":{},":":{"docs":{},"永":{"docs":{},"不":{"docs":{},"分":{"docs":{},"离":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}},"定":{"docs":{},"向":{"docs":{},"到":{"docs":{},"其":{"docs":{},"它":{"docs":{},"地":{"docs":{},"方":{"docs":{},"。":{"docs":{},"它":{"docs":{},"让":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"再":{"docs":{},"发":{"docs":{},"起":{"docs":{},"一":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"以":{"docs":{},"完":{"docs":{},"成":{"docs":{},"整":{"docs":{},"个":{"docs":{},"处":{"docs":{},"理":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"顺":{"docs":{},"序":{"docs":{},"和":{"docs":{},"间":{"docs":{},"距":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}},"风":{"docs":{},"格":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}},"驼":{"docs":{},"峰":{"docs":{},"式":{"docs":{},"命":{"docs":{},"名":{"docs":{},"法":{"docs":{},"(":{"docs":{},"c":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}},"分":{"docs":{},"大":{"docs":{},"驼":{"docs":{},"峰":{"docs":{},"式":{"docs":{},"命":{"docs":{},"名":{"docs":{},"法":{"docs":{},"(":{"docs":{},"u":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{},"和":{"docs":{},"小":{"docs":{},"驼":{"docs":{},"峰":{"docs":{},"式":{"docs":{},"命":{"docs":{},"名":{"docs":{},"法":{"docs":{},"(":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"l":{"docs":{},"c":{"docs":{},"a":{"docs":{},"s":{"docs":{},"e":{"docs":{},")":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"即":{"docs":{},"使":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"内":{"docs":{},"没":{"docs":{},"内":{"docs":{},"容":{"docs":{},",":{"docs":{},"右":{"docs":{},"大":{"docs":{},"括":{"docs":{},"号":{"docs":{},"也":{"docs":{},"要":{"docs":{},"换":{"docs":{},"行":{"docs":{},"。":{"docs":{"user_guide/google-java8-guide.html":{"ref":"user_guide/google-java8-guide.html","tf":0.0012048192771084338}}}}}}}}}}}}}}}}}}}}}},"成":{"docs":{},"功":{"docs":{},"率":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}},"次":{"docs":{},"处":{"docs":{},"理":{"docs":{},":":{"docs":{},"表":{"docs":{},"示":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"后":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}},"结":{"docs":{},"果":{"docs":{},"分":{"docs":{},"析":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}},"说":{"docs":{},"明":{"docs":{},":":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}},"合":{"docs":{},"c":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"中":{"docs":{},"间":{"docs":{},"件":{"docs":{},",":{"docs":{},"实":{"docs":{},"现":{"docs":{},"的":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{},"可":{"docs":{},"以":{"docs":{},"很":{"docs":{},"好":{"docs":{},"的":{"docs":{},"模":{"docs":{},"拟":{"docs":{},"s":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"会":{"docs":{},"话":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"说":{"docs":{},"明":{"docs":{},"在":{"docs":{},"上":{"docs":{},"面":{"docs":{},"的":{"docs":{},"测":{"docs":{},"试":{"docs":{},"中":{"docs":{},"运":{"docs":{},"行":{"docs":{},"了":{"2":{"9":{"4":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},",":{"docs":{},"最":{"docs":{},"大":{"docs":{},"的":{"docs":{},"并":{"docs":{},"发":{"docs":{},"进":{"docs":{},"程":{"docs":{},"数":{"docs":{},"是":{"3":{"0":{"docs":{},",":{"docs":{},"总":{"docs":{},"计":{"docs":{},"传":{"docs":{},"输":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"是":{"3":{"docs":{},".":{"8":{"3":{"8":{"3":{"5":{"docs":{},"e":{"docs":{},"+":{"0":{"6":{"docs":{},"b":{"docs":{},"y":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},",":{"docs":{},"运":{"docs":{},"行":{"docs":{},"的":{"docs":{},"时":{"docs":{},"间":{"docs":{},"是":{"6":{"0":{"docs":{},".":{"0":{"0":{"2":{"6":{"docs":{},"秒":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}}}}}}}}}}}}},"docs":{}},"docs":{}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}}}}}}}}}},"docs":{}},"docs":{}}}}}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}},"打":{"docs":{},"开":{"docs":{},"响":{"docs":{},"应":{"docs":{},"页":{"docs":{},"面":{"docs":{},"的":{"docs":{},"类":{"docs":{},"型":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}},"每":{"docs":{},"一":{"docs":{},"连":{"docs":{},"接":{"docs":{},"平":{"docs":{},"均":{"docs":{},"传":{"docs":{},"输":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"量":{"3":{"docs":{},".":{"8":{"3":{"8":{"3":{"5":{"docs":{},"e":{"docs":{},"+":{"0":{"6":{"docs":{},"/":{"2":{"9":{"4":{"docs":{},"=":{"1":{"3":{"0":{"5":{"5":{"docs":{},".":{"6":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}}}}}}}}}}},"秒":{"docs":{},"的":{"docs":{},"响":{"docs":{},"应":{"docs":{},"请":{"docs":{},"求":{"docs":{},"为":{"4":{"docs":{},".":{"8":{"9":{"9":{"7":{"9":{"docs":{},",":{"docs":{},"每":{"docs":{},"秒":{"docs":{},"传":{"docs":{},"递":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"为":{"6":{"3":{"9":{"6":{"9":{"docs":{},".":{"7":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}}}}}}},"连":{"docs":{},"接":{"docs":{},"的":{"docs":{},"平":{"docs":{},"均":{"docs":{},"响":{"docs":{},"应":{"docs":{},"时":{"docs":{},"间":{"docs":{},"是":{"3":{"1":{"2":{"docs":{},".":{"0":{"0":{"9":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}}}}}}}}}}},"这":{"docs":{},"个":{"docs":{},"概":{"docs":{},"念":{"docs":{},"的":{"docs":{},"⽜":{"docs":{},"牛":{"docs":{},"逼":{"docs":{},"之":{"docs":{},"处":{"docs":{},",":{"docs":{},"想":{"docs":{},"象":{"docs":{},"一":{"docs":{},"个":{"docs":{},"超":{"docs":{},"级":{"docs":{},"重":{"docs":{},"构":{"docs":{},",":{"docs":{},"把":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"从":{"docs":{},"j":{"docs":{},"s":{"docs":{},"p":{"docs":{},"换":{"docs":{},"成":{"docs":{},"j":{"docs":{},"s":{"docs":{},"f":{"docs":{},"。":{"docs":{},"假":{"docs":{},"设":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"和":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"的":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"联":{"docs":{},"系":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"还":{"docs":{},"可":{"docs":{},"以":{"docs":{},"测":{"docs":{},"试":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},"类":{"docs":{},"的":{"docs":{},"网":{"docs":{},"站":{"docs":{},"请":{"docs":{},"求":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}}}}}}}},":":{"docs":{},"含":{"docs":{},"义":{"docs":{},"是":{"docs":{},"并":{"docs":{},"发":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"进":{"docs":{},"程":{"docs":{},"数":{"docs":{},"。":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}},"总":{"docs":{},"计":{"docs":{},"的":{"docs":{},"访":{"docs":{},"问":{"docs":{},"时":{"docs":{},"间":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}},"次":{"docs":{},"数":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}},"每":{"docs":{},"秒":{"docs":{},"的":{"docs":{},"访":{"docs":{},"问":{"docs":{},"频":{"docs":{},"率":{"docs":{"web/test_tool.html":{"ref":"web/test_tool.html","tf":0.0035842293906810036}}}}}}}}}}}}},"�":{"docs":{},"�":{"docs":{"learn_server/":{"ref":"learn_server/","tf":0.045454545454545456}}}},"“":{"1":{"2":{"docs":{},":":{"3":{"0":{"docs":{},"之":{"docs":{},"前":{"docs":{},"送":{"docs":{},"过":{"docs":{},"来":{"docs":{},"”":{"docs":{},",":{"docs":{},"你":{"docs":{},"叫":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{},"张":{"docs":{},"三":{"docs":{},"丰":{"docs":{},"”":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}},"①":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.01020408163265306}}},"②":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.01020408163265306}}},"③":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}},"④":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.01020408163265306}}},"⑤":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}},"关":{"docs":{},"于":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{},"的":{"docs":{},"说":{"docs":{},"明":{"docs":{},",":{"docs":{},"你":{"docs":{},"可":{"docs":{},"以":{"docs":{},"参":{"docs":{},"见":{"docs":{},":":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"e":{"docs":{},"n":{"docs":{},".":{"docs":{},"w":{"docs":{},"i":{"docs":{},"k":{"docs":{},"i":{"docs":{},"p":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"a":{"docs":{},".":{"docs":{},"o":{"docs":{},"r":{"docs":{},"g":{"docs":{},"/":{"docs":{},"w":{"docs":{},"i":{"docs":{},"k":{"docs":{},"i":{"docs":{},"/":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"_":{"docs":{},"e":{"docs":{},"t":{"docs":{},"a":{"docs":{},"g":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"键":{"docs":{},"概":{"docs":{},"念":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}},"告":{"docs":{},"诉":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},",":{"docs":{},"你":{"docs":{},"请":{"docs":{},"求":{"docs":{},"的":{"docs":{},"这":{"docs":{},"个":{"docs":{},"资":{"docs":{},"源":{"docs":{},"至":{"docs":{},"你":{"docs":{},"上":{"docs":{},"次":{"docs":{},"取":{"docs":{},"得":{"docs":{},"后":{"docs":{},",":{"docs":{},"并":{"docs":{},"没":{"docs":{},"有":{"docs":{},"更":{"docs":{},"改":{"docs":{},",":{"docs":{},"你":{"docs":{},"直":{"docs":{},"接":{"docs":{},"用":{"docs":{},"你":{"docs":{},"本":{"docs":{},"地":{"docs":{},"的":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"吧":{"docs":{},",":{"docs":{},"我":{"docs":{},"很":{"docs":{},"忙":{"docs":{},"哦":{"docs":{},",":{"docs":{},"你":{"docs":{},"能":{"docs":{},"不":{"docs":{},"能":{"docs":{},"少":{"docs":{},"来":{"docs":{},"烦":{"docs":{},"我":{"docs":{},"啊":{"docs":{},"!":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"哈":{"docs":{},")":{"docs":{},":":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}},"响":{"docs":{},"应":{"docs":{},"报":{"docs":{},"文":{"docs":{},"体":{"docs":{},",":{"docs":{},"即":{"docs":{},"我":{"docs":{},"们":{"docs":{},"真":{"docs":{},"正":{"docs":{},"要":{"docs":{},"的":{"docs":{},"“":{"docs":{},"干":{"docs":{},"货":{"docs":{},"”":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}},"头":{"docs":{},",":{"docs":{},"也":{"docs":{},"是":{"docs":{},"由":{"docs":{},"多":{"docs":{},"个":{"docs":{},"属":{"docs":{},"性":{"docs":{},"组":{"docs":{},"成":{"docs":{},";":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}},"结":{"docs":{},"构":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}},"状":{"docs":{},"态":{"docs":{},"码":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}},"输":{"docs":{},"出":{"docs":{},"到":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"后":{"docs":{},",":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"通":{"docs":{},"过":{"docs":{},"该":{"docs":{},"报":{"docs":{},"文":{"docs":{},"头":{"docs":{},"属":{"docs":{},"告":{"docs":{},"诉":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"如":{"docs":{},"何":{"docs":{},"控":{"docs":{},"制":{"docs":{},"响":{"docs":{},"应":{"docs":{},"内":{"docs":{},"容":{"docs":{},"的":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"唐":{"docs":{},"僧":{"docs":{},":":{"docs":{},"我":{"docs":{},"哪":{"docs":{},"有":{"docs":{},"桃":{"docs":{},"啊":{"docs":{},"!":{"docs":{},"去":{"docs":{},"王":{"docs":{},"母":{"docs":{},"娘":{"docs":{},"娘":{"docs":{},"那":{"docs":{},"找":{"docs":{},"吧":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}},"处":{"docs":{},"理":{"docs":{},"发":{"docs":{},"生":{"docs":{},"错":{"docs":{},"误":{"docs":{},",":{"docs":{},"责":{"docs":{},"任":{"docs":{},"在":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},",":{"docs":{},"如":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"一":{"docs":{},"个":{"docs":{},"不":{"docs":{},"存":{"docs":{},"在":{"docs":{},"的":{"docs":{},"资":{"docs":{},"源":{"docs":{},",":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},"未":{"docs":{},"被":{"docs":{},"授":{"docs":{},"权":{"docs":{},",":{"docs":{},"禁":{"docs":{},"止":{"docs":{},"访":{"docs":{},"问":{"docs":{},"等":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"责":{"docs":{},"任":{"docs":{},"在":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},",":{"docs":{},"如":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{},"抛":{"docs":{},"出":{"docs":{},"异":{"docs":{},"常":{"docs":{},",":{"docs":{},"路":{"docs":{},"由":{"docs":{},"出":{"docs":{},"错":{"docs":{},",":{"docs":{},"h":{"docs":{},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"版":{"docs":{},"本":{"docs":{},"不":{"docs":{},"支":{"docs":{},"持":{"docs":{},"等":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"成":{"docs":{},"功":{"docs":{},",":{"docs":{},"一":{"docs":{},"般":{"docs":{},"表":{"docs":{},"示":{"docs":{},":":{"docs":{},"请":{"docs":{},"求":{"docs":{},"收":{"docs":{},"悉":{"docs":{},"、":{"docs":{},"我":{"docs":{},"明":{"docs":{},"白":{"docs":{},"你":{"docs":{},"要":{"docs":{},"的":{"docs":{},"、":{"docs":{},"请":{"docs":{},"求":{"docs":{},"已":{"docs":{},"受":{"docs":{},"理":{"docs":{},"、":{"docs":{},"已":{"docs":{},"经":{"docs":{},"处":{"docs":{},"理":{"docs":{},"完":{"docs":{},"成":{"docs":{},"等":{"docs":{},"信":{"docs":{},"息":{"docs":{},".":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"快":{"docs":{},"到":{"docs":{},"中":{"docs":{},"午":{"docs":{},"了":{"docs":{},",":{"docs":{},"张":{"docs":{},"三":{"docs":{},"丰":{"docs":{},"不":{"docs":{},"想":{"docs":{},"去":{"docs":{},"食":{"docs":{},"堂":{"docs":{},"吃":{"docs":{},"饭":{"docs":{},",":{"docs":{},"于":{"docs":{},"是":{"docs":{},"打":{"docs":{},"电":{"docs":{},"话":{"docs":{},"叫":{"docs":{},"外":{"docs":{},"卖":{"docs":{},":":{"docs":{},"老":{"docs":{},"板":{"docs":{},",":{"docs":{},"我":{"docs":{},"要":{"docs":{},"一":{"docs":{},"份":{"docs":{},"[":{"docs":{},"鱼":{"docs":{},"香":{"docs":{},"肉":{"docs":{},"丝":{"docs":{},"]":{"docs":{},",":{"docs":{},"要":{"1":{"2":{"docs":{},":":{"3":{"0":{"docs":{},"之":{"docs":{},"前":{"docs":{},"给":{"docs":{},"我":{"docs":{},"送":{"docs":{},"过":{"docs":{},"来":{"docs":{},"哦":{"docs":{},",":{"docs":{},"我":{"docs":{},"在":{"docs":{},"江":{"docs":{},"湖":{"docs":{},"湖":{"docs":{},"公":{"docs":{},"司":{"docs":{},"研":{"docs":{},"发":{"docs":{},"部":{"docs":{},",":{"docs":{},"叫":{"docs":{},"张":{"docs":{},"三":{"docs":{},"丰":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}},"docs":{}},"docs":{}}},"docs":{}},"docs":{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"悟":{"docs":{},"空":{"docs":{},":":{"docs":{},"师":{"docs":{},"傅":{"docs":{},"给":{"docs":{},"个":{"docs":{},"桃":{"docs":{},"吧":{"docs":{},",":{"docs":{},"走":{"docs":{},"了":{"docs":{},"一":{"docs":{},"天":{"docs":{},"了":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}},"报":{"docs":{},"文":{"docs":{},"协":{"docs":{},"议":{"docs":{},"及":{"docs":{},"版":{"docs":{},"本":{"docs":{},";":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}},"头":{"docs":{},"属":{"docs":{},"性":{"docs":{},"告":{"docs":{},"诉":{"docs":{},"服":{"docs":{},"务":{"docs":{},"端":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}},"是":{"docs":{},"什":{"docs":{},"么":{"docs":{},"东":{"docs":{},"西":{"docs":{},"呢":{"docs":{},"?":{"docs":{},"我":{"docs":{},"们":{"docs":{},"不":{"docs":{},"妨":{"docs":{},"以":{"docs":{},"一":{"docs":{},"个":{"docs":{},"小":{"docs":{},"故":{"docs":{},"事":{"docs":{},"来":{"docs":{},"说":{"docs":{},"明":{"docs":{},"吧":{"docs":{},"。":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"消":{"docs":{},"息":{"docs":{},",":{"docs":{},"一":{"docs":{},"般":{"docs":{},"是":{"docs":{},"告":{"docs":{},"诉":{"docs":{},"客":{"docs":{},"户":{"docs":{},"端":{"docs":{},",":{"docs":{},"请":{"docs":{},"求":{"docs":{},"已":{"docs":{},"经":{"docs":{},"收":{"docs":{},"到":{"docs":{},"了":{"docs":{},",":{"docs":{},"正":{"docs":{},"在":{"docs":{},"处":{"docs":{},"理":{"docs":{},",":{"docs":{},"别":{"docs":{},"急":{"docs":{},".":{"docs":{},".":{"docs":{},".":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"队":{"docs":{},"列":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}},"可":{"docs":{},"以":{"docs":{},"解":{"docs":{},"决":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},"/":{"docs":{},"模":{"docs":{},"块":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"耦":{"docs":{},"合":{"docs":{},",":{"docs":{},"实":{"docs":{},"现":{"docs":{},"异":{"docs":{},"步":{"docs":{},",":{"docs":{},"高":{"docs":{},"可":{"docs":{},"用":{"docs":{},",":{"docs":{},"高":{"docs":{},"性":{"docs":{},"能":{"docs":{},"的":{"docs":{},"系":{"docs":{},"统":{"docs":{},"。":{"docs":{},"是":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"系":{"docs":{},"统":{"docs":{},"的":{"docs":{},"标":{"docs":{},"准":{"docs":{},"配":{"docs":{},"置":{"docs":{},"。":{"docs":{},"本":{"docs":{},"案":{"docs":{},"例":{"docs":{},"中":{"docs":{},",":{"docs":{},"消":{"docs":{},"息":{"docs":{},"队":{"docs":{},"列":{"docs":{},"主":{"docs":{},"要":{"docs":{},"应":{"docs":{},"用":{"docs":{},"在":{"docs":{},"购":{"docs":{},"物":{"docs":{},",":{"docs":{},"配":{"docs":{},"送":{"docs":{},"环":{"docs":{},"节":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"状":{"docs":{},"态":{"docs":{},"码":{"docs":{},"及":{"docs":{},"状":{"docs":{},"态":{"docs":{},"描":{"docs":{},"述":{"docs":{},";":{"docs":{"articles/request_message.html":{"ref":"articles/request_message.html","tf":0.00510204081632653}}}}}}}}}}},"⼼":{"docs":{},"心":{"docs":{},"要":{"docs":{},"展":{"docs":{},"示":{"docs":{},"在":{"docs":{},"屏":{"docs":{},"幕":{"docs":{},"上":{"docs":{},"的":{"docs":{},"用":{"docs":{},"户":{"docs":{},"数":{"docs":{},"据":{"docs":{},"格":{"docs":{},"式":{"docs":{},",":{"docs":{},"也":{"docs":{},"不":{"docs":{},"关":{"docs":{},"⼼":{"docs":{},"心":{"docs":{},"这":{"docs":{},"些":{"docs":{},"用":{"docs":{},"户":{"docs":{},"数":{"docs":{},"据":{"docs":{},"从":{"docs":{},"哪":{"docs":{},"里":{"docs":{},"来":{"docs":{},"。":{"docs":{},"它":{"docs":{},"只":{"docs":{},"需":{"docs":{},"要":{"docs":{},"从":{"docs":{},"持":{"docs":{},"久":{"docs":{},"层":{"docs":{},"得":{"docs":{},"到":{"docs":{},"数":{"docs":{},"据":{"docs":{},",":{"docs":{},"执":{"docs":{},"行":{"docs":{},"与":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"个":{"docs":{},"例":{"docs":{},"子":{"docs":{},",":{"docs":{},"从":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"传":{"docs":{},"递":{"docs":{},"来":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"⾸":{"docs":{},"首":{"docs":{},"先":{"docs":{},"会":{"docs":{},"传":{"docs":{},"递":{"docs":{},"到":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},",":{"docs":{},"然":{"docs":{},"后":{"docs":{},"传":{"docs":{},"递":{"docs":{},"到":{"docs":{},"持":{"docs":{},"久":{"docs":{},"层":{"docs":{},",":{"docs":{},"最":{"docs":{},"后":{"docs":{},"才":{"docs":{},"传":{"docs":{},"递":{"docs":{},"到":{"docs":{},"数":{"docs":{},"据":{"docs":{},"层":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"请":{"docs":{},"求":{"docs":{},"传":{"docs":{},"递":{"docs":{},"给":{"docs":{},"了":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},",":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"也":{"docs":{},"只":{"docs":{},"是":{"docs":{},"传":{"docs":{},"递":{"docs":{},"了":{"docs":{},"这":{"docs":{},"个":{"docs":{},"请":{"docs":{},"求":{"docs":{},"到":{"docs":{},"持":{"docs":{},"久":{"docs":{},"层":{"docs":{},",":{"docs":{},"持":{"docs":{},"久":{"docs":{},"层":{"docs":{},"对":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"做":{"docs":{},"简":{"docs":{},"单":{"docs":{},"的":{"docs":{},"s":{"docs":{},"q":{"docs":{},"l":{"docs":{},"查":{"docs":{},"询":{"docs":{},"获":{"docs":{},"得":{"docs":{},"用":{"docs":{},"户":{"docs":{},"的":{"docs":{},"数":{"docs":{},"据":{"docs":{},"。":{"docs":{},"这":{"docs":{},"个":{"docs":{},"数":{"docs":{},"据":{"docs":{},"按":{"docs":{},"照":{"docs":{},"原":{"docs":{},"理":{"docs":{},"返":{"docs":{},"回":{"docs":{},",":{"docs":{},"不":{"docs":{},"会":{"docs":{},"有":{"docs":{},"任":{"docs":{},"何":{"docs":{},"的":{"docs":{},"二":{"docs":{},"次":{"docs":{},"处":{"docs":{},"理":{"docs":{},",":{"docs":{},"返":{"docs":{},"回":{"docs":{},"到":{"docs":{},"界":{"docs":{},"面":{"docs":{},"上":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"些":{"docs":{},"层":{"docs":{},"。":{"docs":{},"如":{"docs":{},"表":{"1":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}},"docs":{}}}}}},"伸":{"docs":{},"缩":{"docs":{},"性":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}},"公":{"docs":{},"司":{"docs":{},"在":{"docs":{},"开":{"docs":{},"发":{"docs":{},"项":{"docs":{},"⺫":{"docs":{},"⽬":{"docs":{},"目":{"docs":{},"的":{"docs":{},"都":{"docs":{},"是":{"docs":{},"通":{"docs":{},"过":{"docs":{},"层":{"docs":{},"来":{"docs":{},"区":{"docs":{},"分":{"docs":{},"技":{"docs":{},"术":{"docs":{},"的":{"docs":{},",":{"docs":{},"这":{"docs":{},"种":{"docs":{},"模":{"docs":{},"式":{"docs":{},"对":{"docs":{},"于":{"docs":{},"⼤":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"的":{"docs":{},"商":{"docs":{},"业":{"docs":{},"项":{"docs":{},"目":{"docs":{},"开":{"docs":{},"发":{"docs":{},"来":{"docs":{},"说":{"docs":{},"都":{"docs":{},"很":{"docs":{},"合":{"docs":{},"适":{"docs":{},"。":{"docs":{},"公":{"docs":{},"司":{"docs":{},"的":{"docs":{},"组":{"docs":{},"织":{"docs":{},"架":{"docs":{},"构":{"docs":{},"和":{"docs":{},"他":{"docs":{},"们":{"docs":{},"软":{"docs":{},"件":{"docs":{},"架":{"docs":{},"构":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"联":{"docs":{},"系":{"docs":{},"被":{"docs":{},"戏":{"docs":{},"称":{"docs":{},"为":{"docs":{},"\"":{"docs":{},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"w":{"docs":{},"a":{"docs":{},"y":{"docs":{},"'":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"务":{"docs":{},"层":{"docs":{},"负":{"docs":{},"责":{"docs":{},"处":{"docs":{},"理":{"docs":{},"请":{"docs":{},"求":{"docs":{},"对":{"docs":{},"应":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"。":{"docs":{},"架":{"docs":{},"构":{"docs":{},"里":{"docs":{},"的":{"docs":{},"层":{"docs":{},"次":{"docs":{},"是":{"docs":{},"具":{"docs":{},"体":{"docs":{},"工":{"docs":{},"作":{"docs":{},"的":{"docs":{},"高":{"docs":{},"度":{"docs":{},"抽":{"docs":{},"象":{"docs":{},",":{"docs":{},"它":{"docs":{},"们":{"docs":{},"都":{"docs":{},"是":{"docs":{},"为":{"docs":{},"了":{"docs":{},"实":{"docs":{},"现":{"docs":{},"某":{"docs":{},"种":{"docs":{},"特":{"docs":{},"定":{"docs":{},"的":{"docs":{},"业":{"docs":{},"务":{"docs":{},"请":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"围":{"docs":{},"着":{"docs":{},"着":{"docs":{},"这":{"docs":{},"个":{"docs":{},"主":{"docs":{},"架":{"docs":{},"构":{"docs":{},"还":{"docs":{},"有":{"docs":{},"一":{"docs":{},"些":{"docs":{},"外":{"docs":{},"围":{"docs":{},"的":{"docs":{},"产":{"docs":{},"品":{"docs":{},"。":{"docs":{},"比":{"docs":{},"如":{"docs":{},"监":{"docs":{},"控":{"docs":{},"和":{"docs":{},"审":{"docs":{},"计":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}},"密":{"docs":{},",":{"docs":{},"这":{"docs":{},"样":{"docs":{},"很":{"docs":{},"难":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}},"尽":{"docs":{},"管":{"docs":{},"分":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},"没":{"docs":{},"有":{"docs":{},"规":{"docs":{},"定":{"docs":{},"自":{"docs":{},"⾝":{"docs":{},"身":{"docs":{},"要":{"docs":{},"分":{"docs":{},"成":{"docs":{},"几":{"docs":{},"层":{"docs":{},"几":{"docs":{},"种":{"docs":{},",":{"docs":{},"大":{"docs":{},"多":{"docs":{},"数":{"docs":{},"的":{"docs":{},"结":{"docs":{},"构":{"docs":{},"都":{"docs":{},"分":{"docs":{},"成":{"docs":{},"四":{"docs":{},"个":{"docs":{},"层":{"docs":{},"次":{"docs":{},":":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},",":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},",":{"docs":{},"持":{"docs":{},"久":{"docs":{},"层":{"docs":{},",":{"docs":{},"和":{"docs":{},"数":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"层":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}},"还":{"docs":{},"要":{"docs":{},"通":{"docs":{},"过":{"docs":{},"服":{"docs":{},"务":{"docs":{},"层":{"docs":{},"才":{"docs":{},"能":{"docs":{},"访":{"docs":{},"问":{"docs":{},"到":{"docs":{},"持":{"docs":{},"久":{"docs":{},"层":{"docs":{},",":{"docs":{},"这":{"docs":{},"一":{"docs":{},"点":{"docs":{},"也":{"docs":{},"不":{"docs":{},"合":{"docs":{},"理":{"docs":{},"。":{"docs":{},"这":{"docs":{},"是":{"docs":{},"分":{"docs":{},"层":{"docs":{},"架":{"docs":{},"构":{"docs":{},"中":{"docs":{},"的":{"docs":{},"老":{"docs":{},"问":{"docs":{},"题":{"docs":{},"了":{"docs":{},",":{"docs":{},"解":{"docs":{},"决":{"docs":{},"的":{"docs":{},"办":{"docs":{},"法":{"docs":{},"是":{"docs":{},"开":{"docs":{},"放":{"docs":{},"某":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"隔":{"docs":{},"离":{"docs":{},"就":{"docs":{},"是":{"docs":{},"说":{"docs":{},"架":{"docs":{},"构":{"docs":{},"中":{"docs":{},"的":{"docs":{},"某":{"docs":{},"一":{"docs":{},"层":{"docs":{},"的":{"docs":{},"改":{"docs":{},"变":{"docs":{},"不":{"docs":{},"会":{"docs":{},"影":{"docs":{},"响":{"docs":{},"到":{"docs":{},"其":{"docs":{},"他":{"docs":{},"层":{"docs":{},":":{"docs":{},"这":{"docs":{},"些":{"docs":{},"变":{"docs":{},"化":{"docs":{},"的":{"docs":{},"影":{"docs":{},"响":{"docs":{},"范":{"docs":{},"围":{"docs":{},"限":{"docs":{},"于":{"docs":{},"当":{"docs":{},"前":{"docs":{},"层":{"docs":{},"次":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"能":{"docs":{},"够":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"展":{"docs":{},"示":{"docs":{},"在":{"docs":{},"用":{"docs":{},"户":{"docs":{},"面":{"docs":{},"前":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}},"库":{"docs":{},"的":{"docs":{},"a":{"docs":{},"s":{"docs":{},"p":{"docs":{},"模":{"docs":{},"块":{"docs":{},"来":{"docs":{},"访":{"docs":{},"问":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"中":{"docs":{},"的":{"docs":{},"c":{"docs":{},"#":{"docs":{},"模":{"docs":{},"块":{"docs":{},",":{"docs":{},"用":{"docs":{},"a":{"docs":{},"d":{"docs":{},"o":{"docs":{},"来":{"docs":{},"实":{"docs":{},"现":{"docs":{},"用":{"docs":{},"户":{"docs":{},"和":{"docs":{},"订":{"docs":{},"单":{"docs":{},"数":{"docs":{},"据":{"docs":{},"的":{"docs":{},"访":{"docs":{},"问":{"docs":{},"模":{"docs":{},"块":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"存":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},":":{"docs":{},"读":{"docs":{},"取":{"docs":{},"消":{"docs":{},"息":{"docs":{},"队":{"docs":{},"列":{"docs":{},"信":{"docs":{},"息":{"docs":{},",":{"docs":{},"完":{"docs":{},"成":{"docs":{},"减":{"docs":{},"库":{"docs":{},"存":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}},"性":{"docs":{},"能":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}},"息":{"docs":{},"由":{"docs":{},"客":{"docs":{},"户":{"docs":{},"数":{"docs":{},"据":{"docs":{},"和":{"docs":{},"订":{"docs":{},"单":{"docs":{},"数":{"docs":{},"组":{"docs":{},"组":{"docs":{},"成":{"docs":{},"(":{"docs":{},"客":{"docs":{},"户":{"docs":{},"下":{"docs":{},"的":{"docs":{},"订":{"docs":{},"单":{"docs":{},")":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}},",":{"docs":{},"调":{"docs":{},"用":{"docs":{},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}},"据":{"docs":{},"库":{"docs":{},"层":{"docs":{},"。":{"docs":{},"如":{"docs":{},"表":{"1":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}},"docs":{}}}}}}},"整":{"docs":{},"体":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"性":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}},"易":{"docs":{},"于":{"docs":{},"部":{"docs":{},"署":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}},"开":{"docs":{},"发":{"docs":{},"性":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}},"构":{"docs":{},"里":{"docs":{},"各":{"docs":{},"种":{"docs":{},"层":{"docs":{},"之":{"docs":{},"间":{"docs":{},"的":{"docs":{},"访":{"docs":{},"问":{"docs":{},"限":{"docs":{},"制":{"docs":{},"。":{"docs":{},"如":{"docs":{},"果":{"docs":{},"随":{"docs":{},"意":{"docs":{},"的":{"docs":{},"开":{"docs":{},"放":{"docs":{},"或":{"docs":{},"者":{"docs":{},"封":{"docs":{},"闭":{"docs":{},"架":{"docs":{},"构":{"docs":{},"里":{"docs":{},"的":{"docs":{},"层":{"docs":{},",":{"docs":{},"整":{"docs":{},"个":{"docs":{},"项":{"docs":{},"目":{"docs":{},"可":{"docs":{},"能":{"docs":{},"都":{"docs":{},"是":{"docs":{},"紧":{"docs":{},"耦":{"docs":{},"合":{"docs":{},",":{"docs":{},"一":{"docs":{},"团":{"docs":{},"糟":{"docs":{},"的":{"docs":{},"。":{"docs":{},"以":{"docs":{},"后":{"docs":{},"也":{"docs":{},"难":{"docs":{},"以":{"docs":{},"测":{"docs":{},"试":{"docs":{},",":{"docs":{},"维":{"docs":{},"护":{"docs":{},"和":{"docs":{},"部":{"docs":{},"署":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"架":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{},"帮":{"docs":{},"助":{"docs":{},"你":{"docs":{},"定":{"docs":{},"义":{"docs":{},"应":{"docs":{},"用":{"docs":{},"程":{"docs":{},"序":{"docs":{},"的":{"docs":{},"基":{"docs":{},"本":{"docs":{},"特":{"docs":{},"征":{"docs":{},"和":{"docs":{},"行":{"docs":{},"为":{"docs":{},"。":{"docs":{},"例":{"docs":{},"如":{"docs":{},",":{"docs":{},"些":{"docs":{},"架":{"docs":{},"构":{"docs":{},"模":{"docs":{},"式":{"docs":{},"会":{"docs":{},"让":{"docs":{},"程":{"docs":{},"序":{"docs":{},"自":{"docs":{},"己":{"docs":{},"自":{"docs":{},"然":{"docs":{},"⽽":{"docs":{},"而":{"docs":{},"然":{"docs":{},"地":{"docs":{},"朝":{"docs":{},"着":{"docs":{},"具":{"docs":{},"有":{"docs":{},"良":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"总":{"docs":{},"结":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"求":{"docs":{},"。":{"docs":{},"比":{"docs":{},"如":{"docs":{},"说":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"并":{"docs":{},"不":{"docs":{},"需":{"docs":{},"要":{"docs":{},"关":{"docs":{},"⼼":{"docs":{},"心":{"docs":{},"怎":{"docs":{},"样":{"docs":{},"得":{"docs":{},"到":{"docs":{},"用":{"docs":{},"户":{"docs":{},"数":{"docs":{},"据":{"docs":{},",":{"docs":{},"它":{"docs":{},"只":{"docs":{},"需":{"docs":{},"在":{"docs":{},"屏":{"docs":{},"幕":{"docs":{},"上":{"docs":{},"以":{"docs":{},"特":{"docs":{},"定":{"docs":{},"的":{"docs":{},"格":{"docs":{},"式":{"docs":{},"展":{"docs":{},"示":{"docs":{},"信":{"docs":{},"息":{"docs":{},"。":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"并":{"docs":{},"不":{"docs":{},"关":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"污":{"docs":{},"水":{"docs":{},"池":{"docs":{},"反":{"docs":{},"模":{"docs":{},"式":{"docs":{},"(":{"docs":{},"a":{"docs":{},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}},"穿":{"docs":{},"过":{"docs":{},"层":{"docs":{},"次":{"docs":{},",":{"docs":{},"不":{"docs":{},"留":{"docs":{},"一":{"docs":{},"点":{"docs":{},"云":{"docs":{},"彩":{"docs":{},",":{"docs":{},"或":{"docs":{},"者":{"docs":{},"说":{"docs":{},"只":{"docs":{},"留":{"docs":{},"下":{"docs":{},"一":{"docs":{},"阵":{"docs":{},"⻘":{"docs":{},"青":{"docs":{},"烟":{"docs":{},"。":{"docs":{},"比":{"docs":{},"如":{"docs":{},"说":{"docs":{},"界":{"docs":{},"面":{"docs":{},"层":{"docs":{},"响":{"docs":{},"应":{"docs":{},"了":{"docs":{},"一":{"docs":{},"个":{"docs":{},"获":{"docs":{},"得":{"docs":{},"数":{"docs":{},"据":{"docs":{},"的":{"docs":{},"请":{"docs":{},"求":{"docs":{},"。":{"docs":{},"响":{"docs":{},"应":{"docs":{},"层":{"docs":{},"把":{"docs":{},"这":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"紧":{"docs":{},"耦":{"docs":{},"合":{"docs":{},",":{"docs":{},"组":{"docs":{},"件":{"docs":{},"之":{"docs":{},"间":{"docs":{},"互":{"docs":{},"相":{"docs":{},"依":{"docs":{},"赖":{"docs":{},"。":{"docs":{},"这":{"docs":{},"种":{"docs":{},"架":{"docs":{},"构":{"docs":{},"会":{"docs":{},"非":{"docs":{},"常":{"docs":{},"的":{"docs":{},"难":{"docs":{},"以":{"docs":{},"维":{"docs":{},"护":{"docs":{},"。":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}},"评":{"docs":{},"级":{"docs":{},":":{"docs":{},"低":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.027972027972027972}}},"容":{"docs":{},"易":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}},"高":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}},"辑":{"docs":{},"。":{"docs":{},"比":{"docs":{},"如":{"docs":{},"说":{"docs":{},",":{"docs":{},"展":{"docs":{},"示":{"docs":{},"层":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"只":{"docs":{},"会":{"docs":{},"处":{"docs":{},"理":{"docs":{},"展":{"docs":{},"示":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},",":{"docs":{},"业":{"docs":{},"务":{"docs":{},"层":{"docs":{},"中":{"docs":{},"的":{"docs":{},"组":{"docs":{},"件":{"docs":{},"只":{"docs":{},"会":{"docs":{},"去":{"docs":{},"处":{"docs":{},"理":{"docs":{},"业":{"docs":{},"务":{"docs":{},"逻":{"docs":{},"辑":{"docs":{},"。":{"docs":{},"多":{"docs":{},"亏":{"docs":{},"了":{"docs":{},"组":{"docs":{},"件":{"docs":{},"分":{"docs":{},"离":{"docs":{},",":{"docs":{},"让":{"docs":{"articles/software_architecture_patterns.html":{"ref":"articles/software_architecture_patterns.html","tf":0.006993006993006993}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"七":{"docs":{},"、":{"docs":{},"架":{"docs":{},"构":{"docs":{},"总":{"docs":{},"结":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}},"业":{"docs":{},"务":{"docs":{},"拆":{"docs":{},"分":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}},"作":{"docs":{},"用":{"docs":{},":":{"docs":{},"提":{"docs":{},"升":{"docs":{},"为":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},"可":{"docs":{},"由":{"docs":{},"专":{"docs":{},"门":{"docs":{},"的":{"docs":{},"团":{"docs":{},"队":{"docs":{},"和":{"docs":{},"部":{"docs":{},"门":{"docs":{},"负":{"docs":{},"责":{"docs":{},",":{"docs":{},"专":{"docs":{},"业":{"docs":{},"的":{"docs":{},"人":{"docs":{},"做":{"docs":{},"专":{"docs":{},"业":{"docs":{},"的":{"docs":{},"事":{"docs":{},",":{"docs":{},"解":{"docs":{},"决":{"docs":{},"模":{"docs":{},"块":{"docs":{},"之":{"docs":{},"间":{"docs":{},"耦":{"docs":{},"合":{"docs":{},"以":{"docs":{},"及":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"性":{"docs":{},"问":{"docs":{},"题":{"docs":{},";":{"docs":{},"每":{"docs":{},"个":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},"单":{"docs":{},"独":{"docs":{},"部":{"docs":{},"署":{"docs":{},",":{"docs":{},"避":{"docs":{},"免":{"docs":{},"集":{"docs":{},"中":{"docs":{},"部":{"docs":{},"署":{"docs":{},"导":{"docs":{},"致":{"docs":{},"一":{"docs":{},"个":{"docs":{},"应":{"docs":{},"用":{"docs":{},"挂":{"docs":{},"了":{"docs":{},",":{"docs":{},"全":{"docs":{},"部":{"docs":{},"应":{"docs":{},"用":{"docs":{},"不":{"docs":{},"可":{"docs":{},"用":{"docs":{},"的":{"docs":{},"问":{"docs":{},"题":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"后":{"docs":{},":":{"docs":{},"每":{"docs":{},"个":{"docs":{},"子":{"docs":{},"系":{"docs":{},"统":{"docs":{},"需":{"docs":{},"要":{"docs":{},"单":{"docs":{},"独":{"docs":{},"的":{"docs":{},"库":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}},"五":{"docs":{},"、":{"docs":{},"网":{"docs":{},"站":{"docs":{},"架":{"docs":{},"构":{"docs":{},"分":{"docs":{},"析":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"六":{"docs":{},"、":{"docs":{},"网":{"docs":{},"站":{"docs":{},"架":{"docs":{},"构":{"docs":{},"优":{"docs":{},"化":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"功":{"docs":{},"能":{"docs":{},"需":{"docs":{},"求":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"商":{"docs":{},"品":{"docs":{},"打":{"docs":{},"分":{"docs":{},"评":{"docs":{},"价":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"评":{"docs":{},"论":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"四":{"docs":{},"、":{"docs":{},"系":{"docs":{},"统":{"docs":{},"容":{"docs":{},"量":{"docs":{},"预":{"docs":{},"估":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"属":{"docs":{},"于":{"docs":{},"约":{"docs":{},"束":{"docs":{},"条":{"docs":{},"件":{"docs":{},"伸":{"docs":{},"缩":{"docs":{},"性":{"docs":{},",":{"docs":{},"可":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"性":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"对":{"docs":{},"接":{"docs":{},"时":{"docs":{},"要":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"数":{"docs":{},"据":{"docs":{},"一":{"docs":{},"致":{"docs":{},"性":{"docs":{},",":{"docs":{},"鲁":{"docs":{},"棒":{"docs":{},"性":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}},"峰":{"docs":{},"值":{"docs":{},"预":{"docs":{},"估":{"docs":{},":":{"docs":{},"平":{"docs":{},"常":{"docs":{},"量":{"docs":{},"的":{"2":{"docs":{},"~":{"3":{"docs":{},"倍":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}},"docs":{}}},"docs":{}}}}}}}}}},"希":{"docs":{},"望":{"docs":{},"能":{"docs":{},"够":{"docs":{},"支":{"docs":{},"持":{"3":{"docs":{},"~":{"5":{"docs":{},"年":{"docs":{},",":{"docs":{},"业":{"docs":{},"务":{"docs":{},"的":{"docs":{},"发":{"docs":{},"展":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}},"docs":{}}},"docs":{}}}}}}},"拆":{"docs":{},"分":{"docs":{},"后":{"docs":{},"的":{"docs":{},"架":{"docs":{},"构":{"docs":{},"图":{"docs":{},":":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"支":{"docs":{},"付":{"docs":{},"过":{"docs":{},"程":{"docs":{},"要":{"docs":{},"安":{"docs":{},"全":{"docs":{},",":{"docs":{},"数":{"docs":{},"据":{"docs":{},"加":{"docs":{},"密":{"docs":{},"(":{"docs":{},"安":{"docs":{},"全":{"docs":{},"性":{"docs":{},")":{"docs":{},"多":{"docs":{},"种":{"docs":{},"支":{"docs":{},"付":{"docs":{},"接":{"docs":{},"口":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"切":{"docs":{},"换":{"docs":{},"(":{"docs":{},"灵":{"docs":{},"活":{"docs":{},"性":{"docs":{},",":{"docs":{},"扩":{"docs":{},"展":{"docs":{},"性":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"持":{"3":{"docs":{},"~":{"5":{"docs":{},"年":{"docs":{},",":{"docs":{},"业":{"docs":{},"务":{"docs":{},"的":{"docs":{},"发":{"docs":{},"展":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}},"docs":{}}},"docs":{}}},"核":{"docs":{},"心":{"docs":{},"系":{"docs":{},"统":{"docs":{},"和":{"docs":{},"非":{"docs":{},"核":{"docs":{},"心":{"docs":{},"系":{"docs":{},"统":{"docs":{},"组":{"docs":{},"合":{"docs":{},"部":{"docs":{},"署":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}},"活":{"docs":{},"动":{"docs":{},"管":{"docs":{},"理":{"docs":{},",":{"docs":{},"秒":{"docs":{},"杀":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}},"流":{"docs":{},"程":{"docs":{},"说":{"docs":{},"明":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"突":{"docs":{},"增":{"docs":{},"访":{"docs":{},"问":{"docs":{},"流":{"docs":{},"量":{"docs":{},"(":{"docs":{},"可":{"docs":{},"伸":{"docs":{},"缩":{"docs":{},")":{"docs":{},"实":{"docs":{},"时":{"docs":{},"性":{"docs":{},"要":{"docs":{},"求":{"docs":{},"(":{"docs":{},"高":{"docs":{},"性":{"docs":{},"能":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}},"缓":{"docs":{},"存":{"docs":{},"按":{"docs":{},"照":{"docs":{},"存":{"docs":{},"放":{"docs":{},"的":{"docs":{},"位":{"docs":{},"置":{"docs":{},"一":{"docs":{},"般":{"docs":{},"可":{"docs":{},"分":{"docs":{},"为":{"docs":{},"两":{"docs":{},"类":{"docs":{},"本":{"docs":{},"地":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"和":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"。":{"docs":{},"本":{"docs":{},"案":{"docs":{},"例":{"docs":{},"采":{"docs":{},"用":{"docs":{},"二":{"docs":{},"级":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"的":{"docs":{},"方":{"docs":{},"式":{"docs":{},",":{"docs":{},"进":{"docs":{},"行":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"的":{"docs":{},"设":{"docs":{},"计":{"docs":{},"。":{"docs":{},"一":{"docs":{},"级":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"为":{"docs":{},"本":{"docs":{},"地":{"docs":{},"缓":{"docs":{},"存":{"docs":{},",":{"docs":{},"二":{"docs":{},"级":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"为":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"。":{"docs":{},"(":{"docs":{},"还":{"docs":{},"有":{"docs":{},"页":{"docs":{},"面":{"docs":{},"缓":{"docs":{},"存":{"docs":{},",":{"docs":{},"片":{"docs":{},"段":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"等":{"docs":{},",":{"docs":{},"那":{"docs":{},"是":{"docs":{},"更":{"docs":{},"细":{"docs":{},"粒":{"docs":{},"度":{"docs":{},"的":{"docs":{},"划":{"docs":{},"分":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"的":{"docs":{},"比":{"docs":{},"例":{"docs":{},",":{"docs":{},"一":{"docs":{},"般":{"1":{"docs":{},":":{"4":{"docs":{},",":{"docs":{},"即":{"docs":{},"可":{"docs":{},"考":{"docs":{},"虑":{"docs":{},"使":{"docs":{},"用":{"docs":{},"缓":{"docs":{},"存":{"docs":{},"。":{"docs":{},"(":{"docs":{},"理":{"docs":{},"论":{"docs":{},"上":{"docs":{},"是":{"1":{"docs":{},":":{"2":{"docs":{},"即":{"docs":{},"可":{"docs":{},")":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}},"docs":{}}},"docs":{}}}}}}}}}}}}}}}}},"docs":{}}},"docs":{}}}}}}},"自":{"docs":{},"动":{"docs":{},"过":{"docs":{},"期":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}},"触":{"docs":{},"发":{"docs":{},"过":{"docs":{},"期":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}},"良":{"docs":{},"好":{"docs":{},"购":{"docs":{},"物":{"docs":{},"体":{"docs":{},"验":{"docs":{},"(":{"docs":{},"可":{"docs":{},"用":{"docs":{},"性":{"docs":{},",":{"docs":{},"性":{"docs":{},"能":{"docs":{},")":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}},"负":{"docs":{},"载":{"docs":{},"均":{"docs":{},"衡":{"docs":{},":":{"docs":{},"是":{"docs":{},"高":{"docs":{},"可":{"docs":{},"用":{"docs":{},"系":{"docs":{},"统":{"docs":{},"必":{"docs":{},"须":{"docs":{},"的":{"docs":{},",":{"docs":{},"一":{"docs":{},"般":{"docs":{},"应":{"docs":{},"用":{"docs":{},"通":{"docs":{},"过":{"docs":{},"负":{"docs":{},"载":{"docs":{},"均":{"docs":{},"衡":{"docs":{},"实":{"docs":{},"现":{"docs":{},"高":{"docs":{},"可":{"docs":{},"用":{"docs":{},",":{"docs":{},"分":{"docs":{},"布":{"docs":{},"式":{"docs":{},"服":{"docs":{},"务":{"docs":{},"通":{"docs":{},"过":{"docs":{},"内":{"docs":{},"置":{"docs":{},"的":{"docs":{},"负":{"docs":{},"载":{"docs":{},"均":{"docs":{},"衡":{"docs":{},"实":{"docs":{},"现":{"docs":{},"高":{"docs":{},"可":{"docs":{},"用":{"docs":{},",":{"docs":{},"关":{"docs":{},"系":{"docs":{},"型":{"docs":{},"数":{"docs":{},"据":{"docs":{},"库":{"docs":{},"通":{"docs":{},"过":{"docs":{},"主":{"docs":{},"备":{"docs":{},"方":{"docs":{},"式":{"docs":{},"实":{"docs":{},"现":{"docs":{},"高":{"docs":{},"可":{"docs":{},"用":{"docs":{},"。":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"集":{"docs":{},"中":{"docs":{},"访":{"docs":{},"问":{"docs":{},"量":{"docs":{},":":{"2":{"4":{"0":{"docs":{},".":{"2":{"docs":{},"=":{"4":{"docs":{},".":{"8":{"docs":{},"小":{"docs":{},"时":{"docs":{},"会":{"docs":{},"有":{"6":{"0":{"0":{"0":{"docs":{},"万":{"0":{"docs":{},".":{"8":{"docs":{},"=":{"4":{"8":{"0":{"0":{"docs":{},"万":{"docs":{},"(":{"docs":{},"二":{"docs":{},"八":{"docs":{},"原":{"docs":{},"则":{"docs":{},")":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}},"docs":{}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}},"docs":{}}},"docs":{}}},"docs":{}}},"docs":{}},"docs":{}},"docs":{}}}}}},"群":{"docs":{},"部":{"docs":{},"署":{"docs":{},"后":{"docs":{},"架":{"docs":{},"构":{"docs":{},"图":{"docs":{},":":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}},":":{"docs":{},"电":{"docs":{},"商":{"docs":{},"网":{"docs":{},"站":{"docs":{},"的":{"docs":{},"高":{"docs":{},"可":{"docs":{},"用":{"docs":{},"要":{"docs":{},"求":{"docs":{},",":{"docs":{},"每":{"docs":{},"个":{"docs":{},"应":{"docs":{},"用":{"docs":{},"至":{"docs":{},"少":{"docs":{},"部":{"docs":{},"署":{"docs":{},"两":{"docs":{},"台":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},"进":{"docs":{},"行":{"docs":{},"集":{"docs":{},"群":{"docs":{},"部":{"docs":{},"署":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"预":{"docs":{},"估":{"docs":{},"步":{"docs":{},"骤":{"docs":{},":":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}},"计":{"3":{"docs":{},"~":{"5":{"docs":{},"年":{"docs":{},"用":{"docs":{},"户":{"docs":{},"数":{"docs":{},"达":{"docs":{},"到":{"1":{"0":{"0":{"0":{"docs":{},"万":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}},"docs":{}},"docs":{}},"docs":{}},"docs":{}}}}}}}},"docs":{}}},"docs":{}}},"高":{"docs":{},"峰":{"docs":{},"期":{"docs":{},":":{"docs":{},"需":{"docs":{},"要":{"3":{"0":{"docs":{},"台":{"docs":{},"服":{"docs":{},"务":{"docs":{},"器":{"docs":{},";":{"docs":{"articles/electrical-business-architecture.html":{"ref":"articles/electrical-business-architecture.html","tf":0.005847953216374269}}}}}}}},"docs":{}},"docs":{}}}}}}}},"length":5264},"corpusTokens":["!=","!classname.equals(\"\")){","\"","\"\"","\"\"));","\"#\"","\")\";","\".\"","\".\";","\"/\"","\"/\")).touri();","\"/\"));","\"/\");","\"/users\";","\"0.0.0\",","\"123\"","\"2013/7/13","\"737060cd8c284d8af7ad3082f209582d\"","\"\\u03bcs\";","\"]\");","\"^0.1.0\",","\"^0.1.2\"","\"^0.2.0\",","\"^0.2.4\",","\"^3.0.0\",","\"aaa1\"","\"aaa1\",","\"aaa1#aaa2#bbb1#bbb2#bbb3#ccc#ddd1#ddd2\"","\"aaa2\"","\"aaa2\",","\"ann\");","\"anna\",","\"b\"","\"bam\"","\"bam\");","\"bbb2\",","\"bbb3\",","\"can\",","\"ccc\",","\"change\"};","\"china","\"chinal","\"concat\",","\"date\":","\"ddd1\",","\"ddd2\",","\"defalut","\"defalut\";","\"dependencies\":","\"doe\");","\"error\");","\"hello","\"hexo","\"hexo\":","\"html\",","\"index\",","\"inner","\"j\"","\"ljava/lang/reflect/method;\",","\"mi","\"mike\",","\"name\":","\"new","\"non","\"not","\"parker\");","\"private\":","\"s\"","\"skywalker\"));","\"support","\"title\":","\"val\"","\"val3\");","\"val33\");","\"val9\",","\"version\":","\"wonderland\");","\"xenia\");","\"xml","\"youtub","\"μs\"","\"μs\";","\"买了\"","\"代码提交信息\"","\"在gank!!\");","\"小鱼人\");","\"德玛西亚之力\");","\"毛钱的特效,装逼成功!\");","\"没钱还想装逼,真是匪夷所思\");","\"爆裂魔杖\");","\"神盾\");","\"购买了\"","#","$","%","%d","%}","&","&&","&","'\\n#alia","'\\ufeff'","(!interfaceclass.isinterface())","(!modifier.ispublic(flags))","(!pkg.equals(proxypkg))","(!view.endswith(viewsuffix))","(\");","((boolean)this.h.invoke(this,","((integer)this.h.invoke(this,","((n","(){}","(1)","(2)","(a)","(a,","(bootstrap)","(class","(classformaterror","(classnotfoundexcept","(clazz","(condition())","(controller)","(could","(egyptian","(error|runtimeexcept","(field","(fields.size()","(file","(fooexcept","(from)","(gzip","(hero)cons.newinstance();","(httpservletrequest)","(httpservletresponse)","(illegalaccessexcept","(illegalargumentexcept","(input)","(instanc","(instantiationexcept","(int","(interfaceclass","(interfaces.length","(interfaceset.put(interfaceclass,","(ioexcept","(it.hasnext())","(jsf)","(l)","(list","(lol)","(map)","(map.entri","(map.entry)","(matchespath(route.getpath(),","(methods.size()","(model)","(name.endswith(\".class\"))","(nosuchelementexcept","(nosuchmethodexcept","(null","(num,","(numberformatexcept","(o2.getpath().equals(uri))","(object...","(oldvaluesmap","(osx)","(osx,","(p)","(p1,","(privatehero)","(problemexcept","(proxymethod","(proxypkg","(rout","(s)","(securityexcept","(separ","(servletexcept","(singleton.class)","(sm","(string","(string)this.h.invoke(this,","(subject)proxy.newinstance(classloader.getsystemloader(),","(supplier","(t)","(throwabl","(true)","(urisyntaxexcept","(valu","(value,","(valuesmap","(view)","(xmltype","){",")|","*","**","**自定义的注解类:","*/","*/。","*/注释,后续行必须从*开始,","*/风格,也可以是//","*/,这是不正确的。它应该写成/**","+","+=",",\");",",boolean",",用",".","...","...;","...ok我们先看前半截","...风格。对于多行的/*","./ab","./configur",".allmatch((s)",".anymatch((s)",".atzone(zoneid.systemdefault())",".bashrc",".count();",".filter(",".filter((s)",".foreach(system.out::println);",".jsp",".map(string::touppercase)",".net",".nonematch((s)",".oflocalizeddate(formatstyle.medium)",".ofpattern(\"mmm",".reduce((s1,",".sorted((a,",".sorted()",".stream()",".toinstant();",".withlocale(locale.german);",".zshrc","/","/*","/**","//","//1.","//2.","//3.","//55.00","//addproxymethod方法,就是将方法都加入到一个列表中,并与对应的class对应起来","//creat","//doubl","//iocclasstest();","//iocnametest();","//lambda","//method","//output","//saygoodbye方法同理","//singl","//steam","//①根装载器在java中访问不到,所以返回nul","//下面这三句代码是核心代码,返回实现invokehandler的类并包含了所需要的信息。","//下面这个过程就是填充supplier的过程","//不但会设置location的响应报文头,还会生成303的状态码呢,两者天仙配呢","//你想代理的类","//共数据传输1.15","//创建一个factori","//创建一个具体的策略类","//初始化该类","//利用反射获取你想代理的类的方法","//利用懒加载的方式填充supplier,concurrent是一种线程安全的map","//加入一个静态初始化块,将每一个属性都初始化,这里静态代码块也叫类构造方法,其实就是名称为的方法,所以加到方法列表","//加载每一个接口运行时的信息","//均每秒完成","//填充supplier","//声明成","//失败处理次数","//如果传入不是一个接口类型","//如果使用你自己的classload加载的class与你传入的class不相等,抛出异常","//完成550次处理","//定义一个策略类的列表","//实际最高并发数","//将接口列表中的接口与接口下的方法对应起来","//将每一个代理方法都加到代理类的方法中","//平均每秒传送数据","//总共用时","//成功处理次数","//接下来就是写class文件的过程,包括魔数,类名,常量池等一系列字节码的组成,就不一一细说了。需要的可以参考jvm虚拟机字节码的相关知识。","//接口列表数目不能超过0xffff","//方法中加入构造方法,这个构造方法只有一个,就是一个带有invocationhandler接口的构造方法","//方法和属性个数都不能超过65535,包括之前的接口个数也是这样,","//显示网络连接的速度","//根据用户缴费类型,生成不同的通信报文","//每次传输所花最短时间","//每次传输所花最长时间","//注意此处","//注意这里,","//添加cookie报文头属性","//添加一个响应报文头属性","//生成代理类","//生成随机代理类的类名,$proxi","//用到时候才加载,懒加载","//类加载时就初始化","//结束","//给每一个代理方法加一个method类型的属性,数字10是class文件的标识符,代表这些属性都是priv","//获取filepath","//获取客户端本地化信息(读取","//获取报文头中的cookie(读取cookie的报文头属性)","//获取指定名称的报文头属性的值","//获取接口信息","//获取请求报文中的属性名称","//获取请求报文体的长度(读取content","//解析注解方法","//解析策略类的注解","//设置状态码,状态码在httpservletresponse中通过一系列的常量预定义了,如sc_accepted,sc_ok","//载入策略类方法","//这一段是看你传入的接口中有没有不是public的接口,如果有,这些接口必须全部在一个包里定义的,否则抛异常","//这个才是真正给class文件,也就是代理类加入方法了,不过还没真正处理,只是先加进来等待循环,构造方法在class文件中的名称描述是","//这是因为在class文件中,这些个数都是用4位16进制表示的,所以最大值是2的16次方","//这里给object对应了三个方法hashcode,tostring和equ","//遍历所有策略类,","//验证接口是否重复","/archives/","/gallery/","/path/to/cwd","/path/to/imag","/path/to/repositori","/resources/:resource/actions/:act","/sync/connect","/web","0","0)","0){","0,","0.0.1","0.04","0.42","03","03,","03:00]","07:13","07:13\",","0;","1","1\");","1)","1));","1,","1.","1.0.0","1.1","1.15","1.2","1.5","1.5.tar.gz","1.6","1.ie系","10","10);","100","100);","100.0","1000","1000000;","10212.4","10③处演示了这个反射类的使用方法。在jdk","1191.01","11。它是不可变的,完全模拟本地时间工作。此示例演示如何通过添加或减去天数,月数,年来计算新的日期。记住每一个操作都会返回一个新的实例。","12","123","127","12mar2006","12mar2006.tar.gz","130","13055.6","1319.57","1439","15.50","15分钟","166","17.56","192.168.1.1","1:","1;","1b2e1d63ff","1xx","1小时免费vpn","1毫秒=1.3次访问;","1,有时候,业务层和持久层会合并成单独的一个业务层,尤其是持久层的逻辑绑定在业务层","2","2\");","2,","2.","2.1","2.2","2.3","2.3.1","2.3.2","2.3.3","2.chrome,firefox","2.x用户指南","20","20);","200","2013/7/13","2014","209.994","20:46:25","20:46:25\"","20];","20原则可以帮助你确定架构是","220.78","23,","239","23:59:59","23;","24","294","2:","2xx","2。如果是后者,则在","2中每一层都是封闭的。这是分层架构中非常重要的特点。这意味request必须一层一层的传递。举","2)class[]","3","3.","3.0.1","3.04","3.0提供了一个hiddenhttpmethodfilter,允许你通过“_method”的表单参数指定这些特殊的http方法(实际上还是通过post提交表单)。服务端配置了hiddenhttpmethodfilter后,spring会根据_method参数指定的值模拟出相应的http方法,这样,就可以使用这些http方法对处理方法进行映射了。","3.0还专门为此提供了一个","3.1","3.1.0","3.2","3.3","3.3.1","3.3.2","3.3.3","3.4","3.4.1","3.4.2","3.4.2.1","3.83835e+06","30","30);","300","303","304","31","31,","31.32","312.009","3:","3;","3xx","3}","3~5年用户数达到1000万","3所示,服务层现在是开放的了。请求可以绕过这一层,直接访问这层下面的层。既然服务层","3)class[]","4);","4.","4.0","4.0.0","4.1","4.1.1","4.1.2","4.1.3","4.2","4.3","4.4","4.5","4.5.1","4.5.2","4.6","4.6.1","4.6.2","4.6.3","4.7","4.8","4.8.1","4.8.1节给出了enum类的一些例外。","4.8.2","4.8.2.1","4.8.2.2","4.8.3","4.8.3.1","4.8.3.2","4.8.4","4.8.4.1","4.8.4.2","4.8.4.3","4.8.5","4.8.6","4.8.6.1","4.8.7","4.89979","40);","404","433","450","472","4xx","4)annotation[][]","4,用户发出了个请求要获得客户的信息。黑色的箭头是从数据库中获得用户数据的请求流,红色箭头显示用户数据的返回流的方向。在这个例子中,用户信","5","5,","5.","5.0中的新方法;","5.0中还为注解提供了annotatedelement反射类。总之,java的反射体系保证了可以通过程序化的方式访问目标类中所有的元素,对于private或protected的成员变量和方法,只要jvm的安全机制允许,也可以通过反射进行调用,请看下面的例子:","5.0中,该方法的形式调整为invoke(object","5.1","5.2","5.2.1","5.2.2","5.2.3","5.2.4","5.2.5","5.2.6","5.2.7","5.2.8","5.3","50);","500","5000","502","53.44","55.00","550","59);","59,","5;","5xx","6","6.","6.1","6.1业务拆分","6.2","6.2应用集群部署(分布式,集群,负载均衡)","6.3","6.4","6.4单点登录(分布式session)","6.5数据库集群(读写分离,分库分表)","6.6服务化","6.7消息队列","6.8其他架构(技术)","60","60);","60.0026","63969.7","65535)","6}和new","7.","7.1","7.1.1","7.1.2","7.1.3","7.2","7.3","7.3.1","7.3.2","7.3.3","72;","8","8.","899","8。","8中就返回一个optional。",":",":)",":age",":confused:",":day",":i_day",":i_month",":id\",",":month",":name,",":relieved:",":titl",":title.md",":title.md,比如你执行命令hexo",":unamused:",":wink:",":year",";",";)",";;;",";及右括号())后","=","==",">",">>",">s.contains(\"b\"))",">system.out.println(\"item",">system.out.println(item));",">{","?","@52x2xa","@author","@autowir","@deprecated,","@devdoc","@devdocs——twitter.com/devdocs/status/356095192085962752","@functionalinterfac","@hint(\"hint1\")","@hint(\"hint2\")","@hint(\"hint2\")})","@hints({@hint(\"hint1\"),","@interfac","@mock","@nullabl","@overrid","@override:能用则用","@param","@partial","@repeatable(hints.class)","@retention(retentionpolicy.runtime)","@return","@return,","@service(\"duangservice\")","@someannotation({a,","@suppresswarnings(\"unchecked\")","@target(elementtype.type)","@target({elementtype.type_parameter,","@throw","@throws,","@xmltype(\"chinamobile\")","@xmltype(\"chinaunicom\")","[1.]装载:查找和导入class文件;","[2.1]校验:检查载入class文件数据的正确性;","[2.2]准备:给类的静态变量分配存储空间;","[2.3]解析:将符号引用转成直接引用;","[2.]链接:执行校验、准备和解析步骤,其中解析步骤是可以选择的:","[3.]初始化:对类的静态变量、静态代码块执行初始化工作。","[]","[alt","[author[,","[branch]","[class","[external]","[file2]","[filename]","[folder]","[height]","[lang:language]","[layout]","[link","[link]","[message]","[name]","[rectangl","[source_link_title]","[titl","[title]","[url]","[width]","[鱼香肉丝]","\\","\\f,","\\n,","\\r,","\\t,","\\‘及$$,我们使用它的转义序列,而不是相应的八进制(比如12)或unicode(比如\\u000a)转义。","\\“,","_config.yml","_config.yml站点配置文件,很多全局配置都在这个文件中。","_config.yml配置文件","_draft","_post","```java","`site","a)","a);","a,","a,b,c,d,","a...或thi","a.split(\",\");","aaa1,","aaa2,","ab","abstract","ab是apache自带的一款功能强大的测试工具。","acc_priv","acc_static));","accept","accept(fil","accept:text/plain","accept属性的值可以为一个或多个mime类型的值,关于mime类型,大家请参考:http://en.wikipedia.org/wiki/mime_typ","access","access)方法取消java语言检查,否则将抛出illegalaccessexception。","action)","action,","action;","actionmethod","actionmethod,","action,处于","add","addconf(str","addcookie(cooki","addproxymethod(equalsmethod,","addproxymethod(hashcodemethod,","addproxymethod(tostringmethod,","addrout","addroute(list","addroute(rout","addroute(str","addroutes(rout","adipisc","afoo","afoo.astaticmethod();","ag","age);","age,","age=3600","age=3600;","alert('hello","algorithm","algorithmstartegy()","algorithm”。","algorithm”将变成”muel","alia","aliquam","all.","allstartswitha","amet,","andthen)","annotations(注解)","anti","anystartswitha","apach","api","api也添加了新功能接口,使你的开发更简单。其中一些接口是众所周知的googl","api扩展和新的日期api。","app","applicationcontext","applicationcontext.xml","apply(classload","apply(t","archetype:cr","archive\":","archive_dir","archives:","archive目录","arg","args)","args);","args){","args)。此外,method还有很多用于获取类方法更多信息的方法:1)class","args),obj表示操作的目标对象;args为方法入参,代码清单3","args;","args[]。","args[i]","args,","arraylist());","arraylist();","arraylist<>();","arraylist<>(max);","arraylist>();","arrays.aslist(\"peter\",","assembl","asset_img","asset_link","asset_path","author","autowir","autowired)","autowired.name();","autowiredfield","autowiredfield)","autowiredfield);","avail","availability:","awak","b","b)","b),那么它必然可以接受一个子类对象d,也即可以有method1(d)。反之,则不一定成立","b,","b.compareto(a))","b.compareto(a));","b.compareto(a);","b;。","backtostr","backtostring.apply(\"123\");","bad","bar>)。","barexcept","basebal","basetest();","basetest(){","bbb1,","bbb2,","bbb3,","bean","bean)","bean);","bean.getclass().getname();","bean;","beankey","beankeys.get(name);","beankeys.keyset();","beankeys.put(name,","beankeys.remove(classname);","beankeys.remove(name);","beankeys;","beans.car。该方法有一个重载方法loadclass(str","beans.entryset().iterator();","beans.get(classname);","beans.get(name);","beans.put(classname,","beans.put(name,","beans.remove(classname);","beans;","bean或者远程的ejb3","better","bibl","biezhi","bir","bir);","birthday)\",","bit","blade","blade框架","block","blockquot","blog","blog:https://biezhi.m","boolean","boolean.true)","boolean>","bootstrap","bootstrap.init(mario);","bootstrap;","boot参考指南","both","boy","boy();","boy){","boy.kiss();","boyfactory.createboy();","brackets):","branch","branch:","break;","buy(str","buyduang(str","byte","byte[]","bytes,","bytes/connect","bytes/sec","b})(不使用空格)。","c","cach","cache=$home/.npm/.cache/cnpm","cachekey","cachekey.valueof(key,","cachevalu","cachevalue)","calculate(int","case","catch","catch)。","catch块中的管道符号(catch","catch等)。","categori","categories:","category\":","category_dir","category_map","ccc,","cd","cet","chain)","chain.dofilter(request,","check","checkout","checkproxyaccess(reflection.getcallerclass(),","checkreturntypes(sigmethods);","chinamobil","chinaunicom","choos","chronounit.days);","chronounit.hours.between(now1,","chronounit.minutes.between(now1,","cl","class","class...","class.class){","class.forname(\"com.su.dynamicproxy.isubject\").getmethod(\"saygoodbye\",","class.forname(\"com.su.dynamicproxy.isubject\").getmethod(\"sayhello\",","class.forname(\"java.lang.object\")","class.forname(\"java.lang.object\").getmethod(\"equals\",","class.forname(\"java.lang.object\").getmethod(\"hashcode\",","class.forname(\"java.lang.object\").getmethod(\"tostring\",","class.forname(classname);","class.forname(intf.getname(),","class>","class[0]);","class[]","classfil","classload","classloadertest","classloader。与静态处理类相比,动态类有诸多好处。","classloader重要方法","classnam","classname)","classname);","classname){","class反射对象描述类语义结构,可以从class对象中获取构造函数、成员变量、方法类等类元素的反射对象,并以编程的方式通过这些反射对象对目标类对象进行操作。这些反射对象类在java.reflect包中定义,下面是最主要的三个反射类:","class字节码组成来生成相应的clss文件。具体proxygenerator.generateproxyclass源码如下:","clazz","clazz)","clazz);","clazz){","clazz,","clazz.getannotation(xmltype.class);","clazz.getdeclaredconstructor((class[])null);","clazz.getdeclaredfield(\"name\");","clazz.getdeclaredfield(\"outfit\");","clazz.getmethod(\"setname\",","clazz.getmethod(\"setoutfit\",","clazz.getname();","clazz.newinstance();","clean","cleanpath","cleanpath))","clear","cli","client","clock","clock.instant();","clock.millis();","clock.systemdefaultzone();","clock提供访问当前日期和时间。clock是对当前时区敏感的,可以用来代替system.currenttimemillis()来获取当前的毫秒值。当前时间线上的时刻可以用instance类来表示。instance可以用来创建java.util.date格式的对象。","clone","close","clubs,","cnpm","cnpm=\"npm","cnpm\\nalia","cnpmj","cnpmjs.org@0.4.1","cnpmjs.org是一个非常棒的npm国内镜像。由于其使用量越来越大,加上淘宝内部也有很多项目使用","code","code_dir","codeblock","codes:","collections.sort(names,","collections.sort(routes,","color","color.ui","color;","com,","com.googl","com.junicorn","com.junicorn.mario","com.sun.proxi","com.xxx.person","come","comma_join","comment","comments),我们不使用“document","comments”一词,而是用javadoc。","commit","compar","comparator()","comparator.compare(p1,","comparator.reversed().compare(p1,","comparatorc)与策略java.util.comparator的使用等等。","comparators(比较器)","comparators在旧版本java中是众所周知的。java8增加了各种默认方法的接口。","compare(rout","compare(str","compil","con","con.close();","con.createquery(newsql);","con.createquery(sql);","concentratestrategy_1","concentratestrategy_1());","concentratestrategy_2","concerns)。一个层中的组件只会处理本层的逻","concurrency:","concurrenthashmap();","concurrenthashmap<>());","concurrentmap>","conf){","config","configload","configloader();","configloader.getconf(name);","configloader.load(conf);","configloader;","connect","connection.clos","consectetur","const.view_prefix;","const.view_suffix;","constant","construct)指的是一个类,方法或构造函数的主体。需要注意的是,数组初始化中的初始值可被选择性地视为块状结构(4.8.3.1节)。","constructor","constructor:类的构造函数反射类,通过class#getconstructors()方法可以获得类的所有构造函数反射对象数组。在jdk5.0中,还可以通过getconstructor(class...","consum","consumers(消费者)","consumers代表在一个单一的输入参数上执行操作。","contain","container.getbean(lol.class);","container.getbean(lol2.class);","container.getbean(lol3.class);","container.initwired();","container.registerbean(\"face\",","container.registerbean(lol.class);","container.registerbean(lol2.class);","container.registerbean(lol3.class);","content","content;","context","context.getbean(\"lol\");","continu","continue,","control","control),意为控制反转,不是什么技术,而是一种设计思想。ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。","control:","controller)","controller);","controller){","controller.getclass().getmethod(methodname,","controller;","control的有益补充,可以让客户端“更智能”地处理什么时候要从服务端取资源,什么时候可以直接从缓存中返回响应。","convert","convert(f","converter.convert(\"123\");","converter.convert(\"java\");","cooki","cookie)","cookie:","cookie:skin=blue;","cookie[]","correct","count","counting):","count是一个终止操作返回流中的元素的数目,返回long类型。","cp.getclass(dottoslash(classname));","cp.getclass(superclassname);","creat","create(str","createproduct(str","css压缩","ctx","curabitur","current","custom","custom.yml","cwd","c是并发量,","d","d,","dao","dao来得到订单信息。这些模块会执行sql语句,然后返回相应的数据给业务层。当","dartifactid=mario","data","dataload","datasourc","datasource){","date","date){","date.from(instant);","date:","date_format","datetimeformatt","david","dayofweek","dd","dd\").parse(date);","dd,","ddd1","ddd2,","dd的格式,其他格式模版可以查看moment.js|","debug","dec","decemb","default","default:","default_categori","default_layout","defaulthead","defaulthead();","default的情况要写出来","defin","defineclass(str","defineclass0(loader,","delegate)模","delegate,然后传递这些数据到","delegate。用本地的spr","delete(request","delight.","deploy","deploy:","descript","devdoc","dgroupid=com.junicorn","diam","diamond","diff","differ","dir,","dispatch","display","disturl=https://npm.taobao.org/dist","di—depend","do,","dofilter(servletrequest","dolor","donothing()","doubl","dpackagename=com.junicorn.mario","draft","drafts(草稿)","draft。不同布局的文章会被保存到不同的目录,这取决于它的布局类型。","duangservic","duangservice.buy(name,","dynamicproxi","dynamicproxy());","dynamicproxy(targetclass","e\");","e)","e)。","e.printstacktrace();","eaddrinus","easysingleton{","echo","eclipse创建","edit","edit(request","ee应用的实际标准,因此很多","eget","ejs\":","ejs,stylu","elaps","elementtype.type_use})","elit,","elit.","else,","else{","else判断,","else我们定义一个策略工厂,来生产具体的策略类。","empty_array","emptystack.pop();","empty”都是正确的,因此方法名checknonempty和checknonempty也都是正确的。","encrypt","end","end);","endblockquot","endcodeblock","endfor","entri","entry.getkey()","entry.getvalue());","entry.getvalue();","enum","enum_const","equals(object","equals方法进行初始化。","error","error!\");","especi","etag","etag:","eu","even","exceeded\");","except","exception\");","executemethod(controller,","executemethod(object","executequery(queri","executequery(query,","expected)","explorer工具栏中。它不用代理服务器或一些复杂的网络监控工具,就能抓取请求及响应的完整信息,包括cookies、消息头、查询参数、响应报文等,是web应用开发人员的必备工具。","expungestaleentries();","extend","external_link","f","face","faceservice2());","factori","factory是一个实现了supplier接口的内部类。这个类覆盖了get方法,在get方法中调用了类型为proxyfactoryclass的实例方法apply。这个方法才是真正创建代理类的方法。下面看proxyfactoryclass.apply方法的源码:","fail","fail();","fall","fals","false,","false;","feature_x","fermentum","fetch","fetches,","fetches/sec,","fetches/sec、msecs/connect","feugiat.","field","field.getannotation(autowired.class);","field.gettype().getcanonicalname());","field.isaccessible();","field.set(object,","field.setaccessible(accessible);","field.setaccessible(true);","field[]","fieldinfo","fieldinfo(pm.methodfieldname,","fields)","fields){","fields.add(new","field:类的成员变量的反射类,通过class#getdeclaredfields()方法可以获取类的成员变量反射对象数组,通过class#getdeclaredfield(str","fight","file","file(\"/users/yadoao/desktop/testproxygen.class\");","file(filepath).listfiles(new","file.getname().replace(\".class\",","file[]","filename_cas","filenamefilter()","filename(文件名)","fileoutputstream","fileoutputstream(file);","filepath","files)","filesystemxmlapplicationcontext(\"applicationcontext.xml\");","files』功能。这个特性加载","filter","filterchain","filterconfig)","filterconfig.getinitparameter(\"bootstrap\");","filterconfig.getservletcontext();","filter接受一个predicate来过滤流的所有元素。这个中间操作能够调用另一个流的操作(foreach)的结果。foreach接受一个消费者为每个元素执行过滤流。它是void,所以我们不能称之为另一个流操作。","final","final\";","finalizers:","finalizers”,然后不要使用它。","findloadedclass(str","findroute(str","findsystemclass(str","fine","fine,","firstname,","firstname;","flag","fo","folder,后面有讲解","folder,默认为false,至于什么是asset","foo","foo.astaticmethod();","foo:或default:),后面跟着一条或多条语句。","foo;(大括号间没有空格,见下面的note)。","foobart)。","foo”,确实也没有什么值得写了。","for(class","for(int","for(str","for,","for.","foreach","foreach操作list","foreach操作map","foreach语句中的分号。","form","form)开始:","format.pretti","formatt","formatter);","formatter.format(parsed);","formula","formula()","formula.calculate(100);","formula.sqrt(16);","fos.close();","fos.flush();","fos.write(classfile);","found","found\");","fowler又给出了一个新的名字:“依赖注入”,相对ioc","friday","from);","function","functions(函数)","functions接受一个参数,并产生一个结果。默认方法可以将多个函数串在一起(compse,","futur","g","g,","gallery\"","gallery:","gank(){","gener","generate(str","generate.","generateclassfile()","generatexml()","generating.","germanformatt","germanformatter);","get(k","get(sql,","get(str","getaction()","getargs(request","getargs(request,","getbean(class","getbeanbyname(str","getbeannames()","getbeannames();","getbootstrap(str","getclass().getclassloader().getresource(packagename.replace(\".\",","getclass().getclassloader().loadclass(packagenam","getconf(str","getcontentlength();","getcontroller()","getcookies()","getexceptiontypes():获取方法的异常类型数组;","getheader(java.lang.str","getheadernames();","getinstance()","getinstance(){","getinstance()方法。饿汉式的创建方式在一些场景中将无法使用:譬如","getlist(sql,","getlist(str","getlocale()","getmap(sql,","getmap(str","getmaplist(sql,","getmaplist(str","getname()","getnameifpresent()","getoutfit()","getparameterannotations():获取方法的注解信息,jdk","getparametertypes():获取方法的入参类型数组;","getparent()","getparent());","getpath()","getproxyclass0(classload","getproxyclass0(loader,","getreturntype():获取方法的返回值类型;","getrouters()","getroutes()","getsession()","getsingleton()","getviewpath(str","girl","gist","gist_id","git","gitbox","github","github仓库地址","gitk","gitx","git:","givematch(fin","givematch(path,","go!","godin","godin——welcom","good","good,对于非打印字符,使用转义,并在必要时写上注释","googl","grandpar","greek","greeter","greeter.accept(new","guava中,定义了predicate接口,该接口包含一个带有泛型参数的方法:","guava库。即使你熟悉这个库也应该密切关注这些接口是如何延长一些有用的扩展方法。","gui反编译该class文件,结果如下:","g后也没有反应,就可以执行一下这个命令。","h)","handle(httpservletrequest","handle(request,","handlealgorithm()","handlelargenumber(input);","handlenumericresponse(i);","handleonetwoorthree();","handletextresponse(response);","happi","hard","hashcode()","hashmap();","hashmap<>();","hashset<string>();","head","head,但是还没到你的远端仓库。","head,它指向你最后一次提交的结果。","hearts,","height:","hello","helloworld","hello,就会默认在_post目录下创建一个hello.md的文件","hendrerit","here,","hero","hero()","hero()。在③处,我们又通过hero的反射类对象的getmethod(str","hero.say();","heroku","hexo","hexo为部署提供了一个快速、简单的方法。你只需要一个命令将网站部署到服务器。","hexo使用的moment.js来处理时间的。","hexo提供了3个默认布局:post、pag","hexo提供了一个更加方便的方式来管理资源。你可以修改","hexo搭建博客","hexo生成静态文件非常简单、高效。","hexo立即可以看到文件更改并重新生成文件。hexo将比较sha1校验和文件和只写文件的改变。","hexo运行服务器在默认0.0.0.0。你可以覆盖默认的ip设置","hh:mm\");","hh:mm:ss\")","highlight","highlighting.","hint","hint[]","hints1","hints2","hit","home:","hoursbetween","http","http://bladejava.com","http://bladejava.com/docs/modules/rout","http://devdocs.io","http://javarevisited.blogspot.sg/2012/07/whi","http://localhost:4000/","http://localhost:4000。","http://sethgodin.typepad.com/seths_blog/2009/07/welcom","http://www.baidu.com","http://www.baidu.com/index.php","http://www.domain.com/","http://www.domain.com/article/1.html","http://www.domain.com/article/2.html","http://www.domain.com/article/3.html","http://www.domain.com/article/4.html","http://www.domain.com/article/5.html","http://www.domain.com/article/6.html","http://www.domain.com/article/7.html","http://www.domain.com/blog/","http://www.domain.com/signin/","http://www.domain.com/signup/","http://www.google.com。","http://www.qixing.info/","http://www.qixing318.com/","http://www.zendsns.com/","http_load","http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。","https://github.com/biezhi/jb","https://github.com/junicorn/mario","https://npm.taobao.org/sync/connect","https://twitter.com/devdocs/status/356095192085962752","httpservletrequest","httpservletrequest,","httpservletrequest可以通过","httpservletrespons","httpservletresponse,","httpsession","httpwatch是强大的网页数据分析工具,安装后将集成到internet","http响应报文解剖","http的响应报文也由三部分组成(响应行+响应头+响应体):","http的响应状态码由5段组成:","http请求报文头属性","http请求报文由3部分组成(请求行+请求头+请求体):","http请求报文解剖","h进行了初始化。","i++;","i/o","i18n_dir","i18n目录","i=0;","iaculi","id","id\"","id);","id){","id.","identityhashmap<>(interfaces.length);","id:","if(!mario.isinit()){","if(!name.equals(\"\")){","if(\"c\".equals(item)){","if(\"e\".equals(k)){","if(autowired.value()","if(factori","if(len","if(money","if(nul","if(paramtypeclazz.getname().equals(request.class.getname())){","if(paramtypeclazz.getname().equals(response.class.getname())){","if(r","if(realsubject","if(suppli","if(xmltype.value().equals(producttype))","ifram","if,如果在同步块内不进行二次检验的话就会生成多个实例了。","illegalaccessexcept","illegalargumentexcept","illegalargumentexception(","illegalargumentexception(\"field","illegalargumentexception(\"interfac","illegalargumentexception(\"method","illegalargumentexception(\"rep","illegalargumentexception(e.tostring());","imag","img","immut","immutablelist<string>","immutablelist.of(\"ed\",","immutableset<somemutabletype>","immutableset.of(mutable);","implement","import","importer\"","imports(仅当这个源文件是在com.google包下)","import不要使用通配符","import语句","import语句不换行,列限制(4.4节)并不适用于import语句。(每个import语句独立成行)","import语句可分为以下几组,按照这个顺序,每组由一个空行分隔:","incorrect","independenceday","independenceday.getdayofweek();","index","index\":","index();","index);","inf/","info.java,该文件中可没有packag","info类。","init","init(datasourc","init(filterconfig","init(mario","init(str","init)","init;","initargs)。","initargs),通过该方法可以创建一个对象类的实例,相当于new关键字。在jdk5.0中该方法演化为更为灵活的形式:newinst","initialization)会倾向于使用静态内部类,如果涉及到反序列化创建对象时会试着使用枚举的方式来实现单例。","initialization),单例会在加载类后一开始就被初始化,即使客户端没有调用","initwired()","initwired();","injection(object","injection(object);","injection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。","injuri","innerstopwatch","input):","insert(str","instal","instanc","instance;","instance,然后使用,然后顺理成章地报错。","instant","instead","int","int[]","integ","integer.parseint(response);","integer.valueof(from);","integer::valueof;","interact","interfac","interface\");","interface:","interfaceclass","interfaceclass.getname()","interfaceclass.getname());","interfaces)","interfaces);","interfaces,","interfaces.clone();","interfaces[],","interfaceset","intern","internalerror(\"unexpect","interview","intf","intf)","intf.getmodifiers();","intf.getname();","intfs);","invocationhandl","invoke(object","invokehand","invokehandl","invokehandler)可以创建一个动态代理类。","ioc","ioc(invers","iocclasstest(){","iocnametest(){","ioctest","ioc和di","ioc和di由什么关系呢?其实它们是同一个概念的不同角度描述,由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物martin","ioc容器","ioc容器实现篇","ioc很好的体现了面向对象设计法则之一——","ioc的概念","ioc能做什么","ioc这个核心概念,我相信每一个学习spring的人都会有自己的理解。这种概念上的理解没有绝对的标准答案,仁者见仁智者见智。","ioexcept","ioexception,","ios?\"","ip","iproduct","iproduct.class","iproduct.class.isassignablefrom(clazz))","iproduct{","ipsum","ipv6","isempti","isempty.negate();","isinit()","island","isnotempti","isnul","isubject","it'","it.next();","item","items){","items.add(\"a\");","items.add(\"b\");","items.add(\"c\");","items.add(\"d\");","items.add(\"e\");","items.entryset())","items.foreach((k,v)","items.foreach(item","items.foreach(system.out::println);","items.put(\"a\",","items.put(\"b\",","items.put(\"c\",","items.put(\"d\",","items.put(\"e\",","items.put(\"f\",","items.stream()","iter","iterator>","jar","java","java.html","java.lang.reflect.invocationhandler;","java.lang.reflect.method;","java.lang.reflect.proxy;","java.lang.reflect.undeclaredthrowableexception;","java.lang.str","java.util.*;","java.util.d","java.util.enumer","java.util.local","java7","java8","java8使我们能够使用相同类型的多个注解,通过@repeatable声明注解。","java8支持更短的语法而不总是创建匿名对象,","java8简明指南","java8简明教程","java8系列","javadoc","javadoc.","javadoc块的基本格式如下所示:","javadoc标记","javassist等。这些方法各有优缺点。本文主要探究jdk中的动态代理的使用和源码分析。","javax","javax.servlet","java》上所推荐的。","java使您可以通过::关键字调用引用的方法或构造函数。上面的示例演示了如何引用静态方法。但我们也可以参考对象方法:","java反射机制","java编程风格指南","java编程风格规范的完整定义。当且仅当一个java源文件符合此文档中的规则,","java编译器知道参数类型,所以你可以跳过它们,接下来让我们深入了解lambda表达式。","java语言允许通过程序化的方式间接对class进行操作,class文件由类装载器装载后,在jvm中将形成一份描述class结构的元信息对象,通过该元信息对象可以获知class的结构信息:如构造函数、属性和方法等。java允许用户借由这个class相关的元信息对象间接调用class对象的功能,这就为使用程序化方式操作class对象开辟了途径。","jdk","jdk1.8的api包含许多内置的函数式接口。其中有些是众所周知的,从旧版本中而来,如comparator或者runnable。使现有的接口通过@functionalinterface注解支持lambda。","jdk中自带动态代理,cglib,","jdk动态代理源码分析(jdk7)","jdk动态代理要求,被代理的必须是个接口,单纯的类则不行。jdk动态代理所生成的代理类都会继承","jersey","jmm","joiner","joiner.on(',');","jsessionid=5f4771183629c9834f8382e23be13c4c","json方式,以三分号结束","jsp","jsprender","jsp渲染实现","junit,","jvm","jvm装载类时使用“全盘负责委托机制”,“全盘负责”是指当一个classloader装载一个类的时,除非显式地使用另一个classloader,该类所依赖及引用的类也由这个classloader载入;“委托机制”是指先委托父装载器寻找目标类,只有在找不到的情况下才从自己的类路径中查找并装载目标类。这一点是从安全角度考虑的,试想如果有人编写了一个恶意的基础类(如java.lang.string)并装载到jvm中将会引起多么可怕的后果。但是由于有了“全盘负责委托机制”,java.lang.string永远是由根装载器来装载的,这样就避免了上述事件的发生。","k","key","key,","keyfactory(),","keys){","kindness.","kiss","kiss(){","kiss(boy","l,","lacu","lambda4","lambda作用域","lambda表达式","lambda表达式类型系统?每个lambda由一个指定的接口对应于一个给定的类型。所谓的函数式接口必须包含一个确切的一个抽象方法声明。该类型将匹配这个抽象方法每个lambda表达式。因为默认的方法是不抽象的,你可以自由添加默认的方法到你的函数式接口。","lambda表达式:","lang:objc","languag","lastname)","lastname);","lastname;","latest.tar.gz","latest/","law\"。你可以google⼀一下查查这个有趣的联系。","layout","layout:false。","layout(布局)","leav","legaci","legacyd","len","len)","length的报文头属性)","let'","letter","levithan,","levithan——wid","limit","line","link","linux","linux安装jdk、tomcat脚本","list","list;","list>","list。","load","loadallstrategy(\"com.su.startegy\");","loadallstrategy(str","loadclass(str","loader","loader\");","loader);","loader,","loader.loadclass(\"com.biezhi.ioc.hero\");","loader.loadclass(\"com.biezhi.ioc.privatehero\");","loader:\"+loader);","loader:\"+loader.getparent());","loader:\"+loader.getparent().","loader:nul","loader:sun.misc.launcher$appclassloader@131f71a","loader:sun.misc.launcher$extclassloader@15601ea","loader;","localclassnotfoundexception)","locald","localdate.now();","localdate.of(2014,","localdate.parse(\"24.12.2014\",","localdatetim","localdatetime.of(2014,","localdatetime.parse(\"nov","localdatetime代表日期时间。它结合了日期和时间见上面的部分为一个实例。localdatetime是不可变的,类似于本地时间和localdate工作。我们可以从一个日期时间获取某些字段的方法:","localdate代表一个唯一的日期,如2014","localerror)","localerror;","localnosuchmethodexception)","localthrowable)","localtim","localtime.now(zone1);","localtime.now(zone2);","localtime代表没有时区的时间,例如晚上10点或17:30:15。下面的例子会用上面的例子定义的时区创建两个本地时间对象。然后我们比较两个时间并计算小时和分钟的差异。","locat","location)","location:","lock","locking,而且还能防止反序列化导致重新创建新的对象。但是还是很少看到有人这样写,可能是因为不太熟悉吧。","log","logger","logger.getlogger(mariofilter.class.getname());","logger.getlogger(myclass.getname());","logger.getlogger(routers.class.getname());","logger.info(\"add","logger.info(\"request","lol","lol()","lol.gank();","lol.work();","lol2","lol3","lol英雄","long","longest","loop.key","lorem","lorem.","m","m(模型)v(视图)c(控制器)","m0","m0,","m0;","m1","m1,","m1;","m2","m2,","m2;","m3","m3,","m3;","m4","m4,","m4;","mac","mail:biezhi.me@gmail.com","main(str","main(string[]","main(strings[]","make","map","map);","map,","map.computeifabsent(23,","map.computeifabsent(3,","map.computeifpresent(3,","map.computeifpresent(9,","map.containskey(23);","map.containskey(9);","map.entri","map.get(3);","map.get(9);","map.get(cachekey);","map.getordefault(42,","map.merge(9,","map.put(\"age\",","map.put(\"id\",","map.put(\"name\",","map.put(name.trim(),","map.putifabsent(cachekey,","map.remove(3,","map合并条目是非常容易的:","map是一个对于流对象的中间操作,通过给定的方法,它能够把流对象中的每一个元素对应到另外一个对象上。下面的例子将每个字符串转换成一个大写字符串,但也可以使用map将每个对象转换为另一种类型。所得到的流的泛型类型取决于您传递给map方法的泛型类型。","mario","mario()","mario();","mario)","mario.addroute(\"/\",","mario.addroute(\"/html\",","mario.getconf(const.view_prefix_field);","mario.getconf(const.view_suffix_field);","mario.getrouters();","mario.me();","mario.setinit(true);","mariocontext.initcontext(servletcontext,","mariocontext.me().getcontext().getcontextpath();","mariocontext.me().getrequest().getraw();","mariocontext.me().getresponse().getraw();","mariodb","mariodb()","mariodb.get(\"select","mariodb.getlist(\"select","mariodb.insert(\"insert","mariodb.update(\"delet","mariodb.update(\"upd","mariofilt","mariohold","marioholder.me;","mario中所有的配置都可以在","mario使用一个filter接收所有请求,因为从filter过来的请求有无数,如何知道哪一个请求对应哪一个路由呢?","mark","markdown","marked\":","market","marketing.html","master","master),执行:","match","matchespath(str","matchrout","matchroutes);","matchroutes.add(route);","matchroutes.get(0)","matchroutes.size()","math.sqrt(a);","maven","max","max,","mb","mb/sec","me(){","mean","mean,","menu.yml","mercy.","merg","messag","message:","method","method()","method(str","method);","method,","method.getparametertypes());","method.getparametertypes().length;","method.invoke(realsubject,","method.setaccessible(true);","methodinfo","methodnam","methodname,","methodname,class","methods.add(generateconstructor());","methods.add(generatestaticinitializer());","methods.add(pm.generatemethod());","method:类方法的反射类,通过class#getdeclaredmethods()方法可以获取类的所有方法反射类对象数组method[]。在jdk5.0中可以通过getdeclaredmethod(str","migrat","milli","millis));","min","minuteofday","minutesbetween","mm","mname,","mobil","mode","modifi","money","money)","money);","money){","month","month.december,","month.july,","more","mq,rabbit","mq,zero","mq。","mq等,需要根据具体的业务场景进行选择。建议可以研究下rabbit","mq,m","ms","ms\",","msec","msecs/connect:","msecs/first","msecs,最大的响应时间1319.57","msecs,最小的响应时间209.994","mu,","multipl","mutablecollect","mutableel","mvc核心处理器","mvc框架","mvc框架实现篇","mvn","myannot","mybatis中文指南","myclass()","mymethod","mymethod.invoke(targetclass,","mymethod.setaccessible(true);","n","name","name)","name);","name){","name)则可获取某个特定名称的成员变量反射对象。field类最主要的方法是set(object","name,","name.lastindexof('.');","name.set(hero,","name.setaccessible(true);","name.substring(0,","name.trim()","name;","names]","name参数指定类装载器需要装载类的名字,必须使用全限定类名,如com.baobaotao.","name指的是什么。","nativ","nec","neque.","nest","netty4","new","new:","new_post_nam","newcustomerid","newinstance方法有三个参数,分别表示类加载器,一个希望该代理类实现的接口列表,以及实现invokehandler接口的实例。","newproxyinstance(classload","newsql","newvalue)","new。","nextuniquenumber.getandincrement();","nginx+startssl配置http","noclassdeffounderror(localclassnotfoundexception.getmessage());","node.js@v0.11.12","nodejs会自动将bin写入环境变量,来试试是否安装成功","nodejs,于是,淘宝正式基于","non","nonemptyarray","nonestartswithz","nonfin","nonnul","nonstat","normally...","nosuchmethoderror(localnosuchmethodexception.getmessage());","note:在英语中,某些带有连字符的单词形式不唯一。例如:”nonempty”和”non","note:这个规则并不要求或禁止一行的开关或结尾需要额外的空格,只对内部空格做要求。","nothing.","nov","now","now(\"yyyi","now1","now2","now2);","npm","npm.taobao.org","npm:","null","null)","null)).intvalue();","null);","null.","null;","nullobject判断方法,如果parameter为空则抛出带有指定消息的异常。","null的值,也可能返回一个空值。为了不直接返回null,我们在java","null,一次是在同步块外,一次是在同步块内。为什么在同步块内还要再检验一次?因为可能会有多个线程一起进入同步块外的","num","num);","num;","number","numeric;","o,","o1,","o2)","o2.getpath().indexof(uri);","obj","obj,","obj,object","object","object)","object){","object,","object.*/","object...","object.class);","object.getclass().getdeclaredfields();","object;","object[]","object[len];","objects),或者可以用mybatis,还可以用jdbc或者hibernate查询。microsoft平台上,custom","objects.requirenonnull(parameter);","objects.requirenonnull(subkeyfactory.apply(key,","objects::isnull;","objects::nonnull;","object。上例中的数据访问可以用简单的pojp's(plain","object收到数据以后,它就会聚合这些数据然后传递给","object聚合了业务","off,","ok","ok)","okay.","ok,项目创建好了,这个将是我们的框架。","old","oldvaluesmap","oldvaluesmap;","onelin","open","opportun","option","optional.get();","optional.ifpresent((s)","optional.ispresent();","optional.of(\"bam\");","optional.orelse(\"fallback\");","optionals(可选项)","optionals是没有函数的接口,取而代之的是防止nullpointerexception异常。这是下一节的一个重要概念,所以让我们看看如何结合optionals工作。","optional是一个简单的容器,这个值可能是空的或者非空的。考虑到一个方法可能会返回一个non","order","org,","org.apache.maven.plugin","org.springframework.web.filter.shallowetagheaderfilt","origin","origin/mast","osx","outernum","outernum;","outerstaticnum","outerstaticnum;","outfit","outfit)","outfit);","outfit.set(hero,","outfit.setaccessible(true);","outfit;","output","p","p,","p.firstname);","p1","p1)","p1.firstname.compareto(p2.firstname);","p2","p2)","p2);","packag","package.","package.json","package.json文件","packagename)","packages\");","package和import语句(见3.2节和3.3节)。","package语句","package语句不换行,列限制(4.4节)并不适用于package语句。(即package语句写在一行里)","page","pagination_dir","parallel","parallel,","param","param1=value1¶m2=value2”的方式传递请求参数。","paramclass)获取属性的setter方法对象,第一个参数是目标class的方法名;第二个参数是方法入参的对象类型。获取方法反射对象后,即可通过invoke(object","parameter)","parameter));","parametertypes)获取拥有特定入参的构造函数反射对象。constructor的一个主要方法是newinstance(object[]","parametertypes)获取特定签名的方法,name为方法名;class...为方法入参类型列表。method最主要的方法是invoke(object","paraminvocationhandler)","paramobject","paramobject)","params);","params){","params.get(key));","params.keyset();","params.length;","params.size()","params[i]);","params[i];","paramtypeclazz","param)方法调用目标类的方法,该方法的第一个参数是操作的目标类对象实例;第二个参数是目标方法的入参。","parent","pars","parseexcept","parseexception{","parsepath(path);","parsepath(str","pass","pass);","pass){","path","path)","path,","path;","pathtomatch)","pathtomatch.matches(\"(?i)\"","pathutil.fixpath(path);","pathutil.getrelativepath(request);","pathutil.var_replace);","pattern","pattern)。","pattern),是一种使用同步块加锁的方法。程序员称其为双重检查锁,因为会有两次检查","pellentesqu","per_pag","permalink","permalink_default","permitted,","person","person(\"alice\",","person(\"john\",","person(\"luke\",","person()","person(str","person.class.getannotation(hint.class);","person.class.getannotation(hints.class);","person.class.getannotationsbytype(hint.class);","person::new;","personfactori","personfactory.create(\"peter\",","personsuppli","personsupplier.get();","photo","photo.md","pkg","pkg;","plugin","pm","png图片无损压缩","pom.xml","port","possibl","post","post_asset_fold","post_asset_folder:","praseannotation(class","praseannotation(clazz);","preciou","predic","predicate.negate().test(\"foo\");","predicate.test(\"foo\");","predicates(谓词)","predicates是一个返回布尔类型的函数。这就是谓词函数,输入一个对象,返回true或者false。","prepareoneortwo();","principle,缩写为lsp)","principle,缩写为ocp)","print","privat","privatehero","privatehero()","product","product.generatexml();","productfactori","productfactory()","productfactory();","productfactory.getinstance().createproduct(type);","productfactoryinst","productfactoryinstance.instance;","producttype)","prose","protect","provid","proxi","proxy,","proxy.newinst","proxyclasscach","proxyclasscache.get","proxyclasscache.get(loader,","proxyclasscache是一个weakcache类型的缓存,它的构造函数有两个参数,其中一个就是用于生成代理类的proxyclassfactory,下面是proxyclasscache.get的源码:","proxyclasscache:","proxyclassfactory());","proxyclassfil","proxyclassfile,","proxyclassfile.length);","proxyclassnameprefix","proxygenerator.generateproxyclass(\"testproxygen\",","proxygenerator.generateproxyclass(proxyname,","proxymethod","proxymethods.values())","proxynam","proxyname,","proxypkg","public","public_dir","public目录,静态网站生成的地方,默认值为publ","publish","pull","puru","push","pv量:200*30=6000万;","qpt","queri","query,","query.addparameter(key,","query.executeandfetch(clazz);","query.executeandfetchfirst(clazz);","query.executeandfetchtable().aslist();","query.executescalar();","query.executeupdate().getresult();","question","qui","quote(块引用)","r","rate","rate:","re","read","realsubject","realsubject();","realsubject.class.getinterfaces(),","realsubject.sayhello();","realsubject;","record","record...。然而,由于开头大写及被加了标点,它看起来就像是个完整的句子。","recover();","recursiveassembly(autowired.value());","recursiveassembly(class","recursiveassembly(field.gettype());","reduc","reduced.ifpresent(system.out::println);","refer","reflectutil.invokemehod(object,","reflectutil.newinstance(clazz);","reflectutil.proxy_packag","refqueue);","registerbean(class","registerbean(object","registerbean(str","registry.npm.taobao.org","registry.npmjs.org","registry=https://registry.npm.taobao.org","relative_link","remot","remove(class","removebyname(str","removeroute(rout","render","render(str","render_draft","repo","repo:","request","request\"","request(httpservletrequest);","request,","request.attr(\"res\",","request.attr(\"user\",","request.attr(\"users\",","request.class,","request.query(\"birthday\");","request.query(\"name\");","request.queryasint(\"age\");","request.queryasint(\"id\");","request;","res;","reset","resolv","resolve),resolve参数告诉类装载器是否需要解析该类。在初始化类之前,应考虑进行类解析的工作,但并不是所有的类都需要解析,如果jvm只需要知道该类是否存在或找出该类的超类,那么就不需要进行解析。","respons","response(httpservletresponse);","response)","response);","response){","response,","response.class);","response.redirect(location.replaceall(\"[/]+\",","response.render(\"user_add\");","response.render(\"user_edit\");","response.render(\"users\");","response:","response;","rest","result","retriev","return","return;","returns...开头,","return或抛出异常来终止,要么通过一条注释来说明程序将继续执行到下一个语句组,","root","rout","route()","route();","route);","route){","route.getaction();","route.getcontroller();","route.setaction(action);","route.setcontroller(controller);","route.setpath(path);","routematch","routematcher(list","routematcher(new","routematcher.findroute(uri);","routematcher.setroutes(routers.getroutes());","routepath","routepath);","routepath,","routepath.replaceall(pathutil.var_regexp,","router","routers()","routers();","routers){","routers;","routes)","routes){","routes.add(route);","routes.addall(routes);","routes.remove(route);","routes;","route:[\"","rss","runtimeexception(\"init","runtimeexception(\"un","runtimeexception(e);","r是重复次数。","s","s)","s,","s.length()","s.startswith(\"a\"))","s.startswith(\"a\"));","s.startswith(\"b\"))","s.startswith(\"z\"));","s1","s2)","s2);","s_name和kname,在java编程风格中都不再使用。","safe","same","sampl","samplecontain","samplecontainer()","samplecontainer();","save","save(request","say(){","saygoodbye()","saygoodbye();","sayhello()","sayhello();","sc)","scaffold","scaffolds(模版)","screen","screen能","script","sec","second","securitymanag","sed","see","seek","semper","sendredirect(str","sequenti","server","server\":","servlet","servletcontext","servletcontext;","servletexcept","servletrequest","servletrequest,","servletrequest.getrequestdispatcher(viewpath).forward(servletrequest,","servletrequest;","servletrespons","servletresponse);","servletresponse,","servletresponse;","set","set<string>","setaction(method","setbrand","setbrand.invoke(hero,","setcolor","setcolor.invoke(hero,","setcontroller(object","seth","setheader(str","setinit(boolean","setname(str","setoutfit(str","setpath(str","setroutes(list","setstatus(int","setx:","se程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而ioc是有专门一个容器来创建这些对象,即由ioc容器来控制对","shiro","shock","short","shortest","show_add(request","sieg","siege下载:http://www.joedog.org/pub/siege/sieg","siege使用:","siege官方:http://www.joedog.org/","siege解压并安装:","sigmethod","sigmethods)","silent","simpl","simpledateformat(\"yyyi","singleton","singleton();","singleton(){}","singleton()这句,这并非是一个原子操作,事实上在","singletonhold","singletonholder.instance;","singleton{","sinkhol","sit","site\",","site.data.menu","site.url","site.url内容:","situat","situation(new","situation(strategi","situation.handlealgorithm();","skip_rend","slug","sm","snapshot","snippet","someenum","somemutabletype[]","someth","something();","something::startswith;","somethingthatyieldsafoo().astaticmethod();","sometim","sort","sorted是一个中间操作,能够返回一个排过序的流对象的视图。这些元素按自然顺序排序,除非你经过一个自定义比较器(实现comparator接口)。","sourc","source/_data","source/_draft","source/_post","source]]","source_dir","source目录,默认值为sourc","sp","sp.saygoodbye();","sp.sayhello();","spades,","sport","spring","spring中怎么用","spring更高级的用法,在3.0版本之后有了基于annotation的注入实现,为毛每次都要配置","sql","sql){","sql,","sql.indexof(\"(\")","sql.indexof(\")\");","sql.substring(start,","sql2o","sql2o(datasource);","sql2o(url,","sql2o.open();","sqlbuf","sqlbuf.append(\"","sqlbuf.append(\":\"","sqlbuf.length()","sqlbuf.substring(0,","sqrt(","sqrt(a","sqrt(int","ssl.do","star","start","startegi","startegylist","startegylist)","startswith(str","startswithb","static","static\";","staticproxi","staticproxy()","staticproxy();","static的","step","stopwatch\"","store","store)","strategi","strategy)","strategy.algorithmstartegy();","strategy;","strategylist","strategylist.add(clazz);","strategylist;","strategy{","stream","streams(管道)","strictfp","string","string.class);","string.valueof(from","string.valueof(from);","string.valueof(s.charat(0));","string::isempty;","string[]","string[][]","stringbuff","stringbuffer(sql);","stringcollect","stringcollection.add(\"aaa1\");","stringcollection.add(\"aaa2\");","stringcollection.add(\"bbb1\");","stringcollection.add(\"bbb2\");","stringcollection.add(\"bbb3\");","stringcollection.add(\"ccc\");","stringcollection.add(\"ddd1\");","stringcollection.add(\"ddd2\");","stringconvert","stringconverter.convert(2);","stringconverter1","stringconverter2","struct","stylus\":","subject","subject.class.getinterfaces());","subject.saygoodbye();","subject.sayhello();","subkey","substitut","subtitl","success","suit","sun","super(paraminvocationhandler);","supplier","supplier.get();","suppliers(生产者)","suppliers产生一个给定的泛型类型的结果。与functional不同的是suppliers不接受输入参数。","supportsipv6onio","svn","switch","switch语句","sylvest","sylvester.getdayofweek();","sylvester.getlong(chronofield.minute_of_day);","sylvester.getmonth();","sync","synchron","syntax","system.getsecuritymanager();","system.nanotime();","system.out.println(\"curr","system.out.println(\"goodby","system.out.println(\"grandpar","system.out.println(\"hello","system.out.println(\"hello,","system.out.println(\"i","system.out.println(\"item","system.out.println(\"par","system.out.println(allstartswitha);","system.out.println(anystartswitha);","system.out.println(converted);","system.out.println(count);","system.out.println(dayofweek);","system.out.println(hint);","system.out.println(hints1.value().length);","system.out.println(hints2.length);","system.out.println(hoursbetween);","system.out.println(item);","system.out.println(legacydate);","system.out.println(minuteofday);","system.out.println(minutesbetween);","system.out.println(month);","system.out.println(nam","system.out.println(nonestartswithz);","system.out.println(now1.isbefore(now2));","system.out.println(s.charat(0)));","system.out.println(startswithb);","system.out.println(string);","system.out.println(string.format(\"parallel","system.out.println(string.format(\"sequenti","system.out.println(stringcollection);","system.out.println(this.nam","system.out.println(val));","system.out.println(xmas);","system.out.println(zone1.getrules());","system.out.println(zone2.getrules());","system.out.println(zoneid.getavailablezoneids());","t","t,","t0","t0);","t1","t2)。","t;","t_user","t_user\",","t_user(name,","tag","tag\":","tag_dir","tag_map","tags:","tag目录","tar","targetclass","targetclass)","targetclass.getclass().getdeclaredmethod(method.getname(),","targetclass;","tempor","test","test2","testgeneratorproxi","testproxygen","testproxygen(invocationhandl","testscopes()","text","text]","text]]","that'","theme","think","this.","this.act","this.bean","this.beankey","this.control","this.firstnam","this.getbean(autowired.value());","this.getbootstrap(classname);","this.getviewpath(view);","this.h.invoke(this,","this.init","this.lastnam","this.nam","this.outfit","this.path","this.registerbean(clazz);","this.rout","this.routers.addroute(path,","this.routers.addroute(routers.getroutes());","this.routes)","this.strategi","this.targetclass","this;","thread","thread.currentthread().getcontextclassloader();","through","through)。这个特殊的注释并不需要在最后一个语句组(一般是default)中出现。示例:","throughput:","through:注释","throw","time:","time_format","timeunit.nanoseconds.tomillis(t1","timezon","time库可以媲美,但它们是不一样的。下面的例子涵盖了这个新的api最重要的部分。","time,每连接响应用户时间。","tip:","tip:一个常见的错误是把简单的javadoc写成/**","tip:不要使用finalize。如果你非要使用它,请先仔细阅读和理解effect","tip:在写多行注释时,如果你希望在必要时能重新换行(即注释像段落风格一样),那么使用/*","tip:如果有一些相关信息是需要读者了解的,那么以上的例外不应作为忽视这些信息的理由。例如,对于方法名getcanonicalname,","tip:对齐可增加代码可读性,但它为日后的维护带来问题。考虑未来某个时候,我们需要修改一堆对齐的代码中的一行。","titl","title:","titlecas","today","today.plus(1,","tointeg","tointeger.andthen(string::valueof);","tomorrow","tomorrow.minusdays(2);","took:","tostring()","tower","trans/sec","transact","transaction:","transactions:","transferred:","transient","tree","tri","true","true,","true;","try/catch/finally)","type","type)","type:","unalign","undeclaredthrowableexception(localthrowable);","unicom","unitabbrev","updat","update(request","update(sql,","update(str","updated:","uri","uri(path);","uri);","uri,","uri.getpath();","urisyntaxexcept","uri:\"","url","url,","urllist.txt","url文件就是一个文本,每行都是一个url,它会从里面随机访问的。","us","user","user);","user,","user.class);","user.class,","userconfig=$home/.cnpmrc\"","userconfig=$home/.cnpmrc\"'","usercontrol","userid=jack;","username@host:/path/to/repositori","users(request","users);","ut","utf","v","v));","v);","val","val)","val33","val9","val9concat","valu","value()","value();","value)","value)、setint(object","value)等。","value),obj表示操作的目标对象,通过value为目标对象的成员变量设置值。如果成员变量为基础类型,用户可以使用field类中提供的带类型名的值设置方法,如setboolean(object","value.concat(newvalue));","value;","values.parallelstream().sorted().count();","values.stream().sorted().count();","valuesmap","valuesmap.get(subkey);","veri","verifi","version","version=1","view","view){","view,","view;","viewpath","viewpath.replaceall(\"[/]+\",","viewprfix","viewprfix.equals(\"\"))","viewsuffix","viewsuffix.equals(\"\"))","viewsuffix;","visibl","void","volatil","volatile。","vp","vultr","v命令查看nodejs版本。","v表示valu","w,","wasn't","watch","weakcach","weakcache<>(new","weakcache[],","web","webbench","webbench是linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力。","web性能测试工具","web服务器性能压力测试工具","web程序是基于","wed","wednesday","welcom","well,这是对girl最好的方法,只要想办法贿赂了girl的父母,并把boy交给他。那么我们就可以轻松的和girl来kiss了。看来几千年传统的父母之命还真是有用哦。至少boy和girl不用自己瞎忙乎了。","while循环的作用就是不停的获取实现invokehandler的类,这个类可以是从缓存中拿到,也可是是从proxyfactoryclass生成的。","while语句一起使用,即使只有一条语句(或是空),也应该把大括号写上。","wide","width:","window","words”)。","world","world!');","world\");","world\",","world\"创建一篇叫hello","world的文章。","wrap","wrapping)。","writer","writer)","writer);","written","x","x,","x;","xma","xml","xml\";","xmlgener","xmlhttprequest","xmltype","xmltype;","y:","yaml方式,以三短线结束","yesterday","yourself.","youtubeimport","youtubeimporter*","yyyi","yyyy,一般我们喜欢使用yyyi","zone1","zone2","zoneid","zoneid.of(\"brazil/east\");","zoneid.of(\"europe/berlin\");","zonerules[currentstandardoffset=","zonerules[currentstandardoffset=+01:00]","zxvf","{","{\"these\",","{%","{0,","{5,","{@codefoo}","{{","{}","{};","|","||","|定制提交消息(默认为","|日期格式,默认为mmm","|时间格式,默认为h:mm:ss|","}","})).booleanvalue();","});","},","};","}els","}}","}}`","}都是可以的。","~/.zshrc","“12:30之前送过来”,你叫","“张三丰”","①","②","③","④","⑤","└──","├──","⼼心要展示在屏幕上的用户数据格式,也不关⼼心这些用户数据从哪里来。它只需要从持久层得到数据,执行与","。","一、电商案例的原因","一、策略模式的定义","一个java.util.stream代表一个序列的元素在其中的一个或多个可以执行的操作。流操作是中间或终端。当终端操作返回某一类型的结果时,中间操作返回流,这样就可以将多个方法调用在一行中。流是一个源产生的,例如java.util.collection像列表或设置(不支持map)。流操作可以被执行的顺序或并行。","一个mvc框架里","一个代表响应服务端资源(如页面)版本的报文头属性,如果某个服务端资源发生变化了,这个etag就会相应发生变化。它是cach","一个新命令:","一个源文件包含(按顺序地):","一个空的块状结构里什么也不包含,大括号可以简洁地写成{},不需要换行。例外:如果它是一个多块语句的一部分(if/els","一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能察觉到基类对象和子类对象的区别。比如,假设有两个类,一个是base类,一个是derived类,并且derived类是base类的子类。那么一个方法如果可以接受一个基类对象b的话:method1(bas","一个软件实体应当对扩展(例如对抽象层的扩展)开放,对修改(例如对抽象层的修改)关闭。即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。","一个顶级类(只有一个)","一个项目可以选择一行80个字符或100个字符的列限制,除了下述例外,任何一行如果超过这个字符数限制,必须自动换行。","一些用于读取请求报文头的api:","一旦","一旦初始化,你的项目文件夹是这个样子:","一旦安装了hexo,运行以下命令初始化hexo在目录","一旦服务器安装,运行以下命令启动服务器。","一次以保证尽量与官方服务同步。","一款开源的压力测试工具,可以根据配置对一个web站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。","一级缓存,缓存数据字典,和常用热点数据等基本不可变/有规则变化的信息,二级缓存缓存需要的所有缓存。当一级缓存过期或不可用时,访问二级缓存的数据。如果二级缓存也没有,则访问数据库。","一般形式","一般来说,单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。上述所说都是线程安全的实现,文章开头给出的第一种方法不算正确的写法。","一般网站,刚开始的做法,是三台服务器,一台部署应用,一台部署数据库,一台部署nfs文件系统。","一般采用cache中间件实现,建议使用redis,因此它有持久化功能,方便分布式session宕机后,可以从持久化存储中加载会话信息;","一行一个语句","一行方法的方法体可以跳过{}和参数类型,使它变得更短:","一起看看spring如何让它生效呢,在","一页显示多少篇文章,0","七、架构总结","三、策略模式中的设计原则","三、网站初级架构","上.","上一节:","上一节:分分钟部署一个hexo环境","上一节:各种配置详解","上面的代码应该是不解自明的:putifabsent避免我们将null写入;foreach接受一个消费者对象,从而将操作实施到每一个map中的值上。","上面的代码运行结果自然是","上面的例子代码可以进一步简化,利用静态方法引用:","上,执行靠","下⾯面的的表⾥里分析了分层架构的各个⽅方⾯面。","下一节:","下一节:原理分析","下一节:各种配置详解","下一节:开始写作吧","下划线可能出现在junit测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test<methodundertest>_<state>,例如testpop_emptystack。","下次你再安装这个模块的时候,","下载","下载地址可以到google搜,我这里给出一个","下载地址:http://soft.vpser.net/test/webbench/webbench","下载地址:http_load","下面举个例子说明说明是ioc:","下面以一个延迟加载的例子来说明一下静态代理。我们在启动某个服务系统时,加载某一个类时可能会耗费很长时间。为了获取更好的性能,在启动系统的时候,我们往往不去初始化这个复杂的类,取而代之的是去初始化其代理类。这样将耗费资源多的方法使用代理进行分离,可以加快系统的启动速度,减少用户等待的时间。","下面依次介绍上面各个文件或者目录的用途:","下面我以一个实际的业务场景来具体实现以下策略模式:","下面是","下面是一个etag:","下面是一个例子:","下面是一个实际的请求报文:","下面是一个测试:","下面是代理模式的类图结构:","下面是策略模式的类图:","下面用一个实例讲解一下jdk中动态代理的用法:","下面的例子演示了如何使用并行流很容易的提高性能。","下面的章节解释最常见的流操作。","下面详细解释","下面,的设置让客户端对响应内容缓存3600秒,也即在3600秒内,如果客户再次访问该资源,直接从客户端的缓存中返回内容给客户,不要再从服务端获取(当然,这个功能是靠客户端实现的,服务端只是通过这个属性提示客户端“应该这么做”,做不做,还是决定于客户端,如果是自己宣称支持http的客户端,则就应该这样实现)。","下,后缀是","不为他人所见的:","不像java.text.numberformat,新的datetimeformatter是不可变的,线程安全的。","不可能满足列限制的行(例如,javadoc中的一个长url,或是一个长的jsni方法参考)。","不处理文章!","不想被渲染的路径","不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了ioc容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是","不要使用组合声明,比如int","不要在一个代码块的开头把局部变量一次性都声明了(这是c语言的做法),而是在第一次需要使用它时才声明。","不要换行","不要记住代码是怎么实现的,更重要的是记住其设计原则。根据原则写代码,","不需要为真实主题写一个形式上完全一样的封装类,假如主题接口中的方法很多,为每一个接口写一个代理方法也很麻烦。如果接口有变动,则真实主题和代理类都要修改,不利于系统维护;","与其它块状结构一致,switch块中的内容缩进为2个空格。","与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题,","与局部变量不同,我们在lambda表达式的内部能获取到对成员变量或静态变量的读写权。这种访问行为在匿名对象里是非常典型的。","专业","业务拆分","业务拆分作用:提升为子系统可由专门的团队和部门负责,专业的人做专业的事,解决模块之间耦合以及扩展性问题;每个子系统单独部署,避免集中部署导致一个应用挂了,全部应用不可用的问题。","业务拆分后:每个子系统需要单独的库;","个例子,从展示层传递来的请求⾸首先会传递到业务层,然后传递到持久层,最后才传递到数据层。","个请求传递给了业务层,业务层也只是传递了这个请求到持久层,持久层对数据库做简单的sql查询获得用户的数据。这个数据按照原理返回,不会有任何的二次处理,返回到界面上。","中。","中也有。你可以执行如下命令创建一个叫做","中了。执行如下命令以将这些改动提交到远端仓库:","中分离了出来,所以它允许你的网页中只包含很少的脚本。","中国联通,中国电信。用户选择某个便民服务时,","中国银行的便民服务包括中国移动手机充值,","中才得以修复,所以在这之后才可以放心使用","中括号是类型的一部分:string[]","中的","中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。","中级篇","中这句话大概做了下面","中配置启用注解方式","中,用","为不分页,默认值为","为了演示分层架构是如何工作的,想象一个场景,如表1","为了解决上面的问题,最简单的方法是将整个","为什么需要依赖:应用程序需要ioc容器来提供对象需要的外部资源;","为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。","为请求对应的url地址,它和报文头的host属性组成完整的请求url,③是协议名称及版本号。","为软件发布创建标签是推荐的。这个概念早已存在,在","主题接口:","主题文件夹。","主题配置,此处填上主题名就ok了,当然在themes目录下一定要有你配置的主题文件夹","举例:","举办双11,双12,三八男人节等活动","之前启动服务器,通常用于生产环境。","之前必须调用某个方法设置参数给它,那样这种单例写法就无法使用了。","之后或者","之后,不存在执行到","之外没有办法访问它,因此它是懒汉式的;同时读取实例的时候不会进行同步,没有性能缺陷;也不依赖","也不能完全避免重排序,主要是","也可能是","也就是被代理的对象。","也就要相应的使用注解的嵌套了,","也是可以的。","了解配置","了(但却没有初始化),所以线程二会直接返回","了)","二、电商网站需求","二、策略模式的实际应用","五、网站架构分析","些层。如表1","交互式添加文件到暂存区:","亲友介绍","亲友介绍,固然是好。如果不满意,尽管另外换一个好了。但是,亲友boyfactory经常是以singleton的形式出现,不然就是,存在于globals,无处不在,无处不能。实在是太繁琐了一点,不够灵活。我为什么一定要这个亲友掺和进来呢?为什么一定要付给她介绍费呢?万一最好的朋友爱上了我的男朋友呢?","亲友介绍:由中间人负责提供boy来见面","什么是ioc?","什么是策略模式","仅服务静态文件","介绍","从","从lambda表达式访问外部变量的作用域是匿名对象非常相似。您可以从本地外部范围以及实例字段和静态变量中访问final变量。","从supplier中获取value,这个value可能是一个工厂或者cache的实","从上面的代码可以看出,要利用jdk中的动态代理。利用静态方法proxy.newinstance(classloader,","从另外一个方面来说,分层隔离使得层与层之间都是相互独立的,架构中的每一层的互相了解都很少。为了","从哪里断开","从技术的角度来说,有很多的方式能够实现这些模块。比如说在java平台中,custom","从本地文件系统载入class文件,如果本地文件系统不存在该class文件,将抛出classnotfoundexception异常。该方法是jvm默认使用的装载机制。","从源码看出代理类的生成是依靠getproxyclass0这个方法,接下来看getproxyclass0源码:","从策略模式的描述以及类图来看真的是非常简单,总结起来就是策略模式定义了一组算法,它们有一个共同的策略行为接口,并且这些算法之间可以互相替换,使算法可以根据场景的不同而改变。","从队列中获取cachekey","仓库。","代理对象和目标对象均实现同一个行为接口。","代理对象是如何创建出来的?","代理对象:","代理模式剖析","代理模式原理及实例讲解","代理模式学习","代理模式定义","代理模式的参与者","代理模式的实现思路","代理模式的角色分四种:","代理类和目标类分别具体实现接口逻辑。","代码出处","代码块","代码块设置","代码目录","代表数据结构。通常来说,模型类将包含取出、插入、更新数据库资料等这些功能。","以上就是此处的策略模式的设计过程,如果需要多种策略的叠加,","以上就是静态代理的一个简单测试例子。感觉可能没有实际用途。然而并非如此。使用代理我们还可以将目标对象的方法进行改造,比如数据库连接池中创建了一系列连接,为了保证不频繁的打开连接,这些连接是几乎不会关闭的。然而我们编程总有习惯去将打开的","以上是对电商网站需求的简单举例,目的是说明(1)需求分析的时候,要全面,大型分布式系统重点考虑非功能需求;(2)描述一个简单的电商需求场景,使大家对下一步的分析设计有个依据。","以上是本次分享的架构总结,其中细节可参考前面分享的内容。其中还有很多可以优化和细化的地方,因为是案例分享,主要针对重要部分做了介绍,工作中需要大家根据具体的业务场景进行架构设计。","以上是电商网站架构案例的分享一共有三篇,从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。","以上每个部分之间用一个空行隔开。","以上预估仅供参考,因为服务器配置,业务逻辑复杂度等都有影响。在此cpu,硬盘,网络等不再进行评估。","以下情况需要使用一个空行:","以下是一个实际的http响应报文:","以下是几个常见的状态码:","以下示例先展示未对齐的代码,然后是对齐的代码:","以创建新的","以前的","以前的版本使用了","以在你的工作目录中","以把各个层分成单独的物理模块或者干脆把整个程序分成多个节点来扩展分层架构,但是总体的关系过于紧","以类命名方式(5.2.2节),后面加个大写的t(如:requestt,","件事情。","任何能表达这个意思的注释都是ok的(典型的是用//","优先匹配原则","优化mysql配置","优化nginx配置","优化tomcat8","优惠域名","会员管理,购物车,结算功能","会在当前目录生成webbench可执行文件,直接可以使用了","会影响到整个程序的发布(或者程序的⼤大部分)。发布必须是按照计划,在⾮非⼯工作时间或者周末进⾏行发布。因此,分层模式导致应⽤用发布⼀一点也不流畅,在发布上降低了灵活性。","会自动在后台进行同步,","伸缩性","但不同的匿名对象变量num没有被声明为final,下面的代码也有效:","但是java8","但是在","但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。","但是特别注意在","但是,目前主流的网站架构已经发生了翻天覆地的变化。一般都会采用集群的方式,进行高可用设计。至少是下面这个样子。","位字符。可以使用下列命令获取提交","作。然而,如果这个比例反过来,大部分的请求都是仅仅穿过层,不做逻辑操作。那么开放一些架构层会比较好。不过由于缺少了层次隔离,项目会变得难以控制。","作为个架构师,你必须证明你的架构模式的决策是正确的,特别是当需要选择一个特定的体系结构模式或方法","作为初始化启动,实现它并遵循filter参数约定即可。","作者名称","你也可以使用少一点的提交","你可以使用淘宝定制的","你可以将该文章关联的资源全部放到该目录下。这样就可以更加方便的使用它们了。","你可以提出更改(把它们添加到暂存区),使用如下命令:","你可以直接通过","你可以看到这两段代码片段几乎是相同的,但并行排序大致是50%的差距。唯一的不同就是把stream()改成了parallelstream()。","你可以编辑","你可用同时部署到多个type,hexo将依次执行每个部署。","你可用在模板中使用它们:","你就会去fix这些问题的了。(言下之意就是大胆去用非ascii字符,如果真的有需要的话)","你懂的!","你最不希望看到的,即找不到页面。如你在google上找到一个页面,点击这个链接返回404,表示这个页面已经被网站删除了,google那边的记录只是美好的回忆。","你最希望看到的,即处理成功!","你的改动现在已经在本地仓库的","你的本地仓库由","使hexo显示草稿。","使用hexo搭建博客系列","使用java8的foreach+lambda表达式遍历map","使用jemeter测试tomcat性能","使用一个接口","使用一个自定义配置文件替换默认_config.yml","使用一些动态代理的生成方法甚至可以在运行时制定代理类的执行逻辑,从而大大提升系统的灵活性。","使用下面的命令创建一个新文章:","使用变体2隐式编译器隐式地设置了@hints注解。这对于通过反射来读取注解信息是非常重要的。","使用大括号(即使是可选的)","使用数据库主备模式,实现数据备份和高可用;","使用类名调用静态的类成员,而不是具体某个对象或表达式。","使用说明","使用集群对应用服务器进行冗余,实现高可用;(负载均衡设备可与应用一块部署)","使链接相对于根文件夹,默认fals","例外:","例外:packag","例外:不言自明的方法","例外:两个连续字段之间的空行是可选的,用于字段的空行主要用来对字段进行逻辑分组。","例外:单个的注解可以和签名的第一行出现在同一行。例如:","例外:在测试中,如果一个捕获的异常被命名为expected,则它可以被不加注释地忽略。下面是一种非常常见的情形,用以确保所测试的方法会抛出一个期望中的异常,","例外:重载","例如","例如在","例如网络连接,存储器中的大对象,文件或者其他无法复制的资源。","例如:","便是,持续更新ing,还有fork项目的同学,貌似没有什么卵用。。。","保存所有bean对象,格式为","保存方法","保持一致,业务层不会受到重构的影响,它和展示层所使用的界面架构完全独立。","修改信息","修改设置。一个有效的部署设置必须有","修改默认布局。","假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:","假如你操作失误(当然,这最好永远不要发生),你可以使用如下命令替换掉本地改动:","假设我们的web框架名称是","假设我们要设计一个girl和一个boy类,其中girl有kiss方法,即girl想要kiss一个boy。那么,我们的问题是,girl如何能够认识这个boy?","假设:高峰期为平常值的三倍,则每秒的并发数可以达到8340次。","做任何事情都需要做好规划,那么我们在开发博客系统之前,同样需要做好项目的规划,如何设置目录结构,如何理解整个项目的流程图,当我们理解了应用的执行过程,那么接下来的设计编码就会变得相对容易了","像","像cookie,location这些响应头是有福之人,httpservletresponse为它们都提供了vip(非api","允许,但没有理由要这样做","允许,但这样做显得笨拙还容易出错","免费)","免费ss","免费vpn/ssh服务","免费虚拟主机","全品类的电子商务网站","全局唯一对象完成,将它设计为单例。","公司在开发项⺫⽬目的都是通过层来区分技术的,这种模式对于⼤大多数的商业项目开发来说都很合适。公司的组织架构和他们软件架构之间的联系被戏称为\"conway'","六、网站架构优化","关于etag的说明,你可以参见:http://en.wikipedia.org/wiki/http_etag。","关键概念","其他技术","其他的功能参考京东或国美在线等网站。","其他的术语说明会偶尔在后面的文档出现。","其他的略~","其它http请求报文头属性","其它报文头属性","其实ioc对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在ioc/di思想中,应用程序就变成被动的了,被动的等待ioc容器来创建并注入它所需要的资源了。","其实框架只是工具,没有好与不好,只有适合与不适合,适合自己的就是最好的,所以教会大家自己动手写框架,那么不同的需求都可以用自己的思路去实现。","具体的实现我们先写一个jsp的,当你在使用servlet进行开发的时候已经习惯了这句语法:","具体结构","内存模型)是存在缺陷的,即时将变量声明成","内建的图形化","内置函数式接口(built","再把新建的分支删掉:","再次注意到几个静态的初始化块,这里的静态初始化块就是对代理的接口列表以及hashcode,tostring,","再进一步可以根据分布式session,建立完善的单点登录或账户管理系统。","写作设置","写入对象","写给java开发的运维笔记","准备url文件:urllist.txt,文件格式是每行一个url,url最好超过50-100个测试效果比较好。","准备启程","函数式接口(function","分分钟部署一个hexo环境","分层架构","分层架构中的每一层都着特定的角色和职能。举个例子,展示层负责处理所有的界面展示以及交互逻辑,业","分层架构是一个很可靠的架构模式。它适合大多数的应用。如果你不确定在项目中使用什么架构,分层架构","分层架构是一种很常⻅见的架构模式,它也叫n层架构。这种架构是大多数jave","分层架构模式里的组件被分成几个平行的层次,每一层都代表了应用的一个功能(展示逻辑或者业务逻辑)。","分层架构的一个突出特性是组件间关注点分离","分布式大型网站,目前看主要有几类1.大型门户,比如网易,新浪等;2.sns网站,比如校内,开心网等;3.电商网站:比如阿里巴巴,京东商城,国美在线,汽车之家等。大型门户一般是新闻类信息,可以使用cdn,静态化等方式优化,开心网等交互性比较多,可能会引入更多的nosql,分布式缓存,使用高性能的通信框架等。电商网站具备以上两类的特点,比如产品详情可以采用cdn,静态化,交互性高的需要采用nosql等技术。因此,我们采用电商网站作为案例,进行分析。","分布式部署:将业务拆分后的应用单独部署,应用直接通过rpc进行远程通信;","分库分表后序列的问题,join,事务的问题,会在分库分表主题分享中,介绍。","分库后,如果表中有数据量很大的,则进行分表,一般可以按照id,时间等进行分表;(高级的用法是一致性hash)","分支","分支名称","分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master","分析:因为组件都处于各⾃自的层次中,可以模拟其他的层,或者说直接去掉层,所以分层模式很容易测试。开发者可以单独模拟⼀一个展⽰示组件,对业务组件进⾏行隔绝测试。还可以模拟业务层来测试某个展⽰示功能。","分析:在开发难度上⾯面,分层架构得到了⽐比较⾼高的分数。因为这种架构对⼤大家来说很熟悉,不难实现。⼤大部分","分析:尽管某些分层架构的性能表现的确不错,但是这个模式的特点导致它⽆无法带来⾼高性能。因为⼀一次业务请求要穿越所有的架构层,做了很多不必要的⼯工作。","分析:总体灵活性是响应环境变化的能⼒力。尽管分层模式中的变化可以隔绝起来,想在这种架构中做⼀一些也改","分析:由于这种模式以紧密耦合的趋势在发展,规模也⽐比较⼤大,⽤用分层架构构建的程序都⽐比较难以扩展。你可","分析:这取决于你怎么发布这种模式,发布程序可能⽐比较⿇麻烦,尤其是很⼤大的项目。⼀一个组件的⼩小⼩小改动可能","分类","分类和标签只支持在文章。分类可能会有多层级别。","分类目录","分类管理,商品管理","分类缩略名","分配内存","分隔任何保留字与其前面的右大括号(})(如else,","分隔任何保留字与紧随其后的左括号(()(如if,","分页","分页目录,默认值为page","切换回主分支:","列出所有路由","列限制:80或100","创建一个maven项目","创建一个叫做“feature_x”的分支,并切换过去:","创建一篇文章,如果不指定layout,那么就使用_config.yml中default_layout的值,标题中如果有空格,将整个title放到引号中。","创建具体的策略类,","创建好的基本结构是这样的","创建年份","创建新仓库","创建新文件夹,打开,然后执行","初始化一下","初始化一个网站。如果没有提供folder,hexo会在当前目录设置网站。","初始化上下文","初始化操作系统","初始化数据库配置","初始化注入","初始化装配","初级篇","删除","删除一个bean","删除缓存文件db.json以及生成的public目录,当你修改了某些样式或者配置时,如果发现hexo","判断是否使用了class类型bean(是:根据class查找bean,如果查找不到则创建一个无参构造函数的bean)","判断是否使用了自定义命名的对象(是:根据name查找bean)","别名:code","别名:quot","制表符不用于缩进。","前几位,只要它的指向具有唯一性。","前文提到proxyfactoryclass.apply是真正生成代理类的方法,这其实是不准确的。源代码读到这里,我们会发现proxygenerator.generateproxyclass才是真正生成代理类的方法。","前置申明","前置申明的意思是写在文章前面的一块内容,为了对文章进行某些设置。它有两种书写方式:","前言","前面hexo提到一个特殊的布局:draft。","前面这4种标记如果出现,描述都不能为空。","剑圣买了5毛钱特效,装逼成功!","剑圣在gank!!。","功能需求","加星号处表示可以,但不推荐。","务层负责处理请求对应的业务。架构里的层次是具体工作的高度抽象,它们都是为了实现某种特定的业务请","动态代理","动态代理将每个方法的执行过程则交给了invoke方法处理。","动态代理是指在运行时动态生成代理类。即,代理类的字节码将在运行时生成并载入当前代理的","助你入门","包名","包名全部小写,连续的单词只是简单地连接起来,不使用下划线。","包名是","包含一个新的日期和时间api,在java.time包下。新的日期api与joda","包含一个生成报文的方法public","十分优雅,易于人们辨识记忆。","单个的大写字母,后面可以跟一个数字(如:e,","单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可能会帮助到你。","单元测试类中的测试方法可能是不言自明的最常见例子了,我们通常可以从这些方法的描述性命名中知道它是干什么的,因此不需要额外的文档说明。","单点登录(分布式session)","占位符","即代理类的所实现的行为接口。","即使局部变量是final和不可改变的,也不应该把它示为常量,自然也不能用常量的规则去命名它。","即,不要出现类似这样的import语句:import","压缩支持)","原文出处","原理分析","去","去nodejs的官网下载:https://nodejs.org/en/download/","参数","参数了解了,我们来看运行一条命令来看看它的返回结果如下:","参数众多,一般我们用到的是","参数其实可以自由组合,参数之间的选择并没有什么限制。","参数名","参数名以lowercamelcase风格编写。","参数和局部变量注解没有特定规则。","参数应该避免用单个字符命名。","参考京东或国美在线","参考文献","参考条件","参考资料:","参考部署方案2","参见:http://en.wikipedia.org/wiki/list_of_http_header_field","双重检验锁","双重检验锁模式(doubl","发布为草稿","发布时间","发布时间,默认为文件创建时间","取消java语言访问检查以访问private变量","变也是并且费时费⼒力的。分层模式的笨重以及经常出现的组件之间的紧耦合是导致灵活性降低的原因。","变体1:使用注解容器(老方法)","变体2:使用可重复注解(新方法)","变量了,在第一次加载类到内存中时就会初始化,所以创建实例本身是线程安全的。","变量前后的代码仍然存在重排序问题。这个","变量声明","变量声明成","变量的写操作都先行发生于后面对这个变量的读操作(这里的“后面”是时间上的先后顺序)。","变量的赋值操作后面会有一个内存屏障(生成的汇编代码上),读操作不会被重排序到内存屏障之前。比如上面的例子,取操作必须在执行完","另一种实用的方法:","只是永远不打算改变对象一般是不够的,它要真的一直不变才能将它示为常量。","只有","只有一个顶级类声明","只要是合法的,就把@override注解给用上。","可以使用各种匹配操作来检查某个谓词是否匹配流。所有这些操作都是终止操作,返回一个布尔结果。","可以发邮件给我","可以在线与客服沟通","可以把","可以看出proxy全是静态方法,因此如果代理类没有实现任何接口,那么他就是proxy类型,没有实例方法。","可测试性","可用域名","可选的javadoc","可靠性:即时通讯","右大括号前换行","各种配置详解","合并操作先看map中是否没有特定的key/value存在,如果是,则把key/value存入map,否则merging函数就会被调用,对现有的数值进行修改。","合并(merge)","同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则,","同步模块","名字从散文形式(prose","后台给定一个视图位置,输出到前端jsp或者其他模板引擎上,做一个非常简单的接口:","否则不换行。例如,如果右大括号后面是else或逗号,则不换行。","否处于反污水模式。大概有百分之二十的请求仅仅是做简单的穿越,百分之八十的请求会做一些业务逻辑操","吧~","启动一个本地服务,默认情况下访问","告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊!","命令","命令移动草稿到","命令行创建","命令行工具代替默认的","命令行才有此功能:","命令马上同步一个模块,","命名约定","和","和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果。","哈):","响应报文体,即我们真正要的“干货”。","响应报文头,也是由多个属性组成;","响应报文结构","响应状态码","响应输出到客户端后,服务端通过该报文头属告诉客户端如何控制响应内容的缓存。","哦):","哪里需要使用javadoc","唐僧:我哪有桃啊!去王母娘娘那找吧","商品打分评价","商品评论","四、系统容量预估","因为我们安装了淘宝的npm,所以需要使用","因为路由的量很大之后遍历的效率会降低,但这样是可以实现的,如果你有更好的方法可以告诉我","因此在这里就没有必要加注释。","围着着这个主架构还有一些外围的产品。比如监控和审计。","图形化客户端","图片存储的要求(海量小图片)","图解","在","在,","在boostrap的init方法中使用","在googl","在google其它编程语言风格中使用的特殊前缀或后缀,如name_,","在hexo3中,服务器模块从主模块中分开了,你可以通过安装","在java8中collections类的功能已经有所增强,你可用调用collection.stream()或collection.parallelstream()。","在java8中使用foreach+lambda表达式遍历list","在java8中注解是可以重复的,让我们深入到一个示例中。","在java8中,利用default关键字使我们能够添加非抽象方法实现的接口。此功能也被称为扩展方法,这里是我们的第一个例子:","在java中,classloader是一个抽象类,位于java.lang包中。下面对该类的一些重要接口方法进行介绍:","在lambda表达式里修改num也是不允许的。","在mario中我们把控制器放在路由对象的controller字段上,实际上一个请求过来之后最终是落在某个方法去处理的。","在mario中我们设计一个路由的对象如下:","在test中,使用了几个重要的反射类,分别是classloader、class、constructor和method,通过这些反射类就可以间接调用目标class的各项功能了。在①处,我们获取当前线程的classloader,然后通过指定的全限定类\"com.biezhi.ioc.hero\"装载hero类对应的反射实例。在②处,我们通过hero的反射类对象获取hero的构造函数对象cons,通过构造函数对象的newinstrance()方法实例化hero对象,其效果等同于new","在一个switch块内,每个语句组要么通过break,","在下一章节我们需要对请求处理做设计了~","在下一节中我们就要和数据库打交道了,尝试新的旅程吧","在代理类中调用目标对象的行为接口。","在代理类的构造函数中实例化一个目标对象。","在任何二元或三元运算符的两侧。这也适用于以下“类运算符”符号:","在任何左大括号前({),两个例外:","在使用unicode转义符或是一些实际的unicode字符时,建议做些注释给出解释,这有助于别人阅读和理解。","在函数体内,语句的逻辑分组间使用空行。","在分库,分表的基础上,进行读写分离;","在合并改动之前,你可以使用如下命令预览差异:","在我们中国,常见的mm与gg的认识方式有以下几种:","在我们开始之前,你必须在","在新标签中打开一个外部链接,默认为true","在服务端可以通过httpservletresponse的api写响应报文头的属性:","在本文档中,除非另有说明:","在看","在线客服功能","在线工具","在线支付或货到付款","在线给图片加水印","在虚拟机里安装centos6","在装配的时候步骤如下:","在访问private、protected成员变量和方法时必须通过setaccessible(boolean","在这两种情况下,git","在这个例子中,新的服务层是处于业务层之下的,展示层不能直接访问这个服务层中的组件。但是现在业务","在这个模式中,请求流只是简单的","在这篇文章中我将向你演示如何使用java8中的foreach操作list和map","在这里我们不提及太麻烦的东西,因为初步目标是实现mvc框架,所以给大家提醒一下有些了解即可。","在静态模式下,public","块。这个模块能找到业务层里对应的模块处理对应数据(约束关系)。业务层里的custom","块注释与其周围的代码在同一缩进级别。它们可以是/*","块注释风格","块缩进:2个空格","垂直空白","基本工作流程的第一步;使用如下命令以实际提交改动:","基本格式总是ok的。当整个javadoc块能容纳于一行时(且没有javadoc标记@xxx),可以使用单行形式。","基本用法:","增删改查","处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。","处理发生,责任在服务端,如服务端抛出异常,路由出错,http版本不支持等。","处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.","多个连续的空行是允许的,但没有必要这样做(我们也不鼓励这样做)。","多种在线支付方式","多级缓存","大型网站一般需要做以下架构优化(优化是架构设计时,就要考虑的,一般从架构/代码级别解决,调优主要是简单参数的调整,比如jvm调优;如果调优涉及大量代码改造,就不是调优了,属于重构):","大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。","大型网站架构系列:电商网站架构案例","大型网站需要存储海量的数据,为达到海量数据存储,高可用,高性能一般采用冗余的方式进行系统设计。一般有两种方式读写分离和分库分表。","大括号","大括号与if,","大量应用存在冗余代码","好了,深入的不说了,我们不是学spring的,只是知道一下ioc在spring中高大上的形象,接下来步入正轨,开始设计一个ioc容器","好伸缩性的方向发展,⽽而其他架构模式会让程序朝着高度灵活的方向发展。知道了这些特点,了解架构模式","好莱坞法则:“别找我们,我们找你”;即由ioc容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。","如上图每个应用单独部署","如上所述的数据流可以是连续的或平行的。在一个单独的线程上进行操作,同时在多个线程上执行并行操作。","如下图:","如下报文头相当于告诉服务端,俺客户端能够接受的响应类型仅为纯文本数据啊,你丫别发其它什么图片啊,视频啊过来,那样我会歇菜的~~~:","如以下设置,相当于让服务端将对应请求返回的响应内容不要在客户端缓存(当然响应报文也是通过响应报文头通知浏览器客户端的,这个下面再说):","如何写http请求报文头","如何正确地写出单例模式","如何理解好ioc呢?理解好ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:","如何设计一个javaweb","如何访问请求报文头","如何适应java","如果403的类型过多,那可能要注意是否系统遇到了瓶颈。","如果jvm的安全管理器设置了相应的安全机制,调用该方法将抛出securityexception。","如果一个文件包含许可证或版权信息,那么它应当被放在文件最前面。","如果一个方法重载了超类中的方法,那么javadoc并非必需的。","如果不为空则返回。","如果你不希望你的文章被处理,你可以设置","如果你喜欢,star","如果你想修改端口或遇到","如果你说机器学习,至少现在好像没人用吧。","如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:","如果单独的库太大,可以根据业务特性,进行再次分库,比如商品分类库,产品库;","如果右大括号是一个语句、函数体或类的终止,则右大括号后换行;","如果在一条语句后做注释,则双斜杠(//)两边都要空格。这里可以允许多个空格,但没有必要。","如果在赋值运算符处断开,通常的做法是在该符号后断开(比如=,它与前面的内容留在同一行)。这条规则也适用于foreach语句中的分号。","如果在非赋值运算符处断开,那么在该符号前断开(比如+,它将位于下一行)。注意:这一点与google其它语言的编程风格不同(如c++和javascript)。","如果它确实是不需要在catch块中做任何响应,需要做注释加以说明(如下面的例子)。","如果实现接口列表的代理类已经存在,那么直接从cache中拿。如果不存在,则通过proxyclassfactory生成一个。","如果找到","如果是远端服务器上的仓库,你的命令会是这个样子:","如果理解了设计原则,","如果网址是次级目录,比如:http://example.com/blog,那么就要设置url为http://example.com/blog,并且root要设置为/blog/。","如此你就能够将你的改动推送到所添加的服务器上去了。","字段。例如:","存储bean和name的关系","存入会话时,可以设置会话保持的时间,比如15分钟,超过后自动超时;","存放所有路由","学习策略模式,","它也不会是一个完整的祈使句,如save","安全模式,使所有插件和脚本不生效","安装","安装hexo","安装jdk环境","安装mysql及配置","安装nginx","安装nodej","安装redis3","安装svn服务","安装tomcat","安装了.","安装了apache一般就自带了。","安装很简单","安装所有模块.","安装模块","安装非常简单","官网的安装说明是","定义一个主题接口","定义一个代理类,来代理目标对象","定义一个场景类用于生成xml报文public","定义一个客户端","定义一个目标类,","定义一个算法使用场景public","定义一组具体策略类:@xmltype(\"default\")","定义两个具体的策略类:public","定义策略接口","定期举办双11,双12,三八男人节等活动;","实例的创建是依赖参数或者配置文件的,在","实战","实现","实用小贴士","实用工具/api","实际执行方法","客户就是客户,不会告诉你具体要什么,只会告诉你他想要什么,我们很多时候要引导,挖掘客户的需求。好在提供了明确的参考网站。因此,下一步要进行大量的分析,结合行业,以及参考网站,给客户提供方案。","客户端","客户端代码实例","客户端想要调用目标对象的行为接口,只能通过代理类来操作。","客户端接受什么类型的响应。","客户端调用situat","客户需求:","客户需求:3~5年用户数达到1000万注册用户;","容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。","容器简单实现","容量预估:70/90原则","密,这样很难扩展。","对","对于java开发人员,掌握基本的运维技能是必须的,如果你还不熟悉linux环境,可以看这个教程。如果你觉得这个笔记还不错记得给这个项目一个","对于spring","对于具有特殊转义序列的任何字符(\\b,","对于剩余的非ascii字符,是使用实际的unicode字符(比如∞),还是使用等价的unicode转义符(比如\\u221e),取决于哪个能让代码更易于阅读和理解。","对于包外不可见的类和方法,如有需要,也是要使用javadoc的。如果一个注释是用来定义一个类,方法,字段的整体目的或行为,","对于简单明显的方法如getfoo,javadoc是可选的(即,是可以不写的)。这种情况下除了写“return","对于那些不是明确强制要求的,我们尽量避免提供意见。","对于非空块和块状结构,大括号遵循kernighan和ritchie风格","对应的是","对所有标识符都通用的规则","对接进销存","对照上面的请求报文,我们把它进一步分解,你可以看到一幅更详细的结构图:","对程序员来说很常见一种情况是在没有合理的程序架构时就开始编程,没有一个清晰的和定义好的架构的时候,大多数开发者和架构师通常会使用标准式的传统分层架构模式(也被称为多层架构)—通过将源码模块分割为几个不同的层到不同的包中。不幸的是,这种编码方式会导致一系列没有组织性的代码模块,这些模块缺乏明确的规则、职责和同其他模块之间的关联。这通常被称为架构大泥球。","对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的。","对象中,运行代码的结果(这里是例子,代码不能运行的)就是:","将instance对象指向分配的内存空间(执行完这步","将前缀的文件名后创建日期。你可以使用以下的占位符:","将多个子系统公用的功能/模块,进行抽取,作为公用服务使用。比如本案例的会员子系统就可以抽取为公用的服务。","将字符串解析为localdate:","将类文件的字节数组转换成jvm内部的java.lang.class对象。字节数组可以从本地文件系统、远程网络获取。name为字节数组对应的全限定类名。","小鱼人购买了爆裂魔杖","就不应该忽视文档说明,因为读者很可能不知道词语canon","就为非","就会直接从","就可以了。","就我个人而言,一般情况下直接使用饿汉式就好了,如果明确要求要懒加载(lazi","就是放js文件的地方","就此代理模式分析到此结束。","尽管分层架构没有规定自⾝身要分成几层几种,大多数的结构都分成四个层次:展示层,业务层,持久层,和数","局部变量名","局部变量名以lowercamelcase风格编写,比起其它类型的名称,局部变量名可以有更为宽松的缩写。","局部变量在声明时最好就进行初始化,或者声明后尽快进行初始化。","层。","层还要通过服务层才能访问到持久层,这一点也不合理。这是分层架构中的老问题了,解决的办法是开放某","层隔离就是说架构中的某一层的改变不会影响到其他层:这些变化的影响范围限于当前层次。如果展示层能够","屏蔽重排序的问题在","展示在用户面前。","属于约束条件伸缩性,可扩展性","属于约束条件对接时要考虑数据一致性,鲁棒性","峰值预估:平常量的2~3倍;","工作流","工作目录,它持有实际文件;第二个是","左大括号前不换行","左大括号后换行","已经是非","已经注入到","已达到通信目的。","布局","希望能够支持3~5年,业务的发展;","带参数更新","帮助","常见的http响应报文头属性","常见的http请求报文头属性","常量名","常量名命名模式为constant_case,全部字母大写,用下划线分隔单词。那,到底什么算是一个常量?","并","并不存在唯一正确的方式来命名测试方法。","并且与前一行的*对齐。以下示例注释都是ok的。","并且会让你从官方","并发数","并发访问进程数","并实现主题接口","库存子系统:读取消息队列信息,完成减库存;","库的asp模块来访问业务层中的c#模块,用ado来实现用户和订单数据的访问模块。","应用于字段的注解紧随文档块出现,应用于字段的多个注解允许与字段出现在同一行。例如:","应用数据。从它可以看出hexo版本信息,以及它所默认或者说依赖的一些组件。","应用数据,默认安装了","应用的","应用程序缺乏合理的架构一般会导致程序过度耦合、容易被破坏、难以应对变化,同时很难有个清晰的版本或者方向性。这样的结果是,如果你没有充分理解程序系统里每个组件和模块,就很难定义这个程序的结构特征。有关于程序的部署和维护的基本问题都难以回答,比如:程序架构是什么规模?应用程序有什么性能特点?应用程序有多容易应对变化?应用程序的部署特点是什么?架构是如何反应的?","应用集群部署(分布式部署,集群部署和负载均衡)","建立一个全品类的电子商务网站(b2c),用户可以在线购买商品,可以在线支付,也可以货到付款;","建立路由、数据库、视图相关的包和类,下面是结构:","开发者指南","开启日志","开始写作","开始写作吧","开放和封闭层的概念确定了架构层和请求流之间的关系,并且给设计师和开发人员提供了必要的信息理解架","开源组件实现","开源软件)","开闭原则的关键,在于抽象。策略模式,是开闭原则的一个极好的应用范例。","开闭原则(open","引用一本书","引用网络上一篇文章","引用自twitter","当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数/方法。","当你运行这个命令,要尝试在","当创建一篇文章,hexo将构建基于","当前","当存在连续自动换行时,缩进可能会多缩进不只4个空格(语法元素存在多级时)。一般而言,两个连续行使用相同的缩进当且仅当它们开始于同级语法元素。","当安装的时候发现安装的模块还没有同步过来,","当描述无法在一行中容纳,连续行需要至少再缩进4个空格。","当服务器正在运行时,hexo将自动监控文件更改和更新。你不需要重新启动服务器。","当然,","当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的cpu、men进行分析,才能得出结论。","当然加入你要是非要代理一个没有实现某个接口的类,同时该类的方法与其他接口定义的方法相同,利用反射也是可以轻松实现的。","当被问到要实现一个单例模式时,很多人的第一反应是写出如下的代码,包括教科书上也是这样教我们的。","当需要一个复杂对象的多份副本时,代理模式可以结合享元模式以减少存储器的用量。典型做法是创建一个复杂对象以及多个代理者,每个代理者会引用到原本的对象。而作用在代理者的运算会转送到原本对象。一旦所有的代理者都不存在时,复杂对象会被移除。","彩色的","很多貌似神奇的网页监控软件(如著名的","很糟,读者根本看不出这是什么","微博一键清理工具","德玛买了5毛钱的特效,装逼成功!","德玛西亚之力购买了神盾","快到中午了,张三丰不想去食堂吃饭,于是打电话叫外卖:老板,我要一份[鱼香肉丝],要12:30之前给我送过来哦,我在江湖湖公司研发部,叫张三丰。","怎么用可以参考","性能","总结","息由客户数据和订单数组组成(客户下的订单)。","息,调用order","悟空:师傅给个桃吧,走了一天了","您可说到点儿上了,几乎在任何框架中都必须有配置这项,所谓的零配置都是扯淡。不管硬编码还是配置文件方式,","懒汉式,线程不安全","懒汉式,线程安全","成功率","我们只需要将","我们可以从lambda表达式的外部范围读取final变量:","我们可以使用任意的接口为lambda表达式,只要接口只包含一个抽象方法。确保你的接口满足要求,你应该添加@functionalinterface注解。当你尝试在接口上添加第二个抽象方法声明时,编译器会注意到这个注释并抛出一个编译器错误。","我们可以通过easysingleton.instance来访问实例,这比调用getinstance()方法简单多了。创建枚举默认就是线程安全的,所以不需要担心doubl","我们在jsp中让页面redirect到一个某个a页面中,其实是让客户端再发一个请求到a页面,这个需要redirect的a页面的url,其实就是通过响应报文头的location属性告知客户端的,如下的报文头属性,将使客户端redirect到iteye的首页中:","我们在spring中是这样获取对象的:","我们将从一个简单例子开始探访java反射机制的征程,下面的hero类拥有一个构造函数、五个方法以及两个属性,如代码清单所示:","我们已经完成了mvc中的c层,还有m和v没有做呢。这一小节来对视图进行设计,从后台到前台的渲染是这样的","我们并没有全面,确定性的准则来决定在每一种情况下如何自动换行。很多时候,对于同一段代码会有好几种有效的自动换行方式。","我们才认为它符合google的java编程风格。","我们把参数给大家简单说明一下。","我们更容易构造有效的角色和强⼒力的模型。这样应用变的更好开发,测试,管理和维护。","我们模拟jdk自己生成一个代理类,","我们没有理由假设读者能记住整个java运算符优先级表。","我们的ioc容器要可以存储对象,还要有注解注入的功能即可。","我们看一下淘宝前几年的架构的例子。","我们要自己设计一个ioc,那么目标是什么呢?","我们通过person::new创建一个人的引用,java编译器会自动选择正确的构造函数匹配personfactory.create的返回。","我使用的就是这个。","我把你redirect到其它的页面,目标的url通过响应报文头的location告诉你。","我比较倾向于使用静态内部类的方法,这种方法也是《effect","我的系统环境:win7_x64","我要啦),只要在你的网页上放上一段javascript,就可以帮你监控流量,全国访问客户的分布情况等报表和图表,其原理就是通过这个referer及其它一些http报文头工作的。","我选用了sql2o作为底层数据库框架作为支持,它的简洁易用性让我刮目相看,后面我们也会写如何实现一个orm框架。","或","或者你直接通过添加","或者是以下单行形式:","所有其它字符串中的空白字符都要进行转义。","所有字段","所有的应用部署在同一台服务器,应用之间耦合严重。需要进行垂直切分和水平切分。","所有的请求在程序中是一个路由,匹配在","所有的静态导入独立成组","所谓静态代理,就是在编译阶段就生成代理类来完成对代理对象的一系列操作。下面是代理模式的结构类图:","执行route方法","执行如下命令以创建一个本地仓库的克隆版本:","执行完毕、2","执行路由方法","执行路由的方法","扩展","扯淡完毕,下一节来进入全局配置设计","找不到你看到的应该是404","找到即执行配置的方法","把短语转换为纯ascii码,并且移除任何单引号。例如:”müller’","把这个结果切分成单词,在空格或其它标点符号(通常是连字符)处分割开。","报文协议及版本;","报文头属性告诉服务端","报文头属性是什么东西呢?我们不妨以一个小故事来说明吧。","拆分后的架构图:","指南和手册","指南说明","指定端口","指定装配的类","指定语言","按一台web服务器,支持每秒300个并发计算。平常需要10台服务器(约等于);[tomcat默认配置是150]","按照官方教程(注意使用","捕获的异常:不能忽视","换成你想要推送的任何分支。","据库层。如表1","接下来开始我们的","接下来,我们将学习如何删除一一个给定的键的条目,只有当它当前映射到给定值:","接下来,我们指定一个person的工厂接口,用于创建person:","接口中的","接口的默认方法","接收用户请求","控制器","控制器对象","控制器的处理部分放在了核心filter中,代码如下:","控制器设计","推出了镜像服务","推荐:如果某个单词已经有了常用的驼峰表示形式,按它的组成将它分割开(如”adwords”将分割成”ad","推送改动","描述","描述|","提取方法或局部变量可以在不换行的情况下解决代码过长的问题(是合理缩短命名长度吧)","插入一条记录","插入引号与作者、来源和文章的标题。","摘要片段","支付过程要安全,数据加密(安全性)多种支付接口灵活切换(灵活性,扩展性)","支持3~5年,业务的发展","放脚本的文件夹,","数据库操作","数据库支持","数据库集群(读写分离,分库分表)","数据文件","数据有关的相应业务逻辑,然后把这些信息传递给展示层。","数据需要频繁访问数据库,数据库访问压力巨大。","数组","数组初始化中,大括号内的空格是可选的,即new","数组初始化可以写成块状结构,比如,下面的写法都是ok的:","数组初始化:可写成块状结构","整体灵活性","文件修改时间","文件名","文件夹。","文件夹。你可以使用","文件夹下找到文件名为","文件夹中添加","文件夹中的相应文件。例如:","文件夹的监控的禁用的。你必须运行","文件格式如下:","文件编码:utf","文章中插入代码块","文章所属分类","文章标签","文章标题","文章永久链接,一般不用写,默认就行","文章的永久网址链接,默认是:year/:month/:day/:title/,指的什么意思?比如我一篇叫『love』的文章是在2012年1月1日写的,那么它对应的链接就是http://yoururl/2012/01/01/love/","新建文章默认文件名,默认值为","新的方法不能总是习惯性地添加到类的结尾,因为这样就是按时间顺序而非某种逻辑来排序的。","方便进行多品类管理(灵活性)网站访问速度要快(高性能)","方式来同步:","方法。但是同步操作只需要在第一次调用时才被需要,即第一次创建单例实例对象时。这就引出了双重检验锁。","方法。其他的例子还有很多,具体需要自己体会。","方法名","方法名或构造函数名与左括号留在同一行。","方法名称","方法名通常是动词或动词短语。","方法名都以lowercamelcase风格编写。","方法和构造函数引用","方法是给外部调用的。","方法的源码:","方法设为同步(synchronized)。","方法,改变为回收到数据库连接池中而不是真正的执行","日均uv量","日志详细信息输出到终端。","日期","日期格式化","时区是由zoneid表示,通过静态工厂方法可以很容易地访问。时区还定义了一个偏移量,用来转换当前时刻与目标时刻。","易于部署","易开发性","映射的path","是http的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。","是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。","是从","是你想要标记的提交","是再好不过的了。然后,从架构的角度上来说,选择这个模式还要考虑很多的东⻄西。","是否启用asset","是否开启评论,默认为true","是否显示未来日期文章,默认为true","是否渲染_drafts目录下的文章,默认为fals","是基于servlet实现的mvc,用一个全局的filter来做核心控制器,使用sql2o框架作为数据库基础访问。","是展示给用户的信息的结构及样式。一个视图通常是一个网页,但是在java中,一个视图也可以是一个页面片段,如页头、页尾。它还可以是一个","是开放的,业务层可以绕过服务层,直接访问数据持久层。这样就非常合理。","是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求url也可以通过类似于“/chapter15/user.html?","是核心的一块,也就是控制器,每个请求的接收,都是由控制器去处理的。","是模型、视图以及其他任何处理http请求所必须的资源之间的中介,并生成网页。","是私有的,除了","是请求方法,get和post是最常见的http方法,除此以外还包括delete、head、options、put、trace。不过,当前的大多数浏览器只支持get和post,spr","是谁调用了invoke?","显示hexo的版本信息到控制台","显示历史记录时,每个提交的信息只显示一行:","显示草稿文章(位于source/_drafts目录下)","普通代码块","普通方式循环list","普通服务组件的架构中添加个分享服务层。在这个例子里,新建一个服务层通常是个好主意,因为从架构上来说,它限制了分享服务访问业务层(也不允许访问展示层)。如果没有隔离层,就没有任何架构来限制展示层访问普通服务,难以进行权限管理。","暂存区(index),它像个缓存区域,临时保存你的改动;最后是","更多...","更多其它的http请求头报文,参见:http://en.wikipedia.org/wiki/list_of_http_header_field","更新","更新与合并","替换本地改动","最后将所有的单词连接起来得到一个标识符。","最后就是这几个方法的调用过程,全都是回调invoke方法。","最重要的一点,每个类应该以某种逻辑去排序它的成员,维护者应该要能解释这种排序逻辑。比如,","月份,单数字,比如4月就是4","月份,如4月为04","有了路由匹配器还不够,这么多的路由我们如何管理呢?再来一个路由管理器吧,下面就创建路由匹配器和管理器2个类:","有些人认为使用","有些响应码,web应用服务器会自动给生成。你可以通过httpservletresponse的api设置状态码:","有兴趣分享技术的","有时,你可能会使用一些不在post中的模版数据,或者你想复用这些数据,","有时,我们有不只一种合理的方式将一个英语词组转换成驼峰形式,如缩略语或不寻常的结构(例如”ipv6″或”ios”)。google指定了以下的转换方案。","服务化","服务器","服务器/域名/ssl证书","服务器session同步耗费大量内存和网络带宽","服务器后台会向银行发送不同的业务xml报文,","服务器预估:(以tomcat服务器举例)","服务端可以设置客户端的cookie,其原理就是通过这个响应报文头属性实现的:","服务端是怎么知道客户端的多个请求是属于一个session的,原来就是通过http请求报文头的cookie属性的jsessionid的值关联起来的!(当然也可以通过重写url的方式将会话id附带在每个url的后后面哦)。","未完待续","未执行之前,被线程二抢占了,这时","本文档中的示例代码并不作为规范。也就是说,虽然示例代码是遵循google编程风格,但并不意味着这是展现这些代码的唯一方式。","本来是可以用一系列的if","本案例在业务拆分的基础上,结合分库分表和读写分离。如下图:","本次分享大纲","本电商网站的需求矩阵如下:","术语class可表示一个普通类,枚举类,接口或是annotation类型(@interface)","术语comment只用来指代实现的注释(implement","术语说明","术语说明:switch块的大括号内是一个或多个语句组。每个语句组包含一个或多个switch标签(cas","术语说明:一般情况下,一行长代码为了避免超出列限制(80或100个字符)而被分为多行,我们称之为自动换行(line","术语说明:块状结构(block","术语说明:水平对齐指的是通过增加可变数量的空格来使某一行的字符与上一行的相应字符对齐。","来使用它。","来实现业务层中的custom","来得到客户信","来渲染。如果你不需要可以卸载它们。","松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。","极少会去重载object.finalize。","构里各种层之间的访问限制。如果随意的开放或者封闭架构里的层,整个项目可能都是紧耦合,一团糟的。以后也难以测试,维护和部署。","枚举","枚举常量间用逗号隔开,换行可选。","枚举类","架构总结","架构模式帮助你定义应用程序的基本特征和行为。例如,些架构模式会让程序自己自然⽽而然地朝着具有良","查找路由","查询一个列表","查询一个列表并返回为list类型","查询一个对象","查询一个对象返回为map类型","标准的javadoc标记按以下顺序出现:@param,","标签","标签插件","标签插件使用","标签缩略名","标识符只能使用ascii字母和数字,因此每个有效的标识符名称都能匹配正则表达式\\w+。","标识符类型的规则","核心系统和非核心系统组合部署","根据class获取bean","根据java","根据path查找路由","根据业务子系统进行等级定义,可分为核心系统和非核心系统。核心系统:产品子系统,购物子系统,支付子系统;非核心:评论子系统,客服子系统,接口子系统。","根据业务属性进行垂直切分,划分为产品子系统,购物子系统,支付子系统,评论子系统,客服子系统,接口子系统(对接如进销存,短信等外部系统)。","根据业务特性可使用以下缓存过期策略:","根据以上预估,有几个问题:","根据名称删除一个bean","根据名称获取bean","根据实际需要,进行改造,扩展,支持千万pv,是没问题的。","根据并发量(并发,事务数),存储容量计算系统容量。","根据条件找出需要用到的","格式","格式日期时间对象就像格式化日期对象或者格式化时间对象,除了使用预定义的格式以外,我们还可以创建自定义的格式化对象,然后匹配我们自定义的格式。","框架之旅","框架是否已经初始化","框架流程","检出仓库","模型","模式分析","模版文件。当你创建一篇新的文章时,hexo会依据模版文件进行创建,主要用在你想在每篇文章都添加一些共性的内容的情况下。","次处理:表示服务器后","欢迎star开源web框架blade:http://github.com/biezhi/blad","欢迎star我写的一个简洁优雅的mvc框架","欢迎star我的开源web框架blade:http://github.com/biezhi/blad","欢迎来到java8简明指南。本教程将一步一步指导你通过所有新语言特性。由短而简单的代码示例,带你了解如何使用默认接口方法,lambda表达式,方法引用和可重复注解。本文的最后你会熟悉最新的api的变化如stream,fcuntional,map","正如你可以看到的代码更容易阅读。但它甚至更短:","正如前面所说的map不支持流操作,现在的map支持各种新的实用的方法和常见的任务。","正常方式遍历map","此命令会使用","此处不详细介绍,大家可以问度娘/google,有机会的话也可以分享给大家。","此处我使用**注解**的原因是为了简单,","此外,java还为包提供了package反射类,在jdk","此时","段落","每一个类在jvm中都拥有一个对应的java.lang.class对象,它提供了类结构信息的描述。数组、枚举、注解以及基本java类型(如int、double等),甚至void都拥有对应的class对象。class没有public的构造方法。class对象是在装载类时由jvm通过调用类装载器中的defineclass()方法自动构造的。","每个switch标签后新起一行,再缩进2个空格,写下一条或多条语句。","每个switch语句都包含一个default语句组,即使它什么代码也不包含。","每个分层架构或多或少都可能遇到这种场景。关键在于这样的请求有多少。80","每个单词的第一个字母都大写,来得到大驼峰式命名。","每个常量都是一个静态final字段,但不是所有静态final字段都是常量。在决定一个字段是否是一个常量时,","每个类或成员的javadoc以一个简短的摘要片段开始。这个片段是非常重要的,在某些情况下,它是唯一出现的文本,比如在类和方法索引中。","每个语句后要换行。","每个顶级类都在一个与它同名的源文件中(当然,还包含.java后缀)。","每分并发量:4.8*60=288分钟,每分钟访问4800/288=16.7万(约等于);","每天的uv为200万(二八原则);","每天的并发量;","每当开始一个新的块,缩进增加2个空格,当块结束时,缩进返回先前的缩进级别。缩进级别适用于代码和注释。(见4.1.2节中的代码示例)","每日每天点击浏览30次;","每日的pv量","每次只声明一个变量","每秒响应用户数和respons","每秒并发数预估:","每秒并发量:16.7万/60=2780(约等于);","比如你写成","比如场景java.util.collections.sort(listlist,","比如说jdk中filenamefilter的使用过程,","比如,hexo","水平对齐:不做要求","水平空白","永远不要由于害怕某些程序可能无法正确处理非ascii字符而让你的代码可读性变差。当程序无法正确处理非ascii字符时,它自然无法正确运行,","求。比如说展示层并不需要关⼼心怎样得到用户数据,它只需在屏幕上以特定的格式展示信息。业务层并不关","污水池反模式(architectur","没好好学数学后悔了吧?!(不知道以上算是否有错误,呵呵~~)","没有任何参数,纯输出blockquot","没有方法和文档的枚举类可写成数组初始化的格式:","没有配置,框架的易用性和快速开发靠什么完成,又一行一行编写代码吗?","没有,","注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。","注入对象","注册一个bean到容器中","注册一个class到容器中","注册一个带名称的bean到容器中","注册用户数","注意事项","注意到后台的那个","注意表1","注解(annotations)","注解紧跟在文档块后面,应用于类、方法和构造函数,一个注解独占一行。这些换行不属于自动换行(第4.5节,自动换行),因此缩进级别不变。例如:","注释","注释不要封闭在由星号或其它字符绘制的框架里。","注释中那些可能被剪切并粘贴到shell中的命令行。","活动管理,秒杀","流程说明","测试代码:","测试的结果主要也是看这两个值。","测试类的命名以它要测试的类的名称开始,以test结束。例如,hashtest或hashintegrationtest。","测试结果:","测试结果中主要的指标是","消息队列","消息队列可以解决子系统/模块之间的耦合,实现异步,高可用,高性能的系统。是分布式系统的标准配置。本案例中,消息队列主要应用在购物,配送环节。","消息,一般是告诉客户端,请求已经收到了,正在处理,别急...","淘宝","淘宝的","添加和提交","添加用户界面","添加路由","清理持有弱引用的weakhashmap这种数据结构,一般用于缓存","渲染到视图","渲染文件","源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java。","源文件基础","源文件结构","源文件编码格式为utf","源码之前,先简单了解一下","演示程序代码","然⽽而封闭的架构层次也有不便之处,有时候也应该开放某一层。如果想往包含了一些由业务层的组件调用的","然后new相应的策略类。这里为了避免if","然后取到值的情况。从「先行发生原则」的角度理解的话,就是对于一个","然后我们通过构造函数引用来把所有东西拼到一起,而不是手动实现工厂:","然后按照提示一步一步安装即可,我装在了c盘,这个盘装了ssd会快一些。","然的成为大多数应用的架构模式。","然而num必须是隐含的final常量。以下代码不编译:","然而从开始就创建的boy缺点就是无法在更换。并且要负责boy的整个生命周期。如果我们的girl想要换一个怎么办?(笔者严重不支持girl经常更换boy)","父母包办","父母包办:一切交给父母,自己不用费吹灰之力,只需要等着kiss就好了。","版","版本。","特殊字符","特殊说明:","特殊转义序列","状态码及状态描述;","现代","现在将所有字母都小写(包括缩写),然后将单词的第一个字母大写:","现在我们测量一下流对这个集合进行排序消耗的时间。","现在,你的改动已经提交到了","理解di的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”,那我们来深入分析一下:","理解了ioc和di的概念后,一切都将变得简单明了,剩下的工作只是在框架中堆积木而已,下一节来看看spring是怎么用的","生成代理类的class文件,返回字节流","生成动态代理的方法有很多:","生成器","生成完后直接部署","生成静态文件:","用","用jd","用于封装一个请求的最小单元,","用小括号来限定组:推荐","用户下单后,写入消息队列,后直接返回客户端;","用户再次登录时,获取分布式session,是否有会话信息,如果没有则调到登录页;","用户列表","用户可以在线购买商品","用户指南","用户控制器","用户收到商品后,可以给商品打分,评价;","用户界面只管接受请求以及显示客户信息。它不管怎么得到数据的,或者说得到这些数据要用到哪些数据","用户第一次登录时,将会话信息(用户id和用户信息),比如以用户id为key,写入分布式session;","用户购买时可以在线与客服沟通;","用来封装真是主题类的代理类","用枚举写单例实在太简单了!这也是它最大的优点。下面这段代码就是声明枚举实例的通常做法。","用法可以查看它的说明","用法:webbench","用这个指标来衡量性能。似乎比apache的ab准确率要高一些,也更有说服力一些。","由于一些请求报文头属性“太著名”了,因此httpservletrequest为它们提供了vip的api:","由于作者这篇文章写的非常好,我也就没有重写","由于枚举类也是一个类,因此所有适用于其它类的格式规则也适用于枚举类。","由于请求报文头是客户端发过来的,服务端当然只能读取了,以下是","由此我们简单的设计一个mario全局对象:","电商案例的原因","电商网站架构案例","电商网站案例,一共有三篇本篇主要说明网站的需求,网站初始架构,系统容量估算方法。","电商网站需求","的","的主要原因是其另一个特性:禁止指令重排序优化。也就是说,在","的优点和缺点是非常必要的,它帮助我们选择个适合自己特定的业务需求和目标的的程序。","的前","的副本,每次都是去主内存中读取。但其实是不对的。使用","的即时编译器中存在指令重排序的优化。也就是说上面的第二步和第三步的顺序是不能保证的,最终的执行顺序可能是","的原因是可见性,也就是可以保证线程在本地不会存有","的双检锁还是有问题的。其原因是","的报文头属性)","的时候。这本迷你书的目的就是给你⾜足够的信息让你去做出正确的架构决策。","的时候,就会创建多个实例。也就是说在多线程下不能正常工作。","的构造函数来初始化成员变量","的架构师,设计师,还有程序员都知道它。许多传统it公司的组织架构和分层模式十分的相似。所以它很自","的标签:","的模板文件。下面占位符可以使用模板:","的简明指南,木有高深内容","的组件当中。因此,有一些小的应用可能只有3层,一些有着更复杂的业务的大应用可能有5层或者更多的分","的结构图。","的解释是:","监听文件修改","监控文件的改变","目前使用较多的mq有activ","目前有成熟的进销存系统","目前有成熟的进销存系统;需要与网站对接;","目录","目录中的yaml或者json文件,从而用到你的网站中。","目录设置","目标对象:","直接访问持久层了,假如持久层中的sql变化了,这对业务层和展示层都有一定的影响。这只会让应用变得","直接通过","相信你不会喜欢这种复杂又隐含问题的方式,当然我们有更好的实现线程安全的单例模式的办法。","相信你自己。","相关中间件可参考cobar(阿里,目前已不在维护),tddl(阿里),atlas(奇虎360),mycat(在cobar基础上,国内很多牛人,号称国内第一开源项目)。","相当于http报文体,而","看了上面的例子,我们只是简单会用动态代理。但是对于代理类是如何创建出来的,是谁调用invoke方法等还云里雾里。下面通过分析","看到这个错误,你就应该查查服务端的日志了,肯定抛出了一堆异常,别睡了,起来改bug去吧!","看到这里也许很多同学会有点疑问,我们在说路由、控制器、匹配器,可是我怎么让它运行起来呢?","看到都蛋疼。。","示例","示例中的格式选择不应该被强制定为规则。","示例代码:https://github.com/junicorn/mario","示例:","社区参考书","禁用","秋玉米","程序员眼中的","程序非常小,解压后也不到100k","空块:可以用简洁版本","空白","空白字符","空行(即,只包含最左侧星号的行)会出现在段落之间和javadoc标记(@xxx)之前(如果有的话)。","穿过层次,不留一点云彩,或者说只留下一阵⻘青烟。比如说界面层响应了一个获得数据的请求。响应层把这","突增访问流量(可伸缩)实时性要求(高性能)","站点副标题,会显示在首页上,可以不填","站点名字,也就是html的title,会显示在浏览器标签上","站点描述,可以不填","站点时区,默认是电脑时间","站点根目录","站点网址","站点配置文件,你可以在这里进行大多数配置。","第4.6.3水平对齐一节中指出,不鼓励使用可变数目的空格来对齐前面行的符号。","第7条款:“avoid","第一个要注意的就是","第一章","第三方的包。每个顶级包为一组,字典序。例如:android,","第三步是通过反射方法操控目标类的元信息,如果我们将这些信息以一个配置文件的方式提供,就可以使用java语言的反射功能编写一段通用的代码对类似于hero的类进行实例化及功能调用操作了。","等信息就相当于http的报文头。它们是一些附属信息,帮忙你和饭店老板顺利完成这次交易。","等等","等级定义作用:用于流量突发时,对关键应用进行保护,实现优雅降级;保护关键应用不受到影响。","策略模式","策略模式中的设计原则","策略模式之所以可行的基础便是里氏替换原则:策略模式要求所有的策略对象都是可以互换的,因此它们都必须是一个抽象策略角色的子类。在客户端则仅知道抽象策略角色类型,虽然变量的真实类型可以是任何一个具体策略角色的实例","策略模式的定义","策略模式的实际应用","策略模式的应用有很多,","策略模式设计原则","策略模式,顾名思义就是指对象具有某个行为,但是在不同的业务场景下,这个行为应该有不同的表现形式,也就是有了不同的策略。让对象能再不同的场景下对同一行为有不同的实现,这就是策略模式。","策略类工厂:这个工厂创建策略类的思路就是,载入一些列策略类,根据不同策略类的自定义注解和用户的传入参数来生成具体的策略类。","简介","简写","简单的例子说完了,我们开始设计一个自己的ioc容器,做出这个东东后再来看那些复杂的原理。","简单的方法我们可以使用反射实现动态调用方法执行,当然这对性能并不友好,你可以用缓存method或者更高明的技术去做。","简明指南","类,","类内的第一个成员前或最后一个成员后的空行是可选的(既不鼓励也不反对这样做,视个人喜好而定)。","类内连续的成员之间:字段,构造函数,方法,嵌套类,静态初始化块,实例初始化块。","类名","类名为testproxygen:","类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。现在还没有特定的规则或行之有效的约定来命名注解类型。","类名都以uppercamelcase风格编写。","类和成员的modifiers如果存在,则按java语言规范中推荐的顺序出现。","类型变量可用以下两种风格之一进行命名:","类型变量名","类型和变量之间:list","类型界限中的&(<t","类声明","类成员顺序","类是这样的:","类的成员顺序对易学性有很大的影响,但这也不存在唯一的通用法则。不同的类对成员的排序可能是不同的。","类装载器classload","类装载器就是寻找类的节码文件并构造出类在jvm内部表示对象的组件。在java中,类装载器把一个类装入jvm中,要经过以下步骤:","类装载器工作机制","类装载工作由classloader及其子类负责,classloader是一个重要的java运行时系统组件,它负责在运行时查找和装入class字节码文件。jvm在运行时会产生三个classloader:根装载器、extclassloader(扩展类装载器)和appclassloader(系统类装载器)。其中,根装载器不是classloader的子类,它使用c++编写,因此我们在java中看不到它,根装载器负责装载jre的核心类库,如jre目标下的rt.jar、charsets.jar等。extclassloader和appclassloader都是classloader的子类。其中extclassloader负责装载jre扩展目录ext中的jar类包;appclassloader负责装载classpath路径下的类包。","类,同时代理类会实现所有你传入的接口列表。因此可以强制类型转换成接口类型。","系统cpu一般维持在70%左右的水平,高峰期达到90%的水平,是不浪费资源,并比较稳定的。内存,io类似。","系统分割为多个子系统,独立部署后,不可避免的会遇到会话管理的问题。一般可采用session同步,cookies,分布式session方式。电商网站一般采用分布式session实现。","系统容量估算","系统运行在","紧耦合,组件之间互相依赖。这种架构会非常的难以维护。","约定一下框架基础信息","约束条件","组件来实现","组内不空行,按字典序排列。","经典文章","经过层层调用,一个代理类终于生成了。","结合cache中间件,实现的分布式session,可以很好的模拟session会话。","结果分析:","结果说明:","给","维基百科上是这样描述代理模式的:所谓代理者是指一个类可以作为其他东西的接口。代理者可以作任何东西的接口,","维护名称和对象的关系。","维护的三棵“树”组成。第一个是你的","缓存按照存放的位置一般可分为两类本地缓存和分布式缓存。本案例采用二级缓存的方式,进行缓存的设计。一级缓存为本地缓存,二级缓存为分布式缓存。(还有页面缓存,片段缓存等,那是更细粒度的划分)","缓存的比例,一般1:4,即可考虑使用缓存。(理论上是1:2即可)。","缓存自动过期;","缓存触发过期;","编程实践","编辑设置:","编辑页面","缩进","网站初级架构","网站架构优化","网站架构分析","网站设置","网站需求","考虑它是否真的感觉像是一个常量。例如,如果任何一个该实例的观测状态是可变的,则它几乎肯定不会是一个常量。","而不是生搬硬套。其实设计模式都是设计原则的体现,","而言,“依赖注入”明确描述了“被注入对象依赖ioc容器配置依赖对象”。","而非string","联系","背景:","脚手架文件夹。当你创建一个新文章,hexo基于scaffolds文件夹里的类型来创建。","脚本文件夹。扩展hexo最简单的方法,它会自动执行这个文件夹下的javascript文件。","自动换行","自动换行时缩进至少+4个空格","自动换行时,第一行后的每一行至少比第一行多缩进4个空格(注意:制表符不用于缩进。见2.3.1节)。","自动换行的基本准则是:更倾向于在更高的语法级别处断开。","自定义布局保存到","自定义当前工作目录路径,假如你没在工作目录下,可以使用这个命令指定一下工作目录路径","自身的调试器已经很好用了,按f12就可以看到(ie10以上也直接按f12就可以调试了)","至少在每个public类及它的每个public和protected成员处使用javadoc,以下是一些例外:","良好购物体验(可用性,性能)","英雄名称","草稿默认不显示,你可以添加","获取方法内的参数","获取类的默认构造器对象并通过它实例化hero","获取类装载器的父装载器,除根装载器外,所有的类装载器都有且仅有一个父装载器,extclassloader的父装载器是根装载器,因为根装载器非java编写,所以无法获得,将返回null。","获取请求所关联的httpsession,其内部的机理是通过读取请求报文头中cookie属性的jsessionid的值,在服务端的一个会话map中,根据这个jsessionid获取对应的httpsession的对象。","获取(fetch)","著名的代理模式的例子就是引用计数(refer","虽然做到了线程安全,并且解决了多实例的问题,但是它并不高效。因为在任何时候只能有一个线程调用","虽然在person中从未定义@hints注解,它仍然可读通过getannotation(hints.class)读取。并且,getannotationsbytype方法会更方便,因为它赋予了所有@hints注解标注的方法直接的访问权限。","虽然缩写更宽松,但还是要避免用单字符进行命名,除了临时变量和循环变量。","表。如果用户界面接到了一个查询客户信息的请求,它就会转发这个请求给用户委托(custom","表示在部署前先重新生成一下站点","表示这个请求是从哪个url过来的,假如你通过google搜索出一个商家的广告页面,你对这个广告页面感兴趣,鼠标一点发送一个请求报文到商家的网站,这个请求报文的referer报文头属性值就是","装备名称","要合并其他分支到你的当前分支(例如","要执行的路由方法","要更新你的本地仓库至最新改动,执行:","要注入的字段","要满足本文档中其他节的空行要求(比如3.3节:import语句)","要记住,排序只会创建一个流的排序视图,而不处理支持集合的排序。原来string集合中的元素顺序是没有改变的。","要运行起来整个框架,mario对象是核心,看看里面都需要什么吧!","规范","视图","视图名称","视图渲染接口","视图的位置和后缀可以在配置文件或者硬编码中进行,当然这看你的习惯,","视图设计","让我们以一个简单的例子来开始,在以前的版本中对字符串进行排序:","让我们先看一下数据流如何工作。首先,我们创建一个字符串列表的数据:","让我们来看看如何使用::关键字调用构造函数。首先,我们定义一个person类并且提供不同的构造函数:","记住,有@functionalinterface注解的也是有效的代码。","记得第一节的formula例子吗?接口formula定义了一个默认的方法可以从每个公式实例访问包括匿名对象,","许可证或版权信息","许可证或版权信息(如有需要)","设置","设置。","设置以及默认值","设置启用,在你创建文章的时候,hexo会创建一个同名目录,","设置改变默认的文件名。","设计mvc框架部分已经完成,下一节是一个增删改查的例子","设计一个ioc","设计思路","设计模式系列","设计的。mvc是一种将应用程序的逻辑层和表现层进行分离的结构方式。在实践中,由于表现层从","访问字段和静态变量","访问局部变量","访问时间","访问默认接口方法","评级:低","评级:容易","评级:高","该公式被实现为匿名对象。这段代码是相当长的:非常详细的一个计算:6行代码完成这样一个简单的计算。正如我们将在下一节中看到的,java8有一个更好的方法来实现单方法对象。","该终止操作能够通过某一个方法,对元素进行削减操作。该操作的结果会放在一个optional变量里返回。","语言","说明在上面的测试中运行了294个请求,最大的并发进程数是30,总计传输的数据是3.83835e+06bytes,运行的时间是60.0026秒","说明打开响应页面的类型","说明每一连接平均传输的数据量3.83835e+06/294=13055.6","说明每秒的响应请求为4.89979,每秒传递的数据为63969.7","说明每连接的平均响应时间是312.009","说明这个概念的⽜牛逼之处,想象一个超级重构,把展示层从jsp换成jsf。假设展示层和业务层的之间的联系","请求http报文和响应http报文都拥有若干个报文关属性,它们是为协助客户端及服务端交易的一些附属信息。","请求地址","请求报文可通过一个","请求的uri","请求需要的所有信息(在这个例子里获取客户信息)。这个模块调用持久层中的","读写分离:一般解决读比例远大于写比例的场景,可采用一主一备,一主多备或多主多备方式。","读取资源文件","读取配置","谁依赖于谁:当然是应用程序依赖于ioc容器;","谁控制谁,控制什么:传统java","谁注入谁:很明显是ioc容器注入应用程序某个对象,应用程序依赖的对象;","调度器,对象继承之后处理函数中如何处理response和request;第四小节至第六小节介绍如何框架的一些辅助功能,例如配置信息,数据库操作等;最后介绍如何基于web框架实现一个简单的增删改查,包括user的添加、修改、删除、显示列表等操作。","调用","调用该方法来查看classloader是否已装入某个类。如果已装入,那么返回java.lang.class对象,否则返回null。如果强行装载已存在的类,将会抛出链接错误。","象的创建;谁控制谁?当然是ioc","负载均衡:是高可用系统必须的,一般应用通过负载均衡实现高可用,分布式服务通过内置的负载均衡实现高可用,关系型数据库通过主备方式实现高可用。","资源是非文章的文件,在source文件夹中,如图片、css、javascript文件等。","资源目录x","赞,即使没有注释也非常清晰","跟代码的耦合紧一点。","路径","路由","路由path","路由匹配器使用了正则去遍历路由列表,匹配合适的路由。当然我不认为这是最好的方法,","路由匹配器,用于匹配路由","路由所在的控制器","路由的表现形式如下:","路由管理器,存放所有路由的","路由设计","转换文件名,1代表小写;2代表大写;默认为0,意思就是创建文章的时候,是否自动帮你转换文件名,默认就行,意义不大","软件架构模式","辑。比如说,展示层的组件只会处理展示逻辑,业务层中的组件只会去处理业务逻辑。多亏了组件分离,让","输入node","输出了:","输出到指定文件,我没用过","输出结果:","输出:","迁移到其他模块的命令。","运维相关","运行以上代码,在控制台上将打出以下信息:","运行方法","运行测试时间","运行版本是:","运行该类,打印出以下信息:","返回mario","返回所有bean对象名称","返回查询到的路由","还可以测试https类的网站请求。","这一小节是对数据库操作做一个简单的封装,不涉及复杂的事务操作等。","这三个类装载器之间存在父子层级关系,即根装载器是extclassloader的父装载器,extclassloader是appclassloader的父装载器。默认情况下,使用appclassloader装载应用程序的类,我们可以做一个实验:","这个map中,将所有的对象存储在","这个例子演示了如何利用函数判断或获取map中的数据:","这个命令类似于你使用了","这个文件夹就是放文章的地方了,除了文章还有一些主要的资源,比如文章里的图片,文件等等东西。这个文件夹最好定期做一个备份,丢了它,整个站点就废了。","这个程序更小,解压后不到50k,呵呵","这个表示同时处理1000个请求并运行130次index.php文件。","这个选项,即服务器每秒能够响应的查询次数。","这个项目,因为真的很简单","这些名字通常是名词或名词短语。","这份文档是googl","这只是一个小片段,可以是一个名词短语或动词短语,但不是一个完整的句子。它不会以a","这只是一个简单的例子,剑圣打野的时候想要买5毛钱的三杀特效,嗯。。虽然不符合逻辑","这可能导致原本很漂亮的对齐代码变得错位。很可能它会提示你调整周围代码的空白来使这一堆代码重新水平对齐(比如程序员想保持这种水平对齐的风格),","这就会让你做许多的无用功,增加了reviewer的工作并且可能导致更多的合并冲突。","这就是ioc,将对象的创建和获取提取到外部。由外部容器提供需要的组件。","这并没有lambda表达式的工作。","这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:","这时候需要设计一个路由匹配器去查找路由处理我们配置的请求,","这是","这是一个标准的分层的架构。每一层中又可以详细的分成更细的层,比如服务层。","这是允许的(而且在不少地方可以看到这样的代码),但google编程风格对此不做要求。即使对于已经使用水平对齐的代码,我们也不需要去保持这种风格。","这是前几年比较传统的做法,之前见到一个网站10万多会员,垂直服装设计门户,n多图片。使用了一台服务器部署了应用,数据库以及图片存储。出现了很多性能问题。","这是第一个要说的,客户端的cookie就是通过这个报文头属性传给服务端的哦!如下所示:","这条规则也适用于以下“类运算符”符号:点分隔符(.),类型界限中的&(),catch块中的管道符号(catch","这样在系统中永远保持一个mario实例,我们用它来操作所有配置即可。","这样就可以运行一个最简单的博客程序了~","这样就安装成功了!","这样就能使用注解驱动依赖注入了,下面是一个使用场景","这样我们就可以利用代理模式来重新代理","这样,一个简单的mvc后端已经形成了!接下来我们要将结果展现在jsp文件中,要做视图的渲染设计","这段代码看起来很完美,很可惜,它是有问题。主要在于instanc","这段代码简单明了,而且使用了懒加载模式,但是却存在致命的问题。当有多个线程并行调用","这种写法仍然使用jvm本身机制保证了线程安全问题;由于","这种写法如果完美的话,就没必要在啰嗦那么多双检锁的问题了。缺点是它不是一种懒加载模式(lazi","这种布局的帖子保存到","这种方法非常简单,因为单例的实例被声明成","这说明我们完全可以通过编程方式调用class的各项功能,这和直接通过构造函数和方法调用类功能的效果是一致的,只不过前者是间接调用,后者是直接调用罢了。","这里k表示key,p表示parameters,","这里将所有bean的名称存储在","这里就不在发挥了。","这里我下载的是","这里执行的流程是酱紫的:","这里的代码很简单,这个管理器里用list存储所有路由,公有的","这里的标签插件不是文章中的标签,它可以帮助你在文章中插入特定的一些内容。","这里记录了一些技术摘要,部分文章来自网络,本项目的目的力求分享精品技术干货,以java为主。","这里,你要","进行全量同步的.","进行安装.","远端的改动。","选项","选项或者设置","选项来设置其他端口。","逗号(,)与其前面的内容留在同一行。","通过以上的输出信息,我们知道当前的classloader是appclassloader,父classloader是extclassloader,祖父classloader是根类装载器,因为在java中无法获得它的句柄,所以仅返回null。","通过使用java语言实现一个完整的框架设计,这个框架中主要内容有第一小节介绍的web框架的结构规划,例如采用mvc模式来进行开发,程序的执行流程设计等内容;第二小节介绍框架的第一个功能:路由,如何让访问的url映射到相应的处理逻辑;第三小节介绍处理逻辑,如何设计一个公共的","通过反射方法设置属性","通过类装载器获取hero类对象","通过这么一个完整的项目例子,我期望能够让读者了解如何开发web应用,如何搭建自己的目录结构,如何实现路由,如何实现mvc模式等各方面的开发内容。在框架盛行的今天,mvc也不再是神话。经常听到很多程序员讨论哪个框架好,哪个框架不好,","那么一个jsp的渲染实现就很简单了","那么为什么不允许展示层直接访问数据层呢。如果只是获得以及读取数据,展示层直接访问数据层,比穿过一层一层来得到数据来的快多了。这涉及到一个概念:层隔离。","那么你写的代码也可以变成一种模式。","那么你可以试用一下hexo3中的『data","那么哪一种才是最好呢?","那么容器里应该有什么呢,我想它至少要有存储和移除一个对象的能力,其次可以含括更多的获取和注册对象的方法。","那么我们在java语言中将他定义一个","那么我写一个简单的实现代码:","那么这个注释应该写成javadoc,这样更统一更友好。","那样思考","部署","部署你的站点","部署后生成","部署生成后,您可以运行以下命令之一,这2个命令使用结果相同。","部署配置,将本地public目录也就是网站部署到服务器上的配置","都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。","配置","配置tomcat+nginx反向代理","配置tomcat为服务","配置加载器","配置多个tomcat","配置文件中是酱紫的:","配置淘宝","配置设计","配送子系统:读取消息队列信息,进行配送;","里氏替换原则讲的是基类与子类的关系。只有当这种关系存在时,里氏替换关系才存在,反之则不存在。","里氏替换原则(liskov","重定向到其它地方。它让客户端再发起一个请求以完成整个处理。","重载:永不分离","链接与资源","链接设置","错误。您可以添加","镜像","镜像是一个完整的npmjs.org镜像。你可以用此代替官方版本(只读),同步频率目前为","除jvm默认的三个classloader以外,可以编写自己的第三方类装载器,以实现一些特殊的需求。类文件被装载并解析后,在jvm内将拥有一个对应的java.lang.class类描述对象,该类的实例都拥有指向这个类描述对象的引用,而类描述对象又拥有指向关联classloader的引用,如图所示。","除了下面的例子,对捕获的异常不做响应是极少正确的。(典型的响应方式是打印日志,或者如果它被认为是不可能的,则把它当作一个assertionerror重新抛出。)","除了以上介绍的业务拆分,应用集群,多级缓存,单点登录,数据库集群,服务化,消息队列外。还有cdn,反向代理,分布式文件系统,大数据处理等系统。","除了接口抽象方法calculate,还定义了默认方法sqrt的返回值。具体类实现抽象方法calculate。默认的方法sqrt可以开箱即用。","除了第一个单词,每个单词的第一个字母都大写,来得到小驼峰式命名。","除了第一个段落,每个段落第一个单词前都有标签<p>,并且它和第一个单词间没有空格。","除了行结束符序列,ascii水平空格字符(0×20,即空格)是源文件中唯一允许出现的空白字符,这意味着:","除了语言需求和其它规则,并且除了文字,注释和javadoc用到单个空格,单个ascii空格也出现在以下几个地方:","除非作者和reviewer都认为去掉小括号也不会使代码被误解,或是去掉小括号能让代码更易于阅读,否则我们不应该去掉小括号。","除非你将分支推送到远端仓库,不然该分支就是","随机头像生成","随机密码生成","随着一个时区可以转换为一个即时的附加信息。instance可以被转换为日期型转化为指定格式的java.util.date。","集中访问量:240.2=4.8小时会有6000万0.8=4800万(二八原则);","集群部署后架构图:","集群部署:电商网站的高可用要求,每个应用至少部署两台服务器进行集群部署;","需求功能矩阵","需求管理传统的做法,会使用用例图或模块图(需求列表)进行需求的描述。这样做常常忽视掉一个很重要的需求(非功能需求),因此推荐大家使用需求功能矩阵,进行需求描述。","需要时才声明,并尽快进行初始化","需要注入的字段","需要注意的是”ios”并不是一个真正的驼峰表示形式,因此该推荐对它并不适用。","需要访问的url文件","需要部署大量的服务器,高峰期计算,可能要部署30台web服务器。并且这三十台服务器,只有秒杀,活动时才会用到,存在大量的浪费。","青梅竹马","青梅竹马:girl从小就知道自己的boy。","静态代理","静态代理的实例","静态内部类","静态成员:使用类进行调用","静态的集合类方法collections.sort,为比较器的给定列表中的元素排序。你会发现自己经常创建匿名比较器并将它们传递给方法。","静默模式,不在终端上显示任何信息","非ascii字符","非c风格的数组声明","非主流域名","非功能需求","非常量字段名","非常量字段名以lowercamelcase风格编写。","非空块:k","页面,或其它类型的“页面”,jsp已经很好的实现了view层中的部分功能。","项目源码:https://github.com/junicorn/mario","项目规划","顺序和间距","预估步骤:","预计3~5年用户数达到1000万;","风格","饿汉式","首先定义一个策略接口:public","首先注意到生成代理类的构造函数,它传入一个实现invokehandler接口的类作为参数,并调用父类proxy的构造器,即将proxy中的成员变量protect","首先看","首先设计接口,一个ioc容器中最核心的当属容器接口,来一个container。","首先还是要在","首先,我们创建一个大的元素列表:","首先,我们定义了一个包装的注解,它拥有一个返回值为数组类型的方法hint:","驼峰式命名法(camelcase)","驼峰式命名法分大驼峰式命名法(uppercamelcase)和小驼峰式命名法(lowercamelcase)。","高峰期:需要30台服务器;","默认你的网站将会运行在","默认分类,默认为无分类,当然你可以设置一个默认分类。","默认布局","默认情况下,hexo使用文章标题作为文件名。","默认方法不能在lambda表达式访问。以下代码不编译:","默认的文章布局是post,当然你可用提供自己的布局文件。你可以编辑","默认设置了","😊","(java","(实现原理很简单,对jsp输出的内容md5,这样内容有变化etag就相应变化了),用于生成响应的etag,因为这东东确实可以帮助减少请求和响应的交互。","(这样,你就不会觉得httpsession很神秘了吧,你自己也可以做一个类似的会话管理)",",即使大括号内没内容,右大括号也要换行。",":含义是并发的用户进程数。",":含义是总计的访问时间",":含义是总计的访问次数",":含义是每秒的访问频率"],"pipeline":["stopWordFilter","stemmer"]},"store":{"./":{"url":"./","title":"介绍","keywords":"","body":"java-bible\n这里记录了一些技术摘要,部分文章来自网络,本项目的目的力求分享精品技术干货,以Java为主。\n如果你喜欢,star 便是,持续更新ing,还有Fork项目的同学,貌似没有什么卵用。。。\n目录\n\n开源组件实现\nMVC框架实现篇\nIOC容器实现篇\n\n\n设计模式系列\nJava8系列\nHexo搭建博客\n开发者指南\n运维相关\n经典文章\n\n开源组件实现\nMVC框架实现篇\n\n项目规划\n路由设计\n控制器设计\n配置设计\n视图设计\n数据库操作\n增删改查\n\nIOC容器实现篇\n\nIOC的概念\nSpring中怎么用\n设计一个IOC\n原理分析\n\n设计模式系列\n\n如何正确地写出单例模式\n代理模式剖析\n什么是策略模式\n\nJava8系列\n\nJava8简明教程\nJava8 Foreach\n\nHexo搭建博客\n\n分分钟部署一个Hexo环境\n各种配置详解\n开始写作吧\n\n开发者指南\n\ngit - 简明指南 \nJersey-2.x用户指南\nREST 实战\nJava Servlet 3.1 规范\nMyBatis中文指南\nApache Shiro 用户指南\nSpring Boot参考指南\nNetty4 用户指南\nGoogle Java编程风格指南\n\n运维相关\n\nlinux安装jdk、tomcat脚本\nWeb性能测试工具\nJava 程序员眼中的 Linux\n写给java开发的运维笔记\n\n经典文章\n\nHTTP请求报文解剖\n软件架构模式\n电商网站架构案例\n\n服务器/域名/SSL证书\n\n可用域名 | 秋玉米\n优惠域名 | 非主流域名\nvultr VPS | DO VPS\n免费VPN/SSH服务\n免费SS\n1小时免费VPN\nSSL.DO | Let's Encrypt\n免费虚拟主机\n\n实用工具/API\n\nPNG图片无损压缩\n在线给图片加水印\n随机密码生成\n随机头像生成\n微博一键清理工具\nCSS压缩\n在线工具\n\n联系\n\nBlog:https://biezhi.me\nMail:biezhi.me@gmail.com\n\n有兴趣分享技术的 可以发邮件给我 :confused:\n"},"开源组件实现.html":{"url":"开源组件实现.html","title":"开源组件实现","keywords":"","body":"开源组件实现\n"},"mvc/MVC框架实现篇.html":{"url":"mvc/MVC框架实现篇.html","title":"MVC框架实现篇","keywords":"","body":"MVC框架实现篇\n"},"mvc/":{"url":"mvc/","title":"MVC框架实现篇","keywords":"","body":"如何设计一个JavaWeb MVC框架\n通过使用Java语言实现一个完整的框架设计,这个框架中主要内容有第一小节介绍的Web框架的结构规划,例如采用MVC模式来进行开发,程序的执行流程设计等内容;第二小节介绍框架的第一个功能:路由,如何让访问的URL映射到相应的处理逻辑;第三小节介绍处理逻辑,如何设计一个公共的 调度器,对象继承之后处理函数中如何处理response和request;第四小节至第六小节介绍如何框架的一些辅助功能,例如配置信息,数据库操作等;最后介绍如何基于Web框架实现一个简单的增删改查,包括User的添加、修改、删除、显示列表等操作。\n通过这么一个完整的项目例子,我期望能够让读者了解如何开发Web应用,如何搭建自己的目录结构,如何实现路由,如何实现MVC模式等各方面的开发内容。在框架盛行的今天,MVC也不再是神话。经常听到很多程序员讨论哪个框架好,哪个框架不好, 其实框架只是工具,没有好与不好,只有适合与不适合,适合自己的就是最好的,所以教会大家自己动手写框架,那么不同的需求都可以用自己的思路去实现。\n\n\n项目源码:https://github.com/junicorn/mario\n示例代码:https://github.com/junicorn/mario-sample\n\n欢迎Star我写的一个简洁优雅的MVC框架 Blade :wink:\n目录\n\n项目规划\n路由设计\n控制器设计\n配置设计\n视图设计\n数据库操作\n增删改查\n\n接下来开始我们的 框架之旅 吧~\n"},"mvc/1.plan.html":{"url":"mvc/1.plan.html","title":"项目规划","keywords":"","body":"项目规划\n做任何事情都需要做好规划,那么我们在开发博客系统之前,同样需要做好项目的规划,如何设置目录结构,如何理解整个项目的流程图,当我们理解了应用的执行过程,那么接下来的设计编码就会变得相对容易了\n创建一个maven项目\n约定一下框架基础信息\n\n假设我们的web框架名称是 mario\n包名是 com.junicorn.mario\n\n命令行创建\nmvn archetype:create -DgroupId=com.junicorn -DartifactId=mario -DpackageName=com.junicorn.mario\n\nEclipse创建\n\n\n创建好的基本结构是这样的\n\n初始化一下 pom.xml\n\n 4.0.0\n\n com.junicorn\n mario\n 0.0.1-SNAPSHOT\n jar\n\n mario\n https://github.com/junicorn/mario\n\n \n 1.6\n 1.6\n UTF-8\n 3.0.1\n \n\n \n \n javax.servlet\n javax.servlet-api\n 3.1.0\n provided\n \n \n\n \n \n \n org.apache.maven.plugins\n maven-compiler-plugin\n 3.1\n \n 1.6\n 1.6\n UTF-8\n \n \n \n \n\n\nOK,项目创建好了,这个将是我们的框架。\n框架流程\nweb程序是基于 M(模型)V(视图)C(控制器) 设计的。MVC是一种将应用程序的逻辑层和表现层进行分离的结构方式。在实践中,由于表现层从 Java 中分离了出来,所以它允许你的网页中只包含很少的脚本。\n\n模型 (Model) 代表数据结构。通常来说,模型类将包含取出、插入、更新数据库资料等这些功能。\n视图 (View) 是展示给用户的信息的结构及样式。一个视图通常是一个网页,但是在Java中,一个视图也可以是一个页面片段,如页头、页尾。它还可以是一个 RSS 页面,或其它类型的“页面”,Jsp已经很好的实现了View层中的部分功能。\n控制器 (Controller) 是模型、视图以及其他任何处理HTTP请求所必须的资源之间的中介,并生成网页。\n\n设计思路\nmario 是基于servlet实现的mvc,用一个全局的Filter来做核心控制器,使用sql2o框架作为数据库基础访问。\n使用一个接口 Bootstrap 作为初始化启动,实现它并遵循Filter参数约定即可。\n建立路由、数据库、视图相关的包和类,下面是结构:\n\nlinks\n\n目录\n下一节: 路由设计\n\n"},"mvc/2.route.html":{"url":"mvc/2.route.html","title":"路由设计","keywords":"","body":"路由设计\n现代 Web 应用的 URL 十分优雅,易于人们辨识记忆。 路由的表现形式如下:\n/resources/:resource/actions/:action\nhttp://bladejava.com\nhttp://bladejava.com/docs/modules/route\n那么我们在java语言中将他定义一个 Route 类, 用于封装一个请求的最小单元,\n在Mario中我们设计一个路由的对象如下:\n/**\n * 路由\n * @author biezhi\n */\npublic class Route {\n\n /**\n * 路由path\n */\n private String path;\n\n /**\n * 执行路由的方法\n */\n private Method action;\n\n /**\n * 路由所在的控制器\n */\n private Object controller;\n\n public Route() {\n }\n\n public String getPath() {\n return path;\n }\n\n public void setPath(String path) {\n this.path = path;\n }\n\n public Method getAction() {\n return action;\n }\n\n public void setAction(Method action) {\n this.action = action;\n }\n\n public Object getController() {\n return controller;\n }\n\n public void setController(Object controller) {\n this.controller = controller;\n }\n\n}\n\n所有的请求在程序中是一个路由,匹配在 path 上,执行靠 action,处于 controller 中。\nMario使用一个Filter接收所有请求,因为从Filter过来的请求有无数,如何知道哪一个请求对应哪一个路由呢?\n这时候需要设计一个路由匹配器去查找路由处理我们配置的请求,\n有了路由匹配器还不够,这么多的路由我们如何管理呢?再来一个路由管理器吧,下面就创建路由匹配器和管理器2个类:\n/**\n * 路由管理器,存放所有路由的\n * @author biezhi\n */\npublic class Routers {\n\n private static final Logger LOGGER = Logger.getLogger(Routers.class.getName());\n\n private List routes = new ArrayList();\n\n public Routers() {\n }\n\n public void addRoute(List routes){\n routes.addAll(routes);\n }\n\n public void addRoute(Route route){\n routes.add(route);\n }\n\n public void removeRoute(Route route){\n routes.remove(route);\n }\n\n public void addRoute(String path, Method action, Object controller){\n Route route = new Route();\n route.setPath(path);\n route.setAction(action);\n route.setController(controller);\n\n routes.add(route);\n LOGGER.info(\"Add Route:[\" + path + \"]\");\n }\n\n public List getRoutes() {\n return routes;\n }\n\n public void setRoutes(List routes) {\n this.routes = routes;\n }\n\n}\n\n这里的代码很简单,这个管理器里用List存储所有路由,公有的 addRoute 方法是给外部调用的。\n/**\n * 路由匹配器,用于匹配路由\n * @author biezhi\n */\npublic class RouteMatcher {\n\n private List routes;\n\n public RouteMatcher(List routes) {\n this.routes = routes;\n }\n\n public void setRoutes(List routes) {\n this.routes = routes;\n }\n\n /**\n * 根据path查找路由\n * @param path 请求地址\n * @return 返回查询到的路由\n */\n public Route findRoute(String path) {\n String cleanPath = parsePath(path);\n List matchRoutes = new ArrayList();\n for (Route route : this.routes) {\n if (matchesPath(route.getPath(), cleanPath)) {\n matchRoutes.add(route);\n }\n }\n // 优先匹配原则\n giveMatch(path, matchRoutes);\n\n return matchRoutes.size() > 0 ? matchRoutes.get(0) : null;\n }\n\n private void giveMatch(final String uri, List routes) {\n Collections.sort(routes, new Comparator() {\n @Override\n public int compare(Route o1, Route o2) {\n if (o2.getPath().equals(uri)) {\n return o2.getPath().indexOf(uri);\n }\n return -1;\n }\n });\n }\n\n private boolean matchesPath(String routePath, String pathToMatch) {\n routePath = routePath.replaceAll(PathUtil.VAR_REGEXP, PathUtil.VAR_REPLACE);\n return pathToMatch.matches(\"(?i)\" + routePath);\n }\n\n private String parsePath(String path) {\n path = PathUtil.fixPath(path);\n try {\n URI uri = new URI(path);\n return uri.getPath();\n } catch (URISyntaxException e) {\n return null;\n }\n }\n\n}\n\n路由匹配器使用了正则去遍历路由列表,匹配合适的路由。当然我不认为这是最好的方法,\n因为路由的量很大之后遍历的效率会降低,但这样是可以实现的,如果你有更好的方法可以告诉我 :)\n在下一章节我们需要对请求处理做设计了~\nlinks\n\n目录\n上一节: 项目规划\n下一节: 控制器设计\n\n"},"mvc/3.controller.html":{"url":"mvc/3.controller.html","title":"控制器设计","keywords":"","body":"控制器设计\n一个MVC框架里 C 是核心的一块,也就是控制器,每个请求的接收,都是由控制器去处理的。\n在Mario中我们把控制器放在路由对象的controller字段上,实际上一个请求过来之后最终是落在某个方法去处理的。\n简单的方法我们可以使用反射实现动态调用方法执行,当然这对性能并不友好,你可以用缓存Method或者更高明的技术去做。\n在这里我们不提及太麻烦的东西,因为初步目标是实现MVC框架,所以给大家提醒一下有些了解即可。\n控制器的处理部分放在了核心Filter中,代码如下:\n/**\n * Mario MVC核心处理器\n * @author biezhi\n *\n */\npublic class MarioFilter implements Filter {\n\n private static final Logger LOGGER = Logger.getLogger(MarioFilter.class.getName());\n\n private RouteMatcher routeMatcher = new RouteMatcher(new ArrayList());\n\n private ServletContext servletContext;\n\n @Override\n public void init(FilterConfig filterConfig) throws ServletException {\n Mario mario = Mario.me();\n if(!mario.isInit()){\n\n String className = filterConfig.getInitParameter(\"bootstrap\");\n Bootstrap bootstrap = this.getBootstrap(className);\n bootstrap.init(mario);\n\n Routers routers = mario.getRouters();\n if(null != routers){\n routeMatcher.setRoutes(routers.getRoutes());\n }\n servletContext = filterConfig.getServletContext();\n\n mario.setInit(true);\n }\n }\n\n private Bootstrap getBootstrap(String className) {\n if(null != className){\n try {\n Class clazz = Class.forName(className);\n Bootstrap bootstrap = (Bootstrap) clazz.newInstance();\n return bootstrap;\n } catch (ClassNotFoundException e) {\n throw new RuntimeException(e);\n } catch (InstantiationException e) {\n e.printStackTrace();\n } catch (IllegalAccessException e) {\n e.printStackTrace();\n }\n }\n throw new RuntimeException(\"init bootstrap class error!\");\n }\n\n @Override\n public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {\n HttpServletRequest request = (HttpServletRequest) servletRequest;\n HttpServletResponse response = (HttpServletResponse) servletResponse;\n\n // 请求的uri\n String uri = PathUtil.getRelativePath(request);\n\n LOGGER.info(\"Request URI:\" + uri);\n\n Route route = routeMatcher.findRoute(uri);\n\n // 如果找到\n if (route != null) {\n // 实际执行方法\n handle(request, response, route);\n } else{\n chain.doFilter(request, response);\n }\n }\n\n private void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Route route){\n\n // 初始化上下文\n Request request = new Request(httpServletRequest);\n Response response = new Response(httpServletResponse);\n MarioContext.initContext(servletContext, request, response);\n\n Object controller = route.getController();\n // 要执行的路由方法\n Method actionMethod = route.getAction();\n // 执行route方法\n executeMethod(controller, actionMethod, request, response);\n }\n\n /**\n * 获取方法内的参数\n */\n private Object[] getArgs(Request request, Response response, Class[] params){\n\n int len = params.length;\n Object[] args = new Object[len];\n\n for(int i=0; i paramTypeClazz = params[i];\n if(paramTypeClazz.getName().equals(Request.class.getName())){\n args[i] = request;\n }\n if(paramTypeClazz.getName().equals(Response.class.getName())){\n args[i] = response;\n }\n }\n\n return args;\n }\n\n /**\n * 执行路由方法\n */\n private Object executeMethod(Object object, Method method, Request request, Response response){\n int len = method.getParameterTypes().length;\n method.setAccessible(true);\n if(len > 0){\n Object[] args = getArgs(request, response, method.getParameterTypes());\n return ReflectUtil.invokeMehod(object, method, args);\n } else {\n return ReflectUtil.invokeMehod(object, method);\n }\n }\n\n}\n\n这里执行的流程是酱紫的:\n\n接收用户请求\n查找路由\n找到即执行配置的方法\n找不到你看到的应该是404\n\n看到这里也许很多同学会有点疑问,我们在说路由、控制器、匹配器,可是我怎么让它运行起来呢?\n您可说到点儿上了,几乎在任何框架中都必须有配置这项,所谓的零配置都是扯淡。不管硬编码还是配置文件方式,\n没有配置,框架的易用性和快速开发靠什么完成,又一行一行编写代码吗? 如果你说机器学习,至少现在好像没人用吧。\n扯淡完毕,下一节来进入全局配置设计 ->\nlinks\n\n目录\n上一节: 路由设计\n下一节: 配置设计\n\n"},"mvc/4.config.html":{"url":"mvc/4.config.html","title":"配置设计","keywords":"","body":"配置设计\nMario中所有的配置都可以在 Mario 全局唯一对象完成,将它设计为单例。\n要运行起来整个框架,Mario对象是核心,看看里面都需要什么吧!\n\n添加路由\n读取资源文件\n读取配置\n等等\n\n由此我们简单的设计一个Mario全局对象:\n/**\n * Mario\n * @author biezhi\n *\n */\npublic final class Mario {\n\n /**\n * 存放所有路由\n */\n private Routers routers;\n\n /**\n * 配置加载器\n */\n private ConfigLoader configLoader;\n\n /**\n * 框架是否已经初始化\n */\n private boolean init = false;\n\n private Mario() {\n routers = new Routers();\n configLoader = new ConfigLoader();\n }\n\n public boolean isInit() {\n return init;\n }\n\n public void setInit(boolean init) {\n this.init = init;\n }\n\n private static class MarioHolder {\n private static Mario ME = new Mario();\n }\n\n public static Mario me(){\n return MarioHolder.ME;\n }\n\n public Mario addConf(String conf){\n configLoader.load(conf);\n return this;\n }\n\n public String getConf(String name){\n return configLoader.getConf(name);\n }\n\n public Mario addRoutes(Routers routers){\n this.routers.addRoute(routers.getRoutes());\n return this;\n }\n\n public Routers getRouters() {\n return routers;\n }\n\n /**\n * 添加路由\n * @param path 映射的PATH\n * @param methodName 方法名称\n * @param controller 控制器对象\n * @return 返回Mario\n */\n public Mario addRoute(String path, String methodName, Object controller){\n try {\n Method method = controller.getClass().getMethod(methodName, Request.class, Response.class);\n this.routers.addRoute(path, method, controller);\n } catch (NoSuchMethodException e) {\n e.printStackTrace();\n } catch (SecurityException e) {\n e.printStackTrace();\n }\n return this;\n }\n\n}\n\n这样在系统中永远保持一个Mario实例,我们用它来操作所有配置即可。\n在Boostrap的init方法中使用\n@Override\npublic void init(Mario mario) {\n Index index = new Index();\n mario.addRoute(\"/\", \"index\", index);\n mario.addRoute(\"/html\", \"html\", index);\n}\n\n这样,一个简单的MVC后端已经形成了!接下来我们要将结果展现在JSP文件中,要做视图的渲染设计 LET'S GO!\nlinks\n\n目录\n上一节: 控制器设计\n下一节: 视图设计\n\n"},"mvc/5.view.html":{"url":"mvc/5.view.html","title":"视图设计","keywords":"","body":"视图设计\n我们已经完成了MVC中的C层,还有M和V没有做呢。这一小节来对视图进行设计,从后台到前台的渲染是这样的\n后台给定一个视图位置,输出到前端JSP或者其他模板引擎上,做一个非常简单的接口:\n/**\n * 视图渲染接口\n * @author biezhi\n *\n */\npublic interface Render {\n\n /**\n * 渲染到视图\n * @param view 视图名称\n * @param writer 写入对象\n */\n public void render(String view, Writer writer);\n\n}\n\n具体的实现我们先写一个JSP的,当你在使用Servlet进行开发的时候已经习惯了这句语法:\nservletRequest.getRequestDispatcher(viewPath).forward(servletRequest, servletResponse);\n\n那么一个JSP的渲染实现就很简单了\n/**\n * JSP渲染实现\n * @author biezhi\n *\n */\npublic class JspRender implements Render {\n\n @Override\n public void render(String view, Writer writer) {\n\n String viewPath = this.getViewPath(view);\n\n HttpServletRequest servletRequest = MarioContext.me().getRequest().getRaw();\n HttpServletResponse servletResponse = MarioContext.me().getResponse().getRaw();\n try {\n servletRequest.getRequestDispatcher(viewPath).forward(servletRequest, servletResponse);\n } catch (ServletException e) {\n e.printStackTrace();\n } catch (IOException e) {\n e.printStackTrace();\n }\n\n }\n\n private String getViewPath(String view){\n Mario mario = Mario.me();\n String viewPrfix = mario.getConf(Const.VIEW_PREFIX_FIELD);\n String viewSuffix = mario.getConf(Const.VIEW_SUFFIX_FIELD);\n\n if (null == viewSuffix || viewSuffix.equals(\"\")) {\n viewSuffix = Const.VIEW_SUFFIX;\n }\n if (null == viewPrfix || viewPrfix.equals(\"\")) {\n viewPrfix = Const.VIEW_PREFIX;\n }\n String viewPath = viewPrfix + \"/\" + view;\n if (!view.endsWith(viewSuffix)) {\n viewPath += viewSuffix;\n }\n return viewPath.replaceAll(\"[/]+\", \"/\");\n }\n\n}\n\n配置 JSP 视图的位置和后缀可以在配置文件或者硬编码中进行,当然这看你的习惯,\n默认设置了 JSP 在 /WEB-INF/ 下,后缀是 .jsp 你懂的!\n怎么用可以参考 mario-sample 这个项目,因为真的很简单 相信你自己。\n在下一节中我们就要和数据库打交道了,尝试新的旅程吧 :)\nlinks\n\n目录\n上一节: 配置设计\n下一节: 数据库操作\n\n"},"mvc/6.dbutil.html":{"url":"mvc/6.dbutil.html","title":"数据库操作","keywords":"","body":"数据库操作\n这一小节是对数据库操作做一个简单的封装,不涉及复杂的事务操作等。\n我选用了Sql2o作为底层数据库框架作为支持,它的简洁易用性让我刮目相看,后面我们也会写如何实现一个ORM框架。\n/**\n * 数据库支持\n * @author biezhi\n *\n */\npublic final class MarioDb {\n\n private static Sql2o sql2o = null;\n\n private MarioDb() {\n }\n\n /**\n * 初始化数据库配置\n * @param url\n * @param user\n * @param pass\n */\n public static void init(String url, String user, String pass){\n sql2o = new Sql2o(url, user, pass);\n }\n\n /**\n * 初始化数据库配置\n * @param dataSource\n */\n public static void init(DataSource dataSource){\n sql2o = new Sql2o(dataSource);\n }\n\n /**\n * 查询一个对象\n * @param sql\n * @param clazz\n * @return\n */\n public static T get(String sql, Class clazz){\n return get(sql, clazz, null);\n }\n\n /**\n * 查询一个列表\n * @param sql\n * @param clazz\n * @return\n */\n public static List getList(String sql, Class clazz){\n return getList(sql, clazz, null);\n }\n\n /**\n * 查询一个对象返回为map类型\n * @param sql\n * @return\n */\n public static Map getMap(String sql){\n return getMap(sql, null);\n }\n\n /**\n * 查询一个列表并返回为list类型\n * @param sql\n * @return\n */\n public static List> getMapList(String sql){\n return getMapList(sql, null);\n }\n\n /**\n * 插入一条记录\n * @param sql\n * @param params\n * @return\n */\n public static int insert(String sql, Object ... params){\n StringBuffer sqlBuf = new StringBuffer(sql);\n sqlBuf.append(\" values (\");\n\n int start = sql.indexOf(\"(\") + 1;\n int end = sql.indexOf(\")\");\n String a = sql.substring(start, end);\n String[] fields = a.split(\",\");\n\n Map map = new HashMap();\n\n int i=0;\n for(String name : fields){\n sqlBuf.append(\":\" + name.trim() + \" ,\");\n map.put(name.trim(), params[i]);\n i++;\n }\n\n String newSql = sqlBuf.substring(0, sqlBuf.length() - 1) + \")\";\n\n Connection con = sql2o.open();\n Query query = con.createQuery(newSql);\n\n executeQuery(query, map);\n\n int res = query.executeUpdate().getResult();\n\n con.close();\n\n return res;\n }\n /**\n * 更新\n * @param sql\n * @return\n */\n public static int update(String sql){\n return update(sql, null);\n }\n\n /**\n * 带参数更新\n * @param sql\n * @param params\n * @return\n */\n public static int update(String sql, Map params){\n Connection con = sql2o.open();\n Query query = con.createQuery(sql);\n executeQuery(query, params);\n int res = query.executeUpdate().getResult();\n con.close();\n return res;\n }\n\n public static T get(String sql, Class clazz, Map params){\n Connection con = sql2o.open();\n Query query = con.createQuery(sql);\n executeQuery(query, params);\n T t = query.executeAndFetchFirst(clazz);\n con.close();\n return t;\n }\n\n @SuppressWarnings(\"unchecked\")\n public static Map getMap(String sql, Map params){\n Connection con = sql2o.open();\n Query query = con.createQuery(sql);\n executeQuery(query, params);\n Map t = (Map) query.executeScalar();\n con.close();\n return t;\n }\n\n public static List> getMapList(String sql, Map params){\n Connection con = sql2o.open();\n Query query = con.createQuery(sql);\n executeQuery(query, params);\n List> t = query.executeAndFetchTable().asList();\n con.close();\n return t;\n }\n\n public static List getList(String sql, Class clazz, Map params){\n Connection con = sql2o.open();\n Query query = con.createQuery(sql);\n executeQuery(query, params);\n List list = query.executeAndFetch(clazz);\n con.close();\n return list;\n }\n\n private static void executeQuery(Query query, Map params){\n if (null != params && params.size() > 0) {\n Set keys = params.keySet();\n for(String key : keys){\n query.addParameter(key, params.get(key));\n }\n }\n }\n}\n\n设计MVC框架部分已经完成,下一节是一个增删改查的例子\nlinks\n\n目录\n上一节: 视图设计\n下一节: 增删改查\n\n"},"mvc/7.crud.html":{"url":"mvc/7.crud.html","title":"增删改查","keywords":"","body":"增删改查\n/**\n * 用户控制器\n */\npublic class UserController {\n\n /**\n * 用户列表\n * @param request\n * @param response\n */\n public void users(Request request, Response response){\n List users = MarioDb.getList(\"select * from t_user\", User.class);\n request.attr(\"users\", users);\n response.render(\"users\");\n }\n\n /**\n * 添加用户界面\n * @param request\n * @param response\n */\n public void show_add(Request request, Response response){\n response.render(\"user_add\");\n }\n\n /**\n * 保存方法\n * @param request\n * @param response\n * @throws ParseException\n */\n public void save(Request request, Response response) throws ParseException{\n String name = request.query(\"name\");\n Integer age = request.queryAsInt(\"age\");\n String date = request.query(\"birthday\");\n\n if(null == name || null == age || null == date){\n request.attr(\"res\", \"error\");\n response.render(\"user_add\");\n return;\n }\n\n Date bir = new SimpleDateFormat(\"yyyy-MM-dd\").parse(date);\n\n int res = MarioDb.insert(\"insert into t_user(name, age, birthday)\", name, age, bir);\n if(res > 0){\n String ctx = MarioContext.me().getContext().getContextPath();\n String location = ctx + \"/users\";\n response.redirect(location.replaceAll(\"[/]+\", \"/\"));\n } else {\n request.attr(\"res\", \"error\");\n response.render(\"user_add\");\n }\n }\n\n /**\n * 编辑页面\n * @param request\n * @param response\n */\n public void edit(Request request, Response response){\n Integer id = request.queryAsInt(\"id\");\n if(null != id){\n Map map = new HashMap();\n map.put(\"id\", id);\n User user = MarioDb.get(\"select * from t_user where id = :id\", User.class, map);\n request.attr(\"user\", user);\n response.render(\"user_edit\");\n }\n }\n\n /**\n * 修改信息\n * @param request\n * @param response\n */\n public void update(Request request, Response response){\n Integer id = request.queryAsInt(\"id\");\n String name = request.query(\"name\");\n Integer age = request.queryAsInt(\"age\");\n\n if(null == id || null == name || null == age ){\n request.attr(\"res\", \"error\");\n response.render(\"user_edit\");\n return;\n }\n\n Map map = new HashMap();\n map.put(\"id\", id);\n map.put(\"name\", name);\n map.put(\"age\", age);\n\n int res = MarioDb.update(\"update t_user set name = :name, age = :age where id = :id\", map);\n if(res > 0){\n String ctx = MarioContext.me().getContext().getContextPath();\n String location = ctx + \"/users\";\n response.redirect(location.replaceAll(\"[/]+\", \"/\"));\n } else {\n request.attr(\"res\", \"error\");\n response.render(\"user_edit\");\n }\n }\n\n /**\n * 删除\n * @param request\n * @param response\n */\n public void delete(Request request, Response response){\n Integer id = request.queryAsInt(\"id\");\n if(null != id){\n Map map = new HashMap();\n map.put(\"id\", id);\n MarioDb.update(\"delete from t_user where id = :id\", map);\n }\n\n String ctx = MarioContext.me().getContext().getContextPath();\n String location = ctx + \"/users\";\n response.redirect(location.replaceAll(\"[/]+\", \"/\"));\n }\n}\n\n\n\n演示程序代码\nBlade框架\n\nlinks\n\n目录\n上一节: 数据库操作\n\n"},"ioc/IOC容器实现篇.html":{"url":"ioc/IOC容器实现篇.html","title":"IOC容器实现篇","keywords":"","body":"IOC容器实现篇\n"},"ioc/1.concept.html":{"url":"ioc/1.concept.html","title":"IOC的概念","keywords":"","body":"IOC的概念\n什么是IOC?\nIoC(Inversion of Control),意为控制反转,不是什么技术,而是一种设计思想。Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。\n如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:\n\n谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。\n\n为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。\n\n\n下面举个例子说明说明是IOC:\n假设我们要设计一个Girl和一个Boy类,其中Girl有kiss方法,即Girl想要Kiss一个Boy。那么,我们的问题是,Girl如何能够认识这个Boy?\n在我们中国,常见的MM与GG的认识方式有以下几种:\n\n青梅竹马\n亲友介绍\n父母包办\n\n那么哪一种才是最好呢? \n  \n\n青梅竹马:Girl从小就知道自己的Boy。\n\npublic class Girl { \n void kiss(){ \n    Boy boy = new Boy(); \n  } \n}\n\n然而从开始就创建的Boy缺点就是无法在更换。并且要负责Boy的整个生命周期。如果我们的Girl想要换一个怎么办?(笔者严重不支持Girl经常更换Boy)\n\n亲友介绍:由中间人负责提供Boy来见面\n\npublic class Girl { \n  void kiss(){ \n    Boy boy = BoyFactory.createBoy();   \n  } \n}\n\n亲友介绍,固然是好。如果不满意,尽管另外换一个好了。但是,亲友BoyFactory经常是以Singleton的形式出现,不然就是,存在于Globals,无处不在,无处不能。实在是太繁琐了一点,不够灵活。我为什么一定要这个亲友掺和进来呢?为什么一定要付给她介绍费呢?万一最好的朋友爱上了我的男朋友呢? \n\n父母包办:一切交给父母,自己不用费吹灰之力,只需要等着Kiss就好了。\n\npublic class Girl { \n  void kiss(Boy boy){ \n    // kiss boy \n   boy.kiss(); \n  } \n}\n\nWell,这是对Girl最好的方法,只要想办法贿赂了Girl的父母,并把Boy交给他。那么我们就可以轻松的和Girl来Kiss了。看来几千年传统的父母之命还真是有用哦。至少Boy和Girl不用自己瞎忙乎了。 \n这就是IOC,将对象的创建和获取提取到外部。由外部容器提供需要的组件。 \nIoC能做什么\nIoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。\n其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC容器来创建并注入它所需要的资源了。\nIoC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。\nIoC和DI\nDI—Dependency Injection,即“依赖注入”:组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。\n理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”,那我们来深入分析一下:\n\n谁依赖于谁:当然是应用程序依赖于IoC容器;\n\n为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;\n\n谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;\n\n注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。\n\n\nIoC和DI由什么关系呢?其实它们是同一个概念的不同角度描述,由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”,相对IoC 而言,“依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。\n对于Spring Ioc这个核心概念,我相信每一个学习Spring的人都会有自己的理解。这种概念上的理解没有绝对的标准答案,仁者见仁智者见智。\n理解了IoC和DI的概念后,一切都将变得简单明了,剩下的工作只是在框架中堆积木而已,下一节来看看Spring是怎么用的\nlinks\n\n目录\n下一节: Spring中怎么用\n\n"},"ioc/2.spring.html":{"url":"ioc/2.spring.html","title":"Spring中怎么用","keywords":"","body":"Spring中怎么用\n我们在Spring中是这样获取对象的:\npublic static void main(String[] args) { \n ApplicationContext context = new FileSystemXmlApplicationContext(\"applicationContext.xml\"); \n Lol lol = (Lol) context.getBean(\"lol\"); \n lol.gank(); \n}\n\n一起看看Spring如何让它生效呢,在 applicationContext.xml 配置文件中是酱紫的:\n\n \n\n\nLol 类是这样的:\npublic class Lol {\n\n private String name;\n\n public Lol() {\n }\n\n public void gank(){\n System.out.println(this.name + \"在gank!!\");\n }\n\n public String getName() {\n return name;\n }\n\n public void setName(String name) {\n this.name = name;\n }\n}\n\n上面的代码运行结果自然是 剑圣在gank!!。\nSpring更高级的用法,在3.0版本之后有了基于Annotation的注入实现,为毛每次都要配置 Xml 看到都蛋疼。。\n首先还是要在 xml 中配置启用注解方式\n\n\n这样就能使用注解驱动依赖注入了,下面是一个使用场景\npublic class Lol {\n\n @Autowired\n private DuangService duangService ;\n\n public void buyDuang(String name, int money) {\n duangService.buy(name, money);\n }\n}\n\n@Service(\"duangService\")\npublic class DuangService {\n\n public void buy(String name, int money){\n if(money > 0){\n System.out.println(name + \"买了\" + money + \"毛钱的特效,装逼成功!\");\n } else{\n System.out.println(name + \"没钱还想装逼,真是匪夷所思\");\n }\n }\n}\n\n这只是一个简单的例子,剑圣打野的时候想要买5毛钱的三杀特效,嗯。。虽然不符合逻辑\n此时 DuangService 已经注入到 Lol 对象中,运行代码的结果(这里是例子,代码不能运行的)就是:\n德玛买了5毛钱的特效,装逼成功!\n\n好了,深入的不说了,我们不是学spring的,只是知道一下ioc在spring中高大上的形象,接下来步入正轨,开始设计一个IOC容器\nlinks\n\n目录\n上一节: IOC的概念\n下一节: 设计一个IOC\n\n"},"ioc/3.myioc.html":{"url":"ioc/3.myioc.html","title":"设计一个IOC","keywords":"","body":"设计一个IOC\n我们要自己设计一个IOC,那么目标是什么呢?\n我们的IOC容器要可以存储对象,还要有注解注入的功能即可。\nJava语言允许通过程序化的方式间接对Class进行操作,Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数、属性和方法等。Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能,这就为使用程序化方式操作Class对象开辟了途径。 \n我们将从一个简单例子开始探访Java反射机制的征程,下面的Hero类拥有一个构造函数、五个方法以及两个属性,如代码清单所示:\n/**\n * LOL英雄\n */\npublic class Hero {\n\n // 英雄名称\n private String name;\n // 装备名称\n private String outfit;\n\n public Hero() {\n\n }\n\n public String getName() {\n return name;\n }\n\n public void setName(String name) {\n this.name = name;\n }\n\n public String getOutfit() {\n return outfit;\n }\n\n public void setOutfit(String outfit) {\n this.outfit = outfit;\n }\n\n public void say(){\n System.out.println(name + \"购买了\" + outfit);\n }\n}\n\n测试代码:\npublic class Test {\n\n public static void main(String[] args) throws Exception {\n //1. 通过类装载器获取Hero类对象 \n ClassLoader loader = Thread.currentThread().getContextClassLoader(); \n Class clazz = loader.loadClass(\"com.biezhi.ioc.Hero\"); \n\n //2. 获取类的默认构造器对象并通过它实例化Hero \n Constructor cons = clazz.getDeclaredConstructor((Class[])null); \n Hero hero = (Hero)cons.newInstance(); \n\n //3. 通过反射方法设置属性 \n Method setBrand = clazz.getMethod(\"setName\", String.class);\n setBrand.invoke(hero, \"小鱼人\");\n Method setColor = clazz.getMethod(\"setOutfit\", String.class);\n setColor.invoke(hero, \"爆裂魔杖\");\n\n // 4. 运行方法\n hero.say();\n }\n}\n\n输出了: 小鱼人购买了爆裂魔杖\n这说明我们完全可以通过编程方式调用Class的各项功能,这和直接通过构造函数和方法调用类功能的效果是一致的,只不过前者是间接调用,后者是直接调用罢了。 \n在Test中,使用了几个重要的反射类,分别是ClassLoader、Class、Constructor和Method,通过这些反射类就可以间接调用目标Class的各项功能了。在①处,我们获取当前线程的ClassLoader,然后通过指定的全限定类\"com.biezhi.ioc.Hero\"装载Hero类对应的反射实例。在②处,我们通过Hero的反射类对象获取Hero的构造函数对象cons,通过构造函数对象的newInstrance()方法实例化Hero对象,其效果等同于new Hero()。在③处,我们又通过Hero的反射类对象的getMethod(String methodName,Class paramClass)获取属性的Setter方法对象,第一个参数是目标Class的方法名;第二个参数是方法入参的对象类型。获取方法反射对象后,即可通过invoke(Object obj,Object param)方法调用目标类的方法,该方法的第一个参数是操作的目标类对象实例;第二个参数是目标方法的入参。 \n第三步是通过反射方法操控目标类的元信息,如果我们将这些信息以一个配置文件的方式提供,就可以使用Java语言的反射功能编写一段通用的代码对类似于Hero的类进行实例化及功能调用操作了。 \n简单的例子说完了,我们开始设计一个自己的IOC容器,做出这个东东后再来看那些复杂的原理。\n首先设计接口,一个IOC容器中最核心的当属容器接口,来一个Container。\n那么容器里应该有什么呢,我想它至少要有存储和移除一个对象的能力,其次可以含括更多的获取和注册对象的方法。\n/**\n * IOC容器\n * @author biezhi\n *\n */\npublic interface Container {\n\n /**\n * 根据Class获取Bean\n * @param clazz\n * @return\n */\n public T getBean(Class clazz);\n\n /**\n * 根据名称获取Bean\n * @param name\n * @return\n */\n public T getBeanByName(String name);\n\n /**\n * 注册一个Bean到容器中\n * @param object\n */\n public Object registerBean(Object bean);\n\n /**\n * 注册一个Class到容器中\n * @param clazz\n */\n public Object registerBean(Class clazz);\n\n /**\n * 注册一个带名称的Bean到容器中\n * @param name\n * @param bean\n */\n public Object registerBean(String name, Object bean);\n\n /**\n * 删除一个bean\n * @param clazz\n */\n public void remove(Class clazz);\n\n /**\n * 根据名称删除一个bean\n * @param name\n */\n public void removeByName(String name);\n\n /**\n * @return 返回所有bean对象名称\n */\n public Set getBeanNames();\n\n /**\n * 初始化装配\n */\n public void initWired();\n}\n\n那么我写一个简单的实现代码:\n/**\n * 容器简单实现\n * @author biezhi\n */\n@SuppressWarnings(\"unchecked\")\npublic class SampleContainer implements Container {\n\n /**\n * 保存所有bean对象,格式为 com.xxx.Person : @52x2xa\n */\n private Map beans;\n\n /**\n * 存储bean和name的关系\n */\n private Map beanKeys;\n\n public SampleContainer() {\n this.beans = new ConcurrentHashMap();\n this.beanKeys = new ConcurrentHashMap();\n }\n\n @Override\n public T getBean(Class clazz) {\n String name = clazz.getName();\n Object object = beans.get(name);\n if(null != object){\n return (T) object;\n }\n return null;\n }\n\n @Override\n public T getBeanByName(String name) {\n String className = beankeys.get(name);\n Object obj = beans.get(className);\n if(null != object){\n return (T) object;\n }\n return null;\n }\n\n @Override\n public Object registerBean(Object bean) {\n String name = bean.getClass().getName();\n beanKeys.put(name, name);\n beans.put(name, bean);\n return bean;\n }\n\n @Override\n public Object registerBean(Class clazz) {\n String name = clazz.getName();\n beanKeys.put(name, name);\n Object bean = ReflectUtil.newInstance(clazz);\n beans.put(name, bean);\n return bean;\n }\n\n @Override\n public Object registerBean(String name, Object bean) {\n String className = bean.getClass().getName();\n beanKeys.put(name, className);\n beans.put(className, bean);\n return bean;\n }\n\n @Override\n public Set getBeanNames() {\n return beanKeys.keySet();\n }\n\n @Override\n public void remove(Class clazz) {\n String className = clazz.getName();\n if(null != className && !className.equals(\"\")){\n beanKeys.remove(className);\n beans.remove(className);\n }\n }\n\n @Override\n public void removeByName(String name) {\n String className = beanKeys.get(name);\n if(null != className && !className.equals(\"\")){\n beanKeys.remove(name);\n beans.remove(className);\n }\n }\n\n @Override\n public void initWired() {\n Iterator> it = beans.entrySet().iterator();\n while (it.hasNext()) {\n Map.Entry entry = (Map.Entry) it.next();\n Object object = entry.getValue();\n injection(object);\n }\n }\n\n /**\n * 注入对象\n * @param object\n */\n public void injection(Object object) {\n // 所有字段\n try {\n Field[] fields = object.getClass().getDeclaredFields();\n for (Field field : fields) {\n // 需要注入的字段\n AutoWired autoWired = field.getAnnotation(autoWired.class);\n if (null != autoWired) {\n\n // 要注入的字段\n Object autoWiredField = null;\n\n String name = autoWired.name();\n if(!name.equals(\"\")){\n String className = beanKeys.get(name);\n if(null != className && !className.equals(\"\")){\n autoWiredField = beans.get(className);\n }\n if (null == autoWiredField) {\n throw new RuntimeException(\"Unable to load \" + name);\n }\n } else {\n if(autoWired.value() == Class.class){\n autoWiredField = recursiveAssembly(field.getType());\n } else {\n // 指定装配的类\n autoWiredField = this.getBean(autoWired.value());\n if (null == autoWiredField) {\n autoWiredField = recursiveAssembly(autoWired.value());\n }\n }\n }\n\n if (null == autoWiredField) {\n throw new RuntimeException(\"Unable to load \" + field.getType().getCanonicalName());\n }\n\n boolean accessible = field.isAccessible();\n field.setAccessible(true);\n field.set(object, autoWiredField);\n field.setAccessible(accessible);\n }\n }\n } catch (SecurityException e) {\n e.printStackTrace();\n } catch (IllegalArgumentException e) {\n e.printStackTrace();\n } catch (IllegalAccessException e) {\n e.printStackTrace();\n }\n }\n\n private Object recursiveAssembly(Class clazz){\n if(null != clazz){\n return this.registerBean(clazz);\n }\n return null;\n }\n\n}\n\n这里将所有Bean的名称存储在 beanKeys 这个map中,将所有的对象存储在 beans 中,用 beanKeys 维护名称和对象的关系。\n在装配的时候步骤如下:\n\n判断是否使用了自定义命名的对象(是:根据name查找bean)\n判断是否使用了Class类型Bean(是:根据Class查找Bean,如果查找不到则创建一个无参构造函数的Bean)\n\n下面是一个测试:\npublic class IocTest {\n\n private static Container container = new SampleContainer();\n\n public static void baseTest(){\n container.registerBean(Lol.class);\n // 初始化注入\n container.initWired();\n\n Lol lol = container.getBean(Lol.class);\n lol.work();\n }\n\n public static void iocClassTest(){\n container.registerBean(Lol2.class);\n // 初始化注入\n container.initWired();\n\n Lol2 lol = container.getBean(Lol2.class);\n lol.work();\n }\n\n public static void iocNameTest(){\n container.registerBean(\"face\", new FaceService2());\n container.registerBean(Lol3.class);\n // 初始化注入\n container.initWired();\n\n Lol3 lol = container.getBean(Lol3.class);\n lol.work();\n }\n\n public static void main(String[] args) {\n baseTest();\n //iocClassTest();\n //iocNameTest();\n }\n\n}\n\n输出结果:\n剑圣买了5毛钱特效,装逼成功!\n\n代码出处\nlinks\n\n目录\n上一节: Spring中怎么用\n下一节:原理分析\n\n"},"ioc/4.principle.html":{"url":"ioc/4.principle.html","title":"原理分析","keywords":"","body":"原理分析\n类装载器ClassLoader\n类装载器工作机制\n类装载器就是寻找类的节码文件并构造出类在JVM内部表示对象的组件。在Java中,类装载器把一个类装入JVM中,要经过以下步骤: \n[1.]装载:查找和导入Class文件; \n[2.]链接:执行校验、准备和解析步骤,其中解析步骤是可以选择的: \n [2.1]校验:检查载入Class文件数据的正确性; \n [2.2]准备:给类的静态变量分配存储空间; \n [2.3]解析:将符号引用转成直接引用; \n[3.]初始化:对类的静态变量、静态代码块执行初始化工作。 \n类装载工作由ClassLoader及其子类负责,ClassLoader是一个重要的Java运行时系统组件,它负责在运行时查找和装入Class字节码文件。JVM在运行时会产生三个ClassLoader:根装载器、ExtClassLoader(扩展类装载器)和AppClassLoader(系统类装载器)。其中,根装载器不是ClassLoader的子类,它使用C++编写,因此我们在Java中看不到它,根装载器负责装载JRE的核心类库,如JRE目标下的rt.jar、charsets.jar等。ExtClassLoader和AppClassLoader都是ClassLoader的子类。其中ExtClassLoader负责装载JRE扩展目录ext中的JAR类包;AppClassLoader负责装载Classpath路径下的类包。 \n这三个类装载器之间存在父子层级关系,即根装载器是ExtClassLoader的父装载器,ExtClassLoader是AppClassLoader的父装载器。默认情况下,使用AppClassLoader装载应用程序的类,我们可以做一个实验: \npublic class ClassLoaderTest {\n public static void main(String[] args) {\n ClassLoader loader = Thread.currentThread().getContextClassLoader();\n System.out.println(\"current loader:\"+loader);\n System.out.println(\"parent loader:\"+loader.getParent());\n System.out.println(\"grandparent loader:\"+loader.getParent(). getParent());\n }\n}\n\n运行以上代码,在控制台上将打出以下信息: \ncurrent loader:sun.misc.Launcher$AppClassLoader@131f71a \nparent loader:sun.misc.Launcher$ExtClassLoader@15601ea \n//①根装载器在Java中访问不到,所以返回null \ngrandparent loader:null\n\n通过以上的输出信息,我们知道当前的ClassLoader是AppClassLoader,父ClassLoader是ExtClassLoader,祖父ClassLoader是根类装载器,因为在Java中无法获得它的句柄,所以仅返回null。 \nJVM装载类时使用“全盘负责委托机制”,“全盘负责”是指当一个ClassLoader装载一个类的时,除非显式地使用另一个ClassLoader,该类所依赖及引用的类也由这个ClassLoader载入;“委托机制”是指先委托父装载器寻找目标类,只有在找不到的情况下才从自己的类路径中查找并装载目标类。这一点是从安全角度考虑的,试想如果有人编写了一个恶意的基础类(如java.lang.String)并装载到JVM中将会引起多么可怕的后果。但是由于有了“全盘负责委托机制”,java.lang.String永远是由根装载器来装载的,这样就避免了上述事件的发生。 \nClassLoader重要方法\n在Java中,ClassLoader是一个抽象类,位于java.lang包中。下面对该类的一些重要接口方法进行介绍: \n\nClass loadClass(String name)\n name参数指定类装载器需要装载类的名字,必须使用全限定类名,如com.baobaotao. beans.Car。该方法有一个重载方法loadClass(String name ,boolean resolve),resolve参数告诉类装载器是否需要解析该类。在初始化类之前,应考虑进行类解析的工作,但并不是所有的类都需要解析,如果JVM只需要知道该类是否存在或找出该类的超类,那么就不需要进行解析。 \nClass defineClass(String name, byte[] b, int off, int len)\n 将类文件的字节数组转换成JVM内部的java.lang.Class对象。字节数组可以从本地文件系统、远程网络获取。name为字节数组对应的全限定类名。 \nClass findSystemClass(String name)\n 从本地文件系统载入Class文件,如果本地文件系统不存在该Class文件,将抛出ClassNotFoundException异常。该方法是JVM默认使用的装载机制。 \nClass findLoadedClass(String name)\n调用该方法来查看ClassLoader是否已装入某个类。如果已装入,那么返回java.lang.Class对象,否则返回null。如果强行装载已存在的类,将会抛出链接错误。 \nClassLoader getParent()\n 获取类装载器的父装载器,除根装载器外,所有的类装载器都有且仅有一个父装载器,ExtClassLoader的父装载器是根装载器,因为根装载器非Java编写,所以无法获得,将返回null。 \n\n除JVM默认的三个ClassLoader以外,可以编写自己的第三方类装载器,以实现一些特殊的需求。类文件被装载并解析后,在JVM内将拥有一个对应的java.lang.Class类描述对象,该类的实例都拥有指向这个类描述对象的引用,而类描述对象又拥有指向关联ClassLoader的引用,如图所示。 \n\n每一个类在JVM中都拥有一个对应的java.lang.Class对象,它提供了类结构信息的描述。数组、枚举、注解以及基本Java类型(如int、double等),甚至void都拥有对应的Class对象。Class没有public的构造方法。Class对象是在装载类时由JVM通过调用类装载器中的defineClass()方法自动构造的。 \nJava反射机制\nClass反射对象描述类语义结构,可以从Class对象中获取构造函数、成员变量、方法类等类元素的反射对象,并以编程的方式通过这些反射对象对目标类对象进行操作。这些反射对象类在java.reflect包中定义,下面是最主要的三个反射类: \n\nConstructor:类的构造函数反射类,通过Class#getConstructors()方法可以获得类的所有构造函数反射对象数组。在JDK5.0中,还可以通过getConstructor(Class... parameterTypes)获取拥有特定入参的构造函数反射对象。Constructor的一个主要方法是newInstance(Object[] initargs),通过该方法可以创建一个对象类的实例,相当于new关键字。在JDK5.0中该方法演化为更为灵活的形式:newInstance (Object... initargs)。\nMethod:类方法的反射类,通过Class#getDeclaredMethods()方法可以获取类的所有方法反射类对象数组Method[]。在JDK5.0中可以通过getDeclaredMethod(String name, Class... parameterTypes)获取特定签名的方法,name为方法名;Class...为方法入参类型列表。Method最主要的方法是invoke(Object obj, Object[] args),obj表示操作的目标对象;args为方法入参,代码清单3 10③处演示了这个反射类的使用方法。在JDK 5.0中,该方法的形式调整为invoke(Object obj, Object... args)。此外,Method还有很多用于获取类方法更多信息的方法:1)Class getReturnType():获取方法的返回值类型; \n2)Class[] getParameterTypes():获取方法的入参类型数组; \n3)Class[] getExceptionTypes():获取方法的异常类型数组; \n4)Annotation[][] getParameterAnnotations():获取方法的注解信息,JDK 5.0中的新方法;\n\nField:类的成员变量的反射类,通过Class#getDeclaredFields()方法可以获取类的成员变量反射对象数组,通过Class#getDeclaredField(String name)则可获取某个特定名称的成员变量反射对象。Field类最主要的方法是set(Object obj, Object value),obj表示操作的目标对象,通过value为目标对象的成员变量设置值。如果成员变量为基础类型,用户可以使用Field类中提供的带类型名的值设置方法,如setBoolean(Object obj, boolean value)、setInt(Object obj, int value)等。\n\n此外,Java还为包提供了Package反射类,在JDK 5.0中还为注解提供了AnnotatedElement反射类。总之,Java的反射体系保证了可以通过程序化的方式访问目标类中所有的元素,对于private或protected的成员变量和方法,只要JVM的安全机制允许,也可以通过反射进行调用,请看下面的例子: \n/**\n * LOL英雄\n */\npublic class PrivateHero {\n\n // 英雄名称\n private String name;\n // 装备名称\n private String outfit;\n\n public PrivateHero() {\n }\n\n public void say(){\n System.out.println(name + \"购买了\" + outfit);\n }\n}\n\npublic class Test2 {\n\n public static void main(String[] args) throws Exception {\n\n ClassLoader loader = Thread.currentThread().getContextClassLoader(); \n Class clazz = loader.loadClass(\"com.biezhi.ioc.PrivateHero\"); \n\n PrivateHero hero = (PrivateHero) clazz.newInstance();\n\n Field name = clazz.getDeclaredField(\"name\");\n // 取消Java语言访问检查以访问private变量\n name.setAccessible(true);\n name.set(hero, \"德玛西亚之力\");\n\n Field outfit = clazz.getDeclaredField(\"outfit\");\n outfit.setAccessible(true);\n outfit.set(hero, \"神盾\");\n\n // 运行方法\n hero.say();\n }\n}\n\n运行该类,打印出以下信息: \n德玛西亚之力购买了神盾\n\n在访问private、protected成员变量和方法时必须通过setAccessible(boolean access)方法取消Java语言检查,否则将抛出IllegalAccessException。\n如果JVM的安全管理器设置了相应的安全机制,调用该方法将抛出SecurityException。 \nlinks\n\n目录\n上一节: 设计一个IOC\n\n"},"设计模式系列.html":{"url":"设计模式系列.html","title":"设计模式系列","keywords":"","body":"设计模式系列\n"},"designpatterns/singleton.html":{"url":"designpatterns/singleton.html","title":"如何正确地写出单例模式","keywords":"","body":"如何正确地写出单例模式\n单例模式算是设计模式中最容易理解,也是最容易手写代码的模式了吧。但是其中的坑却不少,所以也常作为面试题来考。本文主要对几种单例写法的整理,并分析其优缺点。很多都是一些老生常谈的问题,但如果你不知道如何创建一个线程安全的单例,不知道什么是双检锁,那这篇文章可能会帮助到你。\n懒汉式,线程不安全\n当被问到要实现一个单例模式时,很多人的第一反应是写出如下的代码,包括教科书上也是这样教我们的。\npublic class Singleton {\n private static Singleton instance;\n private Singleton (){}\n\n public static Singleton getInstance() {\n if (instance == null) {\n instance = new Singleton();\n }\n return instance;\n }\n}\n\n这段代码简单明了,而且使用了懒加载模式,但是却存在致命的问题。当有多个线程并行调用 getInstance() 的时候,就会创建多个实例。也就是说在多线程下不能正常工作。\n懒汉式,线程安全\n为了解决上面的问题,最简单的方法是将整个 getInstance() 方法设为同步(synchronized)。\npublic static synchronized Singleton getInstance() {\n if (instance == null) {\n instance = new Singleton();\n }\n return instance;\n}\n\n虽然做到了线程安全,并且解决了多实例的问题,但是它并不高效。因为在任何时候只能有一个线程调用 getInstance() 方法。但是同步操作只需要在第一次调用时才被需要,即第一次创建单例实例对象时。这就引出了双重检验锁。\n双重检验锁\n双重检验锁模式(double checked locking pattern),是一种使用同步块加锁的方法。程序员称其为双重检查锁,因为会有两次检查 instance == null,一次是在同步块外,一次是在同步块内。为什么在同步块内还要再检验一次?因为可能会有多个线程一起进入同步块外的 if,如果在同步块内不进行二次检验的话就会生成多个实例了。\npublic static Singleton getSingleton() {\n if (instance == null) { //Single Checked\n synchronized (Singleton.class) {\n if (instance == null) { //Double Checked\n instance = new Singleton();\n }\n }\n }\n return instance ;\n}\n\n这段代码看起来很完美,很可惜,它是有问题。主要在于instance = new Singleton()这句,这并非是一个原子操作,事实上在 JVM 中这句话大概做了下面 3 件事情。\n\n给 instance 分配内存\n调用 Singleton 的构造函数来初始化成员变量\n将instance对象指向分配的内存空间(执行完这步 instance 就为非 null 了)\n\n但是在 JVM 的即时编译器中存在指令重排序的优化。也就是说上面的第二步和第三步的顺序是不能保证的,最终的执行顺序可能是 1-2-3 也可能是 1-3-2。如果是后者,则在 3 执行完毕、2 未执行之前,被线程二抢占了,这时 instance 已经是非 null 了(但却没有初始化),所以线程二会直接返回 instance,然后使用,然后顺理成章地报错。\n我们只需要将 instance 变量声明成 volatile 就可以了。\npublic class Singleton {\n private volatile static Singleton instance; //声明成 volatile\n private Singleton (){}\n\n public static Singleton getSingleton() {\n if (instance == null) { \n synchronized (Singleton.class) {\n if (instance == null) { \n instance = new Singleton();\n }\n }\n }\n return instance;\n }\n\n}\n\n有些人认为使用 volatile 的原因是可见性,也就是可以保证线程在本地不会存有 instance 的副本,每次都是去主内存中读取。但其实是不对的。使用 volatile 的主要原因是其另一个特性:禁止指令重排序优化。也就是说,在 volatile 变量的赋值操作后面会有一个内存屏障(生成的汇编代码上),读操作不会被重排序到内存屏障之前。比如上面的例子,取操作必须在执行完 1-2-3 之后或者 1-3-2 之后,不存在执行到 1-3 然后取到值的情况。从「先行发生原则」的角度理解的话,就是对于一个 volatile 变量的写操作都先行发生于后面对这个变量的读操作(这里的“后面”是时间上的先后顺序)。\n但是特别注意在 Java 5 以前的版本使用了 volatile 的双检锁还是有问题的。其原因是 Java 5 以前的 JMM (Java 内存模型)是存在缺陷的,即时将变量声明成 volatile 也不能完全避免重排序,主要是 volatile 变量前后的代码仍然存在重排序问题。这个 volatile 屏蔽重排序的问题在 Java 5 中才得以修复,所以在这之后才可以放心使用 volatile。\n相信你不会喜欢这种复杂又隐含问题的方式,当然我们有更好的实现线程安全的单例模式的办法。\n饿汉式 static final field\n这种方法非常简单,因为单例的实例被声明成 static 和 final 变量了,在第一次加载类到内存中时就会初始化,所以创建实例本身是线程安全的。\npublic class Singleton{\n //类加载时就初始化\n private static final Singleton instance = new Singleton();\n\n private Singleton(){}\n\n public static Singleton getInstance(){\n return instance;\n }\n}\n\n这种写法如果完美的话,就没必要在啰嗦那么多双检锁的问题了。缺点是它不是一种懒加载模式(lazy initialization),单例会在加载类后一开始就被初始化,即使客户端没有调用 getInstance()方法。饿汉式的创建方式在一些场景中将无法使用:譬如 Singleton 实例的创建是依赖参数或者配置文件的,在 getInstance() 之前必须调用某个方法设置参数给它,那样这种单例写法就无法使用了。\n静态内部类 static nested class\n我比较倾向于使用静态内部类的方法,这种方法也是《Effective Java》上所推荐的。\npublic class Singleton { \n private static class SingletonHolder { \n private static final Singleton INSTANCE = new Singleton(); \n } \n private Singleton (){} \n public static final Singleton getInstance() { \n return SingletonHolder.INSTANCE; \n } \n}\n\n这种写法仍然使用JVM本身机制保证了线程安全问题;由于 SingletonHolder 是私有的,除了 getInstance() 之外没有办法访问它,因此它是懒汉式的;同时读取实例的时候不会进行同步,没有性能缺陷;也不依赖 JDK 版本。\n枚举 Enum\n用枚举写单例实在太简单了!这也是它最大的优点。下面这段代码就是声明枚举实例的通常做法。\npublic enum EasySingleton{\n INSTANCE;\n}\n\n我们可以通过EasySingleton.INSTANCE来访问实例,这比调用getInstance()方法简单多了。创建枚举默认就是线程安全的,所以不需要担心double checked locking,而且还能防止反序列化导致重新创建新的对象。但是还是很少看到有人这样写,可能是因为不太熟悉吧。\n总结\n一般来说,单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。上述所说都是线程安全的实现,文章开头给出的第一种方法不算正确的写法。\n就我个人而言,一般情况下直接使用饿汉式就好了,如果明确要求要懒加载(lazy initialization)会倾向于使用静态内部类,如果涉及到反序列化创建对象时会试着使用枚举的方式来实现单例。\nRead More\n\nDouble Checked Locking on Singleton Class in Java\nhttp://javarevisited.blogspot.sg/2012/07/why-enum-singleton-are-better-in-java.html\nHow to create thread safe Singleton in Java\n10 Singleton Pattern Interview questions in Java\n\n由于作者这篇文章写的非常好,我也就没有重写 原文出处\n"},"designpatterns/proxy.html":{"url":"designpatterns/proxy.html","title":"代理模式剖析","keywords":"","body":"代理模式剖析\n\n代理模式定义\n静态代理\n代理模式的参与者\n代理模式的实现思路\n静态代理的实例\n\n\n动态代理\nJDK动态代理源码分析(JDK7)\n代理对象是如何创建出来的?\n是谁调用了Invoke?\n\n\n参考文献\n\n代理模式定义\n维基百科上是这样描述代理模式的:所谓代理者是指一个类可以作为其他东西的接口。代理者可以作任何东西的接口, 例如网络连接,存储器中的大对象,文件或者其他无法复制的资源。\n著名的代理模式的例子就是引用计数(reference counting): 当需要一个复杂对象的多份副本时,代理模式可以结合享元模式以减少存储器的用量。典型做法是创建一个复杂对象以及多个代理者,每个代理者会引用到原本的对象。而作用在代理者的运算会转送到原本对象。一旦所有的代理者都不存在时,复杂对象会被移除。\n静态代理\n所谓静态代理,就是在编译阶段就生成代理类来完成对代理对象的一系列操作。下面是代理模式的结构类图:\n代理模式的参与者\n代理模式的角色分四种:\n\n主题接口: 即代理类的所实现的行为接口。\n目标对象: 也就是被代理的对象。\n代理对象: 用来封装真是主题类的代理类\n客户端 \n\n下面是代理模式的类图结构: \n\n代理模式的实现思路\n\n代理对象和目标对象均实现同一个行为接口。\n代理类和目标类分别具体实现接口逻辑。\n在代理类的构造函数中实例化一个目标对象。\n在代理类中调用目标对象的行为接口。\n客户端想要调用目标对象的行为接口,只能通过代理类来操作。\n\n静态代理的实例\n下面以一个延迟加载的例子来说明一下静态代理。我们在启动某个服务系统时,加载某一个类时可能会耗费很长时间。为了获取更好的性能,在启动系统的时候,我们往往不去初始化这个复杂的类,取而代之的是去初始化其代理类。这样将耗费资源多的方法使用代理进行分离,可以加快系统的启动速度,减少用户等待的时间。\n\n定义一个主题接口\n\npublic interface Subject {\n public void sayHello();\n public void sayGoodBye();\n}\n\n\n定义一个目标类, 并实现主题接口\n\npublic class RealSubject implements Subject {\n public void sayHello() {\n System.out.println(\"Hello World\");\n }\n\n public void sayGoodBye() {\n System.out.println(\"GoodBye World\");\n }\n}\n\n\n定义一个代理类,来代理目标对象\n\npublic class StaticProxy implements Subject {\n\n Private RealSubject realSubject = null;\n\n public StaticProxy() {}\n\n public void sayHello() {\n //用到时候才加载,懒加载\n if(realSubject == null) {\n realSubject = new RealSubject();\n }\n realSubject.sayHello();\n }\n\n //sayGoodbye方法同理\n ...\n}\n\n\n定义一个客户端\n\npublic class Client {\n public static void main(String [] args) {\n StaticProxy sp = new StaticProxy();\n sp.sayHello();\n sp.sayGoodBye();\n }\n}\n\n以上就是静态代理的一个简单测试例子。感觉可能没有实际用途。然而并非如此。使用代理我们还可以将目标对象的方法进行改造,比如数据库连接池中创建了一系列连接,为了保证不频繁的打开连接,这些连接是几乎不会关闭的。然而我们编程总有习惯去将打开的 Connection 去 close 。 这样我们就可以利用代理模式来重新代理 Connection 接口中的 close 方法,改变为回收到数据库连接池中而不是真正的执行 Connection.close 方法。其他的例子还有很多,具体需要自己体会。\n动态代理\n动态代理是指在运行时动态生成代理类。即,代理类的字节码将在运行时生成并载入当前代理的 ClassLoader。与静态处理类相比,动态类有诸多好处。\n\n不需要为真实主题写一个形式上完全一样的封装类,假如主题接口中的方法很多,为每一个接口写一个代理方法也很麻烦。如果接口有变动,则真实主题和代理类都要修改,不利于系统维护;\n使用一些动态代理的生成方法甚至可以在运行时制定代理类的执行逻辑,从而大大提升系统的灵活性。\n\n生成动态代理的方法有很多: JDK中自带动态代理,CGlib, javassist等。这些方法各有优缺点。本文主要探究JDK中的动态代理的使用和源码分析。\n下面用一个实例讲解一下JDK中动态代理的用法:\npublic class dynamicProxy implements InvocationHandler {\n\n private RealSubject = null;\n\n public Object invoke(Object proxy, Method method, Object[] args){\n if(RealSubject == null) {\n RealSubject = new RealSubject();\n }\n method.invoke(RealSubject, args);\n return RealSubject;\n }\n\n}\n\n客户端代码实例\npublic class Client {\n public static void main(Strings[] args) {\n Subject subject = (Subject)Proxy.newInstance(ClassLoader.getSystemLoader(), RealSubject.class.getInterfaces(), new DynamicProxy());\n Subject.sayHello();\n Subject.sayGoodBye();\n }\n}\n\n从上面的代码可以看出,要利用JDK中的动态代理。利用静态方法Proxy.newInstance(ClassLoader, Interfaces[], InvokeHandler)可以创建一个动态代理类。 newInstance方法有三个参数,分别表示类加载器,一个希望该代理类实现的接口列表,以及实现InvokeHandler接口的实例。 动态代理将每个方法的执行过程则交给了Invoke方法处理。\nJDK动态代理要求,被代理的必须是个接口,单纯的类则不行。JDK动态代理所生成的代理类都会继承 Proxy 类,同时代理类会实现所有你传入的接口列表。因此可以强制类型转换成接口类型。 下面是 Proxy 的结构图。\n\n可以看出Proxy全是静态方法,因此如果代理类没有实现任何接口,那么他就是Proxy类型,没有实例方法。\n当然加入你要是非要代理一个没有实现某个接口的类,同时该类的方法与其他接口定义的方法相同,利用反射也是可以轻松实现的。\npublic class DynamicProxy implements InvokeHandler {\n\n //你想代理的类\n private TargetClass targetClass = null;\n\n //初始化该类\n public DynamicProxy(TargetClass targetClass) {\n this.targetClass = targetClass;\n }\n\n public Object invoke(Object proxy, Method method, Object[] args) {\n //利用反射获取你想代理的类的方法\n Method myMethod = targetClass.getClass().getDeclaredMethod(method.getName(), method.getParameterTypes());\n myMethod.setAccessible(true);\n return myMethod.invoke(targetClass, args);\n }\n}\n\nJDK动态代理源码分析(JDK7)\n看了上面的例子,我们只是简单会用动态代理。但是对于代理类是如何创建出来的,是谁调用Invoke方法等还云里雾里。下面通过分析\n代理对象是如何创建出来的?\n首先看 Proxy.newInstance 方法的源码:\npublic static Object newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h) throws IllegalArgumentException {\n\n //获取接口信息\n final Class[] intfs = interfaces.clone();\n final SecurityManager sm = System.getSecurityManager();\n if (sm != null) {\n checkProxyAccess(Reflection.getCallerClass(), loader, intfs);\n }\n\n //生成代理类\n Class cl = getProxyClass0(loader, intfs);\n // ...OK我们先看前半截\n}\n\n从源码看出代理类的生成是依靠getProxyClass0这个方法,接下来看getProxyClass0源码:\nprivate static Class getProxyClass0(ClassLoader loader, Class... interfaces) {\n\n //接口列表数目不能超过0xFFFF\n if (interfaces.length > 65535) {\n throw new IllegalArgumentException(\"interface limit exceeded\");\n }\n\n //注意这里, 下面详细解释 \n return proxyClassCache.get(loader, interfaces);\n}\n\n对 proxyClassCache.get 的解释是: 如果实现接口列表的代理类已经存在,那么直接从cache中拿。如果不存在,则通过ProxyClassFactory生成一个。\n在看 proxyClassCache.get 源码之前,先简单了解一下 proxyClassCache:\nprivate static final WeakCache[], Class>\n proxyClassCache = new WeakCache<>(new KeyFactory(), new ProxyClassFactory());\n\nproxyClassCache是一个WeakCache类型的缓存,它的构造函数有两个参数,其中一个就是用于生成代理类的ProxyClassFactory,下面是proxyClassCache.get的源码:\nfinal class WeakCache {\n ...\n public V get(K key, P parameter) {}\n}\n\n这里K表示key,P表示parameters, V表示value\npublic V get(K key, P parameter) {\n\n // java7 NullObject判断方法,如果parameter为空则抛出带有指定消息的异常。 如果不为空则返回。\n Objects.requireNonNull(parameter);\n\n // 清理持有弱引用的WeakHashMap这种数据结构,一般用于缓存\n expungeStaleEntries();\n\n // 从队列中获取cacheKey\n Object cacheKey = CacheKey.valueOf(key, refQueue);\n\n //利用懒加载的方式填充Supplier,Concurrent是一种线程安全的map\n ConcurrentMap> valuesMap = map.get(cacheKey);\n if (valuesMap == null) {\n ConcurrentMap> oldValuesMap = map.putIfAbsent(cacheKey, valuesMap = new ConcurrentHashMap<>());\n if (oldValuesMap != null) {\n valuesMap = oldValuesMap;\n }\n }\n\n // create subKey and retrieve the possible Supplier stored by that\n // subKey from valuesMap\n Object subKey = Objects.requireNonNull(subKeyFactory.apply(key, parameter));\n Supplier supplier = valuesMap.get(subKey);\n Factory factory = null;\n while (true) {\n if (supplier != null) {\n // 从supplier中获取Value,这个Value可能是一个工厂或者Cache的实\n //下面这三句代码是核心代码,返回实现InvokeHandler的类并包含了所需要的信息。\n V value = supplier.get();\n if (value != null) {\n return value;\n }\n }\n\n // else no supplier in cache\n // or a supplier that returned null (could be a cleared CacheValue\n // or a Factory that wasn't successful in installing the CacheValue)\n //下面这个过程就是填充supplier的过程\n if(factory == null) {\n //创建一个factory\n }\n if(supplier == null) {\n //填充supplier\n }else {\n //填充supplier\n }\n }\n}\n\nwhile循环的作用就是不停的获取实现InvokeHandler的类,这个类可以是从缓存中拿到,也可是是从proxyFactoryClass生成的。 \nFactory是一个实现了Supplier接口的内部类。这个类覆盖了get方法,在get方法中调用了类型为proxyFactoryClass的实例方法apply。这个方法才是真正创建代理类的方法。下面看ProxyFactoryClass.apply方法的源码:\npublic Class apply(ClassLoader loader, Class[] interfaces) {\n Map, Boolean> interfaceSet = new IdentityHashMap<>(interfaces.length);\n for (Class intf : interfaces) {\n /* Verify that the class loader resolves the name of this interface to the same Class object.*/\n Class interfaceClass = null;\n try {\n //加载每一个接口运行时的信息\n interfaceClass = Class.forName(intf.getName(), false, loader);\n } catch (ClassNotFoundException e) {\n }\n\n //如果使用你自己的classload加载的class与你传入的class不相等,抛出异常\n if (interfaceClass != intf) {\n throw new IllegalArgumentException(\n intf + \" is not visible from class loader\");\n }\n\n //如果传入不是一个接口类型\n if (!interfaceClass.isInterface()) {\n throw new IllegalArgumentException(\n interfaceClass.getName() + \" is not an interface\");\n }\n\n //验证接口是否重复\n if (interfaceSet.put(interfaceClass, Boolean.TRUE) != null) {\n throw new IllegalArgumentException(\"repeated interface: \" + interfaceClass.getName());\n }\n }\n\n String proxyPkg = null; // package to define proxy class in\n /* Record the package of a non-public proxy interface so that the proxy class will be defined in the same package. \n * Verify that all non-public proxy interfaces are in the same package.\n */\n //这一段是看你传入的接口中有没有不是public的接口,如果有,这些接口必须全部在一个包里定义的,否则抛异常 \n for (Class intf : interfaces) {\n int flags = intf.getModifiers();\n if (!Modifier.isPublic(flags)) {\n String name = intf.getName();\n int n = name.lastIndexOf('.');\n String pkg = ((n == -1) ? \"\" : name.substring(0, n + 1));\n if (proxyPkg == null) {\n proxyPkg = pkg;\n } else if (!pkg.equals(proxyPkg)) {\n throw new IllegalArgumentException(\n \"non-public interfaces from different packages\");\n }\n }\n }\n if (proxyPkg == null) {\n // if no non-public proxy interfaces, use com.sun.proxy package\n proxyPkg = ReflectUtil.PROXY_PACKAGE + \".\";\n }\n /*\n * Choose a name for the proxy class to generate.\n */\n long num = nextUniqueNumber.getAndIncrement();\n //生成随机代理类的类名,$Proxy + num\n String proxyName = proxyPkg + proxyClassNamePrefix + num;\n /*\n * 生成代理类的class文件,返回字节流\n */\n byte[] proxyClassFile = ProxyGenerator.generateProxyClass(proxyName, interfaces);\n try {\n return defineClass0(loader, proxyName, proxyClassFile, 0, proxyClassFile.length);\n } catch (ClassFormatError e) {\n //结束\n throw new IllegalArgumentException(e.toString());\n }\n }\n }\n}\n\n前文提到ProxyFactoryClass.apply是真正生成代理类的方法,这其实是不准确的。源代码读到这里,我们会发现ProxyGenerator.generateProxyClass才是真正生成代理类的方法。\n根据Java class字节码组成来生成相应的Clss文件。具体ProxyGenerator.generateProxyClass源码如下:\nprivate byte[] generateClassFile() {\n /*\n * Step 1: Assemble ProxyMethod objects for all methods to\n * generate proxy dispatching code for.\n */\n //addProxyMethod方法,就是将方法都加入到一个列表中,并与对应的class对应起来 \n //这里给Object对应了三个方法hashCode,toString和equals \n addProxyMethod(hashCodeMethod, Object.class);\n addProxyMethod(equalsMethod, Object.class);\n addProxyMethod(toStringMethod, Object.class);\n //将接口列表中的接口与接口下的方法对应起来\n for (int i = 0; i sigmethods : proxyMethods.values()) {\n checkReturnTypes(sigmethods);\n }\n /*\n * Step 2: Assemble FieldInfo and MethodInfo structs for all of\n * fields and methods in the class we are generating.\n */\n //方法中加入构造方法,这个构造方法只有一个,就是一个带有InvocationHandler接口的构造方法 \n //这个才是真正给class文件,也就是代理类加入方法了,不过还没真正处理,只是先加进来等待循环,构造方法在class文件中的名称描述是 \n try {\n methods.add(generateConstructor());\n for (List sigmethods : proxyMethods.values()) {\n for (ProxyMethod pm : sigmethods) {\n //给每一个代理方法加一个Method类型的属性,数字10是class文件的标识符,代表这些属性都是private static的 \n fields.add(new FieldInfo(pm.methodFieldName,\n \"Ljava/lang/reflect/Method;\",\n ACC_PRIVATE | ACC_STATIC));\n //将每一个代理方法都加到代理类的方法中 \n methods.add(pm.generateMethod());\n }\n }\n //加入一个静态初始化块,将每一个属性都初始化,这里静态代码块也叫类构造方法,其实就是名称为的方法,所以加到方法列表 \n methods.add(generateStaticInitializer());\n } catch (IOException e) {\n throw new InternalError(\"unexpected I/O Exception\");\n }\n //方法和属性个数都不能超过65535,包括之前的接口个数也是这样,\n //这是因为在class文件中,这些个数都是用4位16进制表示的,所以最大值是2的16次方-1 \n if (methods.size() > 65535) {\n throw new IllegalArgumentException(\"method limit exceeded\");\n }\n if (fields.size() > 65535) {\n throw new IllegalArgumentException(\"field limit exceeded\");\n }\n //接下来就是写class文件的过程,包括魔数,类名,常量池等一系列字节码的组成,就不一一细说了。需要的可以参考JVM虚拟机字节码的相关知识。\n cp.getClass(dotToSlash(className));\n cp.getClass(superclassName);\n for (int i = 0; i \n经过层层调用,一个代理类终于生成了。\n是谁调用了Invoke?\n我们模拟JDK自己生成一个代理类, 类名为TestProxyGen:\npublic class TestGeneratorProxy {\n public static void main(String[] args) throws IOException {\n byte[] classFile = ProxyGenerator.generateProxyClass(\"TestProxyGen\",\n Subject.class.getInterfaces());\n File file = new File(\"/Users/yadoao/Desktop/TestProxyGen.class\");\n FileOutputStream fos = new FileOutputStream(file); \n fos.write(classFile); \n fos.flush(); \n fos.close(); \n }\n}\n\n用JD-GUI反编译该class文件,结果如下:\nimport java.lang.reflect.InvocationHandler;\nimport java.lang.reflect.Method;\nimport java.lang.reflect.Proxy;\nimport java.lang.reflect.UndeclaredThrowableException;\n\npublic final class TestProxyGen extends Proxy implements ISubject {\n\n private static Method m3;\n private static Method m1;\n private static Method m0;\n private static Method m4;\n private static Method m2;\n\n public TestProxyGen(InvocationHandler paramInvocationHandler) throws {\n super(paramInvocationHandler);\n }\n\n public final void sayHello() throws {\n try {\n this.h.invoke(this, m3, null);\n return;\n } catch (Error|RuntimeException localError) {\n throw localError;\n } catch (Throwable localThrowable) {\n throw new UndeclaredThrowableException(localThrowable);\n }\n }\n\n public final boolean equals(Object paramObject) throws {\n try {\n return ((Boolean)this.h.invoke(this, m1, new Object[] { paramObject })).booleanValue();\n } catch (Error|RuntimeException localError) {\n throw localError;\n } catch (Throwable localThrowable) {\n throw new UndeclaredThrowableException(localThrowable);\n }\n }\n\n public final int hashCode() throws {\n try {\n return ((Integer)this.h.invoke(this, m0, null)).intValue();\n } catch (Error|RuntimeException localError) {\n throw localError;\n } catch (Throwable localThrowable) {\n throw new UndeclaredThrowableException(localThrowable);\n }\n }\n\n public final void sayGoodBye() throws {\n try {\n this.h.invoke(this, m4, null);\n return;\n } catch (Error|RuntimeException localError) {\n throw localError;\n } catch (Throwable localThrowable) {\n throw new UndeclaredThrowableException(localThrowable);\n }\n }\n\n public final String toString() throws {\n try {\n return (String)this.h.invoke(this, m2, null);\n } catch (Error|RuntimeException localError) {\n throw localError;\n } catch (Throwable localThrowable) {\n throw new UndeclaredThrowableException(localThrowable);\n }\n }\n\n static {\n try {\n m3 = Class.forName(\"com.su.dynamicProxy.ISubject\").getMethod(\"sayHello\", new Class[0]);\n m1 = Class.forName(\"java.lang.Object\").getMethod(\"equals\", new Class[] { Class.forName(\"java.lang.Object\") });\n m0 = Class.forName(\"java.lang.Object\").getMethod(\"hashCode\", new Class[0]);\n m4 = Class.forName(\"com.su.dynamicProxy.ISubject\").getMethod(\"sayGoodBye\", new Class[0]);\n m2 = Class.forName(\"java.lang.Object\").getMethod(\"toString\", new Class[0]);\n return;\n } catch (NoSuchMethodException localNoSuchMethodException) {\n throw new NoSuchMethodError(localNoSuchMethodException.getMessage());\n } catch (ClassNotFoundException localClassNotFoundException) {\n throw new NoClassDefFoundError(localClassNotFoundException.getMessage());\n }\n }\n}\n\n\n首先注意到生成代理类的构造函数,它传入一个实现InvokeHandler接口的类作为参数,并调用父类Proxy的构造器,即将Proxy中的成员变量protected InvokeHander h进行了初始化。\n再次注意到几个静态的初始化块,这里的静态初始化块就是对代理的接口列表以及hashcode,toString, equals方法进行初始化。\n最后就是这几个方法的调用过程,全都是回调Invoke方法。\n\n就此代理模式分析到此结束。\n参考文献\n\n代理模式原理及实例讲解 \n代理模式学习\n\n"},"designpatterns/strategy.html":{"url":"designpatterns/strategy.html","title":"什么是策略模式","keywords":"","body":"什么是策略模式\n\n策略模式\n一、策略模式的定义\n二、策略模式的实际应用\n三、策略模式中的设计原则\n\n\n\n策略模式\n策略模式的定义\n策略模式,顾名思义就是指对象具有某个行为,但是在不同的业务场景下,这个行为应该有不同的表现形式,也就是有了不同的策略。让对象能再不同的场景下对同一行为有不同的实现,这就是策略模式。\n下面是策略模式的类图: \n\n\n首先定义一个策略接口:public interface Strategy {\n public void algorithmStartegy() ;\n}\n\n\n定义两个具体的策略类:public class ConcentrateStrategy_1 implements Strategy{\n @Override\n public void algorithmStartegy() {\n System.out.println(\"I am algorithm strategy 1\");\n }\n}\npublic class ConcentrateStrategy_2 implements Strategy{\n @Override\n public void algorithmStartegy() {\n System.out.println(\"I am algorithm strategy 2\");\n }\n}\n\n\n定义一个算法使用场景public class Situation {\n Strategy strategy;\n public Situation(Strategy strategy) {\n this.strategy = strategy;\n }\n public void handleAlgorithm() {\n strategy.algorithmStartegy();\n }\n}\n\n\n客户端调用Situation situation = new Situation(new ConcentrateStrategy_1());\nsituation.handleAlgorithm();\n ...\n\n\n\n从策略模式的描述以及类图来看真的是非常简单,总结起来就是策略模式定义了一组算法,它们有一个共同的策略行为接口,并且这些算法之间可以互相替换,使算法可以根据场景的不同而改变。\n策略模式的实际应用\n策略模式的应用有很多, 比如说JDK中FilenameFilter的使用过程, 比如场景java.util.Collections.sort(Listlist, Comparatorc)与策略java.util.Comparator的使用等等。\n下面我以一个实际的业务场景来具体实现以下策略模式:\n\n背景: 中国银行的便民服务包括中国移动手机充值, 中国联通,中国电信。用户选择某个便民服务时, 服务器后台会向银行发送不同的业务XML报文, 已达到通信目的。\n实现\n\n定义策略接口 : 包含一个生成报文的方法public interface IProduct {\npublic String generateXML() ;\n}\n\n\n定义一组具体策略类:@XMLType(\"Default\")\nclass DefaultHead implements IProduct {\npublic String generateXML() {\n return \"Defalut XML\";\n}\n}\n@XMLType(\"ChinaMobile\")\nclass ChinaMobile implements IProduct{\npublic String generateXML() {\n return \"China Mobile XML\";\n}\n}\n@XMLType(\"ChinaUnicom\")\nclass ChinaUnicom implements IProduct {\npublic String generateXML() {\n return \"Chinal Unicom XML\";\n}\n}\n\n\n定义一个场景类用于生成XML报文public class XMLGenerator {\nprivate IProduct product = new DefaultHead();\n//根据用户缴费类型,生成不同的通信报文\npublic String generate(String type) {\n //注意此处\n product = ProductFactory.getInstance().createProduct(type);\nreturn product.generateXML();\n}\n}\n\n\n创建具体的策略类, 本来是可以用一系列的if else判断, 然后new相应的策略类。这里为了避免if else我们定义一个策略工厂,来生产具体的策略类。\n策略类工厂:这个工厂创建策略类的思路就是,载入一些列策略类,根据不同策略类的自定义注解和用户的传入参数来生成具体的策略类。 \n```java\npublic class ProductFactory {\n// singleton\nprivate ProductFactory() {}\npublic static ProductFactory getInstance() {\n return ProductFactoryInstance.instance;\n}\nprivate static class ProductFactoryInstance {\n static final ProductFactory instance = new ProductFactory();\n}\n//创建一个具体的策略类\npublic IProduct createProduct(String productType) throws URISyntaxException {\n // load all startegys\n List> startegyList = loadAllStrategy(\"com.su.startegy\");\n //遍历所有策略类, 根据条件找出需要用到的\n for(Class clazz : startegyList) {\n //解析策略类的注解\n XMLType xmlType = praseAnnotation(clazz);\n if(xmlType.value().equals(productType))\n try {\n return clazz.newInstance();\n } catch (InstantiationException | IllegalAccessException e) {\n e.printStackTrace();\n }\n }\n }\n //create IProduct Object failed\n return null;\n}\n//载入策略类方法\nprivate List> loadAllStrategy(String packageName) throws URISyntaxException {\n //定义一个策略类的列表\n List> strategyList = new ArrayList>();\n URI filePath = getClass().getClassLoader().getResource(packageName.replace(\".\", \"/\")).toURI();\n //获取filepath\n File[] files = new File(filePath).listFiles(new FilenameFilter() {\n @Override\n public boolean accept(File dir, String name) {\n if (name.endsWith(\".class\"))\n return true;\n return false;\n }\n });\n // load class\n for (File file : files) {\n try {\n Class clazz = getClass().getClassLoader().loadClass(packageName + \".\" + file.getName().replace(\".class\", \"\"));\n if (clazz != IProduct.class && IProduct.class.isAssignableFrom(clazz)) {\n strategyList.add(clazz);\n }\n } catch (ClassNotFoundException e) {\n e.printStackTrace();\n }\n }\n return strategyList;\n}\n//解析注解方法\nprivate XMLType praseAnnotation(Class clazz) {\n XMLType xmlType = clazz.getAnnotation(XMLType.class);\n if (xmlType == null) {\n return null;\n }\n return xmlType;\n}\n\n\n\n\n}\n\n此处我使用**注解**的原因是为了简单, 跟代码的耦合紧一点。\n\n**自定义的注解类: **\n\n```java\n@Target(ElementType.TYPE)\n@Retention(RetentionPolicy.RUNTIME)\npublic @interface XMLType {\n public String value() default \"defalut\";\n}\n以上就是此处的策略模式的设计过程,如果需要多种策略的叠加, 也就要相应的使用注解的嵌套了, 这里就不在发挥了。\n策略模式中的设计原则\n学习策略模式, 不要记住代码是怎么实现的,更重要的是记住其设计原则。根据原则写代码, 而不是生搬硬套。其实设计模式都是设计原则的体现, 如果理解了设计原则, 那么你写的代码也可以变成一种模式。\n\n开闭原则(Open-Closed Principle,缩写为OCP)\n一个软件实体应当对扩展(例如对抽象层的扩展)开放,对修改(例如对抽象层的修改)关闭。即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。\n开闭原则的关键,在于抽象。策略模式,是开闭原则的一个极好的应用范例。\n\n里氏替换原则(Liskov Substitution Principle,缩写为LSP)\n一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能察觉到基类对象和子类对象的区别。比如,假设有两个类,一个是Base类,一个是Derived类,并且Derived类是Base类的子类。那么一个方法如果可以接受一个基类对象b的话:method1(Base b),那么它必然可以接受一个子类对象d,也即可以有method1(d)。反之,则不一定成立\n里氏替换原则讲的是基类与子类的关系。只有当这种关系存在时,里氏替换关系才存在,反之则不存在。\n\n\n策略模式之所以可行的基础便是里氏替换原则:策略模式要求所有的策略对象都是可以互换的,因此它们都必须是一个抽象策略角色的子类。在客户端则仅知道抽象策略角色类型,虽然变量的真实类型可以是任何一个具体策略角色的实例\n参考文献\n策略模式设计原则\n"},"Java8系列.html":{"url":"Java8系列.html","title":"Java8系列","keywords":"","body":"Java8系列\n"},"java8/java8-guide.html":{"url":"java8/java8-guide.html","title":"Java8简明教程","keywords":"","body":"Java8简明指南\n\n欢迎来到Java8简明指南。本教程将一步一步指导你通过所有新语言特性。由短而简单的代码示例,带你了解如何使用默认接口方法,lambda表达式,方法引用和可重复注解。本文的最后你会熟悉最新的API的变化如Stream,Fcuntional,Map API扩展和新的日期API。\n\n\n接口的默认方法\n在Java8中,利用default关键字使我们能够添加非抽象方法实现的接口。此功能也被称为扩展方法,这里是我们的第一个例子:\ninterface Formula {\n double calculate(int a);\n\n default double sqrt(int a) {\n return Math.sqrt(a);\n }\n}\n\n除了接口抽象方法calculate,还定义了默认方法sqrt的返回值。具体类实现抽象方法calculate。默认的方法sqrt可以开箱即用。\nFormula formula = new Formula() {\n @Override\n public double calculate(int a) {\n return sqrt(a * 100);\n }\n};\n\nformula.calculate(100); // 100.0\nformula.sqrt(16); // 4.0\n\n该公式被实现为匿名对象。这段代码是相当长的:非常详细的一个计算:6行代码完成这样一个简单的计算。正如我们将在下一节中看到的,Java8有一个更好的方法来实现单方法对象。\nLambda表达式\n让我们以一个简单的例子来开始,在以前的版本中对字符串进行排序:\nList names = Arrays.asList(\"peter\", \"anna\", \"mike\", \"xenia\");\n\nCollections.sort(names, new Comparator() {\n @Override\n public int compare(String a, String b) {\n return b.compareTo(a);\n }\n});\n\n静态的集合类方法Collections.sort,为比较器的给定列表中的元素排序。你会发现自己经常创建匿名比较器并将它们传递给方法。\nJava8支持更短的语法而不总是创建匿名对象,\nLambda表达式:\nCollections.sort(names, (String a, String b) -> {\n return b.compareTo(a);\n});\n\n正如你可以看到的代码更容易阅读。但它甚至更短:\nCollections.sort(names, (String a, String b) -> b.compareTo(a));\n\n一行方法的方法体可以跳过{}和参数类型,使它变得更短:\nCollections.sort(names, (a, b) -> b.compareTo(a));\n\nJava编译器知道参数类型,所以你可以跳过它们,接下来让我们深入了解lambda表达式。\n函数式接口(Functional Interfaces)\n如何适应Java lambda表达式类型系统?每个lambda由一个指定的接口对应于一个给定的类型。所谓的函数式接口必须包含一个确切的一个抽象方法声明。该类型将匹配这个抽象方法每个lambda表达式。因为默认的方法是不抽象的,你可以自由添加默认的方法到你的函数式接口。\n我们可以使用任意的接口为lambda表达式,只要接口只包含一个抽象方法。确保你的接口满足要求,你应该添加@FunctionalInterface注解。当你尝试在接口上添加第二个抽象方法声明时,编译器会注意到这个注释并抛出一个编译器错误。\n举例:\n@FunctionalInterface\ninterface Converter {\n T convert(F from);\n}\n\nConverter converter = (from) -> Integer.valueOf(from);\nInteger converted = converter.convert(\"123\");\nSystem.out.println(converted); // 123\n\n记住,有@FunctionalInterface注解的也是有效的代码。\n方法和构造函数引用\n上面的例子代码可以进一步简化,利用静态方法引用:\nConverter converter = Integer::valueOf;\nInteger converted = converter.convert(\"123\");\nSystem.out.println(converted); // 123\n\nJava使您可以通过::关键字调用引用的方法或构造函数。上面的示例演示了如何引用静态方法。但我们也可以参考对象方法:\nclass Something {\n String startsWith(String s) {\n return String.valueOf(s.charAt(0));\n }\n}\n\nSomething something = new Something();\nConverter converter = something::startsWith;\nString converted = converter.convert(\"Java\");\nSystem.out.println(converted); // \"J\"\n\n让我们来看看如何使用::关键字调用构造函数。首先,我们定义一个Person类并且提供不同的构造函数:\nclass Person {\n String firstName;\n String lastName;\n\n Person() {}\n\n Person(String firstName, String lastName) {\n this.firstName = firstName;\n this.lastName = lastName;\n }\n}\n\n接下来,我们指定一个Person的工厂接口,用于创建Person:\ninterface PersonFactory {\n P create(String firstName, String lastName);\n}\n\n然后我们通过构造函数引用来把所有东西拼到一起,而不是手动实现工厂:\nPersonFactory personFactory = Person::new;\nPerson person = personFactory.create(\"Peter\", \"Parker\");\n\n我们通过Person::new创建一个人的引用,Java编译器会自动选择正确的构造函数匹配PersonFactory.create的返回。\nLambda作用域\n从lambda表达式访问外部变量的作用域是匿名对象非常相似。您可以从本地外部范围以及实例字段和静态变量中访问final变量。\n访问局部变量\n我们可以从lambda表达式的外部范围读取final变量:\nfinal int num = 1;\nConverter stringConverter = (from) -> String.valueOf(from + num);\nstringConverter.convert(2); // 3\n\n但不同的匿名对象变量num没有被声明为final,下面的代码也有效:\nint num = 1;\nConverter stringConverter = (from) -> String.valueOf(from + num);\nstringConverter.convert(2); // 3\n\n然而num必须是隐含的final常量。以下代码不编译:\nint num = 1;\nConverter stringConverter = (from) -> String.valueOf(from + num);\nnum = 3;\n\n在lambda表达式里修改num也是不允许的。\n访问字段和静态变量\n与局部变量不同,我们在lambda表达式的内部能获取到对成员变量或静态变量的读写权。这种访问行为在匿名对象里是非常典型的。\nclass Lambda4 {\n static int outerStaticNum;\n int outerNum;\n\n void testScopes() {\n Converter stringConverter1 = (from) -> {\n outerNum = 23;\n return String.valueOf(from);\n };\n\n Converter stringConverter2 = (from) -> {\n outerStaticNum = 72;\n return String.valueOf(from);\n };\n }\n}\n\n访问默认接口方法\n记得第一节的formula例子吗?接口Formula定义了一个默认的方法可以从每个公式实例访问包括匿名对象,\n这并没有Lambda表达式的工作。\n默认方法不能在lambda表达式访问。以下代码不编译:\nFormula formula = (a) -> sqrt( a * 100);\n\n内置函数式接口(Built-in Functional Interfaces)\nJDK1.8的API包含许多内置的函数式接口。其中有些是众所周知的,从旧版本中而来,如Comparator或者Runnable。使现有的接口通过@FunctionalInterface注解支持Lambda。\n但是Java8 API也添加了新功能接口,使你的开发更简单。其中一些接口是众所周知的Google Guava库。即使你熟悉这个库也应该密切关注这些接口是如何延长一些有用的扩展方法。\nPredicates(谓词)\nPredicates是一个返回布尔类型的函数。这就是谓词函数,输入一个对象,返回true或者false。\n在Google Guava中,定义了Predicate接口,该接口包含一个带有泛型参数的方法:\napply(T input): boolean\n\nPredicate predicate = (s) -> s.length() > 0;\n\npredicate.test(\"foo\"); // true\npredicate.negate().test(\"foo\"); // false\n\nPredicate nonNull = Objects::nonNull;\nPredicate isNull = Objects::isNull;\n\nPredicate isEmpty = String::isEmpty;\nPredicate isNotEmpty = isEmpty.negate();\n\nFunctions(函数)\nFunctions接受一个参数,并产生一个结果。默认方法可以将多个函数串在一起(compse, andThen)\nFunction toInteger = Integer::valueOf;\nFunction backToString = toInteger.andThen(String::valueOf);\n\nbackToString.apply(\"123\"); // \"123\"\n\nSuppliers(生产者)\nSuppliers产生一个给定的泛型类型的结果。与Functional不同的是Suppliers不接受输入参数。\nSupplier personSupplier = Person::new;\npersonSupplier.get(); // new Person\n\nConsumers(消费者)\nConsumers代表在一个单一的输入参数上执行操作。\nConsumer greeter = (p) -> System.out.println(\"Hello, \" + p.firstName);\ngreeter.accept(new Person(\"Luke\", \"Skywalker\"));\n\nComparators(比较器)\nComparators在旧版本Java中是众所周知的。Java8增加了各种默认方法的接口。\nComparator comparator = (p1, p2) -> p1.firstName.compareTo(p2.firstName);\n\nPerson p1 = new Person(\"John\", \"Doe\");\nPerson p2 = new Person(\"Alice\", \"Wonderland\");\n\ncomparator.compare(p1, p2); // > 0\ncomparator.reversed().compare(p1, p2); // \nOptionals(可选项)\nOptionals是没有函数的接口,取而代之的是防止NullPointerException异常。这是下一节的一个重要概念,所以让我们看看如何结合Optionals工作。\nOptional is a simple container for a value which may be null or non-null. Think of a method which may return a non-null result but sometimes return nothing. Instead of returning null you return an Optional in Java 8.\nOptional是一个简单的容器,这个值可能是空的或者非空的。考虑到一个方法可能会返回一个non-null的值,也可能返回一个空值。为了不直接返回null,我们在Java 8中就返回一个Optional。\nOptional optional = Optional.of(\"bam\");\n\noptional.isPresent(); // true\noptional.get(); // \"bam\"\noptional.orElse(\"fallback\"); // \"bam\"\n\noptional.ifPresent((s) -> System.out.println(s.charAt(0))); // \"b\"\n\nStreams(管道)\n一个java.util.Stream代表一个序列的元素在其中的一个或多个可以执行的操作。流操作是中间或终端。当终端操作返回某一类型的结果时,中间操作返回流,这样就可以将多个方法调用在一行中。流是一个源产生的,例如java.util.Collection像列表或设置(不支持map)。流操作可以被执行的顺序或并行。\n让我们先看一下数据流如何工作。首先,我们创建一个字符串列表的数据:\nList stringCollection = new ArrayList<>();\nstringCollection.add(\"ddd2\");\nstringCollection.add(\"aaa2\");\nstringCollection.add(\"bbb1\");\nstringCollection.add(\"aaa1\");\nstringCollection.add(\"bbb3\");\nstringCollection.add(\"ccc\");\nstringCollection.add(\"bbb2\");\nstringCollection.add(\"ddd1\");\n\n在Java8中Collections类的功能已经有所增强,你可用调用Collection.stream()或Collection.parallelStream()。\n下面的章节解释最常见的流操作。\nFilter\nFilter接受一个predicate来过滤流的所有元素。这个中间操作能够调用另一个流的操作(Foreach)的结果。ForEach接受一个消费者为每个元素执行过滤流。它是void,所以我们不能称之为另一个流操作。\nstringCollection\n .stream()\n .filter((s) -> s.startsWith(\"a\"))\n .forEach(System.out::println);\n\n// \"aaa2\", \"aaa1\"\n\nSorted\nSorted是一个中间操作,能够返回一个排过序的流对象的视图。这些元素按自然顺序排序,除非你经过一个自定义比较器(实现Comparator接口)。\nstringCollection\n .stream()\n .sorted()\n .filter((s) -> s.startsWith(\"a\"))\n .forEach(System.out::println);\n\n// \"aaa1\", \"aaa2\"\n\n要记住,排序只会创建一个流的排序视图,而不处理支持集合的排序。原来string集合中的元素顺序是没有改变的。\nSystem.out.println(stringCollection);\n// ddd2, aaa2, bbb1, aaa1, bbb3, ccc, bbb2, ddd1\n\nMap\nmap是一个对于流对象的中间操作,通过给定的方法,它能够把流对象中的每一个元素对应到另外一个对象上。下面的例子将每个字符串转换成一个大写字符串,但也可以使用map将每个对象转换为另一种类型。所得到的流的泛型类型取决于您传递给map方法的泛型类型。\nstringCollection\n .stream()\n .map(String::toUpperCase)\n .sorted((a, b) -> b.compareTo(a))\n .forEach(System.out::println);\n\n// \"DDD2\", \"DDD1\", \"CCC\", \"BBB3\", \"BBB2\", \"AAA2\", \"AAA1\"\n\nMatch\n可以使用各种匹配操作来检查某个谓词是否匹配流。所有这些操作都是终止操作,返回一个布尔结果。\nboolean anyStartsWithA =\n stringCollection\n .stream()\n .anyMatch((s) -> s.startsWith(\"a\"));\n\nSystem.out.println(anyStartsWithA); // true\n\nboolean allStartsWithA =\n stringCollection\n .stream()\n .allMatch((s) -> s.startsWith(\"a\"));\n\nSystem.out.println(allStartsWithA); // false\n\nboolean noneStartsWithZ =\n stringCollection\n .stream()\n .noneMatch((s) -> s.startsWith(\"z\"));\n\nSystem.out.println(noneStartsWithZ); // true\n\nCount\nCount是一个终止操作返回流中的元素的数目,返回long类型。\nlong startsWithB =\n stringCollection\n .stream()\n .filter((s) -> s.startsWith(\"b\"))\n .count();\n\nSystem.out.println(startsWithB); // 3\n\nReduce\n该终止操作能够通过某一个方法,对元素进行削减操作。该操作的结果会放在一个Optional变量里返回。\nOptional reduced =\n stringCollection\n .stream()\n .sorted()\n .reduce((s1, s2) -> s1 + \"#\" + s2);\n\nreduced.ifPresent(System.out::println);\n// \"aaa1#aaa2#bbb1#bbb2#bbb3#ccc#ddd1#ddd2\"\n\nParallel Streams\n如上所述的数据流可以是连续的或平行的。在一个单独的线程上进行操作,同时在多个线程上执行并行操作。\n下面的例子演示了如何使用并行流很容易的提高性能。\n首先,我们创建一个大的元素列表:\nint max = 1000000;\nList values = new ArrayList<>(max);\nfor (int i = 0; i \n现在我们测量一下流对这个集合进行排序消耗的时间。\nSequential Sort\nlong t0 = System.nanoTime();\n\nlong count = values.stream().sorted().count();\nSystem.out.println(count);\n\nlong t1 = System.nanoTime();\n\nlong millis = TimeUnit.NANOSECONDS.toMillis(t1 - t0);\nSystem.out.println(String.format(\"sequential sort took: %d ms\", millis));\n\n// sequential sort took: 899 ms\n\nParallel Sort\nlong t0 = System.nanoTime();\n\nlong count = values.parallelStream().sorted().count();\nSystem.out.println(count);\n\nlong t1 = System.nanoTime();\n\nlong millis = TimeUnit.NANOSECONDS.toMillis(t1 - t0);\nSystem.out.println(String.format(\"parallel sort took: %d ms\", millis));\n\n// parallel sort took: 472 ms\n\n你可以看到这两段代码片段几乎是相同的,但并行排序大致是50%的差距。唯一的不同就是把stream()改成了parallelStream()。\nMap\n正如前面所说的Map不支持流操作,现在的Map支持各种新的实用的方法和常见的任务。\nMap map = new HashMap<>();\n\nfor (int i = 0; i System.out.println(val));\n\n上面的代码应该是不解自明的:putIfAbsent避免我们将null写入;forEach接受一个消费者对象,从而将操作实施到每一个map中的值上。\n这个例子演示了如何利用函数判断或获取Map中的数据:\nmap.computeIfPresent(3, (num, val) -> val + num);\nmap.get(3); // val33\n\nmap.computeIfPresent(9, (num, val) -> null);\nmap.containsKey(9); // false\n\nmap.computeIfAbsent(23, num -> \"val\" + num);\nmap.containsKey(23); // true\n\nmap.computeIfAbsent(3, num -> \"bam\");\nmap.get(3); // val33\n\n接下来,我们将学习如何删除一一个给定的键的条目,只有当它当前映射到给定值:\nmap.remove(3, \"val3\");\nmap.get(3); // val33\n\nmap.remove(3, \"val33\");\nmap.get(3); // null\n\n另一种实用的方法:\nmap.getOrDefault(42, \"not found\"); // not found\n\nMap合并条目是非常容易的:\nmap.merge(9, \"val9\", (value, newValue) -> value.concat(newValue));\nmap.get(9); // val9\n\nmap.merge(9, \"concat\", (value, newValue) -> value.concat(newValue));\nmap.get(9); // val9concat\n\n合并操作先看map中是否没有特定的key/value存在,如果是,则把key/value存入map,否则merging函数就会被调用,对现有的数值进行修改。\nDate API\nJava8 包含一个新的日期和时间API,在java.time包下。新的日期API与Joda Time库可以媲美,但它们是不一样的。下面的例子涵盖了这个新的API最重要的部分。\nClock\nClock提供访问当前日期和时间。Clock是对当前时区敏感的,可以用来代替System.currentTimeMillis()来获取当前的毫秒值。当前时间线上的时刻可以用Instance类来表示。Instance可以用来创建java.util.Date格式的对象。\nClock clock = Clock.systemDefaultZone();\nlong millis = clock.millis();\n\nInstant instant = clock.instant();\nDate legacyDate = Date.from(instant); // legacy java.util.Date\n\nTimezones\n时区是由ZoneId表示,通过静态工厂方法可以很容易地访问。时区还定义了一个偏移量,用来转换当前时刻与目标时刻。\nSystem.out.println(ZoneId.getAvailableZoneIds());\n// prints all available timezone ids\n\nZoneId zone1 = ZoneId.of(\"Europe/Berlin\");\nZoneId zone2 = ZoneId.of(\"Brazil/East\");\nSystem.out.println(zone1.getRules());\nSystem.out.println(zone2.getRules());\n\n// ZoneRules[currentStandardOffset=+01:00]\n// ZoneRules[currentStandardOffset=-03:00]\n\nLocalTime\nLocalTime代表没有时区的时间,例如晚上10点或17:30:15。下面的例子会用上面的例子定义的时区创建两个本地时间对象。然后我们比较两个时间并计算小时和分钟的差异。\nLocalTime now1 = LocalTime.now(zone1);\nLocalTime now2 = LocalTime.now(zone2);\n\nSystem.out.println(now1.isBefore(now2)); // false\n\nlong hoursBetween = ChronoUnit.HOURS.between(now1, now2);\nlong minutesBetween = ChronoUnit.MINUTES.between(now1, now2);\n\nSystem.out.println(hoursBetween); // -3\nSystem.out.println(minutesBetween); // -239\n\nLocalDate\nLocalDate代表一个唯一的日期,如2014-03-11。它是不可变的,完全模拟本地时间工作。此示例演示如何通过添加或减去天数,月数,年来计算新的日期。记住每一个操作都会返回一个新的实例。\nLocalDate today = LocalDate.now();\nLocalDate tomorrow = today.plus(1, ChronoUnit.DAYS);\nLocalDate yesterday = tomorrow.minusDays(2);\n\nLocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4);\nDayOfWeek dayOfWeek = independenceDay.getDayOfWeek();\nSystem.out.println(dayOfWeek); // FRIDAY\n\n将字符串解析为LocalDate:\nDateTimeFormatter germanFormatter =\n DateTimeFormatter\n .ofLocalizedDate(FormatStyle.MEDIUM)\n .withLocale(Locale.GERMAN);\n\nLocalDate xmas = LocalDate.parse(\"24.12.2014\", germanFormatter);\nSystem.out.println(xmas); // 2014-12-24\n\nLocalDateTime\nLocalDateTime代表日期时间。它结合了日期和时间见上面的部分为一个实例。LocalDateTime是不可变的,类似于本地时间和LocalDate工作。我们可以从一个日期时间获取某些字段的方法:\nLocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59);\n\nDayOfWeek dayOfWeek = sylvester.getDayOfWeek();\nSystem.out.println(dayOfWeek); // WEDNESDAY\n\nMonth month = sylvester.getMonth();\nSystem.out.println(month); // DECEMBER\n\nlong minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY);\nSystem.out.println(minuteOfDay); // 1439\n\n随着一个时区可以转换为一个即时的附加信息。Instance可以被转换为日期型转化为指定格式的java.util.Date。\nInstant instant = sylvester\n .atZone(ZoneId.systemDefault())\n .toInstant();\n\nDate legacyDate = Date.from(instant);\nSystem.out.println(legacyDate); // Wed Dec 31 23:59:59 CET 2014\n\n格式日期时间对象就像格式化日期对象或者格式化时间对象,除了使用预定义的格式以外,我们还可以创建自定义的格式化对象,然后匹配我们自定义的格式。\nDateTimeFormatter formatter =\n DateTimeFormatter\n .ofPattern(\"MMM dd, yyyy - HH:mm\");\n\nLocalDateTime parsed = LocalDateTime.parse(\"Nov 03, 2014 - 07:13\", formatter);\nString string = formatter.format(parsed);\nSystem.out.println(string); // Nov 03, 2014 - 07:13\n\n不像java.text.NumberFormat,新的DateTimeFormatter是不可变的,线程安全的。\nAnnotations(注解)\n在Java8中注解是可以重复的,让我们深入到一个示例中。\n首先,我们定义了一个包装的注解,它拥有一个返回值为数组类型的方法Hint:\n@interface Hints {\n Hint[] value();\n}\n\n@Repeatable(Hints.class)\n@interface Hint {\n String value();\n}\n\nJava8使我们能够使用相同类型的多个注解,通过@Repeatable声明注解。\n变体1:使用注解容器(老方法)\n@Hints({@Hint(\"hint1\"), @Hint(\"hint2\")})\nclass Person {}\n\n变体2:使用可重复注解(新方法)\n@Hint(\"hint1\")\n@Hint(\"hint2\")\nclass Person {}\n\n使用变体2隐式编译器隐式地设置了@Hints注解。这对于通过反射来读取注解信息是非常重要的。\nHint hint = Person.class.getAnnotation(Hint.class);\nSystem.out.println(hint); // null\n\nHints hints1 = Person.class.getAnnotation(Hints.class);\nSystem.out.println(hints1.value().length); // 2\n\nHint[] hints2 = Person.class.getAnnotationsByType(Hint.class);\nSystem.out.println(hints2.length); // 2\n\n虽然在Person中从未定义@Hints注解,它仍然可读通过getAnnotation(Hints.class)读取。并且,getAnnotationsByType方法会更方便,因为它赋予了所有@Hints注解标注的方法直接的访问权限。\n@Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE})\n@interface MyAnnotation {}\n\n欢迎Star我的开源Web框架Blade:http://github.com/biezhi/blade\n"},"java8/foreach.html":{"url":"java8/foreach.html","title":"Java8 Foreach","keywords":"","body":"java8 foreach\n在这篇文章中我将向你演示如何使用Java8中的foreach操作List和Map\n1. Foreach操作Map\n1.1 正常方式遍历Map\nMap items = new HashMap<>();\nitems.put(\"A\", 10);\nitems.put(\"B\", 20);\nitems.put(\"C\", 30);\nitems.put(\"D\", 40);\nitems.put(\"E\", 50);\nitems.put(\"F\", 60);\n\nfor (Map.Entry entry : items.entrySet()) {\n System.out.println(\"Item : \" + entry.getKey() + \" Count : \" + entry.getValue());\n}\n\n\n1.2 使用Java8的foreach+lambda表达式遍历Map\nMap items = new HashMap<>();\nitems.put(\"A\", 10);\nitems.put(\"B\", 20);\nitems.put(\"C\", 30);\nitems.put(\"D\", 40);\nitems.put(\"E\", 50);\nitems.put(\"F\", 60);\n\nitems.forEach((k,v)->System.out.println(\"Item : \" + k + \" Count : \" + v));\n\nitems.forEach((k,v)->{\n System.out.println(\"Item : \" + k + \" Count : \" + v);\n if(\"E\".equals(k)){\n System.out.println(\"Hello E\");\n }\n});\n\n2. Foreach操作List\n2.1 普通方式循环List\nList items = new ArrayList<>();\nitems.add(\"A\");\nitems.add(\"B\");\nitems.add(\"C\");\nitems.add(\"D\");\nitems.add(\"E\");\n\nfor(String item : items){\n System.out.println(item);\n}\n\n2.2 在Java8中使用foreach+lambda表达式遍历List\nList items = new ArrayList<>();\nitems.add(\"A\");\nitems.add(\"B\");\nitems.add(\"C\");\nitems.add(\"D\");\nitems.add(\"E\");\n\n//lambda\n//Output : A,B,C,D,E\nitems.forEach(item->System.out.println(item));\n\n//Output : C\nitems.forEach(item->{\n if(\"C\".equals(item)){\n System.out.println(item);\n }\n});\n\n//method reference\n//Output : A,B,C,D,E\nitems.forEach(System.out::println);\n\n//Steam and filter\n//Output : B\nitems.stream()\n .filter(s->s.contains(\"B\"))\n .forEach(System.out::println);\n\n参考资料:\n\nJava 8 Iterable forEach JavaDoc\nJava 8 forEach JavaDoc\n\n欢迎star开源web框架Blade:http://github.com/biezhi/blade\n"},"Hexo搭建博客.html":{"url":"Hexo搭建博客.html","title":"Hexo搭建博客","keywords":"","body":"Hexo搭建博客\n"},"hexo/hello.html":{"url":"hexo/hello.html","title":"分分钟部署一个Hexo环境","keywords":"","body":"使用hexo搭建博客系列\n1. 分分钟部署一个Hexo环境\n2. 了解配置\n1. 安装NodeJS\n我的系统环境:Win7_x64\n去Nodejs的官网下载:https://nodejs.org/en/download/\n这里我下载的是\n\n然后按照提示一步一步安装即可,我装在了C盘,这个盘装了SSD会快一些。\nNodeJS会自动将bin写入环境变量,来试试是否安装成功 输入node -v命令查看nodejs版本。\n\n2. 配置淘宝 NPM 镜像\ncnpmjs.org是一个非常棒的npm国内镜像。由于其使用量越来越大,加上淘宝内部也有很多项目使用 NodeJS,于是,淘宝正式基于 cnpmjs 推出了镜像服务\n淘宝的 NPM 镜像是一个完整的npmjs.org镜像。你可以用此代替官方版本(只读),同步频率目前为 15分钟 一次以保证尽量与官方服务同步。\n\n当前 registry.npm.taobao.org 是从 registry.npmjs.org 进行全量同步的.\n当前 npm.taobao.org 运行版本是: cnpmjs.org@0.4.1\n系统运行在 Node.js@v0.11.12 上.\n使用说明\n你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:\n$ npm install -g cnpm --registry=https://registry.npm.taobao.org\n\n我使用的就是这个。\n\n或者你直接通过添加 npm 参数 alias 一个新命令:\nalias cnpm=\"npm --registry=https://registry.npm.taobao.org \\\n--cache=$HOME/.npm/.cache/cnpm \\\n--disturl=https://npm.taobao.org/dist \\\n--userconfig=$HOME/.cnpmrc\"\n\n# Or alias it in .bashrc or .zshrc\n$ echo '\\n#alias for cnpm\\nalias cnpm=\"npm --registry=https://registry.npm.taobao.org \\\n --cache=$HOME/.npm/.cache/cnpm \\\n --disturl=https://npm.taobao.org/dist \\\n --userconfig=$HOME/.cnpmrc\"' >> ~/.zshrc && source ~/.zshrc\n\n安装模块\n从 registry.npm.taobao.org 安装所有模块. 当安装的时候发现安装的模块还没有同步过来, 淘宝 NPM 会自动在后台进行同步, 并且会让你从官方 NPM registry.npmjs.org 进行安装. 下次你再安装这个模块的时候, 就会直接从 淘宝 NPM 安装了.\n$ cnpm install [name]\n\n同步模块\n直接通过 sync 命令马上同步一个模块, 只有 cnpm 命令行才有此功能:\n$ cnpm sync connect\n\n当然, 你可以直接通过 web 方式来同步: /sync/connect\n$ open https://npm.taobao.org/sync/connect\n\n3. 安装hexo\nhexo 官网的安装说明是 npm install hexo-cli -g\n因为我们安装了淘宝的NPM,所以需要使用 cnpm 命令\n\n这样就安装成功了!\n4. HelloWorld\n按照官方教程(注意使用 cnpm 哦):\n$ hexo init blog\n$ cd blog\n$ cnpm install\n$ hexo server\n\n这样就可以运行一个最简单的博客程序了~\n下一节:各种配置详解\n"},"hexo/config.html":{"url":"hexo/config.html","title":"各种配置详解","keywords":"","body":"上一节:分分钟部署一个Hexo环境\n准备启程\n一旦安装了Hexo,运行以下命令初始化Hexo在目录\n$ hexo init \n$ cd \n$ cnpm install\n\n一旦初始化,你的项目文件夹是这个样子:\n.\n├── _config.yml\n├── package.json\n├── scaffolds\n├── scripts\n├── source\n| ├── _drafts\n| └── _posts\n└── themes\n\n下面依次介绍上面各个文件或者目录的用途:\n\n_config.yml站点配置文件,很多全局配置都在这个文件中。\npackage.json 应用数据。从它可以看出hexo版本信息,以及它所默认或者说依赖的一些组件。\nscaffolds 模版文件。当你创建一篇新的文章时,hexo会依据模版文件进行创建,主要用在你想在每篇文章都添加一些共性的内容的情况下。\nscripts 放脚本的文件夹, 就是放js文件的地方\nsource 这个文件夹就是放文章的地方了,除了文章还有一些主要的资源,比如文章里的图片,文件等等东西。这个文件夹最好定期做一个备份,丢了它,整个站点就废了。\nthemes 主题文件夹。\n\n配置\n_config.yml配置文件\n站点配置文件,你可以在这里进行大多数配置。\n网站设置\n\n\n\n配置\n描述\n\n\n\n\ntitle\n站点名字,也就是html的title,会显示在浏览器标签上\n\n\nsubtitle\n站点副标题,会显示在首页上,可以不填\n\n\ndescription\n站点描述,可以不填\n\n\nauthor\n作者名称\n\n\nlanguage\n语言\n\n\ntimezone\n站点时区,默认是电脑时间\n\n\n\n链接设置\n\n\n\n配置\n描述\n\n\n\n\nurl\n站点网址\n\n\nroot\n站点根目录\n\n\npermalink\n文章的永久网址链接,默认是:year/:month/:day/:title/,指的什么意思?比如我一篇叫『love』的文章是在2012年1月1日写的,那么它对应的链接就是http://yoururl/2012/01/01/love/\n\n\npermalink_default\n\n\n\n\n如果网址是次级目录,比如:http://example.com/blog,那么就要设置url为http://example.com/blog,并且root要设置为/blog/。\n\n目录设置\n\n\n\n配置\n描述\n\n\n\n\nsource_dir\nsource目录,默认值为source\n\n\npublic_dir\npublic目录,静态网站生成的地方,默认值为public\n\n\ntag_dir\ntag目录\n\n\narchive_dir\nArchive目录\n\n\ncategory_dir\n分类目录\n\n\ncode_dir\n代码目录\n\n\ni18n_dir\ni18n目录\n\n\nskip_render\n不想被渲染的路径\n\n\n\n写作设置\n\n\n\n配置\n描述\n\n\n\n\nnew_post_name\n新建文章默认文件名,默认值为 :title.md,比如你执行命令hexo new hello,就会默认在_post目录下创建一个hello.md的文件\n\n\ndefault_layout\n默认布局\n\n\ntitlecase\n\n\n\nexternal_link\n在新标签中打开一个外部链接,默认为true\n\n\nfilename_case\n转换文件名,1代表小写;2代表大写;默认为0,意思就是创建文章的时候,是否自动帮你转换文件名,默认就行,意义不大\n\n\nrender_drafts\n是否渲染_drafts目录下的文章,默认为false\n\n\npost_asset_folder\n是否启用Asset Folder,默认为false,至于什么是Asset Folder,后面有讲解\n\n\nrelative_link\n使链接相对于根文件夹,默认false\n\n\nfuture\n是否显示未来日期文章,默认为true\n\n\nhighlight\n代码块设置\n\n\n\n分类 & 标签\n\n\n\n配置\n描述\n\n\n\n\ndefault_category\n默认分类,默认为无分类,当然你可以设置一个默认分类。\n\n\ncategory_map\n分类缩略名\n\n\ntag_map\n标签缩略名\n\n\n\n日期格式化\nHexo使用的Moment.js来处理时间的。\n| 配置 | 描述|\n| ----------- |---------------------------------------------|\n| date_format |日期格式,默认为MMM D YYYY,一般我们喜欢使用YYYY-MM-DD的格式,其他格式模版可以查看Moment.js|\n| time_format |时间格式,默认为H:mm:ss|\n分页\n\n\n\n配置\n描述\n\n\n\n\nper_page\n一页显示多少篇文章,0 为不分页,默认值为 10\n\n\npagination_dir\n分页目录,默认值为page\n\n\n\n扩展\n\n\n\n配置\n描述\n\n\n\n\ntheme\n主题配置,此处填上主题名就OK了,当然在themes目录下一定要有你配置的主题文件夹\n\n\ndeploy\n部署配置,将本地public目录也就是网站部署到服务器上的配置\n\n\n\npackage.json文件\n应用数据,默认安装了 EJS,Stylus 和 Markdown 来渲染。如果你不需要可以卸载它们。\npackage.json\n{\n \"name\": \"hexo-site\",\n \"version\": \"0.0.0\",\n \"private\": true,\n \"hexo\": {\n \"version\": \"\"\n },\n \"dependencies\": {\n \"hexo\": \"^3.0.0\",\n \"hexo-generator-archive\": \"^0.1.0\",\n \"hexo-generator-category\": \"^0.1.0\",\n \"hexo-generator-index\": \"^0.1.0\",\n \"hexo-generator-tag\": \"^0.1.0\",\n \"hexo-renderer-ejs\": \"^0.1.0\",\n \"hexo-renderer-stylus\": \"^0.2.0\",\n \"hexo-renderer-marked\": \"^0.2.4\",\n \"hexo-server\": \"^0.1.2\"\n }\n}\n\nscaffolds\n脚手架文件夹。当你创建一个新文章,Hexo基于scaffolds文件夹里的类型来创建。\nscripts\n脚本文件夹。扩展Hexo最简单的方法,它会自动执行这个文件夹下的JavaScript文件。\n命令\ninit\n$ hexo init [folder]\n\n初始化一个网站。如果没有提供folder,Hexo会在当前目录设置网站。\nnew\n$ hexo new [layout] \n\n创建一篇文章,如果不指定layout,那么就使用_config.yml中default_layout的值,标题中如果有空格,将整个title放到引号中。\n比如,hexo new \"hello world\"创建一篇叫hello world的文章。\ngenerate\n$ hexo generate\n\n生成静态文件:\n\n\n\n选项\n描述\n\n\n\n\n-d, --deploy\n生成完后直接部署\n\n\n-w, --watch\n监控文件的改变\n\n\n\npublish\n$ hexo publish [layout] \n\n发布为草稿\nserver\n$ hexo server\n\n启动一个本地服务,默认情况下访问 http://localhost:4000/\n\n\n\n选项\n描述\n\n\n\n\n-p, --port\n指定端口\n\n\n-s, --static\n仅服务静态文件\n\n\n-l, --log\n开启日志\n\n\n\ndeploy\n$ hexo deploy\n\n部署你的站点\n\n\n\n选项\n描述\n\n\n\n\n-g, --generate\n表示在部署前先重新生成一下站点\n\n\n\nrender\n$ hexo render [file2] ...\n\n渲染文件\n\n\n\n选项\n描述\n\n\n\n\n-o, --output\n输出到指定文件,我没用过\n\n\n\nmigrate\n$ hexo migrate \n\n迁移到其他模块的命令。\nclean\n$ hexo clean\n\n删除缓存文件db.json以及生成的public目录,当你修改了某些样式或者配置时,如果发现hexo g后也没有反应,就可以执行一下这个命令。\nlist\n$ hexo list \n\n列出所有路由\nversion\n$ hexo version\n\n显示hexo的版本信息到控制台\nOptions\nSafe mode\n$ hexo --safe\n\n安全模式,使所有插件和脚本不生效\nDebug mode\n$ hexo --debug\n\n日志详细信息输出到终端。\nSilent mode\n$ hexo --silent\n\n静默模式,不在终端上显示任何信息\nCustomize config file path\n$ hexo --config custom.yml\n\n使用一个自定义配置文件替换默认_config.yml\nDisplay drafts\n$ hexo --draft\n\n显示草稿文章(位于source/_drafts目录下)\nCustomize CWD\n$ hexo --cwd /path/to/cwd\n\n自定义当前工作目录路径,假如你没在工作目录下,可以使用这个命令指定一下工作目录路径\n下一节:开始写作吧\n"},"hexo/writing.html":{"url":"hexo/writing.html","title":"开始写作吧","keywords":"","body":"上一节:各种配置详解\n1. 开始写作\n使用下面的命令创建一个新文章:\n$ hexo new [layout] \n\n默认的文章布局是post,当然你可用提供自己的布局文件。你可以编辑 _config.yml 修改默认布局。\nLayout(布局)\nHexo提供了3个默认布局:post、page 和 draft。不同布局的文章会被保存到不同的目录,这取决于它的布局类型。\n自定义布局保存到 source/_posts 文件夹。\n\n\n\n布局\n路径\n\n\n\n\npost\nsource/_posts\n\n\npage\nsource\n\n\ndraft\nsource/_drafts\n\n\n\n\n不处理文章!\n如果你不希望你的文章被处理,你可以设置 layout:false。\n\nFilename(文件名)\n默认情况下,hexo使用文章标题作为文件名。\n你可以编辑 _config.yml 的 new_post_name 设置改变默认的文件名。\n例如 :year-:month-:day-:title.md 将前缀的文件名后创建日期。你可以使用以下的占位符:\n\n\n\n占位符\n描述\n\n\n\n\n:title\n文章标题\n\n\n:year\n创建年份\n\n\n:month\n月份,如4月为04\n\n\n:i_month\n月份,单数字,比如4月就是4\n\n\n:day\n日期\n\n\n:i_day\n日期\n\n\n\nDrafts(草稿)\n前面hexo提到一个特殊的布局:draft。\n这种布局的帖子保存到 source/_drafts 文件夹。你可以使用 publish 命令移动草稿到 source/_posts 文件夹。\n这个命令类似于你使用了 new。\n$ hexo publish [layout] \n\n草稿默认不显示,你可以添加 --draft 选项或者设置 _config.yml 中的 render_drafts 使hexo显示草稿。\nScaffolds(模版)\n当创建一篇文章,Hexo将构建基于 scaffolds 文件夹中的相应文件。例如:\n$ hexo new photo \"My Gallery\"\n\n当你运行这个命令,要尝试在 scaffolds 文件夹下找到文件名为 photo.md 的模板文件。下面占位符可以使用模板:\n\n\n\n占位符\n描述\n\n\n\n\nlayout\n布局\n\n\ntitle\n文章标题\n\n\ndate\n发布时间\n\n\n\n2. 前置申明\n前置申明的意思是写在文章前面的一块内容,为了对文章进行某些设置。它有两种书写方式:\nYAML方式,以三短线结束\ntitle: Hello World\ndate: 2013/7/13 20:46:25\n---\n\nJSON方式,以三分号结束\n\"title\": \"Hello World\",\n\"date\": \"2013/7/13 20:46:25\"\n;;;\n\n设置以及默认值\n\n\n\n设置\n描述\n\n\n\n\nlayout\n布局\n\n\ntitle\n文章标题\n\n\ndate\n发布时间,默认为文件创建时间\n\n\nupdated\n文件修改时间\n\n\ncomments\n是否开启评论,默认为true\n\n\ntags\n文章标签\n\n\ncategories\n文章所属分类\n\n\npermalink\n文章永久链接,一般不用写,默认就行\n\n\n\n分类 & 标签\n分类和标签只支持在文章。分类可能会有多层级别。\n下面是一个例子:\ncategories:\n- Sports\n- Baseball\ntags:\n- Injury\n- Fight\n- Shocking\n\n3. 标签插件\n这里的标签插件不是文章中的标签,它可以帮助你在文章中插入特定的一些内容。\nBlock Quote(块引用)\n插入引号与作者、来源和文章的标题。\n别名:quote\n{% blockquote [author[, source]] [link] [source_link_title] %}\ncontent\n{% endblockquote %}\n\n示例\n没有任何参数,纯输出blockquote\n{% blockquote %}\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu lorem.\n{% endblockquote %}\n\n\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu lorem.\n\n引用一本书\n{% blockquote David Levithan, Wide Awake %}\nDo not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.\n{% endblockquote %}\n\n\nDo not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.\nDavid Levithan——Wide Awake\n\n引用自Twitter\n{% blockquote @DevDocs https://twitter.com/devdocs/status/356095192085962752 %}\nNEW: DevDocs now comes with syntax highlighting. http://devdocs.io\n{% endblockquote %}\n\n\nNEW: DevDocs now comes with syntax highlighting. http://devdocs.io\n@DevDocs——twitter.com/devdocs/status/356095192085962752\n\n引用网络上一篇文章\n{% blockquote Seth Godin http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html Welcome to Island Marketing %}\nEvery interaction is both precious and an opportunity to delight.\n{% endblockquote %}\n\n\nEvery interaction is both precious and an opportunity to delight.\nSeth Godin——Welcome to Island Marketing\n\n代码块\n文章中插入代码块\n别名:code\n{% codeblock [title] [lang:language] [url] [link text] %}\ncode snippet\n{% endcodeblock %}\n\n示例\n普通代码块\n{% codeblock %}\nalert('Hello World!');\n{% endcodeblock %}\n\nalert('Hello World!');\n\n指定语言\n{% codeblock lang:objc %}\n[rectangle setX: 10 y: 10 width: 20 height: 20];\n{% endcodeblock %}\n\n[rectangle setX: 10 y: 10 width: 20 height: 20];\n\nGist\n{% gist gist_id [filename] %}\n\niframe\n{% iframe url [width] [height] %}\n\nImage\n{% img [class names] /path/to/image [width] [height] [title text [alt text]] %}\n\nLink\n{% link text url [external] [title] %}\n\n更多...\n4. 资源目录x\n资源是非文章的文件,在source文件夹中,如图片、css、javascript文件等。\nHexo提供了一个更加方便的方式来管理资源。你可以修改 post_asset_folder 设置。\npost_asset_folder: true\n\n一旦 post_asset_folder 设置启用,在你创建文章的时候,Hexo会创建一个同名目录,\n你可以将该文章关联的资源全部放到该目录下。这样就可以更加方便的使用它们了。\n标签插件使用\n{% asset_path slug %}\n{% asset_img slug [title] %}\n{% asset_link slug [title] %}\n\n5. 数据文件\n有时,你可能会使用一些不在post中的模版数据,或者你想复用这些数据,\n那么你可以试用一下Hexo3中的『Data files』功能。这个特性加载 source/_data 目录中的YAML或者JSON文件,从而用到你的网站中。\n例如在 source/_data 文件夹中添加 menu.yml\nHome: /\nGallery: /gallery/\nArchives: /archives/\n\n你可用在模板中使用它们:\n{% for link in site.data.menu %}\n {{ loop.key }}\n{% endfor %}\n\n6. 服务器\nHexo-server\n在Hexo3中,服务器模块从主模块中分开了,你可以通过安装 hexo-server 来使用它。\n$ npm install hexo-server --save\n\n一旦服务器安装,运行以下命令启动服务器。\n默认你的网站将会运行在 http://localhost:4000。\n当服务器正在运行时,Hexo将自动监控文件更改和更新。你不需要重新启动服务器。\n$ hexo server\n\n如果你想修改端口或遇到 EADDRINUSE 错误。您可以添加 -p 选项来设置其他端口。\n$ hexo server -p 5000\n\nStatic Mode\n在静态模式下,public 文件夹的监控的禁用的。你必须运行 hexo generate 之前启动服务器,通常用于生产环境。\n$ hexo server -s\n\nCustom IP\nHexo运行服务器在默认0.0.0.0。你可以覆盖默认的IP设置\n$ hexo server -i 192.168.1.1\n\n7. 生成器\nHexo生成静态文件非常简单、高效。\n$ hexo generate\n\n监听文件修改\nHexo立即可以看到文件更改并重新生成文件。Hexo将比较SHA1校验和文件和只写文件的改变。\n$ hexo generate --watch\n\n部署后生成\n部署生成后,您可以运行以下命令之一,这2个命令使用结果相同。\n$ hexo generate --deploy\n$ hexo deploy --generate\n\n8. 部署\nHexo为部署提供了一个快速、简单的方法。你只需要一个命令将网站部署到服务器。\n$ hexo deploy\n\n在我们开始之前,你必须在 _config.yml 修改设置。一个有效的部署设置必须有 type 字段。例如:\ndeploy:\n type: git\n\n你可用同时部署到多个type,Hexo将依次执行每个部署。\ndeploy:\n- type: git\n repo:\n- type: heroku\n repo:\n\nGit\n安装 hexo-deployer-git\n$ npm install hexo-deployer-git --save\n\n编辑设置:\ndeploy:\n type: git\n repo: \n branch: [branch]\n message: [message]\n\n| 选项 | 描述|\n| ----------- |---------------------------------------------|\n| repo | github仓库地址 |\n| branch | 分支名称 |\n| message |定制提交消息(默认为 `Site updated: {{ now(\"YYYY-MM-DD HH:mm:ss\") }}` )|\n"},"开发者指南.html":{"url":"开发者指南.html","title":"开发者指南","keywords":"","body":"开发者指南\n"},"git/guide.html":{"url":"git/guide.html","title":"git - 简明指南","keywords":"","body":"git - 简明指南\n\n助你入门 git 的简明指南,木有高深内容 ;)\n\n安装\n\n下载 git OSX 版\n下载 git Windows 版\n下载 git Linux 版\n\n创建新仓库\n创建新文件夹,打开,然后执行 \ngit init\n\n以创建新的 git 仓库。\n检出仓库\n执行如下命令以创建一个本地仓库的克隆版本:\ngit clone /path/to/repository\n\n如果是远端服务器上的仓库,你的命令会是这个样子:\ngit clone username@host:/path/to/repository\n\n工作流\n你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。\n\n添加和提交\n你可以提出更改(把它们添加到暂存区),使用如下命令:\ngit add \ngit add *\n\n这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:\ngit commit -m \"代码提交信息\"\n\n现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。\n推送改动\n你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:\ngit push origin master\n\n可以把 master 换成你想要推送的任何分支。\n 如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:\ngit remote add origin \n\n如此你就能够将你的改动推送到所添加的服务器上去了。\n分支\n分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。\n\n创建一个叫做“feature_x”的分支,并切换过去:\ngit checkout -b feature_x\n\n切换回主分支:\ngit checkout master\n\n再把新建的分支删掉:\ngit branch -d feature_x\n\n除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:\ngit push origin \n\n更新与合并\n要更新你的本地仓库至最新改动,执行:\ngit pull\n\n以在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。\n要合并其他分支到你的当前分支(例如 master),执行:\ngit merge \n\n在这两种情况下,git 都会尝试去自动合并改动。遗憾的是,这可能并非每次都成功,并可能出现冲突(conflicts)。 这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:\ngit add \n\n在合并改动之前,你可以使用如下命令预览差异:\ngit diff \n\n标签\n为软件发布创建标签是推荐的。这个概念早已存在,在 SVN 中也有。你可以执行如下命令创建一个叫做 1.0.0 的标签:\ngit tag 1.0.0 1b2e1d63ff\n\n1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。可以使用下列命令获取提交 ID:\ngit log\n\n你也可以使用少一点的提交 ID 前几位,只要它的指向具有唯一性。\n替换本地改动\n假如你操作失误(当然,这最好永远不要发生),你可以使用如下命令替换掉本地改动:\ngit checkout -- \n\n此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。\n假如你想丢弃你在本地的所有改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:\ngit fetch origin\ngit reset --hard origin/master\n\n实用小贴士\n内建的图形化 git:\ngitk\n\n彩色的 git 输出:\ngit config color.ui true\n\n显示历史记录时,每个提交的信息只显示一行:\ngit config format.pretty oneline\n\n交互式添加文件到暂存区:\ngit add -i\n\n链接与资源\n图形化客户端\n\nGitX (L) (OSX, 开源软件)\nTower (OSX)\nSource Tree (OSX, 免费)\nGitHub for Mac (OSX, 免费)\nGitBox (OSX, App Store)\n\n指南和手册\n\nGit 社区参考书\n专业 Git\n像 git 那样思考\nGitHub 帮助\n图解 Git\n\n"},"user_guide/google-java8-guide.html":{"url":"user_guide/google-java8-guide.html","title":"Google Java编程风格指南","keywords":"","body":"前言\n这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。\n与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见。\n\n\n1.1 术语说明\n在本文档中,除非另有说明:\n\n术语class可表示一个普通类,枚举类,接口或是annotation类型(@interface)\n术语comment只用来指代实现的注释(implementation comments),我们不使用“documentation comments”一词,而是用Javadoc。\n\n其他的术语说明会偶尔在后面的文档出现。\n1.2 指南说明\n本文档中的示例代码并不作为规范。也就是说,虽然示例代码是遵循Google编程风格,但并不意味着这是展现这些代码的唯一方式。 示例中的格式选择不应该被强制定为规则。\n源文件基础\n2.1 文件名\n源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java。\n2.2 文件编码:UTF-8\n源文件编码格式为UTF-8。\n2.3 特殊字符\n2.3.1 空白字符\n除了行结束符序列,ASCII水平空格字符(0×20,即空格)是源文件中唯一允许出现的空白字符,这意味着:\n\n所有其它字符串中的空白字符都要进行转义。\n制表符不用于缩进。\n\n2.3.2 特殊转义序列\n对于具有特殊转义序列的任何字符(\\b, \\t, \\n, \\f, \\r, \\“, \\‘及$$,我们使用它的转义序列,而不是相应的八进制(比如12)或Unicode(比如\\u000a)转义。\n2.3.3 非ASCII字符\n对于剩余的非ASCII字符,是使用实际的Unicode字符(比如∞),还是使用等价的Unicode转义符(比如\\u221e),取决于哪个能让代码更易于阅读和理解。\n\nTip: 在使用Unicode转义符或是一些实际的Unicode字符时,建议做些注释给出解释,这有助于别人阅读和理解。\n\n例如:\nString unitAbbrev = \"μs\"; | 赞,即使没有注释也非常清晰\nString unitAbbrev = \"\\u03bcs\"; // \"μs\" | 允许,但没有理由要这样做\nString unitAbbrev = \"\\u03bcs\"; // Greek letter mu, \"s\" | 允许,但这样做显得笨拙还容易出错\nString unitAbbrev = \"\\u03bcs\"; | 很糟,读者根本看不出这是什么\nreturn '\\ufeff' + content; // byte order mark | Good,对于非打印字符,使用转义,并在必要时写上注释\n\n\nTip: 永远不要由于害怕某些程序可能无法正确处理非ASCII字符而让你的代码可读性变差。当程序无法正确处理非ASCII字符时,它自然无法正确运行, 你就会去fix这些问题的了。(言下之意就是大胆去用非ASCII字符,如果真的有需要的话)\n\n源文件结构\n一个源文件包含(按顺序地):\n\n许可证或版权信息(如有需要)\npackage语句\nimport语句\n一个顶级类(只有一个)\n\n以上每个部分之间用一个空行隔开。\n3.1 许可证或版权信息\n如果一个文件包含许可证或版权信息,那么它应当被放在文件最前面。\n3.2 package语句\npackage语句不换行,列限制(4.4节)并不适用于package语句。(即package语句写在一行里)\n3.3 import语句\n3.3.1 import不要使用通配符\n即,不要出现类似这样的import语句:import java.util.*;\n3.3.2 不要换行\nimport语句不换行,列限制(4.4节)并不适用于import语句。(每个import语句独立成行)\n3.3.3 顺序和间距\nimport语句可分为以下几组,按照这个顺序,每组由一个空行分隔:\n\n所有的静态导入独立成组\ncom.google imports(仅当这个源文件是在com.google包下)\n第三方的包。每个顶级包为一组,字典序。例如:android, com, junit, org, sun\njava imports\njavax imports\n\n组内不空行,按字典序排列。\n3.4 类声明\n3.4.1 只有一个顶级类声明\n每个顶级类都在一个与它同名的源文件中(当然,还包含.java后缀)。\n例外:package-info.java,该文件中可没有package-info类。\n3.4.2 类成员顺序\n类的成员顺序对易学性有很大的影响,但这也不存在唯一的通用法则。不同的类对成员的排序可能是不同的。 最重要的一点,每个类应该以某种逻辑去排序它的成员,维护者应该要能解释这种排序逻辑。比如, 新的方法不能总是习惯性地添加到类的结尾,因为这样就是按时间顺序而非某种逻辑来排序的。\n3.4.2.1 重载:永不分离\n当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数/方法。\n格式\n术语说明:块状结构(block-like construct)指的是一个类,方法或构造函数的主体。需要注意的是,数组初始化中的初始值可被选择性地视为块状结构(4.8.3.1节)。\n4.1 大括号\n4.1.1 使用大括号(即使是可选的)\n大括号与if, else, for, do, while语句一起使用,即使只有一条语句(或是空),也应该把大括号写上。\n4.1.2 非空块:K & R 风格\n对于非空块和块状结构,大括号遵循Kernighan和Ritchie风格 (Egyptian brackets):\n\n左大括号前不换行\n左大括号后换行\n右大括号前换行\n如果右大括号是一个语句、函数体或类的终止,则右大括号后换行; 否则不换行。例如,如果右大括号后面是else或逗号,则不换行。\n\n示例:\nreturn new MyClass() {\n @Override public void method() {\n if (condition()) {\n try {\n something();\n } catch (ProblemException e) {\n recover();\n }\n }\n }\n};\n\n4.8.1节给出了enum类的一些例外。\n4.1.3 空块:可以用简洁版本\n一个空的块状结构里什么也不包含,大括号可以简洁地写成{},不需要换行。例外:如果它是一个多块语句的一部分(if/else 或 try/catch/finally) ,即使大括号内没内容,右大括号也要换行。\n示例:\nvoid doNothing() {}\n4.2 块缩进:2个空格\n每当开始一个新的块,缩进增加2个空格,当块结束时,缩进返回先前的缩进级别。缩进级别适用于代码和注释。(见4.1.2节中的代码示例)\n4.3 一行一个语句\n每个语句后要换行。\n4.4 列限制:80或100\n一个项目可以选择一行80个字符或100个字符的列限制,除了下述例外,任何一行如果超过这个字符数限制,必须自动换行。\n例外:\n\n不可能满足列限制的行(例如,Javadoc中的一个长URL,或是一个长的JSNI方法参考)。\npackage和import语句(见3.2节和3.3节)。\n注释中那些可能被剪切并粘贴到shell中的命令行。\n\n4.5 自动换行\n术语说明:一般情况下,一行长代码为了避免超出列限制(80或100个字符)而被分为多行,我们称之为自动换行(line-wrapping)。\n我们并没有全面,确定性的准则来决定在每一种情况下如何自动换行。很多时候,对于同一段代码会有好几种有效的自动换行方式。\n\nTip: 提取方法或局部变量可以在不换行的情况下解决代码过长的问题(是合理缩短命名长度吧)\n\n4.5.1 从哪里断开\n自动换行的基本准则是:更倾向于在更高的语法级别处断开。\n\n如果在非赋值运算符处断开,那么在该符号前断开(比如+,它将位于下一行)。注意:这一点与Google其它语言的编程风格不同(如C++和JavaScript)。 这条规则也适用于以下“类运算符”符号:点分隔符(.),类型界限中的&(),catch块中的管道符号(catch (FooException | BarException e)\n如果在赋值运算符处断开,通常的做法是在该符号后断开(比如=,它与前面的内容留在同一行)。这条规则也适用于foreach语句中的分号。\n方法名或构造函数名与左括号留在同一行。\n逗号(,)与其前面的内容留在同一行。\n\n4.5.2 自动换行时缩进至少+4个空格\n自动换行时,第一行后的每一行至少比第一行多缩进4个空格(注意:制表符不用于缩进。见2.3.1节)。\n当存在连续自动换行时,缩进可能会多缩进不只4个空格(语法元素存在多级时)。一般而言,两个连续行使用相同的缩进当且仅当它们开始于同级语法元素。\n第4.6.3水平对齐一节中指出,不鼓励使用可变数目的空格来对齐前面行的符号。\n4.6 空白\n4.6.1 垂直空白\n以下情况需要使用一个空行:\n\n类内连续的成员之间:字段,构造函数,方法,嵌套类,静态初始化块,实例初始化块。\n例外:两个连续字段之间的空行是可选的,用于字段的空行主要用来对字段进行逻辑分组。\n\n在函数体内,语句的逻辑分组间使用空行。\n\n类内的第一个成员前或最后一个成员后的空行是可选的(既不鼓励也不反对这样做,视个人喜好而定)。\n要满足本文档中其他节的空行要求(比如3.3节:import语句)\n\n多个连续的空行是允许的,但没有必要这样做(我们也不鼓励这样做)。\n4.6.2 水平空白\n除了语言需求和其它规则,并且除了文字,注释和Javadoc用到单个空格,单个ASCII空格也出现在以下几个地方:\n\n分隔任何保留字与紧随其后的左括号(()(如if, for catch等)。\n分隔任何保留字与其前面的右大括号(})(如else, catch)。\n在任何左大括号前({),两个例外:\n\n@SomeAnnotation({a, b})(不使用空格)。\nString[][] x = foo;(大括号间没有空格,见下面的Note)。\n\n\n在任何二元或三元运算符的两侧。这也适用于以下“类运算符”符号:\n\n类型界限中的&(<T extends Foo & Bar>)。\ncatch块中的管道符号(catch (FooException | BarException e)。\nforeach语句中的分号。\n\n\n在, : ;及右括号())后\n\n如果在一条语句后做注释,则双斜杠(//)两边都要空格。这里可以允许多个空格,但没有必要。\n类型和变量之间:List list。\n数组初始化中,大括号内的空格是可选的,即new int[] {5, 6}和new int[] { 5, 6 }都是可以的。\nNote:这个规则并不要求或禁止一行的开关或结尾需要额外的空格,只对内部空格做要求。\n\n\n\n4.6.3 水平对齐:不做要求\n术语说明:水平对齐指的是通过增加可变数量的空格来使某一行的字符与上一行的相应字符对齐。\n这是允许的(而且在不少地方可以看到这样的代码),但Google编程风格对此不做要求。即使对于已经使用水平对齐的代码,我们也不需要去保持这种风格。\n以下示例先展示未对齐的代码,然后是对齐的代码:\nprivate int x; // this is fine\nprivate Color color; // this too\n\nprivate int x; // permitted, but future edits\nprivate Color color; // may leave it unaligned\n\n\nTip:对齐可增加代码可读性,但它为日后的维护带来问题。考虑未来某个时候,我们需要修改一堆对齐的代码中的一行。 这可能导致原本很漂亮的对齐代码变得错位。很可能它会提示你调整周围代码的空白来使这一堆代码重新水平对齐(比如程序员想保持这种水平对齐的风格), 这就会让你做许多的无用功,增加了reviewer的工作并且可能导致更多的合并冲突。\n\n4.7 用小括号来限定组:推荐\n除非作者和reviewer都认为去掉小括号也不会使代码被误解,或是去掉小括号能让代码更易于阅读,否则我们不应该去掉小括号。 我们没有理由假设读者能记住整个Java运算符优先级表。\n4.8 具体结构\n4.8.1 枚举类\n枚举常量间用逗号隔开,换行可选。\n没有方法和文档的枚举类可写成数组初始化的格式:\nprivate enum Suit { CLUBS, HEARTS, SPADES, DIAMONDS }\n由于枚举类也是一个类,因此所有适用于其它类的格式规则也适用于枚举类。\n4.8.2 变量声明\n4.8.2.1 每次只声明一个变量\n不要使用组合声明,比如int a, b;。\n4.8.2.2 需要时才声明,并尽快进行初始化\n不要在一个代码块的开头把局部变量一次性都声明了(这是c语言的做法),而是在第一次需要使用它时才声明。 局部变量在声明时最好就进行初始化,或者声明后尽快进行初始化。\n4.8.3 数组\n4.8.3.1 数组初始化:可写成块状结构\n数组初始化可以写成块状结构,比如,下面的写法都是OK的:\nnew int[] {\n 0, 1, 2, 3 \n}\n\nnew int[] {\n 0,\n 1,\n 2,\n 3\n}\n\nnew int[] {\n 0, 1,\n 2, 3\n}\n\nnew int[]\n {0, 1, 2, 3}\n\n4.8.3.2 非C风格的数组声明\n中括号是类型的一部分:String[] args, 而非String args[]。\n4.8.4 switch语句\n术语说明:switch块的大括号内是一个或多个语句组。每个语句组包含一个或多个switch标签(case FOO:或default:),后面跟着一条或多条语句。\n4.8.4.1 缩进\n与其它块状结构一致,switch块中的内容缩进为2个空格。\n每个switch标签后新起一行,再缩进2个空格,写下一条或多条语句。\n4.8.4.2 Fall-through:注释\n在一个switch块内,每个语句组要么通过break, continue, return或抛出异常来终止,要么通过一条注释来说明程序将继续执行到下一个语句组, 任何能表达这个意思的注释都是OK的(典型的是用// fall through)。这个特殊的注释并不需要在最后一个语句组(一般是default)中出现。示例:\nswitch (input) {\n case 1:\n case 2:\n prepareOneOrTwo();\n // fall through\n case 3:\n handleOneTwoOrThree();\n break;\n default:\n handleLargeNumber(input);\n}\n\n4.8.4.3 default的情况要写出来\n每个switch语句都包含一个default语句组,即使它什么代码也不包含。\n4.8.5 注解(Annotations)\n注解紧跟在文档块后面,应用于类、方法和构造函数,一个注解独占一行。这些换行不属于自动换行(第4.5节,自动换行),因此缩进级别不变。例如:\n@Override\n@Nullable\npublic String getNameIfPresent() { ... }\n例外:单个的注解可以和签名的第一行出现在同一行。例如:\n@Override public int hashCode() { ... }\n应用于字段的注解紧随文档块出现,应用于字段的多个注解允许与字段出现在同一行。例如:\n@Partial @Mock DataLoader loader;\n参数和局部变量注解没有特定规则。\n4.8.6 注释\n4.8.6.1 块注释风格\n块注释与其周围的代码在同一缩进级别。它们可以是/* ... */风格,也可以是// ...风格。对于多行的/* ... */注释,后续行必须从*开始, 并且与前一行的*对齐。以下示例注释都是OK的。\n/*\n * This is // And so /* Or you can\n * okay. // is this. * even do this. */\n */\n\n注释不要封闭在由星号或其它字符绘制的框架里。\n\nTip:在写多行注释时,如果你希望在必要时能重新换行(即注释像段落风格一样),那么使用/* ... */。\n\n4.8.7 Modifiers\n类和成员的modifiers如果存在,则按Java语言规范中推荐的顺序出现。\npublic protected private abstract static final transient volatile synchronized native strictfp\n\n命名约定\n5.1 对所有标识符都通用的规则\n标识符只能使用ASCII字母和数字,因此每个有效的标识符名称都能匹配正则表达式\\w+。\n在Google其它编程语言风格中使用的特殊前缀或后缀,如name_, mName, s_name和kName,在Java编程风格中都不再使用。\n5.2 标识符类型的规则\n5.2.1 包名\n包名全部小写,连续的单词只是简单地连接起来,不使用下划线。\n5.2.2 类名\n类名都以UpperCamelCase风格编写。\n类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。现在还没有特定的规则或行之有效的约定来命名注解类型。\n测试类的命名以它要测试的类的名称开始,以Test结束。例如,HashTest或HashIntegrationTest。\n5.2.3 方法名\n方法名都以lowerCamelCase风格编写。\n方法名通常是动词或动词短语。\n下划线可能出现在JUnit测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test<MethodUnderTest>_<state>,例如testPop_emptyStack。 并不存在唯一正确的方式来命名测试方法。\n5.2.4 常量名\n常量名命名模式为CONSTANT_CASE,全部字母大写,用下划线分隔单词。那,到底什么算是一个常量?\n每个常量都是一个静态final字段,但不是所有静态final字段都是常量。在决定一个字段是否是一个常量时, 考虑它是否真的感觉像是一个常量。例如,如果任何一个该实例的观测状态是可变的,则它几乎肯定不会是一个常量。 只是永远不打算改变对象一般是不够的,它要真的一直不变才能将它示为常量。\n// Constants\nstatic final int NUMBER = 5;\nstatic final ImmutableList<String> NAMES = ImmutableList.of(\"Ed\", \"Ann\");\nstatic final Joiner COMMA_JOINER = Joiner.on(','); // because Joiner is immutable\nstatic final SomeMutableType[] EMPTY_ARRAY = {};\nenum SomeEnum { ENUM_CONSTANT }\n\n// Not constants\nstatic String nonFinal = \"non-final\";\nfinal String nonStatic = \"non-static\";\nstatic final Set<String> mutableCollection = new HashSet<String>();\nstatic final ImmutableSet<SomeMutableType> mutableElements = ImmutableSet.of(mutable);\nstatic final Logger logger = Logger.getLogger(MyClass.getName());\nstatic final String[] nonEmptyArray = {\"these\", \"can\", \"change\"};\n\n这些名字通常是名词或名词短语。\n5.2.5 非常量字段名\n非常量字段名以lowerCamelCase风格编写。\n这些名字通常是名词或名词短语。\n5.2.6 参数名\n参数名以lowerCamelCase风格编写。\n参数应该避免用单个字符命名。\n5.2.7 局部变量名\n局部变量名以lowerCamelCase风格编写,比起其它类型的名称,局部变量名可以有更为宽松的缩写。\n虽然缩写更宽松,但还是要避免用单字符进行命名,除了临时变量和循环变量。\n即使局部变量是final和不可改变的,也不应该把它示为常量,自然也不能用常量的规则去命名它。\n5.2.8 类型变量名\n类型变量可用以下两种风格之一进行命名:\n\n单个的大写字母,后面可以跟一个数字(如:E, T, X, T2)。\n以类命名方式(5.2.2节),后面加个大写的T(如:RequestT, FooBarT)。\n\n5.3 驼峰式命名法(CamelCase)\n驼峰式命名法分大驼峰式命名法(UpperCamelCase)和小驼峰式命名法(lowerCamelCase)。 有时,我们有不只一种合理的方式将一个英语词组转换成驼峰形式,如缩略语或不寻常的结构(例如”IPv6″或”iOS”)。Google指定了以下的转换方案。\n名字从散文形式(prose form)开始:\n\n把短语转换为纯ASCII码,并且移除任何单引号。例如:”Müller’s algorithm”将变成”Muellers algorithm”。\n把这个结果切分成单词,在空格或其它标点符号(通常是连字符)处分割开。\n\n推荐:如果某个单词已经有了常用的驼峰表示形式,按它的组成将它分割开(如”AdWords”将分割成”ad words”)。 需要注意的是”iOS”并不是一个真正的驼峰表示形式,因此该推荐对它并不适用。\n\n\n现在将所有字母都小写(包括缩写),然后将单词的第一个字母大写:\n\n每个单词的第一个字母都大写,来得到大驼峰式命名。\n除了第一个单词,每个单词的第一个字母都大写,来得到小驼峰式命名。\n\n\n最后将所有的单词连接起来得到一个标识符。\n\n\n示例:\nProse form Correct Incorrect\n------------------------------------------------------------------\n\"XML HTTP request\" XmlHttpRequest XMLHTTPRequest\n\"new customer ID\" newCustomerId newCustomerID\n\"inner stopwatch\" innerStopwatch innerStopWatch\n\"supports IPv6 on iOS?\" supportsIpv6OnIos supportsIPv6OnIOS\n\"YouTube importer\" YouTubeImporter\n YoutubeImporter*\n\n加星号处表示可以,但不推荐。\n\nNote:在英语中,某些带有连字符的单词形式不唯一。例如:”nonempty”和”non-empty”都是正确的,因此方法名checkNonempty和checkNonEmpty也都是正确的。\n\n编程实践\n6.1 @Override:能用则用\n只要是合法的,就把@Override注解给用上。\n6.2 捕获的异常:不能忽视\n除了下面的例子,对捕获的异常不做响应是极少正确的。(典型的响应方式是打印日志,或者如果它被认为是不可能的,则把它当作一个AssertionError重新抛出。)\n如果它确实是不需要在catch块中做任何响应,需要做注释加以说明(如下面的例子)。\ntry {\n int i = Integer.parseInt(response);\n return handleNumericResponse(i);\n} catch (NumberFormatException ok) {\n // it's not numeric; that's fine, just continue\n}\nreturn handleTextResponse(response);\n\n例外:在测试中,如果一个捕获的异常被命名为expected,则它可以被不加注释地忽略。下面是一种非常常见的情形,用以确保所测试的方法会抛出一个期望中的异常, 因此在这里就没有必要加注释。\ntry {\n emptyStack.pop();\n fail();\n} catch (NoSuchElementException expected) {\n}\n\n6.3 静态成员:使用类进行调用\n使用类名调用静态的类成员,而不是具体某个对象或表达式。\nFoo aFoo = ...;\nFoo.aStaticMethod(); // good\naFoo.aStaticMethod(); // bad\nsomethingThatYieldsAFoo().aStaticMethod(); // very bad\n\n6.4 Finalizers: 禁用\n极少会去重载Object.finalize。\nTip:不要使用finalize。如果你非要使用它,请先仔细阅读和理解Effective Java 第7条款:“Avoid Finalizers”,然后不要使用它。\nJavadoc\n7.1 格式\n7.1.1 一般形式\nJavadoc块的基本格式如下所示:\n/**\n * Multiple lines of Javadoc text are written here,\n * wrapped normally...\n */\npublic int method(String p1) { ... }\n\n或者是以下单行形式:\n/** An especially short bit of Javadoc. */\n基本格式总是OK的。当整个Javadoc块能容纳于一行时(且没有Javadoc标记@XXX),可以使用单行形式。\n7.1.2 段落\n空行(即,只包含最左侧星号的行)会出现在段落之间和Javadoc标记(@XXX)之前(如果有的话)。 除了第一个段落,每个段落第一个单词前都有标签<p>,并且它和第一个单词间没有空格。\n7.1.3 Javadoc标记\n标准的Javadoc标记按以下顺序出现:@param, @return, @throws, @deprecated, 前面这4种标记如果出现,描述都不能为空。 当描述无法在一行中容纳,连续行需要至少再缩进4个空格。\n7.2 摘要片段\n每个类或成员的Javadoc以一个简短的摘要片段开始。这个片段是非常重要的,在某些情况下,它是唯一出现的文本,比如在类和方法索引中。\n这只是一个小片段,可以是一个名词短语或动词短语,但不是一个完整的句子。它不会以A {@codeFoo} is a...或This method returns...开头, 它也不会是一个完整的祈使句,如Save the record...。然而,由于开头大写及被加了标点,它看起来就像是个完整的句子。\n\nTip:一个常见的错误是把简单的Javadoc写成/** @return the customer ID */,这是不正确的。它应该写成/** Returns the customer ID. */。\n\n7.3 哪里需要使用Javadoc\n至少在每个public类及它的每个public和protected成员处使用Javadoc,以下是一些例外:\n7.3.1 例外:不言自明的方法\n对于简单明显的方法如getFoo,Javadoc是可选的(即,是可以不写的)。这种情况下除了写“Returns the foo”,确实也没有什么值得写了。\n单元测试类中的测试方法可能是不言自明的最常见例子了,我们通常可以从这些方法的描述性命名中知道它是干什么的,因此不需要额外的文档说明。\n\nTip:如果有一些相关信息是需要读者了解的,那么以上的例外不应作为忽视这些信息的理由。例如,对于方法名getCanonicalName, 就不应该忽视文档说明,因为读者很可能不知道词语canonical name指的是什么。\n\n7.3.2 例外:重载\n如果一个方法重载了超类中的方法,那么Javadoc并非必需的。\n7.3.3 可选的Javadoc\n对于包外不可见的类和方法,如有需要,也是要使用Javadoc的。如果一个注释是用来定义一个类,方法,字段的整体目的或行为, 那么这个注释应该写成Javadoc,这样更统一更友好。\n"},"运维相关.html":{"url":"运维相关.html","title":"运维相关","keywords":"","body":"运维相关\n"},"web/test_tool.html":{"url":"web/test_tool.html","title":"Web性能测试工具","keywords":"","body":"Web服务器性能压力测试工具\n目录\n\nhttp_load\nwebbench\nab\nsiege\n\nhttp_load\n程序非常小,解压后也不到100K\nhttp_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。\n但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。\n还可以测试HTTPS类的网站请求。\n下载地址:http_load-12mar2006.tar.gz\n\n安装很简单\n\ntar zxvf http_load-12mar2006.tar.gz\ncd http_load-12mar2006\nmake && make install\n\n\n基本用法:\n\nhttp_load -p 并发访问进程数 -s 访问时间 需要访问的URL文件\n\n参数其实可以自由组合,参数之间的选择并没有什么限制。\n比如你写成 http_load -parallel 5 -seconds 300 urllist.txt 也是可以的。\n我们把参数给大家简单说明一下。\n-parallel 简写-p :含义是并发的用户进程数。\n-fetches 简写-f :含义是总计的访问次数\n-rate 简写-p :含义是每秒的访问频率\n-seconds 简写-s :含义是总计的访问时间\n准备URL文件:urllist.txt,文件格式是每行一个URL,URL最好超过50-100个测试效果比较好。\n\n文件格式如下:\n\nhttp://www.domain.com/\nhttp://www.domain.com/blog/\nhttp://www.domain.com/signin/\nhttp://www.domain.com/signup/\nhttp://www.domain.com/article/1.html\nhttp://www.domain.com/article/2.html\nhttp://www.domain.com/article/3.html\nhttp://www.domain.com/article/4.html\nhttp://www.domain.com/article/5.html\nhttp://www.domain.com/article/6.html\nhttp://www.domain.com/article/7.html\n\n\n例如:\n\nhttp_load -p 30 -s 60 urllist.txt\n\n参数了解了,我们来看运行一条命令来看看它的返回结果如下:\n\n\n结果分析:\n\n\n294 fetches, 30 max parallel, 3.83835e+06 bytes, in 60.0026 seconds\n说明在上面的测试中运行了294个请求,最大的并发进程数是30,总计传输的数据是3.83835e+06bytes,运行的时间是60.0026秒\n13055.6 mean bytes/connection\n说明每一连接平均传输的数据量3.83835e+06/294=13055.6\n4.89979 fetches/sec, 63969.7 bytes/sec\n说明每秒的响应请求为4.89979,每秒传递的数据为63969.7 bytes/sec\nmsecs/connect: 312.009 mean, 1319.57 max, 209.994 min\n说明每连接的平均响应时间是312.009 msecs,最大的响应时间1319.57 msecs,最小的响应时间209.994 msecs\nmsecs/first-response: 1191.01 mean, 10212.4 max, 220.78 min\nHTTP response codes: \n code 200 -- 127 \n code 502 -- 166\n说明打开响应页面的类型\n如果403的类型过多,那可能要注意是否系统遇到了瓶颈。\n\n特殊说明:\n测试结果中主要的指标是 fetches/sec、msecs/connect 这个选项,即服务器每秒能够响应的查询次数。\n用这个指标来衡量性能。似乎比apache的ab准确率要高一些,也更有说服力一些。\nQpt-每秒响应用户数和response time,每连接响应用户时间。\n测试的结果主要也是看这两个值。\n当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的cpu、men进行分析,才能得出结论。\nwebbench\nwebbench是Linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力。\n下载地址可以到google搜,我这里给出一个\n下载地址:http://soft.vpser.net/test/webbench/webbench-1.5.tar.gz\n这个程序更小,解压后不到50K,呵呵\n安装非常简单\ntar zxvf webbench-1.5.tar.gz\ncd webbench-1.5\nmake && make install\n\n会在当前目录生成webbench可执行文件,直接可以使用了\n用法:webbench -c 并发数 -t 运行测试时间 URL\n\n例如:\n\nwebbench -c 1000 -t 130 http://www.baidu.com\n\nab\nab是apache自带的一款功能强大的测试工具。\n安装了apache一般就自带了。\n用法可以查看它的说明\n./ab\n\n\n参数众多,一般我们用到的是 -n 和 -c\n例如:\nwebbench -c 1000 -t 130 http://www.baidu.com/index.php\n\n这个表示同时处理1000个请求并运行130次index.php文件。\nsiege\n一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。\nSiege官方:http://www.joedog.org/\nSiege下载:http://www.joedog.org/pub/siege/siege-latest.tar.gz\nSiege解压并安装:\ntar -zxvf siege-latest.tar.gz\ncd siege-latest/\n./configure\nmake\nmake install\n\n\nSiege使用:\n\nsiege -c 100 -r 10 -f site.url\n\n-c是并发量,-r是重复次数。 \nurl文件就是一个文本,每行都是一个url,它会从里面随机访问的。\nsite.url内容:\nhttp://www.qixing318.com/\nhttp://www.zendsns.com/\nhttp://www.qixing.info/\n\n测试结果:\n\n结果说明:\nTransactions: 550 hits //完成550次处理\nAvailability: 55.00 % //55.00 % 成功率\nElapsed time: 31.32 secs //总共用时\nData transferred: 1.15 MB //共数据传输1.15 MB\nResponse time: 3.04 secs //显示网络连接的速度\nTransaction rate: 17.56 trans/sec //均每秒完成 17.56 次处理:表示服务器后\nThroughput: 0.04 MB/sec //平均每秒传送数据\nConcurrency: 53.44 //实际最高并发数\nSuccessful transactions: 433 //成功处理次数\nFailed transactions: 450 //失败处理次数\nLongest transaction: 15.50 //每次传输所花最长时间\nShortest transaction: 0.42 //每次传输所花最短时间\n\n"},"learn_server/":{"url":"learn_server/","title":"写给java开发的运维笔记","keywords":"","body":"写给java开发的运维笔记\n对于Java开发人员,掌握基本的运维技能是必须的,如果你还不熟悉Linux环境,可以看这个教程。如果你觉得这个笔记还不错记得给这个项目一个 star 😊\n初级篇\n\n在虚拟机里安装centos6\n初始化操作系统\n安装jdk环境\n安装tomcat\n安装mysql及配置\n安装nginx\n安装redis3\n安装svn服务\n\n中级篇\n\n配置tomcat为服务\n配置tomcat+nginx反向代理\n使用jemeter测试tomcat性能\n优化tomcat8\n配置多个tomcat\n优化nginx配置\n优化mysql配置\nnginx+startssl配置https\n\n"},"经典文章.html":{"url":"经典文章.html","title":"经典文章","keywords":"","body":"经典文章\n"},"articles/request_message.html":{"url":"articles/request_message.html","title":"HTTP请求报文解剖","keywords":"","body":"HTTP请求报文解剖\nHTTP请求报文由3部分组成(请求行+请求头+请求体): \n\n下面是一个实际的请求报文: \n\n① 是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST,Spring 3.0提供了一个HiddenHttpMethodFilter,允许你通过“_method”的表单参数指定这些特殊的HTTP方法(实际上还是通过POST提交表单)。服务端配置了HiddenHttpMethodFilter后,Spring会根据_method参数指定的值模拟出相应的HTTP方法,这样,就可以使用这些HTTP方法对处理方法进行映射了。 \n② 为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL,③是协议名称及版本号。 \n④ 是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。 \n⑤ 是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1¶m2=value2”的方式传递请求参数。 \n对照上面的请求报文,我们把它进一步分解,你可以看到一幅更详细的结构图: \n\n\n1.IE系 \nHttpWatch是强大的网页数据分析工具,安装后将集成到Internet Explorer工具栏中。它不用代理服务器或一些复杂的网络监控工具,就能抓取请求及响应的完整信息,包括Cookies、消息头、查询参数、响应报文等,是Web应用开发人员的必备工具。 \n 2.Chrome,firefox \n 自身的调试器已经很好用了,按F12就可以看到(IE10以上也直接按F12就可以调试了) \n\nHTTP请求报文头属性\n报文头属性是什么东西呢?我们不妨以一个小故事来说明吧。 \n\n快到中午了,张三丰不想去食堂吃饭,于是打电话叫外卖:老板,我要一份[鱼香肉丝],要12:30之前给我送过来哦,我在江湖湖公司研发部,叫张三丰。\n\n这里,你要 [鱼香肉丝] 相当于HTTP报文体,而 “12:30之前送过来”,你叫 “张三丰” 等信息就相当于HTTP的报文头。它们是一些附属信息,帮忙你和饭店老板顺利完成这次交易。 \n请求HTTP报文和响应HTTP报文都拥有若干个报文关属性,它们是为协助客户端及服务端交易的一些附属信息。 \n常见的HTTP请求报文头属性\nAccept \n请求报文可通过一个 Accept 报文头属性告诉服务端 客户端接受什么类型的响应。 \n如下报文头相当于告诉服务端,俺客户端能够接受的响应类型仅为纯文本数据啊,你丫别发其它什么图片啊,视频啊过来,那样我会歇菜的~~~: \nAccept:text/plain\n\nAccept属性的值可以为一个或多个MIME类型的值,关于MIME类型,大家请参考:http://en.wikipedia.org/wiki/MIME_type\nCookie\n这是第一个要说的,客户端的Cookie就是通过这个报文头属性传给服务端的哦!如下所示: \nCookie:skin=blue; jsessionid=5F4771183629C9834F8382E23BE13C4C\n\n注意到后台的那个 jsessionid=5F4771183629C9834F8382E23BE13C4C 没有,\n服务端是怎么知道客户端的多个请求是属于一个Session的,原来就是通过HTTP请求报文头的Cookie属性的jsessionid的值关联起来的!(当然也可以通过重写URL的方式将会话ID附带在每个URL的后后面哦)。\nReferer\n表示这个请求是从哪个URL过来的,假如你通过google搜索出一个商家的广告页面,你对这个广告页面感兴趣,鼠标一点发送一个请求报文到商家的网站,这个请求报文的Referer报文头属性值就是 http://www.google.com。 \n很多貌似神奇的网页监控软件(如著名的 我要啦),只要在你的网页上放上一段JavaScript,就可以帮你监控流量,全国访问客户的分布情况等报表和图表,其原理就是通过这个Referer及其它一些HTTP报文头工作的。\nCache-Control\n对缓存进行控制,如一个请求希望响应返回的内容在客户端要被缓存一年,或不希望被缓存就可以通过这个报文头达到目的。 \n如以下设置,相当于让服务端将对应请求返回的响应内容不要在客户端缓存(当然响应报文也是通过响应报文头通知浏览器客户端的,这个下面再说): \nCache-Control: no-cache\n\n其它报文头属性\n参见:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields\n如何访问请求报文头\n由于请求报文头是客户端发过来的,服务端当然只能读取了,以下是 HttpServletRequest 一些用于读取请求报文头的API:\n//获取请求报文中的属性名称\njava.util.Enumeration getHeaderNames();\n\n//获取指定名称的报文头属性的值\njava.lang.String getHeader(java.lang.String name)\n\n由于一些请求报文头属性“太著名”了,因此HttpServletRequest为它们提供了VIP的API: \n//获取报文头中的Cookie(读取Cookie的报文头属性)\n Cookie[] getCookies() ;\n\n//获取客户端本地化信息(读取 Accept-Language 的报文头属性)\njava.util.Locale getLocale() \n\n//获取请求报文体的长度(读取Content-Length的报文头属性)\nint getContentLength();\n\nHttpServletRequest可以通过 HttpSession getSession()\n获取请求所关联的HttpSession,其内部的机理是通过读取请求报文头中Cookie属性的JSESSIONID的值,在服务端的一个会话Map中,根据这个JSESSIONID获取对应的HttpSession的对象。\n(这样,你就不会觉得HttpSession很神秘了吧,你自己也可以做一个类似的会话管理)\nHTTP响应报文解剖\n响应报文结构\nHTTP的响应报文也由三部分组成(响应行+响应头+响应体): \n\n以下是一个实际的HTTP响应报文: \n\n① 报文协议及版本; \n② 状态码及状态描述; \n③ 响应报文头,也是由多个属性组成; \n④ 响应报文体,即我们真正要的“干货”。 \n响应状态码\n和请求报文相比,响应报文多了一个“响应状态码”,它以“清晰明确”的语言告诉客户端本次请求的处理结果。 \nHTTP的响应状态码由5段组成: \n\n1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急...\n2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.\n3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。\n4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。\n5xx 处理发生,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。\n\n以下是几个常见的状态码: \n200 OK\n你最希望看到的,即处理成功! \n303 See Other\n我把你redirect到其它的页面,目标的URL通过响应报文头的Location告诉你。 \n\n悟空:师傅给个桃吧,走了一天了 :relieved: \n唐僧:我哪有桃啊!去王母娘娘那找吧 :unamused:\n\n304 Not Modified\n告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊! \n404 Not Found\n你最不希望看到的,即找不到页面。如你在google上找到一个页面,点击这个链接返回404,表示这个页面已经被网站删除了,google那边的记录只是美好的回忆。 \n500 Internal Server Error\n看到这个错误,你就应该查查服务端的日志了,肯定抛出了一堆异常,别睡了,起来改BUG去吧! \n有些响应码,Web应用服务器会自动给生成。你可以通过HttpServletResponse的API设置状态码: \n\n//设置状态码,状态码在HttpServletResponse中通过一系列的常量预定义了,如SC_ACCEPTED,SC_OK\nvoid setStatus(int sc)\n\n常见的HTTP响应报文头属性\nCache-Control\n响应输出到客户端后,服务端通过该报文头属告诉客户端如何控制响应内容的缓存。 \n下面,的设置让客户端对响应内容缓存3600秒,也即在3600秒内,如果客户再次访问该资源,直接从客户端的缓存中返回内容给客户,不要再从服务端获取(当然,这个功能是靠客户端实现的,服务端只是通过这个属性提示客户端“应该这么做”,做不做,还是决定于客户端,如果是自己宣称支持HTTP的客户端,则就应该这样实现)。 \nCache-Control: max-age=3600\n\nETag\n一个代表响应服务端资源(如页面)版本的报文头属性,如果某个服务端资源发生变化了,这个ETag就会相应发生变化。它是Cache-Control的有益补充,可以让客户端“更智能”地处理什么时候要从服务端取资源,什么时候可以直接从缓存中返回响应。\n关于ETag的说明,你可以参见:http://en.wikipedia.org/wiki/HTTP_ETag。 \nSpring 3.0还专门为此提供了一个 org.springframework.web.filter.ShallowEtagHeaderFilter (实现原理很简单,对JSP输出的内容MD5,这样内容有变化ETag就相应变化了),用于生成响应的ETag,因为这东东确实可以帮助减少请求和响应的交互。 \n下面是一个ETag: \nETag: \"737060cd8c284d8af7ad3082f209582d\"\n\nLocation\n我们在JSP中让页面Redirect到一个某个A页面中,其实是让客户端再发一个请求到A页面,这个需要Redirect的A页面的URL,其实就是通过响应报文头的Location属性告知客户端的,如下的报文头属性,将使客户端redirect到iteye的首页中: \nLocation: https://github.com/biezhi/jb\n\nSet-Cookie\n服务端可以设置客户端的Cookie,其原理就是通过这个响应报文头属性实现的:\nSet-Cookie: UserID=Jack; Max-Age=3600; Version=1\n\n其它HTTP请求报文头属性\n更多其它的HTTP请求头报文,参见:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields\n如何写HTTP请求报文头\n在服务端可以通过HttpServletResponse的API写响应报文头的属性:\n//添加一个响应报文头属性\nvoid setHeader(String name, String value)\n\n像Cookie,Location这些响应头是有福之人,HttpServletResponse为它们都提供了VIP(非API 哈): \n//添加Cookie报文头属性\nvoid addCookie(Cookie cookie) \n\n//不但会设置Location的响应报文头,还会生成303的状态码呢,两者天仙配呢\nvoid sendRedirect(String location)\n\n"},"articles/software_architecture_patterns.html":{"url":"articles/software_architecture_patterns.html","title":"软件架构模式","keywords":"","body":"软件架构模式\n\n目录\n简介\n对程序员来说很常见一种情况是在没有合理的程序架构时就开始编程,没有一个清晰的和定义好的架构的时候,大多数开发者和架构师通常会使用标准式的传统分层架构模式(也被称为多层架构)—通过将源码模块分割为几个不同的层到不同的包中。不幸的是,这种编码方式会导致一系列没有组织性的代码模块,这些模块缺乏明确的规则、职责和同其他模块之间的关联。这通常被称为架构大泥球。\n应用程序缺乏合理的架构一般会导致程序过度耦合、容易被破坏、难以应对变化,同时很难有个清晰的版本或者方向性。这样的结果是,如果你没有充分理解程序系统里每个组件和模块,就很难定义这个程序的结构特征。有关于程序的部署和维护的基本问题都难以回答,比如:程序架构是什么规模?应用程序有什么性能特点?应用程序有多容易应对变化?应用程序的部署特点是什么?架构是如何反应的?\n架构模式帮助你定义应用程序的基本特征和行为。例如,些架构模式会让程序自己自然⽽而然地朝着具有良 好伸缩性的方向发展,⽽而其他架构模式会让程序朝着高度灵活的方向发展。知道了这些特点,了解架构模式 的优点和缺点是非常必要的,它帮助我们选择个适合自己特定的业务需求和目标的的程序。\n作为个架构师,你必须证明你的架构模式的决策是正确的,特别是当需要选择一个特定的体系结构模式或方法 的时候。这本迷你书的目的就是给你⾜足够的信息让你去做出正确的架构决策。\n第一章 分层架构\n分层架构是一种很常⻅见的架构模式,它也叫N层架构。这种架构是大多数Jave EE应用的实际标准,因此很多 的架构师,设计师,还有程序员都知道它。许多传统IT公司的组织架构和分层模式十分的相似。所以它很自 然的成为大多数应用的架构模式。\n模式分析\n分层架构模式里的组件被分成几个平行的层次,每一层都代表了应用的一个功能(展示逻辑或者业务逻辑)。 尽管分层架构没有规定自⾝身要分成几层几种,大多数的结构都分成四个层次:展示层,业务层,持久层,和数 据库层。如表1-1,有时候,业务层和持久层会合并成单独的一个业务层,尤其是持久层的逻辑绑定在业务层 的组件当中。因此,有一些小的应用可能只有3层,一些有着更复杂的业务的大应用可能有5层或者更多的分 层。\n分层架构中的每一层都着特定的角色和职能。举个例子,展示层负责处理所有的界面展示以及交互逻辑,业 务层负责处理请求对应的业务。架构里的层次是具体工作的高度抽象,它们都是为了实现某种特定的业务请 求。比如说展示层并不需要关⼼心怎样得到用户数据,它只需在屏幕上以特定的格式展示信息。业务层并不关\n⼼心要展示在屏幕上的用户数据格式,也不关⼼心这些用户数据从哪里来。它只需要从持久层得到数据,执行与 数据有关的相应业务逻辑,然后把这些信息传递给展示层。\n\n分层架构的一个突出特性是组件间关注点分离 (separation of concerns)。一个层中的组件只会处理本层的逻 辑。比如说,展示层的组件只会处理展示逻辑,业务层中的组件只会去处理业务逻辑。多亏了组件分离,让 我们更容易构造有效的角色和强⼒力的模型。这样应用变的更好开发,测试,管理和维护。\n关键概念\n注意表1-2中每一层都是封闭的。这是分层架构中非常重要的特点。这意味request必须一层一层的传递。举 个例子,从展示层传递来的请求⾸首先会传递到业务层,然后传递到持久层,最后才传递到数据层。\n\n那么为什么不允许展示层直接访问数据层呢。如果只是获得以及读取数据,展示层直接访问数据层,比穿过一层一层来得到数据来的快多了。这涉及到一个概念:层隔离。\n层隔离就是说架构中的某一层的改变不会影响到其他层:这些变化的影响范围限于当前层次。如果展示层能够 直接访问持久层了,假如持久层中的SQL变化了,这对业务层和展示层都有一定的影响。这只会让应用变得 紧耦合,组件之间互相依赖。这种架构会非常的难以维护。\n从另外一个方面来说,分层隔离使得层与层之间都是相互独立的,架构中的每一层的互相了解都很少。为了 说明这个概念的⽜牛逼之处,想象一个超级重构,把展示层从JSP换成JSF。假设展示层和业务层的之间的联系 保持一致,业务层不会受到重构的影响,它和展示层所使用的界面架构完全独立。\n然⽽而封闭的架构层次也有不便之处,有时候也应该开放某一层。如果想往包含了一些由业务层的组件调用的 普通服务组件的架构中添加个分享服务层。在这个例子里,新建一个服务层通常是个好主意,因为从架构上来说,它限制了分享服务访问业务层(也不允许访问展示层)。如果没有隔离层,就没有任何架构来限制展示层访问普通服务,难以进行权限管理。\n在这个例子中,新的服务层是处于业务层之下的,展示层不能直接访问这个服务层中的组件。但是现在业务 层还要通过服务层才能访问到持久层,这一点也不合理。这是分层架构中的老问题了,解决的办法是开放某 些层。如表1-3所示,服务层现在是开放的了。请求可以绕过这一层,直接访问这层下面的层。既然服务层 是开放的,业务层可以绕过服务层,直接访问数据持久层。这样就非常合理。\n\n开放和封闭层的概念确定了架构层和请求流之间的关系,并且给设计师和开发人员提供了必要的信息理解架 构里各种层之间的访问限制。如果随意的开放或者封闭架构里的层,整个项目可能都是紧耦合,一团糟的。以后也难以测试,维护和部署。\n示例\n为了演示分层架构是如何工作的,想象一个场景,如表1-4,用户发出了个请求要获得客户的信息。黑色的箭头是从数据库中获得用户数据的请求流,红色箭头显示用户数据的返回流的方向。在这个例子中,用户信 息由客户数据和订单数组组成(客户下的订单)。\n用户界面只管接受请求以及显示客户信息。它不管怎么得到数据的,或者说得到这些数据要用到哪些数据 表。如果用户界面接到了一个查询客户信息的请求,它就会转发这个请求给用户委托(Customer Delegate)模 块。这个模块能找到业务层里对应的模块处理对应数据(约束关系)。业务层里的customer object聚合了业务 请求需要的所有信息(在这个例子里获取客户信息)。这个模块调用持久层中的 customer dao 来得到客户信 息,调用order dao来得到订单信息。这些模块会执行SQL语句,然后返回相应的数据给业务层。当 customer object收到数据以后,它就会聚合这些数据然后传递给 customer delegate,然后传递这些数据到 customer screen 展示在用户面前。\n\n从技术的角度来说,有很多的方式能够实现这些模块。比如说在Java平台中,customer screen 对应的是 (JSF) Java Server Faces ,用 bean 组件来实现 customer delegate。用本地的Spring bean或者远程的EJB3 bean 来实现业务层中的customer object。上例中的数据访问可以用简单的POJP's(Plain Old Java Objects),或者可以用MyBatis,还可以用JDBC或者Hibernate查询。Microsoft平台上,customer screen能\n用 .NET 库的ASP模块来访问业务层中的C#模块,用ADO来实现用户和订单数据的访问模块。\n我们看一下淘宝前几年的架构的例子。\n\n这是一个标准的分层的架构。每一层中又可以详细的分成更细的层,比如服务层。\n\n围着着这个主架构还有一些外围的产品。比如监控和审计。\n注意事项\n分层架构是一个很可靠的架构模式。它适合大多数的应用。如果你不确定在项目中使用什么架构,分层架构 是再好不过的了。然后,从架构的角度上来说,选择这个模式还要考虑很多的东⻄西。\n第一个要注意的就是 污水池反模式(architecture sinkhole anti-pattern)。 在这个模式中,请求流只是简单的 穿过层次,不留一点云彩,或者说只留下一阵⻘青烟。比如说界面层响应了一个获得数据的请求。响应层把这 个请求传递给了业务层,业务层也只是传递了这个请求到持久层,持久层对数据库做简单的SQL查询获得用户的数据。这个数据按照原理返回,不会有任何的二次处理,返回到界面上。\n每个分层架构或多或少都可能遇到这种场景。关键在于这样的请求有多少。80-20原则可以帮助你确定架构是 否处于反污水模式。大概有百分之二十的请求仅仅是做简单的穿越,百分之八十的请求会做一些业务逻辑操 作。然而,如果这个比例反过来,大部分的请求都是仅仅穿过层,不做逻辑操作。那么开放一些架构层会比较好。不过由于缺少了层次隔离,项目会变得难以控制。\n模式分析\n下⾯面的的表⾥里分析了分层架构的各个⽅方⾯面。\n整体灵活性\n评级:低 分析:总体灵活性是响应环境变化的能⼒力。尽管分层模式中的变化可以隔绝起来,想在这种架构中做⼀一些也改 变也是并且费时费⼒力的。分层模式的笨重以及经常出现的组件之间的紧耦合是导致灵活性降低的原因。\n易于部署\n评级:低 分析:这取决于你怎么发布这种模式,发布程序可能⽐比较⿇麻烦,尤其是很⼤大的项目。⼀一个组件的⼩小⼩小改动可能 会影响到整个程序的发布(或者程序的⼤大部分)。发布必须是按照计划,在⾮非⼯工作时间或者周末进⾏行发布。因此,分层模式导致应⽤用发布⼀一点也不流畅,在发布上降低了灵活性。\n可测试性\n评级:高 分析:因为组件都处于各⾃自的层次中,可以模拟其他的层,或者说直接去掉层,所以分层模式很容易测试。开发者可以单独模拟⼀一个展⽰示组件,对业务组件进⾏行隔绝测试。还可以模拟业务层来测试某个展⽰示功能。\n性能\n评级:低 分析:尽管某些分层架构的性能表现的确不错,但是这个模式的特点导致它⽆无法带来⾼高性能。因为⼀一次业务请求要穿越所有的架构层,做了很多不必要的⼯工作。\n伸缩性\n评级:低 分析:由于这种模式以紧密耦合的趋势在发展,规模也⽐比较⼤大,⽤用分层架构构建的程序都⽐比较难以扩展。你可 以把各个层分成单独的物理模块或者干脆把整个程序分成多个节点来扩展分层架构,但是总体的关系过于紧\n密,这样很难扩展。\n易开发性\n评级:容易 分析:在开发难度上⾯面,分层架构得到了⽐比较⾼高的分数。因为这种架构对⼤大家来说很熟悉,不难实现。⼤大部分 公司在开发项⺫⽬目的都是通过层来区分技术的,这种模式对于⼤大多数的商业项目开发来说都很合适。公司的组织架构和他们软件架构之间的联系被戏称为\"Conway's law\"。你可以Google⼀一下查查这个有趣的联系。\n\n未完待续\n\n"},"articles/electrical-business-architecture.html":{"url":"articles/electrical-business-architecture.html","title":"电商网站架构案例","keywords":"","body":"大型网站架构系列:电商网站架构案例\n大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。\n根据实际需要,进行改造,扩展,支持千万PV,是没问题的。\n本次分享大纲\n\n电商案例的原因\n电商网站需求\n网站初级架构\n系统容量估算\n网站架构分析\n网站架构优化\n架构总结\n\n电商网站案例,一共有三篇本篇主要说明网站的需求,网站初始架构,系统容量估算方法。\n一、电商案例的原因\n分布式大型网站,目前看主要有几类1.大型门户,比如网易,新浪等;2.SNS网站,比如校内,开心网等;3.电商网站:比如阿里巴巴,京东商城,国美在线,汽车之家等。大型门户一般是新闻类信息,可以使用CDN,静态化等方式优化,开心网等交互性比较多,可能会引入更多的NOSQL,分布式缓存,使用高性能的通信框架等。电商网站具备以上两类的特点,比如产品详情可以采用CDN,静态化,交互性高的需要采用NOSQL等技术。因此,我们采用电商网站作为案例,进行分析。\n二、电商网站需求\n客户需求:\n\n建立一个全品类的电子商务网站(B2C),用户可以在线购买商品,可以在线支付,也可以货到付款;\n用户购买时可以在线与客服沟通;\n用户收到商品后,可以给商品打分,评价;\n目前有成熟的进销存系统;需要与网站对接;\n希望能够支持3~5年,业务的发展;\n预计3~5年用户数达到1000万;\n定期举办双11,双12,三八男人节等活动;\n其他的功能参考京东或国美在线等网站。\n\n客户就是客户,不会告诉你具体要什么,只会告诉你他想要什么,我们很多时候要引导,挖掘客户的需求。好在提供了明确的参考网站。因此,下一步要进行大量的分析,结合行业,以及参考网站,给客户提供方案。\n其他的略~\n需求功能矩阵\n需求管理传统的做法,会使用用例图或模块图(需求列表)进行需求的描述。这样做常常忽视掉一个很重要的需求(非功能需求),因此推荐大家使用需求功能矩阵,进行需求描述。\n本电商网站的需求矩阵如下:\n\n\n\n网站需求\n功能需求\n非功能需求\n\n\n\n\n全品类的电子商务网站\n分类管理,商品管理\n方便进行多品类管理(灵活性)网站访问速度要快(高性能) 图片存储的要求(海量小图片)\n\n\n用户可以在线购买商品\n会员管理,购物车,结算功能\n良好购物体验(可用性,性能)\n\n\n在线支付或货到付款\n多种在线支付方式\n支付过程要安全,数据加密(安全性)多种支付接口灵活切换(灵活性,扩展性)\n\n\n可以在线与客服沟通\n在线客服功能\n可靠性:即时通讯\n\n\n商品打分评价\n商品评论\n \n\n\n目前有成熟的进销存系统\n对接进销存\n属于约束条件对接时要考虑数据一致性,鲁棒性\n\n\n支持3~5年,业务的发展\n \n属于约束条件伸缩性,可扩展性\n\n\n3~5年用户数达到1000万\n \n约束条件\n\n\n举办双11,双12,三八男人节等活动\n活动管理,秒杀\n突增访问流量(可伸缩)实时性要求(高性能)\n\n\n参考京东或国美在线\n \n参考条件\n\n\n\n以上是对电商网站需求的简单举例,目的是说明(1)需求分析的时候,要全面,大型分布式系统重点考虑非功能需求;(2)描述一个简单的电商需求场景,使大家对下一步的分析设计有个依据。\n三、网站初级架构\n一般网站,刚开始的做法,是三台服务器,一台部署应用,一台部署数据库,一台部署NFS文件系统。\n这是前几年比较传统的做法,之前见到一个网站10万多会员,垂直服装设计门户,N多图片。使用了一台服务器部署了应用,数据库以及图片存储。出现了很多性能问题。\n如下图:\n\n但是,目前主流的网站架构已经发生了翻天覆地的变化。一般都会采用集群的方式,进行高可用设计。至少是下面这个样子。\n\n(1) 使用集群对应用服务器进行冗余,实现高可用;(负载均衡设备可与应用一块部署)\n(2) 使用数据库主备模式,实现数据备份和高可用;\n四、系统容量预估\n预估步骤:\n\n注册用户数-日均UV量-每日的PV量-每天的并发量;\n峰值预估:平常量的2~3倍;\n根据并发量(并发,事务数),存储容量计算系统容量。\n\n客户需求:3~5年用户数达到1000万注册用户;\n每秒并发数预估:\n\n每天的UV为200万(二八原则);\n每日每天点击浏览30次;\nPV量:200*30=6000万;\n集中访问量:240.2=4.8小时会有6000万0.8=4800万(二八原则);\n每分并发量:4.8*60=288分钟,每分钟访问4800/288=16.7万(约等于);\n每秒并发量:16.7万/60=2780(约等于);\n假设:高峰期为平常值的三倍,则每秒的并发数可以达到8340次。\n1毫秒=1.3次访问;\n\n没好好学数学后悔了吧?!(不知道以上算是否有错误,呵呵~~)\n服务器预估:(以tomcat服务器举例)\n\n按一台web服务器,支持每秒300个并发计算。平常需要10台服务器(约等于);[tomcat默认配置是150]\n高峰期:需要30台服务器;\n\n容量预估:70/90原则\n系统CPU一般维持在70%左右的水平,高峰期达到90%的水平,是不浪费资源,并比较稳定的。内存,IO类似。\n以上预估仅供参考,因为服务器配置,业务逻辑复杂度等都有影响。在此CPU,硬盘,网络等不再进行评估。\n五、网站架构分析\n根据以上预估,有几个问题:\n\n需要部署大量的服务器,高峰期计算,可能要部署30台Web服务器。并且这三十台服务器,只有秒杀,活动时才会用到,存在大量的浪费。\n所有的应用部署在同一台服务器,应用之间耦合严重。需要进行垂直切分和水平切分。\n大量应用存在冗余代码\n服务器SESSION同步耗费大量内存和网络带宽\n数据需要频繁访问数据库,数据库访问压力巨大。\n\n大型网站一般需要做以下架构优化(优化是架构设计时,就要考虑的,一般从架构/代码级别解决,调优主要是简单参数的调整,比如JVM调优;如果调优涉及大量代码改造,就不是调优了,属于重构):\n\n业务拆分\n应用集群部署(分布式部署,集群部署和负载均衡)\n多级缓存\n单点登录(分布式Session)\n数据库集群(读写分离,分库分表)\n服务化\n消息队列\n其他技术\n\n六、网站架构优化\n6.1业务拆分\n根据业务属性进行垂直切分,划分为产品子系统,购物子系统,支付子系统,评论子系统,客服子系统,接口子系统(对接如进销存,短信等外部系统)。\n根据业务子系统进行等级定义,可分为核心系统和非核心系统。核心系统:产品子系统,购物子系统,支付子系统;非核心:评论子系统,客服子系统,接口子系统。\n业务拆分作用:提升为子系统可由专门的团队和部门负责,专业的人做专业的事,解决模块之间耦合以及扩展性问题;每个子系统单独部署,避免集中部署导致一个应用挂了,全部应用不可用的问题。\n等级定义作用:用于流量突发时,对关键应用进行保护,实现优雅降级;保护关键应用不受到影响。\n拆分后的架构图:\n\n参考部署方案2\n\n\n如上图每个应用单独部署\n核心系统和非核心系统组合部署\n\n6.2应用集群部署(分布式,集群,负载均衡)\n分布式部署:将业务拆分后的应用单独部署,应用直接通过RPC进行远程通信;\n集群部署:电商网站的高可用要求,每个应用至少部署两台服务器进行集群部署;\n负载均衡:是高可用系统必须的,一般应用通过负载均衡实现高可用,分布式服务通过内置的负载均衡实现高可用,关系型数据库通过主备方式实现高可用。\n集群部署后架构图:\n\n6.3 多级缓存\n缓存按照存放的位置一般可分为两类本地缓存和分布式缓存。本案例采用二级缓存的方式,进行缓存的设计。一级缓存为本地缓存,二级缓存为分布式缓存。(还有页面缓存,片段缓存等,那是更细粒度的划分)\n一级缓存,缓存数据字典,和常用热点数据等基本不可变/有规则变化的信息,二级缓存缓存需要的所有缓存。当一级缓存过期或不可用时,访问二级缓存的数据。如果二级缓存也没有,则访问数据库。\n缓存的比例,一般1:4,即可考虑使用缓存。(理论上是1:2即可)。\n\n根据业务特性可使用以下缓存过期策略:\n\n缓存自动过期;\n缓存触发过期;\n\n6.4单点登录(分布式Session)\n系统分割为多个子系统,独立部署后,不可避免的会遇到会话管理的问题。一般可采用Session同步,Cookies,分布式Session方式。电商网站一般采用分布式Session实现。\n再进一步可以根据分布式Session,建立完善的单点登录或账户管理系统。\n\n流程说明\n\n用户第一次登录时,将会话信息(用户Id和用户信息),比如以用户Id为Key,写入分布式Session;\n用户再次登录时,获取分布式Session,是否有会话信息,如果没有则调到登录页;\n一般采用Cache中间件实现,建议使用Redis,因此它有持久化功能,方便分布式Session宕机后,可以从持久化存储中加载会话信息;\n存入会话时,可以设置会话保持的时间,比如15分钟,超过后自动超时;\n\n结合Cache中间件,实现的分布式Session,可以很好的模拟Session会话。\n6.5数据库集群(读写分离,分库分表)\n大型网站需要存储海量的数据,为达到海量数据存储,高可用,高性能一般采用冗余的方式进行系统设计。一般有两种方式读写分离和分库分表。\n读写分离:一般解决读比例远大于写比例的场景,可采用一主一备,一主多备或多主多备方式。\n本案例在业务拆分的基础上,结合分库分表和读写分离。如下图:\n\n\n业务拆分后:每个子系统需要单独的库;\n如果单独的库太大,可以根据业务特性,进行再次分库,比如商品分类库,产品库;\n分库后,如果表中有数据量很大的,则进行分表,一般可以按照Id,时间等进行分表;(高级的用法是一致性Hash)\n在分库,分表的基础上,进行读写分离;\n\n相关中间件可参考Cobar(阿里,目前已不在维护),TDDL(阿里),Atlas(奇虎360),MyCat(在Cobar基础上,国内很多牛人,号称国内第一开源项目)。\n分库分表后序列的问题,JOIN,事务的问题,会在分库分表主题分享中,介绍。\n6.6服务化\n将多个子系统公用的功能/模块,进行抽取,作为公用服务使用。比如本案例的会员子系统就可以抽取为公用的服务。\n\n6.7消息队列\n消息队列可以解决子系统/模块之间的耦合,实现异步,高可用,高性能的系统。是分布式系统的标准配置。本案例中,消息队列主要应用在购物,配送环节。\n\n用户下单后,写入消息队列,后直接返回客户端;\n库存子系统:读取消息队列信息,完成减库存;\n配送子系统:读取消息队列信息,进行配送;\n\n\n目前使用较多的MQ有Active MQ,Rabbit MQ,Zero MQ,MS MQ等,需要根据具体的业务场景进行选择。建议可以研究下Rabbit MQ。\n6.8其他架构(技术)\n除了以上介绍的业务拆分,应用集群,多级缓存,单点登录,数据库集群,服务化,消息队列外。还有CDN,反向代理,分布式文件系统,大数据处理等系统。\n此处不详细介绍,大家可以问度娘/Google,有机会的话也可以分享给大家。\n七、架构总结\n\n以上是本次分享的架构总结,其中细节可参考前面分享的内容。其中还有很多可以优化和细化的地方,因为是案例分享,主要针对重要部分做了介绍,工作中需要大家根据具体的业务场景进行架构设计。\n以上是电商网站架构案例的分享一共有三篇,从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。\n"},"服务器相关.html":{"url":"服务器相关.html","title":"服务器/域名/SSL证书","keywords":"","body":"服务器/域名/SSL证书\n"},"实用工具.html":{"url":"实用工具.html","title":"实用工具/API","keywords":"","body":"实用工具/API\n"}}} \ No newline at end of file diff --git a/_book/shell/download-jdk.md b/_book/shell/download-jdk.md new file mode 100644 index 0000000..eb62a1e --- /dev/null +++ b/_book/shell/download-jdk.md @@ -0,0 +1,59 @@ +## Download Oracle Java JRE & JDK using a script + +Oracle has recently disallowed direct downloads of java from their servers (without going through the browser and agreeing to their terms, which you can look at here: Oracle terms). So, if you try: + +```sh +wget "http://download.oracle.com/otn-pub/java/jdk/7u4-b20/jdk-7u4-linux-x64.tar.gz" +``` + +you will receive a page with "In order to download products from Oracle Technology Network you must agree to the OTN license terms" error message. + +This can be rather troublesome for setting up servers with automated scripts. + +Luckily, it seems that a single cookie is all that is needed to bypass this (you still have to agree to the terms to install): + +```sh +Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie +``` + +So, if you want to download jdk7u4 for 64-bit Linux (e.g., Ubuntu) using wget, you can use: + +```sh +wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/7u4-b20/jdk-7u4-linux-x64.tar.gz" +``` + +Just for reference, here are the links to the current (at the time of posting) downloads of JDK and JRE + +**JDK 8u66** + +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-i586.rpm +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-i586.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.rpm +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-linux-x64.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-macosx-x64.dmg +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-solaris-sparcv9.tar.Z +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-solaris-sparcv9.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-solaris-x64.tar.Z +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-solaris-x64.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-windows-i586.exe +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jdk-8u66-windows-x64.exe + +**JRE 8u66** + +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-linux-i586.rpm +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-linux-i586.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-linux-x64.rpm +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-linux-x64.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-macosx-x64.dmg +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-macosx-x64.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-solaris-sparcv9.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-solaris-x64.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-windows-i586-iftw.exe +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-windows-i586.exe +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-windows-i586.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-windows-x64.exe +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-windows-x64.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/server-jre-8u66-linux-x64.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/server-jre-8u66-solaris-sparcv9.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/server-jre-8u66-solaris-x64.tar.gz +- http://download.oracle.com/otn-pub/java/jdk/8u66-b17/server-jre-8u66-windows-x64.tar.gz diff --git a/_book/shell/install_jdk_tomcat.sh b/_book/shell/install_jdk_tomcat.sh new file mode 100644 index 0000000..80a2640 --- /dev/null +++ b/_book/shell/install_jdk_tomcat.sh @@ -0,0 +1,105 @@ +#!/bin/bash +# +############################################### +#author: biezhi +#email:i@biezhi.me +#date: 2015-09-16 +############################################### + +base_dir=$(cd "$(dirname "$0")";pwd) + +JDK_FILE=$(ls | grep jdk-*-linux-*.tar.gz) +TOMCAT_FILE=$(ls | grep apache-tomcat-*.tar.gz) +#下载JDK +download(){ + os_version=`uname -a` + echo $os_version + architecture="64" + echo "$os_version" | grep -q "$architecture" + + if [ $? -eq 0 ] + then + # 不存在即去外网下载jdk文件 + if [ ! -f "$JDK_FILE" ]; then + echo "您正在使用64位操作系统,为您选择64位JDK" + wget http://7xls9k.dl1.z0.glb.clouddn.com/jdk-8u60-linux-x64.tar.gz + fi + else + # 不存在即去外网下载jdk文件 + if [ ! -f "$JDK_FILE" ]; then + echo "您正在使用32位操作系统,为您选择32位JDK" + wget http://7xls9k.dl1.z0.glb.clouddn.com/jdk-8u60-linux-i586.tar.gz + fi + fi + #下载tomcat + if [ ! -f "$TOMCAT_FILE" ]; then + wget http://7xls9k.dl1.z0.glb.clouddn.com/apache-tomcat-8.0.26.tar.gz + fi + JDK_FILE=$(ls | grep jdk-*-linux-*.tar.gz) + TOMCAT_FILE=$(ls | grep apache-tomcat-*.tar.gz) +} + +#安装JDK +install_jdk(){ + JAVA_DIR=/usr/local/java + JDK_DIR="jdk1.8.0_60" + JDK_PATH="$JAVA_DIR"/"$JDK_DIR" + + tar xzf $JDK_FILE + + mkdir -p $JAVA_DIR + mv $JDK_DIR $JAVA_DIR + #配置环境变量 + cp ~/.bashrc ~/.bashrc.backup.java + if [ ! -n "$JAVA_HOME" ]; then + echo "export JAVA_HOME=\"$JDK_PATH\"" >> ~/.bashrc + fi + if [ ! -n "$JRE_HOME" ]; then + echo "export JRE_HOME=\"\$JAVA_HOME/jre\"" >> ~/.bashrc + fi + if [ ! -n "$CLASSPATH" ]; then + echo "export CLASSPATH=.:\$JDK_PATH/lib/dt.jar:\$JDK_PATH/lib/tools.jar" >> ~/.bashrc + fi + echo "export PATH=\$JAVA_HOME/bin:\$JRE_HOME/bin:\$PATH" >> ~/.bashrc + source ~/.bashrc + echo "JDK install success!" +} +#安装tomcat +install_tomcat(){ + TOMCAT_DIR=/usr/local/tomcat8 + + mkdir -p $TOMCAT_DIR + + tar xzf $TOMCAT_FILE + mv apache-tomcat-8.0.26 tomcat8 + mv tomcat8 /usr/local/ + + cp ~/.bashrc ~/.bashrc.backup.tomcat8 + if [ ! -n "$TOMCAT_HOME" ]; then + echo "export TOMCAT_HOME=$TOMCAT_DIR" >> ~/.bashrc + fi + if [ ! -n "$CATALINA_HOME" ]; then + echo "export CATALINA_HOME=$TOMCAT_DIR" >> ~/.bashrc + fi + source ~/.bashrc + echo "Tomact install success!" +} + +main(){ + download + if [ $? != 0 ]; then + echo "tomcat & JDK download failed" + exit 1 + fi + install_jdk + if [ $? != 0 ]; then + echo "JDK install failed" + exit 1 + fi + install_tomcat + if [ $? != 0 ]; then + echo "Tomcat install failed" + exit 1 + fi +} +main diff --git a/_book/shell/tomcat.md b/_book/shell/tomcat.md new file mode 100644 index 0000000..b34d468 --- /dev/null +++ b/_book/shell/tomcat.md @@ -0,0 +1,166 @@ +```sh +#!/bin/bash +# author: Sean Chow (seanlook7@gmail.com) +# +# +# chkconfig: 345 80 15 +# description: use service tomcat xintr + +# Source function library. +. /etc/rc.d/init.d/functions + +export JAVA_HOME= +export JRE_HOME= + +# tomcat名字 +tcName=tomcat-$1 +basedir=/data/program/tomcat/$tcName +tclog=${basedir}/logs/catalina.out + +RETVAL=0 + +start(){ + checkrun + if [ $RETVAL -eq 0 ]; then + echo "###### Tomcat正在启动 ######" + $basedir/bin/startup.sh + touch /var/lock/subsys/${tcNo} + checklog + status + else + echo "###### Tomcat启动成功 ######" + fi +} + +# 停止某一台tomcat,如果是重启则带re参数,表示不查看日志,等待启动时再提示查看 +stop(){ + checkrun + if [ $RETVAL -eq 1 ]; then + echo "###### Tomcat正在关闭 ######" + $basedir/bin/shutdown.sh + if [ "$1" != "re" ]; then + checklog + else + sleep 5 + fi + rm -f /var/lock/subsys/${tcNo} + status + else + echo "###### Tomcat关闭成功 ######" + fi +} + +status(){ + checkrun + if [ $RETVAL -eq 1 ]; then + echo -n "-- Tomcat ( pid " + ps ax --width=1000 |grep ${tcName}|grep "org.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}' + echo -n ") 正在运行" + echo + else + echo "###### Tomcat未运行 ######" + fi + #echo "---------------------------------------------" +} + +# 查看tomcat日志,带vl参数 +log(){ + status + checklog yes +} + +# 如果tomcat正在运行,强行杀死tomcat进程,关闭tomcat +kill(){ + checkrun + if [ $RETVAL -eq 1 ]; then + read -p "###### 确定要杀死 ${tcName} 的进程吗?[no])" answer + case $answer in + Y|y|YES|yes|Yes) + ps ax --width=1000 |grep ${tcName}|grep "org.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}'|xargs kill -9 + status + ;; + *);; + esac + else + echo "###### 退出 [$tcName] ######" + fi +} + + +checkrun(){ + ps ax --width=1000 |grep ${tcName}| grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}' | wc | awk '{print $2}' >/tmp/tomcat_process_count.txt + read line < /tmp/tomcat_process_count.txt + if [ $line -gt 0 ]; then + RETVAL=1 + return $RETVAL + else + RETVAL=0 + return $RETVAL + fi +} + +# 如果是直接查看日志viewlog,则不提示输入[yes],否则就是被stop和start调用,需提示是否查看日志 +checklog(){ + answer=$1 + if [ "$answer" != "yes" ]; then + read -p "###### 查看 日志吗 $2?[yes])" answer + fi + case $answer in + Y|y|YES|yes|Yes|"") + tail -f ${tclog} + ;; + *) + # status + # exit 0 + ;; + esac +} +checkexist(){ + if [ ! -d $basedir ]; then + echo "###### tomcat $basedir 不存在 ######" + exit 0 + fi +} + + +case "$2" in +start) + checkexist + start + exit 0 + ;; +stop) + checkexist + stop + exit 0 + ;; +restart) + checkexist + stop re + start + exit 0 + ;; +status) + checkexist + status + #$basedir/bin/catalina.sh version + exit 0 + ;; +log) + checkexist + log + exit 0 + ;; +kill) + checkexist + status + kill + exit 0 + ;; +*) + echo "###### 使用方法: service $0 [start|stop|restart|status|log|kill]" + echo "###### 举个栗子-> service tomcat xintr start" + esac + +exit 0 +``` diff --git a/_book/shell/uninstall_jdk_tomcat.sh b/_book/shell/uninstall_jdk_tomcat.sh new file mode 100644 index 0000000..d2ce788 --- /dev/null +++ b/_book/shell/uninstall_jdk_tomcat.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# +############################################### +#author: biezhi +#email:i@biezhi.me +#date: 2015-09-16 +############################################### + +#卸载JDK +uninstall_jdk(){ + JAVA_DIR=/usr/local/java/jdk1.8.0_60 + TOMCAT_DIR=/usr/local/tomcat8 + + if [ -d "$JAVA_DIR" ]; then + rm -rf $JAVA_DIR + fi + + if [ -d "$TOMCAT_DIR" ]; then + rm -rf $TOMCAT_DIR + fi + + #环境变量 + if [ -f "~/.bashrc.backup.tomcat8" ]; then + mv ~/.bashrc.backup.tomcat8 ~/.bashrc + fi + + if [ -f "~/.bashrc.backup.java" ]; then + mv ~/.bashrc.backup.java ~/.bashrc + fi + source ~/.bashrc + echo "JDK,Tomcat uninstall success!" + cd +} + +main(){ + uninstall_jdk + if [ $? != 0 ]; then + echo "JDK,Tomcat uninstall failed" + exit 1 + fi +} +main diff --git a/_book/simple-java/classes-and-interfaces/README.md b/_book/simple-java/classes-and-interfaces/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/_book/simple-java/classes-and-interfaces/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/_book/simple-java/collections/README.md b/_book/simple-java/collections/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/_book/simple-java/collections/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/_book/simple-java/common-methods/README.md b/_book/simple-java/common-methods/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/_book/simple-java/common-methods/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/_book/simple-java/compiler-and-jvm/README.md b/_book/simple-java/compiler-and-jvm/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/_book/simple-java/compiler-and-jvm/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/_book/simple-java/concurrency/README.md b/_book/simple-java/concurrency/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/_book/simple-java/concurrency/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/_book/simple-java/exceptions/README.md b/_book/simple-java/exceptions/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/_book/simple-java/exceptions/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/_book/simple-java/generics/README.md b/_book/simple-java/generics/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/_book/simple-java/generics/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/_book/simple-java/io-and-database/README.md b/_book/simple-java/io-and-database/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/_book/simple-java/io-and-database/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/_book/simple-java/reflection-tutorial.md b/_book/simple-java/reflection-tutorial.md new file mode 100644 index 0000000..66c30d2 --- /dev/null +++ b/_book/simple-java/reflection-tutorial.md @@ -0,0 +1 @@ +# reflection-tutorial.md \ No newline at end of file diff --git a/_book/simple-java/string-and-array/README.md b/_book/simple-java/string-and-array/README.md new file mode 100644 index 0000000..7f8386c --- /dev/null +++ b/_book/simple-java/string-and-array/README.md @@ -0,0 +1,10 @@ +# 字符串和数组 + +1. [String的不可变是什么?](diagram-to-show-java-strings-immutability.md) +2. [substring()如何工作?](the-substring-method-in-jdk-6-and-jdk-7.md) +3. [为什么String是不可变的?]() +4. [使用""和构造函数创建字符串]() +5. [String是引用传递吗?]() +6. [length 和 length()]() +7. [如何检查数组是否有效包含一个值?]() +8. []() \ No newline at end of file diff --git a/_book/simple-java/string-and-array/diagram-to-show-java-strings-immutability.md b/_book/simple-java/string-and-array/diagram-to-show-java-strings-immutability.md new file mode 100644 index 0000000..e69de29 diff --git a/_book/simple-java/string-and-array/the-substring-method-in-jdk-6-and-jdk-7.md b/_book/simple-java/string-and-array/the-substring-method-in-jdk-6-and-jdk-7.md new file mode 100644 index 0000000..e69de29 diff --git a/_book/user_guide/google-java8-guide.html b/_book/user_guide/google-java8-guide.html new file mode 100644 index 0000000..d51efad --- /dev/null +++ b/_book/user_guide/google-java8-guide.html @@ -0,0 +1,1512 @@ + + + + + + + Google Java编程风格指南 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                            +
                                                            + + + + + + + + +
                                                            + +
                                                            + +
                                                            + + + + + + + + +
                                                            +
                                                            + +
                                                            +
                                                            + +
                                                            + +

                                                            前言

                                                            +

                                                            这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。

                                                            +

                                                            与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见。

                                                            +

                                                            google-logo-new.png

                                                            + +

                                                            1.1 术语说明

                                                            +

                                                            在本文档中,除非另有说明:

                                                            +
                                                              +
                                                            1. 术语class可表示一个普通类,枚举类,接口或是annotation类型(@interface)
                                                            2. +
                                                            3. 术语comment只用来指代实现的注释(implementation comments),我们不使用“documentation comments”一词,而是用Javadoc。
                                                            4. +
                                                            +

                                                            其他的术语说明会偶尔在后面的文档出现。

                                                            +

                                                            1.2 指南说明

                                                            +

                                                            本文档中的示例代码并不作为规范。也就是说,虽然示例代码是遵循Google编程风格,但并不意味着这是展现这些代码的唯一方式。 示例中的格式选择不应该被强制定为规则。

                                                            +

                                                            源文件基础

                                                            +

                                                            2.1 文件名

                                                            +

                                                            源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java

                                                            +

                                                            2.2 文件编码:UTF-8

                                                            +

                                                            源文件编码格式为UTF-8。

                                                            +

                                                            2.3 特殊字符

                                                            +

                                                            2.3.1 空白字符

                                                            +

                                                            除了行结束符序列,ASCII水平空格字符(0×20,即空格)是源文件中唯一允许出现的空白字符,这意味着:

                                                            +
                                                              +
                                                            1. 所有其它字符串中的空白字符都要进行转义。
                                                            2. +
                                                            3. 制表符不用于缩进。
                                                            4. +
                                                            +

                                                            2.3.2 特殊转义序列

                                                            +

                                                            对于具有特殊转义序列的任何字符(\b, \t, \n, \f, \r, \“, \‘及$$,我们使用它的转义序列,而不是相应的八进制(比如12)或Unicode(比如\u000a)转义。

                                                            +

                                                            2.3.3 非ASCII字符

                                                            +

                                                            对于剩余的非ASCII字符,是使用实际的Unicode字符(比如∞),还是使用等价的Unicode转义符(比如\u221e),取决于哪个能让代码更易于阅读和理解。

                                                            +
                                                            +

                                                            Tip: 在使用Unicode转义符或是一些实际的Unicode字符时,建议做些注释给出解释,这有助于别人阅读和理解。

                                                            +
                                                            +

                                                            例如:

                                                            +
                                                            String unitAbbrev = "μs";                                 | 赞,即使没有注释也非常清晰
                                                            +String unitAbbrev = "\u03bcs"; // "μs"                    | 允许,但没有理由要这样做
                                                            +String unitAbbrev = "\u03bcs"; // Greek letter mu, "s"    | 允许,但这样做显得笨拙还容易出错
                                                            +String unitAbbrev = "\u03bcs";                            | 很糟,读者根本看不出这是什么
                                                            +return '\ufeff' + content; // byte order mark             | Good,对于非打印字符,使用转义,并在必要时写上注释
                                                            +
                                                            +
                                                            +

                                                            Tip: 永远不要由于害怕某些程序可能无法正确处理非ASCII字符而让你的代码可读性变差。当程序无法正确处理非ASCII字符时,它自然无法正确运行, 你就会去fix这些问题的了。(言下之意就是大胆去用非ASCII字符,如果真的有需要的话)

                                                            +
                                                            +

                                                            源文件结构

                                                            +

                                                            一个源文件包含(按顺序地):

                                                            +
                                                              +
                                                            1. 许可证或版权信息(如有需要)
                                                            2. +
                                                            3. package语句
                                                            4. +
                                                            5. import语句
                                                            6. +
                                                            7. 一个顶级类(只有一个)
                                                            8. +
                                                            +

                                                            以上每个部分之间用一个空行隔开。

                                                            +

                                                            3.1 许可证或版权信息

                                                            +

                                                            如果一个文件包含许可证或版权信息,那么它应当被放在文件最前面。

                                                            +

                                                            3.2 package语句

                                                            +

                                                            package语句不换行,列限制(4.4节)并不适用于package语句。(即package语句写在一行里)

                                                            +

                                                            3.3 import语句

                                                            +

                                                            3.3.1 import不要使用通配符

                                                            +

                                                            即,不要出现类似这样的import语句:import java.util.*;

                                                            +

                                                            3.3.2 不要换行

                                                            +

                                                            import语句不换行,列限制(4.4节)并不适用于import语句。(每个import语句独立成行)

                                                            +

                                                            3.3.3 顺序和间距

                                                            +

                                                            import语句可分为以下几组,按照这个顺序,每组由一个空行分隔:

                                                            +
                                                              +
                                                            1. 所有的静态导入独立成组
                                                            2. +
                                                            3. com.google imports(仅当这个源文件是在com.google包下)
                                                            4. +
                                                            5. 第三方的包。每个顶级包为一组,字典序。例如:android, com, junit, org, sun
                                                            6. +
                                                            7. java imports
                                                            8. +
                                                            9. javax imports
                                                            10. +
                                                            +

                                                            组内不空行,按字典序排列。

                                                            +

                                                            3.4 类声明

                                                            +

                                                            3.4.1 只有一个顶级类声明

                                                            +

                                                            每个顶级类都在一个与它同名的源文件中(当然,还包含.java后缀)。

                                                            +

                                                            例外:package-info.java,该文件中可没有package-info类。

                                                            +

                                                            3.4.2 类成员顺序

                                                            +

                                                            类的成员顺序对易学性有很大的影响,但这也不存在唯一的通用法则。不同的类对成员的排序可能是不同的。 最重要的一点,每个类应该以某种逻辑去排序它的成员,维护者应该要能解释这种排序逻辑。比如, 新的方法不能总是习惯性地添加到类的结尾,因为这样就是按时间顺序而非某种逻辑来排序的。

                                                            +
                                                            3.4.2.1 重载:永不分离
                                                            +

                                                            当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数/方法。

                                                            +

                                                            格式

                                                            +

                                                            术语说明:块状结构(block-like construct)指的是一个类,方法或构造函数的主体。需要注意的是,数组初始化中的初始值可被选择性地视为块状结构(4.8.3.1节)。

                                                            +

                                                            4.1 大括号

                                                            +

                                                            4.1.1 使用大括号(即使是可选的)

                                                            +

                                                            大括号与if, else, for, do, while语句一起使用,即使只有一条语句(或是空),也应该把大括号写上。

                                                            +

                                                            4.1.2 非空块:K & R 风格

                                                            +

                                                            对于非空块和块状结构,大括号遵循Kernighan和Ritchie风格 (Egyptian brackets):

                                                            +
                                                              +
                                                            • 左大括号前不换行
                                                            • +
                                                            • 左大括号后换行
                                                            • +
                                                            • 右大括号前换行
                                                            • +
                                                            • 如果右大括号是一个语句、函数体或类的终止,则右大括号后换行; 否则不换行。例如,如果右大括号后面是else或逗号,则不换行。
                                                            • +
                                                            +

                                                            示例:

                                                            +
                                                            return new MyClass() {
                                                            +  @Override public void method() {
                                                            +    if (condition()) {
                                                            +      try {
                                                            +        something();
                                                            +      } catch (ProblemException e) {
                                                            +        recover();
                                                            +      }
                                                            +    }
                                                            +  }
                                                            +};
                                                            +
                                                            +

                                                            4.8.1节给出了enum类的一些例外。

                                                            +

                                                            4.1.3 空块:可以用简洁版本

                                                            +

                                                            一个空的块状结构里什么也不包含,大括号可以简洁地写成{},不需要换行。例外:如果它是一个多块语句的一部分(if/else 或 try/catch/finally) ,即使大括号内没内容,右大括号也要换行。

                                                            +

                                                            示例:

                                                            +

                                                            void doNothing() {}

                                                            +

                                                            4.2 块缩进:2个空格

                                                            +

                                                            每当开始一个新的块,缩进增加2个空格,当块结束时,缩进返回先前的缩进级别。缩进级别适用于代码和注释。(见4.1.2节中的代码示例)

                                                            +

                                                            4.3 一行一个语句

                                                            +

                                                            每个语句后要换行。

                                                            +

                                                            4.4 列限制:80或100

                                                            +

                                                            一个项目可以选择一行80个字符或100个字符的列限制,除了下述例外,任何一行如果超过这个字符数限制,必须自动换行。

                                                            +

                                                            例外:

                                                            +
                                                              +
                                                            1. 不可能满足列限制的行(例如,Javadoc中的一个长URL,或是一个长的JSNI方法参考)。
                                                            2. +
                                                            3. packageimport语句(见3.2节和3.3节)。
                                                            4. +
                                                            5. 注释中那些可能被剪切并粘贴到shell中的命令行。
                                                            6. +
                                                            +

                                                            4.5 自动换行

                                                            +

                                                            术语说明:一般情况下,一行长代码为了避免超出列限制(80或100个字符)而被分为多行,我们称之为自动换行(line-wrapping)。

                                                            +

                                                            我们并没有全面,确定性的准则来决定在每一种情况下如何自动换行。很多时候,对于同一段代码会有好几种有效的自动换行方式。

                                                            +
                                                            +

                                                            Tip: 提取方法或局部变量可以在不换行的情况下解决代码过长的问题(是合理缩短命名长度吧)

                                                            +
                                                            +

                                                            4.5.1 从哪里断开

                                                            +

                                                            自动换行的基本准则是:更倾向于在更高的语法级别处断开。

                                                            +
                                                              +
                                                            1. 如果在非赋值运算符处断开,那么在该符号前断开(比如+,它将位于下一行)。注意:这一点与Google其它语言的编程风格不同(如C++和JavaScript)。 这条规则也适用于以下“类运算符”符号:点分隔符(.),类型界限中的&(<T extends Foo & Bar>),catch块中的管道符号(catch (FooException | BarException e)
                                                            2. +
                                                            3. 如果在赋值运算符处断开,通常的做法是在该符号后断开(比如=,它与前面的内容留在同一行)。这条规则也适用于foreach语句中的分号。
                                                            4. +
                                                            5. 方法名或构造函数名与左括号留在同一行。
                                                            6. +
                                                            7. 逗号(,)与其前面的内容留在同一行。
                                                            8. +
                                                            +

                                                            4.5.2 自动换行时缩进至少+4个空格

                                                            +

                                                            自动换行时,第一行后的每一行至少比第一行多缩进4个空格(注意:制表符不用于缩进。见2.3.1节)。

                                                            +

                                                            当存在连续自动换行时,缩进可能会多缩进不只4个空格(语法元素存在多级时)。一般而言,两个连续行使用相同的缩进当且仅当它们开始于同级语法元素。

                                                            +

                                                            第4.6.3水平对齐一节中指出,不鼓励使用可变数目的空格来对齐前面行的符号。

                                                            +

                                                            4.6 空白

                                                            +

                                                            4.6.1 垂直空白

                                                            +

                                                            以下情况需要使用一个空行:

                                                            +
                                                              +
                                                            1. 类内连续的成员之间:字段,构造函数,方法,嵌套类,静态初始化块,实例初始化块。

                                                              +

                                                              例外:两个连续字段之间的空行是可选的,用于字段的空行主要用来对字段进行逻辑分组。

                                                              +
                                                            2. +
                                                            3. 在函数体内,语句的逻辑分组间使用空行。

                                                              +
                                                            4. +
                                                            5. 类内的第一个成员前或最后一个成员后的空行是可选的(既不鼓励也不反对这样做,视个人喜好而定)。
                                                            6. +
                                                            7. 要满足本文档中其他节的空行要求(比如3.3节:import语句)
                                                            8. +
                                                            +

                                                            多个连续的空行是允许的,但没有必要这样做(我们也不鼓励这样做)。

                                                            +

                                                            4.6.2 水平空白

                                                            +

                                                            除了语言需求和其它规则,并且除了文字,注释和Javadoc用到单个空格,单个ASCII空格也出现在以下几个地方:

                                                            +
                                                              +
                                                            1. 分隔任何保留字与紧随其后的左括号(()(如if, for catch等)。
                                                            2. +
                                                            3. 分隔任何保留字与其前面的右大括号(})(如else, catch)。
                                                            4. +
                                                            5. 在任何左大括号前({),两个例外:

                                                              +
                                                                +
                                                              • @SomeAnnotation({a, b})(不使用空格)。
                                                              • +
                                                              • String[][] x = foo;(大括号间没有空格,见下面的Note)。
                                                              • +
                                                              +
                                                            6. +
                                                            7. 在任何二元或三元运算符的两侧。这也适用于以下“类运算符”符号:

                                                              +
                                                                +
                                                              • 类型界限中的&(&lt;T extends Foo &amp; Bar&gt;)。
                                                              • +
                                                              • catch块中的管道符号(catch (FooException | BarException e)。
                                                              • +
                                                              • foreach语句中的分号。
                                                              • +
                                                              +
                                                            8. +
                                                            9. , : ;及右括号())后

                                                              +
                                                            10. +
                                                            11. 如果在一条语句后做注释,则双斜杠(//)两边都要空格。这里可以允许多个空格,但没有必要。
                                                            12. +
                                                            13. 类型和变量之间:List list。
                                                            14. +
                                                            15. 数组初始化中,大括号内的空格是可选的,即new int[] {5, 6}new int[] { 5, 6 }都是可以的。
                                                              +

                                                              Note:这个规则并不要求或禁止一行的开关或结尾需要额外的空格,只对内部空格做要求。

                                                              +
                                                              +
                                                            16. +
                                                            +

                                                            4.6.3 水平对齐:不做要求

                                                            +

                                                            术语说明:水平对齐指的是通过增加可变数量的空格来使某一行的字符与上一行的相应字符对齐。

                                                            +

                                                            这是允许的(而且在不少地方可以看到这样的代码),但Google编程风格对此不做要求。即使对于已经使用水平对齐的代码,我们也不需要去保持这种风格。

                                                            +

                                                            以下示例先展示未对齐的代码,然后是对齐的代码:

                                                            +
                                                            private int x; // this is fine
                                                            +private Color color; // this too
                                                            +
                                                            +private int   x;      // permitted, but future edits
                                                            +private Color color;  // may leave it unaligned
                                                            +
                                                            +
                                                            +

                                                            Tip:对齐可增加代码可读性,但它为日后的维护带来问题。考虑未来某个时候,我们需要修改一堆对齐的代码中的一行。 这可能导致原本很漂亮的对齐代码变得错位。很可能它会提示你调整周围代码的空白来使这一堆代码重新水平对齐(比如程序员想保持这种水平对齐的风格), 这就会让你做许多的无用功,增加了reviewer的工作并且可能导致更多的合并冲突。

                                                            +
                                                            +

                                                            4.7 用小括号来限定组:推荐

                                                            +

                                                            除非作者和reviewer都认为去掉小括号也不会使代码被误解,或是去掉小括号能让代码更易于阅读,否则我们不应该去掉小括号。 我们没有理由假设读者能记住整个Java运算符优先级表。

                                                            +

                                                            4.8 具体结构

                                                            +

                                                            4.8.1 枚举类

                                                            +

                                                            枚举常量间用逗号隔开,换行可选。

                                                            +

                                                            没有方法和文档的枚举类可写成数组初始化的格式:

                                                            +

                                                            private enum Suit { CLUBS, HEARTS, SPADES, DIAMONDS }

                                                            +

                                                            由于枚举类也是一个类,因此所有适用于其它类的格式规则也适用于枚举类。

                                                            +

                                                            4.8.2 变量声明

                                                            +
                                                            4.8.2.1 每次只声明一个变量
                                                            +

                                                            不要使用组合声明,比如int a, b;

                                                            +
                                                            4.8.2.2 需要时才声明,并尽快进行初始化
                                                            +

                                                            不要在一个代码块的开头把局部变量一次性都声明了(这是c语言的做法),而是在第一次需要使用它时才声明。 局部变量在声明时最好就进行初始化,或者声明后尽快进行初始化。

                                                            +

                                                            4.8.3 数组

                                                            +
                                                            4.8.3.1 数组初始化:可写成块状结构
                                                            +

                                                            数组初始化可以写成块状结构,比如,下面的写法都是OK的:

                                                            +
                                                            new int[] {
                                                            +  0, 1, 2, 3 
                                                            +}
                                                            +
                                                            +new int[] {
                                                            +  0,
                                                            +  1,
                                                            +  2,
                                                            +  3
                                                            +}
                                                            +
                                                            +new int[] {
                                                            +  0, 1,
                                                            +  2, 3
                                                            +}
                                                            +
                                                            +new int[]
                                                            +    {0, 1, 2, 3}
                                                            +
                                                            +
                                                            4.8.3.2 非C风格的数组声明
                                                            +

                                                            中括号是类型的一部分:String[] args, 而非String args[]

                                                            +

                                                            4.8.4 switch语句

                                                            +

                                                            术语说明:switch块的大括号内是一个或多个语句组。每个语句组包含一个或多个switch标签(case FOO:default:),后面跟着一条或多条语句。

                                                            +
                                                            4.8.4.1 缩进
                                                            +

                                                            与其它块状结构一致,switch块中的内容缩进为2个空格。

                                                            +

                                                            每个switch标签后新起一行,再缩进2个空格,写下一条或多条语句。

                                                            +
                                                            4.8.4.2 Fall-through:注释
                                                            +

                                                            在一个switch块内,每个语句组要么通过break, continue, return或抛出异常来终止,要么通过一条注释来说明程序将继续执行到下一个语句组, 任何能表达这个意思的注释都是OK的(典型的是用// fall through)。这个特殊的注释并不需要在最后一个语句组(一般是default)中出现。示例:

                                                            +
                                                            switch (input) {
                                                            +  case 1:
                                                            +  case 2:
                                                            +    prepareOneOrTwo();
                                                            +    // fall through
                                                            +  case 3:
                                                            +    handleOneTwoOrThree();
                                                            +    break;
                                                            +  default:
                                                            +    handleLargeNumber(input);
                                                            +}
                                                            +
                                                            +
                                                            4.8.4.3 default的情况要写出来
                                                            +

                                                            每个switch语句都包含一个default语句组,即使它什么代码也不包含。

                                                            +

                                                            4.8.5 注解(Annotations)

                                                            +

                                                            注解紧跟在文档块后面,应用于类、方法和构造函数,一个注解独占一行。这些换行不属于自动换行(第4.5节,自动换行),因此缩进级别不变。例如:

                                                            +

                                                            @Override +@Nullable +public String getNameIfPresent() { ... }

                                                            +

                                                            例外:单个的注解可以和签名的第一行出现在同一行。例如:

                                                            +

                                                            @Override public int hashCode() { ... }

                                                            +

                                                            应用于字段的注解紧随文档块出现,应用于字段的多个注解允许与字段出现在同一行。例如:

                                                            +

                                                            @Partial @Mock DataLoader loader;

                                                            +

                                                            参数和局部变量注解没有特定规则。

                                                            +

                                                            4.8.6 注释

                                                            +
                                                            4.8.6.1 块注释风格
                                                            +

                                                            块注释与其周围的代码在同一缩进级别。它们可以是/* ... */风格,也可以是// ...风格。对于多行的/* ... */注释,后续行必须从*开始, 并且与前一行的*对齐。以下示例注释都是OK的。

                                                            +
                                                            /*
                                                            + * This is          // And so           /* Or you can
                                                            + * okay.            // is this.          * even do this. */
                                                            + */
                                                            +
                                                            +

                                                            注释不要封闭在由星号或其它字符绘制的框架里。

                                                            +
                                                            +

                                                            Tip:在写多行注释时,如果你希望在必要时能重新换行(即注释像段落风格一样),那么使用/* ... */

                                                            +
                                                            +

                                                            4.8.7 Modifiers

                                                            +

                                                            类和成员的modifiers如果存在,则按Java语言规范中推荐的顺序出现。

                                                            +
                                                            public protected private abstract static final transient volatile synchronized native strictfp
                                                            +
                                                            +

                                                            命名约定

                                                            +

                                                            5.1 对所有标识符都通用的规则

                                                            +

                                                            标识符只能使用ASCII字母和数字,因此每个有效的标识符名称都能匹配正则表达式\w+

                                                            +

                                                            在Google其它编程语言风格中使用的特殊前缀或后缀,如name_, mName, s_namekName,在Java编程风格中都不再使用。

                                                            +

                                                            5.2 标识符类型的规则

                                                            +

                                                            5.2.1 包名

                                                            +

                                                            包名全部小写,连续的单词只是简单地连接起来,不使用下划线。

                                                            +

                                                            5.2.2 类名

                                                            +

                                                            类名都以UpperCamelCase风格编写。

                                                            +

                                                            类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。现在还没有特定的规则或行之有效的约定来命名注解类型。

                                                            +

                                                            测试类的命名以它要测试的类的名称开始,以Test结束。例如,HashTestHashIntegrationTest

                                                            +

                                                            5.2.3 方法名

                                                            +

                                                            方法名都以lowerCamelCase风格编写。

                                                            +

                                                            方法名通常是动词或动词短语。

                                                            +

                                                            下划线可能出现在JUnit测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是:test&lt;MethodUnderTest&gt;_&lt;state&gt;,例如testPop_emptyStack。 并不存在唯一正确的方式来命名测试方法。

                                                            +

                                                            5.2.4 常量名

                                                            +

                                                            常量名命名模式为CONSTANT_CASE,全部字母大写,用下划线分隔单词。那,到底什么算是一个常量?

                                                            +

                                                            每个常量都是一个静态final字段,但不是所有静态final字段都是常量。在决定一个字段是否是一个常量时, 考虑它是否真的感觉像是一个常量。例如,如果任何一个该实例的观测状态是可变的,则它几乎肯定不会是一个常量。 只是永远不打算改变对象一般是不够的,它要真的一直不变才能将它示为常量。

                                                            +
                                                            // Constants
                                                            +static final int NUMBER = 5;
                                                            +static final ImmutableList&lt;String&gt; NAMES = ImmutableList.of("Ed", "Ann");
                                                            +static final Joiner COMMA_JOINER = Joiner.on(',');  // because Joiner is immutable
                                                            +static final SomeMutableType[] EMPTY_ARRAY = {};
                                                            +enum SomeEnum { ENUM_CONSTANT }
                                                            +
                                                            +// Not constants
                                                            +static String nonFinal = "non-final";
                                                            +final String nonStatic = "non-static";
                                                            +static final Set&lt;String&gt; mutableCollection = new HashSet&lt;String&gt;();
                                                            +static final ImmutableSet&lt;SomeMutableType&gt; mutableElements = ImmutableSet.of(mutable);
                                                            +static final Logger logger = Logger.getLogger(MyClass.getName());
                                                            +static final String[] nonEmptyArray = {"these", "can", "change"};
                                                            +
                                                            +

                                                            这些名字通常是名词或名词短语。

                                                            +

                                                            5.2.5 非常量字段名

                                                            +

                                                            非常量字段名以lowerCamelCase风格编写。

                                                            +

                                                            这些名字通常是名词或名词短语。

                                                            +

                                                            5.2.6 参数名

                                                            +

                                                            参数名以lowerCamelCase风格编写。

                                                            +

                                                            参数应该避免用单个字符命名。

                                                            +

                                                            5.2.7 局部变量名

                                                            +

                                                            局部变量名以lowerCamelCase风格编写,比起其它类型的名称,局部变量名可以有更为宽松的缩写。

                                                            +

                                                            虽然缩写更宽松,但还是要避免用单字符进行命名,除了临时变量和循环变量。

                                                            +

                                                            即使局部变量是final和不可改变的,也不应该把它示为常量,自然也不能用常量的规则去命名它。

                                                            +

                                                            5.2.8 类型变量名

                                                            +

                                                            类型变量可用以下两种风格之一进行命名:

                                                            +
                                                              +
                                                            • 单个的大写字母,后面可以跟一个数字(如:E, T, X, T2)。
                                                            • +
                                                            • 以类命名方式(5.2.2节),后面加个大写的T(如:RequestT, FooBarT)。
                                                            • +
                                                            +

                                                            5.3 驼峰式命名法(CamelCase)

                                                            +

                                                            驼峰式命名法分大驼峰式命名法(UpperCamelCase)和小驼峰式命名法(lowerCamelCase)。 有时,我们有不只一种合理的方式将一个英语词组转换成驼峰形式,如缩略语或不寻常的结构(例如”IPv6″或”iOS”)。Google指定了以下的转换方案。

                                                            +

                                                            名字从散文形式(prose form)开始:

                                                            +
                                                              +
                                                            1. 把短语转换为纯ASCII码,并且移除任何单引号。例如:”Müller’s algorithm”将变成”Muellers algorithm”。
                                                            2. +
                                                            3. 把这个结果切分成单词,在空格或其它标点符号(通常是连字符)处分割开。

                                                              +
                                                                +
                                                              • 推荐:如果某个单词已经有了常用的驼峰表示形式,按它的组成将它分割开(如”AdWords”将分割成”ad words”)。 需要注意的是”iOS”并不是一个真正的驼峰表示形式,因此该推荐对它并不适用。
                                                              • +
                                                              +
                                                            4. +
                                                            5. 现在将所有字母都小写(包括缩写),然后将单词的第一个字母大写:

                                                              +
                                                                +
                                                              • 每个单词的第一个字母都大写,来得到大驼峰式命名。
                                                              • +
                                                              • 除了第一个单词,每个单词的第一个字母都大写,来得到小驼峰式命名。
                                                              • +
                                                              +
                                                            6. +
                                                            7. 最后将所有的单词连接起来得到一个标识符。

                                                              +
                                                            8. +
                                                            +

                                                            示例:

                                                            +
                                                            Prose form                Correct               Incorrect
                                                            +------------------------------------------------------------------
                                                            +"XML HTTP request"        XmlHttpRequest        XMLHTTPRequest
                                                            +"new customer ID"         newCustomerId         newCustomerID
                                                            +"inner stopwatch"         innerStopwatch        innerStopWatch
                                                            +"supports IPv6 on iOS?"   supportsIpv6OnIos     supportsIPv6OnIOS
                                                            +"YouTube importer"        YouTubeImporter
                                                            +                          YoutubeImporter*
                                                            +
                                                            +

                                                            加星号处表示可以,但不推荐。

                                                            +
                                                            +

                                                            Note:在英语中,某些带有连字符的单词形式不唯一。例如:”nonempty”和”non-empty”都是正确的,因此方法名checkNonemptycheckNonEmpty也都是正确的。

                                                            +
                                                            +

                                                            编程实践

                                                            +

                                                            6.1 @Override:能用则用

                                                            +

                                                            只要是合法的,就把@Override注解给用上。

                                                            +

                                                            6.2 捕获的异常:不能忽视

                                                            +

                                                            除了下面的例子,对捕获的异常不做响应是极少正确的。(典型的响应方式是打印日志,或者如果它被认为是不可能的,则把它当作一个AssertionError重新抛出。)

                                                            +

                                                            如果它确实是不需要在catch块中做任何响应,需要做注释加以说明(如下面的例子)。

                                                            +
                                                            try {
                                                            +  int i = Integer.parseInt(response);
                                                            +  return handleNumericResponse(i);
                                                            +} catch (NumberFormatException ok) {
                                                            +  // it's not numeric; that's fine, just continue
                                                            +}
                                                            +return handleTextResponse(response);
                                                            +
                                                            +

                                                            例外:在测试中,如果一个捕获的异常被命名为expected,则它可以被不加注释地忽略。下面是一种非常常见的情形,用以确保所测试的方法会抛出一个期望中的异常, 因此在这里就没有必要加注释。

                                                            +
                                                            try {
                                                            +  emptyStack.pop();
                                                            +  fail();
                                                            +} catch (NoSuchElementException expected) {
                                                            +}
                                                            +
                                                            +

                                                            6.3 静态成员:使用类进行调用

                                                            +

                                                            使用类名调用静态的类成员,而不是具体某个对象或表达式。

                                                            +
                                                            Foo aFoo = ...;
                                                            +Foo.aStaticMethod(); // good
                                                            +aFoo.aStaticMethod(); // bad
                                                            +somethingThatYieldsAFoo().aStaticMethod(); // very bad
                                                            +
                                                            +

                                                            6.4 Finalizers: 禁用

                                                            +

                                                            极少会去重载Object.finalize

                                                            +

                                                            Tip:不要使用finalize。如果你非要使用它,请先仔细阅读和理解Effective Java 第7条款:“Avoid Finalizers”,然后不要使用它。

                                                            +

                                                            Javadoc

                                                            +

                                                            7.1 格式

                                                            +

                                                            7.1.1 一般形式

                                                            +

                                                            Javadoc块的基本格式如下所示:

                                                            +
                                                            /**
                                                            + * Multiple lines of Javadoc text are written here,
                                                            + * wrapped normally...
                                                            + */
                                                            +public int method(String p1) { ... }
                                                            +
                                                            +

                                                            或者是以下单行形式:

                                                            +

                                                            /** An especially short bit of Javadoc. */

                                                            +

                                                            基本格式总是OK的。当整个Javadoc块能容纳于一行时(且没有Javadoc标记@XXX),可以使用单行形式。

                                                            +

                                                            7.1.2 段落

                                                            +

                                                            空行(即,只包含最左侧星号的行)会出现在段落之间和Javadoc标记(@XXX)之前(如果有的话)。 除了第一个段落,每个段落第一个单词前都有标签&lt;p&gt;,并且它和第一个单词间没有空格。

                                                            +

                                                            7.1.3 Javadoc标记

                                                            +

                                                            标准的Javadoc标记按以下顺序出现:@param, @return, @throws, @deprecated, 前面这4种标记如果出现,描述都不能为空。 当描述无法在一行中容纳,连续行需要至少再缩进4个空格。

                                                            +

                                                            7.2 摘要片段

                                                            +

                                                            每个类或成员的Javadoc以一个简短的摘要片段开始。这个片段是非常重要的,在某些情况下,它是唯一出现的文本,比如在类和方法索引中。

                                                            +

                                                            这只是一个小片段,可以是一个名词短语或动词短语,但不是一个完整的句子。它不会以A {@codeFoo} is a...This method returns...开头, 它也不会是一个完整的祈使句,如Save the record...。然而,由于开头大写及被加了标点,它看起来就像是个完整的句子。

                                                            +
                                                            +

                                                            Tip:一个常见的错误是把简单的Javadoc写成/** @return the customer ID */,这是不正确的。它应该写成/** Returns the customer ID. */

                                                            +
                                                            +

                                                            7.3 哪里需要使用Javadoc

                                                            +

                                                            至少在每个public类及它的每个public和protected成员处使用Javadoc,以下是一些例外:

                                                            +

                                                            7.3.1 例外:不言自明的方法

                                                            +

                                                            对于简单明显的方法如getFoo,Javadoc是可选的(即,是可以不写的)。这种情况下除了写“Returns the foo”,确实也没有什么值得写了。

                                                            +

                                                            单元测试类中的测试方法可能是不言自明的最常见例子了,我们通常可以从这些方法的描述性命名中知道它是干什么的,因此不需要额外的文档说明。

                                                            +
                                                            +

                                                            Tip:如果有一些相关信息是需要读者了解的,那么以上的例外不应作为忽视这些信息的理由。例如,对于方法名getCanonicalName, 就不应该忽视文档说明,因为读者很可能不知道词语canonical name指的是什么。

                                                            +
                                                            +

                                                            7.3.2 例外:重载

                                                            +

                                                            如果一个方法重载了超类中的方法,那么Javadoc并非必需的。

                                                            +

                                                            7.3.3 可选的Javadoc

                                                            +

                                                            对于包外不可见的类和方法,如有需要,也是要使用Javadoc的。如果一个注释是用来定义一个类,方法,字段的整体目的或行为, 那么这个注释应该写成Javadoc,这样更统一更友好。

                                                            + + +
                                                            + +
                                                            +
                                                            +
                                                            + +

                                                            results matching ""

                                                            +
                                                              + +
                                                              +
                                                              + +

                                                              No results matching ""

                                                              + +
                                                              +
                                                              +
                                                              + +
                                                              +
                                                              + +
                                                              + + + + + + + + + + +
                                                              + + +
                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_book/web/test_tool.html b/_book/web/test_tool.html new file mode 100644 index 0000000..7b8eb24 --- /dev/null +++ b/_book/web/test_tool.html @@ -0,0 +1,1235 @@ + + + + + + + Web性能测试工具 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                              +
                                                              + + + + + + + + +
                                                              + +
                                                              + +
                                                              + + + + + + + + +
                                                              +
                                                              + +
                                                              +
                                                              + +
                                                              + +

                                                              Web服务器性能压力测试工具

                                                              +

                                                              目录

                                                              + +

                                                              http_load

                                                              +

                                                              程序非常小,解压后也不到100K +http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。 +但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。 +还可以测试HTTPS类的网站请求。 +下载地址:http_load-12mar2006.tar.gz

                                                              +
                                                              +

                                                              安装很简单

                                                              +
                                                              +
                                                              tar zxvf http_load-12mar2006.tar.gz
                                                              +cd http_load-12mar2006
                                                              +make && make install
                                                              +
                                                              +
                                                              +

                                                              基本用法:

                                                              +
                                                              +
                                                              http_load  -p 并发访问进程数  -s 访问时间  需要访问的URL文件
                                                              +
                                                              +

                                                              参数其实可以自由组合,参数之间的选择并没有什么限制。 +比如你写成 http_load -parallel 5 -seconds 300 urllist.txt 也是可以的。 +我们把参数给大家简单说明一下。 +-parallel 简写-p :含义是并发的用户进程数。 +-fetches 简写-f :含义是总计的访问次数 +-rate 简写-p :含义是每秒的访问频率 +-seconds 简写-s :含义是总计的访问时间

                                                              +

                                                              准备URL文件:urllist.txt,文件格式是每行一个URL,URL最好超过50-100个测试效果比较好。

                                                              +
                                                              +

                                                              文件格式如下:

                                                              +
                                                              +
                                                              http://www.domain.com/
                                                              +http://www.domain.com/blog/
                                                              +http://www.domain.com/signin/
                                                              +http://www.domain.com/signup/
                                                              +http://www.domain.com/article/1.html
                                                              +http://www.domain.com/article/2.html
                                                              +http://www.domain.com/article/3.html
                                                              +http://www.domain.com/article/4.html
                                                              +http://www.domain.com/article/5.html
                                                              +http://www.domain.com/article/6.html
                                                              +http://www.domain.com/article/7.html
                                                              +
                                                              +
                                                              +

                                                              例如:

                                                              +
                                                              +
                                                              http_load -p 30 -s 60  urllist.txt
                                                              +
                                                              +

                                                              参数了解了,我们来看运行一条命令来看看它的返回结果如下:

                                                              +

                                                              +
                                                              +

                                                              结果分析:

                                                              +
                                                              +
                                                                +
                                                              1. 294 fetches, 30 max parallel, 3.83835e+06 bytes, in 60.0026 seconds +说明在上面的测试中运行了294个请求,最大的并发进程数是30,总计传输的数据是3.83835e+06bytes,运行的时间是60.0026秒
                                                              2. +
                                                              3. 13055.6 mean bytes/connection +说明每一连接平均传输的数据量3.83835e+06/294=13055.6
                                                              4. +
                                                              5. 4.89979 fetches/sec, 63969.7 bytes/sec +说明每秒的响应请求为4.89979,每秒传递的数据为63969.7 bytes/sec
                                                              6. +
                                                              7. msecs/connect: 312.009 mean, 1319.57 max, 209.994 min +说明每连接的平均响应时间是312.009 msecs,最大的响应时间1319.57 msecs,最小的响应时间209.994 msecs
                                                              8. +
                                                              9. msecs/first-response: 1191.01 mean, 10212.4 max, 220.78 min
                                                              10. +
                                                              11. HTTP response codes: + code 200 -- 127 + code 502 -- 166 +说明打开响应页面的类型 +如果403的类型过多,那可能要注意是否系统遇到了瓶颈。
                                                              12. +
                                                              +

                                                              特殊说明:

                                                              +

                                                              测试结果中主要的指标是 fetches/secmsecs/connect 这个选项,即服务器每秒能够响应的查询次数。 +用这个指标来衡量性能。似乎比apache的ab准确率要高一些,也更有说服力一些。 +Qpt-每秒响应用户数和response time,每连接响应用户时间。 +测试的结果主要也是看这两个值。 +当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的cpumen进行分析,才能得出结论。

                                                              +

                                                              webbench

                                                              +

                                                              webbench是Linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力。 +下载地址可以到google搜,我这里给出一个 +下载地址:http://soft.vpser.net/test/webbench/webbench-1.5.tar.gz +这个程序更小,解压后不到50K,呵呵 +安装非常简单

                                                              +
                                                              tar zxvf webbench-1.5.tar.gz
                                                              +cd webbench-1.5
                                                              +make && make install
                                                              +
                                                              +

                                                              会在当前目录生成webbench可执行文件,直接可以使用了 +用法:webbench -c 并发数 -t 运行测试时间 URL

                                                              +
                                                              +

                                                              例如:

                                                              +
                                                              +
                                                              webbench -c 1000 -t 130 http://www.baidu.com
                                                              +
                                                              +

                                                              ab

                                                              +

                                                              ab是apache自带的一款功能强大的测试工具。 +安装了apache一般就自带了。 +用法可以查看它的说明

                                                              +
                                                              ./ab
                                                              +
                                                              +

                                                              +

                                                              参数众多,一般我们用到的是 -n-c

                                                              +

                                                              例如:

                                                              +
                                                              webbench -c 1000 -t 130 http://www.baidu.com/index.php
                                                              +
                                                              +

                                                              这个表示同时处理1000个请求并运行130次index.php文件。

                                                              +

                                                              siege

                                                              +

                                                              一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。 +Siege官方:http://www.joedog.org/ +Siege下载:http://www.joedog.org/pub/siege/siege-latest.tar.gz +Siege解压并安装:

                                                              +
                                                              tar -zxvf siege-latest.tar.gz
                                                              +cd siege-latest/
                                                              +./configure
                                                              +make
                                                              +make install
                                                              +
                                                              +
                                                              +

                                                              Siege使用:

                                                              +
                                                              +
                                                              siege -c 100 -r 10 -f site.url
                                                              +
                                                              +

                                                              -c是并发量,-r是重复次数。 +url文件就是一个文本,每行都是一个url,它会从里面随机访问的。 +site.url内容:

                                                              +
                                                              http://www.qixing318.com/
                                                              +http://www.zendsns.com/
                                                              +http://www.qixing.info/
                                                              +
                                                              +

                                                              测试结果:

                                                              +

                                                              +

                                                              结果说明:

                                                              +
                                                              Transactions: 550 hits //完成550次处理
                                                              +Availability: 55.00 % //55.00 % 成功率
                                                              +Elapsed time: 31.32 secs //总共用时
                                                              +Data transferred: 1.15 MB //共数据传输1.15 MB
                                                              +Response time: 3.04 secs //显示网络连接的速度
                                                              +Transaction rate: 17.56 trans/sec //均每秒完成 17.56 次处理:表示服务器后
                                                              +Throughput: 0.04 MB/sec //平均每秒传送数据
                                                              +Concurrency: 53.44 //实际最高并发数
                                                              +Successful transactions: 433 //成功处理次数
                                                              +Failed transactions: 450 //失败处理次数
                                                              +Longest transaction: 15.50 //每次传输所花最长时间
                                                              +Shortest transaction: 0.42 //每次传输所花最短时间
                                                              +
                                                              + + +
                                                              + +
                                                              +
                                                              +
                                                              + +

                                                              results matching ""

                                                              +
                                                                + +
                                                                +
                                                                + +

                                                                No results matching ""

                                                                + +
                                                                +
                                                                +
                                                                + +
                                                                +
                                                                + +
                                                                + + + + + + + + + + +
                                                                + + +
                                                                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/_book/\345\256\236\347\224\250\345\267\245\345\205\267.html" "b/_book/\345\256\236\347\224\250\345\267\245\345\205\267.html" new file mode 100644 index 0000000..b3c1901 --- /dev/null +++ "b/_book/\345\256\236\347\224\250\345\267\245\345\205\267.html" @@ -0,0 +1,1081 @@ + + + + + + + 实用工具/API · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                +
                                                                + + + + + + + + +
                                                                + +
                                                                + +
                                                                + + + + + + + + +
                                                                +
                                                                + +
                                                                +
                                                                + +
                                                                + +

                                                                实用工具/API

                                                                + + +
                                                                + +
                                                                +
                                                                +
                                                                + +

                                                                results matching ""

                                                                +
                                                                  + +
                                                                  +
                                                                  + +

                                                                  No results matching ""

                                                                  + +
                                                                  +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  + + + + + + +
                                                                  + + +
                                                                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/_book/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227.html" "b/_book/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227.html" new file mode 100644 index 0000000..fbca269 --- /dev/null +++ "b/_book/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227.html" @@ -0,0 +1,1093 @@ + + + + + + + 开发者指南 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                  +
                                                                  + + + + + + + + +
                                                                  + +
                                                                  + +
                                                                  + + + + + + + + +
                                                                  +
                                                                  + +
                                                                  +
                                                                  + +
                                                                  + +

                                                                  开发者指南

                                                                  + + +
                                                                  + +
                                                                  +
                                                                  +
                                                                  + +

                                                                  results matching ""

                                                                  +
                                                                    + +
                                                                    +
                                                                    + +

                                                                    No results matching ""

                                                                    + +
                                                                    +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + +
                                                                    + + + + + + + + + + + + + + +
                                                                    + + +
                                                                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/_book/\345\274\200\346\272\220\347\273\204\344\273\266\345\256\236\347\216\260.html" "b/_book/\345\274\200\346\272\220\347\273\204\344\273\266\345\256\236\347\216\260.html" new file mode 100644 index 0000000..3c8c15a --- /dev/null +++ "b/_book/\345\274\200\346\272\220\347\273\204\344\273\266\345\256\236\347\216\260.html" @@ -0,0 +1,1093 @@ + + + + + + + 开源组件实现 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                    +
                                                                    + + + + + + + + +
                                                                    + +
                                                                    + +
                                                                    + + + + + + + + +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + +
                                                                    + +

                                                                    开源组件实现

                                                                    + + +
                                                                    + +
                                                                    +
                                                                    +
                                                                    + +

                                                                    results matching ""

                                                                    +
                                                                      + +
                                                                      +
                                                                      + +

                                                                      No results matching ""

                                                                      + +
                                                                      +
                                                                      +
                                                                      + +
                                                                      +
                                                                      + +
                                                                      + + + + + + + + + + + + + + +
                                                                      + + +
                                                                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/_book/\346\234\215\345\212\241\345\231\250\347\233\270\345\205\263.html" "b/_book/\346\234\215\345\212\241\345\231\250\347\233\270\345\205\263.html" new file mode 100644 index 0000000..89c65cc --- /dev/null +++ "b/_book/\346\234\215\345\212\241\345\231\250\347\233\270\345\205\263.html" @@ -0,0 +1,1087 @@ + + + + + + + 服务器/域名/SSL证书 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                      +
                                                                      + + + + + + + + +
                                                                      + +
                                                                      + +
                                                                      + + + + + + + + +
                                                                      +
                                                                      + +
                                                                      +
                                                                      + +
                                                                      + +

                                                                      服务器/域名/SSL证书

                                                                      + + +
                                                                      + +
                                                                      +
                                                                      +
                                                                      + +

                                                                      results matching ""

                                                                      +
                                                                        + +
                                                                        +
                                                                        + +

                                                                        No results matching ""

                                                                        + +
                                                                        +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + +
                                                                        + + + + + + + + + + +
                                                                        + + +
                                                                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/_book/\347\273\217\345\205\270\346\226\207\347\253\240.html" "b/_book/\347\273\217\345\205\270\346\226\207\347\253\240.html" new file mode 100644 index 0000000..8a9517a --- /dev/null +++ "b/_book/\347\273\217\345\205\270\346\226\207\347\253\240.html" @@ -0,0 +1,1093 @@ + + + + + + + 经典文章 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                        +
                                                                        + + + + + + + + +
                                                                        + +
                                                                        + +
                                                                        + + + + + + + + +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + +
                                                                        + +

                                                                        经典文章

                                                                        + + +
                                                                        + +
                                                                        +
                                                                        +
                                                                        + +

                                                                        results matching ""

                                                                        +
                                                                          + +
                                                                          +
                                                                          + +

                                                                          No results matching ""

                                                                          + +
                                                                          +
                                                                          +
                                                                          + +
                                                                          +
                                                                          + +
                                                                          + + + + + + + + + + + + + + +
                                                                          + + +
                                                                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/_book/\350\256\276\350\256\241\346\250\241\345\274\217\347\263\273\345\210\227.html" "b/_book/\350\256\276\350\256\241\346\250\241\345\274\217\347\263\273\345\210\227.html" new file mode 100644 index 0000000..db38d73 --- /dev/null +++ "b/_book/\350\256\276\350\256\241\346\250\241\345\274\217\347\263\273\345\210\227.html" @@ -0,0 +1,1093 @@ + + + + + + + 设计模式系列 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                          +
                                                                          + + + + + + + + +
                                                                          + +
                                                                          + +
                                                                          + + + + + + + + +
                                                                          +
                                                                          + +
                                                                          +
                                                                          + +
                                                                          + +

                                                                          设计模式系列

                                                                          + + +
                                                                          + +
                                                                          +
                                                                          +
                                                                          + +

                                                                          results matching ""

                                                                          +
                                                                            + +
                                                                            +
                                                                            + +

                                                                            No results matching ""

                                                                            + +
                                                                            +
                                                                            +
                                                                            + +
                                                                            +
                                                                            + +
                                                                            + + + + + + + + + + + + + + +
                                                                            + + +
                                                                            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/_book/\350\277\220\347\273\264\347\233\270\345\205\263.html" "b/_book/\350\277\220\347\273\264\347\233\270\345\205\263.html" new file mode 100644 index 0000000..acbaebe --- /dev/null +++ "b/_book/\350\277\220\347\273\264\347\233\270\345\205\263.html" @@ -0,0 +1,1093 @@ + + + + + + + 运维相关 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                                                                            +
                                                                            + + + + + + + + +
                                                                            + +
                                                                            + +
                                                                            + + + + + + + + +
                                                                            +
                                                                            + +
                                                                            +
                                                                            + +
                                                                            + +

                                                                            运维相关

                                                                            + + +
                                                                            + +
                                                                            +
                                                                            +
                                                                            + +

                                                                            results matching ""

                                                                            +
                                                                              + +
                                                                              +
                                                                              + +

                                                                              No results matching ""

                                                                              + +
                                                                              +
                                                                              +
                                                                              + +
                                                                              +
                                                                              + +
                                                                              + + + + + + + + + + + + + + +
                                                                              + + +
                                                                              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/articles/request_message.md b/articles/request_message.md index 5bddad6..b490b2f 100644 --- a/articles/request_message.md +++ b/articles/request_message.md @@ -58,7 +58,7 @@ Cookie:skin=blue; jsessionid=5F4771183629C9834F8382E23BE13C4C ``` 注意到后台的那个 `jsessionid=5F4771183629C9834F8382E23BE13C4C` 没有, -服务端是怎么知道客户端的多个请求是属于一个Session的,原来就是通过HTTP请求报文头的Cookie属性的jsessionid的值关联起来的!(当然也可以通过重写URL的方式将会话ID附带在每个URL的后后面哦)。 +服务端是怎么知道客户端的多个请求是属于一个Session的,原来就是通过HTTP请求报文头的Cookie属性的jsessionid的值关联起来的!(当然也可以通过重写URL的方式将会话ID附带在每个URL的后面哦)。 **Referer** @@ -154,7 +154,7 @@ HTTP的响应状态码由5段组成: **304 Not Modified** -告诉客户端,你请求的这个资源至你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊! +告诉客户端,你请求的这个资源自你上次取得后,并没有更改,你直接用你本地的缓存吧,我很忙哦,你能不能少来烦我啊! **404 Not Found** @@ -178,7 +178,7 @@ void setStatus(int sc) 响应输出到客户端后,服务端通过该报文头属告诉客户端如何控制响应内容的缓存。 -下面,的设置让客户端对响应内容缓存3600秒,也即在3600秒内,如果客户再次访问该资源,直接从客户端的缓存中返回内容给客户,不要再从服务端获取(当然,这个功能是靠客户端实现的,服务端只是通过这个属性提示客户端“应该这么做”,做不做,还是决定于客户端,如果是自己宣称支持HTTP的客户端,则就应该这样实现)。 +下面的设置让客户端对响应内容缓存3600秒,也即在3600秒内,如果客户再次访问该资源,直接从客户端的缓存中返回内容给客户,不要再从服务端获取(当然,这个功能是靠客户端实现的,服务端只是通过这个属性提示客户端“应该这么做”,做不做,还是决定于客户端,如果是自己宣称支持HTTP的客户端,则就应该这样实现)。 ```sh Cache-Control: max-age=3600 diff --git a/hexo/writing.md b/hexo/writing.md index 526679f..a341bd0 100644 --- a/hexo/writing.md +++ b/hexo/writing.md @@ -312,9 +312,10 @@ deploy: message: [message] ``` +``` | 选项 | 描述| | ----------- |---------------------------------------------| | repo | github仓库地址 | | branch | 分支名称 | | message |定制提交消息(默认为 `Site updated: {{ now("YYYY-MM-DD HH:mm:ss") }}` )| - +``` diff --git a/ioc/2.spring.md b/ioc/2.spring.md index 2e6ce86..f6dfeac 100644 --- a/ioc/2.spring.md +++ b/ioc/2.spring.md @@ -18,7 +18,7 @@ public static void main(String[] args) { ``` -`Person` 类是这样的: +`Lol` 类是这样的: ```java public class Lol { @@ -93,4 +93,4 @@ public class DuangService { ## links * [目录]() * 上一节: [IOC的概念](<1.concept.md>) - * 下一节: [设计一个IOC](<3.myioc.md>) \ No newline at end of file + * 下一节: [设计一个IOC](<3.myioc.md>) diff --git "a/ioc/IOC\345\256\271\345\231\250\345\256\236\347\216\260\347\257\207" "b/ioc/IOC\345\256\271\345\231\250\345\256\236\347\216\260\347\257\207" new file mode 100644 index 0000000..e85d8a0 --- /dev/null +++ "b/ioc/IOC\345\256\271\345\231\250\345\256\236\347\216\260\347\257\207" @@ -0,0 +1,2 @@ +# IOC容器实现篇 + diff --git "a/ioc/IOC\345\256\271\345\231\250\345\256\236\347\216\260\347\257\207.md" "b/ioc/IOC\345\256\271\345\231\250\345\256\236\347\216\260\347\257\207.md" new file mode 100644 index 0000000..e85d8a0 --- /dev/null +++ "b/ioc/IOC\345\256\271\345\231\250\345\256\236\347\216\260\347\257\207.md" @@ -0,0 +1,2 @@ +# IOC容器实现篇 + diff --git a/learn_server/README.md b/learn_server/README.md new file mode 100644 index 0000000..439f617 --- /dev/null +++ b/learn_server/README.md @@ -0,0 +1,26 @@ + +# 写给java开发的运维笔记 + +对于Java开发人员,掌握基本的运维技能是必须的,如果你还不熟悉Linux环境,可以看[这个](https://github.com/judasn/Linux-Tutorial)教程。如果你觉得这个笔记还不错记得给这个项目一个 [star](https://github.com/biezhi/java-bible/stargazers) 😊 + +## 初级篇 + +1. [在虚拟机里安装centos6](virtual-machine-install-centos6.md) +2. [初始化操作系统](init-os.md) +3. [安装jdk环境](install-jdk.md) +4. [安装tomcat](install-tomcat.md) +5. [安装mysql及配置](install-mysql.md) +6. [安装nginx](install-nginx.md) +7. [安装redis3](install-redis.md) +8. [安装svn服务](install-svn.md) + +## 中级篇 + +1. [配置tomcat为服务](config-tomcat-service.md) +2. [配置tomcat+nginx反向代理](config-nginx-proxy.md) +3. [使用jemeter测试tomcat性能](use-jemeter-test-tomcat.md) +4. [优化tomcat8](optimization-tomcat8.md) +5. [配置多个tomcat](config-more-tomcat.md) +6. [优化nginx配置](optimization-nginx.md) +7. [优化mysql配置](optimization-mysql.md) +8. [nginx+startssl配置https](nginx-startssl-https.md) diff --git a/learn_server/config-nginx-proxy.md b/learn_server/config-nginx-proxy.md new file mode 100644 index 0000000..3888d2f --- /dev/null +++ b/learn_server/config-nginx-proxy.md @@ -0,0 +1,61 @@ +# 配置tomcat+nginx反向代理 + +一般我们服务器对外只暴力22, 443, 80端口,其他的尽量都在内网访问,那么tomcat的8080端口是不应该对外访问的, +nginx作为一个性能卓越的web服务器提供了反向代理的功能,可以做到转发。 + +假设我们现在有一个域名绑定在服务器的80端口上,使用tomcat搭建的程序,但是我又不想修改tomcat端口,该怎么办呢? + +nginx默认监听了80端口,配置文件在 `/usr/local/nginx/conf`文件夹下的 `nginx.conf`。 + +## 取消默认站点 + +```bash +[root@localhost]# cd /usr/local/nginx/conf +[root@localhost conf]# vim nginx.conf +``` + +将 `server` 块注释即可。然后我们在 `conf` 文件夹下创建一个 `vhost` 目录存储虚拟主机配置文件。 + +```bash +[root@localhost conf]# mkdir vhost +``` + +创建一个tomcat的虚拟主机配置文件。 + +```bash +[root@localhost conf]# vim vhost/tomcat8.conf +``` + +加入以下配置 + +```bash +server { + listen 80; + server_name localhost; + + location / { + proxy_pass http://127.0.0.1:8080; + } +} +``` + +在 `nginx.conf` 中将 `vhost` 文件夹下的配置文件引入,只需在 `http` 块中加入一行 `include vhost/*.conf` 保存即可。 + +重启nginx + +```bash +[root@localhost conf]# service nginx restart +Stopping Nginx: [ OK ] +Starting Nginx: [ OK ] +``` + +查看tomcat是否已经启动,如果关闭将它开启,然后访问 [http://192.168.100.128/](http://192.168.100.128/) + +![](https://ooo.0o0.ooo/2016/09/09/57d260a9a1004.png) + +这样tomcat的8080端口就被nginx转发了,我们此时用域名直接绑定到80端口即可! + +## links + * [目录]() + * 上一节: [配置tomcat为服务]() + * 下一节: [使用jemeter测试tomcat性能]() \ No newline at end of file diff --git a/learn_server/config-tomcat-service.md b/learn_server/config-tomcat-service.md new file mode 100644 index 0000000..1dc68ed --- /dev/null +++ b/learn_server/config-tomcat-service.md @@ -0,0 +1,227 @@ +# 配置tomcat为服务 + +```bash +[root@localhost ~]# vim /etc/init.d/tomcat8 +``` + +_tomcat服务脚本_ + +```bash +#!/bin/bash +# +# description: Apache Tomcat init script +# processname: tomcat +# chkconfig: 234 20 80 +# +# +# Copyright (C) 2014 Miglen Evlogiev +# +# This program is free software: you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program. If not, see . +# +# Initially forked from: gist.github.com/valotas/1000094 +# Source: gist.github.com/miglen/5590986 + + +#Location of JAVA_HOME (bin files) +export JAVA_HOME=/usr/local/java/jdk1.8.0_102 +export JRE_HOME=/usr/local/java/jdk1.8.0_102/jre + +#Add Java binary files to PATH +export PATH=$JAVA_HOME/bin:$PATH + +#CATALINA_HOME is the location of the bin files of Tomcat +export CATALINA_HOME=/usr/local/tomcat8 + +#CATALINA_BASE is the location of the configuration files of this instance of Tomcat +export CATALINA_BASE=/usr/local/tomcat8 + + +#TOMCAT_USAGE is the message if this script is called without any options +TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;31mkill\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}" + +#SHUTDOWN_WAIT is wait time in seconds for java proccess to stop +SHUTDOWN_WAIT=20 + +tomcat_pid() { + echo `ps -fe | grep $CATALINA_BASE | grep -v grep | tr -s " "|cut -d" " -f2` +} + +start() { + pid=$(tomcat_pid) + if [ -n "$pid" ] + then + echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m" + else + # Start tomcat + echo -e "\e[00;32mStarting tomcat\e[00m" + #ulimit -n 100000 + #umask 007 + #/bin/su -p -s /bin/sh $TOMCAT_USER + if [ `user_exists $TOMCAT_USER` = "1" ] + then + /bin/su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh + else + echo -e "\e[00;31mTomcat user $TOMCAT_USER does not exists. Starting with $(id)\e[00m" + sh $CATALINA_HOME/bin/startup.sh + fi + status + fi + return 0 +} + +status(){ + pid=$(tomcat_pid) + if [ -n "$pid" ] + then echo -e "\e[00;32mTomcat is running with pid: $pid\e[00m" + else + echo -e "\e[00;31mTomcat is not running\e[00m" + return 3 + fi +} + +terminate() { + echo -e "\e[00;31mTerminating Tomcat\e[00m" + kill -9 $(tomcat_pid) +} + +stop() { + pid=$(tomcat_pid) + if [ -n "$pid" ] + then + echo -e "\e[00;31mStoping Tomcat\e[00m" + #/bin/su -p -s /bin/sh $TOMCAT_USER + sh $CATALINA_HOME/bin/shutdown.sh + + let kwait=$SHUTDOWN_WAIT + count=0; + until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ] + do + echo -n -e "\n\e[00;31mwaiting for processes to exit\e[00m"; + sleep 1 + let count=$count+1; + done + + if [ $count -gt $kwait ]; then + echo -n -e "\n\e[00;31mkilling processes didn't stop after $SHUTDOWN_WAIT seconds\e[00m" + terminate + fi + else + echo -e "\e[00;31mTomcat is not running\e[00m" + fi + + return 0 +} + +user_exists(){ + if id -u $1 >/dev/null 2>&1; then + echo "1" + else + echo "0" + fi +} + +case $1 in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + status) + status + exit $? + ;; + kill) + terminate + ;; + *) + echo -e $TOMCAT_USAGE + ;; +esac +exit 0 +``` + +这个脚本中需要注意你的jdk,jre位置和tomcat所在位置, 修改正确后保存。 + +## 给服务授权 + +```bash +[root@localhost ~]# chmod +x /etc/init.d/tomcat8 +``` + +## 使用服务 + +```bash +[root@localhost ~]# service tomcat8 status +Tomcat is not running + +[root@localhost ~]# service tomcat8 start +Starting tomcat +Using CATALINA_BASE: /usr/local/tomcat8 +Using CATALINA_HOME: /usr/local/tomcat8 +Using CATALINA_TMPDIR: /usr/local/tomcat8/temp +Using JRE_HOME: /usr/local/java/jdk1.8.0_102/jre +Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar +Tomcat started. +Tomcat is running with pid: 15282 + +[root@localhost ~]# service tomcat8 stop +Stoping Tomcat +Using CATALINA_BASE: /usr/local/tomcat8 +Using CATALINA_HOME: /usr/local/tomcat8 +Using CATALINA_TMPDIR: /usr/local/tomcat8/temp +Using JRE_HOME: /usr/local/java/jdk1.8.0_102/jre +Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar + +waiting for processes to exit +``` + +## 设置开机启动 + +```bash +[root@localhost ~]# chkconfig --add tomcat8 +[root@localhost ~]# chkconfig +auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off +blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off +crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off +ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off +iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off +iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off +iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off +lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off +mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off +multipathd 0:off 1:off 2:off 3:off 4:off 5:off 6:off +mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off +netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off +netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off +network 0:off 1:off 2:on 3:on 4:on 5:on 6:off +nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off +postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off +rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off +redis_6379 0:off 1:off 2:on 3:on 4:on 5:on 6:off +restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off +rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off +saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off +sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off +tomcat8 0:off 1:off 2:on 3:on 4:on 5:off 6:off +udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off +``` + +## links + * [目录]() + * 上一节: [安装redis3]() + * 下一节: [配置tomcat+nginx反向代理]() \ No newline at end of file diff --git a/learn_server/init-os.md b/learn_server/init-os.md new file mode 100644 index 0000000..fbfe2e9 --- /dev/null +++ b/learn_server/init-os.md @@ -0,0 +1,122 @@ +# 初始化操作系统 + +Ok,我们安装好了CentOS系统,可以使用SSH工具连接上去进行尝试了,我推荐使用 [XShell] 这款工具,支持中文,还有一些主题使用。 + +现在我们还不知道CentOS的IP是无法连接的,所以先在虚拟机中启动CentOS。 + +![](https://ooo.0o0.ooo/2016/09/09/57d225f429a16.png) + +这里账户输入 `root` 密码是你在安装的时候设置的。 + +## 网络配置 + +这时候我们键入 `ifconfig` 查看ip + +```bash +[root@localhost ~]# ifconfig + +lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + inet6 addr: ::1/128 Scope:Host + UP LOOPBACK RUNNING MTU:65536 Metric:1 + RX packets:0 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) +``` + +发现还没有,我们需要设置一下网卡配置。 + +```bash +[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 +``` + +使用 `vi` 命令编辑第一块网卡的配置 + +```bash +DEVICE=eth0 +HWADDR=00:0C:29:50:58:BE +TYPE=Ethernet +UUID=58f93b51-314d-49bb-9db2-036bf91161fb +ONBOOT=no +NM_CONTROLLED=yes +BOOTPROTO=dhcp +``` + +只需要将 `ONBOOT` 修改为 `yes` ,然后保存。 + +```bash +[root@localhost ~]# service network restart +Shutting down interface eth0: [ OK ] +Shutting down loopback interface: [ OK ] +Bringing up loopback interface: [ OK ] +Bringing up interface eth0: +Determining IP information for eth0... done. + [ OK ] +``` + +这时候我们再查看一下ip + +```bash +[root@localhost ~]# ifconfig +eth0 Link encap:Ethernet HWaddr 00:0C:29:50:58:BE + inet addr:192.168.100.128 Bcast:192.168.100.255 Mask:255.255.255.0 + inet6 addr: fe80::20c:29ff:fe50:58be/64 Scope:Link + UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 + RX packets:302 errors:0 dropped:0 overruns:0 frame:0 + TX packets:189 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:33591 (32.8 KiB) TX bytes:29591 (28.8 KiB) + +lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + inet6 addr: ::1/128 Scope:Host + UP LOOPBACK RUNNING MTU:65536 Metric:1 + RX packets:0 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) +``` + +网卡的配置已经被应用到了,我们CentOS的IP是 `192.168.100.128` 你的可能和我不一样,那这个192.168.100开头的网段是在哪里设置的呢? + +![](https://ooo.0o0.ooo/2016/09/09/57d2293d28fe5.png) + +点击虚拟网络编辑器 + +![](https://ooo.0o0.ooo/2016/09/09/57d229a2311f4.png) + +如果你在执行 `service network restart` 的时候失败可以在这里修改一个网段试试。 + +此时你已经可以使用SSH工具连接到你的CenOS主机了。 + +关于更详细的网络设置大家可以参考这2篇文章: + +- [虚拟机下CentOS 6.5配置IP地址的三种方法](http://www.centoscn.com/CentOS/config/2014/1112/4112.html) +- [Vmware安装Centos NAT方式设置静态IP](http://www.centoscn.com/CentosBug/osbug/2015/1224/6568.html) + + +## yum源设置 + +先安装 `wget` 工具,我们安装的操作系统mini版的,默认没有wget命令,执行以下命令: + +```bash +yum install -y wget +``` + +然后设置yum源,我选择的是网易的源,你也可以设置阿里的或者其他。 + +```bash +cd /etc/yum.repos.d +mv CentOS-Base.repo bak-CentOS-Base.repo +wget http://mirrors.163.com/.help/CentOS6-Base-163.repo +yum clean all +yum makecache +``` + +安全性的配置在这里先不讲解,我们先用 `root`账户来操作。 + +## links + * [目录]() + * 上一节: [在虚拟机里安装centos6]() + * 下一节: [安装jdk环境]() \ No newline at end of file diff --git a/learn_server/install-jdk.md b/learn_server/install-jdk.md new file mode 100644 index 0000000..26e819c --- /dev/null +++ b/learn_server/install-jdk.md @@ -0,0 +1,53 @@ +# 安装jdk环境 + +服务器上如果不需要编码实际应该不安装JDK只安装JRE,我们考虑到以后可能安装其他软件就直接装JDK了。 + +## 下载JDK + +[下载jdk](http://stackoverflow.com/questions/10268583/downloading-java-jdk-on-linux-via-wget-is-shown-license-page-instead) + +上面的连接是stackoverflow有开发者写的不使用cookie下载jdk和jre的命令。 + +```bash +[root@localhost ~]# wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz +``` + +## 解压 + +```bash +[root@localhost ~]# tar -zxvf jdk-8u171-linux-x64.tar.gz +[root@localhost ~]# mkdir /usr/local/java +[root@localhost ~]# mv jdk1.8.0_171/ /usr/local/java/ +``` + +## 配置环境变量 + +```bash +[root@localhost ~]# vim /etc/profile +``` + +在最后一行添加 + +```bash +# java +export JAVA_HOME=/usr/local/java/jdk1.8.0_171 +export JRE_HOME=/usr/local/java/jdk1.8.0_171/jre +export CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar +export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH +``` + +## 生效 + +```bash +[root@localhost ~]# source /etc/profile +[root@localhost ~]# java -version +java version "1.8.0_171" +Java(TM) SE Runtime Environment (build 1.8.0_171-b11) +Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) +``` +这里我安装的是最新版的JDK。 + +## links + * [目录]() + * 上一节: [初始化操作系统]() + * 下一节: [安装tomcat]() diff --git a/learn_server/install-mysql.md b/learn_server/install-mysql.md new file mode 100644 index 0000000..32e422e --- /dev/null +++ b/learn_server/install-mysql.md @@ -0,0 +1,179 @@ +# 安装mysql及配置 + +## 卸载旧版本 + +查找本机是否已经安装mysql + +```bash +[root@localhost ~]# rpm -qa | grep mysql +mysql-libs-5.1.73-7.el6.x86_64 +``` + +卸载 + +```bash +[root@localhost ~]# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64 +``` + +## 安装MySQL + +这里我们使用yum方式进行安装,编译安装比较慢也很繁琐,查看系统里面有没有mysql的repo + +```bash +[root@localhost ~]# yum repolist all | grep mysql +Repository base is listed more than once in the configuration +Repository updates is listed more than once in the configuration +Repository extras is listed more than once in the configuration +Repository centosplus is listed more than once in the configuration +Repository contrib is listed more than once in the configuration +``` + +先执行如下语句,安装相关依赖 + +```bash +[root@localhost ~]# yum install gcc-c++ jemalloc-devel openssl-devel openssl -y +``` + +安装mysql的yum源 + +```bash +[root@localhost ~]# wget http://dev.mysql.com/get/mysql57-community-release-el6-8.noarch.rpm +``` + +然后更新 + +```bash +[root@localhost ~]# sudo rpm -Uvh mysql57-community-release-el6-8.noarch.rpm +warning: mysql57-community-release-el6-8.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY +Preparing... ########################################### [100%] + 1:mysql57-community-relea########################################### [100%] +``` + +更新源,将mysql56的 `enable` 置为1,其余置为0 + +```bash +[root@localhost ~]# vim /etc/yum.repos.d/mysql-community.repo +``` + +修改后是这样 + +```bash +[root@localhost ~]# cat /etc/yum.repos.d/mysql-community.repo +[mysql-connectors-community] +name=MySQL Connectors Community +baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/6/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql + +[mysql-tools-community] +name=MySQL Tools Community +baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/6/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql + +# Enable to use MySQL 5.5 +[mysql55-community] +name=MySQL 5.5 Community Server +baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/6/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql + +# Enable to use MySQL 5.6 +[mysql56-community] +name=MySQL 5.6 Community Server +baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/ +enabled=1 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql + +[mysql57-community] +name=MySQL 5.7 Community Server +baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql + +[mysql-tools-preview] +name=MySQL Tools Preview +baseurl=http://repo.mysql.com/yum/mysql-tools-preview/el/6/$basearch/ +enabled=0 +gpgcheck=1 +gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql +``` + +执行安装 + +```bash +[root@localhost ~]# yum install -y mysql-community-server +``` + +## 启动Mysql + +ok,安装完成了,我们启动mysql + +```bash +[root@localhost ~]# service mysqld start +``` + +## 配置MySQL + +yum安装的时候会把mysql的配置文件存放在 `/etc/my.cnf` 这个位置,在第一次启动的时候可以看到。 + +### 设置mysql root密码 + +有两种方式可以设置mysql的root密码 + +```bash +[root@localhost ~]# /usr/bin/mysqladmin -u root password 'new-password' +``` + +或者通过该命令给root账号设置密码 + +```bash +[root@localhost ~]# mysqladmin -u root password 'new-password' +``` + +此时我们就可以使用刚才设置的密码进行登录了 + +```bash +[root@localhost ~]# mysql -uroot -p +Enter password: +Welcome to the MySQL monitor. Commands end with ; or \g. +Your MySQL connection id is 4 +Server version: 5.6.33 MySQL Community Server (GPL) + +Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. + +Oracle is a registered trademark of Oracle Corporation and/or its +affiliates. Other names may be trademarks of their respective +owners. + +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. + +mysql> +``` + +### 设置开机启动 + +我们可以 通过 `chkconfig mysqld on` 命令来设置mysql开机启动 + +```bash +[root@localhost ~]# chkconfig mysqld on +``` + +看一下 + +```bash +[root@localhost ~]# chkconfig --list | grep mysqld +mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off +``` + +在这一步Mysql的安装就已经完成了,我们先步入下一个软件的安装,在之后的章节中还会继续讲解Mysql的配置。 + +## links + * [目录]() + * 上一节: [安装tomcat]() + * 下一节: [安装nginx]() \ No newline at end of file diff --git a/learn_server/install-nginx.md b/learn_server/install-nginx.md new file mode 100644 index 0000000..9af1f1b --- /dev/null +++ b/learn_server/install-nginx.md @@ -0,0 +1,230 @@ +# 安装nginx + +在安装nginx前,需要确保系统安装了g++、gcc、openssl-devel、pcre-devel和zlib-devel软件。 + +```bash +[root@localhost ~]# yum -y install gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel +``` + +## 下载nginx + +```bash +[root@localhost ~]# wget http://nginx.org/download/nginx-1.10.1.tar.gz +``` + +```bash +[root@localhost ~]# tar -zxvf nginx-1.10.1.tar.gz +[root@localhost ~]# cd nginx-1.10.1 +[root@localhost nginx-1.10.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module +``` + +上面 `--prefix` 配置nginx所在目录,`--with-http_ssl_module`配置nginx支持ssl,配置https会用到。 + +## 编译安装 + +```bash +[root@localhost nginx-1.10.1]# make && make install +``` + +来看看 + +```bash +[root@localhost nginx-1.10.1]# ll /usr/local/nginx/ +total 16 +drwxr-xr-x. 2 root root 4096 Sep 9 22:07 conf +drwxr-xr-x. 2 root root 4096 Sep 9 22:07 html +drwxr-xr-x. 2 root root 4096 Sep 9 22:07 logs +drwxr-xr-x. 2 root root 4096 Sep 9 22:07 sbin +``` + +## 启动nginx + +```bash +[root@localhost nginx-1.10.1]# cd /usr/local/nginx/sbin/ +[root@localhost sbin]# ./nginx +``` + +这样就启动nginx,nginx默认监听在80端口,但是我们不要忘了把80端口对外开放。 + +在 `/etc/sysconfig/iptables` 中添加80端口 + +```bash +-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT +``` + +保存后重启一下防火墙 + +```bash +[root@localhost sbin]# service iptables restart +iptables: Setting chains to policy ACCEPT: filter [ OK ] +iptables: Flushing firewall rules: [ OK ] +iptables: Unloading modules: [ OK ] +iptables: Applying firewall rules: [ OK ] +``` + +访问 [http://192.168.100.128/](http://192.168.100.128/) 你将看到 + +![](https://ooo.0o0.ooo/2016/09/09/57d253381cff7.png) + +## 关闭nginx + +```bash +#查询nginx主进程号 +[root@localhost sbin]# ps -ef | grep nginx +#停止进程 +[root@localhost sbin]# kill -QUIT 主进程号 +#快速停止 +[root@localhost sbin]# kill -TERM 主进程号 +#强制停止 +[root@localhost sbin]# pkill -9 nginx +``` + +## 重启nginx + +```bash +[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload +``` + +## 配置nginx为服务 + +```bash +[root@localhost ~]# vim /etc/init.d/nginx +``` + +将服务脚本粘贴进去 + +_服务脚本_ + +```bash +#!/bin/sh +# chkconfig: 2345 85 15 +# description:Nginx Server + +NGINX_HOME=/usr/local/nginx +NGINX_SBIN=$NGINX_HOME/sbin/nginx +NGINX_CONF=$NGINX_HOME/conf/nginx.conf +NGINX_PID=$NGINX_HOME/logs/nginx.pid + +NGINX_NAME="Nginx" + +. /etc/rc.d/init.d/functions + +if [ ! -f $NGINX_SBIN ] +then + echo "$NGINX_NAME startup: $NGINX_SBIN not exists! " + exit +fi + +start() { + $NGINX_SBIN -c $NGINX_CONF + ret=$? + if [ $ret -eq 0 ]; then + action $"Starting $NGINX_NAME: " /bin/true + else + action $"Starting $NGINX_NAME: " /bin/false + fi +} + +stop() { + kill `cat $NGINX_PID` + ret=$? + if [ $ret -eq 0 ]; then + action $"Stopping $NGINX_NAME: " /bin/true + else + action $"Stopping $NGINX_NAME: " /bin/false + fi +} + +restart() { + stop + start +} + +check() { + $NGINX_SBIN -c $NGINX_CONF -t +} + + +reload() { + kill -HUP `cat $NGINX_PID` && echo "reload success!" +} + +relog() { + kill -USR1 `cat $NGINX_PID` && echo "relog success!" +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + check|chk) + check + ;; + status) + status -p $NGINX_PID + ;; + reload) + reload + ;; + relog) + relog + ;; + *) + echo $"Usage: $0 {start|stop|restart|reload|status|check|relog}" + exit 1 +esac +``` + +给脚本可执行权限 + +```bash +[root@localhost ~]# chmod +x /etc/init.d/nginx +``` + +然后你就可以使用 `service nginx start` 的方式启动nginx了 + +```bash +[root@localhost ~]# service nginx +Usage: /etc/init.d/nginx {start|stop|restart|reload|status|check|relog} +``` + +## 添加到开机项 + +```bash +[root@localhost ~]# chkconfig --add nginx +[root@localhost ~]# chkconfig +auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off +blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off +crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off +ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off +iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off +iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off +iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off +lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off +mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off +multipathd 0:off 1:off 2:off 3:off 4:off 5:off 6:off +mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off +netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off +netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off +network 0:off 1:off 2:on 3:on 4:on 5:on 6:off +nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off +postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off +rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off +restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off +rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off +saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off +sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off +udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off +``` +我们可以看到nginx已经被添加到开机启动了。 + +## links + * [目录]() + * 上一节: [安装mysql及配置]() + * 下一节: [安装redis3]() \ No newline at end of file diff --git a/learn_server/install-redis.md b/learn_server/install-redis.md new file mode 100644 index 0000000..68ee65e --- /dev/null +++ b/learn_server/install-redis.md @@ -0,0 +1,102 @@ +# 安装redis3 + +## 安装依赖软件 + +```bash +yum install -y gcc* +yum install -y tcl +``` + +## 安装redis + +```bash +[root@localhost ~]# wget http://download.redis.io/releases/redis-3.2.3.tar.gz +[root@localhost ~]# tar -zxvf redis-3.2.3.tar.gz +[root@localhost ~]# cd redis-3.2.3 +[root@localhost redis-3.2.3]# make +[root@localhost redis-3.2.3]# make test +[root@localhost redis-3.2.3]# make install +[root@localhost redis-3.2.3]# cd utils +[root@localhost redis-3.2.3]# chmod +x install_server.sh +[root@localhost redis-3.2.3]# ./install_server.sh +``` + +在install的时候提示选项,全部选择默认即可,你看到如下画面表示安装成功 + +```bash +Please select the redis port for this instance: [6379] +Selecting default: 6379 +Please select the redis config file name [/etc/redis/6379.conf] +Selected default - /etc/redis/6379.conf +Please select the redis log file name [/var/log/redis_6379.log] +Selected default - /var/log/redis_6379.log +Please select the data directory for this instance [/var/lib/redis/6379] +Selected default - /var/lib/redis/6379 +Please select the redis executable path [/usr/local/bin/redis-server] +Selected config: +Port : 6379 +Config file : /etc/redis/6379.conf +Log file : /var/log/redis_6379.log +Data dir : /var/lib/redis/6379 +Executable : /usr/local/bin/redis-server +Cli Executable : /usr/local/bin/redis-cli +Is this ok? Then press ENTER to go on or Ctrl-C to abort. +Copied /tmp/6379.conf => /etc/init.d/redis_6379 +Installing service... +Successfully added to chkconfig! +Successfully added to runlevels 345! +Starting Redis server... +Installation successful! +``` + +## 测试一下 + +```bash +[root@localhost ~]# redis-cli +127.0.0.1:6379> set name jack +OK +127.0.0.1:6379> get name +"jack" +``` + +## 查看redis状态 + +```bash +[root@localhost ~]# service redis_6379 status +Redis is running (14927) +``` + +## 启动/关闭redis + +```bash +[root@localhost ~]# service redis_6379 stop +Stopping ... +Waiting for Redis to shutdown ... +Redis stopped +[root@localhost ~]# service redis_6379 start +Starting Redis server... +``` + +## 设置redis认证密码 + +```bash +[root@localhost ~]# vim /etc/redis/6379.conf +``` + +找到 `# requirepass foobared` 将 `#` 去掉,设置一个密码。 + +然后重启redis + +```bash +[root@localhost ~]# service redis_6379 restart +Stopping ... +Redis stopped +Starting Redis server... +``` + +wow,你已经完成初级篇的所有任务了,接下里我们会玩点有趣的 :) + +## links + * [目录]() + * 上一节: [安装nginx]() + * 下一节: [配置tomcat为服务]() \ No newline at end of file diff --git a/learn_server/install-svn.md b/learn_server/install-svn.md new file mode 100644 index 0000000..26d01e9 --- /dev/null +++ b/learn_server/install-svn.md @@ -0,0 +1,174 @@ +# 安装svn服务 + +Subversion是一个自由,开源的版本控制系统。Subversion将文件存放在中心版本库里。这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节。Subversion是Apache基金会下的一个项目,官网 [https://subversion.apache.org](https://subversion.apache.org) + +## 安装依赖 + +```bash +[root@localhost ~]# yum install sqlite sqlite-devel apr-util apr-util-devel -y +``` + +## 安装subversion + +```bash +[root@localhost ~]# wget http://mirrors.cnnic.cn/apache/subversion/subversion-1.8.16.tar.gz +[root@localhost ~]# tar -zxvf subversion-1.8.16.tar.gz +[root@localhost ~]# cd subversion-1.8.16 +[root@localhost subversion-1.8.16]# ./configure --prefix=/usr/local/subversion +[root@localhost subversion-1.8.16]# make && make install +``` + +## 配置环境 + +```bash +[root@localhost ~]# vim /etc/profile +``` + +加入 `PATH=$PATH:/usr/local/subversion/bin` + +## 查看版本 + +```bash +[root@localhost ~]# svn --version +svn, version 1.8.16 (r1740329) + compiled Sep 26 2016, 06:42:53 on x86_64-unknown-linux-gnu + +Copyright (C) 2016 The Apache Software Foundation. +This software consists of contributions made by many people; +see the NOTICE file for more information. +Subversion is open source software, see http://subversion.apache.org/ + +The following repository access (RA) modules are available: + +* ra_svn : Module for accessing a repository using the svn network protocol. + - with Cyrus SASL authentication + - handles 'svn' scheme +* ra_local : Module for accessing a repository on local disk. + - handles 'file' scheme +``` + +## 开始配置 + +### 建立仓库目录 + +```bash +[root@localhost ~]# mkdir -p /data/svn/repos +``` + +### 创建版本 + +```bash +[root@localhost ~]# svnadmin create /data/svn/repos/ +``` + +### 修改配置 + +```bash +[root@localhost ~]# vim /data/svn/repos/conf/svnserve.conf +``` + +```bash +[general] +anon-access = none +auth-access = write +password-db = passwd #用户密码文件 +authz-db = authz #授权登录文件 +realm = repos +``` + +修改`/data/svn/repos/conf/passwd`文件,添加用户及密码: + +```bash +[root@localhost ~]# vim /data/svn/repos/conf/passwd + +[users] +username=password #用户名=密码   一行一个 +``` + +修改`/data/svn/repos/conf/authz`文件,控制用户权限 + +```bash +[root@localhost ~]# vim /data/svn/repos/conf/authz +``` + +> 注意: + +* 权限配置文件中出现的用户名必须已在用户配置文件中定义。 +* 对权限配置文件的修改立即生效,不必重启svn。 + +用户组格式: + +```bash +[groups] += , +``` + +其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。 +版本库目录格式: + +```bash +[<版本库>:/项目/目录] +@<用户组名> = <权限> +<用户名> = <权限> +``` + +其中,方框号内部分可以有多种写法: + +- [/],表示根目录及以下,根目录是svnserve启动时指定的,我们指定为/home/svndata,[/]就是表示对全部版本库设置权限。 +- [repos:/] 表示对版本库repos设置权限; +- [repos:/abc] 表示对版本库repos中的abc项目设置权限; +- [repos:/abc/aaa] 表示对版本库repos中的abc项目的aaa目录设置权限; +- +权限主体可以是`用户组`、`用户`或`*`,用户组在前面加`@`,`*`表示全部用户。 +权限可以是`w`、`r`、`wr`和空,空表示没有任何权限。 + +## 启动SVN + +```bash +[root@localhost ~]# svnserve -d --listen-port 10901 -r /data/svn +``` + +- -d :表示以daemon方式(后台运行)运行; +- --listen-port 10901 :表示使用10901端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限; +- -r /data/svn :指定根目录是/data/svn。 + +## 将svn作为服务 + +```bash +#!/bin/bash +# build this file in /etc/init.d/svn +# chmod 755 /etc/init.d/svn +# centos下可以用如下命令管理svn: service svn start(restart/stop) +SVN_HOME=/home/svn +if [ ! -f "/usr/local/subversion/bin/svnserve" ] +then + echo "svnserver startup: cannot start" + exit +fi +case "$1" in + start) + echo "Starting svnserve..." + /usr/local/subversion/bin/svnserve -d --listen-port 10901 -r $SVN_HOME + echo "Finished!" + ;; + stop) + echo "Stoping svnserve..." + killall svnserve + echo "Finished!" + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "Usage: svn { start | stop | restart } " + exit 1 +esac +``` + +wow,你已经完成初级篇的所有任务了,接下里我们会玩点有趣的 :) + +## links + * [目录]() + * 上一节: [安装nginx]() + * 下一节: [配置tomcat为服务]() diff --git a/learn_server/install-tomcat.md b/learn_server/install-tomcat.md new file mode 100644 index 0000000..aa693c3 --- /dev/null +++ b/learn_server/install-tomcat.md @@ -0,0 +1,97 @@ +# 安装tomcat + +上一章节我们安装了JDK的环境,Tomcat运行的前提是要有JDK环境。 + +## 下载Tomcat + +```bash +[root@localhost ~]# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz +[root@localhost ~]# tar -zxvf apache-tomcat-8.5.5.tar.gz +[root@localhost ~]# mv apache-tomcat-8.5.5 /usr/local/tomcat8 +``` + +## 启动tomcat + +```bash +[root@localhost ~]# cd /usr/local/tomcat8/bin/ +[root@localhost bin]# ./startup.sh +Using CATALINA_BASE: /usr/local/tomcat8 +Using CATALINA_HOME: /usr/local/tomcat8 +Using CATALINA_TMPDIR: /usr/local/tomcat8/temp +Using JRE_HOME: /usr/local/java/jdk1.8.0_102/jre +Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar +Tomcat started. +``` + +现在打开 [http://192.168.100.128:8080](http://192.168.100.128:8080) 应该就可以看到Tomcat的汤姆猫页面。 +而事实是你看到这个: + +![](https://ooo.0o0.ooo/2016/09/09/57d23ea8c353e.png) + +哦草。。。为什么,机智的同学已经想到了,防火墙啊。对我们没有对防火墙进行任何配置,实际上8080端口是不对外开放的, +那么如何解决呢? + +- 关闭防火墙 +- 开放8080端口 + +## 配置防火墙 + +在CentOS上关闭防火墙是非常简单的 + +```bash +[root@localhost bin]# service iptables stop +iptables: Setting chains to policy ACCEPT: filter [ OK ] +iptables: Flushing firewall rules: [ OK ] +iptables: Unloading modules: [ OK ] +``` + +这时候你再访问 [http://192.168.100.128:8080](http://192.168.100.128:8080) 就可以看到 + +![](https://ooo.0o0.ooo/2016/09/09/57d23f752bfce.png) + +当然这种方式是简单粗暴的,我们在真实服务器上不可能这么做,怎么做呢? + +```bash +[root@localhost bin]# vim /etc/sysconfig/iptables +``` + +我们看到 `iptables` 的默认配置是这样的: + +```bash +# Firewall configuration written by system-config-firewall +# Manual customization of this file is not recommended. +*filter +:INPUT ACCEPT [0:0] +:FORWARD ACCEPT [0:0] +:OUTPUT ACCEPT [0:0] +-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +-A INPUT -p icmp -j ACCEPT +-A INPUT -i lo -j ACCEPT +-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT +-A INPUT -j REJECT --reject-with icmp-host-prohibited +-A FORWARD -j REJECT --reject-with icmp-host-prohibited +COMMIT +``` + +只需要添加一行和 `22` 端口一样的配置: + +```bash +-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT +``` + +这样既把8080的TCP端口对外开放了,然后重启防火墙 + +```bash +[root@localhost bin]# service iptables restart +iptables: Setting chains to policy ACCEPT: filter [ OK ] +iptables: Flushing firewall rules: [ OK ] +iptables: Unloading modules: [ OK ] +iptables: Applying firewall rules: [ OK ] +``` + +可以达到同样的效果。 + +## links + * [目录]() + * 上一节: [安装jdk环境]() + * 下一节: [安装mysql及配置]() \ No newline at end of file diff --git a/learn_server/optimization-nginx.md b/learn_server/optimization-nginx.md new file mode 100644 index 0000000..b08a00f --- /dev/null +++ b/learn_server/optimization-nginx.md @@ -0,0 +1 @@ +# 优化nginx配置 \ No newline at end of file diff --git a/learn_server/optimization-tomcat8.md b/learn_server/optimization-tomcat8.md new file mode 100644 index 0000000..0816a23 --- /dev/null +++ b/learn_server/optimization-tomcat8.md @@ -0,0 +1,156 @@ +# 优化tomcat8 + +我们优化tomcat的目的是提高并发性,即在多线程环境下能够快速响应,提高吞吐量。 + +首先在tomcat的bin目录下新建一个名为 `setenv.sh` 的文件,tomcat启动时会自动加载该文件。 + +```bash +[root@localhost bin]# vim setenv.sh +``` + +加入tomcat基础配置 + +```bash +#!/usr/bin + +export CATALINA_HOME=/usr/local/tomcat8 +export CATALINA_BASE=/usr/local/tomcat8 +``` + +## JAVA_OPTS + +加入如下配置,我们服务器的内存是1G。这里我设置最大占用768 + +```bash +export JAVA_OPTS="$JAVA_OPTS\ + -server\ + -Xms768m\ + -Xmx768m\ + -Xss512k\ + -Djava.awt.headless=true\ + -Dfile.encoding=utf-8\ + -Djava.net.preferIPv4Stack=true\ + -Djava.security.egd=file:/dev/./urandom" +``` + +- -server:表示这是应用于服务器的配置,JVM 内部会有特殊处理的 +- -Xms768m:设置JVM最大可用内存为768MB +- -Xmx768m:设置JVM最小内存为768MB。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 +- -Dfile.encoding:默认文件编码 +- -Djava.net.preferIPv4Stack:使用IPV4 +- -Djava.security.egd:[详细解释](http://fengbin2005.iteye.com/blog/2313845) + +## 优化`server.xml` + +```xml + +``` + +**maxThreads 连接数限制** + +maxThreads 是 Tomcat 所能接受最大连接数。一般设置不要超过8000以上,如果你的网站访问量非常大可能使用运行多个Tomcat实例的方法。 + +## 安装apr + +安装依赖 + +```bash +[root@localhost ~]# yum install -y openssl-devel +``` + +下载apr相关包 + +```bash +[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.gz +[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.gz +[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-iconv-1.2.1.tar.gz + +# 安装apr +[root@localhost ~]# tar -zxvf apr-1.5.2.tar.gz + +[root@localhost ~]# cd apr-1.5.2 +[root@localhost apr-1.5.2]# ./configure && make && make install + +# 安装apr-util +[root@localhost ~]# tar -zxvf apr-util-1.5.4.tar.gz +[root@localhost ~]# cd apr-util-1.5.4 +[root@localhost apr-util-1.5.4]# ./configure --with-apr=/usr/local/apr && make && make install + +# 安装apr-iconv +[root@localhost ~]# cd apr-iconv-1.2.1 +[root@localhost apr-iconv-1.2.1]# ./configure --with-apr=/usr/local/apr && make && make install +``` + +配置tomcat + +```bash +[root@localhost apr-iconv-1.2.1]# cd /usr/local/tomcat8/bin/ +[root@localhost bin]# tar -zxf tomcat-native.tar.gz +[root@localhost bin]# cd tomcat-native-1.2.8-src/native/ +[root@localhost native]# ./configure --with-apr=/usr/local/apr && make && make install +``` + +这是提示我 + +```bash +configure: error: Your version of OpenSSL is not compatible with this version of tcnative +``` + +由于centos 当前的yum 库只有1.0.1 的OpenSSL,所以我们需要手工安装1.0.2 + +```bash +[root@localhost ~]# wget https://www.openssl.org/source/openssl-1.0.2-latest.tar.gz +[root@localhost ~]# tar -zxf openssl-1.0.2-latest.tar.gz +[root@localhost ~]# cd openssl-1.0.2h +[root@localhost openssl-1.0.2h]# ./config --prefix=/usr/local/openssl -fPIC +``` + +> 注意这里需要加入 -fPIC参数,否则后面在安装tomcat native 组件会出错 +> 注意:不要按照提示去运行 make depend + +```bash +[root@localhost openssl-1.0.2h]# make +[root@localhost openssl-1.0.2h]# make install +[root@localhost openssl-1.0.2h]# mv /usr/bin/openssl ~ +[root@localhost openssl-1.0.2h]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl +[root@localhost openssl-1.0.2h]# openssl version +OpenSSL 1.0.2h 3 May 2016 +``` + +重新安装 tomcat-native组件 + +```bash +[root@localhost openssl-1.0.2h]# cd /usr/local/tomcat8/bin/tomcat-native-1.2.8-src/native/ +[root@localhost native]# ./configure --with-apr=/usr/local/apr --with-ssl=/usr/local/openssl +[root@localhost native]# make && make install +``` + +在 `setenv.sh` 文件中添加 + +```bash +LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib +export LD_LIBRARY_PATH +``` + +在 `server.xml` 中加 + +```xml + +``` + +启动tomcat,打开控制台日志可以看到如图所示的日志 + +![](https://ooo.0o0.ooo/2016/09/09/57d281093d907.png) + +## 性能测试 \ No newline at end of file diff --git a/learn_server/use-jemeter-test-tomcat.md b/learn_server/use-jemeter-test-tomcat.md new file mode 100644 index 0000000..31dc705 --- /dev/null +++ b/learn_server/use-jemeter-test-tomcat.md @@ -0,0 +1,74 @@ +# 使用jemeter测试tomcat性能 + +JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 + +下载地址:[http://jmeter.apache.org/download_jmeter.cgi](http://jmeter.apache.org/download_jmeter.cgi) + +安装启动即可。 + +![](https://ooo.0o0.ooo/2016/09/09/57d26181a3bbc.png) + +## 服务器环境 + +- CPU:Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz +- 内存:1G +- 操作系统:CentOS6.8_x64 +- JDK:1.8.0_102 +- Tomcat:8.5.5 + +下面所有测试都是基于1000个请求做的,且都是访问Tomcat默认的ROOT首页 + +## 创建测试计划 + +![](https://ooo.0o0.ooo/2016/09/09/57d262594f2ec.png) +![](https://ooo.0o0.ooo/2016/09/09/57d262640c284.png) +![](https://ooo.0o0.ooo/2016/09/09/57d2626eddf57.png) + +配置参数,这里我们进行多次测试. + +![](https://ooo.0o0.ooo/2016/09/09/57d262af81eaf.png) +![](https://ooo.0o0.ooo/2016/09/09/57d262b9a7fe3.png) + +| 并发用户数 | 吞吐量/每秒 | 请求等待时间/毫秒 | 错误请求数/百分比 | +| :----: | :----: | :----: | :----: | +| 10 | 1999 | 8 | 0.00 | +| 20 | 2667 | 11 | 0.00 | +| 30 | 2746 | 13 | 0.00 | +| 40 | 2730 | 16 | 0.00 | +| 50 | 2682 | 20 | 0.00 | +| 60 | 2756 | 23 | 0.00 | +| 70 | 2764 | 27 | 0.00 | +| 80 | 2714 | 32 | 0.00 | +| 90 | 2131 | 35 | 0.00 | +| 100 | 2739 | 38 | 0.00 | +| 200 | 1404 | 43 | 0.34% | +| 300 | 1066 | 50 | 0.77% | +| 400 | 995 | 52 | 1.23% | +| 500 | 1086 | 46 | 1.42% | +| 1000 | 1163 | 59 | 2.83% | + +![](https://ooo.0o0.ooo/2016/09/09/57d276759cccc.png) + +![](https://ooo.0o0.ooo/2016/09/09/57d2768276105.png) + +从上面的测试结果来看,在90-100个并发的时候出现不稳定,其他都比较平缓,请求时间一直在上涨。CPU负载均在60%左右。 + +在聚合报告中,会显示一行数据,共有10个字段,含义分别如下。 + +- Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值 +- #Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100 +- Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间 +- Median:中位数,也就是 50% 用户的响应时间 +- 90% Line:90% 用户的响应时间 +- Min:最小响应时间 +- Max:最大响应时间 +- Error%:本次测试中出现错误的请求的数量/请求的总数 +- Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second) +- KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec + +在下一章节我们介绍对tomcat8的优化。 + +## links + * [目录]() + * 上一节: [配置tomcat+nginx反向代理]() + * 下一节: [优化tomcat8]() \ No newline at end of file diff --git a/learn_server/virtual-machine-install-centos6.md b/learn_server/virtual-machine-install-centos6.md new file mode 100644 index 0000000..9fc444b --- /dev/null +++ b/learn_server/virtual-machine-install-centos6.md @@ -0,0 +1,112 @@ +# 在虚拟机里安装centos6 + +## 基础环境 + + - 操作系统:Win7操作系统 + - 虚拟机:VMware® Workstation 12 Pro + - Linux系统:CentOS 64位 + +接下里我们创建一个Linux虚拟机。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21ba70219e.png) + +这里选择自定义配置 + +![](https://ooo.0o0.ooo/2016/09/09/57d21bcabe68c.png) + +我们选择了Workstation 8x, 为了兼容低版本的vmvware + +![](https://ooo.0o0.ooo/2016/09/09/57d21bd500c46.png) + +稍后安装操作系统 + +![](https://ooo.0o0.ooo/2016/09/09/57d21bdd67f7f.png) + +选择Linux -> centos64位 + +![](https://ooo.0o0.ooo/2016/09/09/57d21be618ba3.png) + +保存虚拟机到本地文件夹 + +![](https://ooo.0o0.ooo/2016/09/09/57d21bf02cb1f.png) + +选择处理器数量和核心数,这里我选择默认的,根据你的机器情况可适当调整。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21bf903216.png) + +设置Centos内存,我设置1G + +![](https://ooo.0o0.ooo/2016/09/09/57d21c048caba.png) + +如果你在局域网环境并且希望其他人可以访问到你的centos,可以选择桥接模式, +这里我只有宿主机访问虚拟机,就设置了NAT模式,桥接的时候会和宿主机处于同一IP段。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21c5b16bc8.png) +![](https://ooo.0o0.ooo/2016/09/09/57d21c63c49fa.png) + +这里选择默认即可。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21c70a4f1e.png) +![](https://ooo.0o0.ooo/2016/09/09/57d21c7a64405.png) + +磁盘大小设置20G,用到更多可以累加上去,然后将虚拟磁盘存储为单文件,防止磁盘碎片。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21ccc2db15.png) + +点击完成。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21cd385b5a.png) + +选择你的IOS镜像文件,如果没有可以在 [这里](http://isoredirect.centos.org/centos/6/isos/x86_64/) 下载 + +![](https://ooo.0o0.ooo/2016/09/09/57d21cd94a75e.png) + +![](https://ooo.0o0.ooo/2016/09/09/57d21ce210877.png) + +安装操作系统 + +![](https://ooo.0o0.ooo/2016/09/09/57d21cf139606.png) + +这里要检查硬件,可以直接跳过。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21cf8bbfb7.png) + +选择语言环境,我选择英文,避免在以后的操作中遇到未知的错误。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21de293453.png) +![](https://ooo.0o0.ooo/2016/09/09/57d21de9279bf.png) + +确定将配置写入到磁盘 + +![](https://ooo.0o0.ooo/2016/09/09/57d21def353cf.png) + +这里就默认把,暂时用不到 + +![](https://ooo.0o0.ooo/2016/09/09/57d21dfa1624b.png) + +选择时区,我们选择Asia/shanghai + +![](https://ooo.0o0.ooo/2016/09/09/57d21dffbd0ac.png) + +设置你的ROOT用户密码,请牢记以后会经常用到。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21e06b65c4.png) + +使用全部空间,就不分区了。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21e0c94266.png) + +将修改写入到磁盘。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21e21e909f.png) + +等待CentOS为你安装基础软件环境。 + +![](https://ooo.0o0.ooo/2016/09/09/57d21e687d0de.png) + +看到这个界面你的CentOS就安装完成了,点击REBOOT即重启机器。 +可以进行下一关了,上车! + +## links + * [目录]() + * 下一节: [初始化操作系统]() \ No newline at end of file diff --git "a/mvc/MVC\346\241\206\346\236\266\345\256\236\347\216\260\347\257\207.md" "b/mvc/MVC\346\241\206\346\236\266\345\256\236\347\216\260\347\257\207.md" new file mode 100644 index 0000000..088c244 --- /dev/null +++ "b/mvc/MVC\346\241\206\346\236\266\345\256\236\347\216\260\347\257\207.md" @@ -0,0 +1,2 @@ +# MVC框架实现篇 + diff --git a/simple-java/classes-and-interfaces/README.md b/simple-java/classes-and-interfaces/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/simple-java/classes-and-interfaces/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/simple-java/collections/README.md b/simple-java/collections/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/simple-java/collections/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/simple-java/common-methods/README.md b/simple-java/common-methods/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/simple-java/common-methods/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/simple-java/compiler-and-jvm/README.md b/simple-java/compiler-and-jvm/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/simple-java/compiler-and-jvm/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/simple-java/concurrency/README.md b/simple-java/concurrency/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/simple-java/concurrency/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/simple-java/exceptions/README.md b/simple-java/exceptions/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/simple-java/exceptions/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/simple-java/generics/README.md b/simple-java/generics/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/simple-java/generics/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/simple-java/io-and-database/README.md b/simple-java/io-and-database/README.md new file mode 100644 index 0000000..e9f91fa --- /dev/null +++ b/simple-java/io-and-database/README.md @@ -0,0 +1 @@ +# 字符串和数组 \ No newline at end of file diff --git a/simple-java/reflection-tutorial.md b/simple-java/reflection-tutorial.md new file mode 100644 index 0000000..66c30d2 --- /dev/null +++ b/simple-java/reflection-tutorial.md @@ -0,0 +1 @@ +# reflection-tutorial.md \ No newline at end of file diff --git a/simple-java/string-and-array/README.md b/simple-java/string-and-array/README.md new file mode 100644 index 0000000..7f8386c --- /dev/null +++ b/simple-java/string-and-array/README.md @@ -0,0 +1,10 @@ +# 字符串和数组 + +1. [String的不可变是什么?](diagram-to-show-java-strings-immutability.md) +2. [substring()如何工作?](the-substring-method-in-jdk-6-and-jdk-7.md) +3. [为什么String是不可变的?]() +4. [使用""和构造函数创建字符串]() +5. [String是引用传递吗?]() +6. [length 和 length()]() +7. [如何检查数组是否有效包含一个值?]() +8. []() \ No newline at end of file diff --git a/simple-java/string-and-array/diagram-to-show-java-strings-immutability.md b/simple-java/string-and-array/diagram-to-show-java-strings-immutability.md new file mode 100644 index 0000000..e69de29 diff --git a/simple-java/string-and-array/the-substring-method-in-jdk-6-and-jdk-7.md b/simple-java/string-and-array/the-substring-method-in-jdk-6-and-jdk-7.md new file mode 100644 index 0000000..e69de29 diff --git "a/\345\256\236\347\224\250\345\267\245\345\205\267.md" "b/\345\256\236\347\224\250\345\267\245\345\205\267.md" new file mode 100644 index 0000000..4d71466 --- /dev/null +++ "b/\345\256\236\347\224\250\345\267\245\345\205\267.md" @@ -0,0 +1,2 @@ +# 实用工具/API + diff --git "a/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227.md" "b/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227.md" new file mode 100644 index 0000000..6aafe26 --- /dev/null +++ "b/\345\274\200\345\217\221\350\200\205\346\214\207\345\215\227.md" @@ -0,0 +1,2 @@ +# 开发者指南 + diff --git "a/\345\274\200\346\272\220\347\273\204\344\273\266\345\256\236\347\216\260.md" "b/\345\274\200\346\272\220\347\273\204\344\273\266\345\256\236\347\216\260.md" new file mode 100644 index 0000000..cf0d27c --- /dev/null +++ "b/\345\274\200\346\272\220\347\273\204\344\273\266\345\256\236\347\216\260.md" @@ -0,0 +1,2 @@ +# 开源组件实现 + diff --git "a/\346\234\215\345\212\241\345\231\250\347\233\270\345\205\263.md" "b/\346\234\215\345\212\241\345\231\250\347\233\270\345\205\263.md" new file mode 100644 index 0000000..d2c2ad9 --- /dev/null +++ "b/\346\234\215\345\212\241\345\231\250\347\233\270\345\205\263.md" @@ -0,0 +1,2 @@ +# 服务器/域名/SSL证书 + diff --git "a/\347\273\217\345\205\270\346\226\207\347\253\240.md" "b/\347\273\217\345\205\270\346\226\207\347\253\240.md" new file mode 100644 index 0000000..c04c40d --- /dev/null +++ "b/\347\273\217\345\205\270\346\226\207\347\253\240.md" @@ -0,0 +1,2 @@ +# 经典文章 + diff --git "a/\350\256\276\350\256\241\346\250\241\345\274\217\347\263\273\345\210\227.md" "b/\350\256\276\350\256\241\346\250\241\345\274\217\347\263\273\345\210\227.md" new file mode 100644 index 0000000..05bf506 --- /dev/null +++ "b/\350\256\276\350\256\241\346\250\241\345\274\217\347\263\273\345\210\227.md" @@ -0,0 +1,2 @@ +# 设计模式系列 + diff --git "a/\350\277\220\347\273\264\347\233\270\345\205\263.md" "b/\350\277\220\347\273\264\347\233\270\345\205\263.md" new file mode 100644 index 0000000..d78d2df --- /dev/null +++ "b/\350\277\220\347\273\264\347\233\270\345\205\263.md" @@ -0,0 +1,2 @@ +# 运维相关 +